OSDN Git Service

client is version0.4.10, added panel-console, fixed pettanr.driver + pettanr.file.
authoritozyun <itozyun@gmail.com>
Sun, 1 Apr 2012 05:41:50 +0000 (14:41 +0900)
committeritozyun <itozyun@gmail.com>
Sun, 1 Apr 2012 05:41:50 +0000 (14:41 +0900)
app/views/layouts/application.html.erb
public/assets/assets.lnk [deleted file]
public/assets/common.js
public/assets/system.js
public/assets/work.js

index e41174e..4fe8f01 100644 (file)
@@ -31,6 +31,7 @@
                                <p><a href="#" onclick="pettanr.view.show('editor');return false;">新しいコマを描く</a></p>\r
                                <p><a href="#" onclick="pettanr.comicConsole._quickAccessShow();return false;">新しいコミックをつくる</a></p>\r
                                <p><a href="#" onclick="pettanr.uploadConsole._quickAccessShow();return false;">画像のアップロード</a></p>\r
+                               <p><a href="#" onclick="pettanr.panelConsole._quickAccessShow();return false;">コマの追加(開発用)</a></p>\r
                                <h3>座長からのお知らせ</h3>\r
                                <p>メンテナンスについて</p>\r
                        </div>\r
                                <div id="image-gruop-button" class="button">cancel</div>\r
                        </div>\r
 \r
+               <!-- パネルのポスト(テスト) -->\r
+                       <div id="panel-console-wrapper" class="console-wrapper">\r
+                               <div id="panel-console-header" class="console-header">Create New Panel (dev)</div>\r
+                               <div id="panel-console" class="console-inner">\r
+                                       <div id="newpanel"></div>\r
+                                       <div class="console-button-container">\r
+                                               <div id="panel-console-post-button" class="button console-submit-button">upload</div>\r
+                                               <div id="panel-console-cancel-button" class="button console-cancel-button">cancel</div>\r
+                                       </div>\r
+                                       <div id="panel-console-progress" class="console-progress">&nbsp;</div>                                  \r
+                               </div>\r
+                       </div>\r
+\r
                <!-- 画像のアップロード-->\r
                        <div id="upload-console-wrapper" class="console-wrapper">\r
                                <div id="upload-console-header" class="console-header">Upload Picture</div>\r
diff --git a/public/assets/assets.lnk b/public/assets/assets.lnk
deleted file mode 100644 (file)
index 06fef09..0000000
Binary files a/public/assets/assets.lnk and /dev/null differ
index 0f9a601..94bd408 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR common.js\r
- *   version 0.4.9\r
+ *   version 0.4.10\r
  * \r
  * author: itozyun\r
  */\r
@@ -769,6 +769,7 @@ pettanr.CONST = ( function(){
                NS_PETTANR_COMIC:                       'pettanr-comic',\r
                RESOURCE_PICTURE_PATH:          ( isLocal === true ? pettanr.ROOT_PATH : PETTANR_ROOT_PATH) + 'resource_pictures\/',\r
                CREATE_COMIC_JS:                        isLocal === true ? 'js\/create_new_comic.js' : PETTANR_ROOT_PATH + 'comics\/new.js',\r
+               CREATE_PANEL_JS:                        isLocal === true ? 'js\/create_new_panel.js' : PETTANR_ROOT_PATH + 'panels\/new.js',\r
                UPLOAD_PICTURE_JS:                      isLocal === true ? 'js\/upload_picture.js' : PETTANR_ROOT_PATH + 'original_pictures\/new.js',\r
                JQUERY_URL:                                     isLocal === true ? 'javascripts\/jquery-1.6.2.min.js' : PETTANR_ROOT_PATH + 'assets\/jquery-162_min.js'\r
        }\r
index e3ccb87..5a15d73 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * pettanR system.js
- *   version 0.4.9
+ *   version 0.4.10
  *   
  * author:
  *   itozyun
@@ -101,14 +101,6 @@ pettanr.file = ( function(){
                        TREE_ARRAY.push( _tree);
                        return _tree;
                },
-               getFileData: function( UIDorFILEorFILEDATA){
-                       var _access = FILE_CONTROLER.getFileDataAccess( UIDorFILEorFILEDATA);
-                       return _access !== null ? _access.DATA : null;
-               },
-               getChildren: function( UIDorFILEorFILEDATA){
-                       var _data = FILE_CONTROLER.getFileData( UIDorFILEorFILEDATA);
-                       return _data !== null ? _data.children || null : null;
-               },
                getFileDataAccess: function( UIDorFILEorFILEDATA){
                        var _uid, _data, _access;
                        
@@ -128,13 +120,21 @@ pettanr.file = ( function(){
                                if( _access.DATA === _data) return _access;
                        }
                        return null;
+               },              
+               getFileData: function( UIDorFILEorFILEDATA){
+                       var _access = FILE_CONTROLER.getFileDataAccess( UIDorFILEorFILEDATA);
+                       return _access !== null ? _access.DATA : null;
+               },
+               getChildren: function( UIDorFILEorFILEDATA){
+                       var _data = FILE_CONTROLER.getFileData( UIDorFILEorFILEDATA);
+                       return _data !== null ? _data.children || null : null;
                },
                getDriver: function( _file){
                        var _data = FILE_CONTROLER.getFileData( _file);
                        return _data !== null && _data.driver ? _data.driver : FileDriverBase;
                },
                getUpdateFlag: function( _file, _bit){
-                       var _driver = FILE_CONTROLER.getFileData( _file),
+                       var _driver = FILE_CONTROLER.getDriver( _file ),
                                _policy;
                        if( typeof _driver.getUpdatePolicy === 'function'){
                                _policy = _driver.getUpdatePolicy( _file );
@@ -145,28 +145,6 @@ pettanr.file = ( function(){
                        }
                        return _policy % ( _bit * 2) >= _bit;
                },
-               getUID: function ( _filedata){
-                       var l = FILEDATA_RESITER.length;
-                       for( var i=0; i<l; ++i){
-                               if( FILEDATA_RESITER[ i] === _filedata) return i;
-                       }
-                       return -1;
-               },
-               getSeqentialFiles: function( _file){
-                       var _driver = FILE_CONTROLER.getDriver( _file);
-                       if( _driver !== null && typeof _driver.getSeqentialFiles === 'function'){
-                               _driver.getSeqentialFiles( _file);
-                       }
-               },
-               updateFileAttribute: function( _uid, key, _value, _opt_callback){
-                       var _data = FILE_CONTROLER.getFileDataAccess( _uid),
-                               _type = _data.TYPE;
-                       
-               },                      
-               getFileAttribute: function( _uid, KEYorKEYARRAY){
-                       var _fileData = FILE_CONTROLER.getFileDataAccess( _uid),
-                               _type = _fileData.TYPE;
-               },
                move: function( _prentUID, _targetfile, _newFolder, _newIndex, _opt_callback){
                        var _parentData = FILE_CONTROLER.getFileDataAccess( _prentUID),
                                _parentType = _parentData.TYPE,
@@ -193,16 +171,16 @@ pettanr.file = ( function(){
                },
                fileEventRellay: function( _targetFile, _targetTree, _event){
                        var _uid = _targetTree.getUID(),
-                               _access = TREE_ACCESS_ARRAY[ _uid],
-                               l = TREE_ARRAY.length,
-                               _tree, _currentFile;
-                       _access !== undefined && _access.dispatchFileEvent( _event);
-                       for(var i=0; i<l; ++i){
+                               _access = TREE_ACCESS_ARRAY[ _uid ],
+                               _data = FILE_CONTROLER.getFileData( _targetFile ),
+                               _tree;
+                       _access && _access.dispatchFileEvent( _event );
+                       for( var i=0, l = TREE_ARRAY.length; i<l; ++i){
                                if( i !== _uid){
-                                       _tree = TREE_ARRAY[i];
-                                       _currentFile = _tree.getCurrentFile();
-                                       if( FILE_CONTROLER.getFileData( _currentFile) === _access.DATA){
-                                               TREE_ACCESS_ARRAY[ _tree.getUID()].dispatchFileEvent( _event);
+                                       _tree = TREE_ARRAY[ i ];
+                                       if( FILE_CONTROLER.getFileData( _tree.getCurrentFile() ) === _data ){
+                                               _access = TREE_ACCESS_ARRAY[ _tree.getUID() ];
+                                               _access && _access.dispatchFileEvent( _event);
                                        }
                                }
                        }
@@ -251,8 +229,8 @@ pettanr.file = ( function(){
                        init: function(){
                                instance = this;
                                currentFile = rootFile = new FileClass( this, null, ROOTFILE_DATA);
-                               rootFile.init();
-                               FILE_CONTROLER.getSeqentialFiles( currentFile);
+                               // rootFile.init();
+                               currentFile.getSeqentialFiles();
                                delete this.init;
                        },
                        getUID: function(){ return UID},
@@ -274,7 +252,7 @@ pettanr.file = ( function(){
                                if( typeof _index !== 'number' || _index < 0 || _index >= currentFile.getChildFileLength()) return;
                                PARENT_FILE_RESITER.unshift( currentFile);
                                currentFile = currentFile.getChildFileByIndex( _index);
-                               FILE_CONTROLER.getSeqentialFiles( currentFile);
+                               currentFile.getSeqentialFiles();
                                return currentFile;
                        },
                        up: function( _index){
@@ -287,7 +265,7 @@ pettanr.file = ( function(){
                                } else {
                                        currentFile = PARENT_FILE_RESITER.shift();
                                }
-                               FILE_CONTROLER.getSeqentialFiles( currentFile);
+                               currentFile.getSeqentialFiles();
                                return currentFile;     
                        },
                        addTreeEventListener: function( _eventType, _callback){
@@ -327,15 +305,12 @@ pettanr.file = ( function(){
  */
        
        var FileClass = function( TREE, parentFile, data){
-               if( !data.children){
-                       data.children = [];
-               }
-               var uid = FILE_CONTROLER.getUID( data),
+               var uid = pettanr.util.getIndex( FILEDATA_RESITER, data ),
                        instance = this;
                
                if( uid === -1){
                        uid = FILEDATA_RESITER.length;
-                       FILEDATA_RESITER.push( data);
+                       FILEDATA_RESITER.push( data );
                }
                
                FILEDATA_ACCESS.push(
@@ -354,20 +329,19 @@ pettanr.file = ( function(){
                }
                
                /* grobal Methods */
-               this.init = function(){
-                       delete this.init;
-               }
+
                this.getUID = function(){
                        return uid;
                }
                /*
-                * ファイル構造は TRON のような ハイパーリンク方式 だが、文脈上の 親ファイルが存在する場合がある.
+                * ファイル構造は TRON のような ハイパーリンク方式 だが、文脈上の 親ファイルが存在する.その親ファイルを使う操作は.prototype に置く事ができない.
+                * 同様に TREE を使う操作も .prototype に置く事ができない.
                 */
                this.getChildFileByIndex = function( _index){
                        var _children = FILE_CONTROLER.getChildren( instance );
                        if( typeof _index !== 'number' || _index < 0 || typeof _children.length !== 'number' || _index >= _children.length) return null;
                        var _file = new FileClass( TREE, this, _children[ _index]);
-                       _file.init();
+                       // _file.init();
                        return _file;
                }
                this.move = function( _newFolder, _newIndex, opt_callback){
@@ -385,12 +359,16 @@ pettanr.file = ( function(){
                        delete _access.DATA, _access.updateParent, _access.dispatchFileEvent;
                }
        };
+       
        FileClass.prototype = {
                isChildFile: function( _FILEorFILEDATA){
                        return this.getChildFileIndex( _FILEorFILEDATA) !== -1;
                },
                getSeqentialFiles: function(){
-                       FILE_CONTROLER.getSeqentialFiles( this);
+                       var _driver = FILE_CONTROLER.getDriver( this );
+                       if( _driver !== null && typeof _driver.getSeqentialFiles === 'function'){
+                               _driver.getSeqentialFiles( this );
+                       }
                },
                addEventListener: function( _eventType, _callback){
                        FILE_CONTROLER.addEventListener( this, _eventType, _callback);
@@ -454,6 +432,12 @@ pettanr.file = ( function(){
                write: function( _newName, _newData){
                        return false;
                },
+               viwerApps: function(){
+                       
+               },
+               editorApps: function(){
+                       
+               },
                create: function(){
                        
                },
@@ -532,12 +516,6 @@ pettanr.file = ( function(){
                }
        }
 
-       function getFileObject( TREE, parentFile, data){
-               var _file = FILE_OBJECT_POOL.length > 0 ? FILE_OBJECT_POOL.shift() : new FileClass();
-               _file.init( TREE, parentFile, data);
-               return _file;
-       }
-
        var ROOT_FILEDATA = {
                        name:           'system root',
                        type:           FILE_TYPE_IS_FOLDER,
@@ -634,7 +612,7 @@ pettanr.file = ( function(){
                        GET_SEQENTIAL_FILES:'gotSeqentilFiles'
                },
                FILE_DATA_PROPERTY_RESERVED: [
-                       'children', 'driver', 'state', 'type', 'name'
+                       'children', 'driver', 'state', 'type'
                ]
        }
 })();
@@ -1024,8 +1002,8 @@ pettanr.driver = ( function(){
                        type:           pettanr.file.FILE_TYPE.FOLDER,
                        children:       []
                },
-               FILE_DATA_LICENSE_ROOT = {
-                       name:           'Original Licenses',
+               FILE_DATA_LISENCE_ROOT = {
+                       name:           'Original Lisences',
                        type:           pettanr.file.FILE_TYPE.FOLDER,
                        children:       []
                },
@@ -1042,7 +1020,7 @@ pettanr.driver = ( function(){
                BALLOON_TEMPLETE_ARRAY = [],
                ORIGINAL_LICENSE_ARRAY = [],
                BASIC_LICENSES = 'cc_by,cc_nc,cc_nd,cc_sa,keep_aspect_ratio,no_convert,no_flip,no_resize'.split( ',');
-       FILE_DATA_SERVICE_ROOT.children.push( FILE_DATA_COMICS_ROOT, FILE_DATA_PICTURE_ROOT, FILE_DATA_PANELS_ROOT, FILE_DATA_LICENSE_ROOT, FILE_DATA_BALLOON_ROOT);
+       FILE_DATA_SERVICE_ROOT.children.push( FILE_DATA_COMICS_ROOT, FILE_DATA_PICTURE_ROOT, FILE_DATA_PANELS_ROOT, FILE_DATA_LISENCE_ROOT, FILE_DATA_BALLOON_ROOT);
        FILE_DATA_COMICS_ROOT.children.push( FILE_DATA_MY_COMICS_ROOT, FILE_DATA_AUTHOR_ROOT);
        FILE_DATA_PICTURE_ROOT.children.push( FILE_DATA_MY_PICTURES_ROOT, FILE_DATA_ARTIST_ROOT);
        
@@ -1063,34 +1041,46 @@ pettanr.driver = ( function(){
                }
                _access.dispatchFileEvent( FileAPI.createFileEvent( pettanr.file.FILE_EVENT.GET_SEQENTIAL_FILES, _file, 'children', null));
        }
-       function onErrorJson( _file){ 
+       function onErrorJson( _file ){ 
                var _data = FileAPI.getFileData( _file);
                if( _data !== null){
                        _data.state = pettanr.file.FILE_STATE.ERROR;
                }
        }
-       function buildFileData( _data, _parent){
+       function buildFileData( _data, _parent ){
                var _type, _array,
-                       _id = _data.id,
                        i, l;
-               if( _parent.type === pettanr.driver.FILE_TYPE.COMIC ){
+               // Panel
+               if( _parent.type === pettanr.driver.FILE_TYPE.COMIC || _parent === FILE_DATA_PANELS_ROOT ){
                        _data.type = pettanr.driver.FILE_TYPE.PANEL;
                        _array = PANEL_ARRAY;
                } else
-               if( _parent === FILE_DATA_COMICS_ROOT){
+               // Comic
+               if( _parent === FILE_DATA_COMICS_ROOT ){
                        _data.type = pettanr.driver.FILE_TYPE.COMIC;
                        _array = COMIC_ARRAY;
                } else
-               if( _parent === FILE_DATA_PANELS_ROOT){
-                       _data.type = pettanr.driver.FILE_TYPE.PANEL;
-                       _array = PANEL_ARRAY;
+               // Lisence
+               if( _parent === FILE_DATA_LISENCE_ROOT ){
+                       _data.type = pettanr.driver.FILE_TYPE.LICENSE;
+                       _array = ORIGINAL_LICENSE_ARRAY;
+               } else
+               // Author
+               if( _parent === FILE_DATA_AUTHOR_ROOT ){
+                       _data.type = pettanr.driver.FILE_TYPE.AUTHOR;
+                       _array = AUTHOR_ARRAY;
                } else
+               // Artist
+               if( _parent === FILE_DATA_ARTIST_ROOT ){
+                       _data.type = pettanr.driver.FILE_TYPE.ARTIST;
+                       _array = ARTIST_ARRAY;
+               } else          
+               // Picture
                if( _parent === FILE_DATA_PICTURE_ROOT || _parent === FILE_DATA_MY_PICTURES_ROOT ){
                        _data.type = pettanr.driver.FILE_TYPE.PICTURE;
                        _array = RESOURCE_PICTURE_ARRAY;
-                       
                        // original_license を含まなければ、license object を削除して ビットデータ で保持
-                       // original_license なら ファイルを作る buildFileData( _license, FILE_DATA_LICENSE_ROOT)
+                       // original_license なら ファイルを作る buildFileData( _license, FILE_DATA_LISENCE_ROOT)
                        var _license = _data.license,
                                _Math_pow = Math.pow,
                                _bits = 0;
@@ -1102,59 +1092,70 @@ pettanr.driver = ( function(){
                                }
                                _data.license = _bits;
                        }
-               } else
-               if( _parent === FILE_DATA_LICENSE_ROOT){
-                       _data.type = pettanr.driver.FILE_TYPE.LICENSE;
-                       _array = ORIGINAL_LICENSE_ARRAY;
                }
                
                _data.driver = Driver;
                
                // _array に _data を格納 または 上書き
-               if( typeof _id === 'number'){
-                       --_id;
-                       var __data = _array[ _id ];
-                       if( __data){
+               if( typeof _data.id === 'number' && _data.id > 0 ){
+                       var _id = _data.id - 1,
+                               __data = _array[ _id ],
+                               _reserved = pettanr.file.FILE_DATA_PROPERTY_RESERVED.join( ', ' );
+                       if( __data ){
                                for( var key in _data){
-                                       __data[ key ] = _data[ key ];
+                                       if( _reserved.indexOf( key ) === -1 ){
+                                               __data[ key ] = _data[ key ];
+                                       }
                                }
                                _data = __data; // このタイミングで参照が切れるので注意!!
                        } else {
                                _array[ _id ] = _data;
                        }
                }
-               if( _parent.type === pettanr.driver.FILE_TYPE.COMIC ){
+
+               // Author
+               // Artist
+               if( _parent === FILE_DATA_AUTHOR_ROOT || _parent === FILE_DATA_ARTIST_ROOT ){
+                       addChildData( _parent, _data );
+               } else
+               // Comic + Panels
+               if( _parent.type === pettanr.driver.FILE_TYPE.COMIC || _parent === FILE_DATA_COMICS_ROOT ){
                        var _panels = _data.panels,
                                _panel;
-                       if( _panels && Type.isArray( _panels ) === true){
-                               if( Type.isArray( _data.children ) === false){
-                                       _data.children = [];
-                               };
+                       if( _panels && Type.isArray( _panels ) === true ){
                                for( i=0, l=_panels.length; i<l; ++i){
                                        _panel = buildFileData( _panels[ i ], FILE_DATA_PANELS_ROOT );
                                        /*
                                         * 間違い! t 順に格納
                                         */
-                                       _data.children.push( _panel );
+                                       addChildData( _data, _panel );
                                }
                                delete _data.panels;
-                       }                       
-               } else
-               if( _parent === FILE_DATA_COMICS_ROOT ){
-                       if( _data.author ){
-                               var _author = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT);
-                               pettanr.util.getIndex( _author.children, _data) === -1 && _author.children.push( _data);
-                               _author.id === MyAuthorID && pettanr.util.getIndex( FILE_DATA_MY_COMICS_ROOT.children, _data) === -1 && FILE_DATA_MY_COMICS_ROOT.children.push( _data );
+                       } else {
+                               if( _data.json !== null ){
+                                       _data.json = true;
+                               }
+                               if( Type.isArray( _data.children ) === false ){
+                                       _data.children = [];
+                               }                               
+                       }
+                       var _author = _data.author;
+                       if( _author ){
+                               _data.author = _author = buildFileData( _author, FILE_DATA_AUTHOR_ROOT );
+                               addChildData( _author, _data );
+                               _author.id === MyAuthorID && addChildData( FILE_DATA_MY_COMICS_ROOT, _data );
                        }
-                       _data.json = true;
                } else
-               if( _parent === FILE_DATA_PANELS_ROOT){
-                       if( _data.comic && _data.author){
-                               var _comic = getFolderData( _data, 'comic', FILE_DATA_COMICS_ROOT),
-                                       _author = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT);
-                               _comic.children.push( _data);
-                               pettanr.util.getIndex( _author.children, _comic) === -1 && _author.children.push( _comic);
-                               _author.id === MyAuthorID && pettanr.util.getIndex( FILE_DATA_MY_COMICS_ROOT.children, _comic) === -1 && FILE_DATA_MY_COMICS_ROOT.children.push( _comic);
+               // Panel
+               if( _parent === FILE_DATA_PANELS_ROOT ){
+                       var _comic = _data.comic,
+                               _author = _data.author;
+                       if( _comic && _author ){
+                               _data.comic = _comic = buildFileData( _comic, FILE_DATA_COMICS_ROOT ),
+                               _data.author = _author = buildFileData( _author, FILE_DATA_AUTHOR_ROOT );
+                               addChildData( _comic, _data );
+                               addChildData( _author, _comic );
+                               _author.id === MyAuthorID && addChildData( FILE_DATA_MY_COMICS_ROOT, _comic );
                        }
                        // picture data をファイルに取り出し
                        var _elements = _data.panel_elements || [],
@@ -1170,67 +1171,23 @@ pettanr.driver = ( function(){
                                }
                        }
                } else
+               // Picture
                if( _data.type = pettanr.driver.FILE_TYPE.PICTURE ){
-                       if( _data.artist){
-                               var _pictureList = getFolderData( _data, 'artist', FILE_DATA_ARTIST_ROOT);
-                               pettanr.util.getIndex( _pictureList.children, _data) === -1 && _pictureList.children.push( _data);
-                               _pictureList.id === MyArtistID && pettanr.util.getIndex( FILE_DATA_MY_PICTURES_ROOT.children, _data) === -1 && FILE_DATA_MY_PICTURES_ROOT.children.push( _data);
+                       var _artist = _data.artist;
+                       if( _artist){
+                               _data.artist = _artist = buildFileData( _artist, FILE_DATA_ARTIST_ROOT );
+                               addChildData( _artist, _data );
+                               _artist.id === MyArtistID && addChildData( FILE_DATA_MY_PICTURES_ROOT, _data );
                        }
                }
                
                return _data;
        }
-       /**
-        * folder には Artist, Author, Comic, 
-        */
-       function getFolderData( _data, _key, _parentData){
-               if( typeof _data[ _key ] !== 'object') return {children:[]};
-               var _ret,
-                       _id = _data[ _key ].id - 1,
-                       _array;
-               if( typeof _id !== 'number') return {children:[]};
-               
-               _array =        _parentData === FILE_DATA_ARTIST_ROOT ? ARTIST_ARRAY :
-                                       _parentData === FILE_DATA_AUTHOR_ROOT ? AUTHOR_ARRAY :
-                                       _parentData === FILE_DATA_COMICS_ROOT ? COMIC_ARRAY :
-                                       _parentData === FILE_DATA_PANELS_ROOT ? PANEL_ARRAY : []
-
-               if( typeof _array[ _id] === 'object'){
-                       var __data = _array[ _id];
-                       for( var i in _data[ _key ]){
-                               __data[ i ] = _data[ _key ][ i ];
-                       }
-                       return _data[ _key ] = __data;// このタイミングで参照が切れるので注意!!
+       function addChildData( _parent, _child ){
+               if( Type.isArray( _parent.children ) === false){
+                       _parent.children = [];
                }
-               // 以下は folder がなく 新規に作られる場合.
-               _ret = _array[ _id ] = _data[ _key ];
-               if( _ret.title){
-                       _ret.name = _ret.title;
-                       delete _ret.title;
-               }
-               _ret.children = [];
-               _ret.driver = Driver;
-               
-               if( _parentData === FILE_DATA_AUTHOR_ROOT){
-                       _ret.type = pettanr.driver.FILE_TYPE.AUTHOR;
-               } else
-               if( _parentData === FILE_DATA_ARTIST_ROOT){
-                       _ret.type = pettanr.driver.FILE_TYPE.ARTIST;
-               } else
-               if( _parentData === FILE_DATA_PANELS_ROOT){
-                       _ret.type = pettanr.driver.FILE_TYPE.COMIC;
-                       return _ret;
-               } else
-               if( _parentData === FILE_DATA_COMICS_ROOT){
-                       _ret.type = pettanr.driver.FILE_TYPE.COMIC;
-                       return _ret;
-               } else {
-                       _ret.type = pettanr.file.FILE_TYPE.FOLDER;
-               }
-               
-               _parentData.children.push( _ret);
-               
-               return _ret;
+               pettanr.util.getIndex( _parent.children, _child ) === -1 && _parent.children.push( _child );
        }
 
        return {
@@ -1332,6 +1289,7 @@ pettanr.fn( pettanr.balloon);
 pettanr.fn( pettanr.editor);
 pettanr.fn( pettanr.comicConsole);
 pettanr.fn( pettanr.uploadConsole);
+pettanr.fn( pettanr.panelConsole);
 
 pettanr.fn( pettanr.file);
 pettanr.fn( pettanr.finder);
index 3a4bfff..91e4add 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR work.js\r
- *   version 0.4.9\r
+ *   version 0.4.10\r
  *   \r
  * author:\r
  *   itozyun\r
@@ -3903,4 +3903,175 @@ pettanr.uploadConsole = ( function(){
                        UPLOAD_CONSOLE.show( w, h);\r
                }\r
        }\r
+})();\r
+\r
+pettanr.panelConsole = ( function(){\r
+       var PANEL_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'panelConsole',\r
+                       TARGET_FRAME_NAME = 'targetFrameCreateNewPanel',\r
+                       elmContainer = document.getElementById( 'newpanel'),\r
+                       elmProgress = document.getElementById( 'panel-console-progress'),\r
+                       timer = null,\r
+                       elmScript = null,\r
+                       elmForm = null,\r
+                       elmIframe = null,\r
+                       isUploading = false;\r
+               /*\r
+                * upload ボタンが押されたらまず iframe をつくる.\r
+                */\r
+               function clickOK(){\r
+                       if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+                       elmProgress.innerHTML = 'uploading.';\r
+                       isUploading = true;\r
+                       submit();\r
+                       return false;\r
+               }\r
+               /*\r
+                * form の target に iframe を指定したのち submit();\r
+                */\r
+                       function submit(){\r
+                               try {\r
+                                       elmForm.submit();\r
+                               } catch( e){\r
+                                       elmProgress.innerHTML = 'submit() err..';\r
+                                       isUploading = false;\r
+                                       setTimeout( clickCancel , 3000);\r
+                                       return;\r
+                               }\r
+                               \r
+                               if( pettanr.ua.isIE){\r
+                                       elmIframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       elmIframe.onload = onLoad;\r
+                               }\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.\r
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onLoad();\r
+                           }\r
+                               }\r
+                                       function onLoad(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmProgress.innerHTML = 'success!';\r
+                                               setTimeout( clickCancel , 1000);\r
+                                               isUploading = false;\r
+                                       }\r
+               \r
+               function detectForm(){\r
+                       elmForm = elmContainer.getElementsByTagName( 'form' )[ 0 ];\r
+                       if( elmForm){\r
+                               var _inputList = elmForm.getElementsByTagName( 'input' ),\r
+                                       _input;\r
+                               for( var i=0, l= _inputList.length; i<l; ++i){\r
+                                       _input = _inputList[ i ];\r
+                                       if( _input.type === 'submit'){\r
+                                               _input.style.display = 'none';\r
+                                       }\r
+                               }\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                               pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+                               elmProgress.innerHTML = 'create iframe';\r
+                       }\r
+               }\r
+               function onCreateIframe( _iframe ){\r
+                       elmContainer.appendChild( _iframe );\r
+                       elmIframe = _iframe;\r
+                       elmForm.target = _iframe.name;\r
+                       elmProgress.innerHTML = '';\r
+               }\r
+               /*\r
+                * \r
+                */\r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       PANEL_CONSOLE.onClose();\r
+                       return false;\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#panel-console-wrapper').hide();\r
+                               $( '#panel-console-post-button').click( clickOK );\r
+                               $( '#panel-console-cancel-button').click( clickCancel );\r
+\r
+                               delete PANEL_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               /*\r
+                                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.\r
+                                */                             \r
+                               elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.CREATE_PANEL_JS;\r
+                               document.body.appendChild( elmScript);\r
+                               \r
+                               jqWrap.show();\r
+                               pettanr.overlay.show( PANEL_CONSOLE );\r
+\r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250 );\r
+                               }\r
+                               \r
+                               elmProgress.innerHTML = 'loading form.';\r
+                               \r
+                               PANEL_CONSOLE.onWindowResize( w, h );\r
+                       },\r
+                       onWindowResize: function( _windowW, _windowH){\r
+                               jqWrap.css(\r
+                                       {\r
+                                               left:   Math.floor( ( _windowW -jqWrap.width()) /2),\r
+                                               top:    Math.floor( ( _windowH -jqWrap.height()) /2)\r
+                                       }\r
+                               );\r
+                       },\r
+                       onClose: function(){\r
+                               elmForm !== null && $( elmContainer.children ).remove();\r
+                               elmForm = elmIframe = null;\r
+                               isUploading = false;\r
+                               \r
+                               if( elmScript !== null ){\r
+                                       document.body.removeChild( elmScript);\r
+                                       elmScript = null;                                       \r
+                               }\r
+                               if( timer !== null){\r
+                                       window.clearInterval( timer);\r
+                                       timer = null;\r
+                               }\r
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       PANEL_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function(){\r
+                       \r
+               },\r
+               onClose: function(){\r
+                       \r
+               },\r
+               onWindowResize: function( _windowW, _windowH){\r
+               },\r
+               _quickAccessShow: function(){\r
+                       jqWindow = pettanr.jqWindow();\r
+                       var w = jqWindow.width(),\r
+                               h = jqWindow.height();\r
+                       PANEL_CONSOLE.show( w, h);\r
+               }\r
+       }\r
 })();
\ No newline at end of file