<div id="overlay-shadow"></div>\r
<div id="overlay-close-button">x</div>\r
</div>\r
-\r
- <!-- アウトプットコンソール -->\r
- <div id="output-console-wrapper">\r
- <textarea id="output-area" readonly></textarea>\r
- </div>\r
\r
<!-- テキスト エディタ -->\r
<div id="speach-editor-wrapper">\r
</div>\r
</div>\r
\r
+ <!-- アウトプットコンソール -->\r
+ <div id="output-console-wrapper" class="console-wrapper">\r
+ <div id="output-console-header" class="console-header">Output Console</div>\r
+ <div id="output-console" class="console-inner">\r
+ <div id="output-console-format" class="field">\r
+ <span class="field-label">Format:</span>\r
+ <span id="output-console-format-value" class="output-console-value combobox"></span>\r
+ </div>\r
+ <div id="output-console-option" class="field">\r
+ <span class="field-label">Options:</span>\r
+ <span id="output-console-option-value" class="output-console-value editable-value">absolute-path</span>\r
+ </div> \r
+ <div id="output-console-button-container" class="clearfix">\r
+ <div id="output-console-generate-button" class="button console-submit-button">generate</div>\r
+ <div id="output-console-close-button" class="button console-cancel-button">close</div>\r
+ </div>\r
+ <textarea id="output-area" readonly></textarea>\r
+ </div>\r
+ </div>\r
+\r
<!-- コミックの新規作成・編集・削除 -->\r
<div id="comic-console-wrapper" class="console-wrapper">\r
<div id="comic-console-header" class="console-header">Create New Comic</div>\r
<div id="comic-console" class="console-inner">\r
- <div id="comic-console-title" class="comic-console-line">\r
- <span class="comic-console-label">Title:</span>\r
+ <div id="comic-console-title" class="field">\r
+ <span class="field-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
+ <div id="comic-console-width" class="field">\r
+ <span class="field-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
+ <div id="comic-console-height" class="field">\r
+ <span class="field-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
+ <div id="comic-console-visible" class="field">\r
+ <span class="field-label">Visible:</span>\r
<span id="comic-console-visible-value" class="comic-console-value combobox"></span>\r
</div>\r
- <div id="comic-console-editable" class="comic-console-line">\r
- <span class="comic-console-label">Editable:</span>\r
+ <div id="comic-console-editable" class="field">\r
+ <span class="field-label">Editable:</span>\r
<span id="comic-console-editable-value" class="comic-console-value combobox"></span>\r
</div>\r
<div class="console-button-container">\r
/*\r
* pettanR common.js\r
- * version 0.4.28\r
+ * version 0.4.29\r
* \r
* author: itozyun\r
*/\r
*/\r
var Type = {\r
isObject : function(v) {\r
- return v !== null && Type.isArray(v) === false && typeof v === 'object';\r
+ return v !== null && typeof v === 'object';\r
},\r
isFunction : function(v) {\r
return typeof v === 'function';\r
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
- PETTANR_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
+ location = document.location.pathname,\r
+ deep = location.indexOf( '\/diary\/' ) !== -1 ||\r
+ location.indexOf( '\/test\/' ) !== -1 ||\r
+ location.indexOf( '\/help\/' ) !== -1 ||\r
+ location.indexOf( '\/sitemap\/' ) !== -1 ||\r
+ location.indexOf( '\/wiki\/' ) !== -1;\r
\r
return {\r
PETTANR_ROOT_PATH: PETTANR_ROOT_PATH,\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
- RESOURCE_PICTURE_PATH: ( isLocal === true ? '' : PETTANR_ROOT_PATH) + 'resource_pictures\/',\r
+ RESOURCE_PICTURE_PATH: ( isLocal === true ? ( deep === true ? '..\/' : '' ) : PETTANR_ROOT_PATH ) + 'resource_pictures\/',\r
CREATE_COMIC_JS: isLocal === true ? 'js\/create_new_comic.js' : PETTANR_ROOT_PATH + 'comics\/new.js',\r
CREATE_PANEL_JS: isLocal === true ? 'js\/create_new_panel.js' : PETTANR_ROOT_PATH + 'panels\/new.js',\r
UPLOAD_PICTURE_JS: isLocal === true ? 'js\/upload_picture.js' : PETTANR_ROOT_PATH + 'original_pictures\/new.js',\r
}\r
\r
var AbstractApplication = function(){\r
+ var instance;\r
this.displayName = 'app name';\r
this.ID = 'app id';\r
this.rootElement = null;\r
this.parentElement = null;\r
this.nextSibling = null;\r
this.open = function( _w, _h /*, _option */ ){\r
+ instance = this;\r
if( this.MIN_WIDTH > _w || this.MIN_HEIGHT > _h ){\r
if( Type.isHTMLElement( this.rootElement ) === true ){\r
// 小さすぎる!、と表示\r
// overrride\r
return true;\r
} // false の場合、close の拒否 \r
+ this.addEventListener = function(){\r
+ \r
+ }\r
}\r
AbstractApplication.prototype = new AbstractBasicPane();\r
\r
log.html( [ e.keyCode, e.shiftKey, e.ctrlKey, e.altKey, e.type].join( ','));\r
//keyOperationChatcher.val( '');\r
var cancel = false,\r
- callback = e.type,\r
+ type = e.type,\r
key = e.keyCode,\r
overlayEnabled = pettanr.overlay.visible === true,\r
currentViewID = overlayEnabled === true ? pettanr.overlay.currentID : pettanr.view.currentID;\r
- if( callback === 'keypress') callback = 'keydown';\r
- if( pettanr.form.keyEventRellay( e ) === false){\r
+ if( type === 'keypress') type = 'keydown';\r
+ if( pettanr.form.keyEventRellay( e ) === false ){\r
var shift = e.shiftKey,\r
ctrl = e.ctrlKey,\r
l = KEYEVENT_ARRAY.length,\r
d;\r
if( key === 16 || e.shiftKey === true){\r
- shiftEnabled = callback !== 'keyup';\r
+ shiftEnabled = type !== 'keyup';\r
}\r
if( key === 17 || e.ctrlKey === true){\r
- ctrlEnabled = callback !== 'keyup';\r
+ ctrlEnabled = type !== 'keyup';\r
}\r
\r
for( var i=0; i<l; i++){\r
( d.shift === undefined || d.shift === shift) &&\r
( d.ctrl === undefined || d.ctrl === ctrl)\r
){\r
- ( function( func, e){\r
- func && setTimeout( function(){\r
- func( e);\r
- func = e = null;\r
- }, 0);\r
- })( d[callback], e);\r
+ Type.isFunction( d[ type ]) === true && new asyncCallback( d[ type ], e );\r
cancel = true;\r
}\r
}\r
}\r
if( cancel === true || key === 18 || key === 9 || key === 27 || e.altKey === true){ // 13.enter 18.esc 9.tab 27.esc || ( key === 13 && overlayEnabled === false)\r
e.preventDefault();\r
- e.keyCode = 0;\r
+ e.keyCode = 0;\r
e.cancelBubble = true;\r
- e.returnValue = false;\r
+ e.returnValue = false;\r
return false;\r
}\r
}\r
+ function asyncCallback( func, e ){\r
+ window.setTimeout( _callback, 0 );\r
+ function _callback(){\r
+ func( e );\r
+ func = e = null;\r
+ }\r
+ } \r
\r
var keyPress = pettanr.ua.isIE === true && pettanr.ua.ieRenderingVersion < 8 ? ( function( e){\r
var key = e.keyCode;\r
.mouseenter( function(){\r
jqWindow.focus();\r
});\r
- keyPress && keyOperationChatcher.keypress( keyPress );\r
+ keyPress !== null && keyOperationChatcher.keypress( keyPress );\r
\r
delete pettanr.key.init;\r
},\r
}\r
\r
var FileInputClass = function( WRAPPER_ELM, ON_UPDATE_FUNCTION, GROUP_ID, validater, elmFileInput ){\r
- validater = typeof validater === 'function' ? validater : null;\r
+ validater = Type.isFunction( validater ) === true ? validater : null;\r
\r
var elmFilePath = pettanr.util.getElementsByClassName( WRAPPER_ELM, 'file-path')[ 0],\r
value,\r
var exist = false,\r
option = null, _option,\r
_index;\r
+ _value = _value || displayValue;\r
for( var i = 0, l = optionList.length; i < l; ++i ){\r
if( _value === optionList[ i ].value ){\r
option = optionList[ i ];\r
}\r
\r
function tabShift( _groupID, _index, _way ){\r
+ // currentApplication の確認\r
+ //if( _applicationID === ( pettanr.overlay.visible === true ? pettanr.overlay.currentID : pettanr.view.currentID )){\r
+ // return;\r
+ //};\r
var GROUP_ARRAY = FORM_GROUP_TABLE[ _groupID ] || [],\r
l = GROUP_ARRAY.length,\r
i = _index + _way,\r
\r
var keyCode = e.keyCode;\r
var _groupID = currentItem.groupID,\r
- _index = pettanr.util.getIndex( FORM_GROUP_TABLE[ _groupID ], currentItem );\r
+ _index = pettanr.util.getIndex( FORM_GROUP_TABLE[ _groupID ], currentItem );\r
if( currentItem instanceof ComboBoxClass ) {\r
if( 37 <= keyCode && keyCode <= 40 ){ // ↑38 ←37 →39 ↓40\r
OptionControl.change( keyCode === 40 );\r
createRadio: function(){\r
\r
},\r
+ createSlider: function(){\r
+ \r
+ },\r
onWindowResize: function( w, h ){\r
windowW = w;\r
windowH = h;\r
/*\r
* pettanR work.js\r
- * version 0.4.28\r
+ * version 0.4.29\r
* \r
* author:\r
* itozyun\r
var SAVE_CONTROL = ( function(){\r
var SAVE = MENU_BAR_CONTROL.QUIT.createSelection( 'save', 'ctrl + S', quit, false),\r
SAVE_AND_QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'save & quit', null, quit, false, false, true),\r
- SAVE_AS_HTML = MENU_BAR_CONTROL.QUIT.createSelection( 'get as html', null, outputAsHtml, true, false, true),\r
- SAVE_AS_JSON_STRING = MENU_BAR_CONTROL.QUIT.createSelection( 'get JsonStr', null, outputAsJsonString, true, false, true),\r
+ EXPORT = MENU_BAR_CONTROL.QUIT.createSelection( 'export', null, onExport, true, false, true),\r
QUIT = MENU_BAR_CONTROL.QUIT.createSelection( 'quit', null, quit, true, true),\r
updated = false;\r
\r
pettanr.editor.shutdown();\r
}\r
\r
- function outputAsHtml(){\r
+ function onExport(){\r
pettanr.outputConsole.bootInOverlay(\r
- pettanr.outputConsole.HTML,\r
comicID, panelID, panelTimming,\r
PANEL_CONTROL.w(), PANEL_CONTROL.h(),\r
- 1, // border, BackgroundImage\r
- PANEL_ELEMENT_ARRAY\r
- );\r
- }\r
- function outputAsJsonString(){\r
- pettanr.outputConsole.bootInOverlay(\r
- pettanr.outputConsole.JSON,\r
- comicID, panelID, panelTimming,\r
- PANEL_CONTROL.w(), PANEL_CONTROL.h(),\r
- 1, // border, BackgroundImage\r
+ 2, // border, BackgroundImage\r
PANEL_ELEMENT_ARRAY\r
);\r
}\r
this.init = function(){\r
jqWrap = $( '#comic-console-wrapper').hide();\r
\r
- inputTitle = pettanr.form.createInputText( document.getElementById( 'comic-console-title'), null, ID);\r
- inputW = pettanr.form.createInputText( document.getElementById( 'comic-console-width'), null, ID);\r
- inputH = pettanr.form.createInputText( document.getElementById( 'comic-console-height'), null, ID);\r
+ inputTitle = pettanr.form.createInputText( document.getElementById( 'comic-console-title'), null, ID);\r
+ inputW = pettanr.form.createInputText( document.getElementById( 'comic-console-width'), null, ID);\r
+ inputH = pettanr.form.createInputText( document.getElementById( 'comic-console-height'), null, ID);\r
comboboxVisible = pettanr.form.createCombobox( document.getElementById( 'comic-console-visible'), null, ID);\r
comboboxEditable = pettanr.form.createCombobox( document.getElementById( 'comic-console-editable'), null, ID);\r
- buttonSubmit = pettanr.form.createButton( document.getElementById( 'comic-console-post-button'), clickOK, ID);\r
- buttonCancel = pettanr.form.createButton( document.getElementById( 'comic-console-cancel-button'), clickCancel, ID);\r
+ buttonSubmit = pettanr.form.createButton( document.getElementById( 'comic-console-post-button'), clickOK, ID);\r
+ buttonCancel = pettanr.form.createButton( document.getElementById( 'comic-console-cancel-button'), clickCancel, ID);\r
\r
delete instance.init;\r
}\r
});\r
\r
pettanr.outputConsole = pettanr.view.registerApplication( function(){\r
+ var FORMAT_LIST = [ 'json[POST]', 'json[GET]', 'XML', 'HTML', 'XHTML', 'MT export', 'Blogger ATOM' ];\r
var jqWrap, jqOutputArea,\r
+ comboboxFormat, inputOption,\r
+ buttonGenerate, buttonClose,\r
ID = 'outputConsole',\r
timing = 0,\r
+ comicID, panelID, panelTimming, panelW, panelH, borderSize, panelElementArray,\r
instance = this;\r
//pettanr.key.addKeyDownEvent( ID, 69, false, false, clickOK);\r
\r
pettanr.outputConsole.shutdown();\r
}\r
\r
- function getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l ){\r
+ function getPanelElementByTiming(){\r
+ var l = panelElementArray.length;\r
while( timing < l * 2){\r
for(var i=0; i<l; ++i){\r
- if( timing === PANEL_ELEMENT_ARRAY[ i ].timing ){\r
+ if( timing === panelElementArray[ i ].timing ){\r
++timing;\r
- return PANEL_ELEMENT_ARRAY[ i ];\r
+ return panelElementArray[ i ];\r
}\r
}\r
++timing;\r
return null;\r
}\r
\r
- function getAsHtmlString( isAbsoluteUrl, isXHTML, panelW, panelH, border, PANEL_ELEMENT_ARRAY ){\r
+ function getAsHtmlString( isAbsoluteUrl, isXHTML ){\r
timing = 0;\r
\r
var HTML_ARRAY = [],\r
- l = PANEL_ELEMENT_ARRAY.length,\r
+ l = panelElementArray.length,\r
_panelElement;\r
\r
while( HTML_ARRAY.length < l ){\r
- _panelElement = getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l );\r
+ _panelElement = getPanelElementByTiming();\r
if( _panelElement === null) break;\r
HTML_ARRAY.push( panelElementToHtml( _panelElement, isAbsoluteUrl, isXHTML ));\r
}\r
].join( ''); \r
}\r
}\r
+ \r
+ function getJsonGetString(){\r
+ timing = 0;\r
+ \r
+ var JSON_STRING_ARRAY = [],\r
+ ELEMENT_ARRAY = [],\r
+ l = panelElementArray.length,\r
+ cr = pettanr.LINE_FEED_CODE_TEXTAREA,\r
+ _panelElement;\r
\r
- function getAsJsonString( comicID, panelID, panelTimming, panelW, panelH, border, PANEL_ELEMENT_ARRAY ){\r
+ while( ELEMENT_ARRAY.length <= l){\r
+ _panelElement = getPanelElementByTiming();\r
+ if( _panelElement === null ) break;\r
+ \r
+ ELEMENT_ARRAY.push( _panelElement.type === 0 ? imageToJson( _panelElement ) : balloonToJson( _panelElement ));\r
+ }\r
+ return [\r
+ '{', cr,\r
+ '"panel": {', cr,\r
+ '"id": ', panelID, ',', cr,\r
+ '"border": ', borderSize, ',', cr,\r
+ '"comic_id": ', comicID, ',', cr,\r
+ '"resource_picture_id": 1,', cr,\r
+ '"x": ', 0, ',', cr,\r
+ '"y": ', 0, ',', cr,\r
+ '"z": ', 0, ',', cr,\r
+ panelTimming !== -1 ? ( '"t": ' + panelTimming + ',' + cr ) : '',\r
+ '"width": ', panelW, ',', cr,\r
+ '"height": ', panelH, ',', cr,\r
+ '"panel_elements": {', cr,\r
+ ELEMENT_ARRAY.join( ',' + cr ), cr,\r
+ '},', cr,\r
+ '}', cr,\r
+ '}'\r
+ ].join( '' );\r
+ }\r
+ \r
+ function getJsonPostString(){\r
timing = 0;\r
\r
var JSON_STRING_ARRAY = [],\r
IMAGE_ARRAY = [],\r
BALLOON_ARRAY = [],\r
- l = PANEL_ELEMENT_ARRAY.length,\r
+ l = panelElementArray.length,\r
_panelElement,\r
cr = pettanr.LINE_FEED_CODE_TEXTAREA;\r
\r
while( IMAGE_ARRAY.length + BALLOON_ARRAY.length <= l){\r
- _panelElement = getPanelElementByTiming( PANEL_ELEMENT_ARRAY, l );\r
+ _panelElement = getPanelElementByTiming();\r
if( _panelElement === null) break;\r
_panelElement.type === 0 ? \r
IMAGE_ARRAY.push( imageToJson( _panelElement )) :\r
'{', cr,\r
'"panel": {', cr,\r
'"id": ', panelID, ',', cr,\r
- '"border": ', border, ',', cr,\r
+ '"border": ', borderSize, ',', cr,\r
'"comic_id": ', comicID, ',', cr,\r
'"resource_picture_id": 1,', cr,\r
'"x": ', 0, ',', cr,\r
'}'\r
].join( '');\r
}\r
-\r
-\r
+ \r
+ function clickGenerate(){\r
+ var i = comboboxFormat.selectIndex(),\r
+ text = 'sorry...';\r
+ if( i === 0 ){\r
+ text = getJsonPostString();\r
+ } else\r
+ if( i === 1 ){\r
+ text = getJsonGetString();\r
+ } else\r
+ if( i === 3 ){\r
+ text = getAsHtmlString( false, false );\r
+ } else {\r
+ \r
+ }\r
+ jqOutputArea.val( text );\r
+ }\r
+ function clickClose(){\r
+ pettanr.outputConsole.shutdown();\r
+ return false;\r
+ }\r
+ \r
/* grobal method */\r
this.rootElement = document.getElementById( 'output-console-wrapper' );\r
this.displayName = ID;\r
this.init = function(){\r
jqWrap = $( '#output-console-wrapper').hide();\r
jqOutputArea = $( '#output-area');\r
+ \r
+ comboboxFormat = pettanr.form.createCombobox( document.getElementById( 'output-console-format' ), null, ID );\r
+ for( var i=0, l = FORMAT_LIST.length; i<l; ++i ){\r
+ comboboxFormat.createOption( FORMAT_LIST[ i ], null, i === 0 );\r
+ }\r
+ inputOption = pettanr.form.createInputText( document.getElementById( 'output-console-option' ), null, ID );\r
+ buttonGenerate = pettanr.form.createButton( document.getElementById( 'output-console-generate-button' ), clickGenerate, ID );\r
+ buttonClose = pettanr.form.createButton( document.getElementById( 'output-console-close-button' ), clickClose, ID );\r
delete instance.init;\r
}\r
- this.onOpen = function( _w, _h, _dataType, _comicID, _panelID, _panelTimming, _panelW, _panelH, _borderSize, _panelElements ){\r
+ this.onOpen = function( _w, _h, _comicID, _panelID, _panelTimming, _panelW, _panelH, _borderSize, _panelElementArray ){\r
instance.init && instance.init();\r
\r
jqWrap.show();\r
instance.onPaneResize( _w, _h );\r
var text;\r
- if( _dataType === pettanr.outputConsole.JSON ){\r
- text = getAsJsonString( _comicID, _panelID, _panelTimming, _panelW, _panelH, _borderSize, _panelElements );\r
- } else {\r
- text = getAsHtmlString( false, false, _panelW, _panelH, _borderSize, _panelElements );\r
- }\r
- jqOutputArea.val( text ).focus();\r
+ \r
+ comicID = _comicID;\r
+ panelID = _panelID;\r
+ panelTimming = _panelTimming;\r
+ panelW = _panelW;\r
+ panelH = _panelH;\r
+ borderSize = _borderSize;\r
+ panelElementArray = _panelElementArray;\r
+ \r
+ clickGenerate();\r
}\r
this.onPaneResize = function( _w, _h){\r
jqWrap.css(\r
jqOutputArea.val('');\r
}\r
});\r
-pettanr.outputConsole.JSON = 0;\r
-pettanr.outputConsole.HTML = 1;\r
-pettanr.outputConsole.XML = 2;\r
-pettanr.outputConsole.SHORT_URL = 3;\r
-pettanr.outputConsole.MOVERBLE_TYPE = 4;\r
-pettanr.outputConsole.BLOGGER = 5;\r