diff --git a/ChangeLog b/ChangeLog index 8f61f5be..03f26eba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -180,6 +180,8 @@ generation of json of directory listing. * Added ability to delete files. +* Added rename menu item. + 2012.12.12, Version 0.1.8 diff --git a/lib/client/dom.js b/lib/client/dom.js index 8177a429..41b463a2 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -1126,10 +1126,25 @@ var CloudCommander, Util, var lCurrent = pCurrentFile || DOM.getCurrentFile(), lLink = DOM.getCurrentLink( lCurrent ); - if(lLink) + if( Util.isObject(lLink) ) lLink = lLink.title || lLink.textContent; - return lLink; + return lLink; + }; + + /** + * set name from current (or param) file + * + * @param pCurrentFile + */ + DOM.setCurrentName = function(pName, pCurrentFile){ + var lCurrent = pCurrentFile || DOM.getCurrentFile(), + lLink = DOM.getCurrentLink( lCurrent ); + + if(lLink) + lLink.title = lLink.textContent = pName; + + return lLink; }; /** function getting FM @@ -1309,6 +1324,23 @@ var CloudCommander, Util, return lCurrent; }; + /** + * rename current file + * + * @pCurrent + */ + DOM.renameCurrentFile = function(pCurrentFile){ + if( Util.isString(pCurrentFile) ) + pCurrentFile = null; + + var lCurrent = pCurrentFile || DOM.getCurrentFile(), + lName = DOM.getCurrentName(lCurrent); + + lName = prompt("Rename", lName); + + DOM.setCurrentName(lName, lCurrent); + }; + /** * unified way to scrollIntoViewIfNeeded * (native suporte by webkit only) diff --git a/lib/client/keyBinding.js b/lib/client/keyBinding.js index 60c45535..6372d162 100644 --- a/lib/client/keyBinding.js +++ b/lib/client/keyBinding.js @@ -112,9 +112,14 @@ var CloudCommander, Util, DOM; DOM.preventDefault(pEvent);//запрет на дальнейшее действие } - else if(lKeyCode === KEY.Delete) - DOM.promptDeleteCurrent(lCurrentFile); - + else if(lKeyCode === KEY.Delete){ + if(pEvent.shiftKey) + DOM.deleteCurrent(lCurrentFile); + else + DOM.promptDeleteCurrent(lCurrentFile); + } + 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 ? @@ -216,9 +221,8 @@ var CloudCommander, Util, DOM; } /* если нажали Enter - открываем папку*/ - else if(lKeyCode === KEY.ENTER) - if(DOM.isCurrentIsDir()) - Util.exec(CloudCmd._loadDir()); + else if(lKeyCode === KEY.ENTER && DOM.isCurrentIsDir()) + Util.exec(CloudCmd._loadDir()); /* если нажали +r * обновляем страницу, diff --git a/lib/client/menu.js b/lib/client/menu.js index f3cfa602..b9630c5d 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -159,6 +159,7 @@ var CloudCommander, Util, DOM, $; lMenuItems = { 'View' : Util.retExec(showEditor, true), 'Edit' : Util.retExec(showEditor, false), + 'Rename' : DOM.renameCurrentFile, 'Delete' : Util.retExec(DOM.promptDeleteCurrent), }; diff --git a/lib/cloudfunc.js b/lib/cloudfunc.js index c5f2e091..915523f2 100644 --- a/lib/cloudfunc.js +++ b/lib/cloudfunc.js @@ -28,9 +28,6 @@ var CloudFunc, exports; CloudFunc.LEFTPANEL = 'left'; CloudFunc.RIGHTPANEL = 'right'; - /* length of longest file name */ - CloudFunc.SHORTNAMELENGTH = 16; - /** * Функция убирает последний слеш, * если он - последний символ строки diff --git a/lib/server/rest.js b/lib/server/rest.js index fb40ba56..6e6d16f5 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -159,14 +159,14 @@ if(lQuery === 'dir') fs.rmdir(p.name, function(pError){ if(!pError) - main.sendResponse(pParams, 'Folder ' + p.name + ' removed.'); + main.sendResponse(pParams, 'Folder ' + p.name + ' deleted.'); else main.sendError(pParams, pError); }); else fs.unlink(p.name, function(pError){ if(!pError) - main.sendResponse(pParams, 'File ' + p.name + ' removed.'); + main.sendResponse(pParams, 'File ' + p.name + ' delete.'); else main.sendError(pParams, pError); });