OSDN Git Service

pettanR version0.4.5. working uploader.
authoritozyun <itozyun@git.sourceforge.jp>
Sun, 25 Mar 2012 03:37:43 +0000 (12:37 +0900)
committeritozyun <itozyun@git.sourceforge.jp>
Sun, 25 Mar 2012 03:37:43 +0000 (12:37 +0900)
0.4.x/images/black_50pct.gif [new file with mode: 0644]
0.4.x/images/black_50pct.png [new file with mode: 0644]
0.4.x/images/white_70pct.png [new file with mode: 0644]
0.4.x/javascripts/common.js
0.4.x/javascripts/system.js
0.4.x/javascripts/work.js
0.4.x/js/upload_picture.js [new file with mode: 0644]
0.4.x/test/activex.html
0.4.x/test/index.html
0.4.x/test/type.html [new file with mode: 0644]
0.4.x/work.html

diff --git a/0.4.x/images/black_50pct.gif b/0.4.x/images/black_50pct.gif
new file mode 100644 (file)
index 0000000..6f0aa3a
Binary files /dev/null and b/0.4.x/images/black_50pct.gif differ
diff --git a/0.4.x/images/black_50pct.png b/0.4.x/images/black_50pct.png
new file mode 100644 (file)
index 0000000..1c45771
Binary files /dev/null and b/0.4.x/images/black_50pct.png differ
diff --git a/0.4.x/images/white_70pct.png b/0.4.x/images/white_70pct.png
new file mode 100644 (file)
index 0000000..0b471c2
Binary files /dev/null and b/0.4.x/images/white_70pct.png differ
index 2033f37..086afb0 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR common.js\r
- *   version 0.4.4\r
+ *   version 0.4.5\r
  * \r
  * author: itozyun\r
  */\r
@@ -40,7 +40,7 @@ var pettanr = ( function(){
                IS_DEBUG = typeof URL_PARAMS.debug === 'boolean' ? URL_PARAMS.debug : IS_LOCAL === true,\r
                jqWindow , jqDocument , jqBody;\r
        return {\r
-               version: '0.4.4',\r
+               version: '0.4.5',\r
                init: function(){\r
                        jqWindow = $( window);\r
                        jqDocument = $( document);\r
@@ -143,16 +143,24 @@ pettanr.util = ( function(){
        nodeNoscript = noscript = null;\r
        \r
        function cleanCommnetNode( _targetElm){\r
-               _targetElm = _targetElm || document;\r
-               var _nodes = _targetElm.all || _targetElm.getElementsByTagName( '*'),\r
-                       _array = [],\r
-                       _elm;\r
-               for(var i=0, l = _nodes.length; i<l; ++i){\r
-                       _array.push( _nodes[ i]);\r
-               }\r
-               for( i=0; i<l; ++i){\r
-                       _elm = _array[ i];\r
-                       _elm.nodeType === 8 && _elm.parentNode && _elm.parentNode.removeChild( _elm);\r
+               search( _targetElm || document.body );\r
+               \r
+               function search( _elm){\r
+                       if( !_elm) return;\r
+                       if( _elm.nodeType === 8){\r
+                               _elm.parentNode.removeChild( _elm);\r
+                               return;\r
+                       }\r
+                       var i, l, _children = _elm.childNodes, _array = [];\r
+                       if( _children && typeof _children.length === 'number'){\r
+                               // liveNode > array\r
+                               for( i=0, l=_children.length; i<l; ++i){\r
+                                       _array.push( _children[ i ] );\r
+                               }\r
+                               while( _array.length !== 0 ){\r
+                                       search( _array.shift());\r
+                               }\r
+                       }\r
                }\r
        }\r
        return {\r
@@ -227,7 +235,9 @@ pettanr.util = ( function(){
                                displayNone = img.style.display === 'none';\r
                        if( displayNone === true) img.style.display = '';\r
                        IMG_SIZE_GETTER.appendChild( img);\r
+                       \r
                        var size = getActualDimension( img);\r
+                       \r
                        IMG_SIZE_GETTER.removeChild( img);\r
                        if( displayNone === true) img.style.display = 'none';\r
                        if( nextElm){\r
@@ -268,20 +278,6 @@ pettanr.util = ( function(){
                                                run.width  = mem.w; // restore\r
                                                run.height = mem.h;\r
                                        } else { // for Opera and Other\r
-                                       /*\r
-                                               function fn() {\r
-                                                       w = image.width;\r
-                                                       h = image.height;\r
-                                               }\r
-                                               mem = { w: image.width, h: image.height }; // keep current style\r
-                                               image.removeAttribute("width");\r
-                                               image.addEventListener("DOMAttrModified", fn, false);\r
-                                               image.removeAttribute("height");\r
-                                               // call fn\r
-                                               image.removeEventListener("DOMAttrModified", fn, false);\r
-                                               image.width  = mem.w; // restore\r
-                                               image.height = mem.h;\r
-                                       */\r
                                                mem = { w: image.width, h: image.height }; // keep current style\r
                                                image.removeAttribute("width");\r
                                                image.removeAttribute("height");\r
@@ -533,6 +529,36 @@ pettanr.util = ( function(){
                                }\r
                        }\r
                        return randomKey;\r
+               },\r
+               createIframe: function( id, callback){\r
+                       var ua = pettanr.ua;\r
+            var el = document.createElement( ua.isIE ? '<iframe name="' + id + '" frameborder="0" scrolling="no">' : 'iframe');\r
+            \r
+                       document.body.appendChild( el);\r
+            el.id = el.name = id;\r
+            el.setAttribute( 'name', id);\r
+            el.style.cssText = 'width:1px;height:1px;visibility:hidden;position:absolute;top:1px;left:1px;';\r
+                       // http://d.hatena.ne.jp/onozaty/20070830/p1\r
+                       // [JavaScript]IE6ではJavaScriptで動的に作成したiframeに対してsubmitできない(IE7は未確認) ->解決\r
+                       el.contentWindow.name = id;                                     \r
+            \r
+            window[id] = el;\r
+\r
+            if( ua.isIE){\r
+                               el.onreadystatechange = detect;\r
+            } else {\r
+               setTimeout( onLoad, 0);\r
+                       }\r
+            function detect(){\r
+                if ( this.readyState == "complete") {\r
+                    this.onreadystatechange = new Function();\r
+                    this.onreadystatechange = null;\r
+                    onLoad();\r
+                }\r
+            }                  \r
+                       function onLoad(){\r
+                               callback( el);\r
+                       }\r
                }\r
        }\r
 })();\r
@@ -586,7 +612,7 @@ pettanr.ua = ( function(){
                                if( pettanr.util.hasClassName( b, ns + disabled) === true) return false;\r
                                x = document.createElement('div');\r
                                b.appendChild(x);\r
-                               x.style.cssText = 'width:1px;height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+                               x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
                                ret = x.offsetHeight > 1;\r
                                b.removeChild(x);\r
                        }\r
@@ -664,14 +690,17 @@ pettanr.ua = ( function(){
 pettanr.CONST = ( function(){\r
        var isLocal = pettanr.LOCAL === true || pettanr.URL_PARAMS.exjson === false,\r
                isLocalhost = document.location.href.indexOf( 'http:\/\/localhost:3000\/' ) === 0,\r
-               RETTANR_ROOT_PATH = isLocalhost === true ? 'http:\/\/localhost:3000\/' : 'http:\/\/pettanr.heroku.com\/';\r
+               PETTANR_ROOT_PATH = isLocalhost === true ? 'http:\/\/localhost:3000\/' : 'http:\/\/pettanr.heroku.com\/';\r
                \r
        return {\r
-               PETTANR_ROOT_PATH:                      RETTANR_ROOT_PATH,\r
-               URL_ORIGINAL_PICTURES_JSON: ( isLocal === true ? 'json\/' : RETTANR_ROOT_PATH) + 'original_pictures.json',\r
-               URL_PANELS_JSON:                        ( isLocal === true ? 'json\/' : RETTANR_ROOT_PATH) + 'panels.json',\r
+               PETTANR_ROOT_PATH:                      PETTANR_ROOT_PATH,\r
+               URL_ORIGINAL_PICTURES_JSON: ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'original_pictures.json',\r
+               URL_PANELS_JSON:                        ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'panels.json',\r
                NS_PETTANR_COMIC:                       'pettanr-comic',\r
-               RESOURCE_PICTURE_PATH:          ( isLocal === true ? pettanr.ROOT_PATH : RETTANR_ROOT_PATH) + 'resource_pictures\/'\r
+               RESOURCE_PICTURE_PATH:          ( isLocal === true ? pettanr.ROOT_PATH : PETTANR_ROOT_PATH) + 'resource_pictures\/',\r
+               CREATE_COMIC_JS:                        ( isLocal === true ? 'js\/' : PETTANR_ROOT_PATH) + 'comics_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
 })();\r
 \r
@@ -787,7 +816,7 @@ pettanr.view = ( function(){
        origin.href = '#';\r
        for(var i=0; i<l; ++i){\r
                item = origin.cloneNode( true);\r
-               item.innerHTML = items[ i];\r
+               item.appendChild( document.createTextNode( items[ i]) );\r
                item.onclick = LoginUserNavi.show;\r
                navi.appendChild( item);\r
        }\r
@@ -867,6 +896,16 @@ pettanr.view = ( function(){
                typeof currentView.onOpen === 'function' && currentView.onOpen();\r
                setTimeout( onWindowResize, 0);\r
        }\r
+       \r
+       var AbstractBasicPane = function(){\r
+               this.UID = '', // element の ID と一致\r
+               this.onOpen = function(){};\r
+               this.onClose = function(){};\r
+               this.onPaneResize = function( _w, _h){};\r
+               this.MIN_WIDTH = 0;\r
+               this.MIN_HEIGHT = 0;\r
+       }\r
+       \r
        return {\r
                init: function( _funcArray){\r
                        funcArray = _funcArray;\r
@@ -900,6 +939,13 @@ pettanr.view = ( function(){
                        }\r
                        alert( _viewID);\r
                },\r
+               resisterAsBasicPane: function( _basicPane){\r
+                       if( pettanr.view.isBasicPaneInstance( _basicPane ) === true ) return;\r
+                       _basicPane.prototype = new AbstractBasicPane();\r
+               },\r
+               isBasicPaneInstance: function( _basicPane){\r
+                       return  _basicPane instanceof AbstractBasicPane;\r
+               },\r
                currentID:      currentID,\r
                HOME:           HOME_ID,\r
                COMICS:         VIEW_ID_ARRAY[ 1],\r
@@ -918,221 +964,6 @@ pettanr.overlay = ( function(){
                visible = false,\r
                windowW, windowH;\r
 \r
-\r
-       var IMAGE_GROUP_EXPROLER = ( function(){\r
-               var ICON_ARRAY = [],\r
-                       WHEEL_DELTA = 64,\r
-                       containerW, containerH, wrapX,\r
-                       jqWrap, jqContainer, jqItemOrigin,\r
-                       itemW, itemH,\r
-                       jqName, jqButton, buttonW,\r
-                       folder, onUpdateFunction,\r
-                       winW,\r
-                       onEnterInterval = null;\r
-               \r
-               var BASE_PATH = pettanr.LOCAL === false ? 'http://pettan.heroku.com/images/' : 'images/',\r
-                       THUMB_PATH = BASE_PATH, // + 'thumbnail/',\r
-                       LIMIT_FILESIZE = 1024 * 10; // 10KB\r
-               var IMAGE_DATA = 0;\r
-               \r
-               var ImageGroupIconClass = function( INDEX, data){\r
-                       var JQ_ICON_WRAP = jqItemOrigin.clone( true),\r
-                               SRC = [ BASE_PATH, data.id, '.', data.ext].join( ''),\r
-                               LOW_SRC = data.filesize && data.filesize > LIMIT_FILESIZE ? [ THUMB_PATH, data.id, '.', data.ext].join( '') : null,\r
-                               reversibleImage = null,\r
-                               actualW, actualH,\r
-                               onEnterFlag = false;\r
-                       JQ_ICON_WRAP.children( 'div').eq( 0).html( data.filesize + 'bytes');\r
-                       jqContainer.append( JQ_ICON_WRAP.css( { left: INDEX * itemW}));\r
-                       \r
-                       function onLoad( url, _imgW, _imgH){\r
-                               if( reversibleImage === null) {\r
-                                       alert( url);\r
-                                       return;\r
-                               }\r
-                               actualW = _imgW || 64;\r
-                               actualH = _imgH || 64;\r
-                               JQ_ICON_WRAP.children( 'div').eq( 1).html( actualW +'x' +actualH);\r
-                               var zoom = 128 /( actualW > actualH ? actualW : actualH),\r
-                                       _h = Math.floor( actualH *zoom),\r
-                                       _w = Math.floor( actualW *zoom);\r
-                               reversibleImage.elm.style.width = _w +'px';\r
-                               reversibleImage.elm.style.height = _h +'px';\r
-                               reversibleImage.elm.style.margin = Math.floor( itemH /2 -_h /2)+'px 0 0';\r
-                               reversibleImage.resize( _w, _h);\r
-                               JQ_ICON_WRAP.click( onClick);\r
-                       }\r
-                       \r
-                       function onClick( e){\r
-                               pettanr.overlay.hide();\r
-                               if (onUpdateFunction) {\r
-                                       if( LOW_SRC === null){\r
-                                               onUpdateFunction( SRC, actualW, actualH);\r
-                                       } else {\r
-                                               onCloseUpdate( onUpdateFunction); // close()で値が消えるので、クロージャに保持\r
-                                       }\r
-                               }\r
-                               close();                                \r
-                       }\r
-                       \r
-                       function onCloseUpdate( onUpdate){\r
-                               pettanr.util.loadImage( SRC,\r
-                                       function( _abspath, imgW, imgH){\r
-                                               onUpdate( SRC, imgW, imgH);\r
-                                               onUpdate = null;\r
-                                       },\r
-                                       function( _abspath){\r
-                                               onUpdate( SRC, data.width || 64, data.height || 64);\r
-                                               onUpdate = null;\r
-                                       }\r
-                               );\r
-                       }\r
-                       \r
-                       return {\r
-                               onEnter: function(){\r
-                                       if( onEnterFlag === true) return;\r
-                                       reversibleImage = pettanr.image.createReversibleImage( LOW_SRC || SRC, itemW, itemH, onLoad);\r
-                                       JQ_ICON_WRAP.children( 'img').replaceWith( reversibleImage.elm);\r
-                                       onEnterFlag = true;                             \r
-                               },\r
-                               destroy: function(){\r
-                                       reversibleImage && reversibleImage.destroy();\r
-                                       JQ_ICON_WRAP.remove();\r
-                                       reversibleImage = JQ_ICON_WRAP = null;\r
-                                       delete this.destroy;\r
-                               }\r
-                       }\r
-               }\r
-               \r
-               function close(){\r
-                       jqContainer.stop().animate( {\r
-                                       height: 0,\r
-                                       top:    Math.floor( windowH /2)\r
-                               }, function(){\r
-                                       jqWrap.hide()\r
-                               });\r
-                       while( ICON_ARRAY.length > 0){\r
-                               ICON_ARRAY.shift().destroy();\r
-                       }\r
-                       onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
-                       onUpdateFunction = onEnterInterval = null;\r
-               }\r
-               function onEnterShowImage(){\r
-                       var l = ICON_ARRAY.length,\r
-                               _start = -wrapX /itemW -1,\r
-                               _end = _start + winW /itemW +1;\r
-                       for( var i=0; i<l; ++i){\r
-                               _start < i && i < _end && ICON_ARRAY[ i].onEnter();\r
-                       }\r
-                       onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
-                       onEnterInterval = null;\r
-               }\r
-               function onCloseClick(){\r
-                       pettanr.overlay.hide();\r
-                       // onUpdateFunction && onUpdateFunction( textElement);\r
-                       close();\r
-               }\r
-               function onMouseWheel( e, delta){\r
-                       if( winW < containerW){\r
-                               wrapX += delta *WHEEL_DELTA;\r
-                               wrapX = wrapX > 0 ? 0 : wrapX < winW -containerW ? winW -containerW : wrapX;\r
-                               jqContainer.css( { left: wrapX});\r
-                               \r
-                               onEnterInterval !== null && window.clearTimeout( onEnterInterval);\r
-                               onEnterInterval = window.setTimeout( onEnterShowImage, 500);\r
-                       }\r
-                       //e.stopPropagation();\r
-                       return false;                   \r
-               }\r
-               return {\r
-                       init: function(){\r
-                               this.jqWrap = jqWrap = $( '#image-gruop-wrapper').hide();\r
-                               jqContainer = $( '#image-icon-container').mousewheel( onMouseWheel);\r
-                               containerH = pettanr.util.getElementSize( jqContainer.get( 0)).height;\r
-                               jqItemOrigin = $( $( '#imageGruopItemTemplete').remove().html());\r
-                               var itemSize = pettanr.util.getElementSize( jqItemOrigin.get( 0));\r
-                               itemW = itemSize.width;\r
-                               itemH = itemSize.height;\r
-                               jqName = $( '#gruop-name-display');\r
-                               jqButton = $( '#image-gruop-button').click( onCloseClick);\r
-                               buttonW = pettanr.util.getElementSize( jqButton.get( 0)).width;\r
-                               \r
-                               delete IMAGE_GROUP_EXPROLER.init;\r
-                       },\r
-                       jqWrap: null,\r
-                       show: function( _folder, _onUpdateFunction){\r
-                               this.init !== undefined && this.init();\r
-                               \r
-                               folder = _folder;\r
-                               onUpdateFunction = _onUpdateFunction;\r
-                               pettanr.overlay.show( this);\r
-                               \r
-                               var l = _folder.getChildFileLength();\r
-                               for( var i=0; i<l; ++i){\r
-                                       ICON_ARRAY.push( new ImageGroupIconClass( i, _folder.getChildFileByIndex( i)));\r
-                               }\r
-                               wrapX = 0;\r
-                               containerW = l * itemW;\r
-                               \r
-                               winW = windowW;\r
-                               var w = winW > containerW ? winW : containerW,\r
-                                       h = windowH > containerH ? containerH : windowH;\r
-                               \r
-                               jqWrap.show();\r
-                               jqContainer.css( {\r
-                                       width:          w,\r
-                                       height:         0,\r
-                                       left:           0,\r
-                                       top:            Math.floor( windowH /2)\r
-                               }).stop().animate( {\r
-                                       height:         h,\r
-                                       top:            Math.floor( windowH /2 -h /2)\r
-                               });\r
-                               \r
-                               jqButton.css( {\r
-                                       left:           Math.floor( winW /2 -buttonW /2),\r
-                                       top:            Math.floor( windowH /2 +containerH /2 +10)\r
-                               });\r
-                               \r
-                               onEnterShowImage();\r
-                       },\r
-                       onWindowResize: function( _windowW, _windowH){\r
-                               var w = _windowW > containerW ? _windowW : containerW,\r
-                                       h = _windowH > containerH ? containerH : _windowH,\r
-                                       offsetW = Math.floor( _windowW /2 -winW /2);\r
-                               winW = _windowW;\r
-                               if( offsetW <= 0){ // smaller\r
-                                       jqContainer.css( {\r
-                                               left:                           offsetW,\r
-                                               width:                          w\r
-                                       }).animate( {\r
-                                               left:                           0,\r
-                                               top:                            Math.floor( _windowH /2 -h /2)\r
-                                       });                                     \r
-                               } else {\r
-                                       jqContainer.css( { // bigger\r
-                                               left:                           0,\r
-                                               width:                          w,\r
-                                               borderLeftWidth:        offsetW\r
-                                       }).animate( {\r
-                                               top:                            Math.floor( _windowH /2 -h /2),\r
-                                               borderLeftWidth:        0\r
-                                       });\r
-                               }\r
-                               jqButton.css( {\r
-                                       left:           Math.floor( _windowW /2 -buttonW /2),\r
-                                       top:            Math.floor( _windowH /2 +containerH /2 +10)\r
-                               });\r
-                               onEnterShowImage();\r
-                       },\r
-                       onClose: close,\r
-                       ID: 'imageGroupExproler'\r
-               }\r
-       })();\r
-       /*\r
-        * \r
-        */\r
-\r
        function close(){\r
                currentOverlay && currentOverlay.onClose && currentOverlay.onClose();\r
                pettanr.overlay.hide();         \r
@@ -1186,6 +1017,24 @@ pettanr.overlay = ( function(){
                        windowH = _windowH;\r
                        // 先にeditorのcanvasを確定する。\r
                        currentOverlay && currentOverlay.onWindowResize && setTimeout( asyncResize, 0);\r
+               },\r
+               resisterOverlay: function( _basicPane){\r
+                       pettanr.view.resisterAsBasicPane( _basicPane);\r
+                       // OverlayAPI\r
+                       return {\r
+                               show: function( _basicPane ){\r
+                                       \r
+                               },\r
+                               hide: function( _basciPane ){\r
+                                       \r
+                               },\r
+                               isCurrent: function( _basicPane ){\r
+                                       \r
+                               }\r
+                       }\r
+               },\r
+               isOverlay: function( _basicPane ){\r
+                       \r
                }\r
        }\r
 })();\r
@@ -1434,6 +1283,63 @@ pettanr.form = ( function(){
                }\r
        }\r
 \r
+       var FileInputClass = function( WRAPPER_ELM, ON_UPDATE_FUNCTION, GROUP_ID, validater, elmFileInput){\r
+               validater = typeof validater === 'function' ? validater : null;\r
+               \r
+               var elmFilePath = pettanr.util.getElementsByClassName( WRAPPER_ELM, 'file-path')[ 0],\r
+                       value,\r
+                       index = GROUP_ID ? FORM_GROUP_TABLE[ GROUP_ID].length : -1,\r
+                       instance,\r
+                       focus = false,\r
+                       visible = true,\r
+                       enabled = true,\r
+                       elmFileInput = WRAPPER_ELM.getElementsByTagName('input')[0] || elmFileInput || document.createElement( 'input');\r
+               elmFileInput.type = 'file';\r
+               elmFileInput.style.visivility = 'hidden';\r
+\r
+               WRAPPER_ELM.onclick = onClick;\r
+               elmFileInput.onchenge = onChange;\r
+               \r
+               function onClick( e){\r
+                       focus = true;\r
+                       start( instance);\r
+                       elmFileInput.click();\r
+                       return false;\r
+               }\r
+               \r
+               function onChange(){\r
+                       elmFilePath.innerHTML = elmFileInput.value;\r
+               }\r
+               return {\r
+                       init: function(){\r
+                               instance = this;\r
+                               delete this.init;\r
+                       },\r
+                       start: function(){\r
+                               onClick();\r
+                       },\r
+                       finish: function( keep){\r
+                               focus = false;\r
+                       },\r
+                       enabled: function(){\r
+                               return enabled;\r
+                       },\r
+                       visible: function( _visible){\r
+                               if( _visible === true){\r
+                                       WRAPPER_ELM.style.display = '';\r
+                                       visible = true;\r
+                               } else\r
+                               if( _visible === false){\r
+                                       WRAPPER_ELM.style.display = 'none';\r
+                                       visible = false;\r
+                               }\r
+                               return visible;\r
+                       },\r
+                       index : index,\r
+                       groupID: GROUP_ID\r
+               }\r
+       }\r
+\r
 \r
        function start( _currentItem){\r
                currentItem !== _currentItem && currentItem && currentItem.finish();\r
@@ -1488,6 +1394,15 @@ pettanr.form = ( function(){
                        _groupID && FORM_GROUP_TABLE[ _groupID].push( ret);\r
                        return ret;\r
                },\r
+               createFileInput: function( _elm, _onUpdate, _groupID, _validater, _elmFileInput){\r
+                       if( typeof _groupID === 'string' && !FORM_GROUP_TABLE[ _groupID]){\r
+                               FORM_GROUP_TABLE[ _groupID] = [];\r
+                       }\r
+                       var ret = FileInputClass( _elm, _onUpdate, _groupID, _validater, _elmFileInput);\r
+                       ret.init();\r
+                       _groupID && FORM_GROUP_TABLE[ _groupID].push( ret);\r
+                       return ret;\r
+               },\r
                createCheckBox: function(){\r
                        \r
                },\r
index ac96c53..05df86c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * pettanR system.js
- *   version 0.4.4
+ *   version 0.4.5
  *   
  * author:
  *   itozyun
@@ -94,111 +94,120 @@ pettanr.file = ( function(){
 
 
 
-       var FILE_CONTROLER = ( function(){
-               
-               return {
-                       createTree: function( _rootFileData){
-                               var _tree = new TreeClass( _rootFileData);
-                               _tree.init();
-                               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;
-                               
-                               if( typeof UIDorFILEorFILEDATA === 'number'){
-                                       _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
-                               } else
-                               if( UIDorFILEorFILEDATA instanceof FileClass){
-                                       _uid = UIDorFILEorFILEDATA.getUID();
-                                       _data = FILEDATA_RESITER[ _uid] || null;
-                               } else {
-                                       _data = UIDorFILEorFILEDATA || null;
-                               }
-                               
-                               if( _data === null || !_data) return null;
-                               for( var i=0, l = FILEDATA_ACCESS.length; i<l; ++i){
-                                       _access = FILEDATA_ACCESS[ i];
-                                       if( _access.DATA === _data) return _access;
-                               }
-                               return null;
-                       },
-                       getDriver: function( _file){
-                               var _data = FILE_CONTROLER.getFileData( _file);
-                               return _data !== null && _data.driver ? ( _data.driver || FileDriverBase) : null;
-                       },
-                       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,
-                                       _targetData = FILE_CONTROLER.getFileDataAccess( _targetfile),
-                                       _targetType = _targetData.TYPE;
-                       },
-                       replace: function( _uid, _file, _newIndex){
+       var FILE_CONTROLER = {
+               createTree: function( _rootFileData){
+                       var _tree = new TreeClass( _rootFileData);
+                       _tree.init();
+                       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;
+                       
+                       if( typeof UIDorFILEorFILEDATA === 'number'){
+                               _data = FILEDATA_RESITER[ UIDorFILEorFILEDATA] || null;
+                       } else
+                       if( UIDorFILEorFILEDATA instanceof FileClass){
+                               _uid = UIDorFILEorFILEDATA.getUID();
+                               _data = FILEDATA_RESITER[ _uid] || null;
+                       } else {
+                               _data = UIDorFILEorFILEDATA || null;
+                       }
+                       
+                       if( _data === null || typeof _data !== 'object') return null;
+                       for( var i=0, l = FILEDATA_ACCESS.length; i<l; ++i){
+                               _access = FILEDATA_ACCESS[ i];
+                               if( _access.DATA === _data) return _access;
+                       }
+                       return 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),
+                               _policy;
+                       if( typeof _driver.getUpdatePolicy === 'function'){
+                               _policy = _driver.getUpdatePolicy( _file );
                                
-                       },
-                       addEventListener: function( FILEorNULL, _eventType, _callback){
-                               var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL;
-                               EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( _uid, _eventType, _callback));
-                       },
-                       removeEventListener: function( FILEorNULL, _eventType, _callback){
-                               var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL,
-                                       _ticket;
-                               for(var i=0, l = EVENT_LISTENER_RESISTER.length; i<l; ++i){
-                                       _ticket = EVENT_LISTENER_RESISTER[i];
-                                       if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback){
-                                               EVENT_LISTENER_RESISTER.splice( i, 1);
-                                               _ticket.destroy();
-                                       }
+                       }
+                       if( typeof _policy !== 'number') {
+                               _policy = FileDriverBase.getUpdatePolicy( _file )
+                       }
+                       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,
+                               _targetData = FILE_CONTROLER.getFileDataAccess( _targetfile),
+                               _targetType = _targetData.TYPE;
+               },
+               replace: function( _uid, _file, _newIndex){
+                       
+               },
+               addEventListener: function( FILEorNULL, _eventType, _callback){
+                       var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL;
+                       EVENT_LISTENER_RESISTER.push( new FileEventTicketClass( _uid, _eventType, _callback));
+               },
+               removeEventListener: function( FILEorNULL, _eventType, _callback){
+                       var _uid = FILEorNULL instanceof FileClass ? FILEorNULL.getUID() : FILEorNULL,
+                               _ticket;
+                       for(var i=0, l = EVENT_LISTENER_RESISTER.length; i<l; ++i){
+                               _ticket = EVENT_LISTENER_RESISTER[i];
+                               if( _ticket.fileUID === _uid && _ticket.eventType === _eventType && _ticket.callBack === _callback){
+                                       EVENT_LISTENER_RESISTER.splice( i, 1);
+                                       _ticket.destroy();
                                }
-                       },
-                       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){
-                                       if( i !== _uid){
-                                               _tree = TREE_ARRAY[i];
-                                               _currentFile = _tree.getCurrentFile();
-                                               if( FILE_CONTROLER.getFileData( _currentFile) === _access.DATA){
-                                                       TREE_ACCESS_ARRAY[ _tree.getUID()].dispatchFileEvent( _event);
-                                               }
+                       }
+               },
+               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){
+                               if( i !== _uid){
+                                       _tree = TREE_ARRAY[i];
+                                       _currentFile = _tree.getCurrentFile();
+                                       if( FILE_CONTROLER.getFileData( _currentFile) === _access.DATA){
+                                               TREE_ACCESS_ARRAY[ _tree.getUID()].dispatchFileEvent( _event);
                                        }
                                }
                        }
                }
-       })();
+       }
 
        var TreeClass = function( ROOTFILE_DATA){
                var UID = TREE_ACCESS_ARRAY.length,
@@ -321,12 +330,7 @@ pettanr.file = ( function(){
                if( !data.children){
                        data.children = [];
                }
-               var TYPE = data.type,
-                       name = null,
-                       driver = data.driver || FileDriverBase,
-                       thumbnail = null,
-                       uid = FILE_CONTROLER.getUID( data),
-                       CHILDREN = data.children,
+               var uid = FILE_CONTROLER.getUID( data),
                        instance = this;
                
                if( uid === -1){
@@ -336,17 +340,12 @@ pettanr.file = ( function(){
                
                FILEDATA_ACCESS.push(
                        {
-                               TYPE:                           TYPE,
                                DATA:                           data,
-                               destroy:                        destroy,
                                updateParent:           updateParent,
                                dispatchFileEvent:      dispatchEvent
                        }
                );
-               function destroy(){
-                       name = thumbnail = parentFile = data = CHILDREN = driver = null;
-                       
-               }
+
                function updateParent( _parent){
                        parentFile = _parent;
                }
@@ -356,32 +355,18 @@ pettanr.file = ( function(){
                
                /* grobal Methods */
                this.init = function(){
-                       //instance = this;
                        delete this.init;
                }
-               this.getType = function(){
-                       return TYPE;
-               }
-               this.getName = function(){
-                       if( name !== null) return name;
-                       if( typeof driver.getName === 'function'){
-                               name = driver.getName( instance);
-                       }
-                       return name;
-               }
-               this.getThumbnail = function(){
-                       if( thumbnail !== null) return thumbnail;
-                       if( typeof driver.getThumbnail === 'function'){
-                               thumbnail = driver.getThumbnail( instance);
-                       }
-                       return thumbnail || null;
-               }
                this.getUID = function(){
                        return uid;
                }
+               /*
+                * ファイル構造は TRON のような ハイパーリンク方式 だが、文脈上の 親ファイルが存在する場合がある.
+                */
                this.getChildFileByIndex = function( _index){
-                       if( typeof _index !== 'number' || _index < 0 || typeof CHILDREN.length !== 'number' || _index >= CHILDREN.length) return null;
-                       _file = new FileClass( TREE, this, CHILDREN[ _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();
                        return _file;
                }
@@ -392,7 +377,12 @@ pettanr.file = ( function(){
                        TREE.replace( parentFile, UID, _newIndex, opt_callback);
                }
                this.destroy = function(){
-                       
+                       var _access = FILE_CONTROLER.getFileDataAccess( instance );
+                               _index = getChildIndex( FILEDATA_ACCESS, _access );
+                       if( _index === -1 || _access === null) return;
+                       FILEDATA_ACCESS.splice( _index, 1);
+                       TREE = parentFile = data = null;
+                       delete _access.DATA, _access.updateParent, _access.dispatchFileEvent;
                }
        };
        FileClass.prototype = {
@@ -409,24 +399,73 @@ pettanr.file = ( function(){
                        FILE_CONTROLER.removeEventListener( this, _eventType, _callback);
                },
                getChildFileLength: function(){
-                       var CHILDREN = FILE_CONTROLER.getChildren( this);
-                       return CHILDREN && typeof CHILDREN.length === 'number' ? CHILDREN.length : 0;
+                       var children = FILE_CONTROLER.getChildren( this);
+                       return children !== null && typeof children.length === 'number' ? children.length : 0;
                },
                getChildFileIndex: function( _FILEorFILEDATA){
-                       var CHILDREN = FILE_CONTROLER.getChildren( this);
+                       var children = FILE_CONTROLER.getChildren( this);
                        
-                       if( !CHILDREN || typeof CHILDREN.length !== 'number') return -1;
-                       var l = CHILDREN.length,
+                       if( children === null || typeof children.length !== 'number') return -1;
+                       var l = children.length,
                                _fileData = FILE_CONTROLER.getFileData( _FILEorFILEDATA);
                        if( _fileData === null) return -1;
                        for(var i=0; i<l; ++i){
-                               if( CHILDREN[ i] === _fileData) return i;
+                               if( children[ i] === _fileData) return i;
                        }
                        return -1;
                },
+               getName: function(){
+                       var driver = FILE_CONTROLER.getDriver( this );
+                       if( typeof driver.getName === 'function'){
+                               return driver.getName( this );
+                       }
+                       return FileDriverBase.getName( this);
+               },
+               getThumbnail: function(){
+                       var driver = FILE_CONTROLER.getDriver( this);
+                       if( typeof driver.getThumbnail === 'function'){
+                               return driver.getThumbnail( this);
+                       }
+                       return FileDriverBase.getThumbnail( this);
+               },
+               getType: function(){
+                       var _data = FILE_CONTROLER.getFileData( this);
+                       return typeof _data.type === 'number' ? _data.type : pettanr.file.FILE_TYPE.UNKNOWN;
+               },
                getState: function(){
                        var _data = FILE_CONTROLER.getFileData( this);
-                       return _data.state !== undefined ? _data.state : pettanr.file.FILE_STATE.OK;
+                       return typeof _data.state === 'number' ? _data.state : pettanr.file.FILE_STATE.OK;
+               },
+               isWritable: function(){
+                       return FILE_CONTROLER.getUpdateFlag( this, pettanr.file.FILE_UPDATE_POLICY.WRITE);
+               },
+               isSortable: function(){
+                       return FILE_CONTROLER.getUpdateFlag( this, pettanr.file.FILE_UPDATE_POLICY.SORT);
+               },              
+               isCreatable: function(){
+                       return FILE_CONTROLER.getUpdateFlag( this, pettanr.file.FILE_UPDATE_POLICY.CREATE);
+               },
+               isRenamable: function(){
+                       return FILE_CONTROLER.getUpdateFlag( this, pettanr.file.FILE_UPDATE_POLICY.RENAME);
+               },
+               read: function(){
+                       // simpleDeepCopy
+                       return false;
+               },
+               write: function( _newName, _newData){
+                       return false;
+               },
+               create: function(){
+                       
+               },
+               sort: function(){
+                       
+               },
+               onCopy: function(){
+                       
+               },
+               onDelete: function(){
+                       
                }
        }
 
@@ -470,14 +509,9 @@ pettanr.file = ( function(){
                                className:      ' file-type-' + _className
                        }
                },
-               isWritable: function( _file){
-                       return false;
-               },
-               isSortable: function( _file){
-                       return false;
-               },              
-               isCreatable: function( _file){
-                       return false;
+               getUpdatePolicy: function( _file){
+                       // debug用 全てのメニューを許可
+                       return pettanr.file.FILE_UPDATE_POLICY.SRWC;
                },
                read: function(){
                        return false;
@@ -555,6 +589,7 @@ pettanr.file = ( function(){
                        return _file instanceof FileClass;
                },
                FILE_TYPE: {
+                       UNKNOWN:        0,
                        FOLDER:         FILE_TYPE_IS_FOLDER,
                        IMAGE:          createFileTypeID(),
                        TEXT:           createFileTypeID(),
@@ -570,6 +605,28 @@ pettanr.file = ( function(){
                        ERROR:          3,
                        BROKEN:         4
                },
+               FILE_UPDATE_POLICY: {
+                       ____:           parseInt( '0000', 2),
+                       ___C:           parseInt( '0001', 2), // hasCreateMenu
+                       __W_:           parseInt( '0010', 2), // isWritable
+                       __WC:           parseInt( '0011', 2), // isWritable
+                       _R__:           parseInt( '0000', 2), // isRenamable
+                       _R_C:           parseInt( '0101', 2), // hasCreateMenu
+                       _RW_:           parseInt( '0110', 2), // isWritable
+                       _RWC:           parseInt( '0111', 2), // isWritable
+                       S___:           parseInt( '1000', 2), // childrenIsSortable
+                       S__C:           parseInt( '1001', 2),
+                       S_W_:           parseInt( '1010', 2),
+                       S_WC:           parseInt( '1011', 2),
+                       SR__:           parseInt( '1000', 2),
+                       SR_C:           parseInt( '1101', 2),
+                       SRW_:           parseInt( '1110', 2),
+                       SRWC:           parseInt( '1111', 2),
+                       CREATE:         1,
+                       WRAITE:         2,
+                       RENAME:         4,
+                       SORT:           8
+               },
                TREE_EVENT: {
                        UPDATE:                         'onTreeUpdate'
                },
@@ -880,10 +937,10 @@ pettanr.driver = ( function(){
                                        return [ _data.t, ':', _data.comic.name || _data.comic.title ].join( '');
                                } else
                                if( _type === pettanr.driver.FILE_TYPE.ARTIST){
-                                       return _data.name + '先生';
+                                       return [ _data.id , ':', _data.name, '画伯' ].join( '');
                                } else
                                if( _type === pettanr.driver.FILE_TYPE.AUTHOR){
-                                       return _data.name + '先生';
+                                       return [ _data.id , ':', _data.name, '先生' ].join( '');
                                }
                                return _data.name || _data.title;
                        },
@@ -1048,9 +1105,10 @@ pettanr.driver = ( function(){
                if( _parent === FILE_DATA_COMIC_ROOT){
                        if( _data.comic && _data.author){
                                var _comic = getFolderData( _data, 'comic', FILE_DATA_COMIC_ROOT),
-                                       _comics = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT).children;
+                                       _comicList = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT);
                                _comic.children.push( _data);
-                               pettanr.util.getIndex( _comics, _comic) === -1 && _comics.push( _comic);
+                               pettanr.util.getIndex( _comicList.children, _comic) === -1 && _comicList.children.push( _comic);
+                               _comicList.id === MyAuthorID && pettanr.util.getIndex( FILE_DATA_MY_COMICS_ROOT.children, _comic) === -1 && FILE_DATA_MY_COMICS_ROOT.children.push( _comic);
                        }
                        // picture data をファイルに取り出し
                        var _elements = _data.panel_elements || [],
@@ -1066,7 +1124,11 @@ pettanr.driver = ( function(){
                        }
                } else
                if( _parent === FILE_DATA_PICTURE_ROOT){
-                       _data.artist && getFolderData( _data, 'artist', FILE_DATA_ARTIST_ROOT).children.push( _data);
+                       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);
+                       }
                }
                
                return _data;
@@ -1092,7 +1154,7 @@ pettanr.driver = ( function(){
                        }
                        return _data[ _key ] = __data;// このタイミングで参照が切れるので注意!!
                }
-               
+               // 以下は folder がなく 新規に作られる場合.
                _ret = _array[ _id ] = _data[ _key ];
                if( _ret.title){
                        _ret.name = _ret.title;
@@ -1103,11 +1165,9 @@ pettanr.driver = ( function(){
                
                if( _parentData === FILE_DATA_AUTHOR_ROOT){
                        _ret.type = pettanr.driver.FILE_TYPE.AUTHOR;
-                       _id === MyAuthorID && FILE_DATA_MY_COMICS_ROOT.children.push( _ret);
                } else
                if( _parentData === FILE_DATA_ARTIST_ROOT){
                        _ret.type = pettanr.driver.FILE_TYPE.ARTIST;
-                       _id === MyArtistID && FILE_DATA_MY_PICTURES_ROOT.children.push( _ret);
                } else
                if( _parentData === FILE_DATA_COMIC_ROOT){
                        _ret.type = pettanr.driver.FILE_TYPE.COMIC;
@@ -1131,8 +1191,12 @@ pettanr.driver = ( function(){
                createServiceTree: function(){
                        return pettanr.file.createTree( FILE_DATA_SERVICE_ROOT);
                },
-               isPettanrFile: function( _file){
-                       
+               isPettanrFileInstance: function( _file){
+                       if( pettanr.file.isPettanFileInstance( _file) === true){
+                               var _data = FileAPI.getFileData( _file);
+                               return _data !== null && _data.driver === Driver;
+                       }
+                       return false;
                },
                FILE_TYPE: {
                        COMIC:                          FileAPI.createFileTypeID(),
@@ -1212,7 +1276,11 @@ pettanr.fn( pettanr.view);
 pettanr.fn( pettanr.overlay);
 pettanr.fn( pettanr.key);
 pettanr.fn( pettanr.balloon);
+
 pettanr.fn( pettanr.editor);
+pettanr.fn( pettanr.comicConsole);
+pettanr.fn( pettanr.uploadConsole);
+
 pettanr.fn( pettanr.file);
 pettanr.fn( pettanr.finder);
 pettanr.fn( pettanr.gallery);
index 7a6312a..91fa9ee 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
  * pettanR work.js\r
- *   version 0.4.4\r
+ *   version 0.4.5\r
  *   \r
  * author:\r
  *   itozyun\r
@@ -3482,3 +3482,319 @@ pettanr.editor = ( function(){
                MIN_HEIGHT:     320\r
        }\r
 })();\r
+\r
+// create hidden iframe\r
+// write script\r
+// setInterval\r
+pettanr.proxy = ( function(){\r
+       \r
+       function FormProxy( formJsUrl, callback){\r
+               var timer = null,\r
+                       iWin, idoc;\r
+\r
+               pettanr.util.createIframe( 'id00000', onCreateIframe);\r
+               \r
+               function onCreateIframe( _iframe){\r
+                       iWin = _iframe.contentWindow;\r
+                       idoc = _iframe.contentWindow.document;\r
+\r
+                       idoc.open();\r
+                       idoc.write( '<body>');\r
+                       idoc.writeln( '<script type="text\/javascript" src="' + pettanr.CONST.JQUERY_URL+ '"><\/script>');\r
+                       idoc.close();\r
+\r
+                       timer = window.setInterval( detect, 250 );\r
+               }\r
+               function detect(){\r
+                       if( iWin.jQuery){\r
+                               window.clearInterval( timer );\r
+                               //callback( idoc);\r
+                               iWin.jQuery( iWin).ready( onJQueryReady );\r
+                       }\r
+               }\r
+               function onJQueryReady(){\r
+                       callback( idoc);\r
+               }\r
+       }\r
+       \r
+       return {\r
+               createFormProxy: function( _formJsUrl, _callback){\r
+                       new FormProxy( _formJsUrl, _callback);\r
+               }\r
+       }\r
+       \r
+})();\r
+\r
+\r
+pettanr.comicConsole = ( function(){\r
+       var COMIC_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'comicConsole',\r
+                       elmProgress = document.getElementById( 'comic-console-progress'),\r
+                       inputTitle, inputW, inputH, inputVisible, inputEditable,\r
+                       elmUploader = null;\r
+               //pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
+               \r
+               function clickOK(){\r
+                       // clickCancel();\r
+                       // pettanr.proxy.createFormProxy( pettanr.CONST.UPLOAD_PICTURE_JS, onCreateForm);\r
+                       elmProgress.innerHTML = '■';\r
+                       // set values\r
+                       // submit\r
+               }\r
+               function onCreateForm( iDocument){\r
+                       var div = iDocument.createElement( 'div');\r
+                       div.id = "uploader";\r
+                       iDocument.body.appendChild( div);\r
+                       \r
+                       var script = iDocument.createElement( 'script');\r
+                       script.type = 'text\/javascript';\r
+                       script.src = pettanr.CONST.UPLOAD_PICTURE_JS;\r
+                       iDocument.body.appendChild( script);\r
+                       \r
+                       elmProgress.innerHTML = '■■';\r
+                       \r
+                       var form = iDocument.forms[ 0 ];\r
+                       \r
+               }\r
+               \r
+               function clickCancel(){\r
+                       pettanr.overlay.hide();\r
+                       COMIC_CONSOLE.onClose();\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#comic-console-wrapper').hide();\r
+                               $( '#comic-console-post-button').click( clickOK );\r
+                               $( '#comic-console-cancel-button').click( clickCancel );\r
+                               \r
+                               var CREATER = pettanr.form.createInputText;//pettanr.key.createEditableText;\r
+                               inputTitle    = CREATER( document.getElementById( 'comic-console-title'), null, ID);\r
+                               inputW        = CREATER( document.getElementById( 'comic-console-width'), null, ID);\r
+                               inputH        = CREATER( document.getElementById( 'comic-console-height'), null, ID);\r
+                               inputVisible  = CREATER( document.getElementById( 'comic-console-visible'), null, ID);\r
+                               inputEditable = CREATER( document.getElementById( 'comic-console-editable'), null, ID);\r
+                               \r
+                               delete COMIC_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               jqWrap.show();\r
+\r
+                               pettanr.overlay.show( COMIC_CONSOLE );\r
+                               \r
+                               inputTitle.start();\r
+                               COMIC_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
+                               jqWrap.hide();\r
+                       },\r
+                       ID: ID\r
+               }\r
+       })();\r
+       \r
+       return {\r
+               init: function(){\r
+                       COMIC_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function( _file){\r
+                       if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+                               // _data = _file.read();\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
+                       COMIC_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();\r
+\r
+pettanr.uploadConsole = ( function(){\r
+       var UPLOAD_CONSOLE = ( function(){\r
+               var jqWrap,\r
+                       ID = 'uploadConsole',\r
+                       TARGET_FRAME_NAME = 'targetFrame',\r
+                       elmContainer = document.getElementById( 'uploader'),\r
+                       elmProgress = document.getElementById( 'upload-console-progress'),\r
+                       timer = null,\r
+                       elmScript = null,\r
+                       elmForm = null,\r
+                       elmFile = null,\r
+                       elmIframe = null,\r
+                       isUploading = false;\r
+               /*\r
+                * upload ボタンが押されたらまず iframe をつくる.
+                */\r
+               function clickOK(){\r
+                       if( !elmForm || elmFile.value.length === 0) return false;\r
+                       pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+                       elmProgress.innerHTML = 'uploading.';\r
+                       isUploading = true;\r
+                       return false;\r
+               }\r
+               /*\r
+                * form の target に iframe を指定したのち submit();
+                */\r
+                       function onCreateIframe( iframe ){\r
+                               elmContainer.appendChild( iframe );\r
+                               elmForm.target = iframe.name;\r
+                               \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
+                                       iframe.onreadystatechange = detectIframe;\r
+                               } else {\r
+                                       iframe.onload = onIframeUpdate;\r
+                               }\r
+                               elmIframe = iframe;\r
+                               elmProgress.innerHTML = 'uploading..';\r
+                       }\r
+               /*\r
+                * ie の 場合、readyState をチェック.
+                */\r
+                               function detectIframe(){\r
+                           if ( elmIframe.readyState === 'complete') {\r
+                               elmIframe.onreadystatechange = new Function();\r
+                               elmIframe.onreadystatechange = null;\r
+                               onIframeUpdate();\r
+                           }\r
+                               }\r
+                                       function onIframeUpdate(){\r
+                                               elmIframe.onload = null;\r
+                                               ( elmIframe.contentWindow || elmIframe.contentDocument.parentWindow ).close();\r
+                                               elmIframe = null;\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 === 'file'){\r
+                                               elmFile = _input;\r
+                                       }\r
+                                       if( _input.type === 'submit'){\r
+                                               _input.style.display = 'none';\r
+                                       }\r
+                               }\r
+                               window.clearInterval( timer);\r
+                               timer = null;\r
+                       }\r
+               }\r
+               /*\r
+                * 
+                */\r
+               function clickCancel(){\r
+                       if( isUploading === true) return false;\r
+                       pettanr.overlay.hide();\r
+                       UPLOAD_CONSOLE.onClose();\r
+                       return false;\r
+               }\r
+               \r
+               return {\r
+                       init: function(){\r
+                               this.jqWrap = jqWrap = $( '#upload-console-wrapper').hide();\r
+                               $( '#upload-console-post-button').click( clickOK );\r
+                               $( '#upload-console-cancel-button').click( clickCancel );\r
+\r
+                               delete UPLOAD_CONSOLE.init;\r
+                       },\r
+                       jqWrap: null,\r
+                       show: function( w, h){\r
+                               /*\r
+                                * ie 6, 7 で fadeIn 中の要素に appendChild すると クラッシュするので、document.body に追加.
+                                */                             \r
+                               elmScript = document.createElement( 'script');\r
+                               elmScript.type = 'text\/javascript';\r
+                               elmScript.src = pettanr.CONST.UPLOAD_PICTURE_JS;\r
+                               document.body.appendChild( elmScript);\r
+                               \r
+                               jqWrap.show();\r
+                               pettanr.overlay.show( UPLOAD_CONSOLE );\r
+\r
+                               if( timer === null){\r
+                                       timer = window.setInterval( detectForm, 250);\r
+                               }\r
+                               \r
+                               elmProgress.innerHTML = '';\r
+                               \r
+                               UPLOAD_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 = elmFile = null;\r
+                               isUploading = false;\r
+                               \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
+                       UPLOAD_CONSOLE.init();\r
+                       delete pettanr.comicConsole.init;\r
+               },\r
+               onOpen: function( _file){\r
+                       if( pettanr.driver.isPettanrFileInstance( _file ) === true && _file.getType() === pettanr.driver.FILE_TYPE.COMIC){\r
+                               // _data = _file.read();\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
+                       UPLOAD_CONSOLE.show( w, h);\r
+               }\r
+       }\r
+})();
\ No newline at end of file
diff --git a/0.4.x/js/upload_picture.js b/0.4.x/js/upload_picture.js
new file mode 100644 (file)
index 0000000..06540a8
--- /dev/null
@@ -0,0 +1,3 @@
+$("#uploader").html(\r
+       "<form accept-charset=\"UTF-8\" action=\"/original_pictures\" enctype=\"multipart/form-data\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"&#x2713;\" /><input name=\"authenticity_token\" type=\"hidden\" value=\"4SZnMe0yBUXVlpJ6MZ/2jKZns64P6XtmJ1KUeuNQcY0=\" /><\/div>\n      <label for=\"file\">File to Upload<\/label> <input id=\"original_picture_file\" name=\"original_picture[file]\" type=\"file\" />\n      lisence\n      <select id=\"original_picture_lisence_id\" name=\"original_picture[lisence_id]\"><\/select>\n      <input name=\"commit\" type=\"submit\" value=\"upload\" /><\/form>"\r
+       );
\ No newline at end of file
index d8fa163..cf46f2f 100644 (file)
@@ -77,7 +77,7 @@ blue.style.filter = 'progid:DXImageTransform.Microsoft.Shadow()';
           c = b.className || '',\r
           x = document.createElement('div');\r
       b.appendChild(x);\r
-      x.style.cssText = 'width:1px;height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+      x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
       b.className += [ c !== '' ? ' ' : c, 'pettanr-ActiveX-', x.offsetHeight &gt; 1 ? 'enabled' : 'disabled'].join( '');\r
       b.removeChild(x);\r
     })();\r
@@ -94,7 +94,14 @@ blue.style.filter = 'progid:DXImageTransform.Microsoft.Shadow()';
                                        <p>VBscript に使える機能ないかな??</p>\r
                                        <h4>【一応】js が有効だからといって ActiveX も有効とは限らない</h4>\r
                                        <p>ActiveX は js と同時に切られることが多いが、これは ie のデフォルトのセキュリティ設定のためで、ActiveX と js はそれぞれ独立して on / off ができる.</p>\r
-                                       <p>そのため js が有効だからといって ActiveX も有効とは限らない.</p>                                  \r
+                                       <p>そのため js が有効だからといって ActiveX も有効とは限らない.</p>  \r
+                                       <h3>追記 2012/03/24</h3>\r
+                                       <p>ie6  でうまく動かなかったため修正.ie6~8  のデフォルト設定が localhost では ActiveX が切になっているようで気付いた.</p>\r
+                                       <pre><code>\r
+x.style.cssText = 'width:1px;height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+↓\r
+x.style.cssText = 'width:1px;height:1px;<ins>line-height:1px;</ins>filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+                                       </code></pre>\r
                                </div>\r
                                <!-- InstanceEndEditable -->\r
             </div>\r
index 98c24a3..0b119e3 100644 (file)
@@ -44,6 +44,8 @@
                                                <dd>ActiveX が有効か?を js で調べる.</dd>\r
                                                <dt><a href="pettanr.xml">xml &amp; xslt -&gt; html</a></dt>\r
                                                <dd>pettanR コミックを xml で定義.xslt で html 化する.</dd>\r
+                                               <dt><a href="type.html">[js] Type</a></dt>\r
+                                               <dd>javascript の型判定のテスト</dd>\r
                                        </dl>\r
                                </div>\r
                                <!-- InstanceEndEditable -->\r
diff --git a/0.4.x/test/type.html b/0.4.x/test/type.html
new file mode 100644 (file)
index 0000000..617a997
--- /dev/null
@@ -0,0 +1,228 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
+<html xmlns:v="urn:schemas-microsoft-com:vml"><!-- InstanceBegin template="/Templates/base.dwt" codeOutsideHTMLIsLocked="false" -->\r
+<head>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
+       <meta http-equiv="Content-Language" content="ja">\r
+       <meta http-equiv="Content-Script-Type" content="text/javascript">\r
+       <meta http-equiv="Content-Style-Type" content="text/css">\r
+       <meta http-equiv="imagetoolbar" content="no">\r
+       <link rel="stylesheet" type="text/css" href="../stylesheets/common.css">\r
+       <!-- InstanceBeginEditable name="doctitle" -->\r
+       <title>[js]type | pettanR</title>\r
+       <!-- InstanceEndEditable -->\r
+       <!-- InstanceBeginEditable name="head" -->\r
+       <style>\r
+               dt { font-weight:bold;}\r
+               .type-is-String { color:red;}\r
+               .type-is-Number { color:#f6f;}\r
+               .type-is-Function { color:green;}\r
+               .type-is-Array, .type-is-Object {\r
+                       color:blue;\r
+               }\r
+               .type-is-Boolean, .type-is-null, .type-is-undefined {\r
+                       color:#666;\r
+               }\r
+               .type-is-HTMLElement {\r
+                       color:orange;\r
+               }\r
+       </style>\r
+       <!-- InstanceEndEditable -->\r
+</head>\r
+\r
+<body>\r
+    <div id="general-content">\r
+        <div id="outer-wrapper">\r
+            \r
+            <div id="header">\r
+                <div class="base-content-width" style="position:relative;">\r
+                    <h1><a href="../index.html">pettanR</a></h1>\r
+                <!-- global navi -->\r
+                    <div id="global-navi">\r
+                        <noscript id="noscript-alert">You need to have JavaScript enabled.</noscript>\r
+                    </div>\r
+                </div>\r
+            </div>\r
+            \r
+            <div id="inner-wrapper" class="base-content-width">\r
+                               <!-- InstanceBeginEditable name="main_content" -->\r
+\r
+                               <div id="main">\r
+                                       <h2>javascript のための型判定</h2>\r
+                                       <p>以下の表は js によっ書き出されています.Array 型 と  HTMLElement 型 の判定が面倒です.また、NodeList 型が返るか?はブラウザ毎の実装差があるようです.</p>\r
+                                       <dl id="output" class="dl-table clearfix"></dl>\r
+                                       <h3>参考記事</h3>\r
+                                       <p>以下の記事を参考にしました.</p>\r
+                                       <p>\r
+                                               <a href="http://d.hatena.ne.jp/cheesepie/20091122/1258897939" target="_blank">JavaScriptで型判定いろいろ - Cheese Pie</a>\r
+                                               このページの型チェック用コードのベースにした記事です.\r
+                                       </p>\r
+                                       <p>\r
+                                               <a href="http://zombiebook.seesaa.net/article/118457190.html" target="_blank">Javascript:element の判定とそれに関わる諸事: Script雑感</a>\r
+                                               isElement の判定の参考にしました.ie5  や ns6 といった古いブラウザでもチェックされていてすばらしいです. \r
+                                       </p>\r
+                                       <h3>メモ</h3>\r
+                                       <p>2012-03-18 file.read() のための DeepCopy を書きたくて、型判定方法について調べる.</p>\r
+                               </div>\r
+                               <!-- InstanceEndEditable -->\r
+            </div>\r
+        </div>\r
+    </div>\r
+    \r
+    <div id="footer-content"><!-- #BeginLibraryItem "/Library/footer.lbi" -->\r
+\r
+        <div id="footer">\r
+            <div id="footer-item-container" class="base-content-width clearfix">\r
+                <div class="footer-item-wrapper">\r
+                    <div class="footer-item">\r
+                        <h2>ぺったんR にようこそ</h2>\r
+                        <ul>\r
+                            <li>サンプル</li>\r
+                            <li>ぺったんRの特徴</li>\r
+                            <li>沿革</li>\r
+                        </ul>\r
+                        <h2>Test</h2>\r
+                        <ul>\r
+                            <li><a href="index.html">Test Index</a></li>\r
+                        </ul>\r
+                    </div>\r
+                </div>\r
+                <div class="footer-item-wrapper">\r
+                    <div class="footer-item">\r
+                        <h2>ドキュメント</h2>\r
+                        <ul>\r
+                            <li><a href="http://sourceforge.jp/projects/pettanr/wiki/ForAuthors" rel="me" target="_blank">作家向けドキュメント</a></li>\r
+                            <li>絵師向けドキュメント</li>                                                    \r
+                            <li><a href="http://sourceforge.jp/projects/pettanr/wiki/ForDevelopers" rel="me" target="_blank">開発者向けドキュメント</a></li>\r
+                            <li><a href="http://sourceforge.jp/projects/pettanr/wiki/ForWebmasters" rel="me" target="_blank">編集長向けドキュメント</a></li>\r
+                        </ul>\r
+                    </div>\r
+                </div>\r
+                <div class="footer-item-wrapper">\r
+                    <div class="footer-item">\r
+                        <h2>プロトタイプ</h2>\r
+                        <ul>\r
+                            <li><a href="http://pettanr.heroku.com/" rel="me" target="_blank">pettanr.heroku.com</a></li>\r
+                            <li><a href="../work.html" rel="console">ユーザーコンソール</a></li>\r
+                        </ul>\r
+                        <h2>Ajax contents</h2>\r
+                        <ul>\r
+                            <li><a href="../help/jp.xml">help | jp</a></li>\r
+                        </ul>\r
+                    </div>\r
+                </div>\r
+                <div class="footer-item-wrapper" style="width:170px;">\r
+                    <div class="footer-item" style="padding-right:0;">\r
+                        <h2>ぺったんRチーム</h2>\r
+                        <ul>\r
+                            <li>わたしたちについて</li>\r
+                            <li>ミッション</li>\r
+                            <li><a href="../diary/itozyun.xml">itozyun's diary</a></li>\r
+                            <li>個人情報保護方針</li>\r
+                            <li>作品の取り扱い</li>\r
+                            <li>お問い合わせ</li>\r
+                        </ul>\r
+                    </div>\r
+                </div>\r
+            </div>\r
+            <div id="copyright">Copyright (c) 2011-2012 pettanR team, some rights reserved.</div>\r
+        </div><!-- #EndLibraryItem --></div>\r
+       <script type="text/javascript" src="../javascripts/common.js"></script>\r
+<!-- InstanceBeginEditable name="script" -->\r
+               <script type="text/javascript">\r
+/**\r
+ * Decision type of variable.\r
+ * @class Type\r
+ * @static\r
+ */\r
+       var Type = {\r
+               isObject : function(v) {\r
+                       return typeof v === 'object';\r
+               },\r
+               isFunction : function(v) {\r
+                       return typeof v === 'function';\r
+               },\r
+               isArray : function(v) {\r
+                       return Object.prototype.toString.call(v) === "[object Array]";\r
+               },\r
+               isBoolean : function(v) {\r
+                       return typeof v === 'boolean';\r
+               },\r
+               isString : function(v) {\r
+                       return typeof v === 'string';\r
+               },\r
+               isNumber : function(v) {\r
+                       return typeof v === 'number';\r
+               },\r
+               isHTMLElement : ( 'HTMLElement' in window ?\r
+                       function(v){\r
+                               return v instanceof HTMLElement\r
+                       } :\r
+                       function(v) {\r
+                               if( Type.isObject(v) === false ){\r
+                                       return false;\r
+                               }\r
+                               var r;\r
+                               if(v && v.nodeType === 1){\r
+                                       try{\r
+                                               r = v.cloneNode(false);\r
+                                       } catch(n) {\r
+                                               return false;\r
+                                       }\r
+                                       if(r === v) return false;\r
+                                       try{\r
+                                               r.nodeType = 9;\r
+                                               return r.nodeType === 1;\r
+                                       } catch(n) {}\r
+                                       return true;\r
+                               }\r
+                               return false;\r
+                       }\r
+               ),\r
+               isElementCollection : function(v) {\r
+                       return (Object.prototype.toString.call(v) === "[object HTMLCollection]");\r
+               },\r
+               isNull : function(v) {\r
+                       return v === null;\r
+               },\r
+               isUndefined : function(v) {\r
+                       return typeof v === 'undefined';\r
+               },\r
+               /**\r
+                * @method getType\r
+                * @param {Any} v The variable\r
+                * @return {String} type of the variable\r
+                */\r
+               getType : function(v) {\r
+                       if(Type.isNull(v)) {\r
+                               return "null";\r
+                       }\r
+                       if(Type.isUndefined(v)) {\r
+                               return "undefined";\r
+                       }\r
+                       if(Type.isHTMLElement(v)) {\r
+                               return "HTMLElement";\r
+                       }\r
+                       return Object.prototype.toString.call(v).split(" ")[1].replace("]", "");\r
+               }\r
+       };\r
+\r
+       var output = document.getElementById( 'output'),\r
+               testNameArray = [ '"abc"', 'true', '100', '[]', '{}', 'function(){}', 'undefined', 'null', 'document.getElementById( "output")', 'document.getElementById("notExist")', 'document.getElementsByTagName("div")', 'document.body.childNodes', 'document.createTextNode( "hello" )'],\r
+               testValueArray = [ "abc", true, 100, [], {}, function(){}, undefined, null, output, document.getElementById("notExist"), document.getElementsByTagName("div"), document.body.childNodes, document.createTextNode( "hello" )],\r
+               dt, dd, type;\r
+       for(var i=0, l=testValueArray.length; i<l; ++i){\r
+               dt = document.createElement( 'dt');\r
+               dd = document.createElement( 'dd');\r
+               output.appendChild( dt );\r
+               output.appendChild( dd );\r
+               type = Type.getType(testValueArray[i]);\r
+               dt.appendChild( document.createTextNode( type ));\r
+               dt.className = 'type-is-' + type;\r
+               dd.appendChild( document.createTextNode( testNameArray[i]));\r
+       }\r
+               </script>\r
+\r
+<!-- InstanceEndEditable -->\r
+</body>\r
+<!-- InstanceEnd --></html>\r
index aa00723..0add674 100644 (file)
                </div>\r
                \r
                <div id="inner-wrapper" class="base-content-width">\r
+               <!-- home -->\r
+                       <div id="entrance" class="console-page main">\r
+                               <h2>Wellcome to pettanR!</h2>\r
+                               <p>Hello, xxxxx.</p>\r
+                               <p>This page is login user console.</p>\r
+                               <h3>クイックアクセス</h3>\r
+                               <p>新しいコミックをつくる</p>\r
+                               <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
+                               <h3>座長からのお知らせ</h3>\r
+                               <p>メンテナンスについて</p>\r
+                       </div>\r
+                       \r
+               <!-- setting -->\r
+                       <div id="backyard" class="console-page main"></div>\r
 \r
-                       <!-- home -->\r
-                               <div id="entrance" class="console-page main">\r
-                                       <h2>Wellcome to pettanR!</h2>\r
-                                       <p>Hello, xxxxx.</p>\r
-                                       <p>This page is login user console.</p>\r
-                                       <h3>クイックアクセス</h3>\r
-                                       <p>新しいコミックをつくる</p>\r
-                                       <p><a href="#" onclick="pettanr.view.show('editor');return false;">新しいコマを描く</a></p>\r
-                                       <p>画像のアップロード</p>\r
-                                       <h3>編集長からのお知らせ</h3>\r
-                                       <p>メンテナンスについて</p>\r
-                               </div>\r
-                               \r
-                       <!-- setting -->\r
-                               <div id="backyard" class="console-page main"></div>\r
-\r
-                       <!-- debug-->\r
-                               <div id="debug" class="console-page main">\r
-                                       <h2>Environment</h2>\r
-                                       <dl id="useragent" class="dl-table clearfix"></dl>\r
+               <!-- debug-->\r
+                       <div id="debug" class="console-page main">\r
+                               <h2>Environment</h2>\r
+                               <dl id="useragent" class="dl-table clearfix"></dl>\r
 \r
-                                       <h2>Boot console in debug mode</h2>\r
-                                       <dl class="dl-table clearfix">\r
-                                               <dt>xdomain json</dt>\r
-                                               <dd><a href="work.html?view=2&exjson=false">use same domain json</a></dd>                       \r
-                                       </dl>\r
-                               \r
-                                       <h2>Boot editor in debug mode</h2>\r
-                                       <dl class="dl-table clearfix">\r
-                                               <dt>General Boot</dt>\r
-                                               <dd><a href="work.html?view=editor">Boot Editor</a></dd>\r
-                                               <dt>Reversible Image test</dt>\r
-                                               <dd><a href="work.html?view=editor&rimg=CSS3">Backend is CSS3</a></dd>\r
-                                               <dd><a href="work.html?view=editor&rimg=VML">Backend is VML</a></dd>\r
-                                               <dd><a href="work.html?view=editor&rimg=ActiveX">Backend is ActiveX</a></dd>\r
-                                               <dt>Balloon test</dt>\r
-                                               <dd><a href="work.html?view=editor&vector=false">Vector Disabled</a></dd>\r
-                                               <dt>ActiveX test</dt>\r
-                                               <dd><a href="work.html?ActiveX=true">ActiveX Enabled</a></dd>\r
-                                               <dd><a href="work.html?ActiveX=false">ActiveX Disabled</a></dd>\r
-                                               <dt>Debug mode</dt>\r
-                                               <dd><a href="work.html?debug=true">Debug Enabled</a></dd>\r
-                                               <dd><a href="work.html?debug=false">Debug Disabled</a></dd>\r
-                                       </dl>\r
-                                       \r
-                                       <h2>XML + XSLT pages</h2>\r
-                                       \r
-                                       <dl class="dl-table clearfix">\r
-                                               <dt>help documents</dt>\r
-                                               <dd><a href="help/jp.xml">jp.xml</a></dd>\r
-                                               <dt>xml test</dt>\r
-                                               <dd><a href="diary/itozyun.xml">itozyn's diary</a></dd>\r
-                                               <dt>other</dt>\r
-                                               <dd><a href="sitemap/sitemap.xml">sitemap.xml</a></dd>\r
-                                       </dl>                           \r
-                               </div>\r
-                       </div>\r
+                               <h2>Boot console in debug mode</h2>\r
+                               <dl class="dl-table clearfix">\r
+                                       <dt>xdomain json</dt>\r
+                                       <dd><a href="work.html?view=2&exjson=false">use same domain json</a></dd>                       \r
+                               </dl>\r
                        \r
-               <!-- comic list -->\r
-                       <div id="cabinet" class="console-page">\r
-                               <div id="cabinet-container" class="finder-container"></div>\r
+                               <h2>Boot editor in debug mode</h2>\r
+                               <dl class="dl-table clearfix">\r
+                                       <dt>General Boot</dt>\r
+                                       <dd><a href="work.html?view=editor">Boot Editor</a></dd>\r
+                                       <dt>Reversible Image test</dt>\r
+                                       <dd><a href="work.html?view=editor&rimg=CSS3">Backend is CSS3</a></dd>\r
+                                       <dd><a href="work.html?view=editor&rimg=VML">Backend is VML</a></dd>\r
+                                       <dd><a href="work.html?view=editor&rimg=ActiveX">Backend is ActiveX</a></dd>\r
+                                       <dt>Balloon test</dt>\r
+                                       <dd><a href="work.html?view=editor&vector=false">Vector Disabled</a></dd>\r
+                                       <dt>ActiveX test</dt>\r
+                                       <dd><a href="work.html?ActiveX=true">ActiveX Enabled</a></dd>\r
+                                       <dd><a href="work.html?ActiveX=false">ActiveX Disabled</a></dd>\r
+                                       <dt>Debug mode</dt>\r
+                                       <dd><a href="work.html?debug=true">Debug Enabled</a></dd>\r
+                                       <dd><a href="work.html?debug=false">Debug Disabled</a></dd>\r
+                               </dl>\r
+                               \r
+                               <h2>XML + XSLT pages</h2>\r
+                               \r
+                               <dl class="dl-table clearfix">\r
+                                       <dt>help documents</dt>\r
+                                       <dd><a href="help/jp.xml">jp.xml</a></dd>\r
+                                       <dt>xml test</dt>\r
+                                       <dd><a href="diary/itozyun.xml">itozyn's diary</a></dd>\r
+                                       <dt>other</dt>\r
+                                       <dd><a href="sitemap/sitemap.xml">sitemap.xml</a></dd>\r
+                               </dl>                           \r
                        </div>\r
+               </div>\r
                        \r
-               <!-- image list -->\r
-                       <div id="gallery" class="console-page"></div>\r
-                       \r
+       <!-- comic list -->\r
+               <div id="cabinet" class="console-page">\r
+                       <div id="cabinet-container" class="finder-container"></div>\r
                </div>\r
                \r
+       <!-- image list -->\r
+               <div id="gallery" class="console-page"></div>\r
+\r
+               \r
        <!-- Editor -->\r
                <div id="editor" class="view-container">\r
                <p id="key-event-log" style="margin-top: 5em;"></p>\r
                        <div id="overlay-shadow"></div>\r
                \r
                <!-- アウトプットコンソール -->\r
-                       <div id="output-console-wrapper">\r
+                       <div id="output-console-wrapper" style="display: none;">\r
                                <textarea id="output-area" readonly></textarea>\r
                        </div>\r
                        \r
                <!-- テキスト エディタ -->\r
-                       <div id="speach-editor-wrapper">\r
+                       <div id="speach-editor-wrapper" style="display: none;">\r
                                <textarea id="speach-editor"></textarea>\r
                                <div id="speach-edit-complete-button" class="button">OK</div>\r
                        </div>\r
 \r
                <!-- 画像グループから画像を選択 -->\r
-                       <div id="image-gruop-wrapper">\r
+                       <div id="image-gruop-wrapper" style="display: none;">\r
                                <div id="image-icon-container"></div>\r
                                <div id="gruop-name-display">Group Name</div>\r
                                <div id="image-gruop-button" class="button">cancel</div>\r
                        </div>\r
+\r
+               <!-- 画像のアップロード-->\r
+                       <div id="upload-console-wrapper" style="display: none;">\r
+                               <div id="upload-console-header">Upload Picture</div>\r
+                               <div id="upload-console">\r
+                                       <div id="uploader"></div>\r
+                                       <div id="upload-console-button-container">\r
+                                               <div id="upload-console-post-button" class="button">upload</div>\r
+                                               <div id="upload-console-cancel-button" class="button">cancel</div>\r
+                                       </div>\r
+                                       <div id="upload-console-progress"></div>                                        \r
+                               </div>\r
+                       </div>\r
+\r
+               <!-- コミックの新規作成・編集・削除 -->\r
+                       <div id="comic-console-wrapper" style="display: none;">\r
+                               <div id="comic-console-header">Create New Comic</div>\r
+                               <div id="comic-console">\r
+                                       <div id="comic-console-title" class="comic-console-line">\r
+                                               <span class="comic-console-label">Title:</span>\r
+                                               <span id="comic-console-title-value" class="comic-console-value editable-value">No Title</span>\r
+                                       </div>\r
+                                       <div id="comic-console-width" class="comic-console-line">\r
+                                               <span class="comic-console-label">Default Width:</span>\r
+                                               <span id="comic-console-width-value" class="comic-console-value editable-value">300</span>\r
+                                       </div>\r
+                                       <div id="comic-console-height" class="comic-console-line">\r
+                                               <span class="comic-console-label">Default Height:</span>\r
+                                               <span id="comic-console-height-value" class="comic-console-value editable-value">200</span>\r
+                                       </div>\r
+                                       <div id="comic-console-visible" class="comic-console-line">\r
+                                               <span class="comic-console-label">Visible:</span>\r
+                                               <span id="comic-console-visible-value" class="comic-console-value editable-value">1</span>\r
+                                       </div>\r
+                                       <div id="comic-console-editable" class="comic-console-line">\r
+                                               <span class="comic-console-label">Editable:</span>\r
+                                               <span id="comic-console-editable-value" class="comic-console-value editable-value">1</span>\r
+                                       </div>\r
+                                       <div id="comic-console-button-container">\r
+                                               <div id="comic-console-post-button" class="button">post(update)</div>\r
+                                               <div id="comic-console-cancel-button" class="button">cancel</div>\r
+                                       </div>\r
+                                       <div id="comic-console-progress"></div>\r
+                               </div>\r
+                       </div>\r
                        \r
                        <div id="overlay-close-button">x</div>\r
                </div>\r