diff --git a/assets/js/icecoder.js b/assets/js/icecoder.js
index e8aba03..2c68112 100644
--- a/assets/js/icecoder.js
+++ b/assets/js/icecoder.js
@@ -29,6 +29,9 @@ var ICEcoder = {
cMInstances: [], // List of CodeMirror instance no's
nextcMInstance: 1, // Next available CodeMirror instance no
selectedFiles: [], // Array of selected files
+ thisFileFolderType: '', // The type of current item - file or folder
+ thisFileFolderLink: '', // The id value of the current item
+ dropTargetHighlight: '#f80', // Highlight color of item you're dropping onto
results: [], // Array of find coords (line & char)
resultsLines: [], // Array of lines containing results (simpler version of results)
findResult: 0, // Array position of current find in results
@@ -1648,6 +1651,13 @@ var ICEcoder = {
this.thisFileFolderLink = link;
},
+ // Note which files or folders we are over on mouseover/mouseout
+ highlightFileFolder: function(link, highlight) {
+ this.filesFrame.contentWindow.document.getElementById(link).style.background = true === highlight
+ ? this.dropTargetHighlight
+ : '';
+ },
+
// Detect and return dir/file/false for this DOM ref (false for not found)
isFileFolder: function(ref) {
let domElem;
@@ -1667,7 +1677,7 @@ var ICEcoder = {
let tgtFile, shortURL, selecting, dirList, lastFileClicked, startFile, endFile, thisFileObj;
// If we've clicked somewhere other than a file/folder
- if ("" == this.thisFileFolderLink) {
+ if ("" === this.thisFileFolderLink) {
if (!ctrlSim && !evt.ctrlKey && !this.cmdKey) {
this.deselectAllFiles();
}
@@ -1797,7 +1807,7 @@ var ICEcoder = {
fmDragBox.style.height = Math.abs(this.mouseY - this.fmDragBoxStartY) + "px";
// Select the files
- if (this.thisFileFolderLink != "") {
+ if (this.thisFileFolderLink !== "") {
if (this.fmDragSelectFirst == "") {
this.fmDragSelectFirst = this.thisFileFolderLink;
this.overFileFolder(this.thisFileFolderLink.indexOf('.') > 0 ? 'file' : 'folder', this.fmDragSelectFirst);
@@ -1879,7 +1889,7 @@ var ICEcoder = {
if (1 < line){
this.goToLine(line);
}
- } else if ("" != this.thisFileFolderLink && "file" === this.thisFileFolderType) {
+ } else if ("" !== this.thisFileFolderLink && "file" === this.thisFileFolderType) {
// work out a shortened URL for the file
shortURL = this.thisFileFolderLink.replace(/\|/g, "/");
@@ -2279,7 +2289,7 @@ var ICEcoder = {
menuHeight = 124 + 5; // general options height in px plus 5px space
winH = window.innerHeight;
- if ("undefined" !== typeof this.thisFileFolderLink && "" != this.thisFileFolderLink) {
+ if ("undefined" !== typeof this.thisFileFolderLink && "" !== this.thisFileFolderLink) {
menuType = this.isPathFolder(this.selectedFiles[0]) ? "folder" : "file";
get('folderMenuItems').style.display = "folder" === menuType && 1 === this.selectedFiles.length ? "block" : "none";
if ("folder" === menuType && 1 === this.selectedFiles.length) {
@@ -2339,13 +2349,21 @@ var ICEcoder = {
permColors = 777 === perms ? 'background: #800; color: #eee' : 'color: #888';
innerLI = ' '+file+' '+perms+'';
+ ("folder" === actionElemType ? 'parent.ICEcoder.openCloseDir(this,' + ("folder" === actionElemType ? 'true' : 'false') + ');' : '') +
+
+ ' if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {parent.ICEcoder.openFile()}}" style="position: relative; left:-22px"> '+file+' '+perms+'';
// If we don't have a locNest or at least 3 DOM items in there, it's an empty folder
if(!locNest || 3 > locNest.childNodes.length) {
@@ -2358,10 +2376,9 @@ var ICEcoder = {
newLI = document.createElement("li");
newLI.className = cssStyle;
newLI.draggable = false;
- newLI.ondragstart = function(event) {this.addDefaultDragData(this, event)};
- newLI.ondrag = function(event) {this.draggingWithKeyTest(event);if(this.getcMInstance()){this.editorFocusInstance.indexOf('diff') == -1 ? this.getcMInstance().focus() : this.getcMdiffInstance().focus()}};
- newLI.ondragover = function(event) {this.setDragCursor(event, "folder" === actionElemType ? 'folder' : 'file')};
- newLI.ondragend = function() {this.dropFile(this)};
+ newLI.ondragstart = function(event) {parent.ICEcoder.addDefaultDragData(this, event)};
+ newLI.ondrag = function(event) {parent.ICEcoder.draggingWithKeyTest(event);if(parent.ICEcoder.getcMInstance()){parent.ICEcoder.editorFocusInstance.indexOf('diff') == -1 ? parent.ICEcoder.getcMInstance().focus() : parent.ICEcoder.getcMdiffInstance().focus()}};
+ newLI.ondragend = function() {parent.ICEcoder.dropFile(this)};
newLI.innerHTML = innerLI;
locNest.nextSibling.appendChild(newLI);
locNest.nextSibling.appendChild(newText);
@@ -2417,13 +2434,23 @@ var ICEcoder = {
targetElem.parentNode.title = targetElem.id.replace(/\|/g, "/");
targetElemPerms = get('filesFrame').contentWindow.document.getElementById(shortURL + "_perms");
targetElemPerms.id = location.replace(/\//g, "|") + "|" + file + "_perms";
+ // Rename in selected files
+ this.renameInSelectedFiles(shortURL, location.replace(/\//g, "|") + "|" + file);
// Finally, rename also within any children
this.renameInChildren(targetElem, oldName, location, file);
}
// Moving files
if ("move" === action) {
- this.updateFileManagerList("add", location, file, false, false, false, fileOrFolder);
+ // TODO: Drag a file somewhere, then try and try it somewhere else, causes JS error
+ // Target is root, or another dir?
+ const tgtClass = location === ""
+ ? this.filesFrame.contentWindow.document.getElementById("|").parentNode.parentNode.className
+ : this.filesFrame.contentWindow.document.getElementById(location.replace(/\//g, "|")).parentNode.parentNode.className;
+ // Only add file into view if the dir is open
+ if (-1 < tgtClass.indexOf('dirOpen')) {
+ this.updateFileManagerList("add", location, file, false, false, false, fileOrFolder);
+ }
this.updateFileManagerList("delete", oldName.substr(0, oldName.lastIndexOf("/")), file);
}
@@ -2452,6 +2479,15 @@ var ICEcoder = {
}
},
+ // Rename in selected files
+ renameInSelectedFiles: function(oldName, newName) {
+ for (let i = 0; i < this.selectedFiles.length; i++) {
+ if (oldName === this.selectedFiles[i]) {
+ this.selectedFiles[i] = newName;
+ }
+ }
+ },
+
// Rename node attributes within any renamed dirs recursively
renameInChildren: function(elem, oldName, location, file) {
let innerItems, targetElem, targetElemPerms;
@@ -2545,7 +2581,11 @@ var ICEcoder = {
ic.copyFiles(ic.selectedFiles);
ic.pasteFiles(tgtPath);
} else {
- ic.moveFile(filePath,tgtPath.replace(/\|/g, "/") + "/" + fileName);
+ // Clear the background of item you just dropped onto
+ this.filesFrame.contentWindow.document.getElementById(tgtPath.replace(/\//g, "|")).style.background = '';
+ // If the tgtPath is not the root, postfix the path with a pipe
+ if ("|" !== tgtPath) {tgtPath += "|"};
+ ic.moveFile(filePath,tgtPath.replace(/\|/g, "/") + fileName);
}
}, 4, this);
}