From e0b4eb7b429bb9218ac91528d06105afaf539ef6 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Thu, 11 Apr 2013 10:43:47 -0400 Subject: [PATCH] added ability to delete files --- lib/client.js | 5 +++-- lib/client/dom.js | 9 ++++----- lib/server/rest.js | 48 +++++++++++++++++++++++++++++++--------------- lib/util.js | 25 ++++++++++++------------ 4 files changed, 52 insertions(+), 35 deletions(-) diff --git a/lib/client.js b/lib/client.js index 6eb002c2..02d244c3 100644 --- a/lib/client.js +++ b/lib/client.js @@ -484,9 +484,10 @@ var Util, DOM, CloudFunc, $, KeyBinding, CloudCommander; lUrl = CloudCmd.HOST, lLoadDirOnce = CloudCmd.loadDir(); - CloudCmd.refresh = function(){ + CloudCmd.refresh = function(pCurrent){ var lNEEDREFRESH = true, - lPath = DOM.getCurrentDirPath(), + lPanel = pCurrent && pCurrent.parentElement, + lPath = DOM.getCurrentDirPath(lPanel), lLink = CloudFunc.FS + lPath, lNotSlashlLink = CloudFunc.removeLastSlash(lLink), lLoad = CloudCmd.loadDir(lNotSlashlLink, lNEEDREFRESH); diff --git a/lib/client/dom.js b/lib/client/dom.js index 1c7020e0..a067842d 100644 --- a/lib/client/dom.js +++ b/lib/client/dom.js @@ -488,15 +488,14 @@ var CloudCommander, Util, DOM = {}, CloudFunc; if(lCurrent) lUrl = DOM.getCurrentPath(lCurrent); - else + else{ lUrl = DOM.getCurrentDirPath(); + lCurrent = lFiles[0]; + } if(lCurrent || lSelected) DOM.RESTfull.delete(lUrl, lSelected, function(){ - if(n > 1) - DOM.deleteSelected(lFiles); - else - DOM.deleteCurrent(lCurrent); + CloudCommander.refresh(lCurrent); }, lQuery); return lCurrent; diff --git a/lib/server/rest.js b/lib/server/rest.js index c8afabf3..92020321 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -164,31 +164,48 @@ else if(lQuery === 'files'){ getBody(p.request, function(pBody){ var lFiles = Util.parseJSON(pBody), - lDir = p.name; + n = lFiles.length, + lDir = p.name, + log = Util.retExec(Util.log), + lAssync = 0; - function stat(pParams){ - var lRet = Util.checkParams(pParams, 'params'); + console.log(n); + + function stat(pStat){ + console.log(pStat); + var lRet = Util.checkObjTrue(pStat, 'params') && + Util.checkObjTrue(pStat.params, 'name'); if(lRet){ - var p = pParams, - d = p.params; + var p = pStat, + d = p.params; - if(p.data.isDirectory()){ - - } - else if(p.data.isFile()){ - + ++lAssync; + + if( p.error ){ + main.sendError(pParams, p.error); + Util.log(p.error); } + else + if(p.data.isDirectory()) + fs.rmdir(d.name, log); + + else if(p.data.isFile()) + fs.unlink(d.name, log); + + if(lAssync === n && !p.error) + main.sendResponse(pParams, 'Files deleted: ' + pBody); } } - for(var i = 0, n = lFiles.length; i < n; i ++){ - Util.log(lDir + lFiles[i]); - //fs.stat(lDir + lFiles[i], Util.call()) + for(var i = 0; i < n; i ++){ + var lName = lDir + lFiles[i]; + Util.log(lName); + fs.stat(lName, Util.call(stat, { + name: lName + })); } - - main.sendResponse(pParams, pBody); }); }else fs.unlink(p.name, function(pError){ @@ -280,6 +297,7 @@ main.sendError(pParams, lError); }); break; + case 'mv': if( Util.checkObjTrue(lFiles, ['from', 'to']) ) fs.rename(lFiles.from, lFiles.to, function(pError){ diff --git a/lib/util.js b/lib/util.js index d42804ed..66e7a8b5 100644 --- a/lib/util.js +++ b/lib/util.js @@ -114,21 +114,20 @@ Util = exports || {}; * @param pTrueArr */ Util.checkObjTrue = function(pObj, pTrueArr){ - var lRet, + var lRet, lTrueArr, i, n; if( pObj ){ - lRet = Util.isArray(pTrueArr); - if(lRet){ - n = pTrueArr.length; - for(i = 0; i < n; i++){ - var lProp = pTrueArr[i]; - lRet = pObj[lProp]; - - if( !lRet){ - Util.logError(lProp + ' not true!'); - Util.log(pObj); - break; - } + lTrueArr = Util.isArray(pTrueArr) ? pTrueArr : [pTrueArr]; + + n = lTrueArr.length; + for(i = 0; i < n; i++){ + var lProp = lTrueArr[i]; + lRet = pObj[lProp]; + + if( !lRet){ + Util.logError(lProp + ' not true!'); + Util.log(pObj); + break; } } }