mirror of
https://github.com/icecoder/ICEcoder.git
synced 2026-03-16 13:27:05 +01:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf06a64734 | ||
|
|
7429ec9576 | ||
|
|
176c8fc557 | ||
|
|
d2e5476432 | ||
|
|
c53b0ba3ad | ||
|
|
e2137b3503 | ||
|
|
dc051e993b | ||
|
|
a0dbbbe397 | ||
|
|
a5d473c546 | ||
|
|
2204a15350 | ||
|
|
971cd573fc | ||
|
|
d3ba467e6a | ||
|
|
eb68960dca | ||
|
|
1297705b53 | ||
|
|
1a81c0b918 | ||
|
|
dd351eeaa5 | ||
|
|
c505f4249d | ||
|
|
26340a0d54 | ||
|
|
6779ec9ab8 | ||
|
|
9a4944f91d | ||
|
|
5a2f004c20 | ||
|
|
939eed7b3e | ||
|
|
e7515b0fdb | ||
|
|
3eb97098bb |
@@ -1,6 +0,0 @@
|
||||
# CodeMirror 2
|
||||
|
||||
CodeMirror 2 is a rewrite of [CodeMirror
|
||||
1](http://github.com/marijnh/CodeMirror). The docs live
|
||||
[here](http://codemirror.net/doc/manual.html), and the project page is
|
||||
[http://codemirror.net/](http://codemirror.net/).
|
||||
File diff suppressed because one or more lines are too long
8
CodeMirror-2.3/README.md
Normal file
8
CodeMirror-2.3/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# CodeMirror 2
|
||||
|
||||
CodeMirror is a JavaScript component that provides a code editor in
|
||||
the browser. When a mode is available for the language you are coding
|
||||
in, it will color your code, and optionally help with indentation.
|
||||
|
||||
The project page is http://codemirror.net
|
||||
The manual is at http://codemirror.net/doc/manual.html
|
||||
1
CodeMirror-2.3/lib/codemirror-compressed.js
Normal file
1
CodeMirror-2.3/lib/codemirror-compressed.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1,10 +1,16 @@
|
||||
.CodeMirror {
|
||||
line-height: 1em;
|
||||
font-family: monospace;
|
||||
|
||||
/* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */
|
||||
position: relative;
|
||||
/* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
overflow: auto;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
height: 300px;
|
||||
/* This is needed to prevent an IE[67] bug where the scrolled content
|
||||
is visible outside of the scrolling box. */
|
||||
@@ -12,6 +18,37 @@
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Vertical scrollbar */
|
||||
.CodeMirror-scrollbar {
|
||||
float: right;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
|
||||
/* This corrects for the 1px gap introduced to the left of the scrollbar
|
||||
by the rule for .CodeMirror-scrollbar-inner. */
|
||||
margin-left: -1px;
|
||||
}
|
||||
.CodeMirror-scrollbar-inner {
|
||||
/* This needs to have a nonzero width in order for the scrollbar to appear
|
||||
in Firefox and IE9. */
|
||||
width: 1px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-overlap {
|
||||
/* Ensure that the scrollbar appears in Lion, and that it overlaps the content
|
||||
rather than sitting to the right of it. */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
float: none;
|
||||
right: 0;
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-nonoverlap {
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-ie7 {
|
||||
min-width: 18px;
|
||||
}
|
||||
|
||||
.CodeMirror-gutter {
|
||||
position: absolute; left: 0; top: 0;
|
||||
z-index: 10;
|
||||
@@ -29,6 +66,11 @@
|
||||
.CodeMirror-lines {
|
||||
padding: .4em;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
}
|
||||
.CodeMirror-lines * {
|
||||
/* Necessary for throw-scrolling to decelerate properly on Safari. */
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.CodeMirror pre {
|
||||
@@ -3,7 +3,7 @@
|
||||
// released under the MIT license (../../LICENSE) like the rest of CodeMirror
|
||||
CodeMirror.tagRangeFinder = function(cm, line, hideEnd) {
|
||||
var nameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
|
||||
var nameChar = nameStartChar + "\-\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
|
||||
var nameChar = nameStartChar + "\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
|
||||
var xmlNAMERegExp = new RegExp("^[" + nameStartChar + "][" + nameChar + "]*");
|
||||
|
||||
var lineText = cm.getLine(line);
|
||||
@@ -110,10 +110,15 @@ CodeMirror.tagRangeFinder = function(cm, line, hideEnd) {
|
||||
};
|
||||
|
||||
CodeMirror.braceRangeFinder = function(cm, line, hideEnd) {
|
||||
var lineText = cm.getLine(line);
|
||||
var startChar = lineText.lastIndexOf("{");
|
||||
if (startChar < 0 || lineText.lastIndexOf("}") > startChar) return;
|
||||
var tokenType = cm.getTokenAt({line: line, ch: startChar}).className;
|
||||
var lineText = cm.getLine(line), at = lineText.length, startChar, tokenType;
|
||||
for (;;) {
|
||||
var found = lineText.lastIndexOf("{", at);
|
||||
if (found < 0) break;
|
||||
tokenType = cm.getTokenAt({line: line, ch: found}).className;
|
||||
if (!/^(comment|string)/.test(tokenType)) { startChar = found; break; }
|
||||
at = found - 1;
|
||||
}
|
||||
if (startChar == null || lineText.lastIndexOf("}") > startChar) return;
|
||||
var count = 1, lastLine = cm.lineCount(), end;
|
||||
outer: for (var i = line + 1; i < lastLine; ++i) {
|
||||
var text = cm.getLine(i), pos = 0;
|
||||
@@ -21,7 +21,7 @@
|
||||
.cm-s-ambiance .cm-bracket { color: #24C2C7; }
|
||||
.cm-s-ambiance .cm-tag { color: #fee4ff }
|
||||
.cm-s-ambiance .cm-attribute { color: #9B859D; }
|
||||
.cm-s-ambiance .cm-header {color: #blue;}
|
||||
.cm-s-ambiance .cm-header {color: blue;}
|
||||
.cm-s-ambiance .cm-quote { color: #24C2C7; }
|
||||
.cm-s-ambiance .cm-hr { color: pink; }
|
||||
.cm-s-ambiance .cm-link { color: #F4C20B; }
|
||||
@@ -42,7 +42,6 @@
|
||||
.cm-s-ambiance {
|
||||
line-height: 1.40em;
|
||||
font-family: Monaco, Menlo,"Andale Mono","lucida console","Courier New",monospace !important;
|
||||
font-size: 12px;
|
||||
color: #E6E1DC;
|
||||
background-color: #202020;
|
||||
-webkit-box-shadow: inset 0 0 10px black;
|
||||
@@ -2,12 +2,11 @@
|
||||
http://lesscss.org/ dark theme
|
||||
Ported to CodeMirror by Peter Kroon
|
||||
*/
|
||||
.CodeMirror{
|
||||
line-height: 15px;
|
||||
.cm-s-lesser-dark {
|
||||
line-height: 1.3em;
|
||||
}
|
||||
.cm-s-lesser-dark {
|
||||
font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Monaco', Courier, monospace !important;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
.cm-s-lesser-dark { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Loosely based on the Midnight Textmate theme */
|
||||
|
||||
.cm-s-night { background: #0a001f; color: #f8f8f8; }
|
||||
.cm-s-night div.CodeMirror-selected { background: #a8f !important; }
|
||||
.cm-s-night div.CodeMirror-selected { background: #447 !important; }
|
||||
.cm-s-night .CodeMirror-gutter { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-night .CodeMirror-gutter-text { color: #f8f8f8; }
|
||||
.cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
27
CodeMirror-2.3/theme/vibrant-ink.css
Normal file
27
CodeMirror-2.3/theme/vibrant-ink.css
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Taken from the popular Visual Studio Vibrant Ink Schema */
|
||||
|
||||
.cm-s-vibrant-ink { background: black; color: white; }
|
||||
.cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; }
|
||||
|
||||
.cm-s-vibrant-ink .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-vibrant-ink .CodeMirror-gutter-text { color: #d0d0d0; }
|
||||
.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-vibrant-ink .cm-keyword { color: #CC7832; }
|
||||
.cm-s-vibrant-ink .cm-atom { color: #FC0; }
|
||||
.cm-s-vibrant-ink .cm-number { color: #FFEE98; }
|
||||
.cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #FFC66D }
|
||||
.cm-s-vibrant-ink span.cm-variable-3, .cm-s-cobalt span.cm-def { color: #FFC66D }
|
||||
.cm-s-vibrant-ink .cm-operator { color: #888; }
|
||||
.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
|
||||
.cm-s-vibrant-ink .cm-string { color: #A5C25C }
|
||||
.cm-s-vibrant-ink .cm-string-2 { color: red }
|
||||
.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }
|
||||
.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }
|
||||
.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-header { color: #FF6400; }
|
||||
.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
|
||||
.cm-s-vibrant-ink .cm-link { color: blue; }
|
||||
12
editor.php
12
editor.php
@@ -1,7 +1,7 @@
|
||||
<?php include("lib/config.php");?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html style="margin: 0">
|
||||
<html style="margin: 0" onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'editor');top.ICEcoder.canResizeFilesW()}">
|
||||
<head>
|
||||
<title>CodeMirror 2: ICE Coders Editor of Choice</title>
|
||||
<?php include("lib/settings.php");?>
|
||||
@@ -19,15 +19,13 @@ if ($theme=="default") {
|
||||
}
|
||||
?>
|
||||
<style type="text/css">
|
||||
.CodeMirror {position: absolute; width: 0; background-color: #fff; top: 0px; z-index: 1}
|
||||
.CodeMirror-scroll {width: 100px; height: 100px;}
|
||||
.cm-s-visible {display: block; top: 0}
|
||||
.cm-s-hidden {display: none; top: 4000px}
|
||||
.CodeMirror {position: absolute; width: 0; background-color: #fff; top: 0px; width: 100px; z-index: 1}
|
||||
.CodeMirror-scroll {height: 100px;}
|
||||
.cm-s-activeLine {background: #000 !important;}
|
||||
/* Make sure this next one remains the 5th item, updated with JS */
|
||||
.cm-tab:after {position: relative; display: inline-block; width: 0; left: -1.4em; overflow: visible; color: #aaa; content: "<?php if($visibleTabs) {echo '\\21e5';};?>";}
|
||||
span.CodeMirror-matchhighlight {background: #555}
|
||||
.CodeMirror-focused span.CodeMirror-matchhighlight {color: #000; background: #555; !important}
|
||||
/* Make sure this next one remains the 6th item, updated with JS */
|
||||
.cm-tab:after {position: relative; display: inline-block; width: 0; left: -1.4em; overflow: visible; color: #aaa; content: "<?php if($visibleTabs) {echo '\\21e5';};?>";}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
||||
286
files.php
286
files.php
@@ -1,173 +1,137 @@
|
||||
<?php
|
||||
function fileManager($directory, $return_link) {
|
||||
$code = "";
|
||||
// Generates a list of all directories, sub-directories, and files in $directory
|
||||
// Remove trailing slash
|
||||
if(substr($directory, -1) == "/" ) {$directory = substr($directory, 0, strlen($directory)-1);};
|
||||
$code .= fileManager_dir($directory, $return_link);
|
||||
return $code;
|
||||
}
|
||||
|
||||
function fileManager_dir($directory, $return_link, $first_call=true) {
|
||||
if (!isset($_SESSION['restrictedFiles'])) {include("lib/settings.php");};
|
||||
$restrictedFiles = $_SESSION['restrictedFiles'];
|
||||
$bannedFiles = $_SESSION['bannedFiles'];
|
||||
$docRoot = str_replace("\\","/",$_SERVER['DOCUMENT_ROOT']);
|
||||
if (strrpos($_SERVER['DOCUMENT_ROOT'],":")) {
|
||||
$serverType = "Windows";
|
||||
} else {
|
||||
$serverType = "Linux";
|
||||
}
|
||||
// Chop off trailing slash
|
||||
if (strrpos($docRoot,"/")==strlen($docRoot)-1) {$docRoot = substr($docRoot,0,strlen($docRoot)-1);};
|
||||
$fileManager = "";
|
||||
|
||||
// Recursive function called by fileManager() to list directories/files
|
||||
// Get and sort directories/files
|
||||
if(function_exists("scandir")) {$file = scandir($directory);} else {$file = php4_scandir($directory);};
|
||||
natcasesort($file);
|
||||
|
||||
// Make directories first
|
||||
$files = $dirs = array();
|
||||
foreach($file as $this_file) {
|
||||
if(is_dir("$directory/$this_file")) {$dirs[] = $this_file;} else {$files[] = $this_file;};
|
||||
}
|
||||
|
||||
$file = array_merge($dirs, $files);
|
||||
|
||||
// Filter unwanted files
|
||||
if(!empty($bannedFiles)) {
|
||||
foreach(array_keys($file) as $key) {
|
||||
$fileFolder = $file[$key];
|
||||
for ($i=0;$i<count($bannedFiles);$i++) {
|
||||
if(strpos($fileFolder,$bannedFiles[$i])!==false) {unset($file[$key]);};
|
||||
}
|
||||
}
|
||||
}
|
||||
if(count($file) > 2) { // To ignore . and .. directories
|
||||
if($first_call) {
|
||||
// Root Directory
|
||||
$dirRep = str_replace("\\","/",$directory);
|
||||
$link = str_replace("[link]", "$dirRep/", $return_link);
|
||||
$link = str_replace("//","/",$link);
|
||||
$fileAtts = "";
|
||||
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($link)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="|_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
$fileManager = "<ul class=\"fileManager\">";
|
||||
$fileManager .= "<li class=\"pft-directory\"><a href=\"#\" onMouseOver=\"top.ICEcoder.overFileFolder('folder','$link')\" onMouseOut=\"top.ICEcoder.overFileFolder('folder','')\" style=\"position: relative; left:-22px\"> <span id=\"|\">/ [ROOT]</span> ".$fileAtts."</a>";
|
||||
$fileManager .= $fileManager .= fileManager_dir("$directory/", $return_link ,false);
|
||||
$fileManager .= "</li>";
|
||||
$first_call = false;
|
||||
} else {
|
||||
$fileManager = "<ul>";
|
||||
}
|
||||
foreach( $file as $this_file ) {
|
||||
$bannedFile=false;
|
||||
for ($i=0;$i<count($bannedFiles);$i++) {
|
||||
if (strpos($directory,$bannedFiles[$i])!=""||strpos($this_file,$bannedFiles[$i])!="") {
|
||||
$bannedFile=true;
|
||||
}
|
||||
}
|
||||
if( $this_file != "." && $this_file != ".." && $bannedFile == false) {
|
||||
if( is_dir("$directory/$this_file") ) {
|
||||
// Directory
|
||||
$dirCount++;
|
||||
$dirRep = str_replace("\\","/",$directory);
|
||||
$link = str_replace("[link]", "$dirRep/" . urlencode($this_file), $return_link);
|
||||
$link = str_replace("//","/",$link);
|
||||
|
||||
$restrictedFile=false;
|
||||
for ($i=0;$i<count($restrictedFiles);$i++) {
|
||||
if (strpos($link,$restrictedFiles[$i])!="") {
|
||||
$restrictedFile=true;
|
||||
}
|
||||
}
|
||||
|
||||
$fileAtts = "";
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($link)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="'.str_replace("/","|",str_replace($docRoot,"",$link)).'_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
if ($_SESSION['userLevel'] == 10 || ($_SESSION['userLevel'] < 10 && $restrictedFile==false)) {
|
||||
$fileManager .= "<li class=\"pft-directory\"><a href=\"#\" onMouseOver=\"top.ICEcoder.overFileFolder('folder','$link')\" onMouseOut=\"top.ICEcoder.overFileFolder('folder','')\" style=\"position: relative; left:-22px\"> <span id=\"".str_replace("/","|",str_replace($docRoot,"",$link))."\">" . htmlspecialchars($this_file) . "</span> ".$fileAtts."</a>";
|
||||
$fileManager .= fileManager_dir("$directory/$this_file", $return_link , false);
|
||||
$fileManager .= "</li>";
|
||||
} else {
|
||||
$fileManager .= "<li class=\"pft-directory\" style=\"cursor: pointer\"><span style=\"position: relative; left:-22px; color: #888\"> [HIDDEN] ".$fileAtts."</span></li>";
|
||||
}
|
||||
} else {
|
||||
// File
|
||||
$fileCount++;
|
||||
$fileBytes+=filesize($link);
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-" . substr($this_file, strrpos($this_file, ".") + 1);
|
||||
$dirRep = str_replace("\\","/",$directory);
|
||||
$link = str_replace("[link]", "$dirRep/" . urlencode($this_file), $return_link);
|
||||
$link = str_replace("//","/",$link);
|
||||
|
||||
$restrictedFile=false;
|
||||
for ($i=0;$i<count($restrictedFiles);$i++) {
|
||||
if (strpos($link,$restrictedFiles[$i])!="") {
|
||||
$restrictedFile=true;
|
||||
}
|
||||
}
|
||||
if ($_SESSION['userLevel'] == 10 || ($_SESSION['userLevel'] < 10 && $restrictedFile==false)) {
|
||||
$fileAtts = "";
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($link)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="'.str_replace("/","|",str_replace($docRoot,"",$link)).'_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
$fileManager .= "<li class=\"pft-file " . strtolower($ext) . "\"><a nohref onMouseOver=\"top.ICEcoder.overFileFolder('file','$link')\" onMouseOut=\"top.ICEcoder.overFileFolder('file','')\" style=\"position: relative; left:-22px; cursor: pointer\"> <span id=\"".str_replace("/","|",str_replace($docRoot,"",$link))."\">" . htmlspecialchars($this_file) . "</span> ".$fileAtts."</a></li>";
|
||||
} else {
|
||||
$fileAtts = "<img src=\"images/padlock.png\" style=\"cursor: pointer\" onClick=\"top.ICEcoder.message('Sorry, you need higher admin level rights to view.')\">";
|
||||
$fileManager .= "<li class=\"pft-file " . strtolower($ext) . "\" style=\"cursor: default\"><span style=\"position: relative; left:-22px; color: #888\"> [HIDDEN] ".$fileAtts."</span></li>";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$fileManager .= "</ul>";
|
||||
}
|
||||
$varOutput = "";
|
||||
if ($dirCount) {$varOutput .= "top.ICEcoder.dirCount+=".$dirCount.";".PHP_EOL;};
|
||||
if ($fileCount) {$varOutput .= "top.ICEcoder.fileCount+=".$fileCount.";".PHP_EOL;};
|
||||
if ($fileBytes) {$varOutput .= "top.ICEcoder.fileBytes+=".$fileBytes.";".PHP_EOL;};
|
||||
// After outputting the fileManager, output the JS vars, but only the first time
|
||||
return $fileManager."<script>if (top.ICEcoder.dirCount==0) {".PHP_EOL.$varOutput."}</script>";
|
||||
}
|
||||
|
||||
// For PHP4 compatibility
|
||||
function php4_scandir($dir) {
|
||||
$dh = opendir($dir);
|
||||
while( false !== ($filename = readdir($dh)) ) {
|
||||
$files[] = $filename;
|
||||
}
|
||||
sort($files);
|
||||
return($files);
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="top.ICEcoder.getMouseXY(event);top.ICEcoder.canResizeFilesW()" onContextMenu="top.ICEcoder.rightClickedFile=top.ICEcoder.thisFileFolderLink; return top.ICEcoder.showMenu()" onClick="top.ICEcoder.selectFileFolder()">
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'files');top.ICEcoder.canResizeFilesW()}" onContextMenu="top.ICEcoder.rightClickedFile=top.ICEcoder.thisFileFolderLink; return top.ICEcoder.showMenu()" onClick="top.ICEcoder.selectFileFolder()">
|
||||
<head>
|
||||
<title>ICE Coder File Manager</title>
|
||||
<title>ICEcoder File Manager</title>
|
||||
<link rel="stylesheet" type="text/css" href="lib/files.css">
|
||||
|
||||
<script src="lib/coder.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body onLoad="top.ICEcoder.fileManager()" onDblClick="top.ICEcoder.openFile()" onKeyDown="return top.ICEcoder.interceptKeys('files', event);" onKeyUp="top.ICEcoder.resetKeys(event);">
|
||||
<div onClick="top.ICEcoder.refreshFileManager()" class="refresh"><img src="images/refresh.png"></div>
|
||||
<script>
|
||||
top.ICEcoder.dirCount = 0;
|
||||
top.ICEcoder.fileCount = 0;
|
||||
top.ICEcoder.fileBytes = 0;
|
||||
</script>
|
||||
<?php
|
||||
<div class="refresh" onClick="top.ICEcoder.refreshFileManager()"><img src="images/refresh.png"></div>
|
||||
|
||||
echo fileManager($_SERVER['DOCUMENT_ROOT'], "[link]");
|
||||
<?php
|
||||
include("lib/settings.php");
|
||||
$restrictedFiles = $_SESSION['restrictedFiles'];
|
||||
$bannedFiles = $_SESSION['bannedFiles'];
|
||||
strrpos($_SERVER['DOCUMENT_ROOT'],":") ? $serverType = "Windows" : $serverType = "Linux";
|
||||
|
||||
// Function to sort given values alphabetically
|
||||
function alphasort($a, $b) {
|
||||
return strcasecmp($a->getPathname(), $b->getPathname());
|
||||
}
|
||||
|
||||
// Class to put forward the values for sorting
|
||||
class SortingIterator implements IteratorAggregate {
|
||||
private $iterator = null;
|
||||
public function __construct(Traversable $iterator, $callback) {
|
||||
$array = iterator_to_array($iterator);
|
||||
usort($array, $callback);
|
||||
$this->iterator = new ArrayIterator($array);
|
||||
}
|
||||
public function getIterator() {
|
||||
return $this->iterator;
|
||||
}
|
||||
}
|
||||
|
||||
// Get a full list of dirs & files and begin sorting using above class & function
|
||||
$path = $_SERVER['DOCUMENT_ROOT'];
|
||||
$objectList = new SortingIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST), 'alphasort');
|
||||
|
||||
// With that done, create arrays for out final ordered list and a temp container of files
|
||||
$finalArray = $tempArray = array();
|
||||
|
||||
// To start, push folders from object into finalArray, files into tempArray
|
||||
foreach ($objectList as $objectRef) {
|
||||
$fileFolderName = rtrim(substr($objectRef->getPathname(), strlen($path)),"..");
|
||||
$canAdd = true;
|
||||
for ($i=0;$i<count($bannedFiles);$i++) {
|
||||
if(strpos($fileFolderName,$bannedFiles[$i])!==false) {$canAdd = false;}
|
||||
}
|
||||
if ($objectRef->getFilename()!="." && $fileFolderName[strlen($fileFolderName)-1]!="/" && $canAdd) {
|
||||
$fileFolderName!="/" && is_dir($path.$fileFolderName) ? array_push($finalArray,$fileFolderName) : array_push($tempArray,$fileFolderName);
|
||||
}
|
||||
}
|
||||
|
||||
// Now push root files onto the end of finalArray and splice from the temp, leaving only files that reside in subdirs
|
||||
for ($i=0;$i<count($tempArray);$i++) {
|
||||
if (count(explode("/",$tempArray[$i]))==2) {
|
||||
array_push($finalArray,$tempArray[$i]);
|
||||
array_splice($tempArray,$i,1);
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
|
||||
// Lastly we push remaining files into the right subdirs in finalArray
|
||||
for ($i=0;$i<count($tempArray);$i++) {
|
||||
$insertAt = array_search(dirname($tempArray[$i]),$finalArray)+1;
|
||||
for ($j=$insertAt;$j<count($finalArray);$j++) {
|
||||
if ( strcasecmp(dirname($finalArray[$j]), dirname($tempArray[$i]))==0 &&
|
||||
strcasecmp(basename($finalArray[$j]), basename($tempArray[$i]))<0 ||
|
||||
strstr(dirname($finalArray[$j]),dirname($tempArray[$i]))) {
|
||||
$insertAt++;
|
||||
}
|
||||
}
|
||||
array_splice($finalArray, $insertAt, 0, $tempArray[$i]);
|
||||
}
|
||||
|
||||
// Finally, we have our ordered list, so display in a UL
|
||||
$fileAtts = "";
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($path)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="|_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
echo "<ul class=\"fileManager\">\n<li class=\"pft-directory\"><a href=\"#\" title=\"/\" onMouseOver=\"top.ICEcoder.overFileFolder('folder','$path/')\" onMouseOut=\"top.ICEcoder.overFileFolder('folder','')\" style=\"position: relative; left:-22px\"> <span id=\"|\">/ [ROOT]</span> ".$fileAtts."</a></li>\n";
|
||||
$lastPath="";
|
||||
for ($i=0;$i<count($finalArray);$i++) {
|
||||
$fileFolderName = str_replace("\\","/",$finalArray[$i]);
|
||||
is_dir($path.$fileFolderName) ? $type="folder" : $type="file";
|
||||
$type=="folder" ? $dirCount++ : $fileCount++;
|
||||
if (!is_dir($path.$fileFolderName)) {
|
||||
$fileBytes+=filesize($path.$fileFolderName);
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-".pathinfo($path.$fileFolderName, PATHINFO_EXTENSION);
|
||||
}
|
||||
$thisDepth = count(explode("/",$fileFolderName));
|
||||
$lastDepth = count(explode("/",$lastPath));
|
||||
if ($thisDepth > $lastDepth) {echo "<ul>\n";}
|
||||
if ($thisDepth < $lastDepth) {
|
||||
for ($j=$lastDepth;$j>$thisDepth;$j--) {
|
||||
echo "</ul>\n";
|
||||
}
|
||||
}
|
||||
$restrictedFile=false;
|
||||
for ($j=0;$j<count($restrictedFiles);$j++) {
|
||||
if (strpos($fileFolderName,$restrictedFiles[$j])!="") {
|
||||
$restrictedFile=true;
|
||||
}
|
||||
}
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($path.$fileFolderName)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="'.str_replace("/","|",$fileFolderName).'_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
$type == "folder" ? $class = 'pft-directory' : $class = 'pft-file '.strtolower($ext);
|
||||
if ($_SESSION['userLevel'] == 10 || ($_SESSION['userLevel'] < 10 && !$restrictedFile)) {
|
||||
echo "<li class=\"".$class."\"><a href=\"#\" title=\"$fileFolderName\" onMouseOver=\"top.ICEcoder.overFileFolder('$type','$path$fileFolderName')\" onMouseOut=\"top.ICEcoder.overFileFolder('$type','')\" style=\"position: relative; left:-22px\"> <span id=\"".str_replace("/","|",$fileFolderName)."\">".basename($fileFolderName)."</span> ".$fileAtts."</a>\n";
|
||||
} else {
|
||||
if ($type == "file") {$fileAtts = "<img src=\"images/padlock.png\" style=\"cursor: pointer\" onClick=\"top.ICEcoder.message('Sorry, you need higher admin level rights to view.')\">";}
|
||||
echo "<li class=\"".$class."\" style=\"cursor: default\"><span style=\"position: relative; left:-22px; color: #888\"> [HIDDEN] ".$fileAtts."</span>\n";
|
||||
}
|
||||
if ($i<count($finalArray)) {echo "</li>\n";}
|
||||
$lastPath = $fileFolderName;
|
||||
}
|
||||
echo "</ul>\n</ul>\n";
|
||||
|
||||
echo "<script>\n";
|
||||
$varOutput = "top.ICEcoder.dirCount=";
|
||||
$dirCount ? $varOutput .= $dirCount.";\n" : "0;\n";
|
||||
$varOutput .= "top.ICEcoder.fileCount=";
|
||||
$fileCount ? $varOutput .= $fileCount.";\n" : "0;\n";
|
||||
$varOutput .= "top.ICEcoder.fileBytes=";
|
||||
$fileBytes ? $varOutput .= $fileBytes.";\n" : "0;\n";
|
||||
// Output the JS vars
|
||||
echo $varOutput;
|
||||
echo "</script>\n";
|
||||
?>
|
||||
|
||||
<iframe name="fileControl" style="display: none"></iframe>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 7.1 KiB |
@@ -27,7 +27,7 @@ if ($checkUpdates) {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'top');top.ICEcoder.canResizeFilesW()}">
|
||||
<head>
|
||||
<title>ICE Coder - <?php echo $versionNo;?></title>
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
@@ -61,7 +61,7 @@ previousFiles = [<?php
|
||||
<script language="JavaScript" src="lib/coder.js"></script>
|
||||
</head>
|
||||
|
||||
<body onLoad="ICEcoder.init(<?php if ($_SESSION['userLevel'] == 10) {echo "'login'";} ?>)<?php echo $onLoadExtras;?>" onResize="ICEcoder.setLayout()" onMouseMove="top.ICEcoder.getMouseXY(event);top.ICEcoder.canResizeFilesW()" onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onKeyDown="return ICEcoder.interceptKeys('coder', event);" onKeyUp="parent.ICEcoder.resetKeys(event);">
|
||||
<body onLoad="ICEcoder.init(<?php if ($_SESSION['userLevel'] == 10) {echo "'login'";} ?>)<?php echo $onLoadExtras;?>" onResize="ICEcoder.setLayout()" onKeyDown="return ICEcoder.interceptKeys('coder', event);" onKeyUp="parent.ICEcoder.resetKeys(event);">
|
||||
|
||||
<div id="blackMask" class="blackMask" onClick="ICEcoder.showHide('hide',this)">
|
||||
<div class="popupVCenter">
|
||||
@@ -141,7 +141,7 @@ previousFiles = [<?php
|
||||
<div class="findReplace">
|
||||
<div class="findText">Find</div>
|
||||
<input type="text" name="find" value="" id="find" class="textbox find" onKeyUp="ICEcoder.findReplace('find',true,false)">
|
||||
<div class="findTextPlural">'s</div>
|
||||
|
||||
<select name="connector" onChange="ICEcoder.findReplaceOptions()">
|
||||
<option>in</option>
|
||||
<option>and</option>
|
||||
|
||||
@@ -94,15 +94,15 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
}
|
||||
.files .accountOptions {position: relative; height: 31px; width: 200px; margin-left: 15px; margin-top: 8px}
|
||||
.files .accountOptions img {cursor: pointer}
|
||||
.files .accountPassword {position: relative; border: 1px solid #888; background-color: #999; height: 18px; width: 140px; margin-left: 14px; margin-top: 15px}
|
||||
.files .accountPassword {position: relative; border: 0; background-color: #333; color: #fff; height: 18px; width: 140px; margin-left: 14px; margin-top: 16px}
|
||||
.files input:focus, .findReplace input:focus, .findReplace select:focus, .accountPassword:focus {
|
||||
outline: none;
|
||||
-webkit-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
-moz-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
}
|
||||
.files .button {position: absolute; border: 0; background: #999; color: #555; height:20px; margin-top: 16px; margin-left: 5px; font-size: 11px; cursor: pointer}
|
||||
.files .button:hover {background-color: #444; color: #eee}
|
||||
.files .button {position: absolute; border: 0; background: #444; color: #eee; height:20px; margin-top: 16px; margin-left: 5px; font-size: 11px; cursor: pointer}
|
||||
.files .button:hover {background-color: #222; color: #eee}
|
||||
.files .lock {position: relative; margin-left: 225px; margin-top: -20px; z-index: 1}
|
||||
.files .frame {display: inline-block; width: 250px}
|
||||
.files .serverMessage {position: absolute; display: inline-block; width: 450px; bottom: 0; margin-bottom: 30px; background-color: rgba(255,255,255,0.8); font-size: 10px; padding: 7px 12px; opacity: 0;
|
||||
@@ -127,8 +127,7 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.findBar .findReplace {position: absolute; z-index: 1}
|
||||
.findReplace select {position: relative; font-size: 10px; margin: 8px 2px 0 2px; top: -2px;}
|
||||
.findReplace .findText {display: inline-block; height: 21px; font-size: 10px; margin: 8px 2px 0 2px; margin-left: 43px}
|
||||
.findReplace .find {position: relative; width: 120px; height: 16px; border: 0; top: -2px; font-size: 10px; padding-left: 5px}
|
||||
.findReplace .findTextPlural {display: inline-block; height: 21px; font-size: 10px; margin: 8px 2px 0 0}
|
||||
.findReplace .find {position: relative; width: 120px; height: 14px; border: 0; top: -2px; font-size: 10px; padding-left: 5px; margin-right: 3px}
|
||||
.findReplace .replaceAction {margin: 0 2px 0 0; top: -2px}
|
||||
.findReplace .replaceText {height: 21px; font-size: 10px; margin: 8px 2px 0 2px}
|
||||
.findReplace .replace {position: relative; width: 120px; height: 16px; border: 0; top: -2px; font-size: 10px; padding-left: 5px}
|
||||
@@ -161,5 +160,6 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.screenContainer .screenVCenter {#position: absolute; display: table-cell; #top: 50%; vertical-align: middle; text-align: center}
|
||||
.screenVCenter .screenCenter {#position: relative; #top: -50%; text-align: center; display: inline}
|
||||
.screenCenter .version {position: relative; display: block; margin: 5px 0 15px 0; font-size: 10px; color: #bbb}
|
||||
.screenCenter .accountPassword {border: 1px solid #888; height: 18px}
|
||||
.screenCenter .button {border: 0; background: #666; color: #fff; height: 22px; cursor: pointer}
|
||||
.screenCenter .accountPassword {border: 0; background-color: #333; color: #fff; height: 20px}
|
||||
.screenCenter .button {border: 0; background: #444; color: #eee; height: 22px; cursor: pointer}
|
||||
.screenCenter .button:hover {background-color: #333; color: #eee}
|
||||
113
lib/coder.js
113
lib/coder.js
@@ -24,6 +24,7 @@ var ICEcoder = {
|
||||
stickyTabWindow: false, // Target variable for the sticky tab window
|
||||
pluginIntervalRefs: [], // Array of plugin interval refs
|
||||
dragSrcEl: null, // Tab element being dragged
|
||||
ready: false, // Indicates if ICEcoder is ready for action
|
||||
|
||||
// Don't consider these tags as part of nesting as they're singles, JS, PHP or Ruby code blocks
|
||||
tagNestExceptions: ["!DOCTYPE","meta","link","img","br","hr","input","script","?php","?","%"],
|
||||
@@ -50,6 +51,8 @@ var ICEcoder = {
|
||||
if (login) {
|
||||
top.document.getElementById('accountLogin').style.top = "-50px";
|
||||
setTimeout(function() {top.document.getElementById('accountLoginContainer').style.display = "none";},300);
|
||||
} else {
|
||||
top.document.getElementsByName('loginPassword')[0].focus();
|
||||
}
|
||||
|
||||
// Add drag based events to our tabs
|
||||
@@ -61,6 +64,7 @@ var ICEcoder = {
|
||||
tab.addEventListener('drop', ICEcoder.handleDrop, false);
|
||||
tab.addEventListener('dragend', ICEcoder.handleDragEnd, false);
|
||||
});
|
||||
top.ICEcoder.ready = true;
|
||||
},
|
||||
|
||||
// Set our layout according to the browser size
|
||||
@@ -88,12 +92,11 @@ var ICEcoder = {
|
||||
cMCSS = ICEcoder.content.contentWindow.document.styleSheets[2];
|
||||
cMCSS.rules ? strCSS = 'rules' : strCSS = 'cssRules';
|
||||
for(var i=0;i<cMCSS[strCSS].length;i++) {
|
||||
if(cMCSS[strCSS][i].selectorText==".CodeMirror-scroll") {
|
||||
if(cMCSS[strCSS][i].selectorText==".CodeMirror") {
|
||||
cMCSS[strCSS][i].style['width'] = ICEcoder.content.style.width;
|
||||
cMCSS[strCSS][i].style['height'] = ICEcoder.content.style.height;
|
||||
}
|
||||
if(cMCSS[strCSS][i].selectorText==".cm-s-visible") {
|
||||
cMCSS[strCSS][i].style['width'] = ICEcoder.content.style.width;
|
||||
if(cMCSS[strCSS][i].selectorText==".CodeMirror-scroll") {
|
||||
cMCSS[strCSS][i].style['height'] = ICEcoder.content.style.height;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -363,9 +366,10 @@ var ICEcoder = {
|
||||
|
||||
// Set all cM instances to be hidden, then make our selected instance visable
|
||||
for (var i=0;i<ICEcoder.cMInstances.length;i++) {
|
||||
ICEcoder.content.contentWindow['cM'+ICEcoder.cMInstances[i]].setOption('theme',top.theme+' hidden');
|
||||
ICEcoder.content.contentWindow['cM'+ICEcoder.cMInstances[i]].getWrapperElement().style.display = "none";
|
||||
}
|
||||
cM.setOption('theme',top.theme+' visible');
|
||||
cM.setOption('theme',top.theme);
|
||||
cM.getWrapperElement().style.display = "block";
|
||||
|
||||
// Focus on & refresh our selected instance
|
||||
cM.focus();
|
||||
@@ -563,7 +567,7 @@ var ICEcoder = {
|
||||
top.document.getElementById('tab'+i).innerHTML = top.document.getElementById('tab'+i).innerHTML.replace(("closeTab("+(i+1)+")"),"closeTab("+i+")").replace(("closeTabButton("+(i+1)+")"),"closeTabButton("+i+")");
|
||||
}
|
||||
// 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]].getWrapperElement().style.display = "none";
|
||||
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";
|
||||
@@ -602,37 +606,29 @@ var ICEcoder = {
|
||||
var aMenus = ICEcoder.filesFrame.contentWindow.document.getElementsByTagName("LI");
|
||||
for (var i=0; i<aMenus.length; i++) {
|
||||
var mclass = aMenus[i].className;
|
||||
if (mclass.indexOf("pft-directory") > -1) {
|
||||
if (mclass.indexOf("pft-directory")>-1) {
|
||||
var submenu=aMenus[i].childNodes;
|
||||
for (var j=0; j<submenu.length; j++) {
|
||||
if (submenu[j].tagName == "A") {
|
||||
if (submenu[j].tagName=="A") {
|
||||
submenu[j].onclick = function() {
|
||||
var node = this.nextSibling;
|
||||
while (1) {
|
||||
if (node != null) {
|
||||
if (node.tagName == "UL") {
|
||||
var d = (node.style.display == "none");
|
||||
node.style.display = (d) ? "block" : "none";
|
||||
this.className = (d) ? "open" : "closed";
|
||||
return false;
|
||||
}
|
||||
node = node.nextSibling;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
var node = this.parentNode.nextSibling.nextSibling;
|
||||
if (node.tagName=="UL") {
|
||||
var d=(node.style.display=="none");
|
||||
node.style.display=(d) ? "block" : "none";
|
||||
this.className=(d) ? this.parentNode.className="pft-directory dirOpen" : this.parentNode.className="pft-directory";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
submenu[j].className = (mclass.indexOf("open") > -1) ? "open" : "closed";
|
||||
}
|
||||
if (submenu[j].tagName == "UL") {
|
||||
submenu[j].style.display = (mclass.indexOf("open") > -1) ? "block" : "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
aMenus[0].childNodes[0].className = "open";
|
||||
aMenus[0].childNodes[1].style.display = "block";
|
||||
var ulElems = ICEcoder.filesFrame.contentWindow.document.getElementsByTagName("UL");
|
||||
for (var i=2; i<ulElems.length; i++) {
|
||||
ulElems[i].style.display = "none";
|
||||
}
|
||||
ulElems[0].childNodes[1].className = "pft-directory dirOpen";
|
||||
ulElems[1].style.display = "block";
|
||||
return false;
|
||||
},
|
||||
|
||||
@@ -811,22 +807,29 @@ var ICEcoder = {
|
||||
},
|
||||
|
||||
// Prompt a rename dialog on demand
|
||||
renameFile: function() {
|
||||
var renamedFile, shortURL;
|
||||
renameFile: function(oldName,newName) {
|
||||
var shortURL;
|
||||
|
||||
shortURL = top.ICEcoder.rightClickedFile.substr((top.ICEcoder.rightClickedFile.indexOf(shortURLStarts)+top.shortURLStarts.length),top.ICEcoder.rightClickedFile.length).replace(/\|/g,"/");
|
||||
renamedFile = top.ICEcoder.getInput('Please enter the new name for',shortURL);
|
||||
if (renamedFile) {
|
||||
if (!oldName) {
|
||||
shortURL = top.ICEcoder.rightClickedFile.substr((top.ICEcoder.rightClickedFile.indexOf(shortURLStarts)+top.shortURLStarts.length),top.ICEcoder.rightClickedFile.length).replace(/\|/g,"/");
|
||||
oldName = top.ICEcoder.rightClickedFile.replace(/\|/g,"/");
|
||||
} else {
|
||||
shortURL = oldName.substr((oldName.indexOf(shortURLStarts)+top.shortURLStarts.length),oldName.length).replace(/\|/g,"/");
|
||||
}
|
||||
if (!newName) {
|
||||
newName = top.ICEcoder.getInput('Please enter the new name for',shortURL);
|
||||
}
|
||||
if (newName) {
|
||||
for (var i=0;i<top.ICEcoder.openFiles.length;i++) {
|
||||
if(top.ICEcoder.openFiles[i]==shortURL.replace(/\|/g,"/")) {
|
||||
// rename array item and the tab
|
||||
top.ICEcoder.openFiles[i] = renamedFile;
|
||||
top.ICEcoder.openFiles[i] = newName;
|
||||
closeTabLink = '<a nohref onClick="top.ICEcoder.files.contentWindow.closeTab('+(i+1)+')"><img src="images/nav-close.gif" id="closeTabButton'+(i+1)+'" class="closeTab"></a>';
|
||||
top.document.getElementById('tab'+(i+1)).innerHTML = top.ICEcoder.openFiles[i] + " " + closeTabLink;
|
||||
}
|
||||
}
|
||||
top.ICEcoder.serverQueue("add","lib/file-control.php?action=rename&file="+renamedFile+"&oldFileName="+top.ICEcoder.rightClickedFile.replace(/\|/g,"/"));
|
||||
top.ICEcoder.serverMessage('<b>Renaming to</b><br>'+renamedFile);
|
||||
top.ICEcoder.serverQueue("add","lib/file-control.php?action=rename&file="+newName+"&oldFileName="+oldName);
|
||||
top.ICEcoder.serverMessage('<b>Renaming to</b><br>'+newName);
|
||||
|
||||
top.ICEcoder.setPreviousFiles();
|
||||
}
|
||||
@@ -891,7 +894,7 @@ var ICEcoder = {
|
||||
|
||||
// Find & replace text according to user selections
|
||||
findReplace: function(action,resultsOnly,buttonClick) {
|
||||
var find, findLen, replaceLen, cM, content, lineCount, numChars, charsToCursor, charCount, startPos, endPos, replaceQS;
|
||||
var find, findLen, replaceLen, cM, content, lineCount, numChars, charsToCursor, charCount, startPos, endPos, replaceQS, targetQS;
|
||||
|
||||
// Determine our find string, in lowercase and the length of that
|
||||
find = top.document.getElementById('find').value;
|
||||
@@ -990,10 +993,14 @@ var ICEcoder = {
|
||||
// Show the relevant multiple results popup
|
||||
if (find != "" && buttonClick) {
|
||||
replaceQS = "";
|
||||
targetQS = "";
|
||||
if (document.findAndReplace.connector.value=="and") {
|
||||
replaceQS = "&replace="+document.getElementById('replace').value;
|
||||
}
|
||||
top.document.getElementById('mediaContainer').innerHTML = '<iframe src="lib/multiple-results.php?find='+find+replaceQS+'" class="whiteGlow" style="width: 700px; height: 500px"></iframe>';
|
||||
if (document.findAndReplace.target.value.indexOf("file")>=0) {
|
||||
targetQS = "&target="+document.findAndReplace.target.value.replace(/ /g,"-");
|
||||
}
|
||||
top.document.getElementById('mediaContainer').innerHTML = '<iframe src="lib/multiple-results.php?find='+find+replaceQS+targetQS+'" class="whiteGlow" style="width: 700px; height: 500px"></iframe>';
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1125,7 +1132,7 @@ var ICEcoder = {
|
||||
},
|
||||
|
||||
// Get the mouse position on demand
|
||||
getMouseXY: function(e) {
|
||||
getMouseXY: function(e,area) {
|
||||
var tempX, tempY, scrollTop, IE;
|
||||
|
||||
IE = !e.pageX ? true : false;
|
||||
@@ -1137,6 +1144,12 @@ var ICEcoder = {
|
||||
top.ICEcoder.mouseX = e.pageX;
|
||||
top.ICEcoder.mouseY = e.pageY;
|
||||
}
|
||||
if (area!="top") {
|
||||
top.ICEcoder.mouseY += 40 + 50;
|
||||
}
|
||||
if (area=="editor") {
|
||||
top.ICEcoder.mouseX += top.ICEcoder.filesW;
|
||||
}
|
||||
top.ICEcoder.dragCursorTest();
|
||||
},
|
||||
|
||||
@@ -1144,18 +1157,20 @@ var ICEcoder = {
|
||||
dragCursorTest: function() {
|
||||
var winH;
|
||||
|
||||
window.innerWidth ? winH = window.innerHeight : winH = document.body.clientHeight;
|
||||
if (!top.ICEcoder.mouseDown) {top.ICEcoder.draggingFilesW = false};
|
||||
if (top.ICEcoder.ready) {
|
||||
window.innerWidth ? winH = window.innerHeight : winH = document.body.clientHeight;
|
||||
if (!top.ICEcoder.mouseDown) {top.ICEcoder.draggingFilesW = false};
|
||||
|
||||
if ((top.ICEcoder.mouseX > top.ICEcoder.filesW-7 && top.ICEcoder.mouseX < top.ICEcoder.filesW+7 && top.ICEcoder.mouseY > 40+50 && top.ICEcoder.mouseY < winH-30-40) || top.ICEcoder.draggingFilesW) {
|
||||
top.document.body.style.cursor = "w-resize";
|
||||
} else {
|
||||
top.document.body.style.cursor = "auto";
|
||||
if ((top.ICEcoder.mouseX > top.ICEcoder.filesW-7 && top.ICEcoder.mouseX < top.ICEcoder.filesW+7 && top.ICEcoder.mouseY > 40 && top.ICEcoder.mouseY < (winH-30)) || top.ICEcoder.draggingFilesW) {
|
||||
top.document.body.style.cursor = top.ICEcoder.content.contentWindow.document.body.style.cursor = top.ICEcoder.filesFrame.contentWindow.document.body.style.cursor = "w-resize";
|
||||
} else {
|
||||
top.document.body.style.cursor = top.ICEcoder.content.contentWindow.document.body.style.cursor = top.ICEcoder.filesFrame.contentWindow.document.body.style.cursor = "auto";
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Update the file manager tree list on demand
|
||||
updateFileManagerList: function(action,location,file,perms) {
|
||||
updateFileManagerList: function(action,location,file,perms,oldName) {
|
||||
var actionElemType, cssStyle, hrefLink, targetElem, locNest, newUL, newLI, nameLI, shortURL, newMouseOver;
|
||||
|
||||
// Adding files
|
||||
@@ -1184,7 +1199,7 @@ var ICEcoder = {
|
||||
// Finally we can add the first list item for this file/folder we're adding
|
||||
newLI = document.createElement("li");
|
||||
newLI.className = cssStyle;
|
||||
newLI.innerHTML = '<a '+hrefLink+' onMouseOver="top.ICEcoder.overFileFolder(\''+actionElemType+'\',\''+fullPath+location+'/'+file+'\')" onMouseOut="top.ICEcoder.overFileFolder(\''+actionElemType+'\',\'\')" style="position: relative; left:-22px" class="closed"> <span id="'+location.replace(/\//g,"|")+'|'+file+'">'+file+'</a>';
|
||||
newLI.innerHTML = '<a '+hrefLink+' onMouseOver="top.ICEcoder.overFileFolder(\''+actionElemType+'\',\''+fullPath+location+'/'+file+'\')" onMouseOut="top.ICEcoder.overFileFolder(\''+actionElemType+'\',\'\')" style="position: relative; left:-22px"> <span id="'+location.replace(/\//g,"|")+'|'+file+'">'+file+'</a>';
|
||||
locNest.appendChild(newLI,locNest.childNodes[0]);
|
||||
|
||||
// There are items in that location, so add our new item in the right position
|
||||
@@ -1202,7 +1217,7 @@ var ICEcoder = {
|
||||
if ((elemType==actionElemType && nameLI > file) || (actionElemType=="folder" && elemType=="file") || i==locNest.childNodes.length-1) {
|
||||
newLI = document.createElement("li");
|
||||
newLI.className = cssStyle;
|
||||
newLI.innerHTML = '<a '+hrefLink+' onMouseOver="top.ICEcoder.overFileFolder(\''+elemType+'\',\''+fullPath+location+'/'+file+'\')" onMouseOut="top.ICEcoder.overFileFolder(\''+elemType+'\',\'\')" style="position: relative; left:-22px" class="closed"> <span id="'+location.replace(/\//g,"|")+'|'+file+'">'+file+'</a>';
|
||||
newLI.innerHTML = '<a '+hrefLink+' onMouseOver="top.ICEcoder.overFileFolder(\''+elemType+'\',\''+fullPath+location+'/'+file+'\')" onMouseOut="top.ICEcoder.overFileFolder(\''+elemType+'\',\'\')" style="position: relative; left:-22px"> <span id="'+location.replace(/\//g,"|")+'|'+file+'">'+file+'</a>';
|
||||
|
||||
// Append or insert depending on which of the above if statements is true
|
||||
i==locNest.childNodes.length-1 ? locNest.appendChild(newLI,locNest.childNodes[i]) : locNest.insertBefore(newLI,locNest.childNodes[i]);
|
||||
@@ -1217,7 +1232,7 @@ var ICEcoder = {
|
||||
// Renaming files
|
||||
if (action=="rename") {
|
||||
// Identify a shortened URL for our right clicked file and get our target element based on this
|
||||
shortURL = top.ICEcoder.rightClickedFile.substr((top.ICEcoder.rightClickedFile.indexOf(shortURLStarts)+top.shortURLStarts.length),top.ICEcoder.rightClickedFile.length).replace(/\|/g,"/");
|
||||
shortURL = oldName;
|
||||
targetElem = document.getElementById('filesFrame').contentWindow.document.getElementById(shortURL.replace(/\//g,"|"));
|
||||
// Set the name to be as per our new file/folder name
|
||||
targetElem.innerHTML = file;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
$versionNo = "v 0.7.6";
|
||||
$codeMirrorDir = "CodeMirror-2.25";
|
||||
$cMThisVer = 2.25;
|
||||
$versionNo = "v 0.7.8";
|
||||
$codeMirrorDir = "CodeMirror-2.3";
|
||||
$cMThisVer = 2.3;
|
||||
$tabsIndent = true;
|
||||
$checkUpdates = false;
|
||||
$openLastFiles = true;
|
||||
|
||||
@@ -71,7 +71,7 @@ if ($_GET['action']=="rename") {
|
||||
$fileName = substr($file,strrpos($file,"/")+1);
|
||||
$fileLoc = substr($file,0,strrpos($file,"/"));
|
||||
if ($fileLoc=="") {$fileLoc = "/";};
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\');top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);action="rename";</script>';
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($docRoot,"",strClean($_GET['oldFileName'])).'\');top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);action="rename";</script>';
|
||||
} else {
|
||||
if (!is_writable($_GET['oldFileName'])) {
|
||||
echo "<script>top.ICEcoder.message('Sorry, cannot rename\\n".strClean($_GET['oldFileName'])."');</script>";
|
||||
|
||||
@@ -19,7 +19,7 @@ table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
|
||||
body {margin: 0; overflow: auto}
|
||||
|
||||
.refresh {float: right; margin-right: 15px; cursor: pointer}
|
||||
.refresh {position: fixed; right: 0; margin-right: 15px; cursor: pointer}
|
||||
|
||||
.fileManager {
|
||||
margin: 15px 0 15px 22px;
|
||||
@@ -31,41 +31,41 @@ body {margin: 0; overflow: auto}
|
||||
|
||||
.fileManager span {font-family: helvetica, arial, swiss, verdana}
|
||||
.fileManager a {color: #eee; text-decoration: none}
|
||||
.fileManager .open {font-style: italic}
|
||||
.fileManager .closed {font-style: normal}
|
||||
.fileManager .pft-directory, .fileManager .pft-file {list-style-image: url(../images/blank.gif)}
|
||||
.fileManager li {margin-left: 15px}
|
||||
.fileManager ul, .fileManager li {margin-left: 15px}
|
||||
|
||||
/* Default file */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
position: absolute; display: block; width: 16px; height: 16px; content: ""; margin-top: -2px; margin-left: -23px; background:url(../images/file-manager-icons.png) no-repeat 0 0;
|
||||
}
|
||||
.fileManager LI.dirOpen:before {background-position: -16px 0}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) { /* hacked for chrome and safari */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
margin-top: -19px;
|
||||
}
|
||||
}
|
||||
.fileManager LI.pft-file:before {background-position: -16px 0}
|
||||
.fileManager LI.pft-file:before {background-position: -32px 0}
|
||||
|
||||
/* Additional file types */
|
||||
.fileManager LI.ext-coffee:before {background-position: -32px 0}
|
||||
.fileManager LI.ext-css:before {background-position: -48px 0}
|
||||
.fileManager LI.ext-gif:before {background-position: -64px 0}
|
||||
.fileManager LI.ext-htm:before {background-position: -80px 0}
|
||||
.fileManager LI.ext-html:before {background-position: -80px 0}
|
||||
.fileManager LI.ext-jpg:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-jpeg:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-js:before {background-position: -112px 0}
|
||||
.fileManager LI.ext-coffee:before {background-position: -48px 0}
|
||||
.fileManager LI.ext-css:before {background-position: -64px 0}
|
||||
.fileManager LI.ext-gif:before {background-position: -80px 0}
|
||||
.fileManager LI.ext-htm:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-html:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-jpg:before {background-position: -112px 0}
|
||||
.fileManager LI.ext-jpeg:before {background-position: -112px 0}
|
||||
.fileManager LI.ext-js:before {background-position: -128px 0}
|
||||
/*.fileManager LI.ext-pdf:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-less:before {background-position: -128px 0}
|
||||
.fileManager LI.ext-php:before {background-position: -144px 0}
|
||||
.fileManager LI.ext-png:before {background-position: -160px 0}
|
||||
.fileManager LI.ext-rb:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-rbx:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-rhtml:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-ruby:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-less:before {background-position: -144px 0}
|
||||
.fileManager LI.ext-php:before {background-position: -160px 0}
|
||||
.fileManager LI.ext-png:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-rb:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-rbx:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-rhtml:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-ruby:before {background-position: -192px 0}
|
||||
/*.fileManager LI.ext-sql:before {background-position: -???px 0} */
|
||||
/*.fileManager LI.ext-swf:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-txt:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-txt:before {background-position: -208px 0}
|
||||
/*.fileManager LI.ext-xml:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-zip:before {background-position: -208px 0}
|
||||
.fileManager LI.ext-zip:before {background-position: -224px 0}
|
||||
@@ -17,18 +17,18 @@ table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
}
|
||||
|
||||
body {overflow: hidden;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-o-user-select:none;
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-o-user-select:none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
|
||||
h1 {font-size: 36px; font-weight: normal; color: #888; margin: 20px 20px 0 20px}
|
||||
h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
hr {border: 0; height: 1px; background-color: #888}
|
||||
|
||||
.results {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff}
|
||||
.results .resultsPane {position: relative; width: 660px; height: 560px; font-size: 10px; padding: 20px; float: left}
|
||||
.results .resultsPane {position: relative; width: 660px; height: 340px; overflow: auto; font-size: 10px; padding: 20px; float: left}
|
||||
.results .resultsPane a {color: rgba(0,198,255,0.7); text-decoration: none}
|
||||
.results .resultsPane a:hover {text-decoration: underline}
|
||||
.replace {position: absolute; margin-top: -28px; right: 20px; padding: 5px 10px; font-size: 14px; background-color: rgba(0,198,255,0.7); cursor: pointer}
|
||||
|
||||
@@ -10,17 +10,24 @@
|
||||
|
||||
<body class="results">
|
||||
|
||||
<h1 id="title"></h1>
|
||||
<div class="resultsPane">
|
||||
<h1 id="title"></h1>
|
||||
<div id="results"></div>
|
||||
</div>
|
||||
<?php if (isset($_GET['replace'])) { ?>
|
||||
<div class="replaceAll" id="replaceAll" onClick="replaceAll()" style="opacity: 0.1">replace all</div>
|
||||
<div class="replaceAll" id="replaceAll" onClick="<?php if (isset($_GET['target'])) {echo 'renameAll()';} else {echo 'replaceAll()';}; ?>" style="opacity: 0.1"><?php if (isset($_GET['target'])) {echo 'rename all';} else {echo 'replace all';}; ?></div>
|
||||
<?php ;}; ?>
|
||||
|
||||
<script>
|
||||
var resultsDisplay = "";
|
||||
var foundTabArray = [];
|
||||
var foundArray = [];
|
||||
foundInSelected = false;
|
||||
userTarget = top.document.findAndReplace.target.value;
|
||||
<?php
|
||||
// Find in open docs?
|
||||
if (!isset($_GET['target'])) {
|
||||
$targetName = "document";
|
||||
?>
|
||||
var startTab = top.ICEcoder.selectedTab;
|
||||
var rExp = new RegExp("<?php echo strClean($_GET['find']); ?>","g");
|
||||
for (var i=1;i<=top.ICEcoder.openFiles.length;i++) {
|
||||
@@ -33,20 +40,51 @@ for (var i=1;i<=top.ICEcoder.openFiles.length;i++) {
|
||||
resultsDisplay += '<div class="replace" id="replace" onClick="replaceSingle('+i+');this.style.display=\'none\'">replace</div>';
|
||||
<?php ;}; ?>
|
||||
resultsDisplay += '<hr>';
|
||||
foundTabArray.push(i);
|
||||
foundArray.push(i);
|
||||
}
|
||||
}
|
||||
if (startTab!=top.ICEcoder.selectedTab) {
|
||||
top.ICEcoder.switchTab(startTab);
|
||||
}
|
||||
foundTabArray.length==0 ? showHide = "hide" : showHide = "show";
|
||||
<?php
|
||||
// Find in files or filenames
|
||||
} else {
|
||||
$targetName = "file/folder";
|
||||
?>
|
||||
var spansArray = top.ICEcoder.filesFrame.contentWindow.document.getElementsByTagName('span');
|
||||
for (var i=0;i<spansArray.length;i++) {
|
||||
targetURL = spansArray[i].id.replace(/\|/g,"/");
|
||||
if (targetURL.indexOf('<?php echo strClean($_GET['find']); ?>')>-1 && targetURL.indexOf('_perms')>-1) {
|
||||
if (userTarget.indexOf("selected")>-1) {
|
||||
for (var j=0;j<top.ICEcoder.selectedFiles.length;j++) {
|
||||
if (top.ICEcoder.selectedFiles[j].indexOf(targetURL.replace(/\//g,"|").replace(/_perms/g,""))>-1) {
|
||||
foundInSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (userTarget.indexOf("all")>-1 || (userTarget.indexOf("selected")>-1 && foundInSelected)) {
|
||||
resultsDisplay += '<a href="javascript:top.ICEcoder.openFile(\''+top.fullPath+targetURL.replace(/\|/g,"/").replace(/_perms/g,"")+'\');top.ICEcoder.showHide(\'hide\',top.document.getElementById(\'blackMask\'))">'+ targetURL.replace(/\|/g,"/").replace(/_perms/g,"").replace(/<?php echo str_replace("/","\/",strClean($_GET['find'])); ?>/g,"<b><?php echo strClean($_GET['find']); ?></b>")+ '</a><br><div id="foundCount'+i+'">'+spansArray[i].innerHTML+', rename to '+targetURL.replace(/\|/g,"/").replace(/_perms/g,"").replace(/<?php echo str_replace("/","\/",strClean($_GET['find'])); ?>/g,"<b><?php echo strClean($_GET['replace']);?></b>")+'</div>';
|
||||
<?php if (isset($_GET['replace'])) { ?>
|
||||
resultsDisplay += '<div class="replace" id="replace" onClick="renameSingle('+i+');this.style.display=\'none\'">rename</div>';
|
||||
<?php ;}; ?>
|
||||
resultsDisplay += '<hr>';
|
||||
foundArray.push(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
<?php
|
||||
;}
|
||||
?>
|
||||
foundArray.length==0 ? showHide = "hide" : showHide = "show";
|
||||
top.ICEcoder.showHide(showHide,top.document.getElementById('blackMask'));
|
||||
if (foundTabArray.length==0) {top.ICEcoder.message('No matches found')};
|
||||
if (foundArray.length==0) {top.ICEcoder.message('No matches found')};
|
||||
<?php if (isset($_GET['replace'])) { ?>
|
||||
if (foundTabArray.length!=0) {document.getElementById('replaceAll').style.opacity = 1};
|
||||
if (foundArray.length!=0) {document.getElementById('replaceAll').style.opacity = 1};
|
||||
<?php ;}; ?>
|
||||
foundTabArray.length >= 2 ? plural = "s" : plural = "";
|
||||
document.getElementById('title').innerHTML = "'<?php echo strClean($_GET['find']); ?>' found in "+foundTabArray.length+" file"+plural;
|
||||
foundArray.length >= 2 ? plural = "s" : plural = "";
|
||||
targetName = "<?php echo $targetName;?>";
|
||||
foundInSelected ? selectedText = "selected " : selectedText = "";
|
||||
document.getElementById('title').innerHTML = "'<?php echo strClean($_GET['find']); ?>' found in "+foundArray.length+" "+selectedText+targetName+plural;
|
||||
document.getElementById('results').innerHTML = resultsDisplay;
|
||||
|
||||
var gotoTab = function(tab) {
|
||||
@@ -63,8 +101,21 @@ var replaceSingle = function(tab) {
|
||||
}
|
||||
|
||||
var replaceAll = function() {
|
||||
for (var i=0;i<=foundTabArray.length-1;i++) {
|
||||
replaceSingle(foundTabArray[i]);
|
||||
for (var i=0;i<=foundArray.length-1;i++) {
|
||||
replaceSingle(foundArray[i]);
|
||||
}
|
||||
top.ICEcoder.showHide('hide',top.document.getElementById('blackMask'));
|
||||
}
|
||||
|
||||
var renameSingle = function(arrayRef) {
|
||||
fileRef = top.fullPath+spansArray[arrayRef].id.replace(/\|/g,"/").replace(/_perms/g,"");
|
||||
newName = spansArray[arrayRef].id.replace(/\|/g,"/").replace(/_perms/g,"").replace(/<?php echo str_replace("/","\/",strClean($_GET['find'])); ?>/g,"<?php echo strClean($_GET['replace']); ?>");
|
||||
top.ICEcoder.renameFile(fileRef,newName);
|
||||
}
|
||||
|
||||
var renameAll = function() {
|
||||
for (var i=0;i<=foundArray.length-1;i++) {
|
||||
renameSingle(foundArray[i]);
|
||||
}
|
||||
top.ICEcoder.showHide('hide',top.document.getElementById('blackMask'));
|
||||
}
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
<script src="../<?php echo $codeMirrorDir; ?>/lib/codemirror-compressed.js"></script>
|
||||
|
||||
<style type="text/css">
|
||||
.CodeMirror {position: absolute; width: 0; background-color: #fff; font-family: monospace}
|
||||
.CodeMirror-scroll {height: 220px; width: 420px; overflow: hidden}
|
||||
.CodeMirror {position: absolute; width: 0; background-color: #fff; font-family: monospace; width: 420px}
|
||||
.CodeMirror-scroll {height: 220px; overflow: hidden}
|
||||
/* Make sure this next one remains the 3rd item, updated with JS */
|
||||
.cm-tab:after {position: relative; display: inline-block; width: 0; left: -1.4em; overflow: visible; color: #aaa; content: "<?php if($visibleTabs) {echo '\21e5';};?>";}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" href="editor.css">
|
||||
<?php
|
||||
$themeArray = array("ambiance","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","monokai","neat","night","rubyblue","xq-dark");
|
||||
$themeArray = array("ambiance","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","monokai","neat","night","rubyblue","vibrant-ink","xq-dark");
|
||||
for ($i=0;$i<count($themeArray)-1;$i++) {
|
||||
echo '<link rel="stylesheet" href="../'.$codeMirrorDir.'/theme/'.$themeArray[$i].'.css">'.PHP_EOL;
|
||||
}
|
||||
|
||||
@@ -222,9 +222,9 @@ if ($accountPassword == "" && isset($_GET['settings'])) {
|
||||
<link rel="stylesheet" type="text/css" href="coder.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body onLoad="document.settingsUpdate.accountPassword.focus()">
|
||||
|
||||
<div class="screenContainer">
|
||||
<div class="screenContainer" style="background-color: #141414">
|
||||
<div class="screenVCenter">
|
||||
<div class="screenCenter">
|
||||
<img src="../images/ice-coder.png">
|
||||
|
||||
Reference in New Issue
Block a user