diff --git a/ChangeLog b/ChangeLog index e1ba610c..43228773 100644 --- a/ChangeLog +++ b/ChangeLog @@ -69,6 +69,8 @@ is pressed and current file is directory. * Added ability to delete file when f8 key pressed. +* Fixed bug with selectecting root directory with space + 2012.03.01, Version 0.1.9 diff --git a/lib/client/dom.js b/lib/client/dom.js index 7b52708d..10c0a04f 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -5,8 +5,7 @@ var CloudCommander, Util, DOM = {}, CloudFunc; var CURRENT_FILE = 'current-file', SELECTED_FILE = 'selected-file', - XMLHTTP, - Title, + XMLHTTP, Title, /* Обьект содержит функции для отображения картинок */ Images = function (){ @@ -38,10 +37,10 @@ var CloudCommander, Util, DOM = {}, CloudFunc; /* Обьект содержит функции для работы с CloudCmd API */ RESTfull = function(){ - this.delete = function(pUrl, pData, pCallBack){ + this.delete = function(pUrl, pData, pCallBack, pQuery){ sendRequest({ method : 'DELETE', - url : CloudFunc.FS + pUrl, + url : CloudFunc.FS + pUrl + (pQuery || ''), data : pData, callback : pCallBack }); @@ -441,35 +440,57 @@ var CloudCommander, Util, DOM = {}, CloudFunc; DOM.promptDeleteCurrent = function(pCurrentFile){ var lRet, lCurrent, + lQuery, lName, - lMsg = 'Are you sure thet you want delete ', - lSelected = DOM.getSelectedFiles(); - - if(lSelected){ + lMsg, + lMsgAsk = 'Do you really want to delete the ', + lMsgSel = 'selected ', + lSelected = DOM.getSelectedFiles(), + i, n = lSelected && lSelected.length; + if(n > 1){ + lQuery = '?files'; + lName = n > 1 ? 'files:\n' : ''; + + for(i = 0; i < 4 && i < n; i++) + lName += DOM.getCurrentName( lSelected[i] ) + '\n'; + + lName += '...'; + lMsg = lMsgAsk + lMsgSel + n + ' files/directoris?\n\n'; }else{ + var lType, lIsDir; + + /* one file selected */ + if( n === 1 ) + lCurrent = lSelected[0]; + /* dom element passed and it is not event */ - if( pCurrentFile && !pCurrentFile.pType) - lCurrent = pCurrentFile; + else if( pCurrentFile && !pCurrentFile.pType) + lCurrent = pCurrentFile; else lCurrent = DOM.getCurrentFile(); - lName = DOM.getCurrentName(lCurrent); + lType = DOM.isCurrentIsDir(lCurrent); + + if(lIsDir){ + lQuery = '?dir'; + lType = lIsDir ? 'directory' : 'file' + ' '; + } + + lName = DOM.getCurrentName(lCurrent); + lMsg = lMsgAsk + lMsgSel + lType + '?'; } - lRet = confirm(lMsg + lName + '?'); + lRet = confirm(lMsg + lName); if(lRet){ var lParent = lCurrent.parentElement, lUrl = DOM.getCurrentPath(lCurrent); - if( DOM.isCurrentIsDir(lCurrent) ) - lUrl += '?dir'; - if(lCurrent && lParent && lName !== '..') - DOM.RESTfull.delete(lUrl, function(){ + DOM.RESTfull.delete(lUrl, lSelected, function(){ DOM.deleteCurrent(lCurrent); - }); + }, lQuery); return lCurrent; } @@ -804,11 +825,9 @@ var CloudCommander, Util, DOM = {}, CloudFunc; onerror: function(){ DOM.jsload('/lib/client/jquery.js'); - /* - * if could not load jquery from google server + /* if could not load jquery from google server * maybe we offline, load font from local - * directory - */ + * directory */ DOM.cssSet({ id :'local-droids-font', element : document.head, @@ -1023,13 +1042,16 @@ var CloudCommander, Util, DOM = {}, CloudFunc; */ DOM.loadCurrentSize = function(pCallBack, pCurrent){ var lRet, - lLink = DOM.getCurrentPath(pCurrent); + lCurrent = pCurrent || DOM.getCurrentFile(), + lLink = DOM.getCurrentPath(lCurrent), + lName = DOM.getCurrentName(lCurrent); /* если это папка - возвращаем слово dir вместо размера*/ - DOM.RESTfull.read(lLink, function(pSize){ - DOM.setCurrentSize(pSize, pCurrent); - Util.exec(pCallBack, pCurrent); - }, '?size'); + if(lName !== '..') + DOM.RESTfull.read(lLink, function(pSize){ + DOM.setCurrentSize(pSize, lCurrent); + Util.exec(pCallBack, lCurrent); + }, '?size'); return lRet; }; @@ -1044,11 +1066,10 @@ var CloudCommander, Util, DOM = {}, CloudFunc; lSize = CloudFunc.getShortSize(pSize); lSizeElement[0].textContent = lSize; - + }; /** - * * @pCurrentFile */ DOM.getCurrentMode = function(pCurrentFile){ @@ -1197,7 +1218,6 @@ var CloudCommander, Util, DOM = {}, CloudFunc; return lRet; }; - /** * setting history wrapper */ diff --git a/lib/client/keyBinding.js b/lib/client/keyBinding.js index 9f7cae0f..f2af9ad8 100644 --- a/lib/client/keyBinding.js +++ b/lib/client/keyBinding.js @@ -175,9 +175,10 @@ var CloudCommander, Util, DOM; case KEY.SPACE: var lSelected = DOM.isSelected(lCurrent), - lDir = DOM.isCurrentIsDir(lCurrent); + lDir = DOM.isCurrentIsDir(lCurrent), + lName = DOM.getCurrentName(lCurrent); - if(!lDir) + if(!lDir || lName === '..') lSelected = true; Util.ifExec(lSelected, function(){