0||$saveType=="saveAs") { $finalAction = strpos($fileOrig,"[NEW]")>0 ? "save as" : "save"; $fileURLPart = isset($file) ? $file : ""; $fileMDTURLPart = isset($_GET["fileMDT"]) && $_GET["fileMDT"]!="undefined" ? "&fileMDT=".numClean($_GET['fileMDT']) : ""; $doNext = ' top.ICEcoder.serverMessage(); fileLoc = "'.$fileLoc.'"; newFileName = top.ICEcoder.getInput("'.$t['Enter filename to...'].' "+(fileLoc!="" ? fileLoc : "/"),""); if (newFileName) { if (newFileName.substr(0,1)!="/") {newFileName = "/" + newFileName}; newFileName = fileLoc + newFileName; if (top.document.getElementById("filesFrame").contentWindow.document.getElementById(newFileName.replace(/\\\//g,"|"))) { overwriteOK = top.ICEcoder.ask("'.$t['That file exists...'].'"); } }; if ("undefined" == typeof newFileName || (newFileName && "undefined" == typeof overwriteOK) || ("undefined" != typeof overwriteOK && overwriteOK)) { saveURL = "lib/file-control-xhr.php?action=save&file='.$fileURLPart.$fileMDTURLPart.'&csrf='.$_GET["csrf"].'"; var xhr = top.ICEcoder.xhrObj(); xhr.onreadystatechange=function() { if (xhr.readyState==4 && xhr.status==200) { /* console.log(xhr.responseText); */ var statusArray = JSON.parse(xhr.responseText); /* console.log(statusArray); */ if (statusArray.status.error) { top.ICEcoder.message(statusArray.status.errorMsg); } else { eval(statusArray.action.doNext); } } }; /* console.log(\'Calling \'+saveURL+\' via XHR\'); */ xhr.open("POST",saveURL,true); xhr.setRequestHeader(\'Content-type\', \'application/x-www-form-urlencoded\'); xhr.send(\'newFileName=\'+newFileName+\'&contents=\'+top.document.getElementById(\'saveTemp1\').value); top.ICEcoder.serverMessage("'.$t['Saving'].'
" + "'.($finalAction == "Save" ? "newFileName" : "'".$fileName."'").'"); } else { top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0); }'; // =================== // FILE CONTENT SAVING // =================== } elseif (isset($_POST['contents'])) { $finalAction = isset($_POST["newFileName"]) ? "save as" : "save"; // ================= // FILE IS WRITEABLE // ================= if (!$demoMode && ((file_exists($file) && is_writable($file)) || isset($_POST['newFileName']) && $_POST['newFileName']!="")) { $filemtime = $serverType=="Linux" ? filemtime($file) : "1000000"; // ======================= // MDT'S MATCH, WRITE FILE // ======================= if (!(isset($_GET['fileMDT']))||$filemtime==$_GET['fileMDT']) { // Newly created files have the perms set too $setPerms = (!file_exists($file)) ? true : false; $fh = fopen($file, 'w') or die($t['Sorry, cannot save']); // replace \r\n (Windows), \r (old Mac) and \n (Linux) line endings with whatever we chose to be lineEnding $contents = $_POST['contents']; $contents = str_replace("\r\n", $ICEcoder["lineEnding"], $contents); $contents = str_replace("\r", $ICEcoder["lineEnding"], $contents); $contents = str_replace("\n", $ICEcoder["lineEnding"], $contents); // Now write that content, close the file and clear the statcache fwrite($fh, $contents); fclose($fh); if ($setPerms) { chmod($file,octdec($ICEcoder['newFilePerms'])); } clearstatcache(); $filemtime = $serverType=="Linux" ? filemtime($file) : "1000000"; $doNext .= 'top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1]="'.$filemtime.'";'; // Reload file manager, rename tab & remove old file highlighting if it was a new file if (isset($_POST['newFileName']) && $_POST['newFileName']!="") { $doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\',false,false,false,\'file\');'; $doNext .= 'top.ICEcoder.renameTab(top.ICEcoder.selectedTab,\''.$fileLoc."/".$fileName.'\');'; if (!strpos($_GET['file'],"[NEW]")) { // We're saving as a new file, so unhighlight the old name in the file manager if visible $doNext .= "fileLink = top.ICEcoder.filesFrame.contentWindow.document.getElementById('".str_replace("/","|",$fileLoc)."|".basename($_GET['file'])."');"; $doNext .= "if (fileLink) {fileLink.style.backgroundColor = top.ICEcoder.tabBGnormal; fileLink.style.color = top.ICEcoder.tabFGnormalFile};"; } } // Reload previewWindow window if not a Markdown file // In doing this, we check on an interval for the page to be complete and if we last saw it loading // When we are done loading, so set the loading status to false and load plugins ontop... $doNext .= 'if (top.ICEcoder.previewWindow.location && top.ICEcoder.previewWindow.location.pathname.indexOf(".md")==-1) { top.ICEcoder.previewWindowLoading = false; top.ICEcoder.previewWindow.location.reload(true); top.ICEcoder.checkPreviewWindowLoadingInt = setInterval(function() { if (top.ICEcoder.previewWindow.document.readyState != "loading" && top.ICEcoder.previewWindowLoading) { top.ICEcoder.previewWindowLoading = false; try {top.ICEcoder.doPesticide();} catch(err) {}; try {top.ICEcoder.doStatsJS(\'save\');} catch(err) {}; clearInterval(top.ICEcoder.checkPreviewWindowLoadingInt); } else { top.ICEcoder.previewWindowLoading = top.ICEcoder.previewWindow.document.readyState == "loading" ? true : false; } },4); };'; // Finally, set previous files, indicate changes, set saved points and redo tabs $doNext .= ' top.ICEcoder.setPreviousFiles(); setTimeout(function(){top.ICEcoder.indicateChanges()},4); cM = top.ICEcoder.getcMInstance(); top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1] = cM.changeGeneration(); top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);'; // Run our custom processes include_once("../processes/on-file-save.php"); // ====================================================== // MDT'S DON'T MATCH, OFFER TO LOAD FILE & SHOW DIFF VIEW // ====================================================== } else { $loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true); echo '","",htmlentities($loadedFile)).''; echo '