浏览代码

if a folder exists when moving a folder, it is deleted first, and now files are unselected when a folder/file is moved/deleted

Simon Van Mierlo 8 年之前
父节点
当前提交
6a854d198f
共有 4 个文件被更改,包括 30 次插入17 次删除
  1. 14 1
      ___fs++.js
  2. 2 1
      client/gui_utils.js
  3. 6 0
      client/window_management.js
  4. 8 15
      httpwsd.js

+ 14 - 1
___fs++.js

@@ -171,7 +171,20 @@ exports.rmdirs =
 
 
 
-
+// http://stackoverflow.com/questions/18052762/remove-directory-which-is-not-empty
+exports.deleteFolderRecursive = function(path) {
+   if( _fs.existsSync(path) ) {
+       _fs.readdirSync(path).forEach(function(file,index){
+           var curPath = path + "/" + file;
+           if(_fs.lstatSync(curPath).isDirectory()) { // recurse
+               deleteFolderRecursive(curPath);
+           } else { // delete file
+               _fs.unlinkSync(curPath);
+           }
+       });
+       _fs.rmdirSync(path);
+   }
+};
 	
 	
 

+ 2 - 1
client/gui_utils.js

@@ -90,7 +90,7 @@ GUIUtils = function(){
 					 {
 						 selection.attr("class", 'fileb_icon');
 						 selection = undefined;
-						 input.value = '';
+						 input.val('');
 					 }
 				 },
 			 navbuttononclick	=
@@ -252,6 +252,7 @@ GUIUtils = function(){
 				  'filepane':	 	 function() {return $('#div_fileb-contents');},
 				  'getcurrfolder': function() {return currfolder;},	
 				  'getselection':	 function()	{return input.val();},
+                  'clearselection': function() {clearSelection()},
                   'refresh': function(fnames, the_folder) {
                       setCurrentFileBrowserFolder(the_folder || currfolder, fnames);
                   }};

+ 6 - 0
client/window_management.js

@@ -479,6 +479,7 @@ WindowManagement = function(){
                                                 fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2"); 
                                             }
                                             fileb['refresh'](fnames, newvalue);
+                                            fileb['clearselection']();
                                             feedback.html('renamed ' + value + ' to ' + newvalue);
                                         }
                                     });
@@ -502,6 +503,7 @@ WindowManagement = function(){
                                             fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2");
                                         }
                                         fileb['refresh'](fnames);
+                                        fileb['clearselection']();
                                         feedback.html('deleted ' + value);
                                     }
                                 });
@@ -529,6 +531,7 @@ WindowManagement = function(){
                                                 fnames[idx] = fnames[idx].replace(new RegExp("^("+value+")(.*)"), newvalue+"$2"); 
                                             }
                                             fileb['refresh'](fnames, newvalue);
+                                            fileb['clearselection']();
                                             feedback.html('moved ' + value + ' to ' + folder_loc);
                                         }
                                     });
@@ -558,6 +561,7 @@ WindowManagement = function(){
                                                 fnames[idx] = newvalue;
                                             }
                                             fileb['refresh'](fnames);
+                                            fileb['clearselection']();
                                             feedback.html('renamed ' + value + ' to ' + newvalue);
                                         }
                                     });
@@ -581,6 +585,7 @@ WindowManagement = function(){
                                             fnames.splice(idx, 1);
                                         }
                                         fileb['refresh'](fnames);
+                                        fileb['clearselection']();
                                     }
                                 });
                         }
@@ -609,6 +614,7 @@ WindowManagement = function(){
                                                 fnames[idx] = newvalue;
                                             }
                                             fileb['refresh'](fnames);
+                                            fileb['clearselection']();
                                         }
                                     });
                             }

+ 8 - 15
httpwsd.js

@@ -369,21 +369,7 @@ var httpserver = _http.createServer(
                                  var newname = userdir+'_Trash_/'+folder+fname;
                                  if (_fs.existsSync(newname)) {
                                      if (url.pathname.match(/\.folder$/)) {
-                                         // http://stackoverflow.com/questions/18052762/remove-directory-which-is-not-empty
-                                         var deleteFolderRecursive = function(path) {
-                                            if( _fs.existsSync(path) ) {
-                                                _fs.readdirSync(path).forEach(function(file,index){
-                                                    var curPath = path + "/" + file;
-                                                    if(_fs.lstatSync(curPath).isDirectory()) { // recurse
-                                                        deleteFolderRecursive(curPath);
-                                                    } else { // delete file
-                                                        _fs.unlinkSync(curPath);
-                                                    }
-                                                });
-                                                _fs.rmdirSync(path);
-                                            }
-                                         };
-                                         deleteFolderRecursive(newname);
+                                         _fspp.deleteFolderRecursive(newname);
                                      } else {
                                          _fs.unlink(newname);
                                      }
@@ -456,6 +442,13 @@ var httpserver = _http.createServer(
                                          else
                                              __respond(resp,200);
                                      };
+                                if (_fs.existsSync(userdir+data+fname)) {
+                                    if (url.pathname.match(/\.folder$/)) {
+                                         _fspp.deleteFolderRecursive(userdir+data+fname);
+                                     } else {
+                                         _fs.unlink(newname);
+                                     }
+                                }
                             _fspp.mv(userdir+"/"+folder+fname,userdir+data,onmove)
                         } else {
                             // rename