From c19df45ec1d7837166d36e8770bf57513230b2db Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Tue, 8 May 2012 07:56:13 +0100 Subject: [PATCH] New openFilesMDT array, stop erroneously showing changed tab & minor fixes openFilesMDTs array now stores modified datetimes for collab edits Stop clearing value of editor instance to avoid change tab error New code to work with openFilesMDTs array Stop switching to another tab unless we're closing current --- lib/coder.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lib/coder.js b/lib/coder.js index 581214b..63200de 100644 --- a/lib/coder.js +++ b/lib/coder.js @@ -16,6 +16,7 @@ var ICEcoder = { delKeyDown: false, // Indicates if DEL keydown canSwitchTabs: true, // Stops switching of tabs when trying to close openFiles: [], // Array of open file URLs + openFileMDTs: [], // Array of open file modification datetimes cMInstances: [], // List of CodeMirror instance no's nextcMInstance: 1, // Next available CodeMirror instance no selectedFiles: [], // Array of selected files @@ -406,7 +407,7 @@ var ICEcoder = { top.ICEcoder.openFiles.push(top.ICEcoder.shortURL); // Setup a new tab - closeTabLink = ''; + closeTabLink = ''; top.document.getElementById('tab'+(top.ICEcoder.openFiles.length)).style.display = "inline-block"; top.document.getElementById('tab'+(top.ICEcoder.openFiles.length)).innerHTML = top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1] + " " + closeTabLink; @@ -505,7 +506,7 @@ var ICEcoder = { // Alter array indicating which files have changed redoChangedContent: function(evt) { var key; - + key = evt.keyCode ? evt.keyCode : evt.which ? evt.which : evt.charCode; // Exclude a few keys such as Escape... if (top.ICEcoder.ctrlKeyDown==false && key!=27 && key!=20 && (key<16||key>19) && (key<37||key>40) && (key!=144||key!=145) && (key!=44||key!=45) && (key<33||key>36) && (key!=91||key!=92) && (key<112||key>123)) { @@ -533,19 +534,18 @@ var ICEcoder = { // reduce the tab reference number on the closeTab link by 1 top.document.getElementById('tab'+i).innerHTML = top.document.getElementById('tab'+i).innerHTML.replace(("closeTab("+(i+1)+")"),"closeTab("+i+")"); } - - // hide the instance we're closing by setting the hide class, clear the value & remove from the array + // hide the instance we're closing by setting the hide class and removing from the array ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[closeTabNum-1]].setOption('theme',top.theme+' hidden'); - ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[closeTabNum-1]].setValue(''); top.ICEcoder.cMInstances.splice(closeTabNum-1,1); - // clear the rightmost tab (or only one left in a 1 tab scenario) & remove from the array top.document.getElementById('tab'+ICEcoder.openFiles.length).style.display = "none"; top.document.getElementById('tab'+ICEcoder.openFiles.length).innerHTML = ""; ICEcoder.openFiles.pop(); - - // Determin the new selectedTab number, reduced by 1 if we have some tabs, 0 for a reset state - ICEcoder.openFiles.length>0 ? ICEcoder.selectedTab-=1 : ICEcoder.selectedTab = 0; + ICEcoder.openFileMDTs.pop(); + // If we're closing the selected tab, determin the new selectedTab number, reduced by 1 if we have some tabs, 0 for a reset state + if (ICEcoder.selectedTab==closeTabNum) { + ICEcoder.openFiles.length>0 ? ICEcoder.selectedTab-=1 : ICEcoder.selectedTab = 0; + } if (ICEcoder.openFiles.length>0 && ICEcoder.selectedTab==0) {ICEcoder.selectedTab=1}; // hide the content area if we have no tabs open @@ -557,7 +557,6 @@ var ICEcoder = { ICEcoder.switchMode(); ICEcoder.switchTab(ICEcoder.selectedTab); } - // Highlight the selected tab after splicing the change state out of the array top.ICEcoder.changedContent.splice(closeTabNum-1,1); top.parent.ICEcoder.redoTabHighlight(ICEcoder.selectedTab); @@ -761,8 +760,8 @@ var ICEcoder = { var saveType; saveAs ? saveType = "saveAs" : saveType = "save"; - - top.ICEcoder.serverQueue("add","lib/file-control.php?action=save&file="+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(/\//g,"|")+"&saveType="+saveType); + + top.ICEcoder.serverQueue("add","lib/file-control.php?action=save&file="+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(/\//g,"|")+"&fileMDT="+ICEcoder.openFileMDTs[ICEcoder.selectedTab-1]+"&saveType="+saveType); top.ICEcoder.serverMessage('Saving
'+ICEcoder.openFiles[ICEcoder.selectedTab-1]); },