/*\r
* pettanR common.js\r
- * version 0.4.7\r
+ * version 0.4.8\r
* \r
* author: itozyun\r
*/\r
\r
+/*\r
+ * http://pettanr.sourceforge.jp/test/type.html
+ */\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
+ /*\r
+ isElementCollection : function(v) {\r
+ return (Object.prototype.toString.call(v) === "[object HTMLCollection]");\r
+ },\r
+ */\r
+ isNull : function(v) {\r
+ return v === null;\r
+ },\r
+ isUndefined : function(v) {\r
+ return typeof v === 'undefined';\r
+ }\r
+ };\r
+\r
+\r
var pettanr = ( function(){\r
var FUNCTION_ARRAY = [],\r
URL = document.location.href.split( '#')[ 0],\r
IS_DEBUG = typeof URL_PARAMS.debug === 'boolean' ? URL_PARAMS.debug : IS_LOCAL === true,\r
jqWindow , jqDocument , jqBody;\r
return {\r
- version: '0.4.6',\r
+ version: '0.4.8',\r
init: function(){\r
jqWindow = $( window);\r
jqDocument = $( document);\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
+\r
+ if( ua.isIE){\r
+ el.onreadystatechange = detect;\r
+ } else {\r
+ // iron(chrome) の場合、append の前に onload を指定しないと onload が呼ばれない\r
+ el.onload = onLoad;\r
+ //setTimeout( asynkCallback, 0 );\r
+ }\r
+\r
document.body.appendChild( el);\r
el.id = el.name = id;\r
el.setAttribute( 'name', id);\r
\r
window[id] = el;\r
\r
- if( ua.isIE){\r
- el.onreadystatechange = detect;\r
- } else {\r
- el.onload = onLoad;\r
- }\r
function detect(){\r
if ( this.readyState === "complete") {\r
this.onreadystatechange = new Function();\r
this.onreadystatechange = null;\r
setTimeout( asynkCallback, 0 );\r
}\r
- } \r
+ }\r
function onLoad(){\r
el.onload = null;\r
setTimeout( asynkCallback, 0 );\r
return {\r
PETTANR_ROOT_PATH: PETTANR_ROOT_PATH,\r
URL_ORIGINAL_PICTURES_JSON: ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'original_pictures.json',\r
+ URL_RESOURCE_PICTURES_JSON: ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'resource_pictures.json',\r
URL_COMICS_JSON: ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'comics.json',\r
URL_PANELS_JSON: ( isLocal === true ? 'json\/' : PETTANR_ROOT_PATH) + 'panels.json',\r
NS_PETTANR_COMIC: 'pettanr-comic',\r
}\r
})();\r
\r
-\r
pettanr.view = ( function(){\r
/* create iframe overlay for user console */\r
var location = document.location.pathname,\r
/*
* pettanR system.js
- * version 0.4.7
+ * version 0.4.8
*
* author:
* itozyun
},
getChildFileLength: function(){
var children = FILE_CONTROLER.getChildren( this);
- return children !== null && typeof children.length === 'number' ? children.length : 0;
+ return Type.isArray( children ) === true ? children.length : -1;
},
getChildFileIndex: function( _FILEorFILEDATA){
var children = FILE_CONTROLER.getChildren( this);
var l = ICON_ARRAY.length;
if( i < l){
var _file = tree.getCurrentFile().getChildFileByIndex( i);
- if( _file !== null && ( _file.getChildFileLength() > 0 || _file.getType() === pettanr.file.FILE_TYPE.FOLDER)){
+ if( _file !== null && ( _file.getChildFileLength() !== -1 || _file.getType() === pettanr.file.FILE_TYPE.FOLDER)){
tree.down( i);
draw();
}
getSeqentialFiles: function( _file){
var _data = FileAPI.getFileData( _file),
_json = _data !== null ? _data.json : null;
+ if( _json === true && _data.type === pettanr.driver.FILE_TYPE.COMIC ){
+ _json = [ pettanr.CONST.PETTANR_ROOT_PATH, 'comics\/', _data.id, '.json\/play\/' ].join( '' );
+ }
if( typeof _json === 'string'){
FileAPI.getJson( _file, _json, onLoadJson, onErrorJson);
_data.state = pettanr.file.FILE_STATE.LOADING;
- delete _data.json;
+ _data.json = null;
+ return;
}
},
getName: function( _file){
type: pettanr.file.FILE_TYPE.FOLDER,
children: [],
driver: Driver,
- json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON
+ json: pettanr.CONST.URL_RESOURCE_PICTURES_JSON
},
FILE_DATA_MY_COMICS_ROOT = {
name: 'My Comics',
- type: pettanr.file.FILE_TYPE.FOLDER,
- children: []
+ type: pettanr.file.FILE_TYPE.AUTHOR,
+ children: [],
+ driver: Driver
},
FILE_DATA_MY_PICTURES_ROOT = {
name: 'My Pictures',
- type: pettanr.file.FILE_TYPE.FOLDER,
- children: []
+ type: pettanr.file.FILE_TYPE.ARTIST,
+ children: [],
+ driver: Driver,
+ json: pettanr.CONST.URL_ORIGINAL_PICTURES_JSON
},
FILE_DATA_AUTHOR_ROOT = {
name: 'Authors',
FILE_DATA_PICTURE_ROOT.children.push( FILE_DATA_MY_PICTURES_ROOT, FILE_DATA_ARTIST_ROOT);
FileAPI.createFolderUnderRoot( FILE_DATA_SERVICE_ROOT);
-
+
function onLoadJson( _file, _json){
var _access = FileAPI.getFileDataAccess( _file),
_data = _access !== null ? _access.DATA : null,
var _type, _array,
_id = _data.id,
i, l;
+ if( _parent.type === pettanr.driver.FILE_TYPE.COMIC ){
+ _data.type = pettanr.driver.FILE_TYPE.PANEL;
+ _array = PANEL_ARRAY;
+ } else
if( _parent === FILE_DATA_COMICS_ROOT){
_data.type = pettanr.driver.FILE_TYPE.COMIC;
_array = COMIC_ARRAY;
_data.type = pettanr.driver.FILE_TYPE.PANEL;
_array = PANEL_ARRAY;
} else
- if( _parent === FILE_DATA_PICTURE_ROOT){
+ if( _parent === FILE_DATA_PICTURE_ROOT || _parent === FILE_DATA_MY_PICTURES_ROOT ){
_data.type = pettanr.driver.FILE_TYPE.PICTURE;
_array = RESOURCE_PICTURE_ARRAY;
_array[ _id ] = _data;
}
}
- if( _parent === FILE_DATA_COMICS_ROOT){
+ if( _parent.type === pettanr.driver.FILE_TYPE.COMIC ){
+ var _panels = _data.panels,
+ _panel;
+ if( _panels && Type.isArray( _panels ) === true){
+ if( Type.isArray( _data.children ) === false){
+ _data.children = [];
+ };
+ for( i=0, l=_panels.length; i<l; ++i){
+ _panel = buildFileData( _panels[ i ], FILE_DATA_PANELS_ROOT );
+ /*
+ * 間違い! t 順に格納
+ */
+ _data.children.push( _panel );
+ }
+ delete _data.panels;
+ }
+ } else
+ if( _parent === FILE_DATA_COMICS_ROOT ){
if( _data.author ){
var _author = getFolderData( _data, 'author', FILE_DATA_AUTHOR_ROOT);
pettanr.util.getIndex( _author.children, _data) === -1 && _author.children.push( _data);
_author.id === MyAuthorID && pettanr.util.getIndex( FILE_DATA_MY_COMICS_ROOT.children, _data) === -1 && FILE_DATA_MY_COMICS_ROOT.children.push( _data );
}
+ _data.json = true;
} else
if( _parent === FILE_DATA_PANELS_ROOT){
if( _data.comic && _data.author){
}
// picture data をファイルに取り出し
var _elements = _data.panel_elements || [],
- _elm;
- for(var i=0, l=_elements.length; i<l; ++i){
+ _elm, _rpicID;
+ for( i=0, l=_elements.length; i<l; ++i){
_elm = _elements[ i];
if( _elm.resource_picture){
_elm.resource_picture = buildFileData( _elm.resource_picture, FILE_DATA_PICTURE_ROOT); // 上記参照切れに備えてここで上書き
}
- if( _elm.resource_picture_id && RESOURCE_PICTURE_ARRAY[ _elm.resource_picture_id]){
- _elm.resource_picture = RESOURCE_PICTURE_ARRAY[ _elm.resource_picture_id];
+ _rpicID = _elm.resource_picture_id - 1;
+ if( _rpicID && RESOURCE_PICTURE_ARRAY[ _rpicID ]){
+ _elm.resource_picture = RESOURCE_PICTURE_ARRAY[ _rpicID ];
}
}
} else
- if( _parent === FILE_DATA_PICTURE_ROOT){
+ if( _data.type = pettanr.driver.FILE_TYPE.PICTURE ){
if( _data.artist){
var _pictureList = getFolderData( _data, 'artist', FILE_DATA_ARTIST_ROOT);
pettanr.util.getIndex( _pictureList.children, _data) === -1 && _pictureList.children.push( _data);
/*\r
* pettanR work.js\r
- * version 0.4.7\r
+ * version 0.4.8\r
* \r
* author:\r
* itozyun\r
//pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
\r
function clickOK(){\r
- if( !elmForm) return false;\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
// validate\r
isUploading = true;\r
- pettanr.util.createIframe( 'targetFrameCreateComic', copyAndSubmit);\r
elmProgress.innerHTML = '■';\r
+ copyAndSubmit();\r
}\r
\r
- function copyAndSubmit( _iframe){\r
- elmUploader.appendChild( _iframe );\r
- elmIframe = _iframe;\r
- elmForm.target = elmIframe.name;\r
- \r
+ function copyAndSubmit(){\r
var _inputList = elmForm.getElementsByTagName( 'input' ),\r
_input, _name;\r
for( var i=0, l= _inputList.length; i<l; ++i){\r
if( elmForm){\r
window.clearInterval( timer);\r
timer = null;\r
- copyAndSubmit();\r
+ pettanr.util.createIframe( 'targetFrameCreateComic', onCreateIframe );\r
}\r
}\r
+ function onCreateIframe( _iframe ){\r
+ elmUploader.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ }\r
+ \r
return {\r
init: function(){\r
this.jqWrap = jqWrap = $( '#comic-console-wrapper').hide();\r
* upload ボタンが押されたらまず iframe をつくる.
*/\r
function clickOK(){\r
- if( !elmForm || elmFile.value.length === 0) return false;\r
- pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
+ if( !elmForm || !elmIframe || isUploading === true ) return false;\r
+ if( elmFile.value.length === 0) return false;\r
elmProgress.innerHTML = 'uploading.';\r
isUploading = true;\r
+ submit();\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
+ function submit(){\r
try {\r
elmForm.submit();\r
} catch( e){\r
}\r
\r
if( pettanr.ua.isIE){\r
- _iframe.onreadystatechange = detectIframe;\r
+ elmIframe.onreadystatechange = detectIframe;\r
} else {\r
- _iframe.onload = onIframeUpdate;\r
+ elmIframe.onload = onLoad;\r
}\r
- elmIframe = _iframe;\r
elmProgress.innerHTML = 'uploading..';\r
}\r
/*\r
if ( elmIframe.readyState === 'complete') {\r
elmIframe.onreadystatechange = new Function();\r
elmIframe.onreadystatechange = null;\r
- onIframeUpdate();\r
+ onLoad();\r
}\r
}\r
- function onIframeUpdate(){\r
+ function onLoad(){\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
window.clearInterval( timer);\r
timer = null;\r
+ pettanr.util.createIframe( TARGET_FRAME_NAME, onCreateIframe);\r
}\r
}\r
+ function onCreateIframe( _iframe ){\r
+ elmContainer.appendChild( _iframe );\r
+ elmIframe = _iframe;\r
+ elmForm.target = _iframe.name;\r
+ }\r
/*\r
*
*/\r
},\r
onClose: function(){\r
elmForm !== null && $( elmContainer.children ).remove();\r
- elmForm = elmFile = null;\r
+ elmForm = elmFile = elmIframe = null;\r
isUploading = false;\r
\r
if( elmScript !== null ){\r