diff --git a/ChangeLog b/ChangeLog index cf2cbab1..50e2433f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012.03.*, Version 0.2.0 + +* Added alerting about errors. + +* Removed addListener for DOM. + + 2012.03.01, Version 0.1.9 * Changed the way of getting github application id diff --git a/json/config.json b/json/config.json index 0298176d..1a9077d5 100644 --- a/json/config.json +++ b/json/config.json @@ -2,12 +2,12 @@ "api_url" : "/api/v1", "appcache" : false, "minification" : { - "js" : true, + "js" : false, "css" : true, "html" : true, "img" : true }, - "cache" : true, + "cache" : false, "logs" : false, "show_keys_panel" : true, "server" : true, diff --git a/lib/client.js b/lib/client.js index 36ae8b58..4104d7c7 100644 --- a/lib/client.js +++ b/lib/client.js @@ -286,7 +286,7 @@ function initKeysPanel(pCallBack){ CloudCmd.Editor, /* f4 */ null, /* f5 */ null, /* f6 */ - null, /* f7 */ + DOM.promptNewFolder, /* f7 */ DOM.promptDeleteCurrent,/* f8 */ ]; @@ -470,49 +470,52 @@ CloudCmd._changeLinks = function(pPanelID){ DOM.setCurrentFile(pElement); }, - lUrl = CloudCmd.HOST; + lUrl = CloudCmd.HOST, + lLoadDirOnce = CloudCmd._loadDir(); - var lLoadDirOnce = CloudCmd._loadDir(), - /* номер ссылки иконки обновления страницы */ - lREFRESHICON = 0; - for(var i = 0, n = a.length; i < n ; i++){ - /* убираем адрес хоста*/ - var ai = a[i], - link = ai.href.replace(lUrl, ''), - lNEADREFRESH = i === lREFRESHICON, - lLoadDir = CloudCmd._loadDir(link, lNEADREFRESH); + (function(a){ + var a0 = a[0], + lParent = a0.parentElement, + lNEEDREFRESH = true, + lLink = Util.removeStr(a0.href, lUrl); + + CloudCmd.refresh = CloudCmd._loadDir(lLink, lNEEDREFRESH); /* ставим загрузку гифа на клик*/ - if(lNEADREFRESH) - DOM.addClickListener( lLoadDir, ai.parentElement ); + DOM.addClickListener( CloudCmd.refresh, lParent ); + })(a); + + /* start from 1 cous 0 is a path and it's setted up */ + for(var i = 1, n = a.length; i < n ; i++){ + /* убираем адрес хоста*/ + var ai = a[i], + lLink = Util.removeStr(ai.href, lUrl), + lLoadDir = CloudCmd._loadDir(lLink), + /* устанавливаем обработчики на строку + * на двойное нажатие на левую кнопку мышки */ + lLi = ai.parentElement.parentElement; + + /* if we in path - set click event */ + if (lLi.className === 'path') + DOM.addClickListener( lLoadDir, ai ); + else { + DOM.addClickListener( DOM.preventDefault, lLi); + DOM.addListener('mousedown', lSetCurrentFile_f, lLi); + DOM.addListener('dragstart', lOnDragStart_f, ai); + /* if right button clicked menu will + * loads and shows + */ + DOM.addListener('contextmenu', lOnContextMenu_f, lLi); - /* устанавливаем обработчики на строку - * на двойное нажатие на левую кнопку мышки */ - else{ - var lLi = ai.parentElement.parentElement; - - /* if we in path changing onclick events */ - if (lLi.className === 'path') - DOM.addClickListener( lLoadDir, ai ); - else { - DOM.addClickListener( DOM.preventDefault, lLi); - DOM.addListener('mousedown', lSetCurrentFile_f, lLi); - DOM.addListener('dragstart', lOnDragStart_f, ai); - /* if right button clicked menu will - * loads and shows - */ - DOM.addListener('contextmenu', lOnContextMenu_f, lLi); - - /* если ссылка на папку, а не файл */ - if(ai.target !== '_blank'){ - DOM.addListener('dblclick', lLoadDirOnce, lLi); - DOM.addListener('touchend', lLoadDirOnce, lLi); - } - - lLi.id = (ai.title ? ai.title : ai.textContent) + - '(' + pPanelID + ')'; + /* если ссылка на папку, а не файл */ + if(ai.target !== '_blank'){ + DOM.addListener('dblclick', lLoadDirOnce, lLi); + DOM.addListener('touchend', lLoadDirOnce, lLi); } - } + + lLi.id = (ai.title ? ai.title : ai.textContent) + + '(' + pPanelID + ')'; + } } }; diff --git a/lib/client/dom.js b/lib/client/dom.js index c79407de..9828c980 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -10,7 +10,6 @@ var CloudCommander, Util, /* private members */ var /* название css-класа текущего файла*/ CURRENT_FILE = 'current-file', - Listeners = [], XMLHTTP, Title, @@ -115,18 +114,6 @@ var CloudCommander, Util, DOM.RESTfull = new RESTfull(); - function removeListenerFromList(pElement){ - var lRet; - - for(var i = 0, n = Listeners.length; i < n; i++){ - if(Listeners[i].element === pElement){ - Listeners[i] = null; - break; - } - } - - return lRet; - } /** * private function thet unset currentfile @@ -184,18 +171,12 @@ var CloudCommander, Util, var lRet = this, lElement = (pElement || window); - if( lElement.addEventListener){ + if( lElement.addEventListener) lElement.addEventListener( pType, pListener, pUseCapture ); - - Listeners.push({ - element : lElement, - callback: pListener - }); - } return lRet; }; @@ -275,23 +256,6 @@ var CloudCommander, Util, return DOM.addListener('error', pListener, pElement, pUseCapture); }; - /** - * getListener for element - * - * @param pElement - */ - DOM.getListener = function(pElement){ - var lRet; - - for(var i = 0, n = Listeners.length; i < n; i++){ - if(Listeners[i].element === pElement){ - lRet = Listeners[i].callback; - break; - } - } - - return lRet; - }; /** * load file countent thrue ajax @@ -438,6 +402,24 @@ var CloudCommander, Util, DOM.Cache = new DOM.Cache(); + /** + * create new folder + * + * @pCurrentFile + */ + DOM.promptNewFolder = function(){ + var lName = DOM.getCurrentName(), + lDir = DOM.getCurrentDirPath(); + + if(lName === '..') + lName = ''; + + lName = prompt("New directory", lName); + + if(lName) + DOM.RESTfull.save(lDir + lName + '?dir', null, CloudCommander.refresh); + }; + /** * delete currentfile, prompt before it * @@ -912,6 +894,7 @@ var CloudCommander, Util, DOM.hide(lLoadingImage); Util.log(lText); + alert(lText); } }; diff --git a/lib/client/editor/_codemirror.js b/lib/client/editor/_codemirror.js index 6739c6d6..a180a810 100644 --- a/lib/client/editor/_codemirror.js +++ b/lib/client/editor/_codemirror.js @@ -1,12 +1,12 @@ -var CloudCommander, Util, DOM, CloudFunc, CodeMirror; +var CloudCommander, Util, DOM, CodeMirror; /* object contains editors CodeMirror */ - (function(CloudCmd, Util, DOM, CloudFunc){ + (function(CloudCmd, Util, DOM){ 'use strict'; var KeyBinding = CloudCommander.KeyBinding, - CodeMirrorEditor = {}, + CodeMirrorEditor = {}, FM, - CodeMirrorElement, + CodeMirrorElement, CodeMirrorLoaded = false, /* indicator says CodeMirror still loads */ Loading = false, @@ -52,9 +52,10 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror; */ function initCodeMirror(pParams){ if(!FM) - FM = DOM.getFM(); + FM = DOM.getFM(); - var lCSS = setCSS(); + var lCSS = setCSS(), + lPath = DOM.getCurrentPath(); CodeMirrorElement = DOM.anyload({ name : 'div', @@ -78,7 +79,7 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror; DOM.remove(lCSS, document.head); }, 'Ctrl-S': function(){ - DOM.RESTfull.save(DOM.getCurrentPath(), lEditor.getValue()); + DOM.RESTfull.save(lPath, lEditor.getValue()); } }, readOnly : ReadOnly @@ -211,4 +212,4 @@ var CloudCommander, Util, DOM, CloudFunc, CodeMirror; CloudCmd.Editor.CodeMirror = CodeMirrorEditor; -})(CloudCommander, Util, DOM, CloudFunc); \ No newline at end of file +})(CloudCommander, Util, DOM); \ No newline at end of file diff --git a/lib/client/keyBinding.js b/lib/client/keyBinding.js index 4ef0d5c2..3b1504b8 100644 --- a/lib/client/keyBinding.js +++ b/lib/client/keyBinding.js @@ -34,6 +34,7 @@ var CloudCommander, Util, DOM; F2 : 113, F3 : 114, F4 : 115, + F7 : 118, F10 : 121, TRA : 192 /* Typewritten Reverse Apostrophe (`) */ @@ -119,34 +120,39 @@ var CloudCommander, Util, DOM; else DOM.promptDeleteCurrent(lCurrentFile); } - else if(lKeyCode === KEY.F1){ - DOM.preventDefault(pEvent); - } - else if(lKeyCode === KEY.F2) - DOM.renameCurrentFile(lCurrentFile); - /* if f3 or shift+f3 or alt+f3 pressed */ - else if(lKeyCode === KEY.F3){ - var lEditor = CloudCmd[pEvent.shiftKey ? - 'Viewer' : 'Editor']; + else if(lKeyCode >= KEY.F1 && lKeyCode <= KEY.F10) + switch(lKeyCode){ + case KEY.F1: + DOM.preventDefault(pEvent); + break; - Util.exec(lEditor, true); + case KEY.F2: + DOM.renameCurrentFile(lCurrentFile); + break; + + case KEY.F3: + var lEditor = CloudCmd[pEvent.shiftKey ? + 'Viewer' : 'Editor']; + Util.exec(lEditor, true); + DOM.preventDefault(pEvent); + break; - DOM.preventDefault(pEvent); - } - - /* if f4 pressed */ - else if(lKeyCode === KEY.F4) { - DOM.Images.showLoad(); - - Util.exec(CloudCmd.Editor); + case KEY.F4: + DOM.Images.showLoad(); + Util.exec(CloudCmd.Editor); + DOM.preventDefault(pEvent); + break; - DOM.preventDefault(pEvent); - } - else if(lKeyCode === KEY.F10 && pEvent.shiftKey){ - Util.exec(CloudCmd.Menu); - - DOM.preventDefault(pEvent); - } + case KEY.F7: + DOM.promptNewFolder(); + break; + + case KEY.F10: + if(pEvent.shiftKey){ + Util.exec(CloudCmd.Menu); + DOM.preventDefault(pEvent); + } + } else if (lKeyCode === KEY.TRA){ DOM.Images.showLoad({top: true}); @@ -239,21 +245,9 @@ var CloudCommander, Util, DOM; console.log('+r pressed\n' + 'reloading page...\n' + 'press +q to remove all key-handlers'); - - /* Программно нажимаем на кнопку перезагрузки - * содержимого каталога - */ - var lRefreshIcon = DOM.getRefreshButton(); - if(lRefreshIcon){ - /* если нашли элемент нажимаем него - * а если не можем - нажимаем на - * ссылку, на которую повешен eventHandler - * onclick - */ - Util.exec( DOM.getListener(lRefreshIcon) ); + CloudCmd.refresh(); DOM.preventDefault(pEvent); - } } /* если нажали +d чистим кэш */ diff --git a/lib/client/menu.js b/lib/client/menu.js index d9c7b30e..4ccf831c 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -91,11 +91,15 @@ var CloudCommander, Util, DOM, CloudFunc, $; name : pName }; - if(Util.isFunction(pCallBack) ) - lRet.callback = pCallBack; + if( Util.isFunction(pCallBack) ) + lRet.callback = pCallBack; - else if (Util.isObject(pCallBack)) - lRet.items = pCallBack; + else if ( Util.isObject(pCallBack) ){ + if(pCallBack.name) + lRet.items = pCallBack; + else + lRet.items = getAllItems(pCallBack); + } return lRet; } @@ -164,7 +168,7 @@ var CloudCommander, Util, DOM, CloudFunc, $; 'Rename' : function(){ setTimeout( Util.retExec(DOM.renameCurrentFile), 100); }, - 'Delete' : Util.retExec(DOM.promptDeleteCurrent), + 'Delete' : Util.retExec(DOM.promptDeleteCurrent) }; if(UploadToItemNames.length) @@ -172,6 +176,14 @@ var CloudCommander, Util, DOM, CloudFunc, $; lMenuItems.Download = Util.retExec(downloadFromMenu); + lMenuItems.New = { + 'File' : function(){ + Util.log('New->File'); + }, + + 'Dir' : DOM.promptNewFolder + }; + lRet = { // define which elements trigger this menu selector: 'li', diff --git a/package.json b/package.json index 284725e8..7bdc57d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cloudcmd", - "version": "0.1.9", + "version": "0.2.0", "author": "coderaiser (https://github.com/coderaiser)", "description": "User friendly cloud file manager.", "homepage": "https://github.com/coderaiser/cloudcmd",