Close tabs if the file is no longer there after a dir/file delete

This commit is contained in:
mattpass
2020-07-03 15:36:32 +01:00
parent 6f2a3fb84e
commit a2e8e855f9
3 changed files with 19 additions and 10 deletions

View File

@@ -2470,7 +2470,7 @@ var ICEcoder = {
if (-1 < tgtClass.indexOf('dirOpen')) {
this.updateFileManagerList("add", location, file, false, false, false, fileOrFolder);
}
this.updateFileManagerList("delete", oldName.substr(0, oldName.lastIndexOf("/")), oldName.substr(oldName.lastIndexOf("/")+1));
this.updateFileManagerList("delete", oldName.substr(0, oldName.lastIndexOf("/")), oldName.substr(oldName.lastIndexOf("/")+1), false, false, false, fileOrFolder);
this.selectedFiles = [];
}
}
@@ -2485,7 +2485,7 @@ var ICEcoder = {
if (-1 < tgtClass.indexOf('dirOpen')) {
this.updateFileManagerList("add", location, file, false, false, false, fileOrFolder);
}
this.updateFileManagerList("delete", oldName.substr(0, oldName.lastIndexOf("/")), file);
this.updateFileManagerList("delete", oldName.substr(0, oldName.lastIndexOf("/")), file, false, false, false, fileOrFolder);
}
// Chmod on files
@@ -2510,6 +2510,15 @@ var ICEcoder = {
targetElem = get('filesFrame').contentWindow.document.getElementById(targetElem).parentNode.parentNode;
this.openCloseDir(targetElem.childNodes[0], false);
targetElem.parentNode.removeChild(targetElem);
// Close any tabs we have open which would have had a file deleted
for (let i = this.openFiles.length - 1; i >= 0; i--) {
if ("folder" === fileOrFolder && location.replace(/\|/g, "/") + "/" + file === this.openFiles[i].substr(0, this.openFiles[i].lastIndexOf("/"))) {
this.closeTab(i + 1, 'dontSetPV', 'dontAsk');
}
if ("file" === fileOrFolder && location.replace(/\|/g, "/") + "/" + file === this.openFiles[i]) {
this.closeTab(i + 1, 'dontSetPV', 'dontAsk');
}
}
}
// Finally, switch to selectedTab to refresh items
@@ -4108,7 +4117,6 @@ var ICEcoder = {
}
}
// Highlight all user selected files
for (var i = 0; i < this.selectedFiles.length; i++) {
fileLink = this.filesFrame.contentWindow.document.getElementById(this.selectedFiles[i]);
@@ -4166,8 +4174,9 @@ var ICEcoder = {
if (this.selectedTab==closeTabNum) {
this.openFiles.length>0 ? this.selectedTab-=1 : this.selectedTab = 0;
}
if (this.openFiles.length>0 && this.selectedTab==0) {this.selectedTab=1};
// Handle removing a tab from start or end as safely fallback
if (this.openFiles.length>0 && this.selectedTab === 0) {this.selectedTab = 1};
if (this.openFiles.length>0 && this.selectedTab > this.openFiles.length) {this.selectedTab = this.openFiles.length};
// grey out the view icon
if (this.openFiles.length==0) {
this.fMIconVis('fMView',0.3);

View File

@@ -423,6 +423,7 @@ class File
if (rtrim($fullPath, "/") === rtrim($docRoot, "/")) {
$doNext .= "ICEcoder.message('" . $t['Sorry, cannot delete...'] . "');";
} else if (!$demoMode && is_writable($fullPath)) {
$fileOrFolder = is_dir($fullPath) ? "folder" : "file";
if (is_dir($fullPath)) {
$this->rrmdir($fullPath);
} else {
@@ -438,7 +439,7 @@ class File
};
// Reload file manager
$doNext .= 'ICEcoder.selectedFiles = []; ICEcoder.updateFileManagerList(\'delete\', \'' . $fileLoc . '\', \'' . $fileName . '\');';
$doNext .= 'ICEcoder.selectedFiles = []; ICEcoder.updateFileManagerList(\'delete\', \'' . $fileLoc . '\', \'' . $fileName . '\', false, false, false, \''. $fileOrFolder .'\');';
$finalAction = "delete";
// Run any extra processes
@@ -471,9 +472,8 @@ class File
}
}
reset($objects);
$ICEcoder['deleteToTmp']
? rename($dir, str_replace("\\", "/", dirname(__FILE__)) . "/../tmp/." . str_replace(":", "_", str_replace("/", "_", $dir)))
: rmdir($dir);
// Remove now empty dir
rmdir($dir);
}
}

View File

@@ -361,7 +361,7 @@ if (!$error && "delete" === $_GET['action']) {
$fileLoc = "/";
};
// Reload file manager
$doNext .= 'ICEcoder.selectedFiles = []; ICEcoder.updateFileManagerList(\'delete\', \'' . $fileLoc . '\', \'' . $fileName . '\');';
$doNext .= 'ICEcoder.selectedFiles = []; ICEcoder.updateFileManagerList(\'delete\', \'' . $fileLoc . '\', \'' . $fileName . '\', false, false, false, \'' . ("dir" === $itemType ? 'folder' : 'file') . '\');';
$finalAction = "delete";
// Run any extra processes
$extraProcessesClass = new ExtraProcesses($fileLoc, $fileName);