From 12af4acd84ddf00c8096241f3ac11078768f7795 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 8 Apr 2013 06:15:12 -0400 Subject: [PATCH] fixed the href generation of renamed file --- ChangeLog | 4 ++++ README.md | 1 + lib/client/dom.js | 35 +++++++++++++++++++------------ lib/client/keyBinding.js | 45 +++++++++++++++++++++++++++------------- lib/client/menu.js | 7 ++----- 5 files changed, 60 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3f2e2886..7fe749a1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -59,6 +59,10 @@ from storage folder. * Added ability to get directory size, when space button is pressed and current file is directory. +* Added ability to select all files on Ctrl + A + +* Fixed the href generation of renamed file. + 2012.03.01, Version 0.1.9 diff --git a/README.md b/README.md index 0b7e6b20..b99c43f7 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ There is a short list: - **Ctrl + d** - clear local cache (wich contains dir contents) - **Alt + q** - disable key bindings - **Alt + s** - get all key bindings back +- **Ctrl + A** - select all files in a panel - **up, down, enter** - filesystem navigation - **Tab** - move thru panels - **Page Up** - up on one page diff --git a/lib/client/dom.js b/lib/client/dom.js index 887bb31f..e988e0fb 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -406,16 +406,27 @@ var CloudCommander, Util, DOM = {}, CloudFunc; * @pCurrentFile */ DOM.promptNewFolder = function(){ + DOM.promptNewFile('directory', '?dir'); + }; + + /** + * create new file + * + * @pCurrentFile + */ + DOM.promptNewFile = function(pTypeName, pType){ var lName = DOM.getCurrentName(), - lDir = DOM.getCurrentDirPath(); + lDir = DOM.getCurrentDirPath(), + lMsg = 'New ' + pTypeName || 'File', + lType = Util.isString(pType) ? pType : ''; if(lName === '..') lName = ''; - lName = prompt("New directory", lName); + lName = prompt(lMsg, lName); if(lName) - DOM.RESTfull.save(lDir + lName + '?dir', null, CloudCommander.refresh); + DOM.RESTfull.save(lDir + lName + lType, null, CloudCommander.refresh); }; /** @@ -1007,7 +1018,7 @@ var CloudCommander, Util, DOM = {}, CloudFunc; /* если это папка - возвращаем слово dir вместо размера*/ DOM.RESTfull.read(lLink, function(pSize){ - DOM.setCurrentSize(pSize); + DOM.setCurrentSize(pSize, pCurrentFile); Util.exec(pCallBack); }, '?size'); @@ -1156,12 +1167,12 @@ var CloudCommander, Util, DOM = {}, CloudFunc; * select current file * @param pCurrent */ - DOM.selectFile = function(pCurrent){ + DOM.setSelectedFile = function(pCurrent){ var lCurrent = pCurrent || DOM.getCurrentFile(), lRet = DOM.addClass(pCurrent, SELECTED_FILE); if(!lRet) - DOM.unSelectFile(lCurrent); + DOM.unsetSelectedFile(lCurrent); return lRet; }; @@ -1170,7 +1181,7 @@ var CloudCommander, Util, DOM = {}, CloudFunc; * unselect current file * @param pCurrent */ - DOM.unSelectFile = function(pCurrent){ + DOM.unsetSelectedFile = function(pCurrent){ var lCurrent = pCurrent || DOM.getCurrentFile(), lRet = DOM.removeClass(lCurrent, SELECTED_FILE); @@ -1310,13 +1321,11 @@ var CloudCommander, Util, DOM = {}, CloudFunc; * @param pCurrentFile */ DOM.setCurrentName = function(pName, pCurrentFile){ - var lCurrent = pCurrentFile || DOM.getCurrentFile(), - lLink = DOM.getCurrentLink( lCurrent ); + var lLink = DOM.getCurrentLink( pCurrentFile ), + lDir = DOM.getCurrentDirName() + '/'; - if(lLink) - lLink.href = lLink.title = lLink.textContent = pName; - - lLink.href = CloudFunc.FS + DOM.getCurrentDirPath() + lLink.href; + lLink.title = lLink.textContent = pName; + lLink.href = lDir + pName; return lLink; }; diff --git a/lib/client/keyBinding.js b/lib/client/keyBinding.js index d16ea54b..aa1f0e55 100644 --- a/lib/client/keyBinding.js +++ b/lib/client/keyBinding.js @@ -22,6 +22,8 @@ var CloudCommander, Util, DOM; INSERT : 45, DELETE : 46, + A : 65, + D : 68, G : 71, @@ -66,7 +68,7 @@ var CloudCommander, Util, DOM; var key_event = function(pEvent){ /* получаем выдленный файл*/ - var lCurrentFile = DOM.getCurrentFile(), i; + var i, n, lCurrentFile = DOM.getCurrentFile(); /* если клавиши можно обрабатывать*/ if(keyBinded && pEvent){ var lKeyCode = pEvent.keyCode, @@ -90,7 +92,7 @@ var CloudCommander, Util, DOM; } else if(lKeyCode >= KEY.F1 && lKeyCode <= KEY.TRA || - lKeyCode >= KEY.TAB && lKeyCode <= KEY.DELETE) + lKeyCode >= KEY.TAB && lKeyCode <= KEY.A) switch(lKeyCode){ case KEY.TAB: @@ -115,7 +117,7 @@ var CloudCommander, Util, DOM; break; case KEY.INSERT: - DOM.selectFile(lCurrentFile); + DOM.setSelectedFile(lCurrentFile); DOM.setCurrentFile( lCurrentFile.nextSibling ); break; @@ -189,15 +191,15 @@ var CloudCommander, Util, DOM; var lSelected = DOM.isSelected(lCurrentFile), lDir = DOM.isCurrentIsDir(lCurrentFile); - - if(lDir) - Util.ifExec(lSelected, function(){ - DOM.selectFile(lCurrentFile); - }, function(pCallBack){ - DOM.loadCurrentSize(pCallBack, lCurrentFile); - }); - else - DOM.selectFile(lCurrentFile); + if(!lDir) + lSelected = true; + + Util.ifExec(lSelected, function(){ + DOM.setSelectedFile(lCurrentFile); + }, function(pCallBack){ + DOM.loadCurrentSize(pCallBack, lCurrentFile); + }); + DOM.preventDefault(pEvent); break; @@ -207,7 +209,7 @@ var CloudCommander, Util, DOM; * выделяем предыдущую строку */ case KEY.UP: if(lShift) - DOM.selectFile(lCurrentFile); + DOM.setSelectedFile(lCurrentFile); DOM.setCurrentFile( lCurrentFile.previousSibling ); DOM.preventDefault( pEvent ); @@ -217,7 +219,7 @@ var CloudCommander, Util, DOM; * выделяем следующую строку */ case KEY.DOWN: if(lShift) - DOM.selectFile(lCurrentFile); + DOM.setSelectedFile(lCurrentFile); DOM.setCurrentFile( lCurrentFile.nextSibling ); DOM.preventDefault( pEvent ); @@ -279,6 +281,21 @@ var CloudCommander, Util, DOM; case KEY.ENTER: if( DOM.isCurrentIsDir() ) Util.exec( CloudCmd.loadDir() ); + break; + + case KEY.A: + if(pEvent.ctrlKey){ + var lParent = lCurrentFile.parentElement, + lNodes = lParent.childNodes; + + /* not path and fm_header */ + for(i = 2, n = lNodes.length; i < n; i++) + DOM.setSelectedFile( lNodes[i] ); + + DOM.preventDefault(pEvent); + } + + break; } /* если нажали +r diff --git a/lib/client/menu.js b/lib/client/menu.js index 4744f25a..44995921 100644 --- a/lib/client/menu.js +++ b/lib/client/menu.js @@ -167,11 +167,8 @@ var CloudCommander, Util, DOM, CloudFunc, $; lMenuItems.Download = Util.retExec(downloadFromMenu); lMenuItems.New = { - 'File' : function(){ - Util.log('New->File'); - }, - - 'Dir' : DOM.promptNewFolder, + 'File' : DOM.promptNewFile, + 'Dir' : DOM.promptNewFolder, 'From cloud...' : function(){ CloudCmd.execFromModule('FilePicker', 'saveFile', function(pName, pData){