mirror of
https://github.com/icecoder/ICEcoder.git
synced 2026-03-16 13:27:05 +01:00
Compare commits
259 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68eb4a0393 | ||
|
|
5fc4ae596a | ||
|
|
e31f435640 | ||
|
|
80acab0bf0 | ||
|
|
a95484d044 | ||
|
|
d979d76866 | ||
|
|
5f6c6838a0 | ||
|
|
cb6d339183 | ||
|
|
815578eb34 | ||
|
|
c5996f7b23 | ||
|
|
e89d449805 | ||
|
|
5b549c5102 | ||
|
|
fa793564d9 | ||
|
|
395fdf0727 | ||
|
|
7f8e052a26 | ||
|
|
b349891321 | ||
|
|
592c8ccda4 | ||
|
|
a366a84d00 | ||
|
|
f4762fbaf3 | ||
|
|
b00ce2f7c9 | ||
|
|
6ccf0fb135 | ||
|
|
3c6a60f96d | ||
|
|
84fefcbad0 | ||
|
|
139ca019bb | ||
|
|
0245ae418a | ||
|
|
a78d847f4e | ||
|
|
0592459666 | ||
|
|
6492068717 | ||
|
|
36ea3eabc4 | ||
|
|
5c19367b87 | ||
|
|
3a08ccf350 | ||
|
|
f5897cd036 | ||
|
|
4f7ea84754 | ||
|
|
b46e2f324a | ||
|
|
0c3390929b | ||
|
|
857fa2580c | ||
|
|
40e699828b | ||
|
|
60b527d5a4 | ||
|
|
1c99f127be | ||
|
|
3221bea7a7 | ||
|
|
96bba6972a | ||
|
|
b9546dfaa4 | ||
|
|
340e3b3d4d | ||
|
|
e1a2a8da71 | ||
|
|
38a5bea898 | ||
|
|
fa5b549081 | ||
|
|
379f6ac1c3 | ||
|
|
87be112d9f | ||
|
|
491edf256e | ||
|
|
f38e984b31 | ||
|
|
b1df1e8403 | ||
|
|
41592007b9 | ||
|
|
78ddfe61ba | ||
|
|
2bfef30c03 | ||
|
|
ac65cd89c1 | ||
|
|
7540ef846f | ||
|
|
57bf19d69c | ||
|
|
e330a57da8 | ||
|
|
2ef1637d0b | ||
|
|
01dc2f7943 | ||
|
|
0606025a46 | ||
|
|
aefee93cf6 | ||
|
|
3222a3202c | ||
|
|
4d1b4e2237 | ||
|
|
8afacd3ef8 | ||
|
|
b07cdd6fc7 | ||
|
|
1237d5868a | ||
|
|
f9418db57f | ||
|
|
e741d6c207 | ||
|
|
66ec7c34c6 | ||
|
|
15ff1534c3 | ||
|
|
fca567d53c | ||
|
|
2db6c44dbc | ||
|
|
45e18a5daf | ||
|
|
2802e20401 | ||
|
|
a2bdab0bcf | ||
|
|
4ea49c197b | ||
|
|
fae387002c | ||
|
|
9a2fa27010 | ||
|
|
0e82fb8c97 | ||
|
|
9cc53f474e | ||
|
|
9d661e454e | ||
|
|
e52b7c673f | ||
|
|
d676c11473 | ||
|
|
b87f5ba969 | ||
|
|
0f29baf504 | ||
|
|
166d27ca4c | ||
|
|
f39093c78f | ||
|
|
f7d9b050b3 | ||
|
|
ab0cef93b7 | ||
|
|
9fffd73f13 | ||
|
|
24cd0f8f36 | ||
|
|
1c79062baa | ||
|
|
f31ddf3dec | ||
|
|
76d9b6a860 | ||
|
|
61bfeaa536 | ||
|
|
76421a4fd7 | ||
|
|
3c370d8ec7 | ||
|
|
13eff9ce40 | ||
|
|
0ec7c5a8fc | ||
|
|
94e1c61b58 | ||
|
|
d6a21c9b71 | ||
|
|
f2f9dc441e | ||
|
|
168d635ab8 | ||
|
|
ed4f8078a8 | ||
|
|
4691c7e2b0 | ||
|
|
7b99febba1 | ||
|
|
fe0436762c | ||
|
|
7b4ba0008b | ||
|
|
1699a1ada7 | ||
|
|
55cccdecc9 | ||
|
|
05996618d7 | ||
|
|
9572394962 | ||
|
|
2dc72de62b | ||
|
|
379026143f | ||
|
|
7cab1933df | ||
|
|
dcfd4f3ed2 | ||
|
|
7e633128cf | ||
|
|
48c42f0523 | ||
|
|
2521dafde1 | ||
|
|
db5348cd68 | ||
|
|
6881f9d79b | ||
|
|
4b8808f498 | ||
|
|
93b38b55d3 | ||
|
|
fe2391e6ad | ||
|
|
0c86f5718e | ||
|
|
53e0252afc | ||
|
|
55fe5e7199 | ||
|
|
d92b35fe23 | ||
|
|
1ec27a4df9 | ||
|
|
c982c6d2c7 | ||
|
|
330ec0d605 | ||
|
|
462ee75980 | ||
|
|
0470231a37 | ||
|
|
6f9c127c1b | ||
|
|
3facbe2de6 | ||
|
|
ea49fed017 | ||
|
|
166b5e34b9 | ||
|
|
e52998079b | ||
|
|
863f13d3cf | ||
|
|
f2b4535d31 | ||
|
|
5695d2c3c7 | ||
|
|
879feca2ce | ||
|
|
4ee4ab9247 | ||
|
|
af86a93993 | ||
|
|
343c07c238 | ||
|
|
7fd08afe14 | ||
|
|
6117145239 | ||
|
|
1403136d0e | ||
|
|
fc0a994b6b | ||
|
|
9712c369c1 | ||
|
|
85a9cfaecd | ||
|
|
c34b2608cc | ||
|
|
ad30ff3c45 | ||
|
|
74355c0d00 | ||
|
|
208897b040 | ||
|
|
8d6c58af36 | ||
|
|
12e6bedf6d | ||
|
|
0cb99eb48f | ||
|
|
45ec256d4f | ||
|
|
04fa37a358 | ||
|
|
c21d57e36e | ||
|
|
de5e759ac9 | ||
|
|
bb1c047ece | ||
|
|
67d44e56bb | ||
|
|
c7c984f66a | ||
|
|
d320bb7172 | ||
|
|
fb82ab881c | ||
|
|
366ad3257e | ||
|
|
75de0f3a08 | ||
|
|
47f64bf874 | ||
|
|
400ef8cfce | ||
|
|
797df35ffe | ||
|
|
551f3f248b | ||
|
|
a2cf9483d6 | ||
|
|
77329e9119 | ||
|
|
7faf1099b0 | ||
|
|
8893a29bd3 | ||
|
|
669827653e | ||
|
|
c6058959e3 | ||
|
|
b3acb61201 | ||
|
|
7d66f32e5b | ||
|
|
0583f1ea1c | ||
|
|
f278394346 | ||
|
|
ba634bbeed | ||
|
|
a488c19d61 | ||
|
|
c1982279f4 | ||
|
|
ed6a9bb03c | ||
|
|
4d7ac54e6b | ||
|
|
fac5bf8662 | ||
|
|
8f1cca087b | ||
|
|
d826469c49 | ||
|
|
878ceef2ec | ||
|
|
e1a1b1b1cf | ||
|
|
9f408abb34 | ||
|
|
52d7d0819c | ||
|
|
46a0e62a84 | ||
|
|
bd692990cb | ||
|
|
9b7f0bd15a | ||
|
|
fcd1b4fb64 | ||
|
|
c96c5cd12b | ||
|
|
db3130f911 | ||
|
|
ae37460e92 | ||
|
|
2e601a4ccc | ||
|
|
f76270b7b9 | ||
|
|
694daa15aa | ||
|
|
0d8cd9a612 | ||
|
|
2171dd5664 | ||
|
|
9a9d66ffb9 | ||
|
|
b5566c8382 | ||
|
|
385d4e0efd | ||
|
|
8eeb64ad09 | ||
|
|
caa9fab5b4 | ||
|
|
c087283e46 | ||
|
|
55f8b9adc2 | ||
|
|
9cb89463bb | ||
|
|
3a48fd9cdd | ||
|
|
c4bba758c7 | ||
|
|
db44da92f1 | ||
|
|
bedd75c0c5 | ||
|
|
c277d3a6bb | ||
|
|
f681cc88c9 | ||
|
|
c106c0a410 | ||
|
|
50a4a3e4bc | ||
|
|
586a4e6a64 | ||
|
|
ef98e4f5ab | ||
|
|
7f039d81d8 | ||
|
|
ab39f9f51b | ||
|
|
47263bdbed | ||
|
|
b65a7a690e | ||
|
|
3dc26528b4 | ||
|
|
73305b3be2 | ||
|
|
de4c63c37e | ||
|
|
8b720dd0e6 | ||
|
|
f0a2bbc531 | ||
|
|
c322c501ac | ||
|
|
5f948d9c56 | ||
|
|
b2d13e0e30 | ||
|
|
4a1ba5dfe3 | ||
|
|
6861fa9ced | ||
|
|
29857e7d70 | ||
|
|
b50bc5e598 | ||
|
|
aaf1ce1526 | ||
|
|
36b20938b7 | ||
|
|
670e3c47a6 | ||
|
|
4ef49f0172 | ||
|
|
aef3340d0f | ||
|
|
3ea34fb87a | ||
|
|
efdf729f83 | ||
|
|
5ce3a9912c | ||
|
|
2897c75a3d | ||
|
|
fe29a57cdb | ||
|
|
f75bd9fe53 | ||
|
|
a7c0123072 | ||
|
|
3b84af75d2 | ||
|
|
505f5b35c7 | ||
|
|
77c0f61d7b | ||
|
|
8d5715ebcd | ||
|
|
cab12fd73c |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,6 +1,9 @@
|
||||
error-log.txt
|
||||
backups/*.zip
|
||||
backups/*
|
||||
!backups/index.php
|
||||
lib/config-*
|
||||
plugins/*
|
||||
!plugins/index.php
|
||||
test/test-file1.txt
|
||||
tmp/*
|
||||
tmp/*
|
||||
!tmp/index.php
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
/* The lint marker gutter */
|
||||
.CodeMirror-lint-markers {
|
||||
width: 12px; margin-left: 2px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-tooltip {
|
||||
@@ -43,7 +43,7 @@
|
||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
cursor: help;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
55
CodeMirror/lib/codemirror-compressed.js
vendored
Normal file
55
CodeMirror/lib/codemirror-compressed.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -4,10 +4,7 @@
|
||||
/* Set height, width, borders, and global font properties here */
|
||||
font-family: monospace;
|
||||
height: 300px;
|
||||
}
|
||||
.CodeMirror-scroll {
|
||||
/* Set scrolling behaviour here */
|
||||
overflow: auto;
|
||||
color: black;
|
||||
}
|
||||
|
||||
/* PADDING */
|
||||
@@ -36,8 +33,7 @@
|
||||
min-width: 20px;
|
||||
text-align: right;
|
||||
color: #999;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.CodeMirror-guttermarker { color: black; }
|
||||
@@ -52,12 +48,12 @@
|
||||
.CodeMirror div.CodeMirror-secondarycursor {
|
||||
border-left: 1px solid silver;
|
||||
}
|
||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
|
||||
.CodeMirror.cm-fat-cursor div.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: #7e7;
|
||||
}
|
||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors {
|
||||
.CodeMirror.cm-fat-cursor div.CodeMirror-cursors {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
@@ -125,10 +121,13 @@ div.CodeMirror-overwrite div.CodeMirror-cursor {}
|
||||
.cm-header, .cm-strong {font-weight: bold;}
|
||||
.cm-em {font-style: italic;}
|
||||
.cm-link {text-decoration: underline;}
|
||||
.cm-strikethrough {text-decoration: line-through;}
|
||||
|
||||
.cm-s-default .cm-error {color: #f00;}
|
||||
.cm-invalidchar {color: #f00;}
|
||||
|
||||
.CodeMirror-composing { border-bottom: 2px solid; }
|
||||
|
||||
/* Default styles for common addons */
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||
@@ -142,14 +141,13 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
the editor. You probably shouldn't touch them. */
|
||||
|
||||
.CodeMirror {
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
overflow: scroll !important; /* Things will break if this is overridden */
|
||||
/* 30px is the magic margin used to hide the element's real scrollbars */
|
||||
/* See overflow: hidden in .CodeMirror */
|
||||
margin-bottom: -30px; margin-right: -30px;
|
||||
@@ -157,14 +155,10 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
height: 100%;
|
||||
outline: none; /* Prevent dragging from highlighting the element */
|
||||
position: relative;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
.CodeMirror-sizer {
|
||||
position: relative;
|
||||
border-right: 30px solid transparent;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
/* The fake, visible scrollbars. Used to force redraw during scrolling
|
||||
@@ -194,26 +188,32 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
|
||||
.CodeMirror-gutters {
|
||||
position: absolute; left: 0; top: 0;
|
||||
padding-bottom: 30px;
|
||||
z-index: 3;
|
||||
}
|
||||
.CodeMirror-gutter {
|
||||
white-space: normal;
|
||||
height: 100%;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
padding-bottom: 30px;
|
||||
margin-bottom: -32px;
|
||||
display: inline-block;
|
||||
margin-bottom: -30px;
|
||||
/* Hack to make IE7 behave */
|
||||
*zoom:1;
|
||||
*display:inline;
|
||||
}
|
||||
.CodeMirror-gutter-wrapper {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
height: 100%;
|
||||
}
|
||||
.CodeMirror-gutter-elt {
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
z-index: 4;
|
||||
}
|
||||
.CodeMirror-gutter-wrapper {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.CodeMirror-lines {
|
||||
cursor: text;
|
||||
@@ -234,6 +234,7 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
@@ -255,8 +256,18 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
|
||||
.CodeMirror-widget {}
|
||||
|
||||
.CodeMirror-wrap .CodeMirror-scroll {
|
||||
overflow-x: hidden;
|
||||
.CodeMirror-code {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Force content-box sizing for the elements where we expect it */
|
||||
.CodeMirror-scroll,
|
||||
.CodeMirror-sizer,
|
||||
.CodeMirror-gutter,
|
||||
.CodeMirror-gutters,
|
||||
.CodeMirror-linenumber {
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.CodeMirror-measure {
|
||||
@@ -286,6 +297,8 @@ div.CodeMirror-cursors {
|
||||
.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
|
||||
.CodeMirror-crosshair { cursor: crosshair; }
|
||||
.CodeMirror ::selection { background: #d7d4f0; }
|
||||
.CodeMirror ::-moz-selection { background: #d7d4f0; }
|
||||
|
||||
.cm-searching {
|
||||
background: #ffa;
|
||||
@@ -305,5 +318,8 @@ div.CodeMirror-cursors {
|
||||
}
|
||||
}
|
||||
|
||||
/* See issue #2901 */
|
||||
.cm-tab-wrap-hack:after { content: ''; }
|
||||
|
||||
/* Help users use markselection to safely style text background */
|
||||
span.CodeMirror-selectedtext { background: none; }
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;}
|
||||
.cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;}
|
||||
.cm-s-3024-day.CodeMirror ::selection { background: #d6d5d4; }
|
||||
.cm-s-3024-day.CodeMirror ::-moz-selection { background: #d9d9d9; }
|
||||
|
||||
.cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;}
|
||||
.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }
|
||||
@@ -35,4 +37,4 @@
|
||||
.cm-s-3024-day span.cm-error {background: #db2d20; color: #5c5855;}
|
||||
|
||||
.cm-s-3024-day .CodeMirror-activeline-background {background: #e8f2ff !important;}
|
||||
.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important;}
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;}
|
||||
.cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;}
|
||||
.cm-s-3024-night.CodeMirror ::selection { background: rgba(58, 52, 50, .99); }
|
||||
.cm-s-3024-night.CodeMirror ::-moz-selection { background: rgba(58, 52, 50, .99); }
|
||||
.cm-s-3024-night .CodeMirror-gutters {background: #090300; border-right: 0px;}
|
||||
.cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; }
|
||||
.cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; }
|
||||
@@ -30,12 +30,10 @@
|
||||
.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; }
|
||||
.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; }
|
||||
|
||||
.cm-s-ambiance .CodeMirror-selected {
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected {
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
}
|
||||
.cm-s-ambiance .CodeMirror-selected { background: rgba(255, 255, 255, 0.15); }
|
||||
.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }
|
||||
.cm-s-ambiance.CodeMirror ::selection { background: rgba(255, 255, 255, 0.10); }
|
||||
.cm-s-ambiance.CodeMirror ::-moz-selection { background: rgba(255, 255, 255, 0.10); }
|
||||
|
||||
/* Editor styling */
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;}
|
||||
.cm-s-base16-dark div.CodeMirror-selected {background: #303030 !important;}
|
||||
.cm-s-base16-dark.CodeMirror ::selection { background: rgba(48, 48, 48, .99); }
|
||||
.cm-s-base16-dark.CodeMirror ::-moz-selection { background: rgba(48, 48, 48, .99); }
|
||||
.cm-s-base16-dark .CodeMirror-gutters {background: #151515; border-right: 0px;}
|
||||
.cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; }
|
||||
.cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; }
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;}
|
||||
.cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;}
|
||||
.cm-s-base16-light.CodeMirror ::selection { background: #e0e0e0; }
|
||||
.cm-s-base16-light.CodeMirror ::-moz-selection { background: #e0e0e0; }
|
||||
.cm-s-base16-light .CodeMirror-gutters {background: #f5f5f5; border-right: 0px;}
|
||||
.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }
|
||||
.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }
|
||||
.cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; }
|
||||
.cm-s-blackboard.CodeMirror ::selection { background: rgba(37, 59, 118, .99); }
|
||||
.cm-s-blackboard.CodeMirror ::-moz-selection { background: rgba(37, 59, 118, .99); }
|
||||
.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; }
|
||||
.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; }
|
||||
.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; }
|
||||
@@ -1,5 +1,7 @@
|
||||
.cm-s-cobalt.CodeMirror { background: #002240; color: white; }
|
||||
.cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; }
|
||||
.cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); }
|
||||
.cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); }
|
||||
.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; }
|
||||
.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
33
CodeMirror/theme/colorforth.css
vendored
Normal file
33
CodeMirror/theme/colorforth.css
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
.cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; }
|
||||
.cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; }
|
||||
.cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; }
|
||||
.cm-s-colorforth .CodeMirror-linenumber { color: #bababa; }
|
||||
.cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-colorforth span.cm-comment { color: #ededed; }
|
||||
.cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; }
|
||||
.cm-s-colorforth span.cm-keyword { color: #ffd900; }
|
||||
.cm-s-colorforth span.cm-builtin { color: #00d95a; }
|
||||
.cm-s-colorforth span.cm-variable { color: #73ff00; }
|
||||
.cm-s-colorforth span.cm-string { color: #007bff; }
|
||||
.cm-s-colorforth span.cm-number { color: #00c4ff; }
|
||||
.cm-s-colorforth span.cm-atom { color: #606060; }
|
||||
|
||||
.cm-s-colorforth span.cm-variable-2 { color: #EEE; }
|
||||
.cm-s-colorforth span.cm-variable-3 { color: #DDD; }
|
||||
.cm-s-colorforth span.cm-property {}
|
||||
.cm-s-colorforth span.cm-operator {}
|
||||
|
||||
.cm-s-colorforth span.cm-meta { color: yellow; }
|
||||
.cm-s-colorforth span.cm-qualifier { color: #FFF700; }
|
||||
.cm-s-colorforth span.cm-bracket { color: #cc7; }
|
||||
.cm-s-colorforth span.cm-tag { color: #FFBD40; }
|
||||
.cm-s-colorforth span.cm-attribute { color: #FFF700; }
|
||||
.cm-s-colorforth span.cm-error { color: #f00; }
|
||||
|
||||
.cm-s-colorforth .CodeMirror-selected { background: #333d53 !important; }
|
||||
|
||||
.cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); }
|
||||
|
||||
.cm-s-colorforth .CodeMirror-activeline-background {background: #253540 !important;}
|
||||
@@ -1,5 +1,7 @@
|
||||
.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; }
|
||||
.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; }
|
||||
.cm-s-erlang-dark.CodeMirror ::selection { background: rgba(179, 101, 57, .99); }
|
||||
.cm-s-erlang-dark.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); }
|
||||
.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-erlang-dark .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
40
CodeMirror/theme/icecoder-classic.css
vendored
Normal file
40
CodeMirror/theme/icecoder-classic.css
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
/* ICEcoder classic theme by Matt Pass */
|
||||
|
||||
.cm-s-icecoder-classic {color: #666; background: #161612}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-keyword {color: #eee; font-weight:bold}
|
||||
.cm-s-icecoder-classic span.cm-atom {color: #8b67cc}
|
||||
.cm-s-icecoder-classic span.cm-number {color: #080}
|
||||
.cm-s-icecoder-classic span.cm-def {color: #ca7919}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-variable {color: #85b525}
|
||||
.cm-s-icecoder-classic span.cm-variable-2 {color: #c71e5b}
|
||||
.cm-s-icecoder-classic span.cm-variable-3 {color: #080}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-property {color: #85b525}
|
||||
.cm-s-icecoder-classic span.cm-operator {color: #080}
|
||||
.cm-s-icecoder-classic span.cm-comment {color: #444}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-string {color: #ccb100}
|
||||
.cm-s-icecoder-classic span.cm-string-2 {color: #cc6d00}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-meta {color: #555}
|
||||
.cm-s-icecoder-classic span.cm-error {color: #d00}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-qualifier {color: #555}
|
||||
.cm-s-icecoder-classic span.cm-builtin {color: #0052a3}
|
||||
.cm-s-icecoder-classic span.cm-bracket {color: #cc7}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-tag {color: #e8e8e8}
|
||||
.cm-s-icecoder-classic span.cm-attribute {color: #099}
|
||||
|
||||
.cm-s-icecoder-classic span.cm-header {color: #808}
|
||||
.cm-s-icecoder-classic span.cm-quote {color: #070}
|
||||
.cm-s-icecoder-classic span.cm-hr {color: #888}
|
||||
.cm-s-icecoder-classic span.cm-link {color: #cc0}
|
||||
|
||||
.cm-s-icecoder-classic .CodeMirror-cursor {border-left: 1px solid white !important}
|
||||
.cm-s-icecoder-classic .CodeMirror-selected {color: #fff !important; background: #037 !important}
|
||||
.cm-s-icecoder-classic .CodeMirror-gutters {background: #161612; min-width: 41px; border-right: 0}
|
||||
.cm-s-icecoder-classic .CodeMirror-linenumber {color: #555; cursor: default}
|
||||
.cm-s-icecoder-classic .CodeMirror-matchingbracket {border: 1px solid grey; color: black !important}
|
||||
@@ -7,6 +7,8 @@ Ported to CodeMirror by Peter Kroon
|
||||
}
|
||||
.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }
|
||||
.cm-s-lesser-dark div.CodeMirror-selected {background: #45443B !important;} /* 33322B*/
|
||||
.cm-s-lesser-dark.CodeMirror ::selection { background: rgba(69, 68, 59, .99); }
|
||||
.cm-s-lesser-dark.CodeMirror ::-moz-selection { background: rgba(69, 68, 59, .99); }
|
||||
.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/
|
||||
|
||||
95
CodeMirror/theme/liquibyte.css
vendored
Normal file
95
CodeMirror/theme/liquibyte.css
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
.cm-s-liquibyte.CodeMirror {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
line-height: 1.2em;
|
||||
font-size: 1em;
|
||||
}
|
||||
.CodeMirror-focused .cm-matchhighlight {
|
||||
text-decoration: underline;
|
||||
text-decoration-color: #0f0;
|
||||
text-decoration-style: wavy;
|
||||
}
|
||||
.cm-trailingspace {
|
||||
text-decoration: line-through;
|
||||
text-decoration-color: #f00;
|
||||
text-decoration-style: dotted;
|
||||
}
|
||||
.cm-tab {
|
||||
text-decoration: line-through;
|
||||
text-decoration-color: #404040;
|
||||
text-decoration-style: dotted;
|
||||
}
|
||||
.cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; }
|
||||
.cm-s-liquibyte .CodeMirror-gutter-elt div{ font-size: 1.2em; }
|
||||
.cm-s-liquibyte .CodeMirror-guttermarker { }
|
||||
.cm-s-liquibyte .CodeMirror-guttermarker-subtle { }
|
||||
.cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0;}
|
||||
.cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee !important; }
|
||||
|
||||
.cm-s-liquibyte span.cm-comment { color: #008000; }
|
||||
.cm-s-liquibyte span.cm-def { color: #ffaf40; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-keyword { color: #c080ff; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-builtin { color: #ffaf40; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-variable { color: #5967ff; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-string { color: #ff8000; }
|
||||
.cm-s-liquibyte span.cm-number { color: #0f0; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-atom { color: #bf3030; font-weight: bold; }
|
||||
|
||||
.cm-s-liquibyte span.cm-variable-2 { color: #007f7f; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-variable-3 { color: #c080ff; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-property { color: #999; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-operator { color: #fff; }
|
||||
|
||||
.cm-s-liquibyte span.cm-meta { color: #0f0; }
|
||||
.cm-s-liquibyte span.cm-qualifier { color: #fff700; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-bracket { color: #cc7; }
|
||||
.cm-s-liquibyte span.cm-tag { color: #ff0; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-attribute { color: #c080ff; font-weight: bold; }
|
||||
.cm-s-liquibyte span.cm-error { color: #f00; }
|
||||
|
||||
.cm-s-liquibyte .CodeMirror-selected { background-color: rgba(255, 0, 0, 0.25) !important; }
|
||||
|
||||
.cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255, 0.12); }
|
||||
|
||||
.cm-s-liquibyte .CodeMirror-activeline-background {background-color: rgba(0, 255, 0, 0.15) !important;}
|
||||
|
||||
/* Default styles for common addons */
|
||||
div.CodeMirror span.CodeMirror-matchingbracket { color: #0f0; font-weight: bold; }
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: #f00; font-weight: bold; }
|
||||
.CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); }
|
||||
/* Scrollbars */
|
||||
/* Simple */
|
||||
div.CodeMirror-simplescroll-horizontal div:hover, div.CodeMirror-simplescroll-vertical div:hover {
|
||||
background-color: rgba(80, 80, 80, .7);
|
||||
}
|
||||
div.CodeMirror-simplescroll-horizontal div, div.CodeMirror-simplescroll-vertical div {
|
||||
background-color: rgba(80, 80, 80, .3);
|
||||
border: 1px solid #404040;
|
||||
border-radius: 5px;
|
||||
}
|
||||
div.CodeMirror-simplescroll-vertical div {
|
||||
border-top: 1px solid #404040;
|
||||
border-bottom: 1px solid #404040;
|
||||
}
|
||||
div.CodeMirror-simplescroll-horizontal div {
|
||||
border-left: 1px solid #404040;
|
||||
border-right: 1px solid #404040;
|
||||
}
|
||||
div.CodeMirror-simplescroll-vertical {
|
||||
background-color: #262626;
|
||||
}
|
||||
div.CodeMirror-simplescroll-horizontal {
|
||||
background-color: #262626;
|
||||
border-top: 1px solid #404040;
|
||||
}
|
||||
/* Overlay */
|
||||
div.CodeMirror-overlayscroll-horizontal div, div.CodeMirror-overlayscroll-vertical div {
|
||||
background-color: #404040;
|
||||
border-radius: 5px;
|
||||
}
|
||||
div.CodeMirror-overlayscroll-vertical div {
|
||||
border: 1px solid #404040;
|
||||
}
|
||||
div.CodeMirror-overlayscroll-horizontal div {
|
||||
border: 1px solid #404040;
|
||||
}
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
.cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;}
|
||||
.cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;}
|
||||
.cm-s-mbo.CodeMirror ::selection { background: rgba(113, 108, 98, .99); }
|
||||
.cm-s-mbo.CodeMirror ::-moz-selection { background: rgba(113, 108, 98, .99); }
|
||||
.cm-s-mbo .CodeMirror-gutters {background: #4e4e4e; border-right: 0px;}
|
||||
.cm-s-mbo .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; }
|
||||
@@ -9,9 +9,11 @@
|
||||
*/
|
||||
.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; }
|
||||
.cm-s-mdn-like .CodeMirror-selected { background: #cfc !important; }
|
||||
.cm-s-mdn-like.CodeMirror ::selection { background: #cfc; }
|
||||
.cm-s-mdn-like.CodeMirror ::-moz-selection { background: #cfc; }
|
||||
|
||||
.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; }
|
||||
.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; margin-left: 3px; }
|
||||
.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; }
|
||||
div.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }
|
||||
|
||||
.cm-s-mdn-like .cm-keyword { color: #6262FF; }
|
||||
@@ -15,6 +15,8 @@
|
||||
.cm-s-midnight.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
|
||||
|
||||
.cm-s-midnight div.CodeMirror-selected {background: #314D67 !important;}
|
||||
.cm-s-midnight.CodeMirror ::selection { background: rgba(49, 77, 103, .99); }
|
||||
.cm-s-midnight.CodeMirror ::-moz-selection { background: rgba(49, 77, 103, .99); }
|
||||
.cm-s-midnight .CodeMirror-gutters {background: #0F192A; border-right: 1px solid;}
|
||||
.cm-s-midnight .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
.cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;}
|
||||
.cm-s-monokai div.CodeMirror-selected {background: #49483E !important;}
|
||||
.cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); }
|
||||
.cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); }
|
||||
.cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;}
|
||||
.cm-s-monokai .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
@@ -16,7 +18,7 @@
|
||||
.cm-s-monokai span.cm-keyword {color: #f92672;}
|
||||
.cm-s-monokai span.cm-string {color: #e6db74;}
|
||||
|
||||
.cm-s-monokai span.cm-variable {color: #a6e22e;}
|
||||
.cm-s-monokai span.cm-variable {color: #f8f8f2;}
|
||||
.cm-s-monokai span.cm-variable-2 {color: #9effff;}
|
||||
.cm-s-monokai span.cm-def {color: #fd971f;}
|
||||
.cm-s-monokai span.cm-bracket {color: #f8f8f2;}
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }
|
||||
.cm-s-night div.CodeMirror-selected { background: #447 !important; }
|
||||
.cm-s-night.CodeMirror ::selection { background: rgba(68, 68, 119, .99); }
|
||||
.cm-s-night.CodeMirror ::-moz-selection { background: rgba(68, 68, 119, .99); }
|
||||
.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-night .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;}
|
||||
.cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;}
|
||||
.cm-s-paraiso-dark.CodeMirror ::selection { background: rgba(65, 50, 63, .99); }
|
||||
.cm-s-paraiso-dark.CodeMirror ::-moz-selection { background: rgba(65, 50, 63, .99); }
|
||||
.cm-s-paraiso-dark .CodeMirror-gutters {background: #2f1e2e; border-right: 0px;}
|
||||
.cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; }
|
||||
.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; }
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;}
|
||||
.cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;}
|
||||
.cm-s-paraiso-light.CodeMirror ::selection { background: #b9b6b0; }
|
||||
.cm-s-paraiso-light.CodeMirror ::-moz-selection { background: #b9b6b0; }
|
||||
.cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;}
|
||||
.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }
|
||||
.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }
|
||||
@@ -14,6 +14,9 @@
|
||||
font-size: 14px;
|
||||
}
|
||||
.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2) !important; }
|
||||
.cm-s-pastel-on-dark.CodeMirror ::selection { background: rgba(221,240,255,0.2); }
|
||||
.cm-s-pastel-on-dark.CodeMirror ::-moz-selection { background: rgba(221,240,255,0.2); }
|
||||
|
||||
.cm-s-pastel-on-dark .CodeMirror-gutters {
|
||||
background: #34302f;
|
||||
border-right: 0px;
|
||||
@@ -1,5 +1,7 @@
|
||||
.cm-s-rubyblue.CodeMirror { background: #112435; color: white; }
|
||||
.cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; }
|
||||
.cm-s-rubyblue.CodeMirror ::selection { background: rgba(56, 86, 111, 0.99); }
|
||||
.cm-s-rubyblue.CodeMirror ::-moz-selection { background: rgba(56, 86, 111, 0.99); }
|
||||
.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; }
|
||||
.cm-s-rubyblue .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; }
|
||||
@@ -53,7 +53,7 @@ http://ethanschoonover.com/solarized/img/solarized-palette.png
|
||||
.cm-s-solarized .cm-number { color: #d33682; }
|
||||
.cm-s-solarized .cm-def { color: #2aa198; }
|
||||
|
||||
.cm-s-solarized .cm-variable { color: #268bd2; }
|
||||
.cm-s-solarized .cm-variable { color: #839496; }
|
||||
.cm-s-solarized .cm-variable-2 { color: #b58900; }
|
||||
.cm-s-solarized .cm-variable-3 { color: #6c71c4; }
|
||||
|
||||
@@ -88,24 +88,19 @@ http://ethanschoonover.com/solarized/img/solarized-palette.png
|
||||
text-decoration-style: dotted;
|
||||
}
|
||||
.cm-s-solarized .cm-strong { color: #eee; }
|
||||
.cm-s-solarized .cm-tab:before {
|
||||
content: "➤"; /*visualize tab character*/
|
||||
color: #586e75;
|
||||
position:absolute;
|
||||
}
|
||||
.cm-s-solarized .cm-error,
|
||||
.cm-s-solarized .cm-invalidchar {
|
||||
color: #586e75;
|
||||
border-bottom: 1px dotted #dc322f;
|
||||
}
|
||||
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-selected {
|
||||
background: #073642;
|
||||
}
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-selected { background: #073642; }
|
||||
.cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); }
|
||||
.cm-s-solarized.cm-s-dark.CodeMirror ::-moz-selection { background: rgba(7, 54, 66, 0.99); }
|
||||
|
||||
.cm-s-solarized.cm-s-light .CodeMirror-selected {
|
||||
background: #eee8d5;
|
||||
}
|
||||
.cm-s-solarized.cm-s-light .CodeMirror-selected { background: #eee8d5; }
|
||||
.cm-s-solarized.cm-s-light.CodeMirror ::selection { background: #eee8d5; }
|
||||
.cm-s-solarized.cm-s-lightCodeMirror ::-moz-selection { background: #eee8d5; }
|
||||
|
||||
/* Editor styling */
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }
|
||||
.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; }
|
||||
.cm-s-the-matrix.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); }
|
||||
.cm-s-the-matrix.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); }
|
||||
.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; }
|
||||
.cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; }
|
||||
.cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; }
|
||||
35
CodeMirror/theme/tomorrow-night-bright.css
vendored
Normal file
35
CodeMirror/theme/tomorrow-night-bright.css
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
|
||||
Name: Tomorrow Night - Bright
|
||||
Author: Chris Kempson
|
||||
|
||||
Port done by Gerard Braad <me@gbraad.nl>
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-tomorrow-night-bright.CodeMirror {background: #000000; color: #eaeaea;}
|
||||
.cm-s-tomorrow-night-bright div.CodeMirror-selected {background: #424242 !important;}
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-gutters {background: #000000; border-right: 0px;}
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; }
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; }
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-linenumber {color: #424242;}
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;}
|
||||
|
||||
.cm-s-tomorrow-night-bright span.cm-comment {color: #d27b53;}
|
||||
.cm-s-tomorrow-night-bright span.cm-atom {color: #a16a94;}
|
||||
.cm-s-tomorrow-night-bright span.cm-number {color: #a16a94;}
|
||||
|
||||
.cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute {color: #99cc99;}
|
||||
.cm-s-tomorrow-night-bright span.cm-keyword {color: #d54e53;}
|
||||
.cm-s-tomorrow-night-bright span.cm-string {color: #e7c547;}
|
||||
|
||||
.cm-s-tomorrow-night-bright span.cm-variable {color: #b9ca4a;}
|
||||
.cm-s-tomorrow-night-bright span.cm-variable-2 {color: #7aa6da;}
|
||||
.cm-s-tomorrow-night-bright span.cm-def {color: #e78c45;}
|
||||
.cm-s-tomorrow-night-bright span.cm-bracket {color: #eaeaea;}
|
||||
.cm-s-tomorrow-night-bright span.cm-tag {color: #d54e53;}
|
||||
.cm-s-tomorrow-night-bright span.cm-link {color: #a16a94;}
|
||||
.cm-s-tomorrow-night-bright span.cm-error {background: #d54e53; color: #6A6A6A;}
|
||||
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-activeline-background {background: #2a2a2a !important;}
|
||||
.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
.cm-s-tomorrow-night-eighties.CodeMirror {background: #000000; color: #CCCCCC;}
|
||||
.cm-s-tomorrow-night-eighties div.CodeMirror-selected {background: #2D2D2D !important;}
|
||||
.cm-s-tomorrow-night-eighties.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); }
|
||||
.cm-s-tomorrow-night-eighties.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); }
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-gutters {background: #000000; border-right: 0px;}
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; }
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; }
|
||||
@@ -1,5 +1,7 @@
|
||||
.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/
|
||||
.cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/
|
||||
.cm-s-twilight.CodeMirror ::selection { background: rgba(50, 50, 50, 0.99); }
|
||||
.cm-s-twilight.CodeMirror ::-moz-selection { background: rgba(50, 50, 50, 0.99); }
|
||||
|
||||
.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; }
|
||||
.cm-s-twilight .CodeMirror-guttermarker { color: white; }
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
.cm-s-vibrant-ink.CodeMirror { background: black; color: white; }
|
||||
.cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; }
|
||||
.cm-s-vibrant-ink.CodeMirror ::selection { background: rgba(53, 73, 60, 0.99); }
|
||||
.cm-s-vibrant-ink.CodeMirror ::-moz-selection { background: rgba(53, 73, 60, 0.99); }
|
||||
|
||||
.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; }
|
||||
@@ -22,6 +22,8 @@ THE SOFTWARE.
|
||||
*/
|
||||
.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; }
|
||||
.cm-s-xq-dark .CodeMirror-selected { background: #27007A !important; }
|
||||
.cm-s-xq-dark.CodeMirror ::selection { background: rgba(39, 0, 122, 0.99); }
|
||||
.cm-s-xq-dark.CodeMirror ::-moz-selection { background: rgba(39, 0, 122, 0.99); }
|
||||
.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; }
|
||||
.cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; }
|
||||
37
CodeMirror/theme/zenburn.css
vendored
Normal file
37
CodeMirror/theme/zenburn.css
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* "
|
||||
* Using Zenburn color palette from the Emacs Zenburn Theme
|
||||
* https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el
|
||||
*
|
||||
* Also using parts of https://github.com/xavi/coderay-lighttable-theme
|
||||
* "
|
||||
* From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css
|
||||
*/
|
||||
|
||||
.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; }
|
||||
.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; }
|
||||
.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
.cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; }
|
||||
.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; }
|
||||
.cm-s-zenburn span.cm-comment { color: #7f9f7f; }
|
||||
.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; }
|
||||
.cm-s-zenburn span.cm-atom { color: #bfebbf; }
|
||||
.cm-s-zenburn span.cm-def { color: #dcdccc; }
|
||||
.cm-s-zenburn span.cm-variable { color: #dfaf8f; }
|
||||
.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; }
|
||||
.cm-s-zenburn span.cm-string { color: #cc9393; }
|
||||
.cm-s-zenburn span.cm-string-2 { color: #cc9393; }
|
||||
.cm-s-zenburn span.cm-number { color: #dcdccc; }
|
||||
.cm-s-zenburn span.cm-tag { color: #93e0e3; }
|
||||
.cm-s-zenburn span.cm-property { color: #dfaf8f; }
|
||||
.cm-s-zenburn span.cm-attribute { color: #dfaf8f; }
|
||||
.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; }
|
||||
.cm-s-zenburn span.cm-meta { color: #f0dfaf; }
|
||||
.cm-s-zenburn span.cm-header { color: #f0efd0; }
|
||||
.cm-s-zenburn span.cm-operator { color: #f0efd0; }
|
||||
.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; }
|
||||
.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; }
|
||||
.cm-s-zenburn .CodeMirror-activeline { background: #000000; }
|
||||
.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; }
|
||||
.cm-s-zenburn .CodeMirror-selected { background: #545454; }
|
||||
.cm-s-zenburn .CodeMirror-focused .CodeMirror-selected { background: #4f4f4f; }
|
||||
@@ -1,7 +1,7 @@
|
||||
Copyright: © 2014 Matt Pass
|
||||
Website: mattpass.com
|
||||
Email: matt@mattpass.com
|
||||
Twitter: @mattpass
|
||||
Copyright: © 2015 ICEcoder Ltd
|
||||
Website: icecoder.net
|
||||
Email: info@icecoder.net
|
||||
Twitter: @icecoder
|
||||
|
||||
#ICEcoder License
|
||||
##Standard Open Source Initiative MIT License
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
ICEcoder is a web IDE / browser based code editor, which allows you to develop websites directly within the web browser. It uses the brilliant CodeMirror for code highlighting & editing, with a slick IDE wrapped around it to make the whole thing work.
|
||||
|
||||
<img src="https://icecoder.net/images/icecoder-v4-5-browser-code-editor.png" alt="ICEcoder web IDE">
|
||||
<img src="https://icecoder.net/images/icecoder-v5-3-browser-code-editor.png" alt="ICEcoder web IDE">
|
||||
|
||||
###Requirements
|
||||
You can run ICEcoder either online or locally, on Linux, Windows or Mac based platforms. The only requirement is to have PHP 5 available (5.3 recommended). You can have this either as a vanilla installation or via a program such as WAMP or XAMPP (for Windows) or MAMP (for Mac).
|
||||
|
||||
4
backups/index.php
Normal file
4
backups/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header("Location: ../");
|
||||
die();
|
||||
?>
|
||||
108
editor.php
108
editor.php
@@ -10,42 +10,53 @@ $t = $text['editor'];
|
||||
<title>ICEcoder v <?php echo $ICEcoder["versionNo"];?> editor</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror.css">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/addon/hint/show-hint.css">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/addon/lint/lint.css">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/addon/hint/show-hint.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" href="<?php echo $ICEcoder["codeMirrorDir"]; ?>/addon/lint/lint.css?microtime=<?php echo microtime(true);?>">
|
||||
<!--
|
||||
codemirror-compressed.js
|
||||
incls: codemirror
|
||||
modes: clike, coffeescript, css, erlang, go, htmlmixed, javascript, julia, lua, markdown, perl, php, python, ruby, rust, sass, sql, xml, yaml
|
||||
addon: brace-fold, closebrackets, closetag, css-hint, html-hint, javascript-hint, javascript-lint, lint, match-highlighter, searchcursor, show-hint, sql-hint, trailingspace, xml-fold, xml-hint
|
||||
//-->
|
||||
<script src="<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror-compressed.js"></script>
|
||||
<script src="<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror-compressed.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/jshint/jshint-2.5.6.min.js")) {
|
||||
echo '<script src="plugins/jshint/jshint-2.5.6.min.js"></script>';
|
||||
echo '<script src="plugins/jshint/jshint-2.5.6.min.js?microtime='.microtime(true).'></script>';
|
||||
};?>
|
||||
<script src="lib/mmd.js"></script>
|
||||
<script src="lib/foldcode.js"></script>
|
||||
<script src="lib/mmd.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="lib/foldcode.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/emmet/emmet.min.js")) {
|
||||
echo '<script src="plugins/emmet/emmet.min.js"></script>';
|
||||
echo '<script src="plugins/emmet/emmet.min.js?microtime='.microtime(true).'"></script>';
|
||||
};?>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/pesticide/pesticide.js")) {
|
||||
echo '<script src="plugins/pesticide/pesticide.js"></script>';
|
||||
echo '<script src="plugins/pesticide/pesticide.js?microtime='.microtime(true).'"></script>';
|
||||
};?>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/stats.js/stats.min.js")) {
|
||||
echo '<script src="plugins/stats.js/stats.min.js"></script>';
|
||||
echo '<script src="plugins/stats.js/stats.min.js?microtime='.microtime(true).'"></script>';
|
||||
};?>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/responsive-helper/responsive-helper.js")) {
|
||||
echo '<script src="plugins/responsive-helper/responsive-helper.js?microtime='.microtime(true).'"></script>';
|
||||
};?>
|
||||
<link rel="stylesheet" href="<?php
|
||||
if ($ICEcoder["theme"]=="default") {echo 'lib/editor.css';} else {echo $ICEcoder["codeMirrorDir"].'/theme/'.$ICEcoder["theme"].'.css';};
|
||||
$activeLineBG = array_search($ICEcoder["theme"],array("3024-day","base16-light","eclipse","elegant","neat","solarized","xq-light")) !== false ? "#ccc" : "#000";
|
||||
echo "?microtime=".microtime(true);
|
||||
if (array_search($ICEcoder["theme"],array("3024-day","base16-light","eclipse","elegant","mdn-like","neat","neo","paraiso-light","solarized","the-matrix","xq-light")) !== false) {
|
||||
$activeLineBG = "#ccc";
|
||||
} elseif (array_search($ICEcoder["theme"],array("3024-night","blackboard","colorforth","liquibyte","night","tomorrow-night-bright","tomorrow-night-eighties","vibrant-ink")) !== false) {
|
||||
$activeLineBG = "#888";
|
||||
} else {
|
||||
$activeLineBG = "#000";
|
||||
}
|
||||
?>">
|
||||
|
||||
<style type="text/css">
|
||||
/* Make sure this next one remains the 1st item, updated with JS */
|
||||
.CodeMirror {position: absolute; top: 0; width: 100%; font-size: <?php echo $ICEcoder["fontSize"];?>; z-index: 1}
|
||||
.CodeMirror {position: absolute; top: 0; width: 100%; font-size: <?php echo $ICEcoder["fontSize"];?>; line-height: 1.3; z-index: 1}
|
||||
.CodeMirror-scroll {} /* was: height: auto; overflow: visible */
|
||||
/* Make sure this next one remains the 3rd item, updated with JS */
|
||||
.cm-s-activeLine {background: <?php echo $activeLineBG;?> !important}
|
||||
@@ -64,25 +75,27 @@ $activeLineBG = array_search($ICEcoder["theme"],array("3024-day","base16-light",
|
||||
.fold {position: absolute; display: inline-block; width: 13px; height: 13px; font-size: 14px; text-align: center; cursor: pointer}
|
||||
.foldOn {background: #800; color: #ddd}
|
||||
.foldOff {background: rgba(255,255,255,0.04); color: #666}
|
||||
.demoArrow {position: absolute; display: inline-block; width: 99px; height: 50px; top: 0; right: 30px; background: url('images/big-arrow.gif') 0 -10px no-repeat; text-align: center; font-family: arial; font-size: 10px; padding-top: 60px}
|
||||
h2 {color: rgba(0,198,255,0.7)}
|
||||
.heading {color:#888}
|
||||
.cm-s-diff {left: 50%}
|
||||
.diffGreen {background: #0b0 !important; color: #000 !important}
|
||||
.diffRed {background: #800 !important; color: #fff !important}
|
||||
.diffGrey {background: #444 !important; color: #fff !important}
|
||||
.diffGreyLighter {background: #888 !important; color: #222 !important}
|
||||
.diffGreyLighter {background: #888 !important; color: #1d1d1b !important}
|
||||
.diffNone {}
|
||||
.info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help}
|
||||
.trialBarContainer {display: inline-block; width: 170px; height: 8px; background: #0b0b0b; margin-bottom: 40px}
|
||||
.trialBarRemaining {display: inline-block; width: 170px; height: 8px; background: rgba(0,198,255,0.7); box-shadow: 0 0 10px 1px rgba(0,198,255,0.5);
|
||||
transition: width 0.7s ease-in-out;
|
||||
}
|
||||
.trialBarText {margin-top: 6px; color: #888}
|
||||
.trialBarText a {color: #fff; text-decoration: none}
|
||||
</style>
|
||||
<link rel="stylesheet" href="lib/file-types.css">
|
||||
<link rel="stylesheet" href="lib/file-type-icons.css">
|
||||
<link rel="stylesheet" href="lib/file-types.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" href="lib/file-type-icons.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body style="color: #fff; margin: 0" onKeyDown="return top.ICEcoder.interceptKeys('content', event);" onKeyUp="top.ICEcoder.resetKeys(event);" onBlur="parent.ICEcoder.resetKeys(event);">
|
||||
|
||||
<?php if ($ICEcoder['demoMode']) {?>
|
||||
<div class="demoArrow"><?php echo $t['Click icons for...'];?></div>
|
||||
<?php ;}; ?>
|
||||
<body style="color: #fff; margin: 0" onKeyDown="return top.ICEcoder.interceptKeys('content', event);" onKeyUp="top.ICEcoder.resetKeys(event);" onBlur="parent.ICEcoder.resetKeys(event);" onload="if (document.getElementById('trialBarRemaining')) {setTimeout(function(){document.getElementById('trialBarRemaining').style.width = '<?php echo $tRemainingPerc*170;?>px';},150)}">
|
||||
|
||||
<div style="display: none; margin: 32px 43px 0 43px; padding: 10px; width: 500px; font-family: arial; font-size: 10px; color: #ddd; background: #333" id="dataMessage"></div>
|
||||
|
||||
@@ -107,10 +120,18 @@ h2 {color: rgba(0,198,255,0.7)}
|
||||
</div>
|
||||
|
||||
<div style="float: left">
|
||||
<?php
|
||||
// No valid license code - show the trial remaining bar
|
||||
if (generateHash(strClean($ICEcoder['licenseEmail']),$ICEcoder['licenseCode'])!=$ICEcoder['licenseCode']) {?>
|
||||
<h2><?php echo $t['trial remaining'];?></h2>
|
||||
<div class="trialBarContainer"><div class="trialBarRemaining" id="trialBarRemaining"></div><br>
|
||||
<div class="trialBarText"><?php echo $tDaysRemaining;?> <?php echo $t['days left'];?> - <a href="lib/login.php?get=code&csrf=<?php echo $_SESSION["csrf"];?>" target="_parent">Unlock now</a></div>
|
||||
</div>
|
||||
<?php ;}; ?>
|
||||
|
||||
<h2><?php echo $t['files'];?></h2>
|
||||
<span class="heading"><?php echo $t['Last 10 files...'];?></span><br>
|
||||
<ul class="fileManager" style="margin-left: 0; line-height: 20px">
|
||||
<?php
|
||||
<ul class="fileManager" id="last10Files" style="margin-left: 0; line-height: 20px"><?php
|
||||
$last10FilesArray = explode(",",$ICEcoder["last10Files"]);
|
||||
for ($i=0;$i<count($last10FilesArray);$i++) {
|
||||
if ($ICEcoder["last10Files"]=="") {
|
||||
@@ -120,14 +141,13 @@ h2 {color: rgba(0,198,255,0.7)}
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-".pathinfo($docRoot.$iceRoot.$fileFolderName, PATHINFO_EXTENSION);
|
||||
echo '<li class="pft-file '.strtolower($ext).'" style="margin-left: -21px">';
|
||||
echo '<a style="cursor:pointer" onClick="top.ICEcoder.openFile(\''.str_replace("|","/",$last10FilesArray[$i]).'\')">';
|
||||
echo '<a style="cursor:pointer" onClick="top.ICEcoder.openFile(\''.str_replace($docRoot,"",str_replace("|","/",$last10FilesArray[$i])).'\')">';
|
||||
echo str_replace($docRoot,"",str_replace("|","/",$last10FilesArray[$i]));
|
||||
echo '</a></li>'.PHP_EOL;
|
||||
if ($i==count($last10FilesArray)-1) {echo '<br>'.PHP_EOL;};
|
||||
echo '</a></li>';
|
||||
if ($i<count($last10FilesArray)-1) {echo PHP_EOL;};
|
||||
}
|
||||
}
|
||||
;?>
|
||||
</ul>
|
||||
;?></ul>
|
||||
</div>
|
||||
|
||||
<div style="clear: both"></div>
|
||||
@@ -157,7 +177,7 @@ h2 {color: rgba(0,198,255,0.7)}
|
||||
<div style="float: left">
|
||||
<h2><?php echo $t['dev mode'];?> <?php echo $ICEcoder['devMode'] ? "on" : "off";?></h2>
|
||||
<span class="heading"><?php echo $t['Status'];?>:</span><br>
|
||||
<?php echo $t['Using']?> <?php echo $ICEcoder['devMode'] ? "ice-coder.js" : "ice-coder.min.js";?> <a title="<?php echo $t['You can switch...'];?>" style="cursor: pointer">[?]</a>
|
||||
<?php echo $t['Using']?> <?php echo $ICEcoder['devMode'] ? "ice-coder.js" : "ice-coder.min.js";?> <a title="<?php echo $t['You can switch...'];?>" class="info">[?]</a>
|
||||
</div>
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
@@ -165,7 +185,12 @@ h2 {color: rgba(0,198,255,0.7)}
|
||||
<script>
|
||||
CodeMirror.keyMap.ICEcoder = {
|
||||
"Tab": function(cm) {
|
||||
return cm.somethingSelected() ? cm.execCommand("indentAuto") : CodeMirror.Pass // Falls through to default or Emmet plugin
|
||||
return cm.somethingSelected()
|
||||
? (top.ICEcoder.indentAuto
|
||||
? cm.execCommand("indentAuto") // Honour our own setting indentAuto
|
||||
: cm.indentSelection("add") // Add indent (this is default handler in CodeMirror)
|
||||
)
|
||||
: CodeMirror.Pass // Falls through to default or Emmet plugin
|
||||
},
|
||||
"Shift-Tab": "indentLess",
|
||||
"Ctrl-Space": "autocomplete",
|
||||
@@ -175,6 +200,23 @@ CodeMirror.keyMap.ICEcoder = {
|
||||
fallthrough: ["default"]
|
||||
};
|
||||
|
||||
// CodeMirror does not honor indentWithTabs = false properly when handling Tab key
|
||||
// Marijn said that it is by design, so we need to make a workaround of our own
|
||||
(function(){
|
||||
// let's back up original insertTab function which actually puts
|
||||
var originalInsertTabFunction = CodeMirror.commands.insertTab;
|
||||
// and replace it with our own, which branches on whether our ICEcoder.indentWithTabs value is true or false
|
||||
CodeMirror.commands.insertTab = function(cm){
|
||||
if (top.ICEcoder.indentWithTabs){
|
||||
// if it is true, then we should still put there, let's use original function
|
||||
return originalInsertTabFunction(cm);
|
||||
} else {
|
||||
// otherwise - let's call another handler, insertSoftTab which will do the job
|
||||
return cm.execCommand("insertSoftTab");
|
||||
}
|
||||
}
|
||||
}());
|
||||
|
||||
function createNewCMInstance(num) {
|
||||
// Establish the filename for the tab
|
||||
var fileName = top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];
|
||||
@@ -227,6 +269,10 @@ function createNewCMInstance(num) {
|
||||
window['cM'+num] .on("change", function(thisCM, changeObj) {top.ICEcoder.cMonChange(thisCM,'cM'+num,changeObj)});
|
||||
window['cM'+num+'diff'] .on("change", function(thisCM, changeObj) {top.ICEcoder.cMonChange(thisCM,'cM'+num+'diff',changeObj)});
|
||||
|
||||
// Before change
|
||||
window['cM'+num] .on("beforeChange", function(thisCM, changeObj) {top.ICEcoder.cMonBeforeChange(thisCM,'cM'+num,changeObj,CodeMirror)});
|
||||
window['cM'+num+'diff'] .on("beforeChange", function(thisCM, changeObj) {top.ICEcoder.cMonBeforeChange(thisCM,'cM'+num+'diff',changeObj,CodeMirror)});
|
||||
|
||||
// Scroll
|
||||
window['cM'+num] .on("scroll", function(thisCM) {top.ICEcoder.cMonScroll(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("scroll", function(thisCM) {top.ICEcoder.cMonScroll(thisCM,'cM'+num+'diff')});
|
||||
@@ -255,4 +301,4 @@ function createNewCMInstance(num) {
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
14
files.php
14
files.php
@@ -12,17 +12,21 @@ $isGitHubRepoDir = in_array($ICEcoder["root"],$ICEcoder['githubLocalPaths']);
|
||||
<head>
|
||||
<title>ICEcoder v <?php echo $ICEcoder["versionNo"];?> file manager</title>
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="lib/files.css">
|
||||
<link rel="stylesheet" type="text/css" href="lib/file-types.css">
|
||||
<link rel="stylesheet" type="text/css" href="lib/file-type-icons.css">
|
||||
<script src="lib/ice-coder<?php if (!$ICEcoder['devMode']) {echo '.min';};?>.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" href="lib/files.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" type="text/css" href="lib/file-types.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" type="text/css" href="lib/file-type-icons.css?microtime=<?php echo microtime(true);?>">
|
||||
<script src="lib/ice-coder<?php if (!$ICEcoder['devMode']) {echo '.min';}; echo ".js?microtime=".microtime(true);?>" type="text/javascript"></script>
|
||||
<!--Updated via settings so must remain 4th stylesheet//-->
|
||||
<style>
|
||||
ul.fileManager li a span { font-size: <?php echo $ICEcoder["fontSize"];?>; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body onFocus="top.ICEcoder.files.style.background='#444'" onBlur="top.ICEcoder.files.style.background='#383838'" onload="top.ICEcoder.showHideGithubNav(top.ICEcoder.githubDiff ? 'show' : 'hide')" onDblClick="top.ICEcoder.openFile()" onKeyDown="return top.ICEcoder.interceptKeys('files', event);" onKeyUp="top.ICEcoder.resetKeys(event);" onBlur="parent.ICEcoder.resetKeys(event);">
|
||||
|
||||
<div title="<?php echo $t['Lock'];?>" onClick="top.ICEcoder.lockUnlockNav()" id="fmLock" class="lock"></div>
|
||||
<div title="<?php echo $t['Refresh'];?>" onClick="top.ICEcoder.refreshFileManager()" class="refresh"></div>
|
||||
<div title="Plugins" onClick="top.ICEcoder.showHidePlugins(top.get('plugins').style.width != '55px' ? 'show' : 'hide')" class="plugins"></div>
|
||||
<div title="<?php echo $t['Plugins'];?>" onClick="top.ICEcoder.showHidePlugins(top.get('plugins').style.width != '55px' ? 'show' : 'hide')" class="plugins"></div>
|
||||
<?php
|
||||
$_SESSION['githubDiff'] = false;
|
||||
if ($isGitHubRepoDir) {
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 430 B |
34
index.php
34
index.php
@@ -40,10 +40,14 @@ $isMac = strpos($_SERVER['HTTP_USER_AGENT'], "Macintosh")>-1 ? true : false;
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false; if (!top.ICEcoder.overCloseLink) {top.ICEcoder.tabDragEnd()}" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'top');top.ICEcoder.canResizeFilesW()}" onMouseWheel="if (!top.ICEcoder.getcMInstance().hasFocus() && !top.ICEcoder.getcMdiffInstance().hasFocus()) {event.wheelDelta > 0 ? top.ICEcoder.nextTab() : top.ICEcoder.previousTab();}">
|
||||
<head>
|
||||
<title>ICEcoder v <?php echo $ICEcoder["versionNo"];?></title>
|
||||
<!--Updated via settings so must remain 1st stylesheet//-->
|
||||
<style>
|
||||
#tabsBar.tabsBar .tab { font-size: <?php echo $ICEcoder["fontSize"];?>; }
|
||||
</style>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="lib/ice-coder.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.5, user-scalable=no">
|
||||
<link rel="stylesheet" type="text/css" href="lib/ice-coder.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="icon" type="image/png" href="favicon.png">
|
||||
<script>
|
||||
iceRoot = "<?php echo $ICEcoder['root']; ?>";
|
||||
@@ -54,6 +58,7 @@ window.onbeforeunload = function() {
|
||||
return "<?php echo $t['You have some...'];?>.";
|
||||
}
|
||||
}
|
||||
return "<?php echo $t['Are you sure...'];?>";
|
||||
}
|
||||
|
||||
t = {
|
||||
@@ -71,11 +76,11 @@ $t = $text['index'];
|
||||
?>
|
||||
}
|
||||
</script>
|
||||
<script language="JavaScript" src="lib/ice-coder<?php if (!$ICEcoder['devMode']) {echo '.min';};?>.js"></script>
|
||||
<script src="lib/mmd.js"></script>
|
||||
<script src="farbtastic/farbtastic.js"></script>
|
||||
<script src="lib/difflib.js"></script>
|
||||
<link rel="stylesheet" href="farbtastic/farbtastic.css" type="text/css">
|
||||
<script language="JavaScript" src="lib/ice-coder<?php if (!$ICEcoder['devMode']) {echo '.min';};?>.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="lib/mmd.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="farbtastic/farbtastic.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="lib/difflib.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<link rel="stylesheet" href="farbtastic/farbtastic.css?microtime=<?php echo microtime(true);?>" type="text/css">
|
||||
</head>
|
||||
|
||||
<body onLoad="<?php
|
||||
@@ -92,8 +97,10 @@ $t = $text['index'];
|
||||
"top.ICEcoder.updateDiffOnSave = ".($ICEcoder["updateDiffOnSave"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.languageUser = '".$ICEcoder["languageUser"]."';".
|
||||
"top.ICEcoder.codeAssist = ".($ICEcoder["codeAssist"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.lockedNav = ".($ICEcoder["lockedNav"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.lineWrapping = ".($ICEcoder["lineWrapping"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.indentWithTabs = ".($ICEcoder["indentWithTabs"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.indentAuto = ".($ICEcoder["indentAuto"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.indentSize = ".$ICEcoder["indentSize"].";".
|
||||
"top.ICEcoder.demoMode = ".($ICEcoder["demoMode"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.tagWrapperCommand = '".$ICEcoder["tagWrapperCommand"]."';".
|
||||
@@ -101,6 +108,7 @@ $t = $text['index'];
|
||||
"top.ICEcoder.bugFilePaths = ['".implode("','",$ICEcoder["bugFilePaths"])."'];".
|
||||
"top.ICEcoder.bugFileCheckTimer = ".$ICEcoder["bugFileCheckTimer"].";".
|
||||
"top.ICEcoder.bugFileMaxLines = ".$ICEcoder["bugFileMaxLines"].";".
|
||||
"top.ICEcoder.fileDirResOutput = '".$ICEcoder["fileDirResOutput"]."';".
|
||||
"top.ICEcoder.newDirPerms = ".$ICEcoder["newDirPerms"].";".
|
||||
"top.ICEcoder.newFilePerms = ".$ICEcoder["newFilePerms"].";";
|
||||
if($ICEcoder["githubAuthToken"] != "") {
|
||||
@@ -114,6 +122,7 @@ $t = $text['index'];
|
||||
<div class="popupVCenter">
|
||||
<div class="popup" id="mediaContainer"></div>
|
||||
</div>
|
||||
<div class="floatingContainer" id="floatingContainer"></div>
|
||||
</div>
|
||||
|
||||
<div id="loadingMask" class="blackMask" style="visibility: visible" onContextMenu="return false">
|
||||
@@ -130,7 +139,7 @@ $t = $text['index'];
|
||||
<a nohref onClick="top.ICEcoder.showColorPicker(top.document.getElementById('color') ? top.document.getElementById('color').value : '#123456')" title="Farbtastic
|
||||
<?php echo $t['Color picker'];?>"><img src="images/color-picker.png" style="cursor: pointer" alt="Color Picker"></a><br><br>
|
||||
<div id="pluginsOptional"><?php echo $pluginsDisplay; ?></div>
|
||||
<a nohref onclick="top.ICEcoder.pluginsManager()" title="Plugins Manager" style="color: #fff; cursor: pointer">+ / -</a>
|
||||
<a nohref onclick="top.ICEcoder.pluginsManager()" title="<?php echo $t['Plugins Manager'];?>" style="color: #fff; cursor: pointer">+ / -</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -141,7 +150,7 @@ $t = $text['index'];
|
||||
<div onMouseOver="ICEcoder.showFileMenu()" style="padding: 2px 0"><hr></div>
|
||||
<a href="javascript:top.ICEcoder.uploadFilesSelect(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Upload File(s)'];?></a>
|
||||
<div style="display: none">
|
||||
<form enctype="multipart/form-data" id="uploadFilesForm" action="lib/file-control.php?action=upload&file=/uploaded" method="POST" target="fileControl">
|
||||
<form enctype="multipart/form-data" id="uploadFilesForm" action="lib/file-control-xhr.php?action=upload&file=/uploaded" method="POST" target="fileControl">
|
||||
<input type="hidden" name="folder" id="uploadDir" value="/">
|
||||
<input type="file" name="filesInput[]" id="fileInput" onchange="top.ICEcoder.uploadFilesSubmit(this)" multiple>
|
||||
<input type="submit" value="Upload File">
|
||||
@@ -261,7 +270,7 @@ $t = $text['index'];
|
||||
<form name="findAndReplace" onSubmit="ICEcoder.findReplace(top.document.getElementById('find').value,false,true);return false">
|
||||
<div class="findReplace">
|
||||
<div class="findText"><?php echo $t['Find'];?></div>
|
||||
<input type="text" name="find" value="" id="find" class="textbox find" onKeyUp="ICEcoder.findReplace(top.document.getElementById('find').value,true,false)">
|
||||
<input type="text" name="find" value="" id="find" class="textbox find" onKeyUp="ICEcoder.findReplace(top.document.getElementById('find').value,true,false,event.keyCode == 27)">
|
||||
|
||||
<div class="selectWrapper" style="width: 41px">
|
||||
<select name="connector" onChange="ICEcoder.findReplaceOptions()" style="width: 40px; margin-top: 4px">
|
||||
@@ -288,7 +297,7 @@ $t = $text['index'];
|
||||
<option><?php echo $t['all filenames'];?></option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="submit" name="submit" value=">>" class="submit">
|
||||
<input type="submit" name="submit" id="findReplaceSubmit" value=">>" class="submit">
|
||||
<div class="results" id="results"></div>
|
||||
</div>
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
@@ -309,7 +318,8 @@ $t = $text['index'];
|
||||
|
||||
<div class="footer" id="footer" onContextMenu="return false">
|
||||
<div class="nesting" id="nestValid"></div>
|
||||
<div class="splitPaneControls" id="splitPaneControls"><div class="off" id="splitPaneControlsOff" onclick="top.ICEcoder.setSplitPane('off')"></div><div class="on" id="splitPaneControlsOn" onclick="top.ICEcoder.setSplitPane('on')" style="opacity: 0.5"></div></div>
|
||||
<div class="versionsDisplay" id="versionsDisplay" onclick="top.ICEcoder.versionsScreen(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1].replace(/\//g,'|'))"></div>
|
||||
<div class="splitPaneControls" id="splitPaneControls"><div class="off" id="splitPaneControlsOff" title="<?php echo $t['Single pane'];?>" onclick="top.ICEcoder.setSplitPane('off')"></div><div class="on" id="splitPaneControlsOn" title="<?php echo $t['Diff pane also'];?>" onclick="top.ICEcoder.setSplitPane('on')" style="opacity: 0.5"></div></div>
|
||||
<div class="byteDisplay" id="byteDisplay" style="display: none" onClick="top.ICEcoder.showDisplay('char')"></div>
|
||||
<div class="charDisplay" id="charDisplay" style="display: inline-block" onClick="top.ICEcoder.showDisplay('byte')"></div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
// Chinese language translation
|
||||
// by: @lzh370 (GitHub)
|
||||
// lzh370@qq.com
|
||||
@@ -49,6 +49,7 @@ $text = array(
|
||||
"Your version is" => "你的版本是",
|
||||
"Update now" => "现在更新",
|
||||
"You have some..." => "你有一些未保存的更改",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "载入中",
|
||||
"Color picker" => "颜色选择器",
|
||||
"New File" => "新建文件",
|
||||
@@ -386,6 +387,7 @@ $text = array(
|
||||
"indent type" => "缩进类型",
|
||||
"indent size" => "缩进大小",
|
||||
"font size" => "字体大小",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "布局",
|
||||
"plugin panel aligned" => "插件板对齐",
|
||||
"file manager" => "文件管理器",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
// Traditional Chinese language translation
|
||||
// by: @lzh370 (GitHub)
|
||||
// lzh370@qq.com
|
||||
@@ -49,6 +49,7 @@ $text = array(
|
||||
"Your version is" => "你的版本是",
|
||||
"Update now" => "現在更新",
|
||||
"You have some..." => "你有一些未保存的更改",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "裝載中",
|
||||
"Color picker" => "顔色選擇器",
|
||||
"New File" => "新建文件",
|
||||
@@ -386,6 +387,7 @@ $text = array(
|
||||
"indent type" => "縮進類型",
|
||||
"indent size" => "縮進大小",
|
||||
"font size" => "字體大小",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "佈局",
|
||||
"plugin panel aligned" => "插件版對齊",
|
||||
"file manager" => "文件管理器",
|
||||
|
||||
@@ -51,6 +51,7 @@ in lib/config__settings.php",
|
||||
"Your version is" => "Uw versie is",
|
||||
"Update now" => "Nu updaten",
|
||||
"You have some..." => "Er zijn wijzigingen die niet opgeslagen zijn",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "bezig",
|
||||
"Color picker" => "Kleuren kiezer",
|
||||
"New File" => "Nieuw bestand",
|
||||
@@ -388,6 +389,7 @@ in lib/config__settings.php",
|
||||
"indent type" => "inspring type",
|
||||
"indent size" => "inspring size",
|
||||
"font size" => "lettergrootte",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "lay-out",
|
||||
"plugin panel aligned" => "plug-in paneel positie",
|
||||
"file manager" => "bestandsbeheer",
|
||||
|
||||
@@ -11,7 +11,6 @@ $text = array(
|
||||
|
||||
"editor" =>
|
||||
array(
|
||||
"Click icons for..." => "<b>Click icons<br>for help &<br>usage info</b>",
|
||||
"server" => "server",
|
||||
"Server name, OS..." => "Server name, OS & IP:",
|
||||
"Root" => "Root:",
|
||||
@@ -21,6 +20,8 @@ $text = array(
|
||||
"your device" => "your device",
|
||||
"Browser" => "Browser:",
|
||||
"Your IP" => "Your IP:",
|
||||
"trial remaining" => "trial remaining",
|
||||
"days left" => "days left",
|
||||
"files" => "files",
|
||||
"Last 10 files..." => "Last 10 files opened:",
|
||||
"none" => "[none]",
|
||||
@@ -37,6 +38,7 @@ $text = array(
|
||||
array(
|
||||
"Lock" => "Lock",
|
||||
"Refresh" => "Refresh",
|
||||
"Plugins" => "Plugins",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
@@ -48,8 +50,10 @@ $text = array(
|
||||
"Your version is" => "Your version is",
|
||||
"Update now" => "Update now",
|
||||
"You have some..." => "You have some unsaved changes",
|
||||
"Are you sure..." => "Are you sure you want to close?",
|
||||
"working" => "working",
|
||||
"Color picker" => "Color picker",
|
||||
"Plugins Manager" => "Plugins Manager",
|
||||
"New File" => "New File",
|
||||
"New Folder" => "New Folder",
|
||||
"Upload File(s)" => "Upload File(s)",
|
||||
@@ -101,11 +105,20 @@ $text = array(
|
||||
"Code Assist" => "Code Assist",
|
||||
"Go to Line" => "Go to Line",
|
||||
"View" => "View",
|
||||
"Bug reporting not active" => "Bug reporting not active"
|
||||
"Bug reporting not active" => "Bug reporting not active",
|
||||
"Single pane" => "Single pane",
|
||||
"Diff pane also" => "Diff pane also"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"backup-versions" =>
|
||||
array(
|
||||
"backup" => "backup",
|
||||
"backups" => "backups",
|
||||
"available for" => "available for"
|
||||
),
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Found in:"
|
||||
@@ -113,6 +126,7 @@ $text = array(
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry, bad filename..." => "Sorry, bad filename provided. Check the dev tools console for more info?",
|
||||
"Sorry" => "Sorry",
|
||||
"does not seem..." => "does not seem to exist on the server",
|
||||
"Sorry, could not..." => "Sorry, could not get contents of",
|
||||
@@ -128,6 +142,7 @@ $text = array(
|
||||
"Sorry, cannot save" => "Sorry, cannot save",
|
||||
"Sorry, cannot replace..." => "Sorry, cannot replace text in",
|
||||
"Sorry, cannot change..." => "Sorry, cannot change permissions on",
|
||||
"Sorry, cannot delete more..." => "Sorry, cannot delete more then one item at a time under FTP mode",
|
||||
"Sorry, cannot delete..." => "Sorry, cannot delete the root level",
|
||||
"Sorry, cannot delete" => "Sorry, cannot delete",
|
||||
"Sorry, this file..." => "Sorry, this file has changed, cannot save",
|
||||
@@ -155,7 +170,9 @@ $text = array(
|
||||
"github paths" => "github paths",
|
||||
"Choose existing path" => "Choose existing path",
|
||||
"Local path" => "Local path",
|
||||
"Slash prefixed" => "Slash prefixed",
|
||||
"Remote GitHub path" => "Remote GitHub path",
|
||||
"Absolute URL beginning..." => "Absolute URL, beginning https://github.com",
|
||||
"Choose" => "Choose",
|
||||
"Set local and..." => "Set local and remote path to blank to remove",
|
||||
"Update" => "Update",
|
||||
@@ -232,6 +249,7 @@ $text = array(
|
||||
"Close current tab" => "Close current tab",
|
||||
"Open file prompt" => "Open file prompt",
|
||||
"Find" => "Find",
|
||||
"Previous" => "Previous",
|
||||
"Focus on Go..." => "Focus on Go to line input",
|
||||
"Save" => "Save",
|
||||
"Save as" => "Save as...",
|
||||
@@ -244,6 +262,7 @@ $text = array(
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"results" => "results",
|
||||
"No text selected..." => "No text selected to search on",
|
||||
"all files" => "all files",
|
||||
"all filenames" => "all filenames",
|
||||
@@ -252,8 +271,9 @@ $text = array(
|
||||
"Creating Folder" => "Creating Folder",
|
||||
"Sorry you can..." => "Sorry, you can only have 100 files open at a time!",
|
||||
"Opening File" => "Opening File",
|
||||
"Enter relative file..." => "Enter relative file path (prefixed with /) or remote URL",
|
||||
"Enter relative file..." => "Enter relative file path (prefixed with /) or remote URL\\nYou can enter \\n'/path/file:123' or \\n'/path/file(123)' or \\n'/path/file.ext line 123' \\nto go directly to particular line",
|
||||
"Getting" => "Getting",
|
||||
"Saving" => "Saving:",
|
||||
"Please enter the..." => "Please enter the new name for",
|
||||
"Renaming to" => "Renaming to",
|
||||
"Moving to" => "Moving to",
|
||||
@@ -267,6 +287,7 @@ $text = array(
|
||||
"replace all" => "replace all",
|
||||
"file" => "file",
|
||||
"Replacing text in" => "Replacing text in",
|
||||
"Sorry there was..." => "Sorry, there was an error with your request.\\n\\nPlease check your dev tools console for more info.",
|
||||
"Cancelled tasks" => "Cancelled tasks",
|
||||
"Open previous files" => "Open previous files?",
|
||||
"Please enter your..." => "Please enter your GitHub token (either personal access token or client/secret pair token). See tooltip next to Github Auth Token on Help > Settings screen for more info",
|
||||
@@ -276,8 +297,7 @@ $text = array(
|
||||
"Error cannot find..." => "Error: cannot find/access the error file paths",
|
||||
"No new errors..." => "No new errors found",
|
||||
"You have made..." => "You have made changes. Are you sure you want to close without saving?",
|
||||
"Close all tabs" => "Close all tabs?",
|
||||
"results" => "results"
|
||||
"Close all tabs" => "Close all tabs?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
@@ -371,7 +391,13 @@ $text = array(
|
||||
"codemirror dir" => "codemirror dir",
|
||||
"codemirror version" => "codemirror version",
|
||||
"file manager root" => "file manager root",
|
||||
"Free to use..." => "Free to use it for your own purposes, commercial or not, just let me know of any cool uses or customisations. :)<br><br>No warranty or liability accepted for anything, all responsibility of use is your own.<br><br>A lot of fantastic people and companies have helped build ICEcoder and there is too many to thank here. Please see the full list at",
|
||||
"backups" => "backups",
|
||||
"keep version control..." => "keep version control backups for",
|
||||
"day" => "day",
|
||||
"days" => "days",
|
||||
"of backups stored..." => "of backups stored currently",
|
||||
"Get in contact..." => "Get in contact by...",
|
||||
"You may use..." => "You may use ICEcoder for your own purposes, commercial or not, just let us know of any cool uses or customisations. :)<br><br>No warranty or liability accepted for anything, all responsibility of use is your own.",
|
||||
"functionality" => "functionality",
|
||||
"check for updates..." => "check for updates on load",
|
||||
"auto open last..." => "auto open last files on login",
|
||||
@@ -397,6 +423,7 @@ $text = array(
|
||||
"indent type" => "indent type",
|
||||
"indent size" => "indent size",
|
||||
"font size" => "font size",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "plugin panel aligned",
|
||||
"file manager" => "file manager",
|
||||
@@ -430,7 +457,19 @@ $text = array(
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Update appears to be successful"
|
||||
),
|
||||
|
||||
"find-in-files" =>
|
||||
array(
|
||||
"Enter path to search in" => "Enter path to search in",
|
||||
"Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)" => "Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)",
|
||||
"Type of text" => "Type of text",
|
||||
"Fixed text" => "Fixed text",
|
||||
"Regular expression" => "Regular expression",
|
||||
"Case sensitive" => "Case sensitive",
|
||||
"Yes" => "Yes",
|
||||
"No" => "No",
|
||||
"Search" => "Search",
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
// French language translation
|
||||
// par: @krisxoofoo (GitHub)
|
||||
// @kris_fr Twitter)
|
||||
@@ -48,6 +48,7 @@ dans lib/config__settings.php",
|
||||
"Your version is" => "Votre version est la",
|
||||
"Update now" => "Mettre à jour maintenant",
|
||||
"You have some..." => "Vous avez quelques changements non sauvegardés",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "en progression",
|
||||
"Color picker" => "Sélecteur de couleur",
|
||||
"New File" => "Nouveau fichier",
|
||||
@@ -384,6 +385,7 @@ dans lib/config__settings.php",
|
||||
"indent type" => "indent type",
|
||||
"indent size" => "indent size",
|
||||
"font size" => "font size",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "disposition",
|
||||
"plugin panel aligned" => "panneau des plugins aligné",
|
||||
"file manager" => "gestionnaire de fichiers",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
// German language translation
|
||||
// by: @olliiee (GitHub)
|
||||
// @trolliusgigant (Twitter)
|
||||
@@ -47,16 +47,17 @@ $text = array(
|
||||
"UPDATE INFO" => "Update Infos",
|
||||
"now available" => "jetzt verfügbar",
|
||||
"Your version is" => "Deine Version ist",
|
||||
"Update now" => "Aktualisiere jetzt",
|
||||
"You have some..." => "Du hast einige nicht gespeicherete Datein",
|
||||
"Update now" => "Jetzt aktualisieren",
|
||||
"You have some..." => "Du hast einige nicht gespeicherete Dateien",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "arbeite",
|
||||
"Color picker" => "Farbauswahl",
|
||||
"New File" => "Neue Datei",
|
||||
"New Folder" => "Neuer Ordner",
|
||||
"Upload File(s)" => "Dateie(n) hochladen",
|
||||
"Upload File(s)" => "Datei(en) hochladen",
|
||||
"Paste" => "Einfügen",
|
||||
"Open" => "Öffnen",
|
||||
"Copy" => "Kopiere",
|
||||
"Copy" => "Kopieren",
|
||||
"Duplicate" => "Duplizieren",
|
||||
"Delete" => "Löschen",
|
||||
"Rename" => "Umbenennen",
|
||||
@@ -85,7 +86,7 @@ $text = array(
|
||||
"Manual" => "Anleitung",
|
||||
"Shortcuts" => "Schnellzugriffe",
|
||||
"Settings" => "Einstellungen",
|
||||
"Search for selected" => "Nach selektiertem suchen",
|
||||
"Search for selected" => "Nach Auswahl suchen",
|
||||
"website" => "Website",
|
||||
"Close all tabs" => "Alle Tabs schließen",
|
||||
"Alphabetize tabs" => "Tabs alphabetisch sortieren",
|
||||
@@ -150,7 +151,7 @@ $text = array(
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Entschuldigung, kann Verzeichnis nicht anlegen",
|
||||
"Cannot update config..." => "Kannn die Config Datei nicht aktualisieren. Bitte Lese- und Schreibrechte setzen",
|
||||
"Cannot update config..." => "Kann die Config Datei nicht aktualisieren. Bitte Schreibrechte setzen",
|
||||
"and try again" => "und versuch es noch einmal",
|
||||
"saving github paths" => "Speichere GitHub Pfad ...",
|
||||
"github paths" => "GitHub Pfad",
|
||||
@@ -216,9 +217,9 @@ $text = array(
|
||||
"Wrap unwrap strong" => "Umschließen / Mit <strong> auschließen",
|
||||
"Wrap unwrap em" => "Umschließen / Mit <em> auschließen",
|
||||
"Wrap unwrap h1..." => "Umschließen / Mit <h1> - <h3> auschließen",
|
||||
"End line with..." => "Zeile abschließ mit <br>",
|
||||
"End line with..." => "Zeile abschließen mit <br>",
|
||||
"Close tab" => "Tab schließen",
|
||||
"Select file folder" => "Datei / Verzeichnis ausählen",
|
||||
"Select file folder" => "Datei / Verzeichnis auswählen",
|
||||
"Open file" => "Datei öffnen",
|
||||
"Range select" => "Bereich auswählen",
|
||||
"Options for selected" => "Optionen für ausgewählte",
|
||||
@@ -272,13 +273,13 @@ $text = array(
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder muss neu geladen werden, damit das Plugin genutzt werden kann. Jetzt neu laden?",
|
||||
"saving plugins" => "speicher Plugins ...",
|
||||
"saving plugins" => "speichere Plugins ...",
|
||||
"Cannot update config..." => "Kann die Konfigurationsdatei nicht aktualisieren. Bitte Schreibrechte vergeben",
|
||||
"and try again" => "und es nochmal versuchen",
|
||||
"couldnt delete dir" => "kann Verzeichnis nicht löschen",
|
||||
"couldnt delete file" => "kann Datei nicht löschen",
|
||||
"plugins" => "Plugins",
|
||||
"Guide to writing..." => "Anleitung zum erstellen von Plugins",
|
||||
"Guide to writing..." => "Anleitung zum Erstellen von Plugins",
|
||||
"Manage Installed" => "Geführte Installtion",
|
||||
"URL" => "URL",
|
||||
"Target" => "Ziel",
|
||||
@@ -328,20 +329,20 @@ $text = array(
|
||||
"version" => "Version",
|
||||
"website" => "Website",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "gespiegeltes Verzeichnis",
|
||||
"codemirror version" => "gespiegelte Version",
|
||||
"file manager root" => "Grundverzeichnis vom Dateimanager",
|
||||
"codemirror dir" => "CodeMirror Verzeichnis",
|
||||
"codemirror version" => "CodeMirror Version",
|
||||
"file manager root" => "Stammverzeichnis vom Dateimanager",
|
||||
"Free to use..." => "Kostenfrei nutzbar, kommerziell oder nicht. Gebt mir Bescheid über eure Nutzung oder Anpassungen. :)<br><br>Keine Garantie oder Haftung, Nutzung auf eigene Gefahr.<br><br>Viele fantastische Leute und Unternehmen haben dabei geholfen ICEcoder zu dem zu machen, was es heute ist. Und es sind zu viele um ihnen einzelen zu danken. Eine vollständige Liste gibt es unter",
|
||||
"functionality" => "Funktionalität",
|
||||
"check for updates..." => "Bei jedem Ladem nach Updates suchen",
|
||||
"auto open last..." => "Lade automatisch alle zuletzt geöffneten Datein beim Login",
|
||||
"when finding in..." => "bei der Suche in Dateien ausschließen",
|
||||
"assisting" => "assestieren",
|
||||
"assisting" => "Assistenten",
|
||||
"code assist" => "Codeassistent",
|
||||
"visible tabs" => "sichtbare Tabs",
|
||||
"locked nav" => "gesperrte Navigation",
|
||||
"tag wrapper command" => "Tag für Wrapper Kommando setzen",
|
||||
"auto-complete on" => "auto-complete an",
|
||||
"tag wrapper command" => "Kommando für Tag Wrapper",
|
||||
"auto-complete on" => "Auto-Vervollständigen mit",
|
||||
"security" => "Sicherheit",
|
||||
"new password" => "neues Passwort",
|
||||
"8 chars min" => "8 Zeichen mindestens",
|
||||
@@ -354,13 +355,14 @@ $text = array(
|
||||
"style" => "Style",
|
||||
"theme" => "Theme",
|
||||
"line wrapping" => "Zeilenumbruch",
|
||||
"indent type" => "Gedankenstrich Typ",
|
||||
"indent size" => "Größe Gedankenstrich",
|
||||
"indent type" => "Einrückung mit",
|
||||
"indent size" => "Tabweite",
|
||||
"font size" => "Schriftgröße",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "Layout",
|
||||
"plugin panel aligned" => "Plugin-Panel ausgerichtet",
|
||||
"plugin panel aligned" => "Ausrichtung Plugin-Panel",
|
||||
"file manager" => "Dateimanager",
|
||||
"root" => "Stamm",
|
||||
"root" => "Stammordner",
|
||||
"Slash prefixed" => "Schrägstrich vorangestellt",
|
||||
"bug reporting" => "Fehlermeldung",
|
||||
"check in files" => "Dateien einchecken",
|
||||
@@ -370,7 +372,7 @@ $text = array(
|
||||
"multi-user" => "Mehrbenutzer",
|
||||
"Make sure you..." => "Sei sicher, dass du dich nicht selber aussperrst",
|
||||
"Registration" => "Registrieren",
|
||||
"auth token" => "Authetifizierungs-Token",
|
||||
"auth token" => "Authentifizierungs-Token",
|
||||
"Required to get..." => "Notwendig für diffs, commits des bei GitHub gehosteten Repository usw.. Wenn du keinen hast, kannst du einen:".PHP_EOL.PHP_EOL.
|
||||
"- persönlichen Zugriffs Token (https://help.github.com/articles/creating-an-access-token-for-command-line-use) erstellen, oder".PHP_EOL.
|
||||
"- Full Client/geheimen Token (http://developer.github.com/v3/oauth) erstellen.".PHP_EOL.PHP_EOL.
|
||||
@@ -393,4 +395,4 @@ $text = array(
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -11,7 +11,6 @@ $text = array(
|
||||
|
||||
"editor" =>
|
||||
array(
|
||||
"Click icons for..." => "<b>Clicca le icone<br>per l'aiuto &<br>la guida</b>",
|
||||
"server" => "server",
|
||||
"Server name, OS..." => "Nome server, Sistema operativo e indirizzo IP...",
|
||||
"Root" => "Root:",
|
||||
@@ -25,6 +24,8 @@ $text = array(
|
||||
"Last 10 files..." => "Ultimi 10 file aperti:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "prova suite",
|
||||
"trial remaining" => "tempo rimanente alla fine del periodo di prova",
|
||||
"days left" => "giorni rimanenti",
|
||||
"Run unit tests" => "Esegui test di unità",
|
||||
"dev mode" => "modalità sviluppo",
|
||||
"Status" => "Stato",
|
||||
@@ -37,6 +38,7 @@ $text = array(
|
||||
array(
|
||||
"Lock" => "Blocca",
|
||||
"Refresh" => "Aggiorna",
|
||||
"Plugins" => "Plugins",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
@@ -48,8 +50,10 @@ $text = array(
|
||||
"Your version is" => "La tua versione Egrave;",
|
||||
"Update now" => "Aggiorna ora",
|
||||
"You have some..." => "Ci sono modifiche non salvate",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "working",
|
||||
"Color picker" => "Selettore di colore",
|
||||
"Plugins Manager" => "Plugins Manager",
|
||||
"New File" => "Nuovo file",
|
||||
"New Folder" => "Nuova cartella",
|
||||
"Upload File(s)" => "Carica File",
|
||||
@@ -101,7 +105,9 @@ $text = array(
|
||||
"Code Assist" => "Code Assist",
|
||||
"Go to Line" => "Vai alla linea",
|
||||
"View" => "Visualizza",
|
||||
"Bug reporting not active" => "Segnalazione bug non attiva"
|
||||
"Bug reporting not active" => "Segnalazione bug non attiva",
|
||||
"Single pane" => "Pannello singolo",
|
||||
"Diff pane also" => "Pannello delle differenze"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
@@ -156,6 +162,7 @@ $text = array(
|
||||
"Choose existing path" => "Scegli il percorso esistente",
|
||||
"Local path" => "Percorso locale",
|
||||
"Remote GitHub path" => "Remote GitHub path",
|
||||
"Absolute URL beginning..." => "Url assoluto che comincia con https://github.com",
|
||||
"Choose" => "Scegli",
|
||||
"Set local and..." => "Imposta percorso locale e remoto, lasciare vuoto per per rimuovere",
|
||||
"Update" => "Aggiorna",
|
||||
@@ -242,6 +249,7 @@ $text = array(
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"results" => "risultati",
|
||||
"No text selected..." => "Nessun testo selezionato per la ricerc",
|
||||
"all files" => "tutti i file",
|
||||
"all filenames" => "tutti i nomi dei file",
|
||||
@@ -395,6 +403,7 @@ $text = array(
|
||||
"indent type" => "tipo di rientro",
|
||||
"indent size" => "dimensioni rientro",
|
||||
"font size" => "dimensione font ",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "Pannello plug inallineato",
|
||||
"file manager" => "file manager",
|
||||
@@ -429,6 +438,19 @@ token di accesso personale (https://help.github.com/articles/creating-an-access-
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "L'aggiornamento sembra andato bene"
|
||||
),
|
||||
"find-in-files" =>
|
||||
array(
|
||||
"Enter path to search in" => "Inserire il percorso in cui ricercare",
|
||||
"Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)" => "
|
||||
Inserisci maschere separate da punto e virgola i dei file da cercare (e.s. *.php;*.html;*.js)",
|
||||
"Type of text" => "Tipo di testo",
|
||||
"Fixed text" => "Testo fisso",
|
||||
"Regular expression" => "Espressione regolare",
|
||||
"Case sensitive" => "Case sensitive",
|
||||
"Yes" => "Si",
|
||||
"No" => "No",
|
||||
"Search" => "Cerca",
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
@@ -49,6 +49,7 @@ $text = array(
|
||||
"Your version is" => "Din versjon er",
|
||||
"Update now" => "Oppdater nå",
|
||||
"You have some..." => "Du har noe ulagrede endringer",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "arbeider",
|
||||
"Color picker" => "Fargevelger",
|
||||
"New File" => "Ny Fil",
|
||||
@@ -386,6 +387,7 @@ $text = array(
|
||||
"indent type" => "innrykk type",
|
||||
"indent size" => "innrykk størr.",
|
||||
"font size" => "skrift størr.",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "programtilleggspanel justert",
|
||||
"file manager" => "filbehandler",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
// Persian language translation
|
||||
// by: @voltan (GitHub)
|
||||
// @azizabadi_ (Twitter)
|
||||
@@ -49,6 +49,7 @@ $text = array(
|
||||
"Your version is" => "نسخه مورد استفاده شما",
|
||||
"Update now" => "به روز کنید",
|
||||
"You have some..." => "شما چند تغییر ذخیره نشده دارید",
|
||||
"Are you sure you want to close?" => "Are you sure you want to close?",
|
||||
"working" => "در حال کار",
|
||||
"Color picker" => "اشاره گر رنگ",
|
||||
"New File" => "فایل جدید",
|
||||
@@ -385,6 +386,7 @@ $text = array(
|
||||
"indent type" => "نوع برجسته کردن",
|
||||
"indent size" => "اندازه برجسته کردن",
|
||||
"font size" => "اندازه فونت",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "لایه",
|
||||
"plugin panel aligned" => "تراز پنل پلاگین",
|
||||
"file manager" => "مدیریت فایل",
|
||||
|
||||
439
lang/portuguese-brazilian.php
Normal file
439
lang/portuguese-brazilian.php
Normal file
@@ -0,0 +1,439 @@
|
||||
<?php
|
||||
// Português do Brasil
|
||||
// by: @leonardoroese (GitHub)
|
||||
|
||||
|
||||
// Please preserve formatting, line breaks, special characters, anything in <tags> and HTML equivalents (eg &). Translations on right side.
|
||||
|
||||
$text = array(
|
||||
|
||||
// / [ROOT LEVEL]
|
||||
|
||||
"editor" =>
|
||||
array(
|
||||
"Click icons for..." => "<b>Ícones<br>para ajuda &<br>info. utilização</b>",
|
||||
"server" => "Servidor",
|
||||
"Server name, OS..." => "Nome do Servidor, OS & IP:",
|
||||
"Root" => "Raiz:",
|
||||
"ICEcoder root" => "ICEcoder raiz:",
|
||||
"PHP version" => "Versão do PHP:",
|
||||
"Date & time" => "Data e Hora:",
|
||||
"your device" => "seu dispositivo",
|
||||
"Browser" => "Exibir:",
|
||||
"Your IP" => "Seu IP:",
|
||||
"files" => "arquivos",
|
||||
"Last 10 files..." => "últimos 10 arquivos abertos:",
|
||||
"none" => "[nenhum]",
|
||||
"test suite" => "suíte de teste",
|
||||
"Run unit tests" => "Executar testes unitãrios",
|
||||
"dev mode" => "modo desenv.",
|
||||
"Status" => "Status",
|
||||
"Using" => "Usando",
|
||||
"You can switch..." => "Você pode alterar modo desenv. on/off em lib/config__settings.php"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Trava",
|
||||
"Refresh" => "Atualizar",
|
||||
"ROOT" => "[RAIZ]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "INFORMAÇÃ DE ATUALIZAÇÃO",
|
||||
"now available" => "disponível agora",
|
||||
"Your version is" => "Sua versão é",
|
||||
"Update now" => "Atualizar jã",
|
||||
"You have some..." => "Voce possui alterações não salvas",
|
||||
"Are you sure you want to close?" => "Você tem certeza que deseja fechar?",
|
||||
"working" => "trabalhando",
|
||||
"Color picker" => "Seletor de Cores",
|
||||
"New File" => "Novo Arquivo",
|
||||
"New Folder" => "Nova Pasta",
|
||||
"Upload File(s)" => "Carregar arquivo(s)",
|
||||
"Paste" => "Colar",
|
||||
"Open" => "Abrir",
|
||||
"Copy" => "Copiar",
|
||||
"Duplicate" => "Duplicar",
|
||||
"Delete" => "Excluir",
|
||||
"Rename" => "Renomear",
|
||||
"View Webpage" => "Exibir Pãgina Web",
|
||||
"Download" => "Download",
|
||||
"Properties" => "Propriedades",
|
||||
"File" => "Arquivo",
|
||||
"Remote" => "Remoto",
|
||||
"Edit" => "Editar",
|
||||
"Source" => "Fonte",
|
||||
"Help" => "Ajuda",
|
||||
"Save" => "Salvar",
|
||||
"Save As" => "Salvar Como",
|
||||
"Live Preview" => "Visualizar",
|
||||
"Upload" => "Enviar",
|
||||
"Zip" => "Zip",
|
||||
"Print" => "Imprimir",
|
||||
"Fullscreen toggle" => "Exibir tela cheia",
|
||||
"Logout" => "Sair",
|
||||
"Undo" => "Desfazer",
|
||||
"Redo" => "Refazer",
|
||||
"Indent more" => "Indentar +",
|
||||
"Indent less" => "Indentar -",
|
||||
"Autocomplete" => "Autocompletar",
|
||||
"Comment/Uncomment" => "Comentar/Descomentar",
|
||||
"Jump to Definition" => "Ir para definição",
|
||||
"Manual" => "Manual",
|
||||
"Shortcuts" => "Atalhos",
|
||||
"Settings" => "Configurações",
|
||||
"Search for selected" => "Procurar por selecionado",
|
||||
"website" => "website",
|
||||
"Close all tabs" => "Fechar todas as abas",
|
||||
"Alphabetize tabs" => "Ordenar abas por nome",
|
||||
"Find" => "Procurar",
|
||||
"in" => "em",
|
||||
"and" => "e",
|
||||
"replace" => "substituir",
|
||||
"replace all" => "substituir tudo",
|
||||
"this document" => "este documento",
|
||||
"open documents" => "documentos abertos",
|
||||
"all files" => "todos os arquivos",
|
||||
"all filenames" => "todos nomes de arquivo",
|
||||
"Turn on/off..." => "Ligar/Desligar Assistente",
|
||||
"Code Assist" => "Assistente",
|
||||
"Go to Line" => "Ir para linha",
|
||||
"View" => "Exibir",
|
||||
"Bug reporting not active" => "Relatório de Bug desativado"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Encontrado em:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Desculpe",
|
||||
"does not seem..." => "Não encontrado no servidor",
|
||||
"Sorry, could not..." => "Desculpe, conteudo não encontrado para",
|
||||
"Sorry, cannot create..." => "Desculpe, não é possível criar pasta",
|
||||
"Sorry, cannot copy" => "Desculpe, não é possível copy",
|
||||
"into" => "into",
|
||||
"Uploaded file(s) OK" => "Arquivos carregados",
|
||||
"Sorry, cannot upload" => "Desculpe, não é possível carregar",
|
||||
"Sorry, cannot upload..." => "Desculpe, não é possível carregar lista no modo DEMO",
|
||||
"Sorry, cannot rename" => "Desculpe, não é possível renomear",
|
||||
"Maybe public write..." => "A pasta superior possui permissão de escrita?",
|
||||
"Sorry, cannot move" => "Desculpe, não é possível mover",
|
||||
"Sorry, cannot save" => "Desculpe, não é possível salvar",
|
||||
"Sorry, cannot replace..." => "Desculpe, não é possível substituir texto em",
|
||||
"Sorry, cannot change..." => "Desculpe, não é possível mudar permissões para",
|
||||
"Sorry, cannot delete..." => "Desculpe, não é possível excluir nível raiz",
|
||||
"Sorry, cannot delete" => "Desculpe, não é possível remover",
|
||||
"Sorry, this file..." => "Desculpe, este arquivo foi modificado, não é possível salvar",
|
||||
"Reload this file..." => "Recarregar e copiar sua versão?",
|
||||
"There was a..." => "Ocorreu algum problema. O ICEcoder recarregou o arquivo de controle novamente",
|
||||
"displayed at" => "exibido em",
|
||||
"Enter filename to..." => "Informe o nome do aquivo para salvar",
|
||||
"That file exists..." => "Este arquivo jã existe, sobrescrever?",
|
||||
"Saving" => "Salvando"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Não hã diferenças entre loca/Github. Retornar para modo normal?",
|
||||
"Sorry, there was..." => "Desculpe, ocorreu um erro, código:",
|
||||
"Your local folder..." => "Sua pasta local estã vazia, gostaria de clonar"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Desculpe, não foi possível criar em",
|
||||
"Cannot update config..." => "Não é possível atualizar config. Habilitar permissões públicas",
|
||||
"and try again" => "e tentar novamente",
|
||||
"saving github paths" => "salvando caminhos Github...",
|
||||
"github paths" => "caminhos Github",
|
||||
"Choose existing path" => "Escolha caminho existente",
|
||||
"Local path" => "Caminho local",
|
||||
"Remote GitHub path" => "Caminho remoto Github",
|
||||
"Choose" => "Selecione",
|
||||
"Set local and..." => "Alterar caminho local e remoto como vazio para excluír",
|
||||
"Update" => "Atualizar",
|
||||
"Add new path" => "Adicionar novo caminho",
|
||||
"Add" => "Adicionar",
|
||||
"Usage Info" => "Info. de utilização:",
|
||||
"Enter relative local..." => "Informe os caminhos relativos (ex.: /server/myfiles) e absolutos do GitHub (ex.: https://github.com/user/repo ou https://github.com/user/repo/tree/branch for branches).Com isso estabelece os caminho dos fontes em ambos locais, como pares.",
|
||||
"You can then..." => "Você pode então escolher um caminho par para ser a raiz do ICEcoder.",
|
||||
"The file manager..." => "O gerenciador de arquivo exibirã o ícone GitHub, você pode clicar para verificar a diferença entre arquivos.Essas diferenças podem ser efetivadas e enviadas ao diretório remoto do GitHub ou clonado para pasta local, para sincronizar seus arquivos.",
|
||||
"If you want..." => "Se quiser configurar novo caminho raiz, pode ser feito na tela de configurações."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Desculpe, o OpenSSL não foi encontrado, https indisponível. Isso é necessãrio para o GitHub transferir dados, verificar php.ini, reinicie o sistema e tente novamente"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Erro na chave CSRF. Reportar em https://github.com/mattpass/ICEcoder para ser corrigido."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "atalhos",
|
||||
"Within document" => "Neste documento",
|
||||
"On Tabs" => "Em abas",
|
||||
"Within file manager" => "No gerenciador de arquivos",
|
||||
"Anywhere" => "Qualquer Lugar",
|
||||
"Space" => "Espaço",
|
||||
"Click" => "Clique",
|
||||
"or" => "ou",
|
||||
"Left click" => "Clique esquerdo",
|
||||
"Middle click" => "Clique Meio",
|
||||
"Double click tap..." => "Clique duplo / toque (mobile)",
|
||||
"Right click" => "Clique direito",
|
||||
"Middle scrollwheel" => "Meio scroll",
|
||||
"Drag" => "Arrastar",
|
||||
"Autocomplete add snippet" => "Auto-completar / adicionar snippet",
|
||||
"Multiple select" => "Multipla seleção",
|
||||
"Move line up" => "Move linha acima",
|
||||
"Move line down" => "Move linha abaixo",
|
||||
"Duplicate lines" => "Duplicar linha(s)",
|
||||
"Remove lines" => "Remover linha(s)",
|
||||
"Insert line before" => "Inserir linha antes",
|
||||
"Insert line after" => "Inserir linha após",
|
||||
"Search for selected" => "Procurar selecionado",
|
||||
"Jump to definition" => "Ir para definição / voltar",
|
||||
"Comment uncomment" => "Comentar / Descomentar",
|
||||
"Insert tab indent" => "Inserir aba / auto indent selected",
|
||||
"Insert more" => "Indentar +",
|
||||
"Insert less" => "Indentar -",
|
||||
"Wrap with div" => "Quabra com <div>",
|
||||
"Wrap with span" => "Quabra com <span>",
|
||||
"Wrap unwrap p" => "Quabra / desfaz com <p>",
|
||||
"Wrap unwrap a" => "Quabra / desfaz com <a>",
|
||||
"Wrap unwrap b" => "Quabra / desfaz com <b>",
|
||||
"Wrap unwrap i" => "Quabra / desfaz com <i>",
|
||||
"Wrap unwrap strong" => "Quabra / desfaz com <strong>",
|
||||
"Wrap unwrap em" => "Quabra / desfaz com <em>",
|
||||
"Wrap unwrap li" => "Quabra / desfaz com <li>",
|
||||
"Wrap unwrap h1..." => "Quabra / desfaz com <h1> - <h3>",
|
||||
"End line with..." => "Fim de linha com <br>",
|
||||
"Close tab" => "Fechar aba",
|
||||
"Select file folder" => "Selecionar arquivo / pasta",
|
||||
"Open file" => "Abrir arquivo",
|
||||
"Range select" => "Seleção",
|
||||
"Options for selected" => "Opções para seleção",
|
||||
"Delete selected" => "Excluir selecionado",
|
||||
"Next previous tab" => "Próxima aba / anterior",
|
||||
"Next tab" => "Próxima aba",
|
||||
"Previous tab" => "Aba anterior",
|
||||
"New tab" => "Nova aba",
|
||||
"Close current tab" => "Fechar aba atual",
|
||||
"Open file prompt" => "Abrir prompt de comando",
|
||||
"Find" => "Buscar",
|
||||
"Focus on Go..." => "Foco campo ir para linha",
|
||||
"Save" => "Salvar",
|
||||
"Save as" => "Salvar como...",
|
||||
"View webpage" => "Exibir pãgina",
|
||||
"Contract expand file..." => "Contrair / expandir gerenciador de arquivos",
|
||||
"Fold unfold current..." => "Contrair / expandir linha atual",
|
||||
"Refocus on document" => "Foco no documento",
|
||||
"Cancel tasks" => "Cancelar tarefas"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "Sem texto selecionado para buscar",
|
||||
"all files" => "todos arquivos",
|
||||
"all filenames" => "todos nomes de arquivos",
|
||||
"selected files" => "arquivos selecionados",
|
||||
"selected filenames" => "nomes de arquivos selecionados",
|
||||
"Creating Folder" => "Criando pasta",
|
||||
"Sorry you can..." => "Deculpe, permitido abrir mãx. 100 arquivos!",
|
||||
"Opening File" => "Abrindo arquivo",
|
||||
"Enter relative file..." => "Informe caminho relativo (prefixado por /) ou URL remota",
|
||||
"Getting" => "Selecionando",
|
||||
"Please enter the..." => "Informe novo nome para",
|
||||
"Renaming to" => "Renomeando para",
|
||||
"Moving to" => "Movendo para",
|
||||
"Deleting File" => "Excluindo arquivo",
|
||||
"Pasting File" => "Colando arquivo",
|
||||
"Sorry cannot paste..." => "Desculpe, não é possível colar em toda raiz",
|
||||
"Nothing to paste..." => "Nada para colar,copiar arquivo/pasta primeiro!",
|
||||
"and" => "e",
|
||||
"this document" => "este documento",
|
||||
"replace" => "substituir",
|
||||
"replace all" => "substituir tudo",
|
||||
"file" => "arquivo",
|
||||
"Replacing text in" => "Substituindo texto em",
|
||||
"Cancelled tasks" => "Tarefas canceladas",
|
||||
"Open previous files" => "Abrir arquivos anteriores?",
|
||||
"Please enter your..." => "Informe sua chave GitHub (chave pessoal ou par). Veja dica próximo à chave Github em Ajuda > Configurações para mais informações",
|
||||
"This will compare..." => "Esta ação irã comparar e exibir diferenças do seu repositório local. OK?",
|
||||
"Please note for..." => "Atenção: para atualizar corretamente, é necessãrio permissão de escrita em todos os diretórios/arquivos do ICEcoder. \\n\\nSe por algum motivo necessite recuperar esta versão do ICEcoder, estarã disponível na pasta /tmp.\\n\\nClique OK para prosseguir com a atualização, ou cancelar para visitar a pãgina do ICEcoder na internet onde poderã baixar a atualização manualmente.",
|
||||
"You can start..." => "Voce pode reportar um bug em Ajuda > Configurações",
|
||||
"Error cannot find..." => "Erro: não é possível acessar caminho/arquivo de erros",
|
||||
"No new errors..." => "Nenhum erro encontrado",
|
||||
"You have made..." => "Voce fez alterações. Deseja realmente fechar sem salvar?",
|
||||
"Close all tabs" => "Fechar todas as abas?",
|
||||
"results" => "resultados"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "altera senha",
|
||||
"login" => "login",
|
||||
"To disable registration..." => "Para desabilitar modo registro, acesse menu/configurações ou em lib/config___settings.php altere enableRegistration para false e recarregue esta pãgina",
|
||||
"Registration mode enabled" => "Modo registro habilitado",
|
||||
"auto-check for updates" => "verificar atualizações auto.",
|
||||
"To put into..." => "Para habilitar multi-usuãrios, acesse menu/configurações ou em lib/config___settings.php altere multiUser para true e recarregue esta pãgina",
|
||||
"multi-user" => "multi-usuãrios"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "renomear tudo",
|
||||
"replace all" => "substituir tudo",
|
||||
"document" => "documento",
|
||||
"Found" => "Encontrado",
|
||||
"times" => "vezes",
|
||||
"replace" => "substituir",
|
||||
"file folder" => "arquivo/pasta",
|
||||
"rename to" => "renomear para",
|
||||
"rename" => "renomear",
|
||||
"file" => "arquivo",
|
||||
"No matches found" => "Nenhum resultado encontrado",
|
||||
"selected" => "selecionado",
|
||||
"found in" => "encontrado em",
|
||||
"Replaced" => "Substituído(s)"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder deve ser reiniciado para habilitar plugin. Deseja Reiniciar?",
|
||||
"saving plugins" => "salvando plugins...",
|
||||
"Cannot update config..." => "Não foi possível atualizar arquivo de configuração. Verifique permissões de escrita.",
|
||||
"and try again" => "e tente novamente",
|
||||
"couldnt delete dir" => "não foi possível excluir pasta",
|
||||
"couldnt delete file" => "não foi possível excluir arquivo",
|
||||
"plugins" => "plugins",
|
||||
"Guide to writing..." => "Guia para criar plugins",
|
||||
"Manage Installed" => "Gerenciar plugins",
|
||||
"URL" => "URL",
|
||||
"Target" => "Alvo",
|
||||
"Timer" => "Temporizador",
|
||||
"Update" => "Atualizar",
|
||||
"Install" => "Instalar",
|
||||
"Uninstall" => "Desinstalar",
|
||||
"Reload after install..." => "Atualização necessãria após instalação"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "propriedades",
|
||||
"Size" => "Tamanho",
|
||||
"Modified" => "Modificado",
|
||||
"Last access" => "Último acesso",
|
||||
"Type" => "Tipo",
|
||||
"Readable Writeable" => "Leitura / Escrita",
|
||||
"Relative path" => "Caminho relativo",
|
||||
"Absolute path" => "Caminho absoluto",
|
||||
"Contains" => "Contem",
|
||||
"Permissions" => "Permissões",
|
||||
"Owner" => "Proprietãrio",
|
||||
"Group" => "Grupo",
|
||||
"Public" => "Público",
|
||||
"Read" => "Ler",
|
||||
"Write" => "Salvar",
|
||||
"Execute" => "Executar",
|
||||
"Change to" => "Alterar para",
|
||||
"update" => "atualizar"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Seu arquivo não estã no formato UTF-8, deve ser convertido"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Não foi possível atualizar arquivo de configuração. Verifique permissões de acesso (públicas)",
|
||||
"and try again" => "e tente novamente"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "configurações",
|
||||
"version" => "versão",
|
||||
"website" => "website",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "pasta codemirror",
|
||||
"codemirror version" => "versão codemirror",
|
||||
"file manager root" => "Raiz gerenciador de arquivos",
|
||||
"Free to use..." => "Livre para utilização para seus propósitos, comercial ou não, mas aviseme sobre sua implementação se puder. :)<br><br>Sem garantias, Muitas empresas e pessoas fantãsticas contribuiram para desenvolver o ICEcoder, hã muito o que agradecermos aqui. Veja a lista completa aqui",
|
||||
"functionality" => "funcionalidade",
|
||||
"check for updates..." => "verificar atualizações ao iniciar",
|
||||
"auto open last..." => "carregar últimos arquvos abertos ao iniciar",
|
||||
"when finding in..." => "ao buscar arquivos, excluir",
|
||||
"assisting" => "assistindo",
|
||||
"code assist" => "Assist. de cód.",
|
||||
"visible tabs" => "Abas visíveis",
|
||||
"locked nav" => "Trava Nav.",
|
||||
"tag wrapper command" => "comando de quebra",
|
||||
"auto-complete on" => "hab. auto-completar",
|
||||
"security" => "segurança",
|
||||
"new password" => "nova senha",
|
||||
"8 chars min" => "mín. 8 carac.",
|
||||
"confirm password" => "confirmar senha",
|
||||
"banned files/folders" => "arquivos/pastas bloqueados",
|
||||
"banned paths" => "caminhos bloqueados",
|
||||
"ip addresses" => "endereços IP",
|
||||
"Slash prefixed comma..." => "Prefixo barra, separado por vígula",
|
||||
"Comma delimited" => "Separado por vírgula",
|
||||
"style" => "estilo",
|
||||
"theme" => "tema",
|
||||
"line wrapping" => "quebra de linha",
|
||||
"indent type" => "indent type",
|
||||
"indent size" => "indent size",
|
||||
"font size" => "tam. fonte",
|
||||
"auto indent" => "auto indent",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "painel plugin alinhado",
|
||||
"file manager" => "gerenciador de arquivos",
|
||||
"root" => "raiz",
|
||||
"Slash prefixed" => "Prefixo barra",
|
||||
"bug reporting" => "reportar erro",
|
||||
"check in files" => "verificar em arquivos",
|
||||
"every" => "tudo",
|
||||
"secs getting last" => "segs, pegando últimos",
|
||||
"lines" => "linhas",
|
||||
"multi-user" => "multi-usuário",
|
||||
"Make sure you..." => "Cuidado para não travar seu usuãrio",
|
||||
"Registration" => "Cadastro",
|
||||
"auth token" => "Chave de Autenticação",
|
||||
"Required to get..." => "RNecessãrio para verificar diferenças, e efetivar alterações no GitHub. Se não tiver uma pode usar:".PHP_EOL.PHP_EOL.
|
||||
"- chave de acesso pessoal (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL.
|
||||
"- cliente/par secreto (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"Não é recomendado configurar sua chave aqui, mas quando solicitado pelo ICEcoderpara mantes em sessão apenas.".PHP_EOL.PHP_EOL.
|
||||
"No entanto, se trabalhar em ambiente seguro, é melhor setar essa propriedade.",
|
||||
"Sorry cannot commit..." => "Desculpe, não é permitido efetivar atulização no modo DEMO",
|
||||
"update" => "atualizar"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Não foi possível atualizar arquivo de configuração. Verifique permissões de acesso (públicas)",
|
||||
"and try again" => "e tentar novamente",
|
||||
"and press refresh" => "e pressione atulizar"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Atualização completada"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
468
lang/spanish.php
Normal file
468
lang/spanish.php
Normal file
@@ -0,0 +1,468 @@
|
||||
<?php
|
||||
// Spanish language translation
|
||||
// by: @unix4you2 (GitHub)
|
||||
|
||||
// Please preserve formatting, line breaks, special characters, anything in <tags> and HTML equivalents (eg &). Translations on right side.
|
||||
|
||||
$text = array(
|
||||
|
||||
// / [ROOT LEVEL]
|
||||
|
||||
"editor" =>
|
||||
array(
|
||||
"Click icons for..." => "<b>Clic en los iconos<br>para ayuda &<br>modo de uso</b>",
|
||||
"server" => "servidor",
|
||||
"Server name, OS..." => "Nombre del servidor, OS & IP:",
|
||||
"Root" => "Raiz:",
|
||||
"ICEcoder root" => "Raiz de ICEcoder:",
|
||||
"PHP version" => "Versión PHP:",
|
||||
"Date & time" => "Fecha y hora:",
|
||||
"your device" => "su dispositivo",
|
||||
"Browser" => "Navegador:",
|
||||
"Your IP" => "Su IP:",
|
||||
"trial remaining" => "prueba restante",
|
||||
"days left" => "dias",
|
||||
"files" => "archivos",
|
||||
"Last 10 files..." => "Ultimos 10 archivos abiertos:",
|
||||
"none" => "[ninguno]",
|
||||
"test suite" => "modo de pruebas",
|
||||
"Run unit tests" => "Ejecutar tests unitarios",
|
||||
"dev mode" => "modo desarrollo",
|
||||
"Status" => "Estado",
|
||||
"Using" => "Usando",
|
||||
"You can switch..." => "Usted puede cambiar el modo de desarrollo cambiando su valor on/off en lib/config__settings.php"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Bloquear",
|
||||
"Refresh" => "Actualizar",
|
||||
"Plugins" => "Complementos",
|
||||
"ROOT" => "[RAIZ]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "INFORMACION DE ACTUALIZACION",
|
||||
"now available" => "ahora disponible",
|
||||
"Your version is" => "Su versión es",
|
||||
"Update now" => "Actualizar ahora",
|
||||
"You have some..." => "Usted tiene cambios sin guardar",
|
||||
"Are you sure..." => "Está seguro que desea cerrar?",
|
||||
"working" => "trabajando",
|
||||
"Color picker" => "Selector de color",
|
||||
"Plugins Manager" => "Administrar complementos",
|
||||
"New File" => "Nuevo archivo",
|
||||
"New Folder" => "Nueva carpeta",
|
||||
"Upload File(s)" => "Cargar archivo(s)",
|
||||
"Paste" => "Pegar",
|
||||
"Open" => "Abrir",
|
||||
"Copy" => "Copiar",
|
||||
"Duplicate" => "Duplicar",
|
||||
"Delete" => "Eliminar",
|
||||
"Rename" => "Renombrar",
|
||||
"View Webpage" => "Ver página web",
|
||||
"Download" => "Descargar",
|
||||
"Properties" => "Propiedades",
|
||||
"File" => "Archivo",
|
||||
"Edit" => "Editar",
|
||||
"Source" => "Fuente",
|
||||
"Help" => "Ayuda",
|
||||
"Save" => "Guardar",
|
||||
"Save As" => "Guardar como",
|
||||
"Live Preview" => "Vista previa",
|
||||
"Upload" => "Cargar",
|
||||
"Zip" => "Comprimir",
|
||||
"Print" => "Imprimir",
|
||||
"Fullscreen toggle" => "Cambiar a pantalla completa",
|
||||
"Logout" => "Salir",
|
||||
"Undo" => "Deshacer",
|
||||
"Redo" => "Rehacer",
|
||||
"Indent more" => "Aumentar sangría",
|
||||
"Indent less" => "Disminuir sangría",
|
||||
"Autocomplete" => "Autocompletar",
|
||||
"Comment/Uncomment" => "Comentar/Descomentar",
|
||||
"Jump to Definition" => "Saltar a la definición",
|
||||
"Manual" => "Manual",
|
||||
"Shortcuts" => "Accesos directos",
|
||||
"Settings" => "Configuración",
|
||||
"Search for selected" => "Buscar por lo seleccionado",
|
||||
"website" => "sitio web",
|
||||
"Close all tabs" => "Cerrar todas las pestañas",
|
||||
"Alphabetize tabs" => "Ordenar pestañas",
|
||||
"Find" => "Buscar",
|
||||
"in" => "en",
|
||||
"and" => "y",
|
||||
"replace" => "reemplazar",
|
||||
"replace all" => "reemplazar todo",
|
||||
"this document" => "este documento",
|
||||
"open documents" => "abrir documentos",
|
||||
"all files" => "todos los archivos",
|
||||
"all filenames" => "todos los nombres de archivo",
|
||||
"Turn on/off..." => "Encender o apagar asistente de código",
|
||||
"Code Assist" => "Asistente de código",
|
||||
"Go to Line" => "Ir a la línea",
|
||||
"View" => "Ver",
|
||||
"Bug reporting not active" => "Reporte de Errores no activado",
|
||||
"Single pane" => "Panel unico",
|
||||
"Diff pane also" => "Panel de diferencias tambien"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Encontrado en:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry, bad filename..." => "Lo siento, nombre de archivo incorrecto. Verifique la consola de desarrollo para mas informacion?",
|
||||
"Sorry" => "Lo siento",
|
||||
"does not seem..." => "parace no existir en el servidor",
|
||||
"Sorry, could not..." => "Lo siento, no puedo obtener el contenido de",
|
||||
"Sorry, cannot create..." => "Lo siento, no puedo crear carpeta en",
|
||||
"Sorry, cannot copy" => "Lo siento, no puedo copiar",
|
||||
"into" => "into",
|
||||
"Uploaded file(s) OK" => "Carga de archivo(s) OK",
|
||||
"Sorry, cannot upload" => "Lo siento, no se puede cargar",
|
||||
"Sorry, cannot upload..." => "Lo siento, no se puede cargar en modo demostración",
|
||||
"Sorry, cannot rename" => "Lo siento, no puedo renombrar",
|
||||
"Maybe public write..." => "Posiblemente sea necesario permisos publicos en esta carpeta o su carpeta padre?",
|
||||
"Sorry, cannot move" => "Lo siento, no puedo mover",
|
||||
"Sorry, cannot save" => "Lo siento, no puedo guardar",
|
||||
"Sorry, cannot replace..." => "Lo siento, no puedo reemplazar texto en",
|
||||
"Sorry, cannot change..." => "Lo siento, no puedo cambiar permisos sobre",
|
||||
"Sorry, cannot delete more..." => "Lo siento, no puedo eliminar mas de un item a la vez bajo modo FTP",
|
||||
"Sorry, cannot delete..." => "Lo siento, no puedo eliminar el nivel raiz",
|
||||
"Sorry, cannot delete" => "Lo siento, no puedo eliminar",
|
||||
"Sorry, this file..." => "Lo siento, este archivo ha cambiado, no puedo almacenar",
|
||||
"Reload this file..." => "Recargar este archivo y copiar su version en un panel diferente?",
|
||||
"There was a..." => "Hay un problema técnico, como algo que todavía parece no estar listo. ICEcoder volvió a cargar su archivo de control nuevamente.",
|
||||
"displayed at" => "Mostrado en",
|
||||
"Enter filename to..." => "Ingrese el nombre de archivo para guardar",
|
||||
"That file exists..." => "Ese archivo ya existeThat, sobreescribir?",
|
||||
"Saving" => "Guardando"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "No hay diferencias entre el repositorio local y GitHub. Regresar al modo regular?",
|
||||
"Sorry, there was..." => "Lo siento, hay un error, código:",
|
||||
"Your local folder..." => "Su carpeta local está vacía, desea clonarla"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Lo siento, no puedo crear un archivo en",
|
||||
"Cannot update config..." => "No puedo actualizar el archivo de configuración. Por favor establezca permisos publicos para",
|
||||
"and try again" => "e intente nuevamente",
|
||||
"saving github paths" => "almacenando rutas de GitHub...",
|
||||
"github paths" => "Rutas de GitHub",
|
||||
"Choose existing path" => "Seleccionar una ruta existente",
|
||||
"Local path" => "Ruta local",
|
||||
"Slash prefixed" => "Prefijo de slash",
|
||||
"Remote GitHub path" => "Ruta remota GitHub",
|
||||
"Absolute URL beginning..." => "URL absoluta, iniciando https://github.com",
|
||||
"Choose" => "Seleccionar",
|
||||
"Set local and..." => "Establecer las rutas locales y remotas en blanco para removerlas",
|
||||
"Update" => "Actualizar",
|
||||
"Add new path" => "Agregar nueva ruta",
|
||||
"Add" => "Agregar",
|
||||
"Usage Info" => "Modo de uso:",
|
||||
"Enter relative local..." => "Ingrese las rutas locales relativas (ej /server/myfiles) y las rutas absolutas para GitHub (ej https://github.com/user/repo ó https://github.com/user/repo/tree/branch para indicar ramas), según los ejemplos. Con esto usted establece las rutas de fuentes para ambas ubicaciones, como un par.",
|
||||
"You can then..." => "Entonces usted podrá seleccionar un par y este se convertira en su nueva raiz de trabajo en ICEcoder.",
|
||||
"The file manager..." => "Entonces el administrador de archivos muestra un nuevo icono para GitHub, el cual usted puede usar para ver y verificar diferencias entre las dos rutas. Esas diferencias pueden ser convertidas a un commit y enviadas a la ruta remota en GitHub o clonadas en su ruta local, para sincronizar sus archivos.",
|
||||
"If you want..." => "Si lo desea puede crear una nueva ruta raíz por medio de la pantalla de Configuración."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Lo siento, usted no parece contar con OpenSSL cargado en su instancia de PHP, por lo tanto conexiones https no están disponibles. Esto es requerido para la transferencia de datos a GitHub, por favor ajuste su php.ini, reinicie su servidor web e intente nuevamente"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Token CSRF incorrecto. Por favor reporte este error en https://github.com/mattpass/ICEcoder para que pueda ser solucionado."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "accesos directos",
|
||||
"Within document" => "En los documentos",
|
||||
"On Tabs" => "En las fichas",
|
||||
"Within file manager" => "En el administrador de archivos",
|
||||
"Anywhere" => "Cualquier parte",
|
||||
"Space" => "Espacio",
|
||||
"Click" => "Click",
|
||||
"or" => "o",
|
||||
"Left click" => "Click izquierdo",
|
||||
"Middle click" => "Click central",
|
||||
"Double click tap..." => "Doble click / tap (móviles)",
|
||||
"Right click" => "Click derecho",
|
||||
"Middle scrollwheel" => "Rueda del ratón",
|
||||
"Drag" => "Arrastrar",
|
||||
"Autocomplete add snippet" => "Autocompletar / agregar fragmento",
|
||||
"Multiple select" => "Selección múltiple",
|
||||
"Move line up" => "Mover línea arriba",
|
||||
"Move line down" => "Mover línea abajo",
|
||||
"Duplicate lines" => "Duplicar linea(s)",
|
||||
"Remove lines" => "Remover linea(s)",
|
||||
"Insert line before" => "Insertar linea antes",
|
||||
"Insert line after" => "Insertar linea después",
|
||||
"Search for selected" => "Buscar lo seleccionado",
|
||||
"Jump to definition" => "Saltar a definición / saltar atrás",
|
||||
"Comment uncomment" => "Comentar / descomentar",
|
||||
"Insert tab indent" => "Insertar ficha / auto sangría seleccionado",
|
||||
"Insert more" => "Aumentar sangría",
|
||||
"Insert less" => "Disminuir sangría",
|
||||
"Wrap with div" => "Envolver con <div>",
|
||||
"Wrap with span" => "Envolver con <span>",
|
||||
"Wrap unwrap p" => "Envolver / Desenvolver con <p>",
|
||||
"Wrap unwrap a" => "Envolver / Desenvolver con <a>",
|
||||
"Wrap unwrap b" => "Envolver / Desenvolver con <b>",
|
||||
"Wrap unwrap i" => "Envolver / Desenvolver con <i>",
|
||||
"Wrap unwrap strong" => "Envolver / Desenvolver con <strong>",
|
||||
"Wrap unwrap em" => "Envolver / Desenvolver con <em>",
|
||||
"Wrap unwrap li" => "Envolver / Desenvolver con <li>",
|
||||
"Wrap unwrap h1..." => "Envolver / Desenvolver con <h1> - <h3>",
|
||||
"End line with..." => "Terminar línea con <br>",
|
||||
"Close tab" => "Cerrar ficha",
|
||||
"Select file folder" => "Seleccionar archivo / carpeta",
|
||||
"Open file" => "Abrir archivo",
|
||||
"Range select" => "Seleccionar rango",
|
||||
"Options for selected" => "Opciones para lo seleccionado",
|
||||
"Delete selected" => "Eliminar seleccionados",
|
||||
"Next previous tab" => "Ficha siguiente / previa",
|
||||
"Next tab" => "Ficha siguiente",
|
||||
"Previous tab" => "Ficha previa",
|
||||
"New tab" => "Nueva ficha",
|
||||
"Close current tab" => "Cerrar ficha actual",
|
||||
"Open file prompt" => "Línea de apertura de archivos",
|
||||
"Find" => "Buscar",
|
||||
"Previous" => "Previo",
|
||||
"Focus on Go..." => "Obtener foco en la opción Ir a Linea",
|
||||
"Save" => "Guardar",
|
||||
"Save as" => "Guardar como...",
|
||||
"View webpage" => "Ver pagina web",
|
||||
"Contract expand file..." => "Contraer / expandir administrador de archivos",
|
||||
"Fold unfold current..." => "Contraer / expandir línea actual",
|
||||
"Refocus on document" => "Reasignar foco al documento",
|
||||
"Cancel tasks" => "Cancelar tareas"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"results" => "resultados",
|
||||
"No text selected..." => "No hay texto seleccionado para buscar",
|
||||
"all files" => "todos los archivos",
|
||||
"all filenames" => "todos los nombres de archivo",
|
||||
"selected files" => "archivos seleccionados",
|
||||
"selected filenames" => "nombres de archivos seleccionados",
|
||||
"Creating Folder" => "Creando Carpeta",
|
||||
"Sorry you can..." => "Lo siento, usted sólo puede tener 100 archivos abiertos al tiempo!",
|
||||
"Opening File" => "Abriendo archivo",
|
||||
"Enter relative file..." => "Entre una ruta relativa (iniciando con /) o una URL remota",
|
||||
"Getting" => "Obteniendo",
|
||||
"Saving" => "Guardando:",
|
||||
"Please enter the..." => "Por favor ingrese el nuevo nombre para",
|
||||
"Renaming to" => "Renombrando a",
|
||||
"Moving to" => "Moviendo a",
|
||||
"Deleting File" => "Eliminando Archivo",
|
||||
"Pasting File" => "Copiando Archivo",
|
||||
"Sorry cannot paste..." => "Lo siento, no puedo pegar toda una raíz",
|
||||
"Nothing to paste..." => "Nada para pegar, copie un archivo/carpeta primero!",
|
||||
"and" => "y",
|
||||
"this document" => "este documento",
|
||||
"replace" => "reemplazar",
|
||||
"replace all" => "reemplazar todo",
|
||||
"file" => "archivo",
|
||||
"Replacing text in" => "Reemplazando texto en",
|
||||
"Sorry there was..." => "Lo siento, hubo un error con su solicitud.\\n\\nPor favor verifique su consola de desarrollo para mas informacion.",
|
||||
"Cancelled tasks" => "Tareas canceladas",
|
||||
"Open previous files" => "Abrir archivos previos?",
|
||||
"Please enter your..." => "Por favor entre su token de GitHub (para acceso personal). Ver ayuda cerca al Token de autenticación de Github en la ayuda > Vea pantalla de configuración para más información",
|
||||
"This will compare..." => "Esto compara y muestra las diferencias entre su ruta local y el repositorio. OK?",
|
||||
"Please note for..." => "Importante: para que la actualización trabaje correctamente, usted necesita tener derechos de acceso a todos los directorios y archivos de ICEcoder. Esto sera chequeado previamente y se presentara una lista de archivos sin acceso (por lo tanto no movibles).\\n\\nSi usted necesita restablecer esta version de ICEcoder por alguna razón, usted la encontrara en la carpeta /tmp.\\n\\nClick en OK para proceder con la verificación y auto-instalación, ó cancelar para visitar el sitio de ICEcoder para descargar el ZIP y hacerlo manualmente.",
|
||||
"You can start..." => "Usted puede iniciar el reporte de errores en la pantalla de Ayuda > Configuración",
|
||||
"Error cannot find..." => "Error: no puedo encontrar o accesar las rutas de archivos de error",
|
||||
"No new errors..." => "No fueron encontrados nuevos errores",
|
||||
"You have made..." => "Usted ha realizado cambios. Esta seguro que quiere cerrar sin guardar?",
|
||||
"Close all tabs" => "Cerrar todas las fichas?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "establecer clave",
|
||||
"login" => "ingreso",
|
||||
"To disable registration..." => "Para deshabilitar el modo de registro, vaya a la opción de Configuración or abra el archivo lib/config___settings.php y cambie enableRegistration a false y recargue la página",
|
||||
"Registration mode enabled" => "Modo de registro activado",
|
||||
"auto-check for updates" => "auto-buscar por actualizaciones",
|
||||
"To put into..." => "Para usar el modo multiusuario, vaya a la opcion de Configuración o abra el archivo lib/config___settings.php y cambie multiUser a true y recargue la página",
|
||||
"multi-user" => "multi-usuario"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "renombrar todo",
|
||||
"replace all" => "reemplazar todo",
|
||||
"document" => "documento",
|
||||
"Found" => "Encontrado",
|
||||
"times" => "veces",
|
||||
"replace" => "reemplazar",
|
||||
"file folder" => "archivo/carpeta",
|
||||
"rename to" => "renombrar a",
|
||||
"rename" => "renombrar",
|
||||
"file" => "archivo",
|
||||
"No matches found" => "No se encontraron coincidencias",
|
||||
"selected" => "seleccionado",
|
||||
"found in" => "encontrado en",
|
||||
"Replaced" => "Reemplezado"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder necesita recargar para activar este plugin. Recargar ahora?",
|
||||
"saving plugins" => "guardando plugins...",
|
||||
"Cannot update config..." => "No puedo actualizar el archivo de configuración. Por favor establezca permisos publicos sobre",
|
||||
"and try again" => "e intente de nuevo",
|
||||
"couldnt delete dir" => "no puedo borrar el directorio",
|
||||
"couldnt delete file" => "no puedo borrar el archivo",
|
||||
"plugins" => "plugins",
|
||||
"Guide to writing..." => "Guia para escribir plugins",
|
||||
"Manage Installed" => "Administrador instalado",
|
||||
"URL" => "URL",
|
||||
"Target" => "Objetivo",
|
||||
"Timer" => "Temporizador",
|
||||
"Update" => "Actualizar",
|
||||
"Install" => "Instalar",
|
||||
"Uninstall" => "Desinstalar",
|
||||
"Reload after install..." => "Se requiere recargar después de instalar"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "propiedades",
|
||||
"Size" => "Tamaño",
|
||||
"Modified" => "Modificado",
|
||||
"Last access" => "Ultimo acceso",
|
||||
"Type" => "Tipo",
|
||||
"Readable Writeable" => "Leible / Escribible",
|
||||
"Relative path" => "Ruta relativa",
|
||||
"Absolute path" => "Ruta absoluta",
|
||||
"Contains" => "Contiene",
|
||||
"Permissions" => "Permisos",
|
||||
"Owner" => "Propietario",
|
||||
"Group" => "Grupo",
|
||||
"Public" => "Publico",
|
||||
"Read" => "Leer",
|
||||
"Write" => "Escribir",
|
||||
"Execute" => "Ejecutar",
|
||||
"Change to" => "Cambiar a",
|
||||
"update" => "actualizar"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Su documento no parece estar en UTF-8 entonces se ha convertido"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "No puedo actualizar el archivo de configuracion. Por favor establezca permisos publicos sobre",
|
||||
"and try again" => "e intente de nuevo"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "configuraciones",
|
||||
"version" => "version",
|
||||
"website" => "sitio web",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "directorio codemirror",
|
||||
"codemirror version" => "version codemirror",
|
||||
"file manager root" => "administrador de archivos raiz",
|
||||
"Get in contact..." => "Pongase en contacto...",
|
||||
"backups" => "respaldos",
|
||||
"keep version control..." => "mantener control de versiones de respaldo para",
|
||||
"day" => "dia",
|
||||
"days" => "dias",
|
||||
"of backups stored..." => "de respaldos almacenados actualmente",
|
||||
"You may use..." => "Libre para usarlo para cualquier propósito, comercial o no, solo dejeme saber cualquier uso o mejora. :)<br><br>No se da garantia de ningun tipo, su uso se encuentra bajo su responsabilidad.",
|
||||
"functionality" => "funcionalidad",
|
||||
"check for updates..." => "verificar por actualizaciones en la carga",
|
||||
"auto open last..." => "auto cargar los ultimos archivos al ingresar",
|
||||
"when finding in..." => "excluir cuando se busca en archivos ",
|
||||
"assisting" => "asistir",
|
||||
"code assist" => "asistencia de código",
|
||||
"visible tabs" => "Fichas visibles",
|
||||
"locked nav" => "Navegacion bloqueada",
|
||||
"tag wrapper command" => "Comando envuelto",
|
||||
"auto-complete on" => "auto-completar encendido",
|
||||
"security" => "seguridad",
|
||||
"new password" => "nueva clave",
|
||||
"8 chars min" => "8 caracteres min",
|
||||
"confirm password" => "confirmar clave",
|
||||
"banned files/folders" => "archivos/carpetas prohibidos",
|
||||
"banned paths" => "rutas prohibidas",
|
||||
"ip addresses" => "direcciones ip",
|
||||
"Slash prefixed comma..." => "Prefijo slash, delimitado por comas",
|
||||
"Comma delimited" => "Delimitado por comas",
|
||||
"style" => "estilo",
|
||||
"theme" => "tema",
|
||||
"line wrapping" => "ajuste de línea",
|
||||
"indent type" => "tipode sangría",
|
||||
"indent size" => "Tamaño de sangría",
|
||||
"font size" => "tamaño de letra",
|
||||
"layout" => "disposición",
|
||||
"plugin panel aligned" => "alineacion del panel de plugins",
|
||||
"file manager" => "administrador de archivos",
|
||||
"root" => "raiz",
|
||||
"Slash prefixed" => "Prefijo Slash",
|
||||
"bug reporting" => "reporte de errores",
|
||||
"check in files" => "chequear en archivos",
|
||||
"every" => "cada",
|
||||
"secs getting last" => "seg, obteniendo últimas",
|
||||
"lines" => "lineas",
|
||||
"multi-user" => "multi-usuario",
|
||||
"Make sure you..." => "Este seguro de no bloquearse a sí mismo",
|
||||
"Registration" => "Registro",
|
||||
"auth token" => "token autenticación",
|
||||
"Required to get..." => "Requerido para obtener diferencias, enviar cambios a repos GitHub, etc. Si usted no tiene uno, usted puede usar un:".PHP_EOL.PHP_EOL.
|
||||
"- token personal de acceso (https://help.github.com/articles/creating-an-access-token-for-command-line-use), ó".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"Esto no es recomendado para establecer su token pues es mas seguro ingresarlo cuando sea solicitado por ICEcoder y así permenecerá en la sesión activa unicamente.".PHP_EOL.PHP_EOL.
|
||||
"De todas formas, si usted trabaj en un ambiente seguro, es más eficiente establecer esto aquí.",
|
||||
"Sorry cannot commit..." => "Lo siento, no puedo enviar configuraciones en modo demo",
|
||||
"update" => "actualizar"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "No puedo actualizar archivo de configuración. Establezca permisos publicos sobre",
|
||||
"and try again" => "e intente de nuevo",
|
||||
"and press refresh" => "y presione actualizar"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "La actualización parece haber sido satisfactoria"
|
||||
),
|
||||
|
||||
"find-in-files" =>
|
||||
array(
|
||||
"Enter path to search in" => "Ingrese la ruta para buscar",
|
||||
"Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)" => "Ingrese la mascaras de archivo separadas por punto y coma para buscar (ej. *.php;*.html;*.js)",
|
||||
"Type of text" => "Tipo de texto",
|
||||
"Fixed text" => "Texto fijo",
|
||||
"Regular expression" => "Expresion regular",
|
||||
"Case sensitive" => "Sensible a mayuscula",
|
||||
"Yes" => "Si",
|
||||
"No" => "No",
|
||||
"Search" => "Buscar",
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
14
lib/backup-versions-preview-loader.php
Normal file
14
lib/backup-versions-preview-loader.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// Load common functions
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
|
||||
$file = str_replace("|","/",xssClean($_GET['file'],'html'));
|
||||
|
||||
$loadedFile = toUTF8noBOM(file_get_contents("../backups/".$file,false,$context),true);
|
||||
$encoding=ini_get("default_charset");
|
||||
if($encoding=="")
|
||||
$encoding="UTF-8";
|
||||
echo '<textarea name="loadedFile" id="loadedFile">'.htmlentities($loadedFile,ENT_COMPAT,$encoding).'</textarea>';
|
||||
echo "<script>parent.document.getElementById('buttonsContainer').style.display = 'inline-block';parent.editor.setValue(document.getElementById('loadedFile').value)</script>";
|
||||
?>
|
||||
30
lib/backup-versions.css
Normal file
30
lib/backup-versions.css
Normal file
@@ -0,0 +1,30 @@
|
||||
/* First, reset everything to a standard */
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
outline: 0;
|
||||
font-size: 12px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
body {overflow: hidden;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
|
||||
a {color: #fff; text-decoration: none}
|
||||
|
||||
.backup-versions {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
.button {padding: 5px 10px; font-size: 14px; background-color: rgba(0,198,255,0.7); margin-bottom: 20px; text-align: center; cursor: pointer}
|
||||
118
lib/backup-versions.php
Normal file
118
lib/backup-versions.php
Normal file
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
// Load common functions
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['backup-versions'];
|
||||
|
||||
$file = str_replace("|","/",xssClean($_GET['file'],'html'));
|
||||
$fileCountInfo = getVersionsCount(dirname($file),basename($file));
|
||||
$versions = $fileCountInfo['count'];
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> backup version control</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="backup-versions.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" href="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror.css?microtime=<?php echo microtime(true);?>">
|
||||
<script src="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror-compressed.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
|
||||
<style type="text/css">
|
||||
.CodeMirror {position: absolute; width: 409px; height: 180px; font-size: <?php echo $ICEcoder["fontSize"];?>}
|
||||
.CodeMirror-scroll {overflow: hidden}
|
||||
/* Make sure this next one remains the 3rd item, updated with JS */
|
||||
.cm-tab {border-left-width: <?php echo $ICEcoder["visibleTabs"] ? "1px" : "0";?>; margin-left: <?php echo $ICEcoder["visibleTabs"] ? "-1px" : "0";?>; border-left-style: solid; border-left-color: rgba(255,255,255,0.2)}
|
||||
</style>
|
||||
<link rel="stylesheet" href="editor.css?microtime=<?php echo microtime(true);?>">
|
||||
<?php
|
||||
$themeArray = array();
|
||||
$handle = opendir('../'.$ICEcoder["codeMirrorDir"].'/theme/');
|
||||
|
||||
while (false !== ($cssFile = readdir($handle))) {
|
||||
if ($cssFile !== "." && $cssFile != "..") {
|
||||
array_push($themeArray,basename($cssFile,".css"));
|
||||
}
|
||||
}
|
||||
sort($themeArray);
|
||||
for ($i=0;$i<count($themeArray);$i++) {
|
||||
echo '<link rel="stylesheet" href="../'.$ICEcoder["codeMirrorDir"].'/theme/'.$themeArray[$i].'.css?microtime='.microtime(true).'">'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
</head>
|
||||
|
||||
<body class="backup-versions">
|
||||
|
||||
<h1 id="title"><?php echo $versions." ".($versions != 1 ? $t["backups"] : $t["backup"])." ".$t['available for'].":";?></h1>
|
||||
<h2><?php echo $file;?></h2>
|
||||
|
||||
<br>
|
||||
<div style="display: inline-block">
|
||||
<?php
|
||||
$dateCounts = $fileCountInfo['dateCounts'];
|
||||
$displayVersions = $versions;
|
||||
|
||||
// Establish the base, host and date dir parts...
|
||||
$backupDirHost = isset($ftpSite) ? parse_url($ftpSite,PHP_URL_HOST) : "localhost";
|
||||
|
||||
foreach ($dateCounts as $key => $value) {
|
||||
echo "<b>".date("jS M Y",strtotime($key))." (".$value." ".($value != 1 ? $t["backups"] : $t["backup"]).")</b>";
|
||||
echo '<br>';
|
||||
for ($j=0; $j<$value; $j++) {
|
||||
echo '<a href="backup-versions-preview-loader.php?file='.str_replace("/","|",$backupDirHost.'/'.$key.$file).' ('.$displayVersions.')&csrf='.$_SESSION['csrf'].'" target="previewLoader">Backup '.$displayVersions.'<br>';
|
||||
$displayVersions--;
|
||||
}
|
||||
echo '<br>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div style="display: inline-block; height: 300px; width: 400px; margin-left: 30px">
|
||||
<textarea id="code" name="code">Click a backup to the left to preview it</textarea>
|
||||
</div>
|
||||
<div style="display: none; width: 180px; margin-left: 30px" id="buttonsContainer">
|
||||
<div class="button" onclick="openNew()">Open in new tab</div>
|
||||
<div class="button" onclick="openDiff()">Open in diff mode</div>
|
||||
<!--
|
||||
<div class="button" onclick="alert('Function not available yet - Coming in v5.4')">Restore as new version</div>
|
||||
//-->
|
||||
</div>
|
||||
<div style="display: none">
|
||||
<iframe name="previewLoader"></iframe>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
lineNumbers: true,
|
||||
readOnly: "nocursor",
|
||||
indentUnit: top.ICEcoder.indentSize,
|
||||
tabSize: top.ICEcoder.indentSize,
|
||||
mode: "javascript",
|
||||
theme: "<?php echo $ICEcoder["theme"]=="default" ? 'icecoder' : $ICEcoder["theme"];?>"
|
||||
});
|
||||
editor.setSize("400px","330px");
|
||||
|
||||
var openNew = function() {
|
||||
var cM;
|
||||
|
||||
top.ICEcoder.showHide('hide',top.document.getElementById('blackMask'))
|
||||
top.ICEcoder.newTab();
|
||||
cM = top.ICEcoder.getcMInstance();
|
||||
cM.setValue(editor.getValue());
|
||||
}
|
||||
|
||||
var openDiff = function() {
|
||||
var cMDiff;
|
||||
|
||||
top.ICEcoder.showHide('hide',top.document.getElementById('blackMask'))
|
||||
top.ICEcoder.setSplitPane('on');
|
||||
cMDiff = top.ICEcoder.getcMdiffInstance();
|
||||
top.ICEcoder.focus('diff');
|
||||
cMDiff.setValue(editor.getValue());
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -15,7 +15,7 @@ for ($i=0; $i<count($files); $i++) {
|
||||
// Work out the real path for a file
|
||||
$files[$i] = realpath($_SERVER['DOCUMENT_ROOT'].$files[$i]);
|
||||
// If we can't find that file or it doesn't start with the doc root, it's an error
|
||||
if (!file_exists($files[$i]) || strpos($files[$i],$_SERVER['DOCUMENT_ROOT']) !== 0) {
|
||||
if (!file_exists($files[$i]) || strpos(str_replace("\\","/",$files[$i]),$_SERVER['DOCUMENT_ROOT']) !== 0) {
|
||||
$result = "error";
|
||||
} else {
|
||||
$filesSizesSeen[$i] = filesize($files[$i]);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$ICEcoderUserSettings = array(
|
||||
"versionNo" => "4.5",
|
||||
"versionNo" => "5.3",
|
||||
"licenseEmail" => "",
|
||||
"licenseCode" => "",
|
||||
"configCreateDate" => 0,
|
||||
@@ -9,12 +9,14 @@ $ICEcoderUserSettings = array(
|
||||
"openLastFiles" => true,
|
||||
"updateDiffOnSave" => true,
|
||||
"languageUser" => "english.php",
|
||||
"backupsKept" => true,
|
||||
"backupsDays" => 14,
|
||||
"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"),
|
||||
"codeAssist" => true,
|
||||
"visibleTabs" => false,
|
||||
"lockedNav" => true,
|
||||
"tagWrapperCommand" => "ctrl+alt",
|
||||
"autoComplete" => "ctrl+space",
|
||||
"autoComplete" => "keypress",
|
||||
"password" => "",
|
||||
"bannedFiles" => array(),
|
||||
"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"),
|
||||
@@ -23,6 +25,7 @@ $ICEcoderUserSettings = array(
|
||||
"fontSize" => "13px",
|
||||
"lineWrapping" => true,
|
||||
"indentWithTabs" => true,
|
||||
"indentAuto" => true,
|
||||
"indentSize" => 4,
|
||||
"pluginPanelAligned" => "left",
|
||||
"bugFilePaths" => array(),
|
||||
|
||||
@@ -5,13 +5,19 @@ include("settings.php");
|
||||
// Establish the real absolute path to the file
|
||||
$file = realpath($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['file'])));
|
||||
// If it doesn't exist, or doesn't start with the $docRoot, stop here
|
||||
if (!file_exists($file) || strpos($file,$docRoot) !== 0) {
|
||||
if (!file_exists($file) || strpos(str_replace("\\","/",$file),$docRoot) !== 0) {
|
||||
die("<script>alert('Sorry, that file doesn\'t appear to exist');</script>");
|
||||
}
|
||||
|
||||
if (file_exists($file)) {
|
||||
header("Pragma: public");
|
||||
header("Expires: 0");
|
||||
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
|
||||
header("Cache-Control: public");
|
||||
header('Content-Description: File Transfer');
|
||||
header("Content-Type: application/octet-stream");
|
||||
header('Content-Disposition: attachment; filename='.basename($file));
|
||||
// header("Content-Transfer-Encoding: binary");
|
||||
header('Content-Length: '.filesize($file));
|
||||
ob_clean();
|
||||
flush();
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
/* ICEcoder default theme by Matt Pass */
|
||||
|
||||
.cm-s-icecoder {color: #666; background: #161612}
|
||||
.cm-s-icecoder {color: #666; background: #1d1d1b}
|
||||
|
||||
.cm-s-icecoder span.cm-keyword {color: #eee; font-weight:bold}
|
||||
.cm-s-icecoder span.cm-atom {color: #8b67cc}
|
||||
.cm-s-icecoder span.cm-number {color: #080}
|
||||
.cm-s-icecoder span.cm-def {color: #ca7919}
|
||||
.cm-s-icecoder span.cm-keyword {color: #eee; font-weight:bold} /* off-white 1 */
|
||||
.cm-s-icecoder span.cm-atom {color: #e1c76e} /* yellow */
|
||||
.cm-s-icecoder span.cm-number {color: #6cb5d9} /* blue */
|
||||
.cm-s-icecoder span.cm-def {color: #b9ca4a} /* green */
|
||||
|
||||
.cm-s-icecoder span.cm-variable {color: #85b525}
|
||||
.cm-s-icecoder span.cm-variable-2 {color: #c71e5b}
|
||||
.cm-s-icecoder span.cm-variable-3 {color: #080}
|
||||
.cm-s-icecoder span.cm-variable {color: #6cb5d9} /* blue */
|
||||
.cm-s-icecoder span.cm-variable-2 {color: #cc1e5c} /* pink */
|
||||
.cm-s-icecoder span.cm-variable-3 {color: #f9602c} /* orange */
|
||||
|
||||
.cm-s-icecoder span.cm-property {color: #85b525}
|
||||
.cm-s-icecoder span.cm-operator {color: #080}
|
||||
.cm-s-icecoder span.cm-comment {color: #444}
|
||||
.cm-s-icecoder span.cm-property {color: #eee} /* off-white 1 */
|
||||
.cm-s-icecoder span.cm-operator {color: #9179bb} /* purple */
|
||||
.cm-s-icecoder span.cm-comment {color: #97a3aa} /* grey-blue */
|
||||
|
||||
.cm-s-icecoder span.cm-string {color: #ccb100}
|
||||
.cm-s-icecoder span.cm-string-2 {color: #cc6d00}
|
||||
.cm-s-icecoder span.cm-string {color: #b9ca4a} /* green */
|
||||
.cm-s-icecoder span.cm-string-2 {color: #6cb5d9} /* blue */
|
||||
|
||||
.cm-s-icecoder span.cm-meta {color: #555}
|
||||
.cm-s-icecoder span.cm-error {color: #d00}
|
||||
.cm-s-icecoder span.cm-meta {color: #555} /* grey */
|
||||
|
||||
.cm-s-icecoder span.cm-qualifier {color: #555}
|
||||
.cm-s-icecoder span.cm-builtin {color: #0052a3}
|
||||
.cm-s-icecoder span.cm-bracket {color: #cc7}
|
||||
.cm-s-icecoder span.cm-qualifier {color: #555} /* grey */
|
||||
.cm-s-icecoder span.cm-builtin {color: #214e7b} /* bright blue */
|
||||
.cm-s-icecoder span.cm-bracket {color: #cc7} /* grey-yellow */
|
||||
|
||||
.cm-s-icecoder span.cm-tag {color: #e8e8e8}
|
||||
.cm-s-icecoder span.cm-attribute {color: #099}
|
||||
.cm-s-icecoder span.cm-tag {color: #e8e8e8} /* off-white 2 */
|
||||
.cm-s-icecoder span.cm-attribute {color: #099} /* teal */
|
||||
|
||||
.cm-s-icecoder span.cm-header {color: #808}
|
||||
.cm-s-icecoder span.cm-quote {color: #070}
|
||||
.cm-s-icecoder span.cm-hr {color: #888}
|
||||
.cm-s-icecoder span.cm-link {color: #cc0}
|
||||
.cm-s-icecoder span.cm-header {color: #6a0d6a} /* purple-pink */
|
||||
.cm-s-icecoder span.cm-quote {color: #186718} /* dark green */
|
||||
.cm-s-icecoder span.cm-hr {color: #888} /* mid-grey */
|
||||
.cm-s-icecoder span.cm-link {color: #e1c76e} /* yellow */
|
||||
.cm-s-icecoder span.cm-error {color: #d00} /* red */
|
||||
|
||||
.cm-s-icecoder .CodeMirror-cursor {border-left: 1px solid white !important}
|
||||
.cm-s-icecoder .CodeMirror-selected {color: #fff !important; background: #037 !important}
|
||||
.cm-s-icecoder .CodeMirror-gutters {background: #161612; min-width: 41px; border-right: 0}
|
||||
.cm-s-icecoder .CodeMirror-gutters {background: #1d1d1b; min-width: 41px; border-right: 0}
|
||||
.cm-s-icecoder .CodeMirror-linenumber {color: #555; cursor: default}
|
||||
.cm-s-icecoder .CodeMirror-matchingbracket {border: 1px solid grey; color: black !important}
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
include("ftp-control.php");
|
||||
$t = $text['file-control'];
|
||||
|
||||
// ===============================
|
||||
@@ -19,60 +20,84 @@ $errorMsg = "None";
|
||||
$saveType = isset($_GET['saveType']) ? strClean($_GET['saveType']) : "";
|
||||
|
||||
// Establish the filename/new filename
|
||||
$file = str_replace("|","/",strClean(
|
||||
isset($_POST['newFileName']) && $_POST['newFileName']!=""
|
||||
? $_POST['newFileName']
|
||||
: $_REQUEST['file']
|
||||
));
|
||||
|
||||
// Establish the actual name as we may have HTML entities in filename
|
||||
$file = html_entity_decode($file);
|
||||
|
||||
// Put the original $file var aside for use
|
||||
$fileOrig = $file;
|
||||
|
||||
// Trim any +'s or spaces from the end of file
|
||||
$file = rtrim(rtrim($file,'+'),' ');
|
||||
|
||||
// Also remove [NEW] from $file, we can consider $_GET['action'] or $fileOrig to pick that up
|
||||
$file = rtrim($file,'[NEW]');
|
||||
|
||||
// Make each path in $file a full path (; seperated list)
|
||||
$allFiles = explode(";",$file);
|
||||
for ($i=0; $i<count($allFiles); $i++) {
|
||||
if (strpos($allFiles[$i],$docRoot)===false && $_GET['action']!="getRemoteFile") {
|
||||
$allFiles[$i]=str_replace("|","/",$docRoot.$iceRoot.$allFiles[$i]);
|
||||
}
|
||||
if (isset($_POST['newFileName']) && $_POST['newFileName']!="") {
|
||||
$file = $_POST['newFileName']; // New file
|
||||
} elseif (isset($_REQUEST['file'])) {
|
||||
$file = $_REQUEST['file']; // Existing file
|
||||
} else {
|
||||
$file = ""; // Error
|
||||
$finalAction = "nothing";
|
||||
$doNext = "";
|
||||
$error = true;
|
||||
$errorStr = "true";
|
||||
$errorMsg = $t['Sorry, bad filename...'];
|
||||
};
|
||||
$file = implode(";",$allFiles);
|
||||
|
||||
// Establish the $fileLoc and $fileName (used in single file cases, eg opening. Multiple file cases, eg deleting, is worked out in that loop)
|
||||
$fileLoc = substr(str_replace($docRoot,"",$file),0,strrpos(str_replace($docRoot,"",$file),"/"));
|
||||
$fileName = basename($file);
|
||||
// If we have file(s) to work with...
|
||||
if (!$error) {
|
||||
// Replace pipes with slashes, after cleaning the chars
|
||||
$file = str_replace("|","/",strClean($file));
|
||||
|
||||
// Check through all files to make sure they're valid/safe
|
||||
$allFiles = explode(";",$file);
|
||||
for ($i=0; $i<count($allFiles); $i++) {
|
||||
// Establish the actual name as we may have HTML entities in filename
|
||||
$file = html_entity_decode($file);
|
||||
|
||||
// Uncomment to alert and console.log the action and file, useful for debugging
|
||||
// echo ";alert('".xssClean($_GET['action'],"html")." : ".$allFiles[$i]."');console.log('".xssClean($_GET['action'],"html")." : ".$allFiles[$i]."');";
|
||||
// Put the original $file var aside for use
|
||||
$fileOrig = $file;
|
||||
|
||||
// Die if the file requested isn't something we expect
|
||||
if(
|
||||
// A local folder that isn't the doc root or starts with the doc root
|
||||
($_GET['action']!="getRemoteFile" &&
|
||||
rtrim($allFiles[$i],"/") !== rtrim($docRoot,"/") &&
|
||||
strpos(realpath(rtrim(dirname($allFiles[$i]),"/")),realpath(rtrim($docRoot,"/"))) !== 0
|
||||
) ||
|
||||
// Or a remote URL that doesn't start http
|
||||
($_GET['action']=="getRemoteFile" && strpos($allFiles[$i],"http") !== 0)
|
||||
) {
|
||||
$error = true;
|
||||
$errorStr = "true";
|
||||
$errorMsg = "Sorry! - problem with file requested";
|
||||
// Trim any +'s or spaces from the end of file
|
||||
$file = rtrim(rtrim($file,'+'),' ');
|
||||
|
||||
// Also remove [NEW] from $file, we can consider $_GET['action'] or $fileOrig to pick that up
|
||||
$file = rtrim($file,'[NEW]');
|
||||
|
||||
// Make each path in $file a full path (; seperated list)
|
||||
$allFiles = explode(";",$file);
|
||||
for ($i=0; $i<count($allFiles); $i++) {
|
||||
if (strpos($allFiles[$i],$docRoot)===false && $_GET['action']!="getRemoteFile") {
|
||||
$allFiles[$i]=str_replace("|","/",$docRoot.$iceRoot.$allFiles[$i]);
|
||||
}
|
||||
};
|
||||
$file = implode(";",$allFiles);
|
||||
|
||||
// Establish the $fileLoc and $fileName (used in single file cases, eg opening. Multiple file cases, eg deleting, is worked out in that loop)
|
||||
$fileLoc = substr(str_replace($docRoot,"",$file),0,strrpos(str_replace($docRoot,"",$file),"/"));
|
||||
$fileName = basename($file);
|
||||
|
||||
// Check through all files to make sure they're valid/safe
|
||||
$allFiles = explode(";",$file);
|
||||
for ($i=0; $i<count($allFiles); $i++) {
|
||||
|
||||
// Uncomment to alert and console.log the action and file, useful for debugging
|
||||
// echo ";alert('".xssClean($_GET['action'],"html")." : ".$allFiles[$i]."');console.log('".xssClean($_GET['action'],"html")." : ".$allFiles[$i]."');";
|
||||
|
||||
// Die if the file requested isn't something we expect
|
||||
if(
|
||||
// A local folder that isn't the doc root or starts with the doc root
|
||||
($_GET['action']!="getRemoteFile" && !isset($ftpSite) &&
|
||||
rtrim($allFiles[$i],"/") !== rtrim($docRoot,"/") &&
|
||||
strpos(realpath(rtrim(dirname($allFiles[$i]),"/")),realpath(rtrim($docRoot,"/"))) !== 0
|
||||
) ||
|
||||
// Or a remote URL that doesn't start http
|
||||
($_GET['action']=="getRemoteFile" && strpos($allFiles[$i],"http") !== 0)
|
||||
) {
|
||||
$error = true;
|
||||
$errorStr = "true";
|
||||
$errorMsg = "Sorry! - problem with file requested";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
$doNext = "";
|
||||
// If we're in FTP mode, start a connection and leave open for FTP actions
|
||||
if (isset($ftpSite)) {
|
||||
ftpStart();
|
||||
// Show user warning if no good connection
|
||||
if (!$ftpConn || !$ftpLogin) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, no FTP connection to '.$ftpHost.' for user '.$ftpUser.'");';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ============
|
||||
// SAVING FILES
|
||||
// ============
|
||||
@@ -87,48 +112,69 @@ if (!$error && $_GET['action']=="save") {
|
||||
$finalAction = strpos($fileOrig,"[NEW]")>0 ? "save as" : "save";
|
||||
$fileURL = isset($file) ? $file : "";
|
||||
$fileMDTURLPart = isset($_GET["fileMDT"]) && $_GET["fileMDT"]!="undefined" ? "&fileMDT=".numClean($_GET['fileMDT']) : "";
|
||||
$doNext = '
|
||||
$fileVersionURLPart = isset($_GET["fileVersion"]) && $_GET["fileVersion"]!="undefined" ? "&fileVersion=".numClean($_GET['fileVersion']) : "";
|
||||
$doNext .= '
|
||||
top.ICEcoder.serverMessage();
|
||||
fileLoc = "'.$fileLoc.'";
|
||||
overwriteOK = false;
|
||||
noConflictSave = false;
|
||||
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)) {
|
||||
newFileName = "'.$docRoot.'" + newFileName;
|
||||
saveURL = "lib/file-control-xhr.php?action=save'.$fileMDTURLPart.'&csrf='.$_GET["csrf"].'";
|
||||
/* Check if file/dir exists */
|
||||
top.ICEcoder.lastFileDirCheckStatusObj = false;
|
||||
top.ICEcoder.checkExists(newFileName);
|
||||
var thisInt = setInterval(function() {
|
||||
if (top.ICEcoder.lastFileDirCheckStatusObj != false) {
|
||||
clearInterval(thisInt);
|
||||
|
||||
var xhr = top.ICEcoder.xhrObj();
|
||||
|
||||
xhr.onreadystatechange=function() {
|
||||
if (xhr.readyState==4 && xhr.status==200) {
|
||||
/* console.log(xhr.responseText); */
|
||||
var statusObj = JSON.parse(xhr.responseText);
|
||||
/* Set the actions end time and time taken in JSON object */
|
||||
statusObj.action.timeEnd = new Date().getTime();
|
||||
statusObj.action.timeTaken = statusObj.action.timeEnd - statusObj.action.timeStart;
|
||||
/* console.log(statusObj); */
|
||||
|
||||
if (statusObj.status.error) {
|
||||
top.ICEcoder.message(statusObj.status.errorMsg);
|
||||
if (top.ICEcoder.lastFileDirCheckStatusObj.file && top.ICEcoder.lastFileDirCheckStatusObj.file.exists) {
|
||||
overwriteOK = top.ICEcoder.ask("'.$t['That file exists...'].'");
|
||||
} else {
|
||||
eval(statusObj.action.doNext);
|
||||
}
|
||||
noConflictSave = true;
|
||||
};
|
||||
|
||||
/* Saving under conditions: Confirmation of overwrite or there is no filename conflict, it is a new file, in either case we can save */
|
||||
if (overwriteOK || noConflictSave) {
|
||||
newFileName = "'.(isset($ftpSite) ? "" : $docRoot).'" + newFileName;
|
||||
saveURL = "lib/file-control-xhr.php?action=save'.$fileMDTURLPart.$fileVersionURLPart.'&csrf='.$_GET["csrf"].'";
|
||||
|
||||
var xhr = top.ICEcoder.xhrObj();
|
||||
|
||||
xhr.onreadystatechange=function() {
|
||||
if (xhr.readyState==4 && xhr.status==200) {
|
||||
/* console.log(xhr.responseText); */
|
||||
var statusObj = JSON.parse(xhr.responseText);
|
||||
/* Set the actions end time and time taken in JSON object */
|
||||
statusObj.action.timeEnd = new Date().getTime();
|
||||
statusObj.action.timeTaken = statusObj.action.timeEnd - statusObj.action.timeStart;
|
||||
/* console.log(statusObj); */
|
||||
|
||||
if (statusObj.status.error) {
|
||||
top.ICEcoder.message(statusObj.status.errorMsg);
|
||||
} else {
|
||||
eval(statusObj.action.doNext);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
/* console.log(\'Calling \'+saveURL+\' via XHR\'); */
|
||||
xhr.open("POST",saveURL,true);
|
||||
xhr.setRequestHeader(\'Content-type\', \'application/x-www-form-urlencoded\');
|
||||
xhr.send(\'timeStart='.$_POST["timeStart"].'&file='.$fileURL.'&newFileName=\'+newFileName+\'&contents=\'+top.ICEcoder.saveAsContent);
|
||||
top.ICEcoder.serverMessage("<b>'.$t['Saving'].'</b><br>" + "'.($finalAction == "Save" ? "newFileName" : "'".$fileName."'").'");
|
||||
}
|
||||
}
|
||||
};
|
||||
/* console.log(\'Calling \'+saveURL+\' via XHR\'); */
|
||||
xhr.open("POST",saveURL,true);
|
||||
xhr.setRequestHeader(\'Content-type\', \'application/x-www-form-urlencoded\');
|
||||
xhr.send(\'timeStart='.$_POST["timeStart"].'&file='.$fileURL.'&newFileName=\'+newFileName+\'&contents=\'+top.document.getElementById(\'saveTemp1\').value);
|
||||
top.ICEcoder.serverMessage("<b>'.$t['Saving'].'</b><br>" + "'.($finalAction == "Save" ? "newFileName" : "'".$fileName."'").'");
|
||||
} else {
|
||||
},10);
|
||||
};
|
||||
|
||||
/* UI dialog cancelling and saving contents for save as looparound */
|
||||
if (!newFileName || newFileName && !overwriteOK) {
|
||||
top.ICEcoder.saveAsContent = top.document.getElementById(\'saveTemp1\').value;
|
||||
top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);
|
||||
}';
|
||||
|
||||
@@ -143,31 +189,150 @@ if (!$error && $_GET['action']=="save") {
|
||||
// FILE IS WRITEABLE
|
||||
// =================
|
||||
|
||||
if (!$demoMode && ((file_exists($file) && is_writable($file)) || isset($_POST['newFileName']) && $_POST['newFileName']!="")) {
|
||||
$filemtime = $serverType=="Linux" ? filemtime($file) : "1000000";
|
||||
if (!$demoMode && (isset($ftpSite) || (file_exists($file) && is_writable($file)) || isset($_POST['newFileName']) && $_POST['newFileName']!="")) {
|
||||
|
||||
$filemtime = !isset($ftpSite) && $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']));
|
||||
|
||||
// FTP Saving
|
||||
if (isset($ftpSite)) {
|
||||
// Write our file contents
|
||||
$ftpFilepath = ltrim($fileLoc."/".$fileName,"/");
|
||||
// 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);
|
||||
if (!ftpWriteFile($ftpConn, $ftpFilepath, $contents, $ftpMode)) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, could not write '.$ftpFilepath.' at '.$ftpHost.'");';
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1]="'.$filemtime.'";';
|
||||
$doNext .= '(function() {var x=top.ICEcoder.openFileVersions; var y=top.ICEcoder.selectedTab-1; x[y] = "undefined" != typeof x[y] ? x[y]+1 : 1})();top.ICEcoder.updateVersionsDisplay();';
|
||||
// Local saving
|
||||
} else {
|
||||
// Newly created files have the perms set too
|
||||
$setPerms = (!file_exists($file)) ? true : false;
|
||||
// get old file contents, if file exists, and count stats on usage \n and \r there
|
||||
// in this case we can keep line endings, which file had before, without
|
||||
// making code version control systems going crazy about line endings change in whole file.
|
||||
$oldContents = file_exists($file)?file_get_contents($file):'';
|
||||
$unixNewLines = preg_match_all('/[^\r][\n]/u', $oldContents);
|
||||
$windowsNewLines = preg_match_all('/[\r][\n]/u', $oldContents);
|
||||
$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);
|
||||
if (($unixNewLines > 0) || ($windowsNewLines > 0)){
|
||||
if ($unixNewLines > $windowsNewLines){
|
||||
$contents = str_replace($ICEcoder["lineEnding"], "\n", $contents);
|
||||
} elseif ($windowsNewLines > $unixNewLines){
|
||||
$contents = str_replace($ICEcoder["lineEnding"], "\r\n", $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.'";';
|
||||
$doNext .= '(function() {var x=top.ICEcoder.openFileVersions; var y=top.ICEcoder.selectedTab-1; x[y] = "undefined" != typeof x[y] ? x[y]+1 : 1})();top.ICEcoder.updateVersionsDisplay();';
|
||||
}
|
||||
clearstatcache();
|
||||
$filemtime = $serverType=="Linux" ? filemtime($file) : "1000000";
|
||||
$doNext .= 'top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1]="'.$filemtime.'";';
|
||||
|
||||
// Save a version controlled backup source of the file
|
||||
if ($ICEcoder["backupsKept"]) {
|
||||
$backupDirFormat = "Y-m-d";
|
||||
|
||||
// Establish the base, host and date dir parts...
|
||||
$backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../backups/";
|
||||
$backupDirHost = isset($ftpSite) ? parse_url($ftpSite,PHP_URL_HOST) : "localhost";
|
||||
$backupDirDate = date($backupDirFormat);
|
||||
|
||||
// Establish an array of dirs from base to our file location
|
||||
$subDirsArray = explode("/",ltrim($fileLoc,"/"));
|
||||
array_unshift($subDirsArray,$backupDirHost,$backupDirDate);
|
||||
// Make any dirs that don't exist if full path isn't there
|
||||
if (!is_dir($backupDirBase.implode("/",$subDirsArray))) {
|
||||
$pathIncr = "";
|
||||
for ($i=0; $i<count($subDirsArray); $i++) {
|
||||
$pathIncr .= $subDirsArray[$i]."/";
|
||||
// If this subdir isn't there, make it
|
||||
if (!is_dir($backupDirBase.$pathIncr)) {
|
||||
mkdir($backupDirBase.$pathIncr);
|
||||
}
|
||||
}
|
||||
}
|
||||
// We should have our dir path now so set that
|
||||
$backupDir = $backupDirBase.implode("/",$subDirsArray);
|
||||
// Work out an available filename (we postfix a number in parens)
|
||||
for ($i=1; $i<1000000000; $i++) {
|
||||
if (!file_exists($backupDir.'/'.$fileName." (".$i.")")) {
|
||||
$backupFileName = $fileName." (".$i.")";
|
||||
$backupFileNum = $i;
|
||||
$i=1000000000;
|
||||
}
|
||||
}
|
||||
|
||||
// Now save within that backup dir and clear the statcache
|
||||
$fh = fopen($backupDir."/".$backupFileName, "w") or die($t['Sorry, cannot save...']);
|
||||
fwrite($fh, $contents);
|
||||
fclose($fh);
|
||||
clearstatcache();
|
||||
|
||||
// Log the version count in an index file, which contains saved version counts
|
||||
$backupIndex = $backupDirBase.$backupDirHost."/".$backupDirDate."/.versions-index";
|
||||
// Have a version index already? Update contents
|
||||
if (file_exists($backupIndex)) {
|
||||
$versionsInfo = "";
|
||||
$versionsInfoOrig = file_get_contents($backupIndex,false,$context);
|
||||
$versionsInfoOrig = explode("\n",$versionsInfoOrig);
|
||||
$replacedLine = false;
|
||||
// For each line, either re-set number or simply include the line
|
||||
for ($i=0; $i<count($versionsInfoOrig); $i++) {
|
||||
if (strpos($versionsInfoOrig[$i],$fileLoc."/".$fileName." = ") === 0) {
|
||||
$versionsInfo .= $fileLoc."/".$fileName." = ".$backupFileNum.PHP_EOL;
|
||||
$replacedLine = true;
|
||||
} else {
|
||||
$versionsInfo .= $versionsInfoOrig[$i].PHP_EOL;
|
||||
}
|
||||
}
|
||||
// Didn't find our line in the file? Add it to the end
|
||||
if (!$replacedLine) {
|
||||
$versionsInfo .= $fileLoc."/".$fileName." = ".$backupFileNum.PHP_EOL;
|
||||
}
|
||||
// No version file yet, set the first line
|
||||
} else {
|
||||
$versionsInfo = $fileLoc."/".$fileName." = ".$backupFileNum.PHP_EOL;
|
||||
}
|
||||
$versionsInfo = rtrim($versionsInfo,PHP_EOL);
|
||||
$fh = fopen($backupIndex, 'w') or die($t['Sorry, cannot save...']);
|
||||
fwrite($fh, $versionsInfo);
|
||||
fclose($fh);
|
||||
clearstatcache();
|
||||
|
||||
// Finally, clear any old backup dirs than user set X days (inclusive)
|
||||
$backupDirsList = scandir($backupDirBase.$backupDirHost);
|
||||
$backupDirsKeep = array();
|
||||
for ($i=0; $i<=$ICEcoder["backupsDays"]; $i++) {
|
||||
$backupDirsKeep[] = date($backupDirFormat, strtotime('-'.$i.' day',strtotime($backupDirDate)));
|
||||
}
|
||||
for ($i=0; $i<count($backupDirsList); $i++) {
|
||||
if ($backupDirsList[$i] != "." && $backupDirsList[$i] != ".." && !in_array($backupDirsList[$i],$backupDirsKeep)) {
|
||||
rrmdir($backupDirBase.$backupDirHost."/".$backupDirsList[$i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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\');';
|
||||
@@ -190,6 +355,7 @@ if (!$error && $_GET['action']=="save") {
|
||||
top.ICEcoder.previewWindowLoading = false;
|
||||
try {top.ICEcoder.doPesticide();} catch(err) {};
|
||||
try {top.ICEcoder.doStatsJS(\'save\');} catch(err) {};
|
||||
try {top.ICEcoder.doResponsive();} catch(err) {};
|
||||
clearInterval(top.ICEcoder.checkPreviewWindowLoadingInt);
|
||||
} else {
|
||||
top.ICEcoder.previewWindowLoading = top.ICEcoder.previewWindow.document.readyState == "loading" ? true : false;
|
||||
@@ -222,8 +388,10 @@ if (!$error && $_GET['action']=="save") {
|
||||
// ======================================================
|
||||
|
||||
} else {
|
||||
// Only applicable for local files
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
$doNext = '
|
||||
$fileCountInfo = getVersionsCount($fileLoc,$fileName);
|
||||
$doNext .= '
|
||||
var loadedFile = document.createElement("textarea");
|
||||
loadedFile.value = "'.str_replace('"','\\\"',str_replace("\r","\\\\r",str_replace("\n","\\\\n",str_replace("</textarea>","<ICEcoder:/:textarea>",$loadedFile)))).'";
|
||||
var refreshFile = top.ICEcoder.ask("'.$t['Sorry, this file...'].'\\\n'.$file.'\\\n\\\n'.$t['Reload this file...'].'");
|
||||
@@ -235,6 +403,7 @@ if (!$error && $_GET['action']=="save") {
|
||||
cM.setValue(loadedFile.value);
|
||||
top.ICEcoder.savedPoints[thisTab-1] = cM.changeGeneration();
|
||||
top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1] = "'.$filemtime.'";
|
||||
top.ICEcoder.openFileVersions[top.ICEcoder.selectedTab-1] = "'.$fileCountInfo['count'].'";
|
||||
cM.clearHistory();
|
||||
/* Now for the new version in the diff pane */
|
||||
top.ICEcoder.setSplitPane(\'on\');
|
||||
@@ -250,41 +419,466 @@ if (!$error && $_GET['action']=="save") {
|
||||
|
||||
} else {
|
||||
$finalAction = "nothing";
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot save']."\\n".$file."');";
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot save']."\\\\n".$file."');";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
};
|
||||
|
||||
// ==========
|
||||
// NEW FOLDER
|
||||
// ==========
|
||||
|
||||
if (!$error && $_GET['action']=="newFolder") {
|
||||
if (!$demoMode && ($ftpSite || is_writable($docRoot.$fileLoc))) {
|
||||
$updateFM = false;
|
||||
// FTP
|
||||
if (isset($ftpSite)) {
|
||||
$ftpFilepath = ltrim($fileLoc."/".$fileName,"/");
|
||||
if (!ftpMkDir($ftpConn, octdec($ICEcoder['newDirPerms']), $ftpFilepath)) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, could not create dir '.$ftpFilepath.' at '.$ftpHost.'");';
|
||||
} else {
|
||||
$updateFM = true;
|
||||
}
|
||||
// Local
|
||||
} else {
|
||||
mkdir($file, octdec($ICEcoder['newDirPerms']));
|
||||
// Reload file manager
|
||||
$updateFM = true;
|
||||
}
|
||||
// Update file manager on success
|
||||
if ($updateFM) {
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\',false,false,false,\'folder\');';
|
||||
}
|
||||
$finalAction = "newFolder";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-new-dir.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot create...']."\\\\n".$fileLoc."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ================
|
||||
// MOVE FILE/FOLDER
|
||||
// ================
|
||||
|
||||
if (!$error && $_GET['action']=="move") {
|
||||
if (isset($ftpSite)) {
|
||||
$srcDir = ltrim(str_replace("|","/",strClean($_GET['oldFileName'])),"/");
|
||||
$tgtDir = ltrim($fileLoc."/".$fileName,"/");
|
||||
} else {
|
||||
$srcDir = $docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName']));
|
||||
$tgtDir = $docRoot.$fileLoc."/".$fileName;
|
||||
}
|
||||
if ($srcDir != $tgtDir && $fileLoc != "") {
|
||||
if (!$demoMode && ($ftpSite || is_writable($srcDir))) {
|
||||
$updateFM = false;
|
||||
// FTP
|
||||
if (isset($ftpSite)) {
|
||||
if (!ftpRename($ftpConn, $srcDir, $tgtDir)) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, could not rename '.$srcDir.' to '.$tgtDir.'");';
|
||||
} else {
|
||||
$ftpFileDirInfo = ftpGetFileInfo($ftpConn, ltrim($fileLoc,"/"), $fileName);
|
||||
$fileOrFolder = $ftpFileDirInfo['type'] == "directory" ? "folder" : "file";
|
||||
$updateFM = true;
|
||||
}
|
||||
// Local
|
||||
} else {
|
||||
if(rename($srcDir,$tgtDir)) {
|
||||
// Is a dir or file (needed to create new item in file manager)
|
||||
$fileOrFolder = is_dir($docRoot.$fileLoc."/".$fileName) ? "folder" : "file";
|
||||
$updateFM = true;
|
||||
}
|
||||
}
|
||||
// Update file manager on success
|
||||
if ($updateFM) {
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'move\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean(str_replace("|","/",$_GET['oldFileName']))).'\',false,$fileOrFolder);';
|
||||
}
|
||||
$finalAction = "move";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-move.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot move']."\\\\n".str_replace("|","/",strClean($_GET['oldFileName']))."\\\\n\\\\n".$t['Maybe public write...']."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
} else {
|
||||
$doNext .= "";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ==================
|
||||
// RENAME FILE/FOLDER
|
||||
// ==================
|
||||
|
||||
if (!$error && $_GET['action']=="rename") {
|
||||
if (!$demoMode && ($ftpSite || is_writable($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName']))))) {
|
||||
$updateFM = false;
|
||||
// FTP
|
||||
if (isset($ftpSite)) {
|
||||
$ftpFilepath = ltrim($fileLoc."/".$fileName,"/");
|
||||
if (!ftpRename($ftpConn, ltrim(strClean($_GET['oldFileName']),"/"), $ftpFilepath)) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, could not rename '.ltrim(strClean($_GET['oldFileName']),"/").' to '.$ftpFilepath.'");';
|
||||
} else {
|
||||
$updateFM = true;
|
||||
}
|
||||
// Local
|
||||
} else {
|
||||
rename($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])),$docRoot.$fileLoc."/".$fileName);
|
||||
$updateFM = true;
|
||||
}
|
||||
// Update file manager on success
|
||||
if ($updateFM) {
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\');';
|
||||
}
|
||||
$finalAction = "rename";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-rename.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot rename']."\\\\n".strClean($_GET['oldFileName'])."\\\\n\\\\n".$t['Maybe public write...']."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// =================
|
||||
// PASTE FILE/FOLDER
|
||||
// =================
|
||||
|
||||
if (!isset($ftpSite) && !$error && $_GET['action']=="paste") {
|
||||
$source = $file;
|
||||
$dest = str_replace("//","/",$docRoot.$iceRoot.strClean(str_replace("|","/",$_GET['location']))."/".basename($source));
|
||||
if (!$demoMode && is_writable(dirname($dest))) {
|
||||
if (is_dir($source)) {
|
||||
$fileOrFolder = "folder";
|
||||
if (!is_dir($dest)) {
|
||||
mkdir($dest, octdec($ICEcoder['newDirPerms']));
|
||||
} else {
|
||||
for ($i=2; $i<1000000000; $i++) {
|
||||
if (!is_dir($dest." (".$i.")")) {
|
||||
$dest = $dest." (".$i.")";
|
||||
mkdir($dest, octdec($ICEcoder['newDirPerms']));
|
||||
$i=1000000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($iterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
|
||||
RecursiveIteratorIterator::SELF_FIRST) as $item
|
||||
) {
|
||||
if ($item->isDir()) {
|
||||
mkdir($dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName(), octdec($ICEcoder['newDirPerms']));
|
||||
} else {
|
||||
copy($item, $dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$fileOrFolder = "file";
|
||||
if (!file_exists($dest)) {
|
||||
copy($source, $dest);
|
||||
} else {
|
||||
for ($i=2; $i<1000000000; $i++) {
|
||||
if (!file_exists($dest." (".$i.")")) {
|
||||
$dest = $dest." (".$i.")";
|
||||
copy($source, $dest);
|
||||
$i=1000000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Reload file manager
|
||||
$doNext .= 'top.ICEcoder.updateFileManagerList(\'add\',\''.strClean(str_replace("|","/",$_GET['location'])).'\',\''.basename($dest).'\',false,false,false,\''.$fileOrFolder.'\');';
|
||||
$finalAction = "pasteFile";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-paste.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot copy']." \\\\n".str_replace($docRoot,"",$source)."\\\\n ".$t['into']." \\\\n".str_replace($docRoot,"",$dest)."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ==============
|
||||
// UPLOAD FILE(S)
|
||||
// ==============
|
||||
|
||||
if (!isset($ftpSite) && !$error && $_GET['action']=="upload") {
|
||||
if (!$demoMode) {
|
||||
class fileUploader {
|
||||
public function __construct($uploads) {
|
||||
global $docRoot,$iceRoot,$ICEcoder,$doNext;
|
||||
$uploadDir=$docRoot.$iceRoot.str_replace("..","",str_replace("|","/",strClean($_POST['folder'])."/"));
|
||||
foreach($uploads as $current) {
|
||||
$this->uploadFile=$uploadDir.$current->name;
|
||||
$fileName = $current->name;
|
||||
// Get & set existing perms for existing files, or set to newFilePerms setting for new files
|
||||
if (file_exists($this->uploadFile)) {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($this->uploadFile)), -4);
|
||||
$setPerms = substr($chmodInfo,1,3); // reduces 0755 down to 755
|
||||
} else {
|
||||
$setPerms = $ICEcoder['newFilePerms'];
|
||||
}
|
||||
if ($this->upload($current,$this->uploadFile,$setPerms)) {
|
||||
$doNext .= 'top.ICEcoder.updateFileManagerList(\'add\',top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,\'/\'),\''.str_replace("'","\'",$fileName).'\',false,false,true,\'file\'); top.ICEcoder.serverMessage("'.$t['Uploaded file(s) OK'].'");setTimeout(function(){top.ICEcoder.serverMessage();},2000);';
|
||||
$finalAction = "upload";
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot upload']." \\\\n".$fileName."\\\\n ".$t['into']." \\\\n'+top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,'/'));";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function upload($current,$uploadFile,$setPerms){
|
||||
if(move_uploaded_file($current->tmp_name,$uploadFile)){
|
||||
chmod($uploadFile,octdec($setPerms));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getDetails($fileArr) {
|
||||
foreach($fileArr['name'] as $keyee => $info) {
|
||||
$uploads[$keyee]->name=$fileArr['name'][$keyee];
|
||||
$uploads[$keyee]->type=$fileArr['type'][$keyee];
|
||||
$uploads[$keyee]->tmp_name=$fileArr['tmp_name'][$keyee];
|
||||
$uploads[$keyee]->error=$fileArr['error'][$keyee];
|
||||
}
|
||||
return $uploads;
|
||||
}
|
||||
|
||||
if($_FILES['filesInput']){
|
||||
$uploads = getDetails($_FILES['filesInput']);
|
||||
$fileUploader=new fileUploader($uploads);
|
||||
}
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-upload.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot upload...']."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
|
||||
$doNext .= "top.ICEcoder.hideFileMenu();top.document.getElementById('fileInput').value='';top.ICEcoder.showHide('hide',top.document.getElementById('loadingMask'));";
|
||||
|
||||
// Upload is not handled by XHR methods, but form post, so we need to manually trigger $doNext in a script tag
|
||||
echo "<script>".$doNext."</script>";
|
||||
};
|
||||
|
||||
// ========================
|
||||
// DELETE FILE(S)/FOLDER(S)
|
||||
// ========================
|
||||
|
||||
if (!$error && $_GET['action']=="delete") {
|
||||
$filesArray = explode(";",$file); // May contain more than one file here
|
||||
// FTP
|
||||
if (isset($ftpSite)) {
|
||||
if (count($filesArray) == 1) {
|
||||
$ftpFileDirInfo = ftpGetFileInfo($ftpConn, ltrim($fileLoc,"/"), $fileName);
|
||||
$itemType = $ftpFileDirInfo['type'] == "directory" ? "dir" : "file";
|
||||
$itemPath = ltrim($fileLoc."/".$fileName,"/");
|
||||
if (!$demoMode && ftpDelete($ftpConn,$itemType,$itemPath)) {
|
||||
if ($fileLoc=="" || $fileLoc=="\\") {$fileLoc="/";};
|
||||
// Reload file manager
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'delete\',\''.$fileLoc.'\',\''.$fileName.'\');';
|
||||
$finalAction = "delete";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-delete.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot delete']."\\\\n".$fileLoc."/".$fileName."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot delete more...']."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
// Local
|
||||
} else {
|
||||
for ($i=0;$i<count($filesArray);$i++) {
|
||||
$fullPath = str_replace($docRoot,"",$filesArray[$i]);
|
||||
$fullPath = str_replace($iceRoot,"",$fullPath);
|
||||
$fullPath = $docRoot.$iceRoot.$fullPath;
|
||||
|
||||
if (rtrim($fullPath,"/") == rtrim($docRoot,"/")) {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot delete...']."');";
|
||||
} else if (!$demoMode && is_writable($fullPath)) {
|
||||
is_dir($fullPath)
|
||||
? rrmdir($fullPath)
|
||||
: unlink($fullPath);
|
||||
$fileName = basename($fullPath);
|
||||
$fileLoc = dirname(str_replace($docRoot,"",$fullPath));
|
||||
if ($fileLoc=="" || $fileLoc=="\\") {$fileLoc="/";};
|
||||
// Reload file manager
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'delete\',\''.$fileLoc.'\',\''.$fileName.'\');';
|
||||
$finalAction = "delete";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-delete.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot delete']."\\\\n".str_replace($docRoot,"",$fullPath)."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
}
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// The function to recursively remove folders & files
|
||||
function rrmdir($dir) {
|
||||
if (is_dir($dir)) {
|
||||
$objects = scandir($dir);
|
||||
foreach ($objects as $object) {
|
||||
if ($object != "." && $object != "..") {
|
||||
filetype($dir."/".$object) == "dir"
|
||||
? rrmdir($dir."/".$object)
|
||||
: unlink($dir."/".$object);
|
||||
}
|
||||
}
|
||||
reset($objects);
|
||||
rmdir($dir);
|
||||
}
|
||||
};
|
||||
|
||||
// ======================
|
||||
// REPLACE TEXT IN A FILE
|
||||
// ======================
|
||||
|
||||
if (!isset($ftpSite) && !$error && $_GET['action']=="replaceText") {
|
||||
if (!$demoMode && is_writable($file)) {
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
$newContent = str_replace(strClean($_GET['find']),strClean($_GET['replace']),$loadedFile);
|
||||
$fh = fopen($file, 'w') or die($t['Sorry, cannot save']);
|
||||
fwrite($fh, $newContent);
|
||||
fclose($fh);
|
||||
$finalAction = "replaceText";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-replace-text.php");
|
||||
} else {
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot replace...']."\\\\n".$file."');";
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ==========================
|
||||
// GET CONTENTS OF REMOTE URL
|
||||
// ==========================
|
||||
|
||||
if (!isset($ftpSite) && !$error && $_GET['action']=="getRemoteFile") {
|
||||
$lineNumber = max(isset($_REQUEST['lineNumber'])?intval($_REQUEST['lineNumber']):1, 1);
|
||||
if ($remoteFile = toUTF8noBOM(file_get_contents($file,false,$context),true)) {
|
||||
// replace \r\n (Windows), \r (old Mac) and \n (Linux) line endings with whatever we chose to be lineEnding
|
||||
$remoteFile = str_replace("\r\n", $ICEcoder["lineEnding"], $remoteFile);
|
||||
$remoteFile = str_replace("\r", $ICEcoder["lineEnding"], $remoteFile);
|
||||
$remoteFile = str_replace("\n", $ICEcoder["lineEnding"], $remoteFile);
|
||||
$doNext .= 'top.ICEcoder.newTab();';
|
||||
$doNext .= 'top.ICEcoder.getcMInstance().setValue(\''.str_replace("\r","",str_replace("\t","\\\\t",str_replace("\n","\\\\n",str_replace("'","\\\\'",str_replace("\\","\\\\",preg_quote($remoteFile)))))).'\');';
|
||||
$doNext .= 'top.ICEcoder.goToLine('.$lineNumber.');';
|
||||
$finalAction = "getRemoteFile";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-get-remote-file.php");
|
||||
} else {
|
||||
$finalAction = "nothing";
|
||||
$doNext .= 'top.ICEcoder.message(\''.$t['Sorry, could not...'].' '.$file.'\');';
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// =======================
|
||||
// CHANGING FILE/DIR PERMS
|
||||
// =======================
|
||||
|
||||
if (!$error && $_GET['action']=="perms") {
|
||||
if (!$demoMode && ($ftpSite || is_writable($file))) {
|
||||
$updateFM = false;
|
||||
// FTP
|
||||
if (isset($ftpSite)) {
|
||||
$ftpFilepath = ltrim($fileLoc."/".$fileName,"/");
|
||||
if (!ftpPerms($ftpConn, octdec(numClean($_GET['perms'])), $ftpFilepath)) {
|
||||
$doNext .= 'top.ICEcoder.message("Sorry, could not set perms on '.$ftpFilepath.' at '.$ftpHost.'");';
|
||||
} else {
|
||||
$updateFM = true;
|
||||
}
|
||||
// Local
|
||||
} else {
|
||||
chmod($file,octdec(numClean($_GET['perms'])));
|
||||
// Reload file manager
|
||||
$updateFM = true;
|
||||
}
|
||||
// Update file manager on success
|
||||
if ($updateFM) {
|
||||
$doNext .= 'top.ICEcoder.updateFileManagerList(\'chmod\',\''.$fileLoc.'\',\''.$fileName.'\',\''.numClean($_GET['perms']).'\');';
|
||||
}
|
||||
$finalAction = "perms";
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-perms.php");
|
||||
} else {
|
||||
$finalAction = "nothing";
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot change...']." \\n".strClean($file)."');";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ====================
|
||||
// CHECK FOR A FILE/DIR
|
||||
// ====================
|
||||
|
||||
if (!isset($ftpSite) && !$error && $_GET['action']=="checkExists") {
|
||||
// This action is called under seperate AJAX call and the responseText object stored in top.ICEcoder.lastFileDirCheckStatusObj
|
||||
// Nothing really done here though, we do something with the responseText
|
||||
$finalAction = "checkExists";
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
};
|
||||
|
||||
// ===================
|
||||
// JSON DATA TO RETURN
|
||||
// ===================
|
||||
|
||||
// No $filemtime yet? Get it now!
|
||||
if (!isset($filemtime)) {
|
||||
$filemtime = $serverType=="Linux" ? filemtime($file) : "1000000";
|
||||
}
|
||||
// Set $timeStart, use 0 if not available
|
||||
$timeStart = isset($_POST["timeStart"]) ? $_POST["timeStart"] : 0;
|
||||
|
||||
if (isset($ftpSite)) {
|
||||
// Get info on dir/file now
|
||||
$ftpFileDirInfo = ftpGetFileInfo($ftpConn, ltrim($fileLoc,"/"), $fileName);
|
||||
// End the connection
|
||||
ftpEnd();
|
||||
// Then set info
|
||||
$itemAbsPath = $ftpRoot.$fileLoc.'/'.$fileName;
|
||||
$itemPath = dirname($ftpRoot.$fileLoc.'/'.$fileName);
|
||||
$itemBytes = $ftpFileDirInfo['size'];
|
||||
$itemType = (isset($ftpFileDirInfo['type']) ? ($ftpFileDirInfo['type'] == "directory" ? "dir" : "file") : "unknown");
|
||||
$itemExists = (isset($ftpFileDirInfo['type']) ? "true" : "false");
|
||||
} else {
|
||||
$itemAbsPath = $file;
|
||||
$itemPath = dirname($file);
|
||||
$itemBytes = filesize($file);
|
||||
$itemType = (file_exists($file) ? (is_dir($file) ? "dir" : "file") : "unknown");
|
||||
$itemExists = (file_exists($file) ? "true" : "false");
|
||||
}
|
||||
|
||||
echo '{
|
||||
"file": {
|
||||
"absPath": "'.$file.'",
|
||||
"absPath": "'.$itemAbsPath.'",
|
||||
"relPath": "'.$fileLoc.'/'.$fileName.'",
|
||||
"name": "'.$fileName.'",
|
||||
"path": "'.dirname($file).'",
|
||||
"bytes": "'.filesize($file).'",
|
||||
"modifiedDT": "'.$filemtime.'"
|
||||
"path": "'.$itemPath.'",
|
||||
"bytes": "'.$itemBytes.'",
|
||||
"modifiedDT": "'.$filemtime.'",
|
||||
"type": "'.$itemType.'",
|
||||
"exists": '.$itemExists.'
|
||||
},
|
||||
"action": {
|
||||
"initial" : "'.$_GET["action"].'",
|
||||
"final" : "'.$finalAction.'",
|
||||
"timeStart": '.$_POST["timeStart"].',
|
||||
"timeStart": '.$timeStart.',
|
||||
"timeEnd": 0,
|
||||
"timeTaken": 0,
|
||||
"csrf": "'.$_GET["csrf"].'",
|
||||
"doNext" : "'.str_replace(PHP_EOL,'',str_replace(' ','',str_replace('"','\"',$doNext))).'top.ICEcoder.switchMode();"
|
||||
"doNext" : "'.preg_replace('/\r|\n/','',str_replace(' ','',str_replace('"','\"',$doNext))).'top.ICEcoder.switchMode();"
|
||||
},
|
||||
"status": {
|
||||
"error" : '.($error ? 'true' : 'false').',
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
<?php
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
include("ftp-control.php");
|
||||
$t = $text['file-control'];
|
||||
?>
|
||||
<?php if ($_SESSION['githubDiff']) { ?>
|
||||
<script src="github.js"></script>
|
||||
<script src="underscore-min.js"></script>
|
||||
<script src="github.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="underscore-min.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<?php ;}; ?>
|
||||
<script>
|
||||
<?php
|
||||
// Get the save type if any
|
||||
$saveType = isset($_GET['saveType']) ? strClean($_GET['saveType']) : "";
|
||||
|
||||
// Establish the filename/new filename
|
||||
$file = str_replace("|","/",strClean(
|
||||
isset($_POST['newFileName']) && $_POST['newFileName']!=""
|
||||
@@ -54,7 +52,7 @@ for ($i=0; $i<count($allFiles); $i++) {
|
||||
// Die if the file requested isn't something we expect
|
||||
if(
|
||||
// A local folder that isn't the doc root or starts with the doc root
|
||||
($_GET['action']!="getRemoteFile" &&
|
||||
($_GET['action']!="getRemoteFile" && !isset($ftpSite) &&
|
||||
rtrim($allFiles[$i],"/") !== rtrim($docRoot,"/") &&
|
||||
strpos(realpath(rtrim(dirname($allFiles[$i]),"/")),realpath(rtrim($docRoot,"/"))) !== 0
|
||||
) ||
|
||||
@@ -68,11 +66,11 @@ for ($i=0; $i<count($allFiles); $i++) {
|
||||
// If we're due to open a file...
|
||||
if ($_GET['action']=="load") {
|
||||
echo 'action="load";';
|
||||
|
||||
if (file_exists($file)) {
|
||||
$lineNumber = max(isset($_REQUEST['lineNumber'])?intval($_REQUEST['lineNumber']):1, 1);
|
||||
if (isset($ftpSite) || file_exists($file)) {
|
||||
$finfo = "text";
|
||||
// Determine what to do based on mime type
|
||||
if (function_exists('finfo_open')) {
|
||||
if (!isset($ftpSite) && function_exists('finfo_open')) {
|
||||
$finfoMIME = finfo_open(FILEINFO_MIME);
|
||||
$finfo = finfo_file($finfoMIME, $file);
|
||||
finfo_close($finfoMIME);
|
||||
@@ -82,11 +80,29 @@ if ($_GET['action']=="load") {
|
||||
if (array_search($fileExt,array("gif","jpg","jpeg","png"))!==false) {$finfo = "image";};
|
||||
if (array_search($fileExt,array("doc","docx","ppt","rtf","pdf","zip","tar","gz","swf","asx","asf","midi","mp3","wav","aiff","mov","qt","wmv","mp4","odt","odg","odp"))!==false) {$finfo = "other";};
|
||||
}
|
||||
if (strpos($finfo,"text")===0 || strpos($finfo,"empty")!==false) {
|
||||
if (strpos($finfo,"text")===0 || strpos($finfo, "application/xml")===0 || strpos($finfo,"empty")!==false) {
|
||||
echo 'fileType="text";';
|
||||
echo 'top.ICEcoder.shortURL = top.ICEcoder.thisFileFolderLink = "'.$fileLoc."/".$fileName.'";';
|
||||
|
||||
// Get file over FTP?
|
||||
if (isset($ftpSite)) {
|
||||
ftpStart();
|
||||
// Show user warning if no good connection
|
||||
if (!$ftpConn || !$ftpLogin) {
|
||||
die('alert("Sorry, no FTP connection to '.$ftpHost.' for user '.$ftpUser.'");top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>');
|
||||
exit;
|
||||
}
|
||||
// Get our file contents and close the FTP connection
|
||||
$loadedFile = toUTF8noBOM(ftpGetContents($ftpConn, $ftpRoot.$fileLoc."/".$fileName, $ftpMode));
|
||||
ftpEnd();
|
||||
// Get local file
|
||||
} else {
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
echo '</script><textarea name="loadedFile" id="loadedFile">'.str_replace("</textarea>","<ICEcoder:/:textarea>",str_replace("&","&",$loadedFile)).'</textarea><script>';
|
||||
}
|
||||
$encoding=ini_get("default_charset");
|
||||
if($encoding=="")
|
||||
$encoding="UTF-8";
|
||||
echo '</script><textarea name="loadedFile" id="loadedFile">'.htmlentities($loadedFile,ENT_COMPAT,$encoding).'</textarea><script>';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-load.php");
|
||||
} else if (strpos($finfo,"image")===0) {
|
||||
@@ -100,261 +116,7 @@ if ($_GET['action']=="load") {
|
||||
|
||||
};
|
||||
|
||||
// Get the contents of a remote URL
|
||||
if ($_GET['action']=="getRemoteFile") {
|
||||
if ($remoteFile = toUTF8noBOM(file_get_contents($file,false,$context),true)) {
|
||||
// replace \r\n (Windows), \r (old Mac) and \n (Linux) line endings with whatever we chose to be lineEnding
|
||||
$remoteFile = str_replace("\r\n", $ICEcoder["lineEnding"], $remoteFile);
|
||||
$remoteFile = str_replace("\r", $ICEcoder["lineEnding"], $remoteFile);
|
||||
$remoteFile = str_replace("\n", $ICEcoder["lineEnding"], $remoteFile);
|
||||
echo 'top.ICEcoder.newTab();';
|
||||
echo '</script><textarea name="remoteFile" id="remoteFile">'.str_replace("</textarea>","<ICEcoder:/:textarea>",str_replace("&","&",$remoteFile)).'</textarea><script>';
|
||||
echo 'top.ICEcoder.getcMInstance().setValue(document.getElementById("remoteFile").value);action="getRemoteFile";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-get-remote-file.php");
|
||||
} else {
|
||||
echo 'action="nothing"; top.ICEcoder.message(\''.$t['Sorry, could not...'].' '.$file.'\');';
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to add a new folder...
|
||||
if ($_GET['action']=="newFolder") {
|
||||
if (!$demoMode && is_writable($docRoot.$fileLoc)) {
|
||||
mkdir($file, octdec($ICEcoder['newDirPerms']));
|
||||
// Reload file manager
|
||||
echo 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\',false,false,false,\'folder\');action="newFolder";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-new-dir.php");
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot create...']."\\n".$fileLoc."');";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to paste a new file...
|
||||
if ($_GET['action']=="paste") {
|
||||
$source = $file;
|
||||
$dest = str_replace("//","/",$docRoot.$iceRoot.strClean(str_replace("|","/",$_GET['location']))."/".basename($source));
|
||||
if (!$demoMode && is_writable(dirname($dest))) {
|
||||
if (is_dir($source)) {
|
||||
$fileOrFolder = "folder";
|
||||
if (!is_dir($dest)) {
|
||||
mkdir($dest, octdec($ICEcoder['newDirPerms']));
|
||||
} else {
|
||||
for ($i=2; $i<1000000000; $i++) {
|
||||
if (!is_dir($dest." (".$i.")")) {
|
||||
$dest = $dest." (".$i.")";
|
||||
mkdir($dest, octdec($ICEcoder['newDirPerms']));
|
||||
$i=1000000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($iterator = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS),
|
||||
RecursiveIteratorIterator::SELF_FIRST) as $item
|
||||
) {
|
||||
if ($item->isDir()) {
|
||||
mkdir($dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName(), octdec($ICEcoder['newDirPerms']));
|
||||
} else {
|
||||
copy($item, $dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$fileOrFolder = "file";
|
||||
if (!file_exists($dest)) {
|
||||
copy($source, $dest);
|
||||
} else {
|
||||
for ($i=2; $i<1000000000; $i++) {
|
||||
if (!file_exists($dest." (".$i.")")) {
|
||||
$dest = $dest." (".$i.")";
|
||||
copy($source, $dest);
|
||||
$i=1000000000;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Reload file manager
|
||||
echo 'top.ICEcoder.updateFileManagerList(\'add\',\''.strClean(str_replace("|","/",$_GET['location'])).'\',\''.basename($dest).'\',false,false,false,\''.$fileOrFolder.'\');action="pasteFile";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-paste.php");
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot copy']." \\n".str_replace($docRoot,"",$source)."\\n ".$t['into']." \\n".str_replace($docRoot,"",$dest)."');";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to upload files...
|
||||
if ($_GET['action']=="upload") {
|
||||
if (!$demoMode) {
|
||||
class fileUploader {
|
||||
public function __construct($uploads) {
|
||||
global $docRoot,$iceRoot;
|
||||
$uploadDir=$docRoot.$iceRoot.str_replace("..","",str_replace("|","/",strClean($_POST['folder'])."/"));
|
||||
foreach($uploads as $current) {
|
||||
$this->uploadFile=$uploadDir.$current->name;
|
||||
$fileName = $current->name;
|
||||
if ($this->upload($current,$this->uploadFile)) {
|
||||
echo 'action="upload"; top.ICEcoder.updateFileManagerList(\'add\',top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,\'/\'),\''.str_replace("'","\'",$fileName).'\',false,false,true,\'file\'); top.ICEcoder.serverMessage("'.$t['Uploaded file(s) OK'].'");setTimeout(function(){top.ICEcoder.serverMessage();},2000);';
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot upload']." \\n".$fileName."\\n ".$t['into']." \\n'+top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,'/'));";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function upload($current,$uploadFile){
|
||||
if(move_uploaded_file($current->tmp_name,$uploadFile)){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getDetails($fileArr) {
|
||||
foreach($fileArr['name'] as $keyee => $info) {
|
||||
$uploads[$keyee]->name=$fileArr['name'][$keyee];
|
||||
$uploads[$keyee]->type=$fileArr['type'][$keyee];
|
||||
$uploads[$keyee]->tmp_name=$fileArr['tmp_name'][$keyee];
|
||||
$uploads[$keyee]->error=$fileArr['error'][$keyee];
|
||||
}
|
||||
return $uploads;
|
||||
}
|
||||
|
||||
if($_FILES['filesInput']){
|
||||
$uploads = getDetails($_FILES['filesInput']);
|
||||
$fileUploader=new fileUploader($uploads);
|
||||
}
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-upload.php");
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot upload...']."');";
|
||||
}
|
||||
|
||||
echo "top.ICEcoder.hideFileMenu();top.document.getElementById('fileInput').value='';top.ICEcoder.showHide('hide',top.document.getElementById('loadingMask'));";
|
||||
}
|
||||
|
||||
// If we're due to rename a file/folder...
|
||||
if ($_GET['action']=="rename") {
|
||||
$renamed=false;
|
||||
if (!$demoMode && is_writable($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])))) {
|
||||
if(rename($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])),$docRoot.$fileLoc."/".$fileName)) {
|
||||
// Reload file manager
|
||||
echo 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\');';
|
||||
echo 'action="rename";';
|
||||
$renamed=true;
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-rename.php");
|
||||
}
|
||||
}
|
||||
if (!$renamed) {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot rename']."\\n".strClean($_GET['oldFileName'])."\\n\\n".$t['Maybe public write...']."');";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to move a file/folder...
|
||||
if ($_GET['action']=="move") {
|
||||
$moved=false;
|
||||
$srcDir = $docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName']));
|
||||
$tgtDir = $docRoot.$fileLoc."/".$fileName;
|
||||
if ($srcDir != $tgtDir && $fileLoc != "") {
|
||||
if (!$demoMode && is_writable($srcDir)) {
|
||||
if(rename($srcDir,$tgtDir)) {
|
||||
// Reload file manager
|
||||
$fileOrFolder = is_dir($docRoot.$fileLoc."/".$fileName) ? "folder" : "file";
|
||||
echo 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'move\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\',false,\''.$fileOrFolder.'\');';
|
||||
echo 'action="move";';
|
||||
$moved=true;
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-move.php");
|
||||
}
|
||||
}
|
||||
if (!$moved) {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot move']."\\n".strClean($_GET['oldFileName'])."\\n\\n".$t['Maybe public write...']."');";
|
||||
}
|
||||
} else {
|
||||
echo "action='nothing';";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to replace text in a file...
|
||||
if ($_GET['action']=="replaceText") {
|
||||
if (!$demoMode && is_writable(str_replace("|","/",strClean($_GET['fileRef'])))) {
|
||||
$file = str_replace("|","/",strClean($_GET['fileRef']));
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
$newContent = str_replace(strClean($_GET['find']),strClean($_GET['replace']),$loadedFile);
|
||||
$fh = fopen($file, 'w') or die($t['Sorry, cannot save']);
|
||||
fwrite($fh, $newContent);
|
||||
fclose($fh);
|
||||
echo 'action="replaceText";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-replace-text.php");
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot replace...']."\\n".strClean($_GET['fileRef'])."');";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to change permissions on a file/folder...
|
||||
if ($_GET['action']=="perms") {
|
||||
if (!$demoMode && is_writable($file)) {
|
||||
chmod($file,octdec(numClean($_GET['perms'])));
|
||||
// Reload file manager
|
||||
echo 'top.ICEcoder.updateFileManagerList(\'chmod\',\''.$fileLoc.'\',\''.$fileName.'\',\''.numClean($_GET['perms']).'\');';
|
||||
echo 'action="perms";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-perms.php");
|
||||
} else {
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot change...']." \\n".strClean($file)."');";
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to delete a file...
|
||||
if ($_GET['action']=="delete") {
|
||||
$filesArray = explode(";",$file); // May contain more than one file here
|
||||
for ($i=0;$i<count($filesArray);$i++) {
|
||||
$fullPath = str_replace($docRoot,"",$filesArray[$i]);
|
||||
$fullPath = str_replace($iceRoot,"",$fullPath);
|
||||
$fullPath = $docRoot.$iceRoot.$fullPath;
|
||||
|
||||
if (rtrim($fullPath,"/") == rtrim($docRoot,"/")) {
|
||||
echo "top.ICEcoder.message('".$t['Sorry, cannot delete...']."');";
|
||||
} else if (!$demoMode && is_writable($fullPath)) {
|
||||
is_dir($fullPath)
|
||||
? rrmdir($fullPath)
|
||||
: unlink($fullPath);
|
||||
$fileName = basename($fullPath);
|
||||
$fileLoc = dirname(str_replace($docRoot,"",$fullPath));
|
||||
if ($fileLoc=="" || $fileLoc=="\\") {$fileLoc="/";};
|
||||
// Reload file manager
|
||||
echo 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'delete\',\''.$fileLoc.'\',\''.$fileName.'\');';
|
||||
echo 'action="delete";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-dir-delete.php");
|
||||
} else {
|
||||
echo "top.ICEcoder.message('".$t['Sorry, cannot delete']."\\n".str_replace($docRoot,"",$fullPath)."');";
|
||||
}
|
||||
echo 'action="nothing";';
|
||||
}
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// The function to recursively remove folders & files
|
||||
function rrmdir($dir) {
|
||||
if (is_dir($dir)) {
|
||||
$objects = scandir($dir);
|
||||
foreach ($objects as $object) {
|
||||
if ($object != "." && $object != "..") {
|
||||
filetype($dir."/".$object) == "dir"
|
||||
? rrmdir($dir."/".$object)
|
||||
: unlink($dir."/".$object);
|
||||
}
|
||||
}
|
||||
reset($objects);
|
||||
rmdir($dir);
|
||||
}
|
||||
}
|
||||
?>
|
||||
if (action=="load") {
|
||||
if (fileType=="text") {
|
||||
@@ -363,7 +125,7 @@ if (action=="load") {
|
||||
console.log('<?php echo $t['There was a...']; ?>');
|
||||
window.location.reload(true);
|
||||
<?php
|
||||
if (file_exists($file)) {
|
||||
if (isset($ftpSite) || file_exists($file)) {
|
||||
?>
|
||||
} else {
|
||||
top.ICEcoder.loadingFile = true;
|
||||
@@ -376,35 +138,37 @@ if (action=="load") {
|
||||
top.ICEcoder.setLayout();
|
||||
top.ICEcoder.content.contentWindow.createNewCMInstance(top.ICEcoder.nextcMInstance);
|
||||
|
||||
// If we're in GitHub diff mode and have a split pane display, get the content for the diff pane
|
||||
if (top.ICEcoder.githubDiff && top.ICEcoder.splitPane) {
|
||||
<?php
|
||||
// Get our GitHub relative site path & local path
|
||||
$ghRemoteURLPos = array_search($ICEcoder["root"],$ICEcoder['githubLocalPaths']);
|
||||
<?php if (!isset($ftpSite) && $_SESSION['githubDiff']) { ?>
|
||||
// If we're in GitHub diff mode and have a split pane display, get the content for the diff pane
|
||||
if (top.ICEcoder.githubDiff && top.ICEcoder.splitPane) {
|
||||
<?php
|
||||
// Get our GitHub relative site path & local path
|
||||
$ghRemoteURLPos = array_search($ICEcoder["root"],$ICEcoder['githubLocalPaths']);
|
||||
|
||||
$ghLocalURLPaths = $ICEcoder['githubLocalPaths'];
|
||||
$ghLocalPath = $ghLocalURLPaths[$ghRemoteURLPos];
|
||||
$ghLocalURLPaths = $ICEcoder['githubLocalPaths'];
|
||||
$ghLocalPath = $ghLocalURLPaths[$ghRemoteURLPos];
|
||||
|
||||
$ghRemoteURLPaths = $ICEcoder['githubRemotePaths'];
|
||||
$ghRemoteURL = $ghRemoteURLPaths[$ghRemoteURLPos];
|
||||
$ghRemoteURLPaths = $ICEcoder['githubRemotePaths'];
|
||||
$ghRemoteURL = $ghRemoteURLPaths[$ghRemoteURLPos];
|
||||
|
||||
$ghRemoteURL = str_replace("https://github.com/","",$ghRemoteURL);
|
||||
$ghRemoteURL = str_replace("/","|",$ghRemoteURL);
|
||||
$ghRemoteURL = str_replace("https://github.com/","",$ghRemoteURL);
|
||||
$ghRemoteURL = str_replace("/","|",$ghRemoteURL);
|
||||
|
||||
// If the file is not in a sub-sub dir of the doc root
|
||||
if (!strpos($fileLoc,"/",1)) {
|
||||
// The file path is simply the file name in the root
|
||||
$ghFilePath = $fileName;
|
||||
} else {
|
||||
// We need to get rid of the root dir and trailing slash
|
||||
$ghFilePath = substr(str_replace($ghLocalPath,"",$fileLoc),1);
|
||||
// If it's not within a sub-dir, it's just the filename, otherwise prefix with dir path and pipe
|
||||
$ghFilePath = $ghFilePath == "" ? $fileName : $ghFilePath."|".$fileName;
|
||||
// If the file is not in a sub-sub dir of the doc root
|
||||
if (!strpos($fileLoc,"/",1)) {
|
||||
// The file path is simply the file name in the root
|
||||
$ghFilePath = $fileName;
|
||||
} else {
|
||||
// We need to get rid of the root dir and trailing slash
|
||||
$ghFilePath = substr(str_replace($ghLocalPath,"",$fileLoc),1);
|
||||
// If it's not within a sub-dir, it's just the filename, otherwise prefix with dir path and pipe
|
||||
$ghFilePath = $ghFilePath == "" ? $fileName : $ghFilePath."|".$fileName;
|
||||
}
|
||||
?>
|
||||
|
||||
top.ICEcoder.filesFrame.contentWindow.frames['processControl'].location.href = "github.php?action=read&repo=<?php echo $ghRemoteURL;?>&filePath=<?php echo $ghFilePath;?>&csrf="+top.ICEcoder.csrf;
|
||||
}
|
||||
?>
|
||||
|
||||
top.ICEcoder.filesFrame.contentWindow.frames['processControl'].location.href = "github.php?action=read&repo=<?php echo $ghRemoteURL;?>&filePath=<?php echo $ghFilePath;?>&csrf="+top.ICEcoder.csrf;
|
||||
}
|
||||
<?php ;}; ?>
|
||||
|
||||
// Set the value & innerHTML of the code textarea to that of our loaded file plus make it visible (it's hidden on ICEcoder's load)
|
||||
top.ICEcoder.switchMode();
|
||||
@@ -413,7 +177,7 @@ if (action=="load") {
|
||||
top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1] = cM.changeGeneration();
|
||||
top.document.getElementById('content').style.visibility='visible';
|
||||
top.ICEcoder.switchTab(top.ICEcoder.selectedTab,'noFocus');
|
||||
setTimeout(function(){top.filesFrame.contentWindow.focus();},0);
|
||||
setTimeout(function(){top.ICEcoder.filesFrame.contentWindow.focus();},0);
|
||||
|
||||
// Then clean it up, set the text cursor, update the display and get the character data
|
||||
top.ICEcoder.contentCleanUp();
|
||||
@@ -421,9 +185,15 @@ if (action=="load") {
|
||||
top.ICEcoder['cMActiveLinecM'+top.ICEcoder.selectedTab] = top.ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].addLineClass(0, "background", "cm-s-activeLine");
|
||||
top.ICEcoder.nextcMInstance++;
|
||||
top.ICEcoder.openFileMDTs.push('<?php echo $serverType=="Linux" ? filemtime($file) : "1000000"; ?>');
|
||||
top.ICEcoder.openFileVersions.push(<?php
|
||||
$fileCountInfo = getVersionsCount($fileLoc,$fileName);
|
||||
echo $fileCountInfo['count'];?>);
|
||||
top.ICEcoder.updateVersionsDisplay();
|
||||
|
||||
for (var i=0; i<cM.lineCount(); i++) {
|
||||
top.ICEcoder.content.contentWindow.CodeMirror.doFold(cM.getLine(i).indexOf("{")>-1?"brace":"xml",null,"+","-",true)(cM, i);
|
||||
}
|
||||
top.ICEcoder.goToLine(<?php echo $lineNumber; ?>);
|
||||
top.ICEcoder.loadingFile = false;
|
||||
<?php
|
||||
;};
|
||||
@@ -436,7 +206,7 @@ if (action=="load") {
|
||||
top.document.getElementById('blackMask').style.visibility = "visible";
|
||||
top.document.getElementById('mediaContainer').innerHTML =
|
||||
"<canvas id=\"canvasPicker\" width=\"1\" height=\"1\" style=\"position: absolute; margin: 10px 0 0 10px; cursor: crosshair\" onmouseover=\"top.ICEcoder.overPopup=true\" onmouseout=\"top.ICEcoder.overPopup=false\"></canvas>" +
|
||||
"<img src=\"<?php echo $fileLoc."/".$fileName;?>\" class=\"whiteGlow\" style=\"border: solid 10px #fff; max-width: 700px; max-height: 500px; background-color: #000; background-image: url('images/checkerboard.png')\" onLoad=\"reducedImgMsg = (this.naturalWidth > 700 || this.naturalHeight > 500) ? ', <?php echo $t['displayed at']; ?> ' + this.width + ' x ' + this.height : ''; document.getElementById('imgInfo').innerHTML += ' (' + this.naturalWidth + ' x ' + this.naturalHeight + reducedImgMsg + ')'; top.ICEcoder.drawCanvasImage(this)\"><br>" +
|
||||
"<img src=\"<?php echo (isset($ftpSite) ? $ftpSite : "").$fileLoc."/".$fileName;?>\" class=\"whiteGlow\" style=\"border: solid 10px #fff; max-width: 700px; max-height: 500px; background-color: #000; background-image: url('images/checkerboard.png')\" onLoad=\"reducedImgMsg = (this.naturalWidth > 700 || this.naturalHeight > 500) ? ', <?php echo $t['displayed at']; ?> ' + this.width + ' x ' + this.height : ''; document.getElementById('imgInfo').innerHTML += ' (' + this.naturalWidth + ' x ' + this.naturalHeight + reducedImgMsg + ')'; top.ICEcoder.initCanvasImage(this); top.ICEcoder.interactCanvasImage(this)\"><br>" +
|
||||
"<div class=\"whiteGlow\" style=\"display: inline-block; margin-top: -10px; border: solid 10px #fff; color: #000; background-color: #fff\" id=\"imgInfo\" onmouseover=\"top.ICEcoder.overPopup=true\" onmouseout=\"top.ICEcoder.overPopup=false\">" +
|
||||
"<b><?php echo $fileLoc."/".$fileName;?></b>" +
|
||||
"</div><br>" +
|
||||
@@ -444,12 +214,12 @@ if (action=="load") {
|
||||
"<input type=\"text\" id=\"rgbMouseXY\" style=\"border: 1px solid #888; margin-right: 10px; width: 70px\" onmouseover=\"top.ICEcoder.overPopup=true\" onmouseout=\"top.ICEcoder.overPopup=false\"></input>" +
|
||||
"<input type=\"text\" id=\"hex\" style=\"border: 1px solid #888; border-right: 0; width: 70px\" onmouseover=\"top.ICEcoder.overPopup=true\" onmouseout=\"top.ICEcoder.overPopup=false\"></input>" +
|
||||
"<input type=\"text\" id=\"rgb\" style=\"border: 1px solid #888; width: 70px\" onmouseover=\"top.ICEcoder.overPopup=true\" onmouseout=\"top.ICEcoder.overPopup=false\"></input>";
|
||||
top.document.getElementById('floatingContainer').style.background = "#fff url('<?php echo $fileLoc."/".$fileName;?>') no-repeat 0 0";
|
||||
}
|
||||
|
||||
top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);
|
||||
}
|
||||
</script>
|
||||
|
||||
// Finally, switch mode in case we have saved, renamed file etc
|
||||
top.ICEcoder.switchMode();
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Additional file types */
|
||||
.fileManager LI.ext-c:before {background-position: -48px 0}
|
||||
.fileManager LI.ext-cpp:before {background-position: -64px 0}
|
||||
.fileManager LI.ext-cpp:before, .fileManager LI.ext-ino:before {background-position: -64px 0}
|
||||
.fileManager LI.ext-cs:before {background-position: -80px 0}
|
||||
.fileManager LI.ext-coffee:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-css:before {background-position: -112px 0}
|
||||
|
||||
115
lib/ftp-control.php
Normal file
115
lib/ftp-control.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
// Start a FTP connection
|
||||
function ftpStart() {
|
||||
global $ftpConn, $ftpLogin, $ftpHost, $ftpUser, $ftpPass, $ftpPasv;
|
||||
|
||||
// Establish connection, login and maybe use pasv
|
||||
$ftpConn = ftp_connect($ftpHost);
|
||||
$ftpLogin = ftp_login($ftpConn, $ftpUser, $ftpPass);
|
||||
if ($ftpPasv) {
|
||||
ftp_pasv($ftpConn, true);
|
||||
}
|
||||
}
|
||||
|
||||
// End a FTP connection
|
||||
function ftpEnd() {
|
||||
global $ftpConn;
|
||||
|
||||
ftp_close($ftpConn);
|
||||
}
|
||||
|
||||
// Get dir/file lists (simple and detailed) from FTP detailed rawlist response
|
||||
function ftpGetList($ftpConn, $directory = '.') {
|
||||
$simpleList = $detailedList = array();
|
||||
// If we have a FTP rawlist to work with
|
||||
if (is_array($rows = @ftp_rawlist($ftpConn, $directory))) {
|
||||
foreach ($rows as $row) {
|
||||
// Split row up by spaces and set keys on $item array
|
||||
$chunks = preg_split("/\s+/", $row);
|
||||
list($item['rights'], $item['number'], $item['user'], $item['group'], $item['size'], $item['month'], $item['day'], $item['time']) = $chunks;
|
||||
// Also set if this is a dir or file
|
||||
$item['type'] = $chunks[0]{0} === 'd' ? 'directory' : 'file';
|
||||
// Splice the array and finally work out $simpleList and $detailedList
|
||||
array_splice($chunks, 0, 8);
|
||||
$detailedList[implode(" ", $chunks)] = $item;
|
||||
$simpleList[] = implode(" ", $chunks);
|
||||
}
|
||||
// Return simple array list and detailed items list also
|
||||
return array('simpleList' => $simpleList, 'detailedList' => $detailedList);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get detailed info on a file from returned info from ftpGetList
|
||||
function ftpGetFileInfo($ftpConn, $directory = '.', $fileName) {
|
||||
// Get both sets of arrays back and get our detailed list
|
||||
$ftpListArrays = ftpGetList($ftpConn, $directory);
|
||||
$detailedList = $ftpListArrays['detailedList'];
|
||||
|
||||
// Now get the file info for our file
|
||||
$fileInfo = $detailedList[$fileName];
|
||||
|
||||
// Return the info
|
||||
return $fileInfo;
|
||||
}
|
||||
|
||||
// Get contents over FTP
|
||||
function ftpGetContents($ftpConn, $filepath, $ftpMode) {
|
||||
// Create temp handler, this type needed for extended char set
|
||||
$tempHandle = fopen('php://temp', 'r+');
|
||||
|
||||
// Get file from FTP assuming that it exists
|
||||
ftp_fget($ftpConn, $tempHandle, $filepath, $ftpMode, 0);
|
||||
|
||||
// Return our content
|
||||
return stream_get_contents($tempHandle, -1, 0);
|
||||
}
|
||||
|
||||
// Write file contents over FTP
|
||||
function ftpWriteFile($ftpConn, $filepath, $contents, $ftpMode) {
|
||||
// Create temp handler, this type needed for extended char set
|
||||
$tempHandle = fopen('php://temp', 'r+');
|
||||
|
||||
// Write contents to handle and rewind head
|
||||
fwrite($tempHandle, $contents);
|
||||
rewind($tempHandle);
|
||||
|
||||
// Write our content and return true/false
|
||||
return ftp_fput($ftpConn, $filepath, $tempHandle, $ftpMode, 0);
|
||||
}
|
||||
|
||||
// Make a new dir over FTP
|
||||
function ftpMkDir($ftpConn, $perms, $dir) {
|
||||
// Create the new dir
|
||||
if (!ftp_mkdir($ftpConn, $dir)) {
|
||||
return false;
|
||||
} else {
|
||||
// Also then set perms (we must be able to do that if we created dir, so can always return true)
|
||||
ftpPerms($ftpConn, $perms, $dir);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Rename a dir/dile over FTP
|
||||
function ftpRename($ftpConn, $oldPath, $newPath) {
|
||||
// Return success status of rename
|
||||
return ftp_rename($ftpConn, $oldPath, $newPath);
|
||||
}
|
||||
|
||||
// Change dir/file perms over FTP
|
||||
function ftpPerms($ftpConn, $perms, $filePath) {
|
||||
// Return success status of perms change
|
||||
return ftp_chmod($ftpConn, $perms, $filePath);
|
||||
}
|
||||
|
||||
// Delete dir/file over FTP
|
||||
function ftpDelete($ftpConn, $type, $path) {
|
||||
if ($type == "file") {
|
||||
// Delete our file and return true/false
|
||||
return ftp_delete($ftpConn, $path);
|
||||
} else {
|
||||
// Delete our dir and return true/false
|
||||
return ftp_rmdir($ftpConn, $path);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -2,6 +2,7 @@
|
||||
if (!isset($ICEcoder['root'])) {
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
include("ftp-control.php");
|
||||
}
|
||||
|
||||
if (!$_SESSION['loggedIn']) {
|
||||
@@ -19,14 +20,14 @@ $t = $text['get-branch'];
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<?php if ($_SESSION['githubDiff']) { ?>
|
||||
<script src="github.js"></script>
|
||||
<script src="github.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<?php ;}; ?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
// Need to get dir contents recursively? (Used by GitHub diff mode)
|
||||
if ($_SESSION['githubDiff']) {
|
||||
if (!isset($ftpSite) && $_SESSION['githubDiff']) {
|
||||
// Function to sort given values alphabetically
|
||||
function alphasort($a, $b) {
|
||||
return strcmp($a->getPathname(), $b->getPathname());
|
||||
@@ -120,19 +121,44 @@ $location = str_replace("|","/",$_GET['location']);
|
||||
if ($location=="/") {$location = "";};
|
||||
|
||||
$dirArray = $filesArray = $finalArray = array();
|
||||
$finalArray = scanDir($scanDir.$location);
|
||||
|
||||
// Get dir/file list over FTP
|
||||
if (isset($ftpSite)) {
|
||||
ftpStart();
|
||||
// Show user warning if no good connection
|
||||
if (!$ftpConn || !$ftpLogin) {
|
||||
die('<script>top.ICEcoder.message("Sorry, no FTP connection to '.$ftpHost.' for user '.$ftpUser.'");</script>');
|
||||
exit;
|
||||
}
|
||||
// Get our simple and detailed lists and close the FTP connection
|
||||
$ftpList = ftpGetList($ftpConn, $ftpRoot.$location);
|
||||
$finalArray = $ftpList['simpleList'];
|
||||
$ftpItems = $ftpList['detailedList'];
|
||||
ftpEnd();
|
||||
// or get local list
|
||||
} else {
|
||||
$finalArray = scanDir($scanDir.$location);
|
||||
}
|
||||
|
||||
foreach($finalArray as $entry) {
|
||||
$canAdd = true;
|
||||
for ($i=0;$i<count($_SESSION['bannedFiles']);$i++) {
|
||||
if($_SESSION['bannedFiles'][$i] != "" && strpos($entry,$_SESSION['bannedFiles'][$i])!==false) {$canAdd = false;}
|
||||
}
|
||||
if ("/".$entry == $ICEcoderDir) {
|
||||
// Only applicable for local dir, ignoring ICEcoder's dir
|
||||
if (!isset($ftpSite) && $docRoot.$iceRoot.$location."/".$entry == $docRoot.$ICEcoderDir) {
|
||||
$canAdd = false;
|
||||
}
|
||||
if ($entry != "." && $entry != ".." && $canAdd) {
|
||||
is_dir($docRoot.$iceRoot.$location."/".$entry)
|
||||
? array_push($dirArray,$location."/".$entry)
|
||||
: array_push($filesArray,$location."/".$entry);
|
||||
if (!isset($ftpSite)) {
|
||||
is_dir($docRoot.$iceRoot.$location."/".$entry)
|
||||
? array_push($dirArray,$location."/".$entry)
|
||||
: array_push($filesArray,$location."/".$entry);
|
||||
} else {
|
||||
$ftpItems[$entry]['type'] == "directory"
|
||||
? array_push($dirArray,$location."/".$entry)
|
||||
: array_push($filesArray,$location."/".$entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
natcasesort($dirArray);
|
||||
@@ -141,7 +167,11 @@ natcasesort($filesArray);
|
||||
$finalArray = array_merge($dirArray,$filesArray);
|
||||
for ($i=0;$i<count($finalArray);$i++) {
|
||||
$fileFolderName = str_replace("\\","/",$finalArray[$i]);
|
||||
$type = is_dir($docRoot.$iceRoot.$fileFolderName) ? "folder" : "file";
|
||||
if (!isset($ftpSite)) {
|
||||
$type = is_dir($docRoot.$iceRoot.$fileFolderName) ? "folder" : "file";
|
||||
} else {
|
||||
$type = $ftpItems[basename($fileFolderName)]['type'] == "directory" ? "folder" : "file";
|
||||
}
|
||||
if ($type=="file") {
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-".pathinfo($docRoot.$iceRoot.$fileFolderName, PATHINFO_EXTENSION);
|
||||
@@ -152,8 +182,34 @@ for ($i=0;$i<count($finalArray);$i++) {
|
||||
}
|
||||
$type == "folder" ? $class = 'pft-directory' : $class = 'pft-file '.strtolower($ext);
|
||||
$loadParam = $type == "folder" ? "true" : "false";
|
||||
echo "<li class=\"".$class."\" draggable=\"false\" ondrag=\"top.ICEcoder.draggingWithKeyTest(event);if(top.ICEcoder.getcMInstance()){top.ICEcoder.editorFocusInstance.indexOf('diff') == -1 ? top.ICEcoder.getcMInstance().focus() : top.ICEcoder.getcMdiffInstance().focus()}\" ondragend=\"top.ICEcoder.dropFile(this)\"><a nohref title=\"$fileFolderName\" onMouseOver=\"parentNode.draggable=true;top.ICEcoder.overFileFolder('$type',this.childNodes[1].id)\" onMouseOut=\"parentNode.draggable=false;top.ICEcoder.overFileFolder('$type','')\" ondragover=\"if(parentNode.nextSibling && parentNode.nextSibling.tagName != 'UL' && top.ICEcoder.thisFileFolderLink != this.childNodes[1].id) {top.ICEcoder.openCloseDir(this,true);}\" onClick=\"if(!event.ctrlKey && !top.ICEcoder.cmdKey) {top.ICEcoder.openCloseDir(this,$loadParam); if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {top.ICEcoder.openFile()}}\" style=\"position: relative; left:-22px\"> <span id=\"".str_replace($docRoot,"",str_replace("/","|",$fileFolderName))."\">".xssClean(basename($fileFolderName),"html")."</span> ";
|
||||
$thisPermVal = $serverType=="Linux" ? substr(sprintf('%o', fileperms($docRoot.$iceRoot.$fileFolderName)), -3) : '';
|
||||
echo "<li class=\"".$class."\" draggable=\"false\" ondrag=\"top.ICEcoder.draggingWithKeyTest(event);if(top.ICEcoder.getcMInstance()){top.ICEcoder.editorFocusInstance.indexOf('diff') == -1 ? top.ICEcoder.getcMInstance().focus() : top.ICEcoder.getcMdiffInstance().focus()}\" ondragend=\"top.ICEcoder.dropFile(this)\"><a nohref title=\"$fileFolderName\" onMouseOver=\"parentNode.draggable=true;top.ICEcoder.overFileFolder('$type',this.childNodes[1].id)\" onMouseOut=\"parentNode.draggable=false;top.ICEcoder.overFileFolder('$type','')\" ".
|
||||
|
||||
(($type == "folder")?"ondragover=\"if(parentNode.nextSibling && parentNode.nextSibling.tagName != 'UL' && top.ICEcoder.thisFileFolderLink != this.childNodes[1].id) {top.ICEcoder.openCloseDir(this,true);}\"":"").
|
||||
|
||||
" onClick=\"if(!event.ctrlKey && !top.ICEcoder.cmdKey) {".
|
||||
|
||||
(($type == "folder")?" top.ICEcoder.openCloseDir(this,$loadParam);":"").
|
||||
|
||||
" if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {top.ICEcoder.openFile()}}\" style=\"position: relative; left:-22px\"> <span id=\"".str_replace($docRoot,"",str_replace("/","|",$fileFolderName))."\">".xssClean(basename($fileFolderName),"html")."</span> ";
|
||||
if (!isset($ftpSite)) {
|
||||
$thisPermVal = $serverType=="Linux" ? substr(sprintf('%o', fileperms($docRoot.$iceRoot.$fileFolderName)), -3) : '';
|
||||
} else {
|
||||
// Work out perms value
|
||||
$thisPermVal = 0;
|
||||
$r = $ftpItems[basename($fileFolderName)]['rights'];
|
||||
// Owner
|
||||
$thisPermVal += substr($r,1,1) == "r" ? 400 : 0;
|
||||
$thisPermVal += substr($r,2,1) == "w" ? 200 : 0;
|
||||
$thisPermVal += substr($r,3,1) == "x" ? 100 : 0;
|
||||
// Group
|
||||
$thisPermVal += substr($r,4,1) == "r" ? 40 : 0;
|
||||
$thisPermVal += substr($r,5,1) == "w" ? 20 : 0;
|
||||
$thisPermVal += substr($r,6,1) == "x" ? 10 : 0;
|
||||
// Public
|
||||
$thisPermVal += substr($r,7,1) == "r" ? 4 : 0;
|
||||
$thisPermVal += substr($r,8,1) == "w" ? 2 : 0;
|
||||
$thisPermVal += substr($r,9,1) == "x" ? 1 : 0;
|
||||
}
|
||||
$permColors = $thisPermVal == 777 ? 'background: #800; color: #eee' : 'color: #888';
|
||||
echo '<span style="'.$permColors.'; font-size: 8px" id="'.str_replace($docRoot,"",str_replace("/","|",$fileFolderName)).'_perms">';
|
||||
echo $thisPermVal;
|
||||
@@ -162,7 +218,7 @@ for ($i=0;$i<count($finalArray);$i++) {
|
||||
|
||||
echo ' </div>';
|
||||
|
||||
if ($_SESSION['githubDiff']) {
|
||||
if (!isset($ftpSite) && $_SESSION['githubDiff']) {
|
||||
// Show the loading screen until we're done comparing files with GitHub
|
||||
echo "<script>setTimeout(function(){top.ICEcoder.showHide('show',top.get('loadingMask'));},4)</script>";
|
||||
$i=0;
|
||||
@@ -188,7 +244,7 @@ if ($_SESSION['githubDiff']) {
|
||||
if (array_search($fileExt,array("gif","jpg","jpeg","png"))!==false) {$finfo = "image";};
|
||||
if (array_search($fileExt,array("doc","docx","ppt","rtf","pdf","zip","tar","gz","swf","asx","asf","midi","mp3","wav","aiff","mov","qt","wmv","mp4","odt","odg","odp"))!==false) {$finfo = "other";};
|
||||
}
|
||||
if (strpos($finfo,"text")===0 || strpos($finfo,"empty")!==false) {
|
||||
if (strpos($finfo,"text")===0 || strpos($finfo, "application/xml")===0 || strpos($finfo,"empty")!==false) {
|
||||
$contents = str_replace("\r","",$contents);
|
||||
};
|
||||
// Establish the blob SHA contents and push name, SHA and type into 3 arrays
|
||||
@@ -401,7 +457,7 @@ if ($_SESSION['githubDiff']) {
|
||||
|
||||
// If we're not in githubDiff mode, show files here
|
||||
if (folderContent.indexOf('<ul')>-1 || folderContent.indexOf('<li')>-1) {
|
||||
<?php if (!$_SESSION['githubDiff']) {echo 'showFiles();';};?>
|
||||
<?php if (isset($ftpSite) || !$_SESSION['githubDiff']) {echo 'showFiles();';};?>
|
||||
} else {
|
||||
<?php
|
||||
$iceGithubLocalPaths = $ICEcoder["githubLocalPaths"];
|
||||
|
||||
@@ -33,4 +33,5 @@ input:focus {
|
||||
box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
}
|
||||
|
||||
.githubManager {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
.githubManager {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
.githubManager .info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help}
|
||||
@@ -168,7 +168,7 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> GitHub manager</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="github-manager.css">
|
||||
<link rel="stylesheet" type="text/css" href="github-manager.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="githubManager">
|
||||
@@ -187,8 +187,8 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
<form id="githubUpdateForm" action="github-manager.php?action=update" method="POST">
|
||||
<table>
|
||||
<tr>
|
||||
<td style="padding-left: 5px"><?php echo $t['Local path'];?></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Remote GitHub path'];?></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Local path'];?> <span class="info" title="<?php echo $t['Slash prefixed'];?>">[?]</span></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Remote GitHub path'];?> <span class="info" title="<?php echo $t['Absolute URL beginning...'];?>">[?]</span></td>
|
||||
</tr>
|
||||
<?php
|
||||
for ($i=0; $i<count($pathsLocal); $i++) {
|
||||
@@ -217,8 +217,8 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
<form id="githubAddForm" action="github-manager.php?action=add" method="POST">
|
||||
<table>
|
||||
<tr>
|
||||
<td style="padding-left: 5px"><?php echo $t['Local path'];?></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Remote GitHub path'];?></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Local path'];?> <span class="info" title="<?php echo $t['Slash prefixed'];?>">[?]</span></td>
|
||||
<td style="padding-left: 5px"><?php echo $t['Remote GitHub path'];?> <span class="info" title="<?php echo $t['Absolute URL beginning...'];?>">[?]</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0 10px 8px 0"><input type="text" name="githubLocalPathNEW" value="" style="width: 250px"></td>
|
||||
|
||||
@@ -23,7 +23,7 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
echo '<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="github.js"></script>
|
||||
<script src="github.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
</body>
|
||||
<script>
|
||||
top.ICEcoder.githubAuthTokenSet = true;
|
||||
@@ -47,8 +47,8 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
echo '<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="github.js"></script>
|
||||
<script src="underscore-min.js"></script>
|
||||
<script src="github.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<script src="underscore-min.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
</body>
|
||||
<script>
|
||||
// Start our github object, establish this repo & file path
|
||||
@@ -153,8 +153,8 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> GitHub commit files</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<script src="github.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="github.css">
|
||||
<script src="github.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
<link rel="stylesheet" type="text/css" href="github.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="githubAction">
|
||||
@@ -267,7 +267,7 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
?>
|
||||
<script>
|
||||
top.ICEcoder.showHide('hide',top.get('blackMask'));
|
||||
top.ICEcoder.message("Pull actions not yet available. Will be in ICEcoder v4.4");
|
||||
top.ICEcoder.message("Pull actions not yet available. Will be in available soon!");
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
@@ -6,8 +6,10 @@ if(strpos(str_replace("\\","/",dirname(__FILE__)),"tmp/oldVersion") !== false) {
|
||||
|
||||
// Load common functions
|
||||
include_once(dirname(__FILE__)."/settings-common.php");
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['headers'];
|
||||
if (isset($_SESSION['text'])) {
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['headers'];
|
||||
}
|
||||
|
||||
// CSRF synchronizer token pattern, 32 chars
|
||||
if (!isset($_SESSION["csrf"])) {
|
||||
@@ -31,5 +33,8 @@ if (!headers_sent()) {
|
||||
header("X-XSS-Protection: 1; mode=block"); // Turn on IE8-9 XSS prevention tools
|
||||
// header("X-Content-Security-Policy: allow 'self'"); // Only allows JS on same domain & not inline to run
|
||||
header("X-Content-Type-Options: nosniff"); // Prevent MIME based attacks
|
||||
header('Cache-Control: no-cache, no-store, must-revalidate'); // Caching over HTTP 1.1 covered
|
||||
header('Pragma: no-cache'); // Caching over HTTP 1.0 covered
|
||||
header('Expires: 0'); // Caching over Proxies covered
|
||||
}
|
||||
?>
|
||||
@@ -30,4 +30,4 @@ a {color: #fff; text-decoration: none}
|
||||
.key {display: inline-block; width: 175px; text-align: right; margin-right: 5px; float: left}
|
||||
.key .plus {color: #888}
|
||||
.shortcut {display: inline-block; width: 195px; color: #888; margin-left: 5px; float: left}
|
||||
.info {color: #bbb; cursor: help}
|
||||
.info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help}
|
||||
19
lib/help.php
19
lib/help.php
@@ -10,7 +10,7 @@ $t = $text['help'];
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> help</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="help.css">
|
||||
<link rel="stylesheet" type="text/css" href="help.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="help">
|
||||
@@ -39,13 +39,11 @@ $t = $text['help'];
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> s</span> <span class="shortcut"><?php echo $t['Wrap with span'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> p</span> <span class="shortcut"><?php echo $t['Wrap unwrap p'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> a</span> <span class="shortcut"><?php echo $t['Wrap unwrap a'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> b</span> <span class="shortcut"><?php echo $t['Wrap unwrap b'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> i</span> <span class="shortcut"><?php echo $t['Wrap unwrap i'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> g</span> <span class="shortcut"><?php echo $t['Wrap unwrap strong'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> e</span> <span class="shortcut"><?php echo $t['Wrap unwrap em'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> 8</span> <span class="shortcut"><?php echo $t['Wrap unwrap li'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> 1, 2 <?php echo $t['or'];?> 3</span> <span class="shortcut"><?php echo $t['Wrap unwrap h1...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> Enter</span> <span class="shortcut"><?php echo $t['End line with...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> Enter</span> <span class="shortcut"><?php echo $t['End line with...'];?></span><br><br>
|
||||
|
||||
<h2><?php echo $t['On Tabs'];?></h2>
|
||||
<span class="key"><?php echo $t['Middle click'];?></span> <span class="shortcut"><?php echo $t['Close tab'];?></span><br>
|
||||
</div>
|
||||
|
||||
<div style="display: inline-block; width: 385px">
|
||||
@@ -66,17 +64,16 @@ $t = $text['help'];
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> -</span> <span class="shortcut"><?php echo $t['Close current tab'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> o</span> <span class="shortcut"><?php echo $t['Open file prompt'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> f</span> <span class="shortcut"><?php echo $t['Find'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> g</span> <span class="shortcut"><?php echo $t['Focus on Go...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> g</span> <span class="shortcut"><?php echo $t['Previous'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> l</span> <span class="shortcut"><?php echo $t['Focus on Go...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> s</span> <span class="shortcut"><?php echo $t['Save'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Shift <span class="plus">+</span> s</span> <span class="shortcut"><?php echo $t['Save as'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Enter</span> <span class="shortcut"><?php echo $t['View webpage'];?> <span class="info" title="Popups need to be enabled">[?]</span></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> `</span> <span class="shortcut"><?php echo $t['Contract expand file...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> .</span> <span class="shortcut"><?php echo $t['Fold unfold current...'];?></span><br>
|
||||
<span class="key"><?php echo $isMac ? "Cmd" : "Ctrl";?> <span class="plus">+</span> Alt <span class="plus">+</span> ← / →</span> <span class="shortcut">Focus on file manager / content<!--<?php echo $t['Refocus on document'];?>//--></span><br>
|
||||
<span class="key">Esc</span> <span class="shortcut"><?php echo $t['Cancel tasks'];?></span><br><br>
|
||||
<span class="key">Esc</span> <span class="shortcut"><?php echo $t['Cancel tasks'];?></span><br>
|
||||
|
||||
<h2><?php echo $t['On Tabs'];?></h2>
|
||||
<span class="key"><?php echo $t['Middle click'];?></span> <span class="shortcut"><?php echo $t['Close tab'];?></span><br>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
@@ -22,7 +22,7 @@ body {overflow: hidden;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
background-color: #222;
|
||||
background-color: #1d1d1b;
|
||||
}
|
||||
|
||||
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
|
||||
@@ -31,6 +31,8 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.blackMask {position: fixed; display: table; width: 100%; height: 100%; top: 0; left: 0; visibility: hidden; background-color: rgba(0,0,0,0.8); text-align: center; z-index: 100}
|
||||
.blackMask .popupVCenter {#position: absolute; display: table-cell; #top: 50%; vertical-align: middle; text-align: center}
|
||||
.popupVCenter .popup {#position: relative; #top: -50%; text-align: center; color: #fff; font-size: 10px}
|
||||
.floatingContainer {position: absolute; top: 0; left: 0; width: 55px; height: 55px; visibility: hidden; border: solid 1px #444; image-rendering: pixelated}
|
||||
.floatingContainer:before {position: absolute; display: inline-block; width: 3px; height: 3px; left: 25px; top: 25px; content: ''; border: solid 1px #b00}
|
||||
.whiteGlow {box-shadow: 0 0 8px 2px rgba(255,255,255,0.6)}
|
||||
|
||||
.spinner {width: 50px; height: 50px; margin: 20px auto; background: #fff;
|
||||
@@ -79,7 +81,7 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.files .options .optionsList a:hover {color: #fff; cursor: pointer}
|
||||
.files input:focus, .findReplace input:focus, .findReplace select:focus, .password:focus {outline: 0; box-shadow: 0 0 10px 1px rgba(0,198,255,0.7)}
|
||||
.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 .button:hover {background-color: #1d1d1b; color: #eee}
|
||||
.files .frame {display: inline-block; width: 250px; margin-top: 24px}
|
||||
.files .serverMessage {position: absolute; display: inline-block; width: 450px; bottom: 0; background-color: rgba(255,255,255,0.8); font-size: 10px; padding: 4px 12px 1px 12px; opacity: 0;
|
||||
transition: opacity 0.2s;
|
||||
@@ -88,7 +90,7 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
|
||||
.editor {position: absolute; display: inline-block; top: 0; left: 15px; width: 2400px}
|
||||
.editor .tabsBar {display: inline-block; height: 22px; width: 2400px; margin-top: 20px; padding-left: 53px; background: #fff}
|
||||
.tabsBar .tab {position: absolute; display: none; height: 15px; padding: 5px 8px 2px 9px; border-right: 1px solid #ddd; font-size: 10px; color: #fff; white-space: nowrap; overflow: hidden; cursor: pointer; z-index: 1;
|
||||
.tabsBar .tab {position: absolute; display: none; height: 15px; padding: 5px 8px 2px 9px; border-right: 1px solid #ddd; color: #fff; white-space: nowrap; overflow: hidden; cursor: pointer; z-index: 1;
|
||||
transition: width 0.15s ease-in-out;
|
||||
transition: left 0.15s ease-in-out;
|
||||
}
|
||||
@@ -107,7 +109,7 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.tabsBar .newTab {position: absolute; display: inline-block; height: 15px; padding: 4px 7px 3px 7px; background: #ddd; cursor: pointer; z-index: 0;
|
||||
transition: left 0.15s ease-in-out;
|
||||
}
|
||||
.editor .findBar {display: inline-block; height: 28px; width: 2400px; color: #fff; background-color: #161612}
|
||||
.editor .findBar {display: inline-block; height: 28px; width: 2400px; color: #fff; background-color: #1d1d1b}
|
||||
.findBar .findReplace {position: absolute; padding-top: 2px; z-index: 1}
|
||||
.findReplace .selectWrapper {position: relative; display: inline-block}
|
||||
.findReplace .selectWrapper select {position: relative; padding: 1px; border: 0; background: url('../images/select-arrow.gif') no-repeat right #444; color: #fff; font-size: 10px; height: 16px;
|
||||
@@ -133,8 +135,9 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.findBar .bug {position: fixed; display: inline-block; width: 16px; height: 16px; right: 16px; top: 48px; background: url('../images/bug-reporting-icons.png') 0 0 no-repeat; cursor: pointer; background-position: 0 0}
|
||||
.editor .code {position: relative; display: inline-block; top: 28px; width: 600px; height: 600px; visibility: hidden}
|
||||
|
||||
.footer {position: fixed; display: inline-block; width: 100%; height: 30px; bottom: 0; background-color: rgba(0,0,0,0.7); left: 0; z-index: 1}
|
||||
.footer {position: fixed; display: inline-block; width: 100%; height: 30px; bottom: 0; background-color: rgba(0,0,0,0.15); left: 0; z-index: 1}
|
||||
.footer .nesting {position: absolute; display: inline-block; padding: 5px; margin-top: 10px; left: 260px; border-radius: 5px; background-color: #0b0; cursor: default}
|
||||
.footer .versionsDisplay {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; font-weight: bold; cursor: pointer}
|
||||
.footer .splitPaneControls {position: absolute; display: inline-block; width: 50px; text-align: center; padding: 6px}
|
||||
.footer .splitPaneControls .off {display: inline-block; width: 18px; height: 18px; margin-right: 10px; background: url('../images/split-pane-controls.gif') no-repeat 0 0; cursor: pointer}
|
||||
.footer .splitPaneControls .on {display: inline-block; width: 19px; height: 18px; background: url('../images/split-pane-controls.gif') no-repeat -18px 0; cursor: pointer}
|
||||
@@ -151,12 +154,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 .trialBarContainer {display: inline-block; width: 170px; height: 8px; color: #bbb; background: #0b0b0b; text-align: right; margin-bottom: 40px}
|
||||
.screenCenter .trialBarRemaining {display: inline-block; width: 170px; height: 8px; background: rgba(0,198,255,0.7); box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
transition: width 1s ease-in-out;
|
||||
}
|
||||
.screenCenter .trialBarText {text-align: center}
|
||||
.screenCenter .trialBarText a {color: #fff; text-decoration: none}
|
||||
.screenCenter .text {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888}
|
||||
.screenCenter .text input {margin-top: 1px}
|
||||
.screenCenter .text a {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888; text-decoration: none}
|
||||
|
||||
932
lib/ice-coder.js
932
lib/ice-coder.js
File diff suppressed because it is too large
Load Diff
298
lib/ice-coder.min.js
vendored
298
lib/ice-coder.min.js
vendored
@@ -1,152 +1,170 @@
|
||||
var get=function(a){return top.document.getElementById(a)},ICEcoder={filesW:250,minFilesW:14,maxFilesW:250,selectedTab:0,savedPoints:[],canSwitchTabs:!0,openFiles:[],openFileMDTs:[],cMInstances:[],nextcMInstance:1,selectedFiles:[],findMode:!1,scrollbarVisible:!1,lockedNav:!0,mouseDown:!1,draggingFilesW:!1,draggingTab:!1,draggingWithKey:!1,tabLeftPos:[],tabBGcurrent:"#141414",tabBGselected:"#49d",tabBGopen:"#c3c3c3",tabBGnormal:"transparent",tabFGcurrent:"#fff",tabFGselected:"#fff",tabFGopenFile:"#000",
|
||||
tabFGnormalFile:"#eee",tabFGnormalTab:"#888",serverQueueItems:[],previewWindow:!1,previewWindowLoading:!1,pluginIntervalRefs:[],overPopup:!1,cmdKey:!1,fmReady:!1,bugReportStatus:"off",bugReportPath:"",bugFilesSizesSeen:[],bugFilesSizesActual:[],githubDiff:!1,githubAuthTokenSet:!1,splitPane:!1,renderLineStyle:[],renderPaneShiftAmount:0,debounce:"",editorFocusInstance:"",ready:!1,initAliases:function(){for(var a="header files fileOptions optionsFile optionsEdit optionsSource optionsHelp filesFrame editor tabsBar findBar content footer nestValid splitPaneControls charDisplay byteDisplay".split(" "),
|
||||
b=0;b<a.length;b++)ICEcoder[a[b]]=top.get(a[b])},init:function(){ICEcoder.setLayout();top.ICEcoder.overFileFolder("folder","|");top.ICEcoder.selectFileFolder("init");top.filesFrame.contentWindow.focus();top.ICEcoder.showHide("hide",top.get("loadingMask"));top.ICEcoder.autoOpenInt=setInterval(function(){top.ICEcoder.fmReady&&(top.ICEcoder.openLastFiles&&top.ICEcoder.autoOpenFiles(),clearInterval(top.ICEcoder.autoOpenInt))},4);setInterval(ICEcoder.updateNestingIndicator,30);top.ICEcoder.startBugChecking();
|
||||
top.ICEcoder.ready=!0},setLayout:function(a){var b,c;b=window.innerWidth;c=window.innerHeight;this.header.style.width=this.tabsBar.style.width=this.findBar.style.width=b+"px";this.files.style.width=this.editor.style.left=this.filesW+"px";this.optionsFile.style.width=this.optionsEdit.style.width=this.optionsSource.style.width=this.optionsHelp.style.width=this.filesW-60+"px";this.filesFrame.style.height=c-25-35+"px";this.nestValid.style.left=this.filesW+10+"px";this.splitPaneControls.style.left=parseInt((b-
|
||||
this.filesW)/2,10)-25-4+this.filesW+"px";top.ICEcoder.setTabWidths();a||(this.editor.style.width=ICEcoder.content.style.width=b-this.filesW+"px",ICEcoder.content.style.height=c-25-21-28-26+"px",setTimeout(function(){for(var a=0;a<top.ICEcoder.openFiles.length;a++)top.ICEcoder.splitPane?(top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]+"diff"].setSize("50%",top.ICEcoder.content.style.height),top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]].setSize("50%",top.ICEcoder.content.style.height)):
|
||||
(top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]].setSize("100%",top.ICEcoder.content.style.height),top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]+"diff"].setSize("0",top.ICEcoder.content.style.height));top.ICEcoder.splitPane?top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.right=top.ICEcoder.scrollBarVisible?parseInt(parseInt(ICEcoder.content.style.width,10)/2,10)+17+"px":parseInt(parseInt(ICEcoder.content.style.width,10)/2,10)+"px":
|
||||
top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.right=top.ICEcoder.scrollBarVisible?"17px":"0"},4))},setSplitPane:function(a){top.ICEcoder.splitPane="on"==a?!0:!1;top.get("splitPaneControlsOff").style.opacity=top.ICEcoder.splitPane?.5:1;top.get("splitPaneControlsOn").style.opacity=top.ICEcoder.splitPane?1:.5;top.ICEcoder.setLayout()},changeFilesW:function(a){ICEcoder.lockedNav&&ICEcoder.filesW!=ICEcoder.minFilesW||("undefined"!=typeof ICEcoder.changeFilesInt&&clearInterval(ICEcoder.changeFilesInt),
|
||||
var get=function(a){return top.document.getElementById(a)},ICEcoder={filesW:250,minFilesW:14,maxFilesW:250,selectedTab:0,savedPoints:[],canSwitchTabs:!0,openFiles:[],openFileMDTs:[],openFileVersions:[],cMInstances:[],nextcMInstance:1,selectedFiles:[],findMode:!1,scrollbarVisible:!1,mouseDown:!1,draggingFilesW:!1,draggingTab:!1,draggingWithKey:!1,tabLeftPos:[],tabBGcurrent:"#1d1d1b",tabBGselected:"#49d",tabBGopen:"#c3c3c3",tabBGnormal:"transparent",tabFGcurrent:"#fff",tabFGselected:"#fff",tabFGopenFile:"#000",
|
||||
tabFGnormalFile:"#eee",tabFGnormalTab:"#888",serverQueueItems:[],previewWindow:!1,previewWindowLoading:!1,pluginIntervalRefs:[],overPopup:!1,cmdKey:!1,endTagReplaceData:[],fmReady:!1,bugReportStatus:"off",bugReportPath:"",bugFilesSizesSeen:[],bugFilesSizesActual:[],githubDiff:!1,githubAuthTokenSet:!1,splitPane:!1,renderLineStyle:[],renderPaneShiftAmount:0,debounce:"",editorFocusInstance:"",ready:!1,initAliases:function(){for(var a="header files fileOptions optionsFile optionsEdit optionsSource optionsHelp filesFrame editor tabsBar findBar content footer nestValid versionsDisplay splitPaneControls charDisplay byteDisplay".split(" "),
|
||||
b=0;b<a.length;b++)ICEcoder[a[b]]=top.get(a[b])},init:function(){top.ICEcoder.lockedNav||(top.ICEcoder.filesW=ICEcoder.minFilesW);ICEcoder.setLayout();top.ICEcoder.overFileFolder("folder","|");top.ICEcoder.selectFileFolder("init");top.ICEcoder.filesFrame.contentWindow.focus();top.ICEcoder.showHide("hide",top.get("loadingMask"));top.ICEcoder.autoOpenInt=setInterval(function(){top.ICEcoder.fmReady&&(top.ICEcoder.openLastFiles&&setTimeout(function(){top.ICEcoder.autoOpenFiles()},200),clearInterval(top.ICEcoder.autoOpenInt))},
|
||||
4);setInterval(ICEcoder.updateNestingIndicator,30);top.ICEcoder.startBugChecking();top.ICEcoder.ready=!0},setLayout:function(a){var b,c;b=window.innerWidth;c=window.innerHeight;this.header.style.width=this.tabsBar.style.width=this.findBar.style.width=b+"px";this.files.style.width=this.editor.style.left=this.filesW+"px";this.optionsFile.style.width=this.optionsEdit.style.width=this.optionsSource.style.width=this.optionsHelp.style.width=this.filesW-60+"px";this.filesFrame.style.height=c-25-35+"px";
|
||||
this.nestValid.style.left=this.filesW+10+"px";this.versionsDisplay.style.left=this.filesW+25+"px";this.splitPaneControls.style.left=parseInt((b-this.filesW)/2,10)-25-4+this.filesW+"px";top.ICEcoder.setTabWidths();a||(this.editor.style.width=ICEcoder.content.style.width=b-this.filesW+"px",ICEcoder.content.style.height=c-25-21-28-26+"px",setTimeout(function(){for(var a=0;a<top.ICEcoder.openFiles.length;a++)top.ICEcoder.splitPane?(top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]+"diff"].setSize("50%",
|
||||
top.ICEcoder.content.style.height),top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]].setSize("50%",top.ICEcoder.content.style.height)):(top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]].setSize("100%",top.ICEcoder.content.style.height),top.ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[a]+"diff"].setSize("0",top.ICEcoder.content.style.height));top.ICEcoder.splitPane?top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.right=top.ICEcoder.scrollBarVisible?
|
||||
parseInt(parseInt(ICEcoder.content.style.width,10)/2,10)+17+"px":parseInt(parseInt(ICEcoder.content.style.width,10)/2,10)+"px":top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.right=top.ICEcoder.scrollBarVisible?"17px":"0"},4))},setSplitPane:function(a){var b;top.ICEcoder.splitPane="on"==a?!0:!1;top.get("splitPaneControlsOff").style.opacity=top.ICEcoder.splitPane?.5:1;top.get("splitPaneControlsOn").style.opacity=top.ICEcoder.splitPane?1:.5;top.ICEcoder.setLayout();if(top.ICEcoder.splitPane)top.ICEcoder.updateDiffs(),
|
||||
b=top.ICEcoder.getcMInstance(),top.ICEcoder.cMonScroll(b,"cM"+ICEcoder.cMInstances[ICEcoder.selectedTab-1]);else{b=top.ICEcoder.getcMInstance();a=top.ICEcoder.getcMdiffInstance();cMmarks=b.getAllMarks();for(b=0;b<cMmarks.length;b++)cMmarks[b].clear();cMdiffMarks=a.getAllMarks();for(b=0;b<cMdiffMarks.length;b++)cMdiffMarks[b].clear()}},changeFilesW:function(a){ICEcoder.lockedNav&&ICEcoder.filesW!=ICEcoder.minFilesW||("undefined"!=typeof ICEcoder.changeFilesInt&&clearInterval(ICEcoder.changeFilesInt),
|
||||
ICEcoder.changeFilesInt=setInterval(function(){ICEcoder.changeFilesWStep(a)},10))},changeFilesWStep:function(a){"expand"==a?ICEcoder.filesW<ICEcoder.maxFilesW-1?ICEcoder.filesW+=Math.ceil((ICEcoder.maxFilesW-ICEcoder.filesW)/2):ICEcoder.filesW=ICEcoder.maxFilesW:ICEcoder.filesW>ICEcoder.minFilesW+1?ICEcoder.filesW-=Math.ceil((ICEcoder.filesW-ICEcoder.minFilesW)/2):ICEcoder.filesW=ICEcoder.minFilesW;("expand"==a&&ICEcoder.filesW==ICEcoder.maxFilesW||"contract"==a&&ICEcoder.filesW==ICEcoder.minFilesW)&&
|
||||
clearInterval(ICEcoder.changeFilesInt);ICEcoder.setLayout()},canResizeFilesW:function(){top.ICEcoder.ready&&"w-resize"==top.document.body.style.cursor?top.ICEcoder.mouseDown&&(top.ICEcoder.filesW=top.ICEcoder.maxFilesW=250<=top.ICEcoder.mouseX&&400>=top.ICEcoder.mouseX?top.ICEcoder.mouseX:250>top.ICEcoder.mouseX?250:400,top.ICEcoder.files.style.width=top.ICEcoder.filesFrame.style.width=top.ICEcoder.filesW+"px",top.ICEcoder.setLayout(),top.ICEcoder.draggingFilesW=!0):top.ICEcoder.draggingFilesW=!1},
|
||||
lockUnlockNav:function(){var a;a=top.filesFrame.contentWindow.document.getElementById("fmLock");ICEcoder.lockedNav=!ICEcoder.lockedNav;a.style.backgroundPosition=ICEcoder.lockedNav?"0 0":"-16px 0"},showHidePlugins:function(a){get("plugins").style.width="show"==a?"55px":"3px";get("plugins").style.background="show"==a?"#333":"transparent";"show"==a&&ICEcoder.changeFilesW("expand")},cMonFocus:function(a,b){top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay();
|
||||
lockUnlockNav:function(){var a;a=top.ICEcoder.filesFrame.contentWindow.document.getElementById("fmLock");ICEcoder.lockedNav=!ICEcoder.lockedNav;a.style.backgroundPosition=ICEcoder.lockedNav?"0 0":"-16px 0"},showHidePlugins:function(a){get("plugins").style.width="show"==a?"55px":"3px";get("plugins").style.background="show"==a?"#333":"transparent";"show"==a&&ICEcoder.changeFilesW("expand")},cMonFocus:function(a,b){top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay();
|
||||
top.ICEcoder.editorFocusInstance=b;top.ICEcoder.getCaretPosition()},cMonBlur:function(a,b){},cMonKeyUp:function(a,b){"undefined"!=typeof top.doFind&&clearInterval(top.doFind);top.doFind=setTimeout(function(){top.ICEcoder.findReplace(top.get("find").value,!0,!1)},500);top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay()},cMonCursorActivity:function(a,b){var c;top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay();
|
||||
a.removeLineClass(top.ICEcoder["cMActiveLine"+b],"background");a.getCursor("start").line==a.getCursor().line&&(top.ICEcoder["cMActiveLine"+b]=a.addLineClass(a.getCursor().line,"background","cm-s-activeLine"));"CSS"==top.ICEcoder.caretLocType&&top.ICEcoder.cssColorPreview();c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.prevLineDiff:top.ICEcoder.prevLine;c!=a.getCursor().line&&a.getLine(c)&&0<a.getLine(c).length&&0==a.getLine(c).replace(/\s/g,"").length&&a.replaceRange("",{line:c,
|
||||
ch:0},{line:c,ch:1E6});setTimeout(function(){for(var c,f=0;f<top.ICEcoder.renderLineStyle.length;f++){c=!1;if("diff"!=top.ICEcoder.renderLineStyle[f][0]&&-1==b.indexOf("diff")||"diff"==top.ICEcoder.renderLineStyle[f][0]&&-1<b.indexOf("diff"))c=!0;c&&a.getCursor().line+1==top.ICEcoder.renderLineStyle[f][1]?a.setOption("cursorHeight",a.defaultTextHeight()/a.lineInfo(a.getCursor().line).handle.height):a.setOption("cursorHeight",1)}},0)},cMonChange:function(a,b,c){var d,f;top.ICEcoder.loadingFile||top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);
|
||||
setTimeout(function(){top.ICEcoder.scrollBarVisible=a.getScrollInfo().height>a.getScrollInfo().clientHeight;top.ICEcoder.setLayout()},0);top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay();top.ICEcoder.updateNestingIndicator();top.ICEcoder.findMode&&(top.ICEcoder.results.splice(top.ICEcoder.findResult,1),top.get("results").innerHTML=top.ICEcoder.results.length+" "+top.t.results,top.ICEcoder.findMode=!1);if(b=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-
|
||||
1]){d=b.substr(b.lastIndexOf("/")+1);f=d.substr(d.lastIndexOf(".")+1);for(var e=c.from.line;e<c.from.line+c.text.length;e++)top.ICEcoder.content.contentWindow.CodeMirror.doFold(-1<a.getLine(e).indexOf("{")?"brace":"xml",null,"+","-",!0)(a,e);if("}"==c.text[0]||c.removed&&"}"==c.removed[0])for(cursor=a.getSearchCursor("{",a.getCursor(),!1),cursor.findPrevious(),e=cursor.from().line;e<a.getCursor().line;e++)top.ICEcoder.content.contentWindow.CodeMirror.doFold(-1<a.getLine(e).indexOf("{")?"brace":"xml",
|
||||
null,"+","-",!0)(a,e)}top.ICEcoder.splitPane&&top.ICEcoder.updateDiffs();b&&top.ICEcoder.previewWindow.location&&top.ICEcoder.updatePreviewWindow(a,b,d,f);top.ICEcoder.indicateChanges()},cMonScroll:function(a,b){var c,d;c=top.ICEcoder.getcMInstance();d=top.ICEcoder.getcMdiffInstance();c=-1<b.indexOf("diff")?c:d;top.ICEcoder.mouseDown=!1;c.scrollTo(a.getScrollInfo().left,a.getScrollInfo().top)},cMonInputRead:function(a,b){"keypress"==top.ICEcoder.autoComplete&&top.ICEcoder.codeAssist&&(clearTimeout(top.ICEcoder.debounce),
|
||||
a.state.completionActive||(top.ICEcoder.debounce=setTimeout(function(){CodeMirror.commands.autocomplete(a)},200)))},cMonRenderLine:function(a,b,c,d){for(var f,e=0;e<top.ICEcoder.renderLineStyle.length;e++){f=!1;if("diff"!=top.ICEcoder.renderLineStyle[e][0]&&-1==b.indexOf("diff")||"diff"==top.ICEcoder.renderLineStyle[e][0]&&-1<b.indexOf("diff"))f=!0;f&&a.lineInfo(c).line+1==top.ICEcoder.renderLineStyle[e][1]&&(d.style[top.ICEcoder.renderLineStyle[e][2]]=top.ICEcoder.renderLineStyle[e][3])}},updateDiffs:function(){var a,
|
||||
b,c,d,f;top.ICEcoder.renderLineStyle=[];top.ICEcoder.renderPaneShiftAmount=0;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.getcMdiffInstance();c=difflib.stringAsLines(a.getValue());d=difflib.stringAsLines(b.getValue());c=(new difflib.SequenceMatcher(c,d)).get_opcodes();f=a.getAllMarks();for(d=0;d<f.length;d++)f[d].clear();f=b.getAllMarks();for(d=0;d<f.length;d++)f[d].clear();for(d=0;d<c.length;d++)if("equal"!==c[d][0]){if("replace"==c[d][0]){f=(c[d][4]-c[d][2]+1+top.ICEcoder.renderPaneShiftAmount)*
|
||||
a.defaultTextHeight();f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",f+"px"]);for(var e=0;e<c[d][2]-c[d][1];e++)f=top.ICEcoder.findStringDiffs(a.getLine(c[d][1]+e),b.getLine(c[d][3]+e)),a.markText({line:c[d][1]+e,ch:0},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:f[0]},{className:"diffGreyLighter"}),a.markText({line:c[d][1]+e,ch:f[0]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:f[0]+f[1]},{className:"diffGrey"}),a.markText({line:c[d][1]+e,ch:f[0]+
|
||||
f[1]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:1E6},{className:"diffGreyLighter"})}else a.markText({line:c[d][1],ch:0},{line:c[d][2]-1,ch:1E6},{className:"diffGreen"});"replace"!=c[d][0]&&c[d][1]==c[d][2]&&(top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",(c[d][4]-c[d][3]+1)*a.defaultTextHeight()+"px"]),a.markText({line:c[d][2]-1,ch:0},{line:c[d][2]-1,ch:1E6},{className:"diffNone"}));if("replace"==c[d][0])for(f=(c[d][2]-c[d][4]+1-top.ICEcoder.renderPaneShiftAmount)*a.defaultTextHeight(),
|
||||
f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",f+"px"]),e=0;e<c[d][4]-c[d][3];e++)f=top.ICEcoder.findStringDiffs(a.getLine(c[d][1]+e),b.getLine(c[d][3]+e)),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,ch:0},{line:c[d][3]+e,ch:f[0]},{className:"diffGreyLighter"}),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,ch:f[0]},{line:c[d][3]+e,ch:f[0]+f[2]},{className:"diffGrey"}),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,
|
||||
ch:f[0]+f[2]},{line:c[d][3]+e,ch:1E6},{className:"diffGreyLighter"});else b.markText({line:c[d][3],ch:0},{line:c[d][4]-1,ch:1E6},{className:"diffRed"});"replace"!=c[d][0]&&c[d][3]==c[d][4]&&(top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",(c[d][2]-c[d][1]+1)*a.defaultTextHeight()+"px"]),b.markText({line:c[d][4]-1,ch:0},{line:c[d][4]-1,ch:1E6},{className:"diffNone"}));top.ICEcoder.renderPaneShiftAmount=c[d][2]-c[d][4]}},findStringDiffs:function(a,b){"undefined"==typeof a&&(a="");"undefined"==
|
||||
typeof b&&(b="");for(var c=0,d=a.length,f=b.length;a[c]&&a[c]==b[c];c++);for(;d>c&f>c&a[d-1]==b[f-1];d--)f--;return[c,d-c,f-c]},updatePreviewWindow:function(a,b,c,d){top.ICEcoder.previewWindow.location.pathname==b?-1<["htm","html","txt"].indexOf(d)?top.ICEcoder.previewWindow.document.documentElement.innerHTML=a.getValue():-1<["md"].indexOf(d)&&(top.ICEcoder.previewWindow.document.documentElement.innerHTML=mmd(a.getValue())):-1<["css"].indexOf(d)&&-1<top.ICEcoder.previewWindow.document.documentElement.innerHTML.indexOf(c)&&
|
||||
(a=a.getValue(),c=document.createElement("style"),c.type="text/css",c.id="ICEcoder"+b.replace(/\//g,"_"),c.styleSheet?c.styleSheet.cssText=a:c.appendChild(document.createTextNode(a)),top.ICEcoder.previewWindow.document.getElementById(c.id)&&top.ICEcoder.previewWindow.document.documentElement.removeChild(top.ICEcoder.previewWindow.document.getElementById(c.id)),top.ICEcoder.previewWindow.document.documentElement.appendChild(c));try{top.ICEcoder.doPesticide()}catch(f){}try{top.ICEcoder.doStatsJS("update")}catch(e){}},
|
||||
contentCleanUp:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getValue();b=b.replace(/<ICEcoder:\/:textarea>/g,"</textarea>");a.setValue(b);a.clearHistory();top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration()},undo:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a).undo()},redo:function(){var a,b;a=ICEcoder.getcMInstance();
|
||||
b=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a).redo()},indent:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;"more"==a?top.ICEcoder.content.contentWindow.CodeMirror.commands.indentMore(b):top.ICEcoder.content.contentWindow.CodeMirror.commands.indentLess(b)},moveLines:function(a){var b,c,d,f,e,g,k;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?
|
||||
c:b;f=d.getCursor("start");e=d.getCursor("end");"up"==a&&0<f.line&&(g=f.line-1);"down"==a&&e.line<d.lineCount()-1&&(g=e.line+1);isNaN(g)||(k=d.getLine(g),d.operation(function(){if("up"==a)for(var b=f.line;b<=e.line;b++)d.replaceRange(d.getLine(b),{line:b-1,ch:0},{line:b-1,ch:1E6});else for(b=e.line;b>=f.line;b--)d.replaceRange(d.getLine(b),{line:b+1,ch:0},{line:b+1,ch:1E6});d.replaceRange(k,{line:"up"==a?e.line:f.line,ch:0},{line:"up"==a?e.line:f.line,ch:1E6});d.setSelection({line:f.line+("up"==a?
|
||||
-1:1),ch:f.ch},{line:e.line+("up"==a?-1:1),ch:e.ch})}))},highlightLine:function(a){var b,c;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;b.setSelection({line:a,ch:0},{line:a,ch:b.lineInfo(a).text.length})},focus:function(a){var b,c;/iPhone|iPad|iPod/i.test(navigator.userAgent)||(b=top.ICEcoder.getcMInstance(),c=top.ICEcoder.getcMdiffInstance(),(a=a?c:b)&&a.focus())},goToLine:function(a){var b,c;b=ICEcoder.getcMInstance();
|
||||
c=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b).setCursor(a?a-1:top.get("goToLineNo").value-1);top.ICEcoder.focus();return!1},lineCommentToggle:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().ch;c=a.getCursor().line;d=a.getLine(c);ICEcoder.lineCommentToggleSub(a,b,c,d,d.length)},tagWrapper:function(a){var b,c,d,f,e;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();
|
||||
d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;b=a;"div"==a?(f=d.getCursor("start").line,e=d.getCursor().line,d.operation(function(){d.replaceSelection("<div>\n"+d.getSelection()+"\n</div>","around");for(var a=f+1;a<=e+1;a++)d.indentLine(a);d.indentLine(e+2,"prev");d.indentLine(e+2,"subtract")})):-1<"p a b i strong em h1 h2 h3 li".split(" ").indexOf(a)&&d.getSelection().substr(0,a.length+1)=="<"+b&&d.getSelection().substr(-(a.length+3))=="</"+a+">"?d.replaceSelection(d.getSelection().substr(d.getSelection().indexOf(">")+
|
||||
1,d.getSelection().length-d.getSelection().indexOf(">")-1-a.length-3),"around"):("a"==a&&(b='a href=""'),d.replaceSelection("<"+b+">"+d.getSelection()+"</"+a+">","around"),"a"==a&&d.setCursor({line:d.getCursor("start").line,ch:d.getCursor("start").ch+9}))},addLineBreakAtEnd:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||(a=b.getCursor().line);b.replaceRange(b.getLine(a)+"<br>",{line:a,ch:0},{line:a,ch:1E6})},
|
||||
insertLineBefore:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||(a=d.getCursor().line);d.operation(function(){d.replaceRange("\n"+d.getLine(a),{line:a,ch:0},{line:a,ch:1E6});d.setCursor({line:d.getCursor().line-1,ch:0});d.execCommand("indentAuto")})},insertLineAfter:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||
|
||||
(a=d.getCursor().line);d.operation(function(){d.replaceRange(d.getLine(a)+"\n",{line:a,ch:0},{line:a,ch:1E6});d.execCommand("indentAuto")})},duplicateLines:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;!a&&b.somethingSelected()?(c=b.getCursor("start"),d=b.getCursor("end"),a=c.line!=d.line&&d.ch==b.getLine(d.line).length?"\n":"",b.replaceSelection(b.getSelection()+a+b.getSelection(),"end"),b.setSelection(c,
|
||||
d)):(a||(a=b.getCursor().line),c=b.getCursor().ch,b.replaceRange(b.getLine(a)+"\n"+b.getLine(a),{line:a,ch:0},{line:a,ch:1E6}),b.setCursor(a+1,c))},removeLines:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;!a&&b.somethingSelected()?b.replaceSelection("","end"):(a||(a=b.getCursor().line),c=b.getCursor().ch,b.execCommand("deleteLine"),b.setCursor(a-1,c))},jumpToDefinition:function(){var a,b;a=ICEcoder.getcMInstance();
|
||||
b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getTokenAt(a.getCursor()).string;if(a.somethingSelected()&&top.ICEcoder.origCurorPos)a.setCursor(top.ICEcoder.origCurorPos);else for(top.ICEcoder.origCurorPos=a.getCursor(),a=["var "+b,"function "+b,b+"=function",b+"= function",b+" =function",b+" = function",b+"=new function",b+"= new function",b+" =new function",b+" = new function","window['"+b+"']",'window["'+b+'"]',"this['"+b+"']",'this["'+b+'"]',b+":",
|
||||
b+" :","def "+b,"class "+b],b=0;b<a.length&&!top.ICEcoder.findReplace(a[b],!1,!1);b++);},autocomplete:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.content.contentWindow.CodeMirror.commands.autocomplete(a)},pasteURL:function(a){var b,c;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;"CTRL"==top.ICEcoder.draggingWithKey&&(a=
|
||||
window.location.protocol+"//"+window.location.hostname+a);b.replaceSelection(a,"around")},searchForSelected:function(){var a,b;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.caretLocType&&(""!=a.getSelection()?(b=top.ICEcoder.caretLocType.toLowerCase()+" ","Content"==top.ICEcoder.caretLocType&&(b=""),window.open("http://www.google.com/#output=search&q="+b+a.getSelection())):top.ICEcoder.message(top.t["No text selected..."]))},
|
||||
fmAction:function(a,b){var c,d,f,e;c=top.get("filesFrame").contentWindow.document.getElementById(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1]+"_perms").parentNode;d=c.parentNode;f=-1<c.onmouseover.toString().indexOf("'folder'")?"folder":"file";e=!1;"up"==b&&(d.previousSibling&&d.previousSibling.previousSibling?(e=d.previousSibling.previousSibling,"UL"==e.tagName&&(e=e.childNodes[e.childNodes.length-1])):d.parentNode.previousSibling&&(e=d.parentNode.previousSibling),e&&(e=e.childNodes[0]));
|
||||
"down"==b&&(d.nextSibling&&d.nextSibling.childNodes[0]?e=d.nextSibling.childNodes[0]:d.nextSibling&&d.nextSibling.nextSibling?e=d.nextSibling.nextSibling:d.parentNode.nextSibling&&(e=d.parentNode.nextSibling.nextSibling),e&&(e=e.childNodes[0]));"left"==b&&"folder"==f&&d.parentNode.previousSibling&&top.ICEcoder.openCloseDir(c,!1);if("right"==b||"enter"==b)"folder"==f?top.ICEcoder.openCloseDir(c,!0):top.ICEcoder.openFile(c.childNodes[1].id.replace(/\|/g,"/"));e&&e.childNodes[1]&&(top.ICEcoder.overFileFolder(f,
|
||||
e.childNodes[1].id),top.ICEcoder.selectFileFolder(a))},openCloseDir:function(a,b){var c,d;a.onclick=function(a){a.ctrlKey||top.ICEcoder.cmdKey||top.ICEcoder.openCloseDir(this,!b)};c=a.parentNode;c.nextSibling&&(c=c.nextSibling);c&&"UL"==c.tagName&&((d="none"==c.style.display)?b=!0:c.style.display="none",a.parentNode.className=a.className=d?"pft-directory dirOpen":"pft-directory");b?top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="lib/get-branch.php?location="+a.childNodes[1].id+
|
||||
"&csrf="+top.ICEcoder.csrf:"UL"==c.tagName&&c.parentNode.removeChild(c);return!1},overFileFolder:function(a,b){ICEcoder.thisFileFolderType=a;ICEcoder.thisFileFolderLink=b},selectFileFolder:function(a,b,c){var d,f,e;if(""==top.ICEcoder.thisFileFolderLink)b||a.ctrlKey||top.ICEcoder.cmdKey||top.ICEcoder.deselectAllFiles();else if(top.ICEcoder.thisFileFolderLink)if(f=top.ICEcoder.thisFileFolderLink.replace(/\//g,"|"),d=ICEcoder.filesFrame.contentWindow.document.getElementById(f),b||a.ctrlKey||top.ICEcoder.cmdKey)-1<
|
||||
top.ICEcoder.selectedFiles.indexOf(f)?(ICEcoder.selectDeselectFile("deselect",d),top.ICEcoder.selectedFiles.splice(top.ICEcoder.selectedFiles.indexOf(f),1)):(ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(f));else if(c||a.shiftKey){var g=function(a,b,c,d){return("00000000000000000000"+a).substr(-20)};a=!1;b=d.parentNode.parentNode.parentNode;e=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1];c=f.replace(/\d+/g,g)<e.replace(/\d+/g,g)?f:e;e=f.replace(/\d+/g,g)>
|
||||
e.replace(/\d+/g,g)?f:e;if(0<top.ICEcoder.selectedFiles.length&&c.substr(0,c.lastIndexOf("|"))==e.substr(0,e.lastIndexOf("|")))for(f=0;1E6>f&&("LI"!=b.childNodes[f].nodeName&&f++,d=b.childNodes[f].childNodes[0].childNodes[1],d.id==c&&(a=!0),1==a&&-1==top.ICEcoder.selectedFiles.indexOf(d.id)&&(ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(d.id)),d.id!=e);f+=2);else ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(f)}else top.ICEcoder.deselectAllFiles(),
|
||||
ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(f);top.ICEcoder.githubDiff&&(top.get("githubNavSelectedCount").innerHTML="Selected: "+top.ICEcoder.selectedFiles.length,top.get("githubNavCommit").style.color=0<top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavCommit").style.background=0<top.ICEcoder.selectedFiles.length?"#2187e7":"#555",top.get("githubNavSelectedCount").style.color=0<top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavPull").style.color=
|
||||
0<top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavPull").style.background=0<top.ICEcoder.selectedFiles.length?"#2187e7":"#555");document.findAndReplace.target[2].innerHTML=top.ICEcoder.selectedFiles[0]?top.t["selected files"]:top.t["all files"];document.findAndReplace.target[3].innerHTML=top.ICEcoder.selectedFiles[0]?top.t["selected filenames"]:top.t["all filenames"];top.ICEcoder.hideFileMenu()},deselectAllFiles:function(){for(var a,b=0;b<top.ICEcoder.selectedFiles.length;b++)a=
|
||||
top.ICEcoder.filesFrame.contentWindow.document.getElementById(top.ICEcoder.selectedFiles[b]),ICEcoder.selectDeselectFile("deselect",a);top.ICEcoder.selectedFiles.length=0},selectDeselectFile:function(a,b){var c;b&&(c=-1<top.ICEcoder.openFiles.indexOf(b.id.replace(/\|/g,"/"))?!0:!1,top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]==b.id.replace(/\|/g,"/")?b.style.backgroundColor="select"==a?top.ICEcoder.tabBGselected:top.ICEcoder.tabBGcurrent:b.style.backgroundColor="select"==a?top.ICEcoder.tabBGselected:
|
||||
b.style.backgroundColor=c?top.ICEcoder.tabBGopen:top.ICEcoder.tabBGnormal,b.style.color="select"==a?top.ICEcoder.tabFGselected:top.ICEcoder.tabFGnormalFile)},boxSelect:function(a,b){var c,d;c=top.filesFrame.contentWindow.document.getElementById("fmDragBox");"down"==b&&(top.ICEcoder.fmDragBoxStartX=top.ICEcoder.mouseX,top.ICEcoder.fmDragBoxStartY=top.ICEcoder.mouseY,top.ICEcoder.fmDragSelectFirst="",top.ICEcoder.fmDragSelectLast="");top.ICEcoder.mouseDown&&"drag"==b&&(top.ICEcoder.fmDraggedBox=!0,
|
||||
d=0<top.ICEcoder.mouseX-top.ICEcoder.fmDragBoxStartX,c.style.left=(d?top.ICEcoder.fmDragBoxStartX:top.ICEcoder.mouseX)+"px",c.style.width=Math.abs(top.ICEcoder.mouseX-top.ICEcoder.fmDragBoxStartX)+"px",d=0<top.ICEcoder.mouseY-top.ICEcoder.fmDragBoxStartY,c.style.top=(d?top.ICEcoder.fmDragBoxStartY-70:top.ICEcoder.mouseY-70)+"px",c.style.height=Math.abs(top.ICEcoder.mouseY-top.ICEcoder.fmDragBoxStartY)+"px",""!=top.ICEcoder.thisFileFolderLink&&(""==top.ICEcoder.fmDragSelectFirst?(top.ICEcoder.fmDragSelectFirst=
|
||||
top.ICEcoder.thisFileFolderLink,top.ICEcoder.overFileFolder(0<top.ICEcoder.thisFileFolderLink.indexOf(".")?"file":"folder",top.ICEcoder.fmDragSelectFirst),top.ICEcoder.selectFileFolder(a)):(top.ICEcoder.fmDragSelectLast=top.ICEcoder.thisFileFolderLink,top.ICEcoder.overFileFolder(0<top.ICEcoder.thisFileFolderLink.indexOf(".")?"file":"folder",top.ICEcoder.fmDragSelectLast),top.ICEcoder.selectFileFolder(a,!1,"shiftSim"))));"up"==b&&(c.style.width=0,c.style.height=0)},newFile:function(){top.ICEcoder.newTab();
|
||||
top.ICEcoder.saveFile()},newFolder:function(){var a,b;a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/");if(b=top.ICEcoder.getInput("Enter new folder name at "+a,""))b=(a+"/"+b).replace(/\/\//,"/"),top.ICEcoder.serverQueue("add","lib/file-control.php?action=newFolder&file="+b.replace(/\//g,"|")+"&csrf="+top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Creating Folder"]+"</b><br>"+b)},openFile:function(a){var b;a&&(top.ICEcoder.thisFileFolderLink=a,top.ICEcoder.thisFileFolderType=
|
||||
"file");"/[NEW]"!=top.ICEcoder.thisFileFolderLink&&!1!==top.ICEcoder.isOpen(top.ICEcoder.thisFileFolderLink)?top.ICEcoder.switchTab(top.ICEcoder.isOpen(top.ICEcoder.thisFileFolderLink)+1):""!=top.ICEcoder.thisFileFolderLink&&"file"==top.ICEcoder.thisFileFolderType&&(a=top.ICEcoder.thisFileFolderLink.replace(/\|/g,"/"),b=!0,100<=top.ICEcoder.openFiles.length&&(top.ICEcoder.message(top.t["Sorry you can..."]),b=!1),b&&(top.ICEcoder.shortURL=a,"/[NEW]"!=a?(top.ICEcoder.thisFileFolderLink=top.ICEcoder.thisFileFolderLink.replace(/\//g,
|
||||
"|"),top.ICEcoder.serverQueue("add","lib/file-control.php?action=load&file="+top.ICEcoder.thisFileFolderLink+"&csrf="+top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Opening File"]+"</b><br>"+top.ICEcoder.shortURL)):top.ICEcoder.createNewTab(),top.ICEcoder.fMIconVis("fMView",1)))},openFilesFromList:function(a){for(var b=0;b<a.length;b++)top.ICEcoder.thisFileFolderLink=a[b].replace("|","/"),top.ICEcoder.thisFileFolderType="file",top.ICEcoder.openFile()},openPrompt:function(){var a;if(a=
|
||||
top.ICEcoder.getInput(top.t["Enter relative file..."],""))-1<a.indexOf("://")?top.ICEcoder.getRemoteFile(a):top.ICEcoder.openFile(a)},getRemoteFile:function(a){top.ICEcoder.serverQueue("add","lib/file-control.php?action=getRemoteFile&file="+a+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.serverMessage("<b>"+top.t.Getting+"</b><br>"+a)},saveFile:function(a){var b,c;a=a?"saveAs":"save";b=ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,"").replace(/\//g,"|");"|[NEW]"==b&&0<top.ICEcoder.selectedFiles.length&&
|
||||
(c=top.ICEcoder.selectedFiles[0],b=-1==c.lastIndexOf(".")||c.lastIndexOf(".")<c.lastIndexOf("|")?c+b:"|[NEW]");b=b.replace("||","|");top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=save&fileMDT="+ICEcoder.openFileMDTs[ICEcoder.selectedTab-1]+"&saveType="+a+"&csrf="+top.ICEcoder.csrf,b);top.ICEcoder.serverMessage("<b>"+top.t.Saving+"</b><br>"+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,""))},renameFile:function(a,b){var c,d;a?c=a.replace(/\|/g,"/"):(c=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-
|
||||
1].replace(/\|/g,"/"),a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"));b||(b=top.ICEcoder.getInput(top.t["Please enter the..."],c));b&&(d=top.ICEcoder.openFiles.indexOf(c.replace(/\|/g,"/")),-1<d&&(top.ICEcoder.openFiles[d]=b,closeTabLink='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a>',
|
||||
c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//,""),top.get("tab"+(d+1)).title=b),top.ICEcoder.serverQueue("add","lib/file-control.php?action=rename&file="+b+"&oldFileName="+a.replace(/\|/g,"/")+"&csrf="+top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Renaming to"]+"</b><br>"+b),top.ICEcoder.setPreviousFiles())},moveFile:function(a,b){var c,d;b&&(d=top.ICEcoder.openFiles.indexOf(a.replace(/\|/g,"/")),-1<d&&(top.ICEcoder.openFiles[d]=
|
||||
b,closeTabLink='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a>',c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//,""),top.get("tab"+(d+1)).title=
|
||||
b),top.ICEcoder.serverQueue("add","lib/file-control.php?action=move&file="+b+"&oldFileName="+a.replace(/\|/g,"/")+"&csrf="+top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Moving to"]+"</b><br>"+b),top.ICEcoder.setPreviousFiles())},deleteFiles:function(a){var b;a=a?a:top.ICEcoder.selectedFiles;b=a.toString().replace(/\|/g,"/").replace(/,/g,"\n");0<a.length&&top.ICEcoder.ask("Delete:\n\n"+b+"?")&&(top.ICEcoder.serverQueue("add","lib/file-control.php?action=delete&file="+a.join(";")+"&csrf="+
|
||||
top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Deleting File"]+"</b><br>"+b))},copyFiles:function(a,b,c){top.ICEcoder.copiedFiles=[];for(var d=0;d<a.length;d++)top.ICEcoder.copiedFiles[d]=a[d];b||(top.get("fmMenuPasteOption").style.display="block");c||top.ICEcoder.hideFileMenu()},pasteFiles:function(a){if(top.ICEcoder.copiedFiles)for(var b=0;b<top.ICEcoder.copiedFiles.length;b++)"|"!=top.ICEcoder.copiedFiles[b]?(top.ICEcoder.serverQueue("add","lib/file-control.php?action=paste&file="+
|
||||
top.ICEcoder.copiedFiles[b]+"&location="+a+"&csrf="+top.ICEcoder.csrf),top.ICEcoder.serverMessage("<b>"+top.t["Pasting File"]+"</b><br>"+top.ICEcoder.copiedFiles[b].toString().replace(/\|/g,"/").replace(/,/g,"\n"))):top.ICEcoder.message(top.t["Sorry cannot paste..."]);else top.ICEcoder.message(top.t["Nothing to paste..."])},duplicateFiles:function(a){var b;top.ICEcoder.copiedFiles&&(b=top.ICEcoder.copiedFiles);top.ICEcoder.copyFiles(a,"dontShowPaste","dontHide");a=a[0].substr(0,a[0].lastIndexOf("|"));
|
||||
top.ICEcoder.pasteFiles(a);"undefined"!=typeof b&&(top.ICEcoder.copiedFiles=b)},uploadFilesSelect:function(a){top.get("uploadDir").value=a;top.get("fileInput").click()},uploadFilesSubmit:function(a){""!=top.get("fileInput").value&&(top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("uploadFilesForm").submit(),event.preventDefault())},showHideFileNav:function(a,b){var c=["optionsFile","optionsEdit","optionsSource","optionsHelp"];if("hide"==a)fileNavInt=setTimeout(function(){for(var a=0;a<
|
||||
c.length;a++)top.ICEcoder.showHide("hide",top.get(c[a])),top.get(c[a]+"Nav").style.color=""},150);else for(var d=0;d<c.length;d++)top.ICEcoder.showHide("hide",top.get(c[d])),top.get(c[d]+"Nav").style.color="";get("fileOptions").style.opacity=0;"show"==a&&("undefined"!=typeof fileNavInt&&clearTimeout(fileNavInt),top.ICEcoder.showHide(a,top.get(b)),top.get(b+"Nav").style.color="#fff",get("fileOptions").style.opacity=1)},showMenu:function(a){var b,c;0!=top.ICEcoder.selectedFiles.length&&-1!=top.ICEcoder.selectedFiles.indexOf(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-
|
||||
1].replace(/\//g,"|"))||top.ICEcoder.selectFileFolder(a);a=129;c=window.innerHeight;"undefined"!=typeof top.ICEcoder.thisFileFolderLink&&""!=top.ICEcoder.thisFileFolderLink&&(b=-1<top.ICEcoder.selectedFiles[0].indexOf(".")?"file":"folder",top.get("folderMenuItems").style.display="folder"==b&&1==top.ICEcoder.selectedFiles.length?"block":"none","folder"==b&&1==top.ICEcoder.selectedFiles.length&&(a+=67,"block"==top.get("fmMenuPasteOption").style.display&&(a+=19)),top.get("singleFileMenuItems").style.display=
|
||||
1<top.ICEcoder.selectedFiles.length?"none":"block",1==top.ICEcoder.selectedFiles.length&&(a+=43),top.get("fileMenu").style.display="inline-block",setTimeout(function(){top.get("fileMenu").style.opacity="1"},4),top.get("fileMenu").style.left=top.ICEcoder.mouseX+20+"px",b=top.ICEcoder.mouseY-top.ICEcoder.filesFrame.contentWindow.document.body.scrollTop-10,b+a>c&&(b-=b+a-c),top.get("fileMenu").style.top=b+"px");return!1},showFileMenu:function(){top.get("fileMenu").style.display="inline-block";setTimeout(function(){top.get("fileMenu").style.opacity=
|
||||
"1"},4)},hideFileMenu:function(){top.get("fileMenu").style.display="none";top.get("fileMenu").style.opacity="0"},updateFileManagerList:function(a,b,c,d,f,e,g){var k,h,l,n,p,m,r;if("add"==a&&!top.get("filesFrame").contentWindow.document.getElementById(b.replace(top.iceRoot,"").replace(/\/$/,"").replace(/\//g,"|")+"|"+c)){k="file"==g?"pft-file ext-"+c.substr(c.indexOf(".")+1):"pft-directory";d="file"==g?top.ICEcoder.newFilePerms:top.ICEcoder.newDirPerms;b||(b="/");b=b.replace(top.iceRoot,"/");b=b.replace("//",
|
||||
"/");h=top.get("filesFrame").contentWindow.document.getElementById(b.replace(/\//g,"|"));l=h.parentNode.parentNode.nextSibling;n=document.createTextNode("\n");p=777==d?"background: #800; color: #eee":"color: #888";p='<a nohref title="'+b.replace(/\/$/,"")+"/"+c+'" onMouseOver="parentNode.draggable=true;top.ICEcoder.overFileFolder(\''+g+"',this.childNodes[1].id)\" onMouseOut=\"parentNode.draggable=false;top.ICEcoder.overFileFolder('"+g+"','')\" ondragover=\"if(parentNode.nextSibling && parentNode.nextSibling.tagName != 'UL' && top.ICEcoder.thisFileFolderLink != this.childNodes[1].id) {top.ICEcoder.openCloseDir(this,true);}\" onClick=\"if(!event.ctrlKey && !top.ICEcoder.cmdKey) {top.ICEcoder.openCloseDir(this,"+
|
||||
("folder"==g?"true":"false")+'); if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {top.ICEcoder.openFile()}}" style="position: relative; left:-22px"> <span id="'+b.replace(/\/$/,"").replace(/\//g,"|")+"|"+c+'">'+c+'</span> <span style="'+p+'; font-size: 8px" id="'+b.replace(/\/$/,"").replace(/\//g,"|")+"|"+c+'_perms">'+d+"</span></a>";if(3>l.childNodes.length)m=document.createElement("ul"),l=h.parentNode.parentNode,l.parentNode.insertBefore(m,
|
||||
l.nextSibling),m=document.createElement("li"),m.className=k,m.draggable=!1,m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())},m.ondragend=function(){top.ICEcoder.dropFile(this)},m.innerHTML=p,l.nextSibling.appendChild(m),l.nextSibling.appendChild(n);else for(h=0;h<l.childNodes.length;h++)if(l.childNodes[h].className&&(m=0<l.childNodes[h].className.indexOf("directory")?
|
||||
"folder":"file",r=l.childNodes[h].getElementsByTagName("span")[0].innerHTML,m==g&&r>c||"folder"==g&&"file"==m||h==l.childNodes.length-1)){m=document.createElement("li");m.className=k;m.draggable=!1;m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())};m.ondragend=function(){top.ICEcoder.dropFile(this)};m.innerHTML=p;h==l.childNodes.length-
|
||||
1?(l.appendChild(m),l.appendChild(n)):(l.insertBefore(m,l.childNodes[h]),l.insertBefore(n,l.childNodes[h+1]));break}"file"!=g||e||(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]=b+c)}"rename"==a&&(e=f.replace(/\//g,"|"),h=top.get("filesFrame").contentWindow.document.getElementById(e),h.innerHTML=c,h.id=b.replace(/\//g,"|")+"|"+c,h.parentNode.title=h.id.replace(/\|/g,"/"),targetElemPerms=top.get("filesFrame").contentWindow.document.getElementById(e+"_perms"),targetElemPerms.id=b.replace(/\//g,
|
||||
"|")+"|"+c+"_perms");"move"==a&&(top.ICEcoder.updateFileManagerList("add",b,c,!1,!1,!1,g),top.ICEcoder.updateFileManagerList("delete",f.substr(0,f.lastIndexOf("/")),c));"chmod"==a&&(e=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),h=top.get("filesFrame").contentWindow.document.getElementById(e.replace(/\//g,"|")+"_perms"),h.style.background=777==d?"#800":"none",h.style.color=777==d?"#eee":"#888",h.innerHTML=d);"delete"==a&&(b||(b=""),b=b.replace(top.iceRoot,"/"),
|
||||
b=b.replace("//","/"),b=b.replace(/\/$/,"").replace(/\//g,"|"),h=(b+"|"+c).replace("||","|"),h=top.get("filesFrame").contentWindow.document.getElementById(h).parentNode.parentNode,top.ICEcoder.openCloseDir(h.childNodes[0],!1),h.parentNode.removeChild(h))},refreshFileManager:function(){top.ICEcoder.showHide("show",top.get("loadingMask"));top.ICEcoder.filesFrame.contentWindow.location.reload(!0);top.ICEcoder.filesFrame.style.opacity="0";top.ICEcoder.filesFrame.onload=function(){top.ICEcoder.filesFrame.style.opacity=
|
||||
"1";top.ICEcoder.showHide("hide",top.get("loadingMask"))}},draggingWithKeyTest:function(a){var b;b=a.keyCode?a.keyCode:a.which?a.which:a.charCode;if(224==b||91==b||93==b)top.ICEcoder.cmdKey=!0;top.ICEcoder.draggingWithKey=a.ctrlKey||top.ICEcoder.cmdKey?"CTRL":!1},dropFile:function(a){var b,c;b=a.childNodes[0].childNodes[1].id.replace(/\|/g,"/");fileName=b.substr(b.lastIndexOf("/")+1);"editor"==top.ICEcoder.area&&top.ICEcoder.pasteURL(b);"files"==top.ICEcoder.area&&setTimeout(function(){c="folder"==
|
||||
ICEcoder.thisFileFolderType?ICEcoder.thisFileFolderLink:ICEcoder.thisFileFolderLink.substr(0,ICEcoder.thisFileFolderLink.lastIndexOf("|"));"CTRL"==top.ICEcoder.draggingWithKey?(top.ICEcoder.copyFiles(top.ICEcoder.selectedFiles),top.ICEcoder.pasteFiles(c)):top.ICEcoder.moveFile(b,c.replace(/\|/g,"/")+"/"+fileName)},4);top.ICEcoder.mouseDown=!1},findReplaceOptions:function(){top.get("rText").style.display=top.get("replace").style.display=top.get("rTarget").style.display=document.findAndReplace.connector.value==
|
||||
top.t.and?"inline-block":"none"},findReplace:function(a,b,c){var d,f,e,g;a=a.toLowerCase();d=top.get("replace").value;f=top.get("results");e=ICEcoder.getcMInstance();g=ICEcoder.getcMdiffInstance();if((e=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?g:e)&&0<a.length&&document.findAndReplace.target.value==top.t["this document"]){e.getValue().toLowerCase();document.findAndReplace.connector.value==top.t.and&&c&&(document.findAndReplace.replaceAction.value==top.t.replace&&e.getSelection().toLowerCase()==
|
||||
a?e.replaceSelection(d,"around"):document.findAndReplace.replaceAction.value==top.t["replace all"]&&(c=new RegExp(a,"gi"),e.setValue(e.getValue().replace(c,d))));c=e.getValue().toLowerCase();if(!top.ICEcoder.findMode||a!=top.ICEcoder.lastsearch){ICEcoder.results=[];ICEcoder.resultsLines=[];for(d=0;d<c.length;d++)c.substr(d,a.length)==a&&-1==ICEcoder.results.indexOf(d)&&(ICEcoder.results.push(d),-1==ICEcoder.resultsLines.indexOf(e.posFromIndex(d).line+1)&&ICEcoder.resultsLines.push(e.posFromIndex(d).line+
|
||||
1));ICEcoder.lastsearch=a}if(0<ICEcoder.results.length){if(b)f.innerHTML=ICEcoder.results.length+" results";else{for(d=ICEcoder.findResult=0;d<ICEcoder.results.length;d++)ICEcoder.results[d]<e.indexFromPos(e.getCursor())&&ICEcoder.findResult++;ICEcoder.findResult>ICEcoder.results.length-1&&(ICEcoder.findResult=0);f.innerHTML="Highlighted result "+(ICEcoder.findResult+1)+" of "+ICEcoder.results.length+" results";b=e.getSearchCursor(a,e.getCursor(),!0);b.findNext();b.from()||(b=e.getSearchCursor(a,
|
||||
{line:0,ch:0},!0),b.findNext());e.setSelection(b.from(),b.to());top.ICEcoder.focus();top.ICEcoder.findMode=!0}a=top.ICEcoder.scrollBarVisible?parseInt(top.ICEcoder.content.style.height,10)/e.lineCount():e.defaultTextHeight();b=top.ICEcoder.scrollBarVisible?0:e.heightAtLine(0);f="";for(d=1;d<=e.lineCount();d++)c=-1<ICEcoder.resultsLines.indexOf(d)?e.getCursor().line+1==d?"#b00":"#888":"transparent",f+='<div style="position: absolute; display: block; width: 5px; height:'+a+"px; background: "+c+"; top: "+
|
||||
parseInt(a*(d-1)+b,10)+'px"></div>';top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML=f;top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="inline-block";return!0}f.innerHTML="No results";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none";return!1}""!=a&&c?(f=b=e="",document.findAndReplace.connector.value==
|
||||
top.t.and&&(e="&replace="+d),0<=document.findAndReplace.target.value.indexOf(top.t.file)&&(b="&target="+document.findAndReplace.target.value.replace(/ /g,"-")),document.findAndReplace.target.value==top.t["selected files"]&&(f="&selectedFiles="+top.ICEcoder.selectedFiles.join(":")),a=a.replace(/\'/g,"'"),a!=encodeURIComponent(a)?a="ICEcoder:"+encodeURIComponent(a):a,top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("mediaContainer").innerHTML='<iframe src="lib/multiple-results.php?find='+
|
||||
a+e+b+f+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 700px; height: 500px"></iframe>'):(f.innerHTML="No results",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none")},replaceInFile:function(a,b,c){top.ICEcoder.serverQueue("add","lib/file-control.php?action=replaceText&fileRef="+a.replace(/\//g,"|")+"&find="+b+"&replace="+c+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.serverMessage("<b>"+
|
||||
top.t["Replacing text in"]+"</b><br>"+a)},getCaretPosition:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().line;c=a.getCursor().ch;for(var f=d=0;f<b;f++)d+=a.getLine(f).length+1;ICEcoder.caretPos=d+c-1},updateCharDisplay:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;ICEcoder.caretLocationType();ICEcoder.charDisplay.innerHTML=
|
||||
ICEcoder.caretLocType+", Line: "+(a.getCursor().line+1)+", Char: "+a.getCursor().ch},updateByteDisplay:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;ICEcoder.byteDisplay.innerHTML=a.getValue().length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")+" bytes"},showDisplay:function(a){top.ICEcoder.byteDisplay.style.display="byte"==a?"inline-block":"none";top.ICEcoder.charDisplay.style.display="char"==a?"inline-block":
|
||||
"none"},showHide:function(a,b){b.style.visibility="show"==a?"visible":"hidden"},getcMInstance:function(a){return top.ICEcoder.content.contentWindow[isNaN(a)?"new"==a||"new"!=a&&0<ICEcoder.openFiles.length?"cM"+ICEcoder.cMInstances[ICEcoder.selectedTab-1]:"cM1":"cM"+ICEcoder.cMInstances[a-1]]},getcMdiffInstance:function(a){return top.ICEcoder.content.contentWindow[(isNaN(a)?"new"==a||"new"!=a&&0<ICEcoder.openFiles.length?"cM"+ICEcoder.cMInstances[ICEcoder.selectedTab-1]:"cM1":"cM"+ICEcoder.cMInstances[a-
|
||||
1])+"diff"]},getMouseXY:function(a,b){top.ICEcoder.mouseX=a.pageX?a.pageX:a.clientX+document.body.scrollLeft;top.ICEcoder.mouseY=a.pageY?a.pageY:a.clientY+document.body.scrollTop;top.ICEcoder.area=b;"top"!=b&&(top.ICEcoder.mouseY+=70);"editor"==b&&(top.ICEcoder.mouseX+=top.ICEcoder.filesW);top.ICEcoder.dragCursorTest();62<top.ICEcoder.mouseY&&top.ICEcoder.setTabWidths()},dragCursorTest:function(){var a,b;a=top.ICEcoder.mouseX-top.ICEcoder.diffStartX;!1!==top.ICEcoder.draggingTab&&top.ICEcoder.diffStartX&&
|
||||
(-10>=a||10<=a)&&top.ICEcoder.mouseX>parseInt(top.ICEcoder.files.style.width,10)&&(top.ICEcoder.tabDragMouseX=top.ICEcoder.mouseX-parseInt(top.ICEcoder.files.style.width,10)-top.ICEcoder.tabDragMouseXStart,top.ICEcoder.tabDragMove());if(top.ICEcoder.ready&&(top.ICEcoder.mouseDown||(top.ICEcoder.draggingFilesW=!1),a=!ICEcoder.draggingTab&&(top.ICEcoder.mouseX>top.ICEcoder.filesW-7&&top.ICEcoder.mouseX<top.ICEcoder.filesW+7||top.ICEcoder.draggingFilesW)?"w-resize":"auto",top.ICEcoder.content.contentWindow.document&&
|
||||
top.ICEcoder.filesFrame.contentWindow)){top.document.body.style.cursor=a;if(b=top.ICEcoder.content.contentWindow.document.body)b.style.cursor=a;if(b=top.ICEcoder.filesFrame.contentWindow.document.body)b.style.cursor=a}},serverMessage:function(a){var b;b=top.get("serverMessage");a?(b.innerHTML=top.ICEcoder.xssClean(a).replace(/\<b\>/g,"<b>").replace(/\<\/b\>/g,"</b>").replace(/\<br\>/g,"<br>"),b.style.left="0"):setTimeout(function(){b.style.left="2000px"},200);b.style.opacity=a?1:
|
||||
0},cssColorPreview:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();if(a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a){b=a.getLine(a.getCursor().line);for(c=/(#[\da-f]{3}(?:[\da-f]{3})?\b|\b(?:rgb|hsl)a?\([\s\d%,.-]+\)|\b[a-z]+\b)/gi;(d=c.exec(b))&&a.getCursor().ch>d.index+d[0].length;);(b=top.get("content").contentWindow.document.getElementById("cssColor"))&&b.parentNode.removeChild(b);top.ICEcoder.codeAssist&&"CSS"==top.ICEcoder.caretLocType&&(b=top.document.createElement("div"),
|
||||
b.id="cssColor",b.style.position="absolute",b.style.display="block",b.style.width=b.style.height="20px",b.style.zIndex="1000",b.style.background=d?d[0]:"",b.style.cursor="pointer",b.onclick=function(){top.ICEcoder.showColorPicker(d[0])},""==b.style.backgroundColor&&(b.style.display="none"),top.get("header").appendChild(b),a.addWidget(a.getCursor(),top.get("cssColor"),!0))}},showColorPicker:function(a){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='<div id="picker" class="picker"></div><br><br><input type="text" id="color" name="color" value="#000" class="colorValue"><input type="button" onClick="top.ICEcoder.insertColorValue(top.get(\'color\').value)" value="insert >" class="insertColorValue"><br><input type="text" id="colorRGB" name="colorRGB" value="rgb(0,0,0)" class="colorValue"><input type="button" onClick="top.ICEcoder.insertColorValue(top.get(\'colorRGB\').value)" value="insert >" class="insertColorValue">';
|
||||
farbtastic("picker","color");a&&top.get("picker").farbtastic.setColor(a)},drawCanvasImage:function(a){var b,c,d,f,e,g,k,h,l,n,p;b=top.get("canvasPicker").getContext("2d");c=new Image;c.src=a.src;c.onload=function(){top.get("canvasPicker").width=a.width;top.get("canvasPicker").height=a.height;b.drawImage(c,0,0,a.width,a.height)};top.get("canvasPicker").onmousemove=function(a){d=a.pageX-this.offsetLeft;f=a.pageY-this.offsetTop;e=b.getImageData(d,f,1,1).data;g=e[0];k=e[1];h=e[2];l=g+","+k+","+h;n=top.ICEcoder.rgbToHex(g,
|
||||
k,h);top.get("rgbMouseXY").value=l;top.get("hexMouseXY").value="#"+n;top.get("hexMouseXY").style.backgroundColor=top.get("rgbMouseXY").style.backgroundColor="#"+n;p=128>g||128>k||128>h&&200>g&&200>k&&50<h?"#fff":"#000";top.get("hexMouseXY").style.color=top.get("rgbMouseXY").style.color=p};top.get("canvasPicker").onclick=function(){top.get("rgb").value=top.get("rgbMouseXY").value;top.get("hex").value=top.get("hexMouseXY").value;top.get("hex").style.backgroundColor=top.get("rgb").style.backgroundColor=
|
||||
top.get("hex").value;top.get("hex").style.color=top.get("rgb").style.color=p}},rgbToHex:function(a,b,c){return top.ICEcoder.toHex(a)+top.ICEcoder.toHex(b)+top.ICEcoder.toHex(c)},toHex:function(a){a=parseInt(a,10);if(isNaN(a))return"00";a=Math.max(0,Math.min(a,255));return"0123456789abcdef".charAt((a-a%16)/16)+"0123456789abcdef".charAt(a%16)},insertColorValue:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;c=b.getTokenAt(b.getCursor());
|
||||
b.replaceRange(a,{line:b.getCursor().line,ch:c.start},{line:b.getCursor().line,ch:1E6})},fMIconVis:function(a,b){var c;if(c=top.get(a))c.style.opacity=b},isOpen:function(a){a=a.replace(/\|/g,"/").replace(top.docRoot+top.iceRoot,"");a=top.ICEcoder.openFiles.indexOf(a);return-1!=a?a:!1},startPluginIntervals:function(a,b,c,d){-1<b.indexOf("?")&&(b=b+"&csrf="+top.ICEcoder.csrf);top.ICEcoder["plugTimer"+a]=-1<["_parent","_top","_self",""].indexOf(c)?top.ICEcoder["plugTimer"+a]=setInterval("window.location='"+
|
||||
b+"'",6E4*d):0==c.indexOf("fileControl")?top.ICEcoder["plugTimer"+a]=setInterval(function(){top.ICEcoder.serverQueue("add",b);top.ICEcoder.serverMessage(c.split(":")[1])},6E4*d):top.ICEcoder["plugTimer"+a]=setInterval("window.open('"+b+"','"+c+"')",6E4*d);top.ICEcoder.pluginIntervalRefs.push(a)},codeAssistToggle:function(){var a,b;top.ICEcoder.codeAssist=!top.ICEcoder.codeAssist;top.get("codeAssistDisplay").style.backgroundPosition=top.ICEcoder.codeAssist?"0 0":"-16px 0";top.ICEcoder.cssColorPreview();
|
||||
top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?"diff":!1);for(i=0;i<top.ICEcoder.cMInstances.length;i++)if(a=top.ICEcoder.openFiles[i],a=a.split("."),a=a[a.length-1],"js"==a||"json"==a)a=top.ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[i]],b=top.ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[i]+"diff"],top.ICEcoder.codeAssist?(a.setOption("lint",!0),b.setOption("lint",!0)):(a.clearGutter("CodeMirror-lint-markers"),a.setOption("lint",!1),b.clearGutter("CodeMirror-lint-markers"),
|
||||
b.setOption("lint",!1))},serverQueue:function(a,b,c){var d,f,e,g,k;d=ICEcoder.getcMInstance();for(e=f=0;e<ICEcoder.serverQueueItems.length;e++)0<ICEcoder.serverQueueItems[e].indexOf("action=save")&&f++;f++;if("add"==a)ICEcoder.serverQueueItems.push(b),0<b.indexOf("action=save")&&(e=document.createElement("textarea"),e.setAttribute("id","saveTemp"+f),document.body.appendChild(e),top.get("saveTemp"+f).value=d.getValue());else if("del"==a){if(ICEcoder.serverQueueItems[0]&&0<ICEcoder.serverQueueItems[0].indexOf("action=save")){d=
|
||||
f-1;for(e=1;e<d;e++)top.get("saveTemp"+e).value=top.get("saveTemp"+(e+1)).value;d=top.get("saveTemp"+d);d.parentNode.removeChild(d)}ICEcoder.serverQueueItems.splice(0,1)}if("del"==a&&1<=ICEcoder.serverQueueItems.length||1==ICEcoder.serverQueueItems.length)b&&0<b.indexOf("action=save")?(g=top.ICEcoder.xhrObj(),g.onreadystatechange=function(){4==g.readyState&&200==g.status&&(k=JSON.parse(g.responseText),k.action.timeEnd=(new Date).getTime(),k.action.timeTaken=k.action.timeEnd-k.action.timeStart,k.status.error?
|
||||
top.ICEcoder.message(k.status.errorMsg):eval(k.action.doNext))},g.open("POST",ICEcoder.serverQueueItems[0],!0),g.setRequestHeader("Content-type","application/x-www-form-urlencoded"),a=(new Date).getTime(),g.send("timeStart="+a+"&file="+c+"&contents="+encodeURIComponent(top.document.getElementById("saveTemp1").value))):setTimeout(function(){top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href=ICEcoder.serverQueueItems[0]},1)},cancelAllActions:function(){window.stop();0<ICEcoder.serverQueueItems.length&&
|
||||
ICEcoder.serverQueueItems.splice(1,ICEcoder.serverQueueItems.length);top.ICEcoder.showHide("hide",top.get("loadingMask"));top.ICEcoder.serverMessage('<b style="color: #d00">'+top.t["Cancelled tasks"]+"</b>");setTimeout(function(){top.ICEcoder.serverMessage()},2E3)},setPreviousFiles:function(){var a;a=top.ICEcoder.openFiles.join(",").replace(/\//g,"|").replace(/(\|\[NEW\])|(,\|\[NEW\])/g,"").replace(/(^,)|(,$)/g,"");""==a&&(a="CLEAR");top.ICEcoder.serverQueue("add","lib/settings.php?saveFiles="+a+
|
||||
"&csrf="+top.ICEcoder.csrf)},autoOpenFiles:function(){if(0<top.ICEcoder.previousFiles.length&&top.ICEcoder.ask(top.t["Open previous files"]+"\n\n"+top.ICEcoder.previousFiles.length+" files:\n"+top.ICEcoder.previousFiles.join("\n").replace(/\|/g,"/").replace(new RegExp(top.docRoot+top.iceRoot,"gi"),"")))for(var a=0;a<top.ICEcoder.previousFiles.length;a++)top.ICEcoder.thisFileFolderLink=top.ICEcoder.previousFiles[a].replace("|","/"),top.ICEcoder.thisFileFolderType="file",top.ICEcoder.openFile()},settingsScreen:function(a){a||
|
||||
(top.get("mediaContainer").innerHTML='<iframe src="lib/settings-screen.php" class="whiteGlow" style="width: 970px; height: 610px"></iframe>');top.ICEcoder.showHide(a?"hide":"show",top.get("blackMask"))},helpScreen:function(){top.get("mediaContainer").innerHTML='<iframe src="lib/help.php" class="whiteGlow" style="width: 840px; height: 515px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},showManual:function(a,b){var c;c=b?"#"+b:"";top.get("mediaContainer").innerHTML='<iframe src="https://icecoder.net/manual?version='+
|
||||
a+c+'" class="whiteGlow" style="width: 800px; height: 470px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},propertiesScreen:function(a){top.get("mediaContainer").innerHTML='<iframe src="lib/properties.php?fileName='+a.replace(/\//g,"|")+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 660px; height: 330px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},pluginsManager:function(){top.get("mediaContainer").innerHTML='<iframe src="lib/plugins-manager.php" class="whiteGlow" style="width: 800px; height: 450px"></iframe>';
|
||||
top.ICEcoder.showHide("show",top.get("blackMask"))},githubAction:function(a){top.get("mediaContainer").innerHTML='<iframe src="lib/github.php?action='+a+"&selectedFiles="+top.ICEcoder.selectedFiles.join(";")+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 340px; height: 340px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},githubTokenAsk:function(a){if(githubAuthToken=top.ICEcoder.getInput(top.t["Please enter your..."],""))top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href=
|
||||
"lib/github.php?action=auth&token="+githubAuthToken+"&goNext="+a+"&csrf="+top.ICEcoder.csrf,githubAuthToken=""},showHideGithubNav:function(a){top.get("githubNav").style.display="show"==a?"block":"none";top.get("fileNav").style.display="show"==a?"none":"block"},githubManager:function(){top.ICEcoder.githubAuthTokenSet?(top.get("mediaContainer").innerHTML='<iframe src="lib/github-manager.php" class="whiteGlow" style="width: 660px; height: 450px"></iframe>',top.ICEcoder.showHide("show",top.get("blackMask"))):
|
||||
top.ICEcoder.githubTokenAsk("showManager")},githubDiffToggle:function(){var a;if(!top.ICEcoder.githubAuthTokenSet)top.ICEcoder.githubTokenAsk("loadFiles");else if(top.ICEcoder.githubDiff||top.ICEcoder.ask(top.t["This will compare..."]))top.ICEcoder.githubDiff=!top.ICEcoder.githubDiff,a=top.ICEcoder.githubDiff?"true":"false",top.ICEcoder.filesFrame.src="files.php?githubDiff="+a+"&csrf="+top.ICEcoder.csrf},useNewSettings:function(a,b,c,d,f,e,g,k,h,l,n,p,m,r,s,t,u){var q;top.ICEcoder.theme=a.slice(a.lastIndexOf("/")+
|
||||
1,a.lastIndexOf("."));"editor"==top.ICEcoder.theme&&(top.ICEcoder.theme="icecoder");q=document.createElement("link");q.setAttribute("rel","stylesheet");q.setAttribute("type","text/css");q.setAttribute("href",a);top.ICEcoder.content.contentWindow.document.getElementsByTagName("head")[0].appendChild(q);a=-1<"3024-day base16-light eclipse elegant neat paraiso-light solarized xq-light".split(" ").indexOf(top.ICEcoder.theme)?"#ccc":"#000";top.ICEcoder.switchTab(top.ICEcoder.selectedTab);b!=top.ICEcoder.codeAssist&&
|
||||
(top.get("codeAssist").checked=b,top.ICEcoder.codeAssistToggle());c!=top.ICEcoder.lockedNav&&top.ICEcoder.lockUnlockNav();c||(ICEcoder.changeFilesW("contract"),top.ICEcoder.hideFileMenu());c=ICEcoder.content.contentWindow.document.styleSheets[4];b=c.rules?"rules":"cssRules";c[b][0].style.fontSize=g;c[b][4].style["border-left-width"]=e?"1px":"0";c[b][4].style["margin-left"]=e?"-1px":"0";c[b][2].style.cssText="background-color: "+a+" !important";top.ICEcoder.lineWrapping=k;top.ICEcoder.indentWithTabs=
|
||||
h;top.ICEcoder.indentSize=l;for(e=0;e<ICEcoder.cMInstances.length;e++)ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].setOption("lineWrapping",top.ICEcoder.lineWrapping),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].setOption("indentWithTabs",top.ICEcoder.indentWithTabs),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].setOption("indentUnit",top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].setOption("tabSize",top.ICEcoder.indentSize),
|
||||
ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].refresh(),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].setOption("lineWrapping",top.ICEcoder.lineWrapping),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].setOption("indentWithTabs",top.ICEcoder.indentWithTabs),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].setOption("indentUnit",top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].setOption("tabSize",
|
||||
top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].refresh();d!=top.ICEcoder.tagWrapperCommand&&(top.ICEcoder.tagWrapperCommand=d);f!=top.ICEcoder.autoComplete&&(top.ICEcoder.autoComplete=f);top.get("plugins").style.left="left"==n?"0":"auto";top.get("plugins").style.right="right"==n?"0":"auto";top.ICEcoder.bugFilePaths=p;top.ICEcoder.bugFileCheckTimer=m;top.ICEcoder.bugFileMaxLines=r;""!=top.ICEcoder.bugFilePaths[0]?top.ICEcoder.startBugChecking():"undefined"!=
|
||||
typeof top.ICEcoder.bugFileCheckInt&&clearInterval(top.ICEcoder.bugFileCheckInt);top.ICEcoder.splitPane&&top.ICEcoder.updateDiffs();top.ICEcoder.githubAuthTokenSet=s;top.ICEcoder.updateDiffOnSave=t;u&&top.ICEcoder.refreshFileManager()},updateResultsDisplay:function(a){ICEcoder.findReplace(top.get("find").value,!0,!1);top.get("results").style.display="show"==a?"inline-block":"none"},fullScreenSwitcher:function(){"undefined"!=typeof document.cancelFullScreen?document.fullScreen?document.cancelFullScreen():
|
||||
document.body.requestFullScreen():"undefined"!=typeof document.mozCancelFullScreen?document.mozFullScreen?document.mozCancelFullScreen():document.body.mozRequestFullScreen():"undefined"!=typeof document.webkitCancelFullScreen&&(document.webkitIsFullScreen?document.webkitCancelFullScreen():document.body.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT))},zipIt:function(a){a=a.replace(/\//g,"|");top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="plugins/zip-it/index.php?zip="+
|
||||
a+"&csrf="+top.ICEcoder.csrf},downloadFile:function(a){a=a.replace(/\//g,"|");top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="lib/download.php?file="+a+"&csrf="+top.ICEcoder.csrf},chmod:function(a,b){a=a.replace(top.iceRoot,"");top.ICEcoder.showHide("hide",top.get("blackMask"));top.ICEcoder.serverQueue("add","lib/file-control.php?action=perms&file="+a+"&perms="+b+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.serverMessage("<b>chMod "+b+" on </b><br>"+a.replace(/\|/g,"/"))},openPreviewWindow:function(){if(0<
|
||||
top.ICEcoder.openFiles.length){var a,b,c,d,f;d=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];a=d.substr(d.lastIndexOf("/")+1);f=a.substr(a.lastIndexOf(".")+1);a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.previewWindowLoading=!0;top.ICEcoder.previewWindow=window.open(d,"previewWindow");-1<["md"].indexOf(f)?top.ICEcoder.previewWindow.onload=function(){top.ICEcoder.previewWindowLoading=!1;top.ICEcoder.previewWindow.document.documentElement.innerHTML=
|
||||
mmd(c.getValue())}:top.ICEcoder.previewWindow.onload=function(){top.ICEcoder.previewWindowLoading=!1;try{top.ICEcoder.doPesticide()}catch(a){}try{top.ICEcoder.doStatsJS("open")}catch(b){}}}},logout:function(){window.location=window.location+"?logout&csrf="+top.ICEcoder.csrf},message:function(a){alert(a)},ask:function(a){return confirm(a)},getInput:function(a,b){return prompt(a,b)},dataMessage:function(a){var b;b=top.ICEcoder.content.contentWindow.document.getElementById("dataMessage");b.style.display=
|
||||
"block";b.innerHTML=a},update:function(){confirm(top.t["Please note for..."])?(top.ICEcoder.showHide("show",top.get("loadingMask")),window.location="lib/updater.php"):window.open("https://icecoder.net")},updated:function(){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML="<h1>Thanks for updating to v"+top.ICEcoder.versionNo+'!</h1><p style="line-height: 24px; padding-bottom: 24px">ICEcoder relies entirely on donations to fund future versions.<br>If you find it useful, please consider donating.<br>Many thanks!</p><a href="https://icecoder.net/?display=updateDonateScreen" target="_blank" style="background: #097695; color: #fff; padding: 10px; text-decoration: none; font-size: 17px; font-weight: bold; border-radius: 4px; cursor: pointer">Donate $5</a>'},
|
||||
xhrObj:function(){try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml3.XMLHTTP")}catch(b){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(d){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(f){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return null},openBugReport:function(){var a;"off"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["You can start..."]);"error"==top.ICEcoder.bugReportStatus&&
|
||||
ch:0},{line:c,ch:1E6});setTimeout(function(){for(var c,e=0;e<top.ICEcoder.renderLineStyle.length;e++){c=!1;if("diff"!=top.ICEcoder.renderLineStyle[e][0]&&-1==b.indexOf("diff")||"diff"==top.ICEcoder.renderLineStyle[e][0]&&-1<b.indexOf("diff"))c=!0;c&&a.getCursor().line+1==top.ICEcoder.renderLineStyle[e][1]?a.setOption("cursorHeight",a.defaultTextHeight()/a.lineInfo(a.getCursor().line).handle.height):a.setOption("cursorHeight",1)}},0)},cMonBeforeChange:function(a,b,c,d){var e,f,g;b=a.listSelections();
|
||||
for(var h=0;h<b.length;h++)if(e=a.getTokenAt(b[h].anchor),"tag bracket"==e.type&&"<"==e.string&&(e=a.getTokenAt({line:b[h].anchor.line,ch:b[h].anchor.ch+1})),"tag"==e.type){f=d.fold.xml(a,b[h].anchor);g=!0;for(var k=0;k<top.ICEcoder.endTagReplaceData.length;k++)"undefined"!=typeof f&&top.ICEcoder.endTagReplaceData[k].split(";")[1]==f.to.line+":"+f.to.ch&&(g=!1);g&&"undefined"!=typeof f&&"undo"!=c.origin&&"redo"!=c.origin&&(e=e.string+";"+f.to.line+":"+f.to.ch,-1==top.ICEcoder.endTagReplaceData.indexOf(e)&&
|
||||
top.ICEcoder.endTagReplaceData.push(e))}},cMonChange:function(a,b,c){var d,e,f;top.ICEcoder.loadingFile||top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);setTimeout(function(){top.ICEcoder.scrollBarVisible=a.getScrollInfo().height>a.getScrollInfo().clientHeight;top.ICEcoder.setLayout()},0);if(0<top.ICEcoder.endTagReplaceData.length)for(b=0;b<top.ICEcoder.endTagReplaceData.length;b++)d=top.ICEcoder.endTagReplaceData[b].split(";"),1*d[1].split(":")[0]!=c.from.line&&(d[1].split(":"),d[1].split(":"),
|
||||
d[1].split(":"),d[1].split(":"),d=a.getTokenAt(a.listSelections()[b].anchor),d=d.string,"<"==d&&(d=""));top.ICEcoder.endTagReplaceData=[];top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay();top.ICEcoder.updateNestingIndicator();top.ICEcoder.findMode&&(top.ICEcoder.results.splice(top.ICEcoder.findResult,1),top.get("results").innerHTML=top.ICEcoder.results.length+" "+top.t.results,top.ICEcoder.findMode=!1);if(d=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-
|
||||
1]){e=d.substr(d.lastIndexOf("/")+1);f=e.substr(e.lastIndexOf(".")+1);for(b=c.from.line;b<c.from.line+c.text.length;b++)top.ICEcoder.content.contentWindow.CodeMirror.doFold(-1<a.getLine(b).indexOf("{")?"brace":"xml",null,"+","-",!0)(a,b);if("}"==c.text[0]||c.removed&&"}"==c.removed[0])for(cursor=a.getSearchCursor("{",a.getCursor(),!1),cursor.findPrevious(),b=cursor.from().line;b<a.getCursor().line;b++)top.ICEcoder.content.contentWindow.CodeMirror.doFold(-1<a.getLine(b).indexOf("{")?"brace":"xml",
|
||||
null,"+","-",!0)(a,b)}top.ICEcoder.splitPane&&setTimeout(function(){top.ICEcoder.updateDiffs()},0);d&&top.ICEcoder.previewWindow.location&&"/[NEW]"!=d&&top.ICEcoder.updatePreviewWindow(a,d,e,f);top.ICEcoder.indicateChanges()},cMonScroll:function(a,b){var c,d,e;top.ICEcoder.mouseDown=!1;top.ICEcoder.splitPane&&(c=top.ICEcoder.getcMInstance(),d=top.ICEcoder.getcMdiffInstance(),e=-1<b.indexOf("diff")?c:d,setTimeout(function(){e.scrollTo(a.getScrollInfo().left,a.getScrollInfo().top)},0))},cMonInputRead:function(a,
|
||||
b){"keypress"==top.ICEcoder.autoComplete&&top.ICEcoder.codeAssist&&(a.state.completionActive||top.ICEcoder.autocomplete())},cMonRenderLine:function(a,b,c,d){for(var e,f=0;f<top.ICEcoder.renderLineStyle.length;f++){e=!1;if("diff"!=top.ICEcoder.renderLineStyle[f][0]&&-1==b.indexOf("diff")||"diff"==top.ICEcoder.renderLineStyle[f][0]&&-1<b.indexOf("diff"))e=!0;e&&a.lineInfo(c).line+1==top.ICEcoder.renderLineStyle[f][1]&&(d.style[top.ICEcoder.renderLineStyle[f][2]]=top.ICEcoder.renderLineStyle[f][3])}},
|
||||
updateDiffs:function(){var a,b,c,d,e,f;top.ICEcoder.renderLineStyle=[];top.ICEcoder.renderPaneShiftAmount=0;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.getcMdiffInstance();c=a?difflib.stringAsLines(a.getValue()):"";d=b?difflib.stringAsLines(b.getValue()):"";c=(new difflib.SequenceMatcher(c,d)).get_opcodes();if(a){e=a.getAllMarks();for(d=0;d<e.length;d++)e[d].clear();e=b.getAllMarks();for(d=0;d<e.length;d++)e[d].clear()}if(a&&""!=b.getValue())for(d=0;d<c.length;d++)if("equal"!==c[d][0]){if("replace"==
|
||||
c[d][0]){f=(c[d][4]-c[d][2]+1+top.ICEcoder.renderPaneShiftAmount)*a.defaultTextHeight();for(e=c[d][4]-1;e<=c[d][2]-1;e++)b.getLineHandle(e).height>a.defaultTextHeight()&&(f+=b.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",f+"px"]);for(e=0;e<c[d][2]-c[d][1];e++)f=top.ICEcoder.findStringDiffs(a.getLine(c[d][1]+e),b.getLine(c[d][3]+e)),a.markText({line:c[d][1]+e,ch:0},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,
|
||||
ch:f[0]},{className:"diffGreyLighter"}),a.markText({line:c[d][1]+e,ch:f[0]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:f[0]+f[1]},{className:"diffGrey"}),a.markText({line:c[d][1]+e,ch:f[0]+f[1]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:1E6},{className:"diffGreyLighter"})}else a.markText({line:c[d][1],ch:0},{line:c[d][2]-1,ch:1E6},{className:"diffGreen"});"replace"!=c[d][0]&&c[d][1]==c[d][2]&&(top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",(c[d][4]-c[d][3]+1)*a.defaultTextHeight()+
|
||||
"px"]),a.markText({line:c[d][2]-1,ch:0},{line:c[d][2]-1,ch:1E6},{className:"diffNone"}));if("replace"==c[d][0]){f=(c[d][2]-c[d][4]+1-top.ICEcoder.renderPaneShiftAmount)*a.defaultTextHeight();for(e=c[d][4]-1;e<=c[d][2]-1;e++)a.getLineHandle(e).height>a.defaultTextHeight()&&(f+=a.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",f+"px"]);for(e=0;e<c[d][4]-c[d][3];e++)f=top.ICEcoder.findStringDiffs(a.getLine(c[d][1]+e),
|
||||
b.getLine(c[d][3]+e)),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,ch:0},{line:c[d][3]+e,ch:f[0]},{className:"diffGreyLighter"}),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,ch:f[0]},{line:c[d][3]+e,ch:f[0]+f[2]},{className:"diffGrey"}),b.markText({line:c[d][1]+e-top.ICEcoder.renderPaneShiftAmount,ch:f[0]+f[2]},{line:c[d][3]+e,ch:1E6},{className:"diffGreyLighter"})}else b.markText({line:c[d][3],ch:0},{line:c[d][4]-1,ch:1E6},{className:"diffRed"});"replace"!=c[d][0]&&
|
||||
c[d][3]==c[d][4]&&(top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",(c[d][2]-c[d][1]+1)*a.defaultTextHeight()+"px"]),b.markText({line:c[d][4]-1,ch:0},{line:c[d][4]-1,ch:1E6},{className:"diffNone"}));top.ICEcoder.renderPaneShiftAmount=c[d][2]-c[d][4]}},findStringDiffs:function(a,b){"undefined"==typeof a&&(a="");"undefined"==typeof b&&(b="");for(var c=0,d=a.length,e=b.length;a[c]&&a[c]==b[c];c++);for(;d>c&e>c&a[d-1]==b[e-1];d--)e--;return[c,d-c,e-c]},updatePreviewWindow:function(a,b,c,d){top.ICEcoder.previewWindow.location.pathname==
|
||||
b?-1<["htm","html","txt"].indexOf(d)?top.ICEcoder.previewWindow.document.documentElement.innerHTML=a.getValue():-1<["md"].indexOf(d)&&(top.ICEcoder.previewWindow.document.documentElement.innerHTML=mmd(a.getValue())):-1<["css"].indexOf(d)&&-1<top.ICEcoder.previewWindow.document.documentElement.innerHTML.indexOf(c)&&(a=a.getValue(),c=document.createElement("style"),c.type="text/css",c.id="ICEcoder"+b.replace(/\//g,"_"),c.styleSheet?c.styleSheet.cssText=a:c.appendChild(document.createTextNode(a)),top.ICEcoder.previewWindow.document.getElementById(c.id)&&
|
||||
top.ICEcoder.previewWindow.document.documentElement.removeChild(top.ICEcoder.previewWindow.document.getElementById(c.id)),top.ICEcoder.previewWindow.document.documentElement.appendChild(c));try{top.ICEcoder.doPesticide()}catch(e){}try{top.ICEcoder.doStatsJS("update")}catch(e){}try{top.ICEcoder.doResponsive()}catch(e){}},contentCleanUp:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getValue();b=b.replace(/<ICEcoder:\/:textarea>/g,
|
||||
"</textarea>");a.setValue(b);a.clearHistory();top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration()},undo:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a).undo()},redo:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a).redo()},indent:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();
|
||||
b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;"more"==a?top.ICEcoder.content.contentWindow.CodeMirror.commands.indentMore(b):top.ICEcoder.content.contentWindow.CodeMirror.commands.indentLess(b)},moveLines:function(a){var b,c,d,e,f,g,h;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;e=d.getCursor("start");f=d.getCursor("end");"up"==a&&0<e.line&&(g=e.line-1);"down"==a&&f.line<d.lineCount()-1&&(g=f.line+1);isNaN(g)||
|
||||
(h=d.getLine(g),d.operation(function(){if("up"==a)for(var b=e.line;b<=f.line;b++)d.replaceRange(d.getLine(b),{line:b-1,ch:0},{line:b-1,ch:1E6});else for(b=f.line;b>=e.line;b--)d.replaceRange(d.getLine(b),{line:b+1,ch:0},{line:b+1,ch:1E6});d.replaceRange(h,{line:"up"==a?f.line:e.line,ch:0},{line:"up"==a?f.line:e.line,ch:1E6});d.setSelection({line:e.line+("up"==a?-1:1),ch:e.ch},{line:f.line+("up"==a?-1:1),ch:f.ch})}))},highlightLine:function(a){var b,c;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();
|
||||
b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;b.setSelection({line:a,ch:0},{line:a,ch:b.lineInfo(a).text.length})},focus:function(a){var b,c;/iPhone|iPad|iPod/i.test(navigator.userAgent)||(b=top.ICEcoder.getcMInstance(),c=top.ICEcoder.getcMdiffInstance(),(a=a?c:b)&&a.focus())},goToLine:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b).setCursor(a?a-1:top.get("goToLineNo").value-1);top.ICEcoder.focus();
|
||||
setTimeout(function(){top.ICEcoder.focus()},0);return!1},lineCommentToggle:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().ch;c=a.getCursor().line;d=a.getLine(c);ICEcoder.lineCommentToggleSub(a,b,c,d,d.length)},tagWrapper:function(a){var b,c,d,e,f;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;b=a;"div"==a?(e=d.getCursor("start").line,
|
||||
f=d.getCursor().line,d.operation(function(){d.replaceSelection("<div>\n"+d.getSelection()+"\n</div>","around");for(var a=e+1;a<=f+1;a++)d.indentLine(a);d.indentLine(f+2,"prev");d.indentLine(f+2,"subtract")})):-1<["p","a","h1","h2","h3"].indexOf(a)&&d.getSelection().substr(0,a.length+1)=="<"+b&&d.getSelection().substr(-(a.length+3))=="</"+a+">"?d.replaceSelection(d.getSelection().substr(d.getSelection().indexOf(">")+1,d.getSelection().length-d.getSelection().indexOf(">")-1-a.length-3),"around"):("a"==
|
||||
a&&(b='a href=""'),d.replaceSelection("<"+b+">"+d.getSelection()+"</"+a+">","around"),"a"==a&&d.setCursor({line:d.getCursor("start").line,ch:d.getCursor("start").ch+9}))},addLineBreakAtEnd:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||(a=b.getCursor().line);b.replaceRange(b.getLine(a)+"<br>",{line:a,ch:0},{line:a,ch:1E6})},insertLineBefore:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();
|
||||
d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||(a=d.getCursor().line);d.operation(function(){d.replaceRange("\n"+d.getLine(a),{line:a,ch:0},{line:a,ch:1E6});d.setCursor({line:d.getCursor().line-1,ch:0});d.execCommand("indentAuto")})},insertLineAfter:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;a||(a=d.getCursor().line);d.operation(function(){d.replaceRange(d.getLine(a)+"\n",{line:a,ch:0},{line:a,
|
||||
ch:1E6});d.execCommand("indentAuto")})},duplicateLines:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;!a&&b.somethingSelected()?(c=b.getCursor("start"),d=b.getCursor("end"),a=c.line!=d.line&&d.ch==b.getLine(d.line).length?"\n":"",b.replaceSelection(b.getSelection()+a+b.getSelection(),"end"),b.setSelection(c,d)):(a||(a=b.getCursor().line),c=b.getCursor().ch,b.replaceRange(b.getLine(a)+"\n"+b.getLine(a),{line:a,
|
||||
ch:0},{line:a,ch:1E6}),b.setCursor(a+1,c))},removeLines:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;!a&&b.somethingSelected()?b.replaceSelection("","end"):(a||(a=b.getCursor().line),c=b.getCursor().ch,b.execCommand("deleteLine"),b.setCursor(a-1,c))},jumpToDefinition:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getTokenAt(a.getCursor()).string;
|
||||
if(a.somethingSelected()&&top.ICEcoder.origCurorPos)a.setCursor(top.ICEcoder.origCurorPos);else for(top.ICEcoder.origCurorPos=a.getCursor(),a=["var "+b,"function "+b,b+"=function",b+"= function",b+" =function",b+" = function",b+"=new function",b+"= new function",b+" =new function",b+" = new function","window['"+b+"']",'window["'+b+'"]',"this['"+b+"']",'this["'+b+'"]',b+":",b+" :","def "+b,"class "+b],b=0;b<a.length&&!top.ICEcoder.findReplace(a[b],!1,!1);b++);},autocomplete:function(){var a,b;a=ICEcoder.getcMInstance();
|
||||
b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.content.contentWindow.CodeMirror.commands.autocomplete(a)},pasteURL:function(a){var b,c;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;"CTRL"==top.ICEcoder.draggingWithKey&&(a=window.location.protocol+"//"+window.location.hostname+a);b.replaceSelection(a,"around")},searchForSelected:function(){var a,b;a=top.ICEcoder.getcMInstance();
|
||||
b=top.ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.caretLocType&&(""!=a.getSelection()?(b=top.ICEcoder.caretLocType.toLowerCase()+" ","Content"==top.ICEcoder.caretLocType&&(b=""),window.open("http://www.google.com/#output=search&q="+b+a.getSelection())):top.ICEcoder.message(top.t["No text selected..."]))},fmAction:function(a,b){var c,d,e,f;c=top.get("filesFrame").contentWindow.document.getElementById(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-
|
||||
1]+"_perms").parentNode;d=c.parentNode;e=-1<c.onmouseover.toString().indexOf("'folder'")?"folder":"file";f=!1;"up"==b&&(d.previousSibling&&d.previousSibling.previousSibling?(f=d.previousSibling.previousSibling,"UL"==f.tagName&&(f=f.childNodes[f.childNodes.length-1])):d.parentNode.previousSibling&&(f=d.parentNode.previousSibling),f&&(f=f.childNodes[0]));"down"==b&&(d.nextSibling&&d.nextSibling.childNodes[0]?f=d.nextSibling.childNodes[0]:d.nextSibling&&d.nextSibling.nextSibling?f=d.nextSibling.nextSibling:
|
||||
d.parentNode.nextSibling&&(f=d.parentNode.nextSibling.nextSibling),f&&(f=f.childNodes[0]));"left"==b&&"folder"==e&&d.parentNode.previousSibling&&top.ICEcoder.openCloseDir(c,!1);if("right"==b||"enter"==b)"folder"==e?top.ICEcoder.openCloseDir(c,!0):top.ICEcoder.openFile(c.childNodes[1].id.replace(/\|/g,"/"));f&&f.childNodes[1]&&(top.ICEcoder.overFileFolder(e,f.childNodes[1].id),top.ICEcoder.selectFileFolder(a))},openCloseDir:function(a,b){var c,d;a.onclick=function(a){a.ctrlKey||top.ICEcoder.cmdKey||
|
||||
top.ICEcoder.openCloseDir(this,!b)};c=a.parentNode;c.nextSibling&&(c=c.nextSibling);c&&"UL"==c.tagName&&((d="none"==c.style.display)?b=!0:c.style.display="none",a.parentNode.className=a.className=d?"pft-directory dirOpen":"pft-directory");b?top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="lib/get-branch.php?location="+a.childNodes[1].id+"&csrf="+top.ICEcoder.csrf:"UL"==c.tagName&&c.parentNode.removeChild(c);return!1},overFileFolder:function(a,b){ICEcoder.thisFileFolderType=
|
||||
a;ICEcoder.thisFileFolderLink=b},isFileFolder:function(a){return(a=top.get("filesFrame").contentWindow.document.getElementById(a.replace(top.iceRoot,"").replace(/\/$/,"").replace(/\//g,"|")))?-1<a.parentNode.parentNode.className.indexOf("directory")?"folder":"file":!1},selectFileFolder:function(a,b,c){var d,e,f;if(""==top.ICEcoder.thisFileFolderLink)b||a.ctrlKey||top.ICEcoder.cmdKey||top.ICEcoder.deselectAllFiles();else if(top.ICEcoder.thisFileFolderLink)if(e=top.ICEcoder.thisFileFolderLink.replace(/\//g,
|
||||
"|"),d=top.ICEcoder.filesFrame.contentWindow.document.getElementById(e),b||a.ctrlKey||top.ICEcoder.cmdKey)-1<top.ICEcoder.selectedFiles.indexOf(e)?(ICEcoder.selectDeselectFile("deselect",d),top.ICEcoder.selectedFiles.splice(top.ICEcoder.selectedFiles.indexOf(e),1)):(ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(e));else if(c||a.shiftKey){var g=function(a,b,c,d){return("00000000000000000000"+a).substr(-20)};a=!1;b=d.parentNode.parentNode.parentNode;f=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-
|
||||
1];c=e.replace(/\d+/g,g)<f.replace(/\d+/g,g)?e:f;f=e.replace(/\d+/g,g)>f.replace(/\d+/g,g)?e:f;if(0<top.ICEcoder.selectedFiles.length&&c.substr(0,c.lastIndexOf("|"))==f.substr(0,f.lastIndexOf("|")))for(e=0;1E6>e&&("LI"!=b.childNodes[e].nodeName&&e++,d=b.childNodes[e].childNodes[0].childNodes[1],d.id==c&&(a=!0),1==a&&-1==top.ICEcoder.selectedFiles.indexOf(d.id)&&(ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(d.id)),d.id!=f);e+=2);else ICEcoder.selectDeselectFile("select",
|
||||
d),top.ICEcoder.selectedFiles.push(e)}else top.ICEcoder.deselectAllFiles(),ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(e);top.ICEcoder.githubDiff&&(top.get("githubNavSelectedCount").innerHTML="Selected: "+top.ICEcoder.selectedFiles.length,top.get("githubNavCommit").style.color=0<top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavCommit").style.background=0<top.ICEcoder.selectedFiles.length?"#2187e7":"#555",top.get("githubNavSelectedCount").style.color=0<
|
||||
top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavPull").style.color=0<top.ICEcoder.selectedFiles.length?"#fff":"#333",top.get("githubNavPull").style.background=0<top.ICEcoder.selectedFiles.length?"#2187e7":"#555");document.findAndReplace.target[2].innerHTML=top.ICEcoder.selectedFiles[0]?top.t["selected files"]:top.t["all files"];document.findAndReplace.target[3].innerHTML=top.ICEcoder.selectedFiles[0]?top.t["selected filenames"]:top.t["all filenames"];top.ICEcoder.hideFileMenu()},
|
||||
deselectAllFiles:function(){for(var a,b=0;b<top.ICEcoder.selectedFiles.length;b++)a=top.ICEcoder.filesFrame.contentWindow.document.getElementById(top.ICEcoder.selectedFiles[b]),ICEcoder.selectDeselectFile("deselect",a);top.ICEcoder.selectedFiles.length=0},selectDeselectFile:function(a,b){var c;b&&(c=-1<top.ICEcoder.openFiles.indexOf(b.id.replace(/\|/g,"/"))?!0:!1,top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]==b.id.replace(/\|/g,"/")?b.style.backgroundColor="select"==a?top.ICEcoder.tabBGselected:
|
||||
top.ICEcoder.tabBGcurrent:b.style.backgroundColor="select"==a?top.ICEcoder.tabBGselected:b.style.backgroundColor=c?top.ICEcoder.tabBGopen:top.ICEcoder.tabBGnormal,b.style.color="select"==a?top.ICEcoder.tabFGselected:top.ICEcoder.tabFGnormalFile)},boxSelect:function(a,b){var c,d;c=top.ICEcoder.filesFrame.contentWindow.document.getElementById("fmDragBox");"down"==b&&(top.ICEcoder.fmDragBoxStartX=top.ICEcoder.mouseX,top.ICEcoder.fmDragBoxStartY=top.ICEcoder.mouseY,top.ICEcoder.fmDragSelectFirst="",top.ICEcoder.fmDragSelectLast=
|
||||
"");top.ICEcoder.mouseDown&&"drag"==b&&(top.ICEcoder.fmDraggedBox=!0,d=0<top.ICEcoder.mouseX-top.ICEcoder.fmDragBoxStartX,c.style.left=(d?top.ICEcoder.fmDragBoxStartX:top.ICEcoder.mouseX)+"px",c.style.width=Math.abs(top.ICEcoder.mouseX-top.ICEcoder.fmDragBoxStartX)+"px",d=0<top.ICEcoder.mouseY-top.ICEcoder.fmDragBoxStartY,c.style.top=(d?top.ICEcoder.fmDragBoxStartY-70:top.ICEcoder.mouseY-70)+"px",c.style.height=Math.abs(top.ICEcoder.mouseY-top.ICEcoder.fmDragBoxStartY)+"px",""!=top.ICEcoder.thisFileFolderLink&&
|
||||
(""==top.ICEcoder.fmDragSelectFirst?(top.ICEcoder.fmDragSelectFirst=top.ICEcoder.thisFileFolderLink,top.ICEcoder.overFileFolder(0<top.ICEcoder.thisFileFolderLink.indexOf(".")?"file":"folder",top.ICEcoder.fmDragSelectFirst),top.ICEcoder.selectFileFolder(a)):(top.ICEcoder.fmDragSelectLast=top.ICEcoder.thisFileFolderLink,top.ICEcoder.overFileFolder(0<top.ICEcoder.thisFileFolderLink.indexOf(".")?"file":"folder",top.ICEcoder.fmDragSelectLast),top.ICEcoder.selectFileFolder(a,!1,"shiftSim"))));"up"==b&&
|
||||
(c.style.width=0,c.style.height=0)},newFile:function(){top.ICEcoder.newTab("alsoSave")},newFolder:function(){var a,b;a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/");if(b=top.ICEcoder.getInput("Enter new folder name at "+a,""))b=(a+"/"+b).replace(/\/\//,"/"),top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=newFolder&csrf="+top.ICEcoder.csrf,b.replace(/\//g,"|")),top.ICEcoder.serverMessage("<b>"+top.t["Creating Folder"]+"</b><br>"+b)},returnFileAndLine:function(a){var b=
|
||||
1,c=/^([^ ]*)\s+(on\s+)?(line\s+)?(\d+)/.exec(a);null!==c?(b=c[4],a=c[1]):0<a.indexOf("://")?a.lastIndexOf(":")!==a.indexOf("://")&&(b=a.split(":")[2],a=a.substr(0,a.lastIndexOf(":"))):0<a.indexOf(":")&&(b=a.split(":")[1],a=a.split(":")[0]);0<a.indexOf("(")&&0<a.indexOf(")")&&(b=a.split("(")[1].split(")")[0],a=a.split("(")[0]);return[a,b]},openFile:function(a){var b,c;"undefined"!=typeof a&&(b=top.ICEcoder.returnFileAndLine(a),a=b[0],b=b[1]);a&&(top.ICEcoder.thisFileFolderLink=a,top.ICEcoder.thisFileFolderType=
|
||||
"file");"/[NEW]"!=top.ICEcoder.thisFileFolderLink&&!1!==top.ICEcoder.isOpen(top.ICEcoder.thisFileFolderLink)?(top.ICEcoder.switchTab(top.ICEcoder.isOpen(top.ICEcoder.thisFileFolderLink)+1),1<b&&top.ICEcoder.goToLine(b)):""!=top.ICEcoder.thisFileFolderLink&&"file"==top.ICEcoder.thisFileFolderType&&(a=top.ICEcoder.thisFileFolderLink.replace(/\|/g,"/"),c=!0,100<=top.ICEcoder.openFiles.length&&(top.ICEcoder.message(top.t["Sorry you can..."]),c=!1),c&&(top.ICEcoder.shortURL=a,"/[NEW]"!=a?(top.ICEcoder.thisFileFolderLink=
|
||||
top.ICEcoder.thisFileFolderLink.replace(/\//g,"|"),top.ICEcoder.serverQueue("add","lib/file-control.php?action=load&file="+top.ICEcoder.thisFileFolderLink+"&csrf="+top.ICEcoder.csrf+"&lineNumber="+b),top.ICEcoder.serverMessage("<b>"+top.t["Opening File"]+"</b><br>"+top.ICEcoder.shortURL)):top.ICEcoder.createNewTab("new"),top.ICEcoder.fMIconVis("fMView",1)))},openFilesFromList:function(a){for(var b=0;b<a.length;b++)top.ICEcoder.thisFileFolderLink=a[b].replace("|","/"),top.ICEcoder.thisFileFolderType=
|
||||
"file",top.ICEcoder.openFile()},openPrompt:function(){var a;if(a=top.ICEcoder.getInput(top.t["Enter relative file..."],""))-1<a.indexOf("://")?top.ICEcoder.getRemoteFile(a):top.ICEcoder.openFile(a)},getRemoteFile:function(a){var b;"undefined"!=typeof a&&(b=top.ICEcoder.returnFileAndLine(a),a=b[0],b=b[1]);top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=getRemoteFile&csrf="+top.ICEcoder.csrf+"&lineNumber="+b,a);top.ICEcoder.serverMessage("<b>"+top.t.Getting+"</b><br>"+a)},saveFile:function(a){var b,
|
||||
c;a=a?"saveAs":"save";b=ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,"").replace(/\//g,"|");"|[NEW]"==b&&0<top.ICEcoder.selectedFiles.length&&(c=top.ICEcoder.selectedFiles[0],b=-1==c.lastIndexOf(".")||c.lastIndexOf(".")<c.lastIndexOf("|")?c+b:"|[NEW]");b=b.replace("||","|");top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=save&fileMDT="+ICEcoder.openFileMDTs[ICEcoder.selectedTab-1]+"&fileVersion="+ICEcoder.openFileVersions[ICEcoder.selectedTab-1]+"&saveType="+a+"&csrf="+
|
||||
top.ICEcoder.csrf,b);top.ICEcoder.serverMessage("<b>"+top.t.Saving+"</b><br>"+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,""))},renameFile:function(a,b){var c,d;a?c=a.replace(/\|/g,"/"):(c=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"));b||(b=top.ICEcoder.getInput(top.t["Please enter the..."],c));b&&(d=top.ICEcoder.openFiles.indexOf(c.replace(/\|/g,"/")),-1<d&&
|
||||
(top.ICEcoder.openFiles[d]=b,closeTabLink='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a>',c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//,""),
|
||||
top.get("tab"+(d+1)).title=b),top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=rename&oldFileName="+a.replace(/\|/g,"/")+"&csrf="+top.ICEcoder.csrf,b),top.ICEcoder.serverMessage("<b>"+top.t["Renaming to"]+"</b><br>"+b),top.ICEcoder.setPreviousFiles())},moveFile:function(a,b){var c,d;b&&(d=top.ICEcoder.openFiles.indexOf(a.replace(/\|/g,"/")),-1<d&&(top.ICEcoder.openFiles[d]=b,closeTabLink='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a>',
|
||||
c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//,""),top.get("tab"+(d+1)).title=b),top.ICEcoder.ask("Are you sure you want to move file "+a+" to "+b+" ?")&&(top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=move&oldFileName="+a.replace(/\//g,"|")+"&csrf="+top.ICEcoder.csrf,b.replace(/\//g,"|")),top.ICEcoder.serverMessage("<b>"+top.t["Moving to"]+"</b><br>"+b)),top.ICEcoder.setPreviousFiles())},deleteFiles:function(a){var b;
|
||||
a=a?a:top.ICEcoder.selectedFiles;b=a.toString().replace(/\|/g,"/").replace(/,/g,"\n");0<a.length&&top.ICEcoder.ask("Delete:\n\n"+b+"?")&&(top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=delete&&csrf="+top.ICEcoder.csrf,a.join(";")),top.ICEcoder.serverMessage("<b>"+top.t["Deleting File"]+"</b><br>"+b))},copyFiles:function(a,b,c){top.ICEcoder.copiedFiles=[];for(var d=0;d<a.length;d++)top.ICEcoder.copiedFiles[d]=a[d];b||(top.get("fmMenuPasteOption").style.display="block");c||top.ICEcoder.hideFileMenu()},
|
||||
pasteFiles:function(a){if(top.ICEcoder.copiedFiles)for(var b=0;b<top.ICEcoder.copiedFiles.length;b++)"|"!=top.ICEcoder.copiedFiles[b]?(top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=paste&location="+a+"&csrf="+top.ICEcoder.csrf,top.ICEcoder.copiedFiles[b]),top.ICEcoder.serverMessage("<b>"+top.t["Pasting File"]+"</b><br>"+top.ICEcoder.copiedFiles[b].toString().replace(/\|/g,"/").replace(/,/g,"\n"))):top.ICEcoder.message(top.t["Sorry cannot paste..."]);else top.ICEcoder.message(top.t["Nothing to paste..."])},
|
||||
duplicateFiles:function(a){var b;top.ICEcoder.copiedFiles&&(b=top.ICEcoder.copiedFiles);top.ICEcoder.copyFiles(a,"dontShowPaste","dontHide");a=a[0].substr(0,a[0].lastIndexOf("|"));top.ICEcoder.pasteFiles(a);"undefined"!=typeof b&&(top.ICEcoder.copiedFiles=b)},uploadFilesSelect:function(a){top.get("uploadDir").value=a;top.get("fileInput").click()},uploadFilesSubmit:function(a){""!=top.get("fileInput").value&&(top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("uploadFilesForm").submit(),
|
||||
event.preventDefault())},showHideFileNav:function(a,b){var c=["optionsFile","optionsEdit","optionsSource","optionsHelp"];if("hide"==a)fileNavInt=setTimeout(function(){for(var a=0;a<c.length;a++)top.ICEcoder.showHide("hide",top.get(c[a])),top.get(c[a]+"Nav").style.color=""},150);else for(var d=0;d<c.length;d++)top.ICEcoder.showHide("hide",top.get(c[d])),top.get(c[d]+"Nav").style.color="";get("fileOptions").style.opacity=0;"show"==a&&("undefined"!=typeof fileNavInt&&clearTimeout(fileNavInt),top.ICEcoder.showHide(a,
|
||||
top.get(b)),top.get(b+"Nav").style.color="#fff",get("fileOptions").style.opacity=1)},isPathFolder:function(a){a=top.ICEcoder.filesFrame.contentDocument.getElementsByClassName("pft-directory");for(var b=top.ICEcoder.selectedFiles[0],c,d=0;d<a.length;d++)if(c=a[d],"underfined"!=typeof c&&(c=c.childNodes[0],"undefined"!=typeof c&&(c=c.childNodes[1],"undefined"!=typeof c&&b===c.getAttribute("id"))))return!0;return!1},checkExists:function(a){var b,c,d;a=a.replace(/\|/g,"/");0===a.indexOf(top.iceRoot)&&
|
||||
(a=a.replace(top.iceRoot,""));b=top.ICEcoder.xhrObj();b.onreadystatechange=function(){4==b.readyState&&(c=JSON.parse(b.responseText),c.action.timeEnd=(new Date).getTime(),c.action.timeTaken=c.action.timeEnd-c.action.timeStart,0<=["raw","both"].indexOf(top.ICEcoder.fileDirResOutput)&&console.log(b.responseText),0<=["object","both"].indexOf(top.ICEcoder.fileDirResOutput)&&console.log(c),top.ICEcoder.lastFileDirCheckStatusObj=c,200==b.status?c.status.error?(top.ICEcoder.message(c.status.errorMsg),console.log("ICEcoder error info for your request..."),
|
||||
console.log(c),top.ICEcoder.serverMessage(),top.ICEcoder.serverQueue("del",0)):eval(c.action.doNext):(top.ICEcoder.message(top.t["Sorry there was..."]),console.log("ICEcoder error info for your request..."),console.log(c),top.ICEcoder.serverMessage(),top.ICEcoder.serverQueue("del",0)))};b.open("POST","lib/file-control-xhr.php?action=checkExists&csrf="+top.ICEcoder.csrf,!0);b.setRequestHeader("Content-type","application/x-www-form-urlencoded");d=(new Date).getTime();b.send("timeStart="+d+"&file="+
|
||||
a)},showMenu:function(a){var b,c;0!=top.ICEcoder.selectedFiles.length&&-1!=top.ICEcoder.selectedFiles.indexOf(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\//g,"|"))||top.ICEcoder.selectFileFolder(a);a=129;c=window.innerHeight;"undefined"!=typeof top.ICEcoder.thisFileFolderLink&&""!=top.ICEcoder.thisFileFolderLink&&(b=this.isPathFolder(top.ICEcoder.selectedFiles[0])?"folder":"file",top.get("folderMenuItems").style.display="folder"==b&&1==top.ICEcoder.selectedFiles.length?
|
||||
"block":"none","folder"==b&&1==top.ICEcoder.selectedFiles.length&&(a+=67,"block"==top.get("fmMenuPasteOption").style.display&&(a+=19)),top.get("singleFileMenuItems").style.display=1<top.ICEcoder.selectedFiles.length?"none":"block",1==top.ICEcoder.selectedFiles.length&&(a+=43),top.get("fileMenu").style.display="inline-block",setTimeout(function(){top.get("fileMenu").style.opacity="1"},4),top.get("fileMenu").style.left=top.ICEcoder.mouseX+20+"px",b=top.ICEcoder.mouseY-top.ICEcoder.filesFrame.contentWindow.document.body.scrollTop-
|
||||
10,b+a>c&&(b-=b+a-c),top.get("fileMenu").style.top=b+"px");return!1},showFileMenu:function(){top.get("fileMenu").style.display="inline-block";setTimeout(function(){top.get("fileMenu").style.opacity="1"},4)},hideFileMenu:function(){top.get("fileMenu").style.display="none";top.get("fileMenu").style.opacity="0"},updateFileManagerList:function(a,b,c,d,e,f,g){var h,k,l,p,n,m,q;if("add"==a&&!top.get("filesFrame").contentWindow.document.getElementById(b.replace(top.iceRoot,"").replace(/\/$/,"").replace(/\//g,
|
||||
"|")+"|"+c)){h="file"==g?"pft-file ext-"+c.substr(c.indexOf(".")+1):"pft-directory";d="file"==g?top.ICEcoder.newFilePerms:top.ICEcoder.newDirPerms;b||(b="/");b=b.replace(top.iceRoot,"/");b=b.replace("//","/");k=top.get("filesFrame").contentWindow.document.getElementById(b.replace(/\//g,"|"));l=k.parentNode.parentNode.nextSibling;p=document.createTextNode("\n");n=777==d?"background: #800; color: #eee":"color: #888";n='<a nohref title="'+b.replace(/\/$/,"")+"/"+c+'" onMouseOver="parentNode.draggable=true;top.ICEcoder.overFileFolder(\''+
|
||||
g+"',this.childNodes[1].id)\" onMouseOut=\"parentNode.draggable=false;top.ICEcoder.overFileFolder('"+g+"','')\" "+("folder"==g?"ondragover=\"if(parentNode.nextSibling && parentNode.nextSibling.tagName != 'UL' && top.ICEcoder.thisFileFolderLink != this.childNodes[1].id) {top.ICEcoder.openCloseDir(this,true);}\"":"")+' onClick="if(!event.ctrlKey && !top.ICEcoder.cmdKey) {'+("folder"==g?"top.ICEcoder.openCloseDir(this,"+("folder"==g?"true":"false")+");":"")+' if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {top.ICEcoder.openFile()}}" style="position: relative; left:-22px"> <span id="'+
|
||||
b.replace(/\/$/,"").replace(/\//g,"|")+"|"+c+'">'+c+'</span> <span style="'+n+'; font-size: 8px" id="'+b.replace(/\/$/,"").replace(/\//g,"|")+"|"+c+'_perms">'+d+"</span></a>";if(!l||3>l.childNodes.length)m=document.createElement("ul"),l=k.parentNode.parentNode,l.parentNode.insertBefore(m,l.nextSibling),m=document.createElement("li"),m.className=h,m.draggable=!1,m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?
|
||||
top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())},m.ondragend=function(){top.ICEcoder.dropFile(this)},m.innerHTML=n,l.nextSibling.appendChild(m),l.nextSibling.appendChild(p);else for(k=0;k<l.childNodes.length;k++)if(l.childNodes[k].className&&(m=0<l.childNodes[k].className.indexOf("directory")?"folder":"file",q=l.childNodes[k].getElementsByTagName("span")[0].innerHTML,m==g&&q>c||"folder"==g&&"file"==m||k==l.childNodes.length-1)){m=document.createElement("li");m.className=
|
||||
h;m.draggable=!1;m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())};m.ondragend=function(){top.ICEcoder.dropFile(this)};m.innerHTML=n;k==l.childNodes.length-1?(l.appendChild(m),l.appendChild(p)):(l.insertBefore(m,l.childNodes[k]),l.insertBefore(p,l.childNodes[k+1]));break}"file"!=g||f||(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-
|
||||
1]=b+c)}"rename"==a&&(f=e.replace(/\//g,"|"),k=top.get("filesFrame").contentWindow.document.getElementById(f),k.innerHTML=c,k.id=b.replace(/\//g,"|")+"|"+c,k.parentNode.title=k.id.replace(/\|/g,"/"),targetElemPerms=top.get("filesFrame").contentWindow.document.getElementById(f+"_perms"),targetElemPerms.id=b.replace(/\//g,"|")+"|"+c+"_perms",top.ICEcoder.renameInChildren(k,e,b,c));"move"==a&&(top.ICEcoder.updateFileManagerList("add",b,c,!1,!1,!1,g),top.ICEcoder.updateFileManagerList("delete",e.substr(0,
|
||||
e.lastIndexOf("/")),c));"chmod"==a&&(f=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),k=top.get("filesFrame").contentWindow.document.getElementById(f.replace(/\//g,"|")+"_perms"),k.style.background=777==d?"#800":"none",k.style.color=777==d?"#eee":"#888",k.innerHTML=d);"delete"==a&&(b||(b=""),b=b.replace(top.iceRoot,"/"),b=b.replace("//","/"),b=b.replace(/\/$/,"").replace(/\//g,"|"),k=(b+"|"+c).replace("||","|"),k=top.get("filesFrame").contentWindow.document.getElementById(k).parentNode.parentNode,
|
||||
top.ICEcoder.openCloseDir(k.childNodes[0],!1),k.parentNode.removeChild(k))},renameInChildren:function(a,b,c,d){var e,f;if(a.parentNode.parentNode.nextSibling&&"UL"==a.parentNode.parentNode.nextSibling.nodeName){a=a.parentNode.parentNode.nextSibling;for(var g=0;g<a.childNodes.length;g++)"LI"==a.childNodes[g].nodeName&&(e=a.childNodes[g].childNodes[0].childNodes[1],e.id=e.id.replace(b.replace(/\//g,"|"),c.replace(/\//g,"|")+"|"+d),e.parentNode.title=e.id.replace(/\|/g,"/"),f=top.get("filesFrame").contentWindow.document.getElementById(e.id).nextSibling.nextSibling,
|
||||
f.id=e.id+"_perms",top.ICEcoder.renameInChildren(e,b,c,d))}},refreshFileManager:function(){top.ICEcoder.showHide("show",top.get("loadingMask"));top.ICEcoder.filesFrame.contentWindow.location.reload(!0);top.ICEcoder.filesFrame.style.opacity="0";top.ICEcoder.filesFrame.onload=function(){top.ICEcoder.filesFrame.style.opacity="1";top.ICEcoder.showHide("hide",top.get("loadingMask"))}},draggingWithKeyTest:function(a){var b;b=a.keyCode?a.keyCode:a.which?a.which:a.charCode;if(224==b||91==b||93==b)top.ICEcoder.cmdKey=
|
||||
!0;top.ICEcoder.draggingWithKey=a.ctrlKey||top.ICEcoder.cmdKey?"CTRL":!1},dropFile:function(a){var b,c;b=a.childNodes[0].childNodes[1].id.replace(/\|/g,"/");fileName=b.substr(b.lastIndexOf("/")+1);"editor"==top.ICEcoder.area&&top.ICEcoder.pasteURL(b);"files"==top.ICEcoder.area&&setTimeout(function(){c="folder"==ICEcoder.thisFileFolderType?ICEcoder.thisFileFolderLink:ICEcoder.thisFileFolderLink.substr(0,ICEcoder.thisFileFolderLink.lastIndexOf("|"));"CTRL"==top.ICEcoder.draggingWithKey?(top.ICEcoder.copyFiles(top.ICEcoder.selectedFiles),
|
||||
top.ICEcoder.pasteFiles(c)):top.ICEcoder.moveFile(b,c.replace(/\|/g,"/")+"/"+fileName)},4);top.ICEcoder.mouseDown=!1},findReplaceOptions:function(){top.get("rText").style.display=top.get("replace").style.display=top.get("rTarget").style.display=document.findAndReplace.connector.value==top.t.and?"inline-block":"none"},findReplace:function(a,b,c,d,e){var f,g,h;if(d)top.get("find").value=top.get("find").value,top.ICEcoder.focus();else{"undefined"==typeof e&&(e=!1);a=a.toLowerCase();f=top.get("replace").value;
|
||||
g=top.get("results");d=ICEcoder.getcMInstance();h=ICEcoder.getcMdiffInstance();if((d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?h:d)&&0<a.length&&document.findAndReplace.target.value==top.t["this document"]){d.getValue().toLowerCase();document.findAndReplace.connector.value==top.t.and&&c&&(document.findAndReplace.replaceAction.value==top.t.replace&&d.getSelection().toLowerCase()==a?d.replaceSelection(f,"around"):document.findAndReplace.replaceAction.value==top.t["replace all"]&&(c=new RegExp(a,
|
||||
"gi"),d.setValue(d.getValue().replace(c,f))));c=d.getValue().toLowerCase();if(!top.ICEcoder.findMode||a!=top.ICEcoder.lastsearch){ICEcoder.results=[];ICEcoder.resultsLines=[];for(f=0;f<c.length;f++)c.substr(f,a.length)==a&&-1==ICEcoder.results.indexOf(f)&&(ICEcoder.results.push(f),-1==ICEcoder.resultsLines.indexOf(d.posFromIndex(f).line+1)&&ICEcoder.resultsLines.push(d.posFromIndex(f).line+1));ICEcoder.lastsearch=a}if(0<ICEcoder.results.length){if(b)g.innerHTML=ICEcoder.results.length+" results";
|
||||
else{if(e)for(ICEcoder.findResult="undefined"==typeof ICEcoder.findResult?ICEcoder.results.length+1:ICEcoder.results.length,f=ICEcoder.results.length-1;0<=f;f--)ICEcoder.results[f]>d.indexFromPos({ch:d.getCursor().ch-1,line:d.getCursor().line})&&ICEcoder.findResult--;else for(f=ICEcoder.findResult=0;f<ICEcoder.results.length;f++)ICEcoder.results[f]<d.indexFromPos({ch:d.getCursor().ch+1,line:d.getCursor().line})&&ICEcoder.findResult++;!e&&ICEcoder.findResult>ICEcoder.results.length-1&&(ICEcoder.findResult=
|
||||
0);e&&1==ICEcoder.findResult&&(ICEcoder.findResult=ICEcoder.results.length+1);g.innerHTML="Highlighted result "+(ICEcoder.findResult+(e?-1:1))+" of "+ICEcoder.results.length+" results";e?(b=d.getSearchCursor(a,{ch:d.getCursor().ch-1,line:d.getCursor().line},!0),b.findPrevious(),b.from()||(b=d.getSearchCursor(a,{line:1E6,ch:1E6},!0),b.findPrevious())):(b=d.getSearchCursor(a,{ch:d.getCursor().ch+1,line:d.getCursor().line},!0),b.findNext(),b.from()||(b=d.getSearchCursor(a,{line:0,ch:0},!0),b.findNext()));
|
||||
d.setSelection(b.from(),b.to());top.ICEcoder.focus();top.ICEcoder.findMode=!0}a=top.ICEcoder.scrollBarVisible?parseInt(top.ICEcoder.content.style.height,10)/d.lineCount():d.defaultTextHeight();b=top.ICEcoder.scrollBarVisible?0:d.heightAtLine(0);e="";for(f=1;f<=d.lineCount();f++)g=-1<ICEcoder.resultsLines.indexOf(f)?d.getCursor().line+1==f?"#b00":"#888":"transparent",e+='<div style="position: absolute; display: block; width: 5px; height:'+a+"px; background: "+g+"; top: "+parseInt(a*(f-1)+b,10)+'px"></div>';
|
||||
top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML=e;top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="inline-block";return!0}g.innerHTML="No results";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none";return!1}""!=a&&c?(e=b=d="",document.findAndReplace.connector.value==top.t.and&&(d="&replace="+f),0<=
|
||||
document.findAndReplace.target.value.indexOf(top.t.file)&&(b="&target="+document.findAndReplace.target.value.replace(/ /g,"-")),document.findAndReplace.target.value==top.t["selected files"]&&(e="&selectedFiles="+top.ICEcoder.selectedFiles.join(":")),a=a.replace(/\'/g,"'"),a!=encodeURIComponent(a)?a="ICEcoder:"+encodeURIComponent(a):a,top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("mediaContainer").innerHTML='<iframe src="lib/multiple-results.php?find='+a+d+b+e+"&csrf="+top.ICEcoder.csrf+
|
||||
'" class="whiteGlow" style="width: 700px; height: 500px"></iframe>'):(g.innerHTML="No results",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none")}},replaceInFile:function(a,b,c){top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=replaceText&find="+b+"&replace="+c+"&csrf="+top.ICEcoder.csrf,a.replace(/\//g,"|"));top.ICEcoder.serverMessage("<b>"+top.t["Replacing text in"]+
|
||||
"</b><br>"+a)},getCaretPosition:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().line;c=a.getCursor().ch;for(var e=d=0;e<b;e++)d+=a.getLine(e).length+1;ICEcoder.caretPos=d+c-1},updateCharDisplay:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;ICEcoder.caretLocationType();ICEcoder.charDisplay.innerHTML=ICEcoder.caretLocType+
|
||||
", Line: "+(a.getCursor().line+1)+", Char: "+a.getCursor().ch},updateVersionsDisplay:function(){var a=top.ICEcoder.openFileVersions[ICEcoder.selectedTab-1];get("versionsDisplay").innerHTML="undefined"!=typeof a?top.ICEcoder.openFileVersions[ICEcoder.selectedTab-1]+" backup"+(1!=a?"s":""):""},updateByteDisplay:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;ICEcoder.byteDisplay.innerHTML=a.getValue().length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
|
||||
",")+" bytes"},showDisplay:function(a){top.ICEcoder.byteDisplay.style.display="byte"==a?"inline-block":"none";top.ICEcoder.charDisplay.style.display="char"==a?"inline-block":"none"},showHide:function(a,b){b.style.visibility="show"==a?"visible":"hidden"},getcMInstance:function(a){return top.ICEcoder.content.contentWindow[isNaN(a)?"new"==a||"new"!=a&&0<ICEcoder.openFiles.length?"cM"+ICEcoder.cMInstances[ICEcoder.selectedTab-1]:"cM1":"cM"+ICEcoder.cMInstances[a-1]]},getcMdiffInstance:function(a){return top.ICEcoder.content.contentWindow[(isNaN(a)?
|
||||
"new"==a||"new"!=a&&0<ICEcoder.openFiles.length?"cM"+ICEcoder.cMInstances[ICEcoder.selectedTab-1]:"cM1":"cM"+ICEcoder.cMInstances[a-1])+"diff"]},getMouseXY:function(a,b){top.ICEcoder.mouseX=a.pageX?a.pageX:a.clientX+document.body.scrollLeft;top.ICEcoder.mouseY=a.pageY?a.pageY:a.clientY+document.body.scrollTop;top.ICEcoder.area=b;"top"!=b&&(top.ICEcoder.mouseY+=70);"editor"==b&&(top.ICEcoder.mouseX+=top.ICEcoder.filesW);top.ICEcoder.dragCursorTest();62<top.ICEcoder.mouseY&&top.ICEcoder.setTabWidths()},
|
||||
dragCursorTest:function(){var a,b;a=top.ICEcoder.mouseX-top.ICEcoder.diffStartX;!1!==top.ICEcoder.draggingTab&&top.ICEcoder.diffStartX&&(-10>=a||10<=a)&&top.ICEcoder.mouseX>parseInt(top.ICEcoder.files.style.width,10)&&(top.ICEcoder.tabDragMouseX=top.ICEcoder.mouseX-parseInt(top.ICEcoder.files.style.width,10)-top.ICEcoder.tabDragMouseXStart,top.ICEcoder.tabDragMove());if(top.ICEcoder.ready&&(top.ICEcoder.mouseDown||(top.ICEcoder.draggingFilesW=!1),a=!ICEcoder.draggingTab&&(top.ICEcoder.mouseX>top.ICEcoder.filesW-
|
||||
7&&top.ICEcoder.mouseX<top.ICEcoder.filesW+7||top.ICEcoder.draggingFilesW)?"w-resize":"auto",top.ICEcoder.content.contentWindow.document&&top.ICEcoder.filesFrame.contentWindow)){top.document.body.style.cursor=a;if(b=top.ICEcoder.content.contentWindow.document.body)b.style.cursor=a;if(b=top.ICEcoder.filesFrame.contentWindow.document.body)b.style.cursor=a}},serverMessage:function(a){var b;b=top.get("serverMessage");a?(b.innerHTML=top.ICEcoder.xssClean(a).replace(/\<b\>/g,"<b>").replace(/\<\/b\>/g,
|
||||
"</b>").replace(/\<br\>/g,"<br>"),b.style.left="0"):setTimeout(function(){b.style.left="2000px"},200);b.style.opacity=a?1:0},cssColorPreview:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();if(a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a){b=a.getLine(a.getCursor().line);for(c=/(#[\da-f]{3}(?:[\da-f]{3})?\b|\b(?:rgb|hsl)a?\([\s\d%,.-]+\)|\b[a-z]+\b)/gi;(d=c.exec(b))&&a.getCursor().ch>d.index+d[0].length;);(b=top.get("content").contentWindow.document.getElementById("cssColor"))&&
|
||||
b.parentNode.removeChild(b);top.ICEcoder.codeAssist&&"CSS"==top.ICEcoder.caretLocType&&(b=top.document.createElement("div"),b.id="cssColor",b.style.position="absolute",b.style.display="block",b.style.width=b.style.height="20px",b.style.zIndex="1000",b.style.background=d?d[0]:"",b.style.cursor="pointer",b.onclick=function(){top.ICEcoder.showColorPicker(d[0])},""==b.style.backgroundColor&&(b.style.display="none"),top.get("header").appendChild(b),a.addWidget(a.getCursor(),top.get("cssColor"),!0))}},
|
||||
showColorPicker:function(a){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='<div id="picker" class="picker"></div><br><br><input type="text" id="color" name="color" value="#000" class="colorValue"><input type="button" onClick="top.ICEcoder.insertColorValue(top.get(\'color\').value)" value="insert >" class="insertColorValue"><br><input type="text" id="colorRGB" name="colorRGB" value="rgb(0,0,0)" class="colorValue"><input type="button" onClick="top.ICEcoder.insertColorValue(top.get(\'colorRGB\').value)" value="insert >" class="insertColorValue">';
|
||||
farbtastic("picker","color");a&&top.get("picker").farbtastic.setColor(a)},initCanvasImage:function(a){var b,c;b=top.get("canvasPicker").getContext("2d");c=new Image;c.crossOrigin="Anonymous";c.src=a.src;c.onload=function(){top.get("canvasPicker").width=a.width;top.get("canvasPicker").height=a.height;b.drawImage(c,0,0,a.width,a.height)};top.document.getElementById("floatingContainer").style.backgroundSize=5*a.naturalWidth+"px "+5*a.naturalHeight+"px"},interactCanvasImage:function(a){var b,c,d,e,f,
|
||||
g,h,k,l,p,n,m,q;b=top.get("canvasPicker").getContext("2d");top.get("canvasPicker").onmousemove=function(u){c=u.pageX-this.offsetLeft;d=u.pageY-this.offsetTop;e=b.getImageData(c,d,1,1).data;f=e[0];g=e[1];h=e[2];k=f+","+g+","+h;l=top.ICEcoder.rgbToHex(f,g,h);top.get("rgbMouseXY").value=k;top.get("hexMouseXY").value="#"+l;top.get("hexMouseXY").style.backgroundColor=top.get("rgbMouseXY").style.backgroundColor="#"+l;p=128>f||128>g||128>h&&200>f&&200>g&&50<h?"#fff":"#000";top.get("hexMouseXY").style.color=
|
||||
top.get("rgbMouseXY").style.color=p;n=get("floatingContainer");n.style.left=top.ICEcoder.mouseX+20+"px";n.style.top=top.ICEcoder.mouseY+"px";m=-(a.naturalWidth/a.width*c*5)+25;q=-(a.naturalHeight/a.height*d*5)+25;n.style.backgroundPosition=m+"px "+q+"px"};top.get("canvasPicker").onmouseover=function(a){get("floatingContainer").style.visibility="visible"};top.get("canvasPicker").onmouseout=function(a){get("floatingContainer").style.visibility="hidden"};top.get("canvasPicker").onclick=function(){top.get("rgb").value=
|
||||
top.get("rgbMouseXY").value;top.get("hex").value=top.get("hexMouseXY").value;top.get("hex").style.backgroundColor=top.get("rgb").style.backgroundColor=top.get("hex").value;top.get("hex").style.color=top.get("rgb").style.color=p}},rgbToHex:function(a,b,c){return top.ICEcoder.toHex(a)+top.ICEcoder.toHex(b)+top.ICEcoder.toHex(c)},toHex:function(a){a=parseInt(a,10);if(isNaN(a))return"00";a=Math.max(0,Math.min(a,255));return"0123456789abcdef".charAt((a-a%16)/16)+"0123456789abcdef".charAt(a%16)},insertColorValue:function(a){var b,
|
||||
c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?c:b;c=b.getTokenAt(b.getCursor());b.replaceRange(a,{line:b.getCursor().line,ch:c.start},{line:b.getCursor().line,ch:1E6})},fMIconVis:function(a,b){var c;if(c=top.get(a))c.style.opacity=b},isOpen:function(a){a=a.replace(/\|/g,"/").replace(top.docRoot+top.iceRoot,"");a=top.ICEcoder.openFiles.indexOf(a);return-1!=a?a:!1},startPluginIntervals:function(a,b,c,d){-1<b.indexOf("?")&&(b=b+"&csrf="+
|
||||
top.ICEcoder.csrf);top.ICEcoder["plugTimer"+a]=-1<["_parent","_top","_self",""].indexOf(c)?top.ICEcoder["plugTimer"+a]=setInterval("window.location='"+b+"'",6E4*d):0==c.indexOf("fileControl")?top.ICEcoder["plugTimer"+a]=setInterval(function(){top.ICEcoder.serverQueue("add",b);top.ICEcoder.serverMessage(c.split(":")[1])},6E4*d):top.ICEcoder["plugTimer"+a]=setInterval("window.open('"+b+"','"+c+"')",6E4*d);top.ICEcoder.pluginIntervalRefs.push(a)},codeAssistToggle:function(){var a,b;top.ICEcoder.codeAssist=
|
||||
!top.ICEcoder.codeAssist;top.get("codeAssistDisplay").style.backgroundPosition=top.ICEcoder.codeAssist?"0 0":"-16px 0";top.ICEcoder.cssColorPreview();top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?"diff":!1);for(i=0;i<top.ICEcoder.cMInstances.length;i++)if(a=top.ICEcoder.openFiles[i],a=a.split("."),a=a[a.length-1],"js"==a||"json"==a)a=top.ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[i]],b=top.ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[i]+"diff"],
|
||||
top.ICEcoder.codeAssist?(a.setOption("lint",!0),b.setOption("lint",!0)):(a.clearGutter("CodeMirror-lint-markers"),a.setOption("lint",!1),b.clearGutter("CodeMirror-lint-markers"),b.setOption("lint",!1))},serverQueue:function(a,b,c){var d,e,f,g,h;d=ICEcoder.getcMInstance();for(f=e=0;f<ICEcoder.serverQueueItems.length;f++)0<ICEcoder.serverQueueItems[f].indexOf("action=save")&&e++;e++;if("add"==a)ICEcoder.serverQueueItems.push(b),0<b.indexOf("action=save")&&(f=document.createElement("textarea"),f.setAttribute("id",
|
||||
"saveTemp"+e),document.body.appendChild(f),top.get("saveTemp"+e).value=d.getValue());else if("del"==a){if(ICEcoder.serverQueueItems[0]&&0<ICEcoder.serverQueueItems[0].indexOf("action=save")){d=e-1;for(f=1;f<d;f++)top.get("saveTemp"+f).value=top.get("saveTemp"+(f+1)).value;d=top.get("saveTemp"+d);d.parentNode.removeChild(d)}ICEcoder.serverQueueItems.splice(0,1)}if("del"==a&&1<=ICEcoder.serverQueueItems.length||1==ICEcoder.serverQueueItems.length)b&&-1==b.indexOf("saveFiles=")&&-1==b.indexOf("action=load")?
|
||||
(g=top.ICEcoder.xhrObj(),g.onreadystatechange=function(){4==g.readyState&&(h=JSON.parse(g.responseText),h.action.timeEnd=(new Date).getTime(),h.action.timeTaken=h.action.timeEnd-h.action.timeStart,0<=["raw","both"].indexOf(top.ICEcoder.fileDirResOutput)&&console.log(g.responseText),0<=["object","both"].indexOf(top.ICEcoder.fileDirResOutput)&&console.log(h),200==g.status?h.status.error?(top.ICEcoder.message(h.status.errorMsg),console.log("ICEcoder error info for your request..."),console.log(h),top.ICEcoder.serverMessage(),
|
||||
top.ICEcoder.serverQueue("del",0)):eval(h.action.doNext):(top.ICEcoder.message(top.t["Sorry there was..."]),console.log("ICEcoder error info for your request..."),console.log(h),top.ICEcoder.serverMessage(),top.ICEcoder.serverQueue("del",0)))},g.open("POST",ICEcoder.serverQueueItems[0],!0),g.setRequestHeader("Content-type","application/x-www-form-urlencoded"),a=(new Date).getTime(),0<b.indexOf("action=save")?g.send("timeStart="+a+"&file="+c+"&contents="+encodeURIComponent(top.document.getElementById("saveTemp1").value)):
|
||||
g.send("timeStart="+a+"&file="+c)):setTimeout(function(){"undefined"!=typeof ICEcoder.serverQueueItems[0]&&(top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href=ICEcoder.serverQueueItems[0])},1)},cancelAllActions:function(){window.stop();0<ICEcoder.serverQueueItems.length&&ICEcoder.serverQueueItems.splice(1,ICEcoder.serverQueueItems.length);top.ICEcoder.showHide("hide",top.get("loadingMask"));top.ICEcoder.serverMessage('<b style="color: #d00">'+top.t["Cancelled tasks"]+"</b>");setTimeout(function(){top.ICEcoder.serverMessage()},
|
||||
2E3)},setPreviousFiles:function(){var a;a=top.ICEcoder.openFiles.join(",").replace(/\//g,"|").replace(/(\|\[NEW\])|(,\|\[NEW\])/g,"").replace(/(^,)|(,$)/g,"");""==a&&(a="CLEAR");top.ICEcoder.serverQueue("add","lib/settings.php?saveFiles="+a+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.updateLast10List(a)},updateLast10List:function(a){var b,c,d;a=a.split(",");for(var e=0;e<a.length;e++)"CLEAR"!=a[e]&&(b='<li class="pft-file ext-'+a[e].substring(a[e].lastIndexOf(".")+1)+'" style="margin-left: -21px"><a style="cursor:pointer" onclick="top.ICEcoder.openFile(\''+
|
||||
a[e].replace(/\|/g,"/")+"')\">"+a[e].replace(/\|/g,"/")+"</a></li>\n",c=top.ICEcoder.content.contentWindow.document.getElementById("last10Files"),-1==c.innerHTML.indexOf(b)&&(d=c.innerHTML.split("\n"),(10<=d.length||'<div style="display: inline-block; margin-left: -39px; margin-top: -4px">[none]</div><br><br>'==d[0]||""==d[d.length-1])&&d.pop(),c.innerHTML=b+d.join("\n")))},autoOpenFiles:function(){if(0<top.ICEcoder.previousFiles.length&&top.ICEcoder.ask(top.t["Open previous files"]+"\n\n"+top.ICEcoder.previousFiles.length+
|
||||
" files:\n"+top.ICEcoder.previousFiles.join("\n").replace(/\|/g,"/").replace(new RegExp(top.docRoot+top.iceRoot,"gi"),"")))for(var a=0;a<top.ICEcoder.previousFiles.length;a++)top.ICEcoder.thisFileFolderLink=top.ICEcoder.previousFiles[a].replace("|","/"),top.ICEcoder.thisFileFolderType="file",top.ICEcoder.openFile()},settingsScreen:function(a){a||(top.get("mediaContainer").innerHTML='<iframe src="lib/settings-screen.php" class="whiteGlow" style="width: 970px; height: 610px"></iframe>');top.ICEcoder.showHide(a?
|
||||
"hide":"show",top.get("blackMask"))},helpScreen:function(){top.get("mediaContainer").innerHTML='<iframe src="lib/help.php" class="whiteGlow" style="width: 840px; height: 465px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},versionsScreen:function(a,b){top.get("mediaContainer").innerHTML='<iframe src="lib/backup-versions.php?file='+a+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 840px; height: 465px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},showManual:function(a,
|
||||
b){var c;c=b?"#"+b:"";top.get("mediaContainer").innerHTML='<iframe src="https://icecoder.net/manual?version='+a+c+'" class="whiteGlow" style="width: 800px; height: 470px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},propertiesScreen:function(a){top.get("mediaContainer").innerHTML='<iframe src="lib/properties.php?fileName='+a.replace(/\//g,"|")+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 660px; height: 330px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},
|
||||
pluginsManager:function(){top.get("mediaContainer").innerHTML='<iframe src="lib/plugins-manager.php" class="whiteGlow" style="width: 800px; height: 450px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},githubAction:function(a){top.get("mediaContainer").innerHTML='<iframe src="lib/github.php?action='+a+"&selectedFiles="+top.ICEcoder.selectedFiles.join(";")+"&csrf="+top.ICEcoder.csrf+'" class="whiteGlow" style="width: 340px; height: 340px"></iframe>';top.ICEcoder.showHide("show",top.get("blackMask"))},
|
||||
githubTokenAsk:function(a){if(githubAuthToken=top.ICEcoder.getInput(top.t["Please enter your..."],""))top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="lib/github.php?action=auth&token="+githubAuthToken+"&goNext="+a+"&csrf="+top.ICEcoder.csrf,githubAuthToken=""},showHideGithubNav:function(a){top.get("githubNav").style.display="show"==a?"block":"none";top.get("fileNav").style.display="show"==a?"none":"block"},githubManager:function(){top.ICEcoder.githubAuthTokenSet?(top.get("mediaContainer").innerHTML=
|
||||
'<iframe src="lib/github-manager.php" class="whiteGlow" style="width: 660px; height: 450px"></iframe>',top.ICEcoder.showHide("show",top.get("blackMask"))):top.ICEcoder.githubTokenAsk("showManager")},githubDiffToggle:function(){var a;if(!top.ICEcoder.githubAuthTokenSet)top.ICEcoder.githubTokenAsk("loadFiles");else if(top.ICEcoder.githubDiff||top.ICEcoder.ask(top.t["This will compare..."]))top.ICEcoder.githubDiff=!top.ICEcoder.githubDiff,a=top.ICEcoder.githubDiff?"true":"false",top.ICEcoder.filesFrame.src=
|
||||
"files.php?githubDiff="+a+"&csrf="+top.ICEcoder.csrf},useNewSettings:function(a,b,c,d,e,f,g,h,k,l,p,n,m,q,u,v,w,x){var r,t=a.slice(0,a.lastIndexOf("?")),t=t.slice(t.lastIndexOf("/")+1,t.lastIndexOf("."));top.ICEcoder.theme!==t&&(top.ICEcoder.theme=t,"editor"==top.ICEcoder.theme&&(top.ICEcoder.theme="icecoder"),r=document.createElement("link"),r.setAttribute("rel","stylesheet"),r.setAttribute("type","text/css"),r.setAttribute("href",a),top.ICEcoder.content.contentWindow.document.getElementsByTagName("head")[0].appendChild(r),
|
||||
r=-1<"3024-day base16-light eclipse elegant mdn-like neat neo paraiso-light solarized the-matrix xq-light".split(" ").indexOf(top.ICEcoder.theme)?"#ccc":-1<"3024-night blackboard colorforth liquibyte night tomorrow-night-bright tomorrow-night-eighties vibrant-ink".split(" ").indexOf(top.ICEcoder.theme)?"#888":"#000",top.ICEcoder.switchTab(top.ICEcoder.selectedTab));b!=top.ICEcoder.codeAssist&&(top.get("codeAssist").checked=b,top.ICEcoder.codeAssistToggle());c!=top.ICEcoder.lockedNav&&(top.ICEcoder.lockUnlockNav(),
|
||||
ICEcoder.changeFilesW(c?"expand":"contract"),top.ICEcoder.hideFileMenu());a=top.document.styleSheets[0];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.filesFrame.contentWindow.document.styleSheets[3];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.content.contentWindow.document.styleSheets[4];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a[b][4].style["border-left-width"]=f?"1px":"0";a[b][4].style["margin-left"]=f?"-1px":"0";a[b][2].style.cssText="background-color: "+
|
||||
r+" !important";top.ICEcoder.lineWrapping=h;top.ICEcoder.indentWithTabs=k;top.ICEcoder.indentSize=p;top.ICEcoder.indentAuto=l;for(f=0;f<ICEcoder.cMInstances.length;f++)ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].setOption("lineWrapping",top.ICEcoder.lineWrapping),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].setOption("indentWithTabs",top.ICEcoder.indentWithTabs),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].setOption("indentUnit",top.ICEcoder.indentSize),
|
||||
ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].setOption("tabSize",top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].refresh(),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].setOption("lineWrapping",top.ICEcoder.lineWrapping),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].setOption("indentWithTabs",top.ICEcoder.indentWithTabs),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].setOption("indentUnit",
|
||||
top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].setOption("tabSize",top.ICEcoder.indentSize),ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].refresh();d!=top.ICEcoder.tagWrapperCommand&&(top.ICEcoder.tagWrapperCommand=d);e!=top.ICEcoder.autoComplete&&(top.ICEcoder.autoComplete=e);top.get("plugins").style.left="left"==n?"0":"auto";top.get("plugins").style.right="right"==n?"0":"auto";top.ICEcoder.bugFilePaths=m;top.ICEcoder.bugFileCheckTimer=
|
||||
q;top.ICEcoder.bugFileMaxLines=u;""!=top.ICEcoder.bugFilePaths[0]?top.ICEcoder.startBugChecking():"undefined"!=typeof top.ICEcoder.bugFileCheckInt&&clearInterval(top.ICEcoder.bugFileCheckInt);top.ICEcoder.splitPane&&top.ICEcoder.updateDiffs();top.ICEcoder.githubAuthTokenSet=v;top.ICEcoder.updateDiffOnSave=w;x&&top.ICEcoder.refreshFileManager()},updateResultsDisplay:function(a){ICEcoder.findReplace(top.get("find").value,!0,!1);top.get("results").style.display="show"==a?"inline-block":"none"},fullScreenSwitcher:function(){"undefined"!=
|
||||
typeof document.cancelFullScreen?document.fullScreen?document.cancelFullScreen():document.body.requestFullScreen():"undefined"!=typeof document.mozCancelFullScreen?document.mozFullScreen?document.mozCancelFullScreen():document.body.mozRequestFullScreen():"undefined"!=typeof document.webkitCancelFullScreen&&(document.webkitIsFullScreen?document.webkitCancelFullScreen():document.body.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT))},zipIt:function(a){a=a.replace(/\//g,"|");top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href=
|
||||
"plugins/zip-it/index.php?zip="+a+"&csrf="+top.ICEcoder.csrf},downloadFile:function(a){a=a.replace(/\//g,"|");top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="lib/download.php?file="+a+"&csrf="+top.ICEcoder.csrf},chmod:function(a,b){a=a.replace(top.iceRoot,"");top.ICEcoder.showHide("hide",top.get("blackMask"));top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=perms&perms="+b+"&csrf="+top.ICEcoder.csrf,a);top.ICEcoder.serverMessage("<b>chMod "+b+" on </b><br>"+
|
||||
a.replace(/\|/g,"/"))},openPreviewWindow:function(){if(0<top.ICEcoder.openFiles.length){var a,b,c,d,e;d=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];a=d.substr(d.lastIndexOf("/")+1);e=a.substr(a.lastIndexOf(".")+1);a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;top.ICEcoder.previewWindowLoading=!0;top.ICEcoder.previewWindow=window.open(d,"previewWindow",500,500);-1<["md"].indexOf(e)?top.ICEcoder.previewWindow.onload=function(){top.ICEcoder.previewWindowLoading=
|
||||
!1;top.ICEcoder.previewWindow.document.documentElement.innerHTML=mmd(c.getValue())}:top.ICEcoder.previewWindow.onload=function(){top.ICEcoder.previewWindowLoading=!1;try{top.ICEcoder.doPesticide()}catch(a){}try{top.ICEcoder.doStatsJS("open")}catch(a){}try{top.ICEcoder.doResponsive()}catch(a){}}}},logout:function(){window.location=window.location+"?logout&csrf="+top.ICEcoder.csrf},message:function(a){alert(a)},ask:function(a){return confirm(a)},getInput:function(a,b){return prompt(a,b)},dataMessage:function(a){var b;
|
||||
b=top.ICEcoder.content.contentWindow.document.getElementById("dataMessage");b.style.display="block";b.innerHTML=a},update:function(){confirm(top.t["Please note for..."])?(top.ICEcoder.showHide("show",top.get("loadingMask")),window.location="lib/updater.php"):window.open("https://icecoder.net")},updated:function(){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='<h1 style="color: #fff; cursor: default">Thanks for updating to v'+top.ICEcoder.versionNo+'!</h1><h2 style="color: #888; cursor: default">Click anywhere to continue using ICEcoder...</h2>'},
|
||||
xhrObj:function(){try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml3.XMLHTTP")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(a){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){}return null},openBugReport:function(){var a;"off"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["You can start..."]);"error"==top.ICEcoder.bugReportStatus&&
|
||||
top.ICEcoder.message(top.t["Error cannot find..."]);"ok"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["No new errors..."]);"bugs"==top.ICEcoder.bugReportStatus&&(a=top.ICEcoder.openFiles.indexOf(top.ICEcoder.bugReportPath.replace(/\|/g,"/")),-1<a&&top.ICEcoder.closeTab(a+1,"dontSetPV","dontAsk"),top.ICEcoder.openFile(top.ICEcoder.bugReportPath),top.ICEcoder.bugFilesSizesSeen=top.ICEcoder.bugFilesSizesActual)},startBugChecking:function(){var a;0!==top.ICEcoder.bugFileCheckTimer?("undefined"!=
|
||||
typeof top.ICEcoder.bugFileCheckInt&&clearInterval(top.ICEcoder.bugFileCheckInt),top.ICEcoder.bugFilesSizesSeen=[],top.ICEcoder.bugFileCheckInt=setInterval(function(){a="lib/bug-files-check.php?";a+="files="+(""!==top.ICEcoder.bugFilePaths[0]?top.ICEcoder.bugFilePaths.join():"null").replace(/\//g,"|");a+="&filesSizesSeen=";if(top.ICEcoder.bugFilesSizesSeen.length!=top.ICEcoder.bugFilePaths.length)for(var b=0;b<top.ICEcoder.bugFilePaths.length;b++)top.ICEcoder.bugFilesSizesSeen[b]="null";a+=top.ICEcoder.bugFilesSizesSeen.join();
|
||||
a+="&maxLines="+top.ICEcoder.bugFileMaxLines;a+="&csrf="+top.ICEcoder.csrf;var c=top.ICEcoder.xhrObj();c.onreadystatechange=function(){if(4==c.readyState&&200==c.status){var a=JSON.parse(c.responseText);top.get("bugIcon").style.backgroundPosition="off"==a.result?"0 0":"ok"==a.result?"-32px 0":"bugs"==a.result?"-48px 0":"-16px 0";top.ICEcoder.bugReportStatus=a.result;"null"==top.ICEcoder.bugFilesSizesSeen[0]&&(top.ICEcoder.bugFilesSizesSeen=a.filesSizesSeen);top.ICEcoder.bugFilesSizesActual=a.filesSizesSeen;
|
||||
top.ICEcoder.bugReportPath=a.bugReportPath}};c.open("GET",a,!0);c.send()},parseInt(1E3*top.ICEcoder.bugFileCheckTimer,10)),top.ICEcoder.bugReportStatus="ok"):"undefined"!=typeof top.ICEcoder.bugFileCheckInt&&clearInterval(top.ICEcoder.bugFileCheckInt)},xssClean:function(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},printCode:function(){var a,b;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?
|
||||
b:a;b=top.ICEcoder.filesFrame.contentWindow.frames.fileControl;b.window.document.body.innerHTML='<!DOCTYPE html><head><title>ICEcoder code output</title></head><body><pre style="white-space: pre-wrap">'+top.ICEcoder.xssClean(a.getValue())+"</pre></body></html>";b.focus();b.print();a.focus()},indicateChanges:function(){var a;if(!top.ICEcoder.loadingFile){a="ICEcoder v "+top.ICEcoder.versionNo;for(var b=1;b<=top.ICEcoder.savedPoints.length;b++)if(top.ICEcoder.savedPoints[b-1]!=top.ICEcoder.getcMInstance(b).changeGeneration()){a+=
|
||||
" \u2744";break}top.document.title=a}},switchTab:function(a,b){var c,d;ICEcoder.selectedTab=a;c=ICEcoder.getcMInstance();d=ICEcoder.getcMdiffInstance();if(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c){ICEcoder.switchMode();for(var f=0;f<ICEcoder.cMInstances.length;f++)ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]].getWrapperElement().style.display="none",ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[f]+"diff"].getWrapperElement().style.display="none";c.setOption("theme",
|
||||
top.ICEcoder.theme);d.setOption("theme",top.ICEcoder.theme+" diff");c.getWrapperElement().style.display="block";d.getWrapperElement().style.display="block";top.ICEcoder.splitPane&&top.ICEcoder.updateDiffs();b||setTimeout(function(){top.ICEcoder.focus()},4);c.refresh();d.refresh();ICEcoder.redoTabHighlight(ICEcoder.selectedTab);top.ICEcoder.findMode=!1;ICEcoder.findReplace(top.get("find").value,!0,!1);top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay()}},
|
||||
newTab:function(){var a;ICEcoder.cMInstances.push(ICEcoder.nextcMInstance);ICEcoder.selectedTab=ICEcoder.cMInstances.length;ICEcoder.showHide("show",ICEcoder.content);ICEcoder.content.contentWindow.createNewCMInstance(ICEcoder.nextcMInstance);ICEcoder.setLayout();ICEcoder.thisFileFolderType="file";ICEcoder.thisFileFolderLink="/[NEW]";ICEcoder.openFile();a=ICEcoder.getcMInstance("new");ICEcoder.switchTab(ICEcoder.openFiles.length);a.removeLineClass(ICEcoder["cMActiveLinecM"+ICEcoder.cMInstances[top.ICEcoder.selectedTab-
|
||||
1]],"background");ICEcoder["cMActiveLinecM"+ICEcoder.selectedTab]=a.addLineClass(0,"background","cm-s-activeLine");ICEcoder.nextcMInstance++},createNewTab:function(){var a;top.ICEcoder.openFiles.push(top.ICEcoder.shortURL);top.get("tab"+top.ICEcoder.openFiles.length).style.display="inline-block";a=top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1];top.get("tab"+top.ICEcoder.openFiles.length).innerHTML='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a> '+
|
||||
a.slice(a.lastIndexOf("/")).replace(/\//,"");top.get("tab"+top.ICEcoder.openFiles.length).title="/"+top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1].replace(/\//,"");top.ICEcoder.setTabWidths();top.ICEcoder.redoTabHighlight(top.ICEcoder.openFiles.length);top.ICEcoder.selectedTab=top.ICEcoder.openFiles.length;top.ICEcoder.savedPoints.push(0);top.ICEcoder.setPreviousFiles()},nextTab:function(){top.ICEcoder.switchTab(top.ICEcoder.selectedTab+1<=top.ICEcoder.openFiles.length?top.ICEcoder.selectedTab+
|
||||
" \u2744";break}top.document.title=a}},switchTab:function(a,b){var c,d;ICEcoder.selectedTab=a;c=ICEcoder.getcMInstance();d=ICEcoder.getcMdiffInstance();if(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c){ICEcoder.switchMode();for(var e=0;e<ICEcoder.cMInstances.length;e++)ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]].getWrapperElement().style.display="none",ICEcoder.content.contentWindow["cM"+ICEcoder.cMInstances[e]+"diff"].getWrapperElement().style.display="none";c.setOption("theme",
|
||||
top.ICEcoder.theme);d.setOption("theme",top.ICEcoder.theme+" diff");c.getWrapperElement().style.display="block";d.getWrapperElement().style.display="block";top.ICEcoder.splitPane&&top.ICEcoder.updateDiffs();b||setTimeout(function(){top.ICEcoder.focus()},4);c.refresh();d.refresh();ICEcoder.redoTabHighlight(ICEcoder.selectedTab);top.ICEcoder.findMode=!1;ICEcoder.findReplace(top.get("find").value,!0,!1);top.ICEcoder.updateVersionsDisplay();top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();
|
||||
top.ICEcoder.updateByteDisplay()}},newTab:function(a){var b;ICEcoder.cMInstances.push(ICEcoder.nextcMInstance);ICEcoder.selectedTab=ICEcoder.cMInstances.length;ICEcoder.showHide("show",ICEcoder.content);ICEcoder.content.contentWindow.createNewCMInstance(ICEcoder.nextcMInstance);ICEcoder.setLayout();ICEcoder.thisFileFolderType="file";ICEcoder.thisFileFolderLink="/[NEW]";ICEcoder.openFile();b=ICEcoder.getcMInstance("new");ICEcoder.switchTab(ICEcoder.openFiles.length);b.removeLineClass(ICEcoder["cMActiveLinecM"+
|
||||
ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]],"background");ICEcoder["cMActiveLinecM"+ICEcoder.selectedTab]=b.addLineClass(0,"background","cm-s-activeLine");ICEcoder.nextcMInstance++;a&&top.ICEcoder.saveFile()},createNewTab:function(a){var b;top.ICEcoder.openFiles.push(top.ICEcoder.shortURL);top.get("tab"+top.ICEcoder.openFiles.length).style.display="inline-block";b=top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1];top.get("tab"+top.ICEcoder.openFiles.length).innerHTML='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a> '+
|
||||
b.slice(b.lastIndexOf("/")).replace(/\//,"");top.get("tab"+top.ICEcoder.openFiles.length).title="/"+top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1].replace(/\//,"");top.ICEcoder.setTabWidths();top.ICEcoder.redoTabHighlight(top.ICEcoder.openFiles.length);top.ICEcoder.selectedTab=top.ICEcoder.openFiles.length;top.ICEcoder.savedPoints.push(0);a||top.ICEcoder.setPreviousFiles()},nextTab:function(){top.ICEcoder.switchTab(top.ICEcoder.selectedTab+1<=top.ICEcoder.openFiles.length?top.ICEcoder.selectedTab+
|
||||
1:1,"noFocus")},previousTab:function(){top.ICEcoder.switchTab(1<=top.ICEcoder.selectedTab-1?top.ICEcoder.selectedTab-1:top.ICEcoder.openFiles.length,"noFocus")},renameTab:function(a,b){var c;top.ICEcoder.openFiles[a-1]=b;c=top.ICEcoder.openFiles[a-1];top.get("tab"+a).innerHTML='<a nohref onClick="top.ICEcoder.closeTab(parseInt(this.parentNode.id.slice(3),10))"><img src="images/nav-close.gif" class="closeTab" onMouseOver="prevBG=this.style.backgroundColor;this.style.backgroundColor=\'#333\'; top.ICEcoder.overCloseLink=true" onMouseOut="this.style.backgroundColor=prevBG; top.ICEcoder.overCloseLink=false"></a> '+
|
||||
c.slice(c.lastIndexOf("/")).replace(/\//,"");top.get("tab"+a).title="/"+top.ICEcoder.openFiles[a-1].replace(/\//,"")},redoTabHighlight:function(a){for(var b,c,d=1;d<=ICEcoder.savedPoints.length;d++)top.get("tab"+d).childNodes[0]&&(top.get("tab"+d).childNodes[0].childNodes[0].style.backgroundColor=ICEcoder.savedPoints[d-1]!=top.ICEcoder.getcMInstance(d).changeGeneration()?"#b00":"transparent"),b=d==a?top.ICEcoder.tabFGselected:top.ICEcoder.tabFGnormalTab,"undefined"!=typeof top.ICEcoder.openFiles[d-
|
||||
1]&&"/[NEW]"!=top.ICEcoder.openFiles[d-1]&&(c=top.ICEcoder.filesFrame.contentWindow.document.getElementById(top.ICEcoder.openFiles[d-1].replace(/\//g,"|")))&&(c.style.backgroundColor=d==a?top.ICEcoder.tabBGcurrent:top.ICEcoder.tabBGopen,c.style.color=d==a?top.ICEcoder.tabFGcurrent:top.ICEcoder.tabFGopenFile),top.get("tab"+d).style.color=b,top.get("tab"+d).style.background=d==a?top.ICEcoder.tabBGcurrent:top.ICEcoder.tabBGopen},closeTab:function(a,b,c){var d;a||(a=top.ICEcoder.selectedTab);ICEcoder.getcMInstance();
|
||||
ICEcoder.getcMdiffInstance();d=!0;c||ICEcoder.savedPoints[a-1]==top.ICEcoder.getcMInstance(a).changeGeneration()||(d=top.ICEcoder.ask(top.t["You have made..."]));if(d){c=top.ICEcoder.openFiles[a-1];for(d=a;d<ICEcoder.openFiles.length;d++)top.get("tab"+d).innerHTML=top.get("tab"+(d+1)).innerHTML,top.get("tab"+d).title=top.get("tab"+(d+1)).title,ICEcoder.openFiles[d-1]=ICEcoder.openFiles[d],ICEcoder.openFileMDTs[d-1]=ICEcoder.openFileMDTs[d];ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[a-
|
||||
1]].getWrapperElement().style.display="none";ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[a-1]+"diff"].getWrapperElement().style.display="none";top.ICEcoder.cMInstances.splice(a-1,1);top.get("tab"+ICEcoder.openFiles.length).style.display="none";top.get("tab"+ICEcoder.openFiles.length).innerHTML="";top.get("tab"+ICEcoder.openFiles.length).title="";ICEcoder.openFiles.pop();ICEcoder.openFileMDTs.pop();ICEcoder.selectedTab==a&&(0<ICEcoder.openFiles.length?--ICEcoder.selectedTab:ICEcoder.selectedTab=
|
||||
0);0<ICEcoder.openFiles.length&&0==ICEcoder.selectedTab&&(ICEcoder.selectedTab=1);0==ICEcoder.openFiles.length?top.ICEcoder.fMIconVis("fMView",.3):(ICEcoder.switchMode(),ICEcoder.switchTab(ICEcoder.selectedTab));top.ICEcoder.savedPoints.splice(a-1,1);top.ICEcoder.redoTabHighlight(ICEcoder.selectedTab);top.ICEcoder.selectDeselectFile("deselect",top.ICEcoder.filesFrame.contentWindow.document.getElementById(c.replace(/\//g,"|")));b||top.ICEcoder.setPreviousFiles();top.ICEcoder.indicateChanges()}top.ICEcoder.canSwitchTabs=
|
||||
!1;top.ICEcoder.setTabWidths("posOnlyNewTab");setTimeout(function(){top.ICEcoder.canSwitchTabs=!0},100)},closeAllTabs:function(){if(0<top.ICEcoder.cMInstances.length&&ICEcoder.ask(top.t["Close all tabs"]))for(var a=top.ICEcoder.cMInstances.length;0<a;a--)top.ICEcoder.closeTab(a,1<a?!0:!1);top.ICEcoder.indicateChanges()},setTabWidths:function(a){var b,c,d,f,e;if(top.ICEcoder.ready){b=parseInt(top.ICEcoder.content.style.width,10)-53-22-10;c=b/top.ICEcoder.openFiles.length-18;d=-18;f=53;e=0;top.ICEcoder.tabLeftPos=
|
||||
[];for(var g=0;g<top.ICEcoder.openFiles.length;g++)a&&(g=top.ICEcoder.openFiles.length),d=168*top.ICEcoder.openFiles.length>b?parseInt(c*g,10)-parseInt(c*(g-1),10):150,f=0==g?53:parseInt(top.get("tab"+g).style.left,10),e=0==g?0:parseInt(top.get("tab"+g).style.width,10)+18,a?d=-18:(top.get("tab"+(g+1)).style.left=f+e+"px",top.get("tab"+(g+1)).style.width=d+"px"),top.ICEcoder.tabLeftPos.push(f+e);top.get("newTab").style.left=f+e+d+18+"px"}},tabDragStart:function(a){top.ICEcoder.draggingTab=a;top.ICEcoder.diffStartX=
|
||||
top.ICEcoder.mouseX;top.ICEcoder.tabDragMouseXStart=(top.ICEcoder.mouseX-(parseInt(top.ICEcoder.files.style.width,10)+53+18))%150;top.get("tab"+a).style.zIndex=2;for(var b=1;b<=top.ICEcoder.openFiles.length;b++)top.get("tab"+b).className=b!==a?"tab tabSlide":"tab tabDrag"},tabDragMove:function(){var a,b;a=parseInt(top.get("tab"+top.ICEcoder.openFiles.length).style.width,10)+18;top.ICEcoder.thisLeft=a=53<=top.ICEcoder.tabDragMouseX?top.ICEcoder.tabDragMouseX<=parseInt(top.get("newTab").style.left,
|
||||
10)-a?top.ICEcoder.tabDragMouseX:parseInt(top.get("newTab").style.left,10)-a:53;top.get("tab"+top.ICEcoder.draggingTab).style.left=a+"px";top.ICEcoder.dragTabNo=top.ICEcoder.draggingTab;for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.get("tab"+c).style.opacity=c==top.ICEcoder.draggingTab?1:.5,b=top.ICEcoder.tabLeftPos[c]?top.ICEcoder.tabLeftPos[c]-top.ICEcoder.tabLeftPos[c-1]:b,c!=top.ICEcoder.draggingTab&&(c<top.ICEcoder.draggingTab?top.get("tab"+c).style.left=a<=top.ICEcoder.tabLeftPos[c-1]?
|
||||
top.ICEcoder.tabLeftPos[c-1]+b:top.ICEcoder.tabLeftPos[c-1]:top.get("tab"+c).style.left=a>=top.ICEcoder.tabLeftPos[c-1]?top.ICEcoder.tabLeftPos[c-1]-b:top.ICEcoder.tabLeftPos[c-1])},tabDragEnd:function(){var a,b;top.ICEcoder.setTabWidths();for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.ICEcoder.thisLeft>=top.ICEcoder.tabLeftPos[c-1]&&(a=top.ICEcoder.thisLeft==top.ICEcoder.tabLeftPos[0]?1:top.ICEcoder.dragTabNo>c?c+1:c),top.get("tab"+c).className="tab",top.get("tab"+c).style.opacity=1,c!=top.ICEcoder.dragTabNo?
|
||||
top.get("tab"+c).style.zIndex=1:setTimeout(function(){top.get("tab"+c).style.zIndex=1},150);if(top.ICEcoder.thisLeft&&!1!==top.ICEcoder.thisLeft){b=[];for(c=1;c<=top.ICEcoder.openFiles.length;c++)b.push(c);b.splice(top.ICEcoder.dragTabNo-1,1);b.splice(a-1,0,top.ICEcoder.dragTabNo);ICEcoder.sortTabs(b)}top.ICEcoder.setTabWidths();top.ICEcoder.draggingTab=!1;top.ICEcoder.thisLeft=!1},sortTabs:function(a){var b,c,d;b=[ICEcoder.savedPoints,ICEcoder.openFiles,ICEcoder.openFileMDTs,ICEcoder.cMInstances];
|
||||
c=[[],[],[],[]];for(var f=0;f<b.length;f++){for(var e=0;e<b[f].length;e++)c[f].push(b[f][a[e]-1]);b[f]=c[f]}for(f=0;f<a.length;f++)top.get("tab"+a[f]).id="tab"+(f+1)+".temp",top.ICEcoder.selectedTab==a[f]&&(d=f+1);for(f=0;f<a.length;f++)top.get("tab"+(f+1)+".temp").id="tab"+(f+1);top.get("tab"+d)&&(top.get("tab"+d).className="tab tabSlide");ICEcoder.savedPoints=b[0];ICEcoder.openFiles=b[1];ICEcoder.openFileMDTs=b[2];ICEcoder.cMInstances=b[3];top.ICEcoder.setTabWidths();top.ICEcoder.switchTab(d)},
|
||||
alphaTabs:function(){if(0<top.ICEcoder.openFiles.length){var a,b,c,d,f;a=[];b=[];c=[];for(var e=0;e<top.ICEcoder.openFiles.length;e++)a.push(top.ICEcoder.openFiles[e].slice(top.ICEcoder.openFiles[e].lastIndexOf("/")+1)),b.push(top.ICEcoder.openFiles[e]),top.get("tab"+(e+1)).className="tab tabSlide";for(;0<a.length;){d=a[0];nextValueFull=b[0];for(e=f=0;e<a.length;e++)a[e]<d&&(d=a[e],nextValueFull=top.ICEcoder.openFiles[top.ICEcoder.openFiles.indexOf(b[e])],f=e);c.push(top.ICEcoder.openFiles.indexOf(nextValueFull)+
|
||||
1);a.splice(f,1);b.splice(f,1)}top.ICEcoder.sortTabs(c)}},interceptKeys:function(a,b){var c,d;c=b.keyCode?b.keyCode:b.which?b.which:b.charCode;if(224==c||91==c||93==c)top.ICEcoder.cmdKey=!0;if(46==c&&"files"==a)return top.ICEcoder.deleteFiles(),!1;if(b.altKey)return d=b.ctrlKey||top.ICEcoder.cmdKey?!0:!1,"ctrl+alt"==top.ICEcoder.tagWrapperCommand&&d||"alt-left"==top.ICEcoder.tagWrapperCommand&&!d?"content"==a?68==c?(top.ICEcoder.tagWrapper("div"),!1):83==c?(top.ICEcoder.tagWrapper("span"),!1):80==
|
||||
c?(top.ICEcoder.tagWrapper("p"),!1):65==c?(top.ICEcoder.tagWrapper("a"),!1):66==c?(top.ICEcoder.tagWrapper("b"),!1):73==c?(top.ICEcoder.tagWrapper("i"),!1):71==c?(top.ICEcoder.tagWrapper("strong"),!1):69==c?(top.ICEcoder.tagWrapper("em"),!1):49==c?(top.ICEcoder.tagWrapper("h1"),!1):50==c?(top.ICEcoder.tagWrapper("h2"),!1):51==c?(top.ICEcoder.tagWrapper("h3"),!1):56==c?(top.ICEcoder.tagWrapper("li"),!1):13==c?(top.ICEcoder.addLineBreakAtEnd(),!1):37==c?(top.filesFrame.contentWindow.focus(),!1):c:37==
|
||||
c?(top.filesFrame.contentWindow.focus(),!1):39==c?(top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?!0:!1),!1):c:13==c?(top.ICEcoder.insertLineAfter(),!1):c;if(13==c&&b.shiftKey)return top.ICEcoder.insertLineBefore(),!1;if(70==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return top.get("find").focus(),!1;if(71==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return top.get("goToLineNo").focus(),!1;if(73==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.searchForSelected(),!1;
|
||||
if(39==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"!=a)return top.ICEcoder.nextTab(),!1;if(37==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"!=a)return top.ICEcoder.previousTab(),!1;if(38==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.moveLines("up"),!1;if(40==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.moveLines("down"),!1;if(107==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return"content"==a?top.ICEcoder.duplicateLines():top.ICEcoder.newTab(),!1;if(109==
|
||||
c&&(b.ctrlKey||top.ICEcoder.cmdKey))return"content"==a?top.ICEcoder.removeLines():top.ICEcoder.closeTab(top.ICEcoder.selectedTab),!1;if(83==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return b.shiftKey?top.ICEcoder.saveFile("saveAs"):top.ICEcoder.saveFile(),!1;if(13==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"/[NEW]"!=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1])return top.ICEcoder.resetKeys(b),window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]),!1;if(13==c&&"files"==a)return b.ctrlKey||top.ICEcoder.cmdKey||
|
||||
(0==top.ICEcoder.selectedFiles.length&&(top.ICEcoder.overFileFolder("folder","|"),top.ICEcoder.selectFileFolder("init")),top.ICEcoder.fmAction(b,"enter")),!1;if(38!=c&&40!=c&&37!=c&&39!=c||"files"!=a)return 79==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(top.ICEcoder.openPrompt(),!1):32==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a?(top.ICEcoder.addSnippet(),!1):74==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a?(top.ICEcoder.jumpToDefinition(),!1):223==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(top.ICEcoder.lockUnlockNav(),
|
||||
ICEcoder.changeFilesW(top.ICEcoder.lockedNav?"expand":"contract"),!1):190==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(c=ICEcoder.getcMInstance(),d=ICEcoder.getcMdiffInstance(),c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c,d=c.getCursor().line,top.contentFrame.CodeMirror.doFold(-1<c.getLine(d).indexOf("{")?"brace":"xml",null,"+","-",!1)(c,d),!1):27==c&&"content"==a?(c=ICEcoder.getcMInstance(),d=ICEcoder.getcMdiffInstance(),c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c,1<c.getSelections().length?
|
||||
c.execCommand("singleSelection"):top.ICEcoder.lineCommentToggle(),!1):27==c&&"content"!=a?(top.ICEcoder.cancelAllActions(),!1):c;b.ctrlKey||top.ICEcoder.cmdKey||(0==top.ICEcoder.selectedFiles.length&&(top.ICEcoder.overFileFolder("folder","|"),top.ICEcoder.selectFileFolder("init")),top.ICEcoder.fmAction(b,38==c?"up":40==c?"down":37==c?"left":"right"));return!1},resetKeys:function(a){top.ICEcoder.cmdKey=!1},addSnippet:function(){var a,b,c;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=
|
||||
-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().line;c=a.getLine(b).length-a.getLine(b).replace(/^\s\s*/,"").length;a=a.getLine(b).slice(c);"function"==a.slice(0,8)?top.ICEcoder.doSnippet("function","function VAR() {\nINDENT\tCURSOR\nINDENT}"):"if"==a.slice(0,2)?top.ICEcoder.doSnippet("if","if (CURSOR) {\nINDENT\t\nINDENT}"):"for"==a.slice(0,3)&&top.ICEcoder.doSnippet("for","for (var i=0; i<CURSOR; i++) {\nINDENT\t\nINDENT}")},doSnippet:function(a,b){var c,d,f,e,g,k;c=ICEcoder.getcMInstance();
|
||||
d=ICEcoder.getcMdiffInstance();c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c;d=c.getCursor().line;if(-1<c.getLine(d).indexOf(a)){f=c.getLine(d);e=f.indexOf(a);f=f.slice(f.indexOf(a)+a.length+1);b=b.replace(/VAR/g,f);f=c.getLine(d).slice(0,e);e=c.getLine(d).length-c.getLine(d).replace(/^\s\s*/,"").length;e=c.getLine(d).slice(0,e);b=b.replace(/INDENT/g,e);f+=b;e=f.indexOf("CURSOR");g=0;k=d;for(i=0;i<f.length;i++)f.indexOf("\n",g)<f.indexOf("CURSOR")&&(g=f.indexOf("\n",g)+1,k+=1);c.replaceRange(f.replace("CURSOR",
|
||||
""),{line:d,ch:0},{line:d,ch:1E6});c.setCursor(k,e);top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?!0:!1)}}};
|
||||
ICEcoder.getcMdiffInstance();d=!0;c||ICEcoder.savedPoints[a-1]==top.ICEcoder.getcMInstance(a).changeGeneration()||(d=top.ICEcoder.ask(top.t["You have made..."]));if(d){c=top.ICEcoder.openFiles[a-1];for(d=a;d<ICEcoder.openFiles.length;d++)top.get("tab"+d).innerHTML=top.get("tab"+(d+1)).innerHTML,top.get("tab"+d).title=top.get("tab"+(d+1)).title,ICEcoder.openFiles[d-1]=ICEcoder.openFiles[d],ICEcoder.openFileMDTs[d-1]=ICEcoder.openFileMDTs[d],ICEcoder.openFileVersions[d-1]=ICEcoder.openFileVersions[d];
|
||||
ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[a-1]].getWrapperElement().style.display="none";ICEcoder.content.contentWindow["cM"+top.ICEcoder.cMInstances[a-1]+"diff"].getWrapperElement().style.display="none";top.ICEcoder.cMInstances.splice(a-1,1);top.get("tab"+ICEcoder.openFiles.length).style.display="none";top.get("tab"+ICEcoder.openFiles.length).innerHTML="";top.get("tab"+ICEcoder.openFiles.length).title="";ICEcoder.openFiles.pop();ICEcoder.openFileMDTs.pop();ICEcoder.openFileVersions.pop();
|
||||
ICEcoder.selectedTab==a&&(0<ICEcoder.openFiles.length?--ICEcoder.selectedTab:ICEcoder.selectedTab=0);0<ICEcoder.openFiles.length&&0==ICEcoder.selectedTab&&(ICEcoder.selectedTab=1);0==ICEcoder.openFiles.length?top.ICEcoder.fMIconVis("fMView",.3):(ICEcoder.switchMode(),ICEcoder.switchTab(ICEcoder.selectedTab));top.ICEcoder.savedPoints.splice(a-1,1);top.ICEcoder.redoTabHighlight(ICEcoder.selectedTab);top.ICEcoder.selectDeselectFile("deselect",top.ICEcoder.filesFrame.contentWindow.document.getElementById(c.replace(/\//g,
|
||||
"|")));b||top.ICEcoder.setPreviousFiles();top.ICEcoder.updateVersionsDisplay();top.ICEcoder.indicateChanges()}top.ICEcoder.canSwitchTabs=!1;top.ICEcoder.setTabWidths("posOnlyNewTab");setTimeout(function(){top.ICEcoder.canSwitchTabs=!0},100)},closeAllTabs:function(){if(0<top.ICEcoder.cMInstances.length&&ICEcoder.ask(top.t["Close all tabs"]))for(var a=top.ICEcoder.cMInstances.length;0<a;a--)top.ICEcoder.closeTab(a,1<a?!0:!1);top.ICEcoder.indicateChanges()},setTabWidths:function(a){var b,c,d,e,f;if(top.ICEcoder.ready){b=
|
||||
parseInt(top.ICEcoder.content.style.width,10)-53-22-10;c=b/top.ICEcoder.openFiles.length-18;d=-18;e=53;f=0;top.ICEcoder.tabLeftPos=[];for(var g=0;g<top.ICEcoder.openFiles.length;g++)a&&(g=top.ICEcoder.openFiles.length),d=168*top.ICEcoder.openFiles.length>b?parseInt(c*g,10)-parseInt(c*(g-1),10):150,e=0==g?53:parseInt(top.get("tab"+g).style.left,10),f=0==g?0:parseInt(top.get("tab"+g).style.width,10)+18,a?d=-18:(top.get("tab"+(g+1)).style.left=e+f+"px",top.get("tab"+(g+1)).style.width=d+"px"),top.ICEcoder.tabLeftPos.push(e+
|
||||
f);top.get("newTab").style.left=e+f+d+18+"px"}},tabDragStart:function(a){top.ICEcoder.draggingTab=a;top.ICEcoder.diffStartX=top.ICEcoder.mouseX;top.ICEcoder.tabDragMouseXStart=(top.ICEcoder.mouseX-(parseInt(top.ICEcoder.files.style.width,10)+53+18))%150;top.get("tab"+a).style.zIndex=2;for(var b=1;b<=top.ICEcoder.openFiles.length;b++)top.get("tab"+b).className=b!==a?"tab tabSlide":"tab tabDrag"},tabDragMove:function(){var a,b;a=parseInt(top.get("tab"+top.ICEcoder.openFiles.length).style.width,10)+
|
||||
18;top.ICEcoder.thisLeft=a=53<=top.ICEcoder.tabDragMouseX?top.ICEcoder.tabDragMouseX<=parseInt(top.get("newTab").style.left,10)-a?top.ICEcoder.tabDragMouseX:parseInt(top.get("newTab").style.left,10)-a:53;top.get("tab"+top.ICEcoder.draggingTab).style.left=a+"px";top.ICEcoder.dragTabNo=top.ICEcoder.draggingTab;for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.get("tab"+c).style.opacity=c==top.ICEcoder.draggingTab?1:.5,b=top.ICEcoder.tabLeftPos[c]?top.ICEcoder.tabLeftPos[c]-top.ICEcoder.tabLeftPos[c-
|
||||
1]:b,c!=top.ICEcoder.draggingTab&&(c<top.ICEcoder.draggingTab?top.get("tab"+c).style.left=a<=top.ICEcoder.tabLeftPos[c-1]?top.ICEcoder.tabLeftPos[c-1]+b:top.ICEcoder.tabLeftPos[c-1]:top.get("tab"+c).style.left=a>=top.ICEcoder.tabLeftPos[c-1]?top.ICEcoder.tabLeftPos[c-1]-b:top.ICEcoder.tabLeftPos[c-1])},tabDragEnd:function(){var a,b;top.ICEcoder.setTabWidths();for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.ICEcoder.thisLeft>=top.ICEcoder.tabLeftPos[c-1]&&(a=top.ICEcoder.thisLeft==top.ICEcoder.tabLeftPos[0]?
|
||||
1:top.ICEcoder.dragTabNo>c?c+1:c),top.get("tab"+c).className="tab",top.get("tab"+c).style.opacity=1,c!=top.ICEcoder.dragTabNo?top.get("tab"+c).style.zIndex=1:setTimeout(function(){top.get("tab"+c).style.zIndex=1},150);if(top.ICEcoder.thisLeft&&!1!==top.ICEcoder.thisLeft){b=[];for(c=1;c<=top.ICEcoder.openFiles.length;c++)b.push(c);b.splice(top.ICEcoder.dragTabNo-1,1);b.splice(a-1,0,top.ICEcoder.dragTabNo);ICEcoder.sortTabs(b)}top.ICEcoder.setTabWidths();top.ICEcoder.draggingTab=!1;top.ICEcoder.thisLeft=
|
||||
!1},sortTabs:function(a){var b,c,d;b=[ICEcoder.savedPoints,ICEcoder.openFiles,ICEcoder.openFileMDTs,ICEcoder.openFileVersions,ICEcoder.cMInstances];c=[[],[],[],[],[]];for(var e=0;e<b.length;e++){for(var f=0;f<b[e].length;f++)c[e].push(b[e][a[f]-1]);b[e]=c[e]}for(e=0;e<a.length;e++)top.get("tab"+a[e]).id="tab"+(e+1)+".temp",top.ICEcoder.selectedTab==a[e]&&(d=e+1);for(e=0;e<a.length;e++)top.get("tab"+(e+1)+".temp").id="tab"+(e+1);top.get("tab"+d)&&(top.get("tab"+d).className="tab tabSlide");ICEcoder.savedPoints=
|
||||
b[0];ICEcoder.openFiles=b[1];ICEcoder.openFileMDTs=b[2];ICEcoder.openFileVersions=b[3];ICEcoder.cMInstances=b[4];top.ICEcoder.setTabWidths();top.ICEcoder.switchTab(d)},alphaTabs:function(){if(0<top.ICEcoder.openFiles.length){var a,b,c,d,e;a=[];b=[];c=[];for(var f=0;f<top.ICEcoder.openFiles.length;f++)a.push(top.ICEcoder.openFiles[f].slice(top.ICEcoder.openFiles[f].lastIndexOf("/")+1)),b.push(top.ICEcoder.openFiles[f]),top.get("tab"+(f+1)).className="tab tabSlide";for(;0<a.length;){d=a[0];nextValueFull=
|
||||
b[0];for(f=e=0;f<a.length;f++)a[f]<d&&(d=a[f],nextValueFull=top.ICEcoder.openFiles[top.ICEcoder.openFiles.indexOf(b[f])],e=f);c.push(top.ICEcoder.openFiles.indexOf(nextValueFull)+1);a.splice(e,1);b.splice(e,1)}top.ICEcoder.sortTabs(c)}},interceptKeys:function(a,b){var c,d,e;c=b.keyCode?b.keyCode:b.which?b.which:b.charCode;if(224==c||91==c||93==c)top.ICEcoder.cmdKey=!0;if(46==c&&"files"==a)return top.ICEcoder.deleteFiles(),!1;if(b.altKey){var f=b.ctrlKey||top.ICEcoder.cmdKey?!0:!1;return"ctrl+alt"==
|
||||
top.ICEcoder.tagWrapperCommand&&f||"alt-left"==top.ICEcoder.tagWrapperCommand&&!f?"content"==a?68==c?(top.ICEcoder.tagWrapper("div"),!1):83==c?(top.ICEcoder.tagWrapper("span"),!1):80==c?(top.ICEcoder.tagWrapper("p"),!1):65==c?(top.ICEcoder.tagWrapper("a"),!1):49==c?(top.ICEcoder.tagWrapper("h1"),!1):50==c?(top.ICEcoder.tagWrapper("h2"),!1):51==c?(top.ICEcoder.tagWrapper("h3"),!1):13==c?(top.ICEcoder.addLineBreakAtEnd(),!1):37==c?(top.ICEcoder.filesFrame.contentWindow.focus(),!1):c:37==c?(top.ICEcoder.filesFrame.contentWindow.focus(),
|
||||
!1):39==c?(top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?!0:!1),!1):c:13==c?(top.ICEcoder.insertLineAfter(),!1):c}if(13==c&&b.shiftKey)return top.ICEcoder.insertLineBefore(),!1;if(70!=c&&71!=c||!b.ctrlKey&&!top.ICEcoder.cmdKey){if(76==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return c=top.get("goToLineNo"),c.select(),top.get("find").focus(),c.focus(),!1;if(73==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.searchForSelected(),!1;if(39==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&
|
||||
"content"!=a)return top.ICEcoder.nextTab(),!1;if(37==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"!=a)return top.ICEcoder.previousTab(),!1;if(38==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.moveLines("up"),!1;if(40==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.moveLines("down"),!1;if(107!=c&&187!=c||!b.ctrlKey&&!top.ICEcoder.cmdKey){if(109!=c&&189!=c||!b.ctrlKey&&!top.ICEcoder.cmdKey){if(83==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return b.shiftKey?
|
||||
top.ICEcoder.saveFile("saveAs"):top.ICEcoder.saveFile(),!1;if(13==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"/[NEW]"!=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1])return top.ICEcoder.resetKeys(b),window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]),!1;if(13==c&&"files"==a)return b.ctrlKey||top.ICEcoder.cmdKey||(0==top.ICEcoder.selectedFiles.length&&(top.ICEcoder.overFileFolder("folder","|"),top.ICEcoder.selectFileFolder("init")),top.ICEcoder.fmAction(b,"enter")),!1;if(38!=c&&40!=c&&37!=
|
||||
c&&39!=c||"files"!=a)return 79==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(top.ICEcoder.openPrompt(),!1):32==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a?(top.ICEcoder.addSnippet(),!1):74==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a?(top.ICEcoder.jumpToDefinition(),!1):223==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(top.ICEcoder.lockUnlockNav(),ICEcoder.changeFilesW(top.ICEcoder.lockedNav?"expand":"contract"),!1):190==c&&(b.ctrlKey||top.ICEcoder.cmdKey)?(d=ICEcoder.getcMInstance(),e=ICEcoder.getcMdiffInstance(),
|
||||
d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?e:d,c=d.getCursor().line,top.contentFrame.CodeMirror.doFold(-1<d.getLine(c).indexOf("{")?"brace":"xml",null,"+","-",!1)(d,c),!1):27==c&&"content"==a?(d=ICEcoder.getcMInstance(),e=ICEcoder.getcMdiffInstance(),d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?e:d,1<d.getSelections().length?d.execCommand("singleSelection"):top.ICEcoder.lineCommentToggle(),!1):27==c&&"content"!=a?(top.ICEcoder.cancelAllActions(),!1):c;b.ctrlKey||top.ICEcoder.cmdKey||
|
||||
(0==top.ICEcoder.selectedFiles.length&&(top.ICEcoder.overFileFolder("folder","|"),top.ICEcoder.selectFileFolder("init")),top.ICEcoder.fmAction(b,38==c?"up":40==c?"down":37==c?"left":"right"));return!1}"content"==a?top.ICEcoder.removeLines():top.ICEcoder.closeTab(top.ICEcoder.selectedTab);return!1}"content"==a?top.ICEcoder.duplicateLines():top.ICEcoder.newTab();return!1}f=top.get("find");d=ICEcoder.getcMInstance();e=ICEcoder.getcMdiffInstance();d=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?
|
||||
e:d;d=d.getSelections();0<d.length&&0<d[0].length&&(f.value=d[0]);f.select();top.get("goToLineNo").focus();f.focus();70==c?top.get("findReplaceSubmit").click():ICEcoder.findReplace(top.document.getElementById("find").value,!1,!0,!1,"findPrevious");return!1},resetKeys:function(a){top.ICEcoder.cmdKey=!1},addSnippet:function(){var a,b,c;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?b:a;b=a.getCursor().line;c=a.getLine(b).length-a.getLine(b).replace(/^\s\s*/,
|
||||
"").length;a=a.getLine(b).slice(c);"function"==a.slice(0,8)?top.ICEcoder.doSnippet("function","function VAR() {\nINDENT\tCURSOR\nINDENT}"):"if"==a.slice(0,2)?top.ICEcoder.doSnippet("if","if (CURSOR) {\nINDENT\t\nINDENT}"):"for"==a.slice(0,3)&&top.ICEcoder.doSnippet("for","for (var i=0; i<CURSOR; i++) {\nINDENT\t\nINDENT}")},doSnippet:function(a,b){var c,d,e,f,g,h;c=ICEcoder.getcMInstance();d=ICEcoder.getcMdiffInstance();c=-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?d:c;d=c.getCursor().line;
|
||||
if(-1<c.getLine(d).indexOf(a)){e=c.getLine(d);f=e.indexOf(a);e=e.slice(e.indexOf(a)+a.length+1);b=b.replace(/VAR/g,e);e=c.getLine(d).slice(0,f);f=c.getLine(d).length-c.getLine(d).replace(/^\s\s*/,"").length;f=c.getLine(d).slice(0,f);b=b.replace(/INDENT/g,f);e+=b;f=e.indexOf("CURSOR");g=0;h=d;for(i=0;i<e.length;i++)e.indexOf("\n",g)<e.indexOf("CURSOR")&&(g=e.indexOf("\n",g)+1,h+=1);c.replaceRange(e.replace("CURSOR",""),{line:d,ch:0},{line:d,ch:1E6});c.setCursor(h,f);top.ICEcoder.focus(-1<top.ICEcoder.editorFocusInstance.indexOf("diff")?
|
||||
!0:!1)}}};
|
||||
@@ -14,31 +14,25 @@ echo $ICEcoder["password"] == "" && !$ICEcoder["multiUser"] ? "Setup" : "Login";
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="stylesheet" type="text/css" href="ice-coder.css">
|
||||
<link rel="stylesheet" type="text/css" href="ice-coder.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="icon" type="image/png" href="../favicon.png">
|
||||
</head>
|
||||
|
||||
<body onLoad="<?php if (!isset($_GET["get"])) {$inputFocus = $ICEcoder["multiUser"] ? "username" : "password"; echo "document.settingsUpdate.".$inputFocus.".focus(); ";}; ?>if (document.getElementById('trialBarRemaining')) {setTimeout(function(){document.getElementById('trialBarRemaining').style.width = '<?php echo $tRemainingPerc*170;?>px';},500)}">
|
||||
<body style="background-color: #181817" onLoad="<?php if (!isset($_GET["get"])) {$inputFocus = $ICEcoder["multiUser"] ? "username" : "password"; echo "document.settingsUpdate.".$inputFocus.".focus(); ";}; ?>setTimeout(function(){document.getElementById('screenContainer').style.opacity=1},50)">
|
||||
|
||||
<div class="screenContainer" style="background-color: #141414">
|
||||
<div class="screenContainer" id="screenContainer" style="background-color: #181817; opacity: 0; transition: opacity 0.1s ease-out">
|
||||
<div class="screenVCenter">
|
||||
<div class="screenCenter">
|
||||
<img src="../images/ice-coder.png" alt="ICEcoder">
|
||||
<div class="version" style="margin-bottom: 22px">v <?php echo $ICEcoder["versionNo"];?></div>
|
||||
|
||||
<?php if (generateHash(strClean($ICEcoder['licenseEmail']),$ICEcoder['licenseCode'])!=$ICEcoder['licenseCode'] && !isset($_GET['get']) && !isset($_POST['code'])) {?>
|
||||
<div class="trialBarContainer"><div class="trialBarRemaining" id="trialBarRemaining"></div><br>
|
||||
<div class="trialBarText"><?php echo $tDaysRemaining;?> days left - <a href="login.php?get=code&csrf=<?php echo $_SESSION["csrf"];?>">Unlock now</a></div>
|
||||
</div>
|
||||
<?php ;}; ?>
|
||||
|
||||
<form name="settingsUpdate" action="login.php" method="POST">
|
||||
<?php
|
||||
if (isset($_GET["get"]) && $_GET["get"]=="code") {
|
||||
?>
|
||||
<span style="color: #fff"><h1>Thanks for trialling ICEcoder!</h1><b>Please donate on the website to continue using it.</b><br><br>
|
||||
<h2>Step 1: Donate</h2><br><br>
|
||||
<a href="https://icecoder.net/?display=trialDonateScreen" target="_blank" style="background: #097695; color: #fff; padding: 10px; text-decoration: none; font-size: 17px; font-weight: bold; border-radius: 4px; cursor: pointer">Donate $5</a><br><br><br>
|
||||
<a href="https://icecoder.net/?display=trialDonateScreen" target="_blank" style="background: #097695; color: #fff; padding: 10px; text-decoration: none; font-size: 17px; font-weight: bold; border-radius: 4px; cursor: pointer">Donate now</a><br><br><br>
|
||||
<h2>Step 2: Enter email address & code</h2><br>
|
||||
<?php if (isset($_GET["success"]) && $_GET["success"]=="no") {echo "Sorry, that doesn't seem to be correct.<br>Please check your emailed details and try again.<br><br>";};?>
|
||||
<?php if ($ICEcoder["multiUser"]) {echo ' <input type="text" name="username" value="Username" onfocus="origValue=\'Username\';if(this.value==origValue){this.value=\'\';};" onblur="if(this.value==\'\'){this.value=origValue;};" class="password"><br><br>'.PHP_EOL;};?>
|
||||
|
||||
@@ -15,7 +15,7 @@ if(isset($_GET['selectedFiles'])) {
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> multiple results screen</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="multiple-results.css">
|
||||
<link rel="stylesheet" type="text/css" href="multiple-results.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="results" onLoad="top.get('loadingMask').style.visibility = 'hidden'">
|
||||
@@ -44,7 +44,7 @@ var resultsDisplay = "";
|
||||
var foundArray = [];
|
||||
foundInSelected = false;
|
||||
userTarget = top.document.findAndReplace.target.value;
|
||||
findText = top.findAndReplace.find.value.toLowerCase();
|
||||
findText = top.findAndReplace.find.value;
|
||||
<?php
|
||||
$findText = str_replace("ICEcoder:","",str_replace("'","\'",$_GET['find']));
|
||||
// Find in open docs?
|
||||
|
||||
@@ -193,7 +193,7 @@ function deletePlugin($dir) {
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> plugins manager</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="plugins-manager.css">
|
||||
<link rel="stylesheet" type="text/css" href="plugins-manager.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="pluginsManager">
|
||||
|
||||
@@ -17,7 +17,7 @@ if (!file_exists($fileName) || strpos(str_replace("\\","/",$fileName),$docRoot)
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> file/folder properties</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="properties.css">
|
||||
<link rel="stylesheet" type="text/css" href="properties.css?microtime=<?php echo microtime(true);?>">
|
||||
</head>
|
||||
|
||||
<body class="properties">
|
||||
|
||||
@@ -17,13 +17,33 @@ $context = stream_context_create(array('http'=>
|
||||
|
||||
// Start a session if we haven't already
|
||||
if(!isset($_SESSION)) {
|
||||
session_save_path(dirname(__FILE__).'/../tmp');
|
||||
@session_start();
|
||||
ini_set('session.use_cookies','1'); // Use cookies not URL parameters
|
||||
ini_set('session.use_only_cookies','1'); // Force use of cookies and nothing else
|
||||
ini_set('session.name','ICEcoder_Cookie'); // Set a seperate cookie session name
|
||||
ini_set('session.cookie_lifetime','0'); // Until the browser restarts by default
|
||||
ini_set('session.cookie_domain',''); // This domain only
|
||||
// ini_set('session.cookie_path',str_replace($_SERVER['DOCUMENT_ROOT'],'',dirname(dirname(__FILE__)))); // ICEcoder path only, fails ON IE
|
||||
ini_set('session.use_trans_sid','0'); // Ensure this insecure feature is disabled
|
||||
ini_set('session.hash_function','sha512'); // Use Sha512 for session
|
||||
ini_set('session.hash_bits_per_character','6'); // Specify hash scheme of 0-9,a-v,A-Z,-,,
|
||||
// ini_set('session.use_strict_mode','1'); // Reject any session ID that was user provided and not generated by the session (since PHP 5.5.2)
|
||||
ini_set('session.httponly','1'); // Only allow http protocol (ie, not JS) access to the cookie (since PHP 5.2.0)
|
||||
ini_set('session.save_path',dirname(__FILE__).'/../tmp'); // Localise the session files to /tmp
|
||||
|
||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
|
||||
ini_set('session.cookie_secure','1'); // Only allows access to session ID when protocol is HTTPS, switched on under 'if https' condition
|
||||
}
|
||||
@session_start(); // Finally, start the session!
|
||||
if (!isset($_SESSION['csrf'])){
|
||||
session_regenerate_id(true); // Create a new ID to help prevent fixation
|
||||
}
|
||||
}
|
||||
|
||||
// Set the language file
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['settings-common'];
|
||||
// Set the language file, if now possible
|
||||
if (isset($_SESSION['text'])) {
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['settings-common'];
|
||||
}
|
||||
|
||||
// Logout if that's the action we're taking
|
||||
if (isset($_GET['logout'])) {
|
||||
@@ -31,7 +51,8 @@ if (isset($_GET['logout'])) {
|
||||
$_SESSION['loggedIn']=false;
|
||||
$_SESSION['username']=false;
|
||||
session_destroy();
|
||||
header("Location: ".dirname(__FILE__)."/?loggedOut");
|
||||
header("Location: .");
|
||||
die("Logging you out...");
|
||||
}
|
||||
|
||||
// If magic quotes are still on (attempted to switch off in php.ini)
|
||||
@@ -111,7 +132,7 @@ function xssClean($data,$type) {
|
||||
function toUTF8noBOM($string,$message) {
|
||||
// Attempt to detect encoding
|
||||
if (function_exists('mb_detect_encoding')) {
|
||||
$encType = mb_detect_encoding($string);
|
||||
$strictUTF8 = mb_detect_encoding($string, 'UTF-8', true);
|
||||
// Get rid of any UTF-8 BOM
|
||||
$string = preg_replace('/\x{EF}\x{BB}\x{BF}/','',$string);
|
||||
// Test for any bad characters
|
||||
@@ -119,7 +140,7 @@ function toUTF8noBOM($string,$message) {
|
||||
$teststringBroken = utf8_decode($teststring);
|
||||
$teststringConverted = iconv("UTF-8", "UTF-8//IGNORE", $teststringBroken);
|
||||
// If we have a matching length, UTF8 encode it
|
||||
if ($encType != "ASCII" && $encType != "UTF-8" && strlen($teststringConverted) == strlen($teststringBroken)) {
|
||||
if (!$strictUTF8 && strlen($teststringConverted) == strlen($teststringBroken)) {
|
||||
$string = utf8_encode($string);
|
||||
if ($message) {
|
||||
echo "top.ICEcoder.message('".$t['Your document does...'].".');";
|
||||
@@ -131,31 +152,72 @@ function toUTF8noBOM($string,$message) {
|
||||
|
||||
// Polyfill for array_replace_recursive, which is in PHP 5.3+
|
||||
if (!function_exists('array_replace_recursive')) {
|
||||
function array_replace_recursive($base, $replacements) {
|
||||
foreach (array_slice(func_get_args(), 1) as $replacements) {
|
||||
$bref_stack = array(&$base);
|
||||
$head_stack = array($replacements);
|
||||
function array_replace_recursive($base, $replacements) {
|
||||
foreach (array_slice(func_get_args(), 1) as $replacements) {
|
||||
$bref_stack = array(&$base);
|
||||
$head_stack = array($replacements);
|
||||
|
||||
do {
|
||||
end($bref_stack);
|
||||
do {
|
||||
end($bref_stack);
|
||||
|
||||
$bref = &$bref_stack[key($bref_stack)];
|
||||
$head = array_pop($head_stack);
|
||||
$bref = &$bref_stack[key($bref_stack)];
|
||||
$head = array_pop($head_stack);
|
||||
|
||||
unset($bref_stack[key($bref_stack)]);
|
||||
unset($bref_stack[key($bref_stack)]);
|
||||
|
||||
foreach (array_keys($head) as $key) {
|
||||
if (isset($key, $bref) && is_array($bref[$key]) && is_array($head[$key])) {
|
||||
$bref_stack[] = &$bref[$key];
|
||||
$head_stack[] = $head[$key];
|
||||
} else {
|
||||
$bref[$key] = $head[$key];
|
||||
}
|
||||
}
|
||||
} while(count($head_stack));
|
||||
}
|
||||
foreach (array_keys($head) as $key) {
|
||||
if (isset($key, $bref) && is_array($bref[$key]) && is_array($head[$key])) {
|
||||
$bref_stack[] = &$bref[$key];
|
||||
$head_stack[] = $head[$key];
|
||||
} else {
|
||||
$bref[$key] = $head[$key];
|
||||
}
|
||||
}
|
||||
} while(count($head_stack));
|
||||
}
|
||||
|
||||
return $base;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
// Get number of versions total for a file
|
||||
function getVersionsCount($fileLoc,$fileName) {
|
||||
$count = 0;
|
||||
$dateCounts = array();
|
||||
// Establish the base, host and date dirs within...
|
||||
$backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../backups/";
|
||||
$backupDirHost = isset($ftpSite) ? parse_url($ftpSite,PHP_URL_HOST) : "localhost";
|
||||
$backupDateDirs = scandir($backupDirBase.$backupDirHost,1);
|
||||
// Get rid of . and .. from date dirs array
|
||||
for ($i=0; $i<count($backupDateDirs); $i++) {
|
||||
if ($backupDateDirs[$i] == "." || $backupDateDirs[$i] == "..") {
|
||||
array_splice($backupDateDirs,$i,1);
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
// Check the backup index in each dir and add up the counts from matching lines
|
||||
for ($i=0; $i<count($backupDateDirs); $i++) {
|
||||
$backupIndex = $backupDirBase.$backupDirHost."/".$backupDateDirs[$i]."/.versions-index";
|
||||
// Have a .versions-index file? Get contents
|
||||
if (file_exists($backupIndex)) {
|
||||
$versionsInfo = file_get_contents($backupIndex,false,$context);
|
||||
$versionsInfo = explode("\n",$versionsInfo);
|
||||
// For each line, check if it's our file and if so, add the count to our $count value and $dateCount array
|
||||
for ($j=0; $j<count($versionsInfo); $j++) {
|
||||
$fileRef = $fileLoc."/".$fileName." = ";
|
||||
if (strpos($versionsInfo[$j],$fileRef) === 0) {
|
||||
// We have a match, so split on the " = " and we can grab number as 2nd part
|
||||
$lineInfo = explode(" = ",$versionsInfo[$j]);
|
||||
$count += intval($lineInfo[1]);
|
||||
$dateCounts[$backupDateDirs[$i]] = intval($lineInfo[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
"count" => $count,
|
||||
"dateCounts" => $dateCounts
|
||||
);
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -33,8 +33,10 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
.settings .infoPane a:hover {text-decoration: underline}
|
||||
.settings .logo {position: relative; margin-top: 2px; width: 100px}
|
||||
.settings .version {position: relative; display: block; margin-top: 5px; margin-bottom: 10px; font-size: 10px; color: #bbb}
|
||||
.settings .settingsColumn1 {width: 220px; height: 560px; padding: 20px; float: left}
|
||||
.settings .settingsColumn2 {width: 420px; height: 560px; padding: 20px 20px 20px 0; float: left}
|
||||
.settings .tabContainer {background: #fff; height: 38px; padding-top: 20px}
|
||||
.settings .tabContainer .tab {padding: 12px; background: #444; margin-right: 1px; float: left; cursor: pointer}
|
||||
.settings .tabContainer .tabActive {background: #1c1c19}
|
||||
.settings .section {width: 640px; height: 450px; padding: 20px; margin-top: 10px; float: left}
|
||||
.settings input, .settings textarea {border: 1px solid #555; background-color: #444; color: #fff}
|
||||
.settings input:focus, .settings textarea:focus {
|
||||
outline: none;
|
||||
@@ -42,5 +44,6 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
|
||||
-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);
|
||||
}
|
||||
.settings input[type="text"]:disabled {opacity: 0.5}
|
||||
.settings .info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help}
|
||||
.settings .update {position: absolute; bottom: 0; right: 20px; padding: 5px 10px; font-size: 18px; background-color: rgba(0,198,255,0.7); opacity: 0.1; cursor: pointer}
|
||||
@@ -10,9 +10,9 @@ $t = $text['settings-screen'];
|
||||
<title>ICEcoder <?php echo $ICEcoder["versionNo"];?> settings screen</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="settings-screen.css">
|
||||
<link rel="stylesheet" href="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror.css">
|
||||
<script src="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror-compressed.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="settings-screen.css?microtime=<?php echo microtime(true);?>">
|
||||
<link rel="stylesheet" href="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror.css?microtime=<?php echo microtime(true);?>">
|
||||
<script src="../<?php echo $ICEcoder["codeMirrorDir"]; ?>/lib/codemirror-compressed.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
|
||||
<style type="text/css">
|
||||
.CodeMirror {position: absolute; width: 409px; height: 180px; font-size: <?php echo $ICEcoder["fontSize"];?>}
|
||||
@@ -21,7 +21,7 @@ $t = $text['settings-screen'];
|
||||
.cm-tab {border-left-width: <?php echo $ICEcoder["visibleTabs"] ? "1px" : "0";?>; margin-left: <?php echo $ICEcoder["visibleTabs"] ? "-1px" : "0";?>; border-left-style: solid; border-left-color: rgba(255,255,255,0.2)}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" href="editor.css">
|
||||
<link rel="stylesheet" href="editor.css?microtime=<?php echo microtime(true);?>">
|
||||
<?php
|
||||
$themeArray = array();
|
||||
$handle = opendir('../'.$ICEcoder["codeMirrorDir"].'/theme/');
|
||||
@@ -32,7 +32,7 @@ while (false !== ($file = readdir($handle))) {
|
||||
}
|
||||
sort($themeArray);
|
||||
for ($i=0;$i<count($themeArray);$i++) {
|
||||
echo '<link rel="stylesheet" href="../'.$ICEcoder["codeMirrorDir"].'/theme/'.$themeArray[$i].'.css">'.PHP_EOL;
|
||||
echo '<link rel="stylesheet" href="../'.$ICEcoder["codeMirrorDir"].'/theme/'.$themeArray[$i].'.css?microtime='.microtime(true).'">'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
</head>
|
||||
@@ -71,113 +71,128 @@ for ($i=0;$i<count($themeArray);$i++) {
|
||||
<?php echo $ICEcoder['root'] == "" ? "/" : $ICEcoder['root'];?>
|
||||
<br><br>
|
||||
|
||||
<div style="font-size: 10px; line-height: 12px">ICEcoder on Twitter (<a href="https://www.twitter.com/icecoder" style="font-size: 10px" target="_blank">@icecoder</a>)<br><br>
|
||||
<?php echo $t['Free to use...'];?> <a href="https://icecoder.net" target="_blank">https://icecoder.net</a>
|
||||
<div style="font-size: 10px; line-height: 12px">
|
||||
<?php echo $t['Get in contact...'];?><br>
|
||||
<a href="https://www.twitter.com/icecoder" style="font-size: 10px" target="_blank">Twitter</a><br>
|
||||
<a href="https://facebook.com/ICEcoder.net" style="font-size: 10px" target="_blank">Facebook</a><br>
|
||||
<a href="https://groups.google.com/forum/#!forum/icecoder" style="font-size: 10px" target="_blank">Google Groups</a><br>
|
||||
<a href="https://github.com/mattpass/ICEcoder" style="font-size: 10px" target="_blank">GitHub</a><br>
|
||||
<a href="mailto:info@icecoder.net" style="font-size: 10px">Email</a><br><br>
|
||||
<?php echo $t['You may use...'];?>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form name="settings" action="settings.php" method="POST">
|
||||
<div class="settingsColumn1">
|
||||
<h2><?php echo $t['functionality'];?></h2>
|
||||
<input type="checkbox" onclick="showButton()" name="checkUpdates" value="true"<?php if($ICEcoder["checkUpdates"]) {echo ' checked';};?>> <?php echo $t['check for updates...'];?><br>
|
||||
<input type="checkbox" onclick="showButton()" name="openLastFiles" value="true"<?php if($ICEcoder["openLastFiles"]) {echo ' checked';};?>> <?php echo $t['auto open last...'];?><br>
|
||||
<input type="checkbox" onclick="showButton()" name="updateDiffOnSave" value="true"<?php if($ICEcoder["updateDiffOnSave"]) {echo ' checked';};?>> update diff pane on save<br>
|
||||
language <span class="info" title="Reload required after changing">[?]</span><br>
|
||||
<select onchange="showButton()" name="languageUser">
|
||||
<option value="chinese-simplified.php"<?php if($ICEcoder["languageUser"]=='chinese-simplified.php') {echo " selected";};?>>中国(简体)</option>
|
||||
<option value="chinese-traditional.php"<?php if($ICEcoder["languageUser"]=='chinese-traditional.php') {echo " selected";};?>>中國(繁體)</option>
|
||||
<option value="dutch.php"<?php if($ICEcoder["languageUser"]=='dutch.php') {echo " selected";};?>>Nederlands</option>
|
||||
<option value="english.php"<?php if($ICEcoder["languageUser"]=='english.php') {echo " selected";};?>>English</option>
|
||||
<option value="french.php"<?php if($ICEcoder["languageUser"]=='french.php') {echo " selected";};?>>Français</option>
|
||||
<option value="german.php"<?php if($ICEcoder["languageUser"]=='german.php') {echo " selected";};?>>Deutsch</option>
|
||||
<option value="italian.php"<?php if($ICEcoder["languageUser"]=='italian.php') {echo " selected";};?>>Italiano</option>
|
||||
<option value="norwegian.php"<?php if($ICEcoder["languageUser"]=='norwegian.php') {echo " selected";};?>>Norsk</option>
|
||||
<option value="persian.php"<?php if($ICEcoder["languageUser"]=='persian.php') {echo " selected";};?>>فارسی</option>
|
||||
Nederlands
|
||||
</select><br>
|
||||
<br>
|
||||
<?php echo $t['when finding in...'];?>:<br>
|
||||
<input type="text" onkeydown="showButton()" name="findFilesExclude" value="<?php echo implode(", ",$ICEcoder["findFilesExclude"]); ?>"><br>
|
||||
<br>
|
||||
|
||||
<h2><?php echo $t['assisting'];?></h2>
|
||||
<input type="checkbox" onclick="showButton()" name="codeAssist" value="true"<?php if($ICEcoder["codeAssist"]) {echo ' checked';};?>> <?php echo $t['code assist'];?><br>
|
||||
<input type="checkbox" onclick="showButton();showHideTabs()" name="visibleTabs" value="true"<?php if($ICEcoder["visibleTabs"]) {echo ' checked';};?>> <?php echo $t['visible tabs'];?><br>
|
||||
<input type="checkbox" onclick="showButton()" name="lockedNav" value="true"<?php if($ICEcoder["lockedNav"]) {echo ' checked';};?>> <?php echo $t['locked nav'];?><br><br>
|
||||
<?php echo $t['tag wrapper command'];?><br>
|
||||
<select onchange="showButton()" name="tagWrapperCommand">
|
||||
<option value="ctrl+alt"<?php if($ICEcoder["tagWrapperCommand"]=='ctrl+alt') {echo " selected";};?>>ctrl/cmd + alt</option>
|
||||
<option value="alt-left"<?php if($ICEcoder["tagWrapperCommand"]=='alt-left') {echo " selected";};?>>alt left</option>
|
||||
</select><br>
|
||||
<br>
|
||||
<?php echo $t['auto-complete on'];?><br>
|
||||
<select onchange="showButton()" name="autoComplete">
|
||||
<option value="ctrl+space"<?php if($ICEcoder["autoComplete"]=='ctrl+space') {echo " selected";};?>>ctrl/cmd + space</option>
|
||||
<option value="keypress"<?php if($ICEcoder["autoComplete"]=='keypress') {echo " selected";};?>>keypress</option>
|
||||
</select><br>
|
||||
<br>
|
||||
|
||||
<h2><?php echo $t['security'];?></h2>
|
||||
<?php echo $t['new password'];?> <span class="info" title="<?php echo $t['8 chars min'];?>">[?]</span><br>
|
||||
<input type="password" name="password" onkeydown="showButton()"><br>
|
||||
<?php echo $t['confirm password'];?><br>
|
||||
<input type="password" name="passwordConfirm" onkeydown="showButton()"><br>
|
||||
<br>
|
||||
<?php echo $t['banned files/folders'];?><br>
|
||||
<input type="text" onkeydown="document.settings.changedFileSettings.value='true';showButton()" name="bannedFiles" value="<?php echo implode(", ",$ICEcoder["bannedFiles"]); ?>"><br>
|
||||
<?php echo $t['banned paths'];?> <span class="info" title="<?php echo $t['Slash prefixed comma...'];?>">[?]</span><br>
|
||||
<input type="text" onkeydown="document.settings.changedFileSettings.value='true';showButton()" name="bannedPaths" value="<?php echo implode(", ",$ICEcoder["bannedPaths"]); ?>"><br>
|
||||
<input type="hidden" name="changedFileSettings" value="false">
|
||||
<?php echo $t['ip addresses'];?> <span class="info" title="<?php echo $t['Comma delimited'];?>">[?]</span><br>
|
||||
<input type="text" onkeydown="showButton()" name="allowedIPs" value="<?php echo implode(", ",$ICEcoder["allowedIPs"]); ?>"><br>
|
||||
<div class="tabContainer">
|
||||
<div id="generalTab" class="tab tabActive" onclick="switchTab('general')">General</div>
|
||||
<div id="styleTab" class="tab" onclick="switchTab('style')">Style</div>
|
||||
<div id="accountsTab" class="tab" onclick="switchTab('accounts')">Accounts</div>
|
||||
<div id="securityTab" class="tab" onclick="switchTab('security')">Security</div>
|
||||
</div>
|
||||
|
||||
<div class="settingsColumn2">
|
||||
<h2><?php echo $t['style'];?></h2>
|
||||
<?php echo $t['theme'];?><br>
|
||||
<select onchange="selectTheme();showButton()" id="select" name="theme" style="width: 95px">
|
||||
<option<?php if ($ICEcoder["theme"]=="default") {echo ' selected';}; ?>>default</option>
|
||||
<?php
|
||||
for ($i=0;$i<count($themeArray);$i++) {
|
||||
$optionSelected = $ICEcoder["theme"]==$themeArray[$i] ? ' selected' : '';
|
||||
echo '<option'.$optionSelected.'>'.$themeArray[$i].'</option>'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<div id="generalSection" class="section" style="display: block">
|
||||
|
||||
<span style="position: absolute; margin: -15px 0 0 10px">
|
||||
<?php echo $t['line wrapping'];?><br>
|
||||
<select onchange="showButton()" name="lineWrapping">
|
||||
<option value="true"<?php if($ICEcoder["lineWrapping"]) {echo " selected";};?>>yes</option>
|
||||
<option value="false"<?php if(!$ICEcoder["lineWrapping"]) {echo " selected";};?>>no</option>
|
||||
</select>
|
||||
</span>
|
||||
<div style="display: inline-block; margin-right: 40px">
|
||||
|
||||
<span style="position: absolute; margin: -15px 0 0 100px">
|
||||
<?php echo $t['indent type'];?><br>
|
||||
<select onchange="showButton()" name="indentWithTabs">
|
||||
<option value="true"<?php if($ICEcoder["indentWithTabs"]) {echo " selected";};?>>tabs</option>
|
||||
<option value="false"<?php if(!$ICEcoder["indentWithTabs"]) {echo " selected";};?>>spaces</option>
|
||||
</select>
|
||||
</span>
|
||||
<h2>language</h2><br>
|
||||
<select onchange="showButton()" name="languageUser">
|
||||
<?php
|
||||
$langFiles = array("chinese-simplified.php","chinese-traditional.php","dutch.php","english.php","french.php","german.php","italian.php","norwegian.php","persian.php","portuguese-brazilian.php","spanish.php");
|
||||
$langText = array("中国(简体)","中國(繁體)","Nederlands","English","Français","Deutsch","Italiano","Norsk","فارسی","Portugues(br)","Español");
|
||||
for ($i=0; $i<count($langFiles); $i++) {
|
||||
echo '<option value="'.$langFiles[$i].'"'.($ICEcoder["languageUser"]==$langFiles[$i] ? ' selected' : '').'>'.$langText[$i].'</option>'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
</select> <span class="info" style="display: inline-block; padding-top: 2px" title="Reload required after changing">[?]</span>
|
||||
<br><br>
|
||||
|
||||
<span style="position: absolute; margin: -15px 0 0 190px">
|
||||
<?php echo $t['indent size'];?><br>
|
||||
<input type="text" name="indentSize" id="indentSize" style="width: 30px" onkeydown="showButton()" onkeyup="changeIndentSize()" value="<?php echo $ICEcoder["indentSize"];?>">
|
||||
</span>
|
||||
<h2><?php echo $t['functionality'];?></h2><br>
|
||||
<input type="checkbox" onclick="showButton()" name="checkUpdates" value="true"<?php if($ICEcoder["checkUpdates"]) {echo ' checked';};?>> <?php echo $t['check for updates...'];?><br>
|
||||
<input type="checkbox" onclick="showButton()" name="openLastFiles" value="true"<?php if($ICEcoder["openLastFiles"]) {echo ' checked';};?>> <?php echo $t['auto open last...'];?><br>
|
||||
<input type="checkbox" onclick="showButton()" name="updateDiffOnSave" value="true"<?php if($ICEcoder["updateDiffOnSave"]) {echo ' checked';};?>> update diff pane on save
|
||||
<br><br>
|
||||
|
||||
<span style="position: absolute; margin: -15px 0 0 267px">
|
||||
<?php echo $t['font size'];?><br>
|
||||
<input type="text" name="fontSize" id="fontSize" style="width: 44px" onkeydown="showButton()" onkeyup="changeFontSize()" value="<?php echo $ICEcoder["fontSize"];?>">
|
||||
</span>
|
||||
<br><br>
|
||||
<h2><?php echo $t['assisting'];?></h2><br>
|
||||
<input type="checkbox" onclick="showButton()" name="codeAssist" value="true"<?php if($ICEcoder["codeAssist"]) {echo ' checked';};?>> <?php echo $t['code assist'];?><br>
|
||||
<br>
|
||||
<?php echo $t['tag wrapper command'];?><br>
|
||||
<select onchange="showButton()" name="tagWrapperCommand">
|
||||
<option value="ctrl+alt"<?php if($ICEcoder["tagWrapperCommand"]=='ctrl+alt') {echo " selected";};?>>ctrl/cmd + alt</option>
|
||||
<option value="alt-left"<?php if($ICEcoder["tagWrapperCommand"]=='alt-left') {echo " selected";};?>>alt left</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<textarea id="code" name="code">
|
||||
<?php echo $t['auto-complete on'];?><br>
|
||||
<select onchange="showButton()" name="autoComplete">
|
||||
<option value="ctrl+space"<?php if($ICEcoder["autoComplete"]=='ctrl+space') {echo " selected";};?>>ctrl/cmd + space</option>
|
||||
<option value="keypress"<?php if($ICEcoder["autoComplete"]=='keypress') {echo " selected";};?>>keypress</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="display: inline-block">
|
||||
|
||||
<h2>find & replace</h2><br>
|
||||
<?php echo $t['when finding in...'];?>:<br>
|
||||
<input type="text" onkeydown="showButton()" name="findFilesExclude" style="width: 300px" value="<?php echo implode(", ",$ICEcoder["findFilesExclude"]); ?>">
|
||||
<br><br>
|
||||
|
||||
<h2><?php echo $t['bug reporting'];?></h2><br>
|
||||
<?php echo $t['check in files'];?> <span class="info" title="<?php echo $t['Slash prefixed comma...'];?>">[?]</span><br>
|
||||
<input type="text" name="bugFilePaths" style="width: 300px" onkeydown="showButton()" value="<?php echo implode(", ",$ICEcoder["bugFilePaths"]);?>"><br>
|
||||
<span style="display: inline-block; padding: 6px 5px 0 0">...<?php echo $t['every'];?></span>
|
||||
<input type="text" name="bugFileCheckTimer" style="width: 50px; margin-top: 3px" onkeydown="showButton()" value="<?php echo $ICEcoder["bugFileCheckTimer"];?>">
|
||||
<span style="display: inline-block; padding: 6px 5px 0 5px"><?php echo $t['secs getting last'];?></span>
|
||||
<input type="text" name="bugFileMaxLines" style="width: 50px; margin-top: 3px" onkeydown="showButton()" value="<?php echo $ICEcoder["bugFileMaxLines"];?>">
|
||||
<span style="display: inline-block; padding: 6px 5px 0 5px"><?php echo $t['lines'];?></span>
|
||||
<br><br>
|
||||
|
||||
<h2><?php echo $t['file manager'];?></h2><br>
|
||||
<?php echo $t['root'];?> <span class="info" title="<?php echo $t['Slash prefixed'];?>">[?]</span><br>
|
||||
<input type="text" name="root" style="width: 300px" onkeydown="document.settings.changedFileSettings.value='true';showButton()" value="<?php echo $ICEcoder["root"];?>">
|
||||
<br><br>
|
||||
|
||||
<h2><?php echo $t['backups'];?></h2><br>
|
||||
<input type="checkbox" onclick="showButton();changeBackupsDaysStatus();" name="backupsKept" value="true"<?php if($ICEcoder["backupsKept"]) {echo ' checked';};?>> <?php echo $t['keep version control...'];?> <input type="text" name="backupsDays" id="backupsDays" style="width: 50px; margin: 3px 5px 0 5px" onkeydown="document.settings.changedFileSettings.value='true';showButton()" value="<?php echo $ICEcoder["backupsDays"];?>" <?php
|
||||
if(!$ICEcoder["backupsKept"]){
|
||||
echo ' disabled=""';
|
||||
}?>> <?php echo $t['days'];?><br>
|
||||
<div style="padding: 5px 5px 5px 5px; color: #888">
|
||||
<?php
|
||||
// Display number of days backups available
|
||||
$backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../backups/";
|
||||
$backupDirHost = isset($ftpSite) ? parse_url($ftpSite,PHP_URL_HOST) : "localhost";
|
||||
$backupDirsList = scandir($backupDirBase.$backupDirHost);
|
||||
// Remove . and .. from array
|
||||
for ($i=0; $i<count($backupDirsList); $i++) {
|
||||
if ($backupDirsList[$i] == "." || $backupDirsList[$i] == "..") {
|
||||
array_splice($backupDirsList,$i,1);
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
// Display text re the number of days backups have taken place
|
||||
$backupNumDays = $backupDirsList[0] != "" && count($backupDirsList) > 0 ? count($backupDirsList) : 0;
|
||||
echo $backupNumDays." ".($backupNumDays != 1 ? $t['days'] : $t['day'])." ".$t['of backups stored...'];
|
||||
?>
|
||||
</div><br>
|
||||
<br><br>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="styleSection" class="section" style="display: none">
|
||||
|
||||
<div style="display: inline-block; width: 400px; margin-right: 40px">
|
||||
<div style="height: 220px">
|
||||
<h2>preview</h2><br>
|
||||
<textarea id="code" name="code">
|
||||
function findSequence(goal) {
|
||||
function find(start,history) {
|
||||
if (start==goal)
|
||||
return history;
|
||||
return history;
|
||||
else if (start>goal)
|
||||
return null;
|
||||
else
|
||||
@@ -186,38 +201,84 @@ function findSequence(goal) {
|
||||
}
|
||||
return find(1,"1");
|
||||
}</textarea>
|
||||
<br>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
<span style="position: absolute; top: 300px">
|
||||
|
||||
<div style="position: relative; display: inline-block; margin-right: 20px">
|
||||
<h2><?php echo $t['layout'];?></h2>
|
||||
<h2><?php echo $t['layout'];?></h2><br>
|
||||
<input type="checkbox" onclick="showButton()" name="lockedNav" value="true"<?php if($ICEcoder["lockedNav"]) {echo ' checked';};?>> <?php echo $t['locked nav'];?><br><br>
|
||||
<?php echo $t['plugin panel aligned'];?><br>
|
||||
<select onchange="showButton()" name="pluginPanelAligned">
|
||||
<option value="left"<?php if($ICEcoder["pluginPanelAligned"] == "left") {echo " selected";};?>>left</option>
|
||||
<option value="right"<?php if($ICEcoder["pluginPanelAligned"] == "right") {echo " selected";};?>>right</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
</div>
|
||||
|
||||
<div style="position: relative; display: inline-block">
|
||||
<h2><?php echo $t['file manager'];?></h2>
|
||||
<?php echo $t['root'];?> <span class="info" title="<?php echo $t['Slash prefixed'];?>">[?]</span><br>
|
||||
<input type="text" name="root" style="width: 200px" onkeydown="document.settings.changedFileSettings.value='true';showButton()" value="<?php echo $ICEcoder["root"];?>">
|
||||
<div style="display: inline-block">
|
||||
<h2><?php echo $t['style'];?></h2><br>
|
||||
<?php echo $t['theme'];?><br>
|
||||
<select onchange="selectTheme();showButton()" id="select" name="theme" style="width: 95px">
|
||||
<option<?php if ($ICEcoder["theme"]=="default") {echo ' selected';}; ?>>default</option>
|
||||
<?php
|
||||
for ($i=0;$i<count($themeArray);$i++) {
|
||||
$optionSelected = $ICEcoder["theme"]==$themeArray[$i] ? ' selected' : '';
|
||||
echo '<option'.$optionSelected.'>'.$themeArray[$i].'</option>'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<?php echo $t['font size'];?><br>
|
||||
<input type="text" name="fontSize" id="fontSize" style="width: 44px" onkeydown="showButton()" onkeyup="changeFontSize()" value="<?php echo $ICEcoder["fontSize"];?>">
|
||||
<br><br>
|
||||
|
||||
<?php echo $t['indent size'];?><br>
|
||||
<input type="text" name="indentSize" id="indentSize" style="width: 44px" onkeydown="showButton()" onkeyup="changeIndentSize()" value="<?php echo $ICEcoder["indentSize"];?>">
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" onclick="showButton();showHideTabs()" name="visibleTabs" value="true"<?php if($ICEcoder["visibleTabs"]) {echo ' checked';};?>> <?php echo $t['visible tabs'];?>
|
||||
<br><br>
|
||||
|
||||
<?php echo $t['line wrapping'];?><br>
|
||||
<select onchange="showButton()" name="lineWrapping">
|
||||
<option value="true"<?php if($ICEcoder["lineWrapping"]) {echo " selected";};?>>yes</option>
|
||||
<option value="false"<?php if(!$ICEcoder["lineWrapping"]) {echo " selected";};?>>no</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<h2><?php echo $t['functionality'];?></h2><br>
|
||||
|
||||
<?php echo $t['indent type'];?><br>
|
||||
<select onchange="showButton()" name="indentWithTabs">
|
||||
<option value="true"<?php if($ICEcoder["indentWithTabs"]) {echo " selected";};?>>tabs</option>
|
||||
<option value="false"<?php if(!$ICEcoder["indentWithTabs"]) {echo " selected";};?>>spaces</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<?php echo $t['auto indent'];?><br>
|
||||
<select onchange="showButton()" name="indentAuto">
|
||||
<option value="true"<?php if($ICEcoder["indentAuto"]) {echo " selected";};?>>yes</option>
|
||||
<option value="false"<?php if(!$ICEcoder["indentAuto"]) {echo " selected";};?>>no</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="accountsSection" class="section" style="display: none">
|
||||
|
||||
<h2>password</h2><br>
|
||||
<?php echo $t['new password'];?> <span class="info" title="<?php echo $t['8 chars min'];?>">[?]</span><br>
|
||||
<input type="password" name="password" style="width: 320px" onkeydown="showButton()">
|
||||
<br><br>
|
||||
|
||||
<h2><?php echo $t['bug reporting'];?></h2>
|
||||
<?php echo $t['check in files'];?> <span class="info" title="<?php echo $t['Slash prefixed comma...'];?>">[?]</span><br>
|
||||
<input type="text" name="bugFilePaths" style="width: 120px" onkeydown="showButton()" value="<?php echo implode(", ",$ICEcoder["bugFilePaths"]);?>">
|
||||
<span style="display: inline-block; padding: 4px 5px 0 5px"><?php echo $t['every'];?></span>
|
||||
<input type="text" name="bugFileCheckTimer" style="width: 50px" onkeydown="showButton()" value="<?php echo $ICEcoder["bugFileCheckTimer"];?>">
|
||||
<span style="display: inline-block; padding: 4px 5px 0 5px"><?php echo $t['secs getting last'];?></span>
|
||||
<input type="text" name="bugFileMaxLines" style="width: 50px" onkeydown="showButton()" value="<?php echo $ICEcoder["bugFileMaxLines"];?>">
|
||||
<span style="display: inline-block; padding: 4px 5px 0 5px"><?php echo $t['lines'];?></span>
|
||||
<?php echo $t['confirm password'];?><br>
|
||||
<input type="password" name="passwordConfirm" style="width: 320px" onkeydown="showButton()">
|
||||
<br><br>
|
||||
|
||||
<div>
|
||||
<h2><?php echo $t['multi-user'];?> <span class="info" title="<?php echo $t['Make sure you...'];?>">[?]</span></h2>
|
||||
<h2><?php echo $t['multi-user'];?> <span class="info" title="<?php echo $t['Make sure you...'];?>">[?]</span></h2><br>
|
||||
<input type="checkbox" name="multiUser" value="true" onclick="showButton();changeEnableRegistrationStatus();"<?php if($ICEcoder["multiUser"]){echo ' checked';} ?>>Multi-User
|
||||
<?php
|
||||
echo '<input type="checkbox" name="enableRegistration" value="true"';
|
||||
@@ -227,15 +288,28 @@ function findSequence(goal) {
|
||||
}
|
||||
echo ' onclick="showButton()" id="enableRegistration"> '.$t['Registration'].' </input>';
|
||||
?>
|
||||
</div>
|
||||
<br>
|
||||
<br><br>
|
||||
|
||||
<div>
|
||||
<h2>github</h2>
|
||||
<h2>github</h2><br>
|
||||
<?php echo $t['auth token'];?> <span class="info" title="<?php echo $t['Required to get...'];?>">[?]</span> <a href="https://help.github.com/articles/creating-an-access-token-for-command-line-use" target="_blank" class="info">Personal Access Token</a> <a href="(http://developer.github.com/v3/oauth" target="_blank" class="info">Client/Secret Pair Token</a><br>
|
||||
<input type="text" name="githubAuthToken" style="width: 320px" onkeydown="showButton()" value="<?php echo $ICEcoder["githubAuthToken"];?>" autocomplete="off">
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="securitySection" class="section" style="display: none">
|
||||
<h2><?php echo $t['security'];?></h2><br>
|
||||
<?php echo $t['banned files/folders'];?><br>
|
||||
<input type="text" onkeydown="document.settings.changedFileSettings.value='true';showButton()" name="bannedFiles" style="width: 660px" value="<?php echo implode(", ",$ICEcoder["bannedFiles"]); ?>">
|
||||
<br><br>
|
||||
|
||||
<?php echo $t['banned paths'];?> <span class="info" title="<?php echo $t['Slash prefixed comma...'];?>">[?]</span><br>
|
||||
<input type="text" onkeydown="document.settings.changedFileSettings.value='true';showButton()" name="bannedPaths" style="width: 660px" value="<?php echo implode(", ",$ICEcoder["bannedPaths"]); ?>">
|
||||
<br><br>
|
||||
|
||||
<input type="hidden" name="changedFileSettings" value="false">
|
||||
<?php echo $t['ip addresses'];?> <span class="info" title="<?php echo $t['Comma delimited'];?>">[?]</span><br>
|
||||
<input type="text" onkeydown="showButton()" name="allowedIPs" style="width: 660px" value="<?php echo implode(", ",$ICEcoder["allowedIPs"]); ?>">
|
||||
<br><br>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
|
||||
@@ -258,17 +332,22 @@ function changeIndentSize() {
|
||||
var indentSize = document.getElementById("indentSize").value;
|
||||
editor.setOption("indentUnit", indentSize);
|
||||
editor.setOption("tabSize", indentSize);
|
||||
editor.refresh();
|
||||
}
|
||||
|
||||
function changeFontSize() {
|
||||
cMCSS = document.styleSheets[2];
|
||||
cMCSS.rules ? strCSS = 'rules' : strCSS = 'cssRules';
|
||||
cMCSS[strCSS][0].style['fontSize'] = document.getElementById("fontSize").value;
|
||||
editor.refresh();
|
||||
}
|
||||
|
||||
var changeEnableRegistrationStatus = function(){
|
||||
document.getElementById('enableRegistration').disabled=!document.getElementById('enableRegistration').disabled;
|
||||
}
|
||||
var changeBackupsDaysStatus = function(){
|
||||
document.getElementById('backupsDays').disabled=!document.getElementById('backupsDays').disabled;
|
||||
}
|
||||
var showButton = function() {
|
||||
document.getElementById('updateButton').style.opacity = 1;
|
||||
}
|
||||
@@ -291,12 +370,18 @@ var validatePasswords = function() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tabNames = ['general','style','accounts','security'];
|
||||
var switchTab = function(tab) {
|
||||
for (var i=0; i<tabNames.length; i++) {
|
||||
document.getElementById(tabNames[i]+'Tab').className = tabNames[i] == tab ? "tab tabActive" : "tab";
|
||||
document.getElementById(tabNames[i]+'Section').style.display = tabNames[i] == tab ? "block" : "none";
|
||||
}
|
||||
editor.refresh();
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="update" id="updateButton" onClick="<?php echo $ICEcoder['demoMode'] ? "top.ICEcoder.message('Sorry, can\'t commit settings in demo mode')" : "validatePasswords()"; ?>">update</div>
|
||||
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<?php
|
||||
$newConfigSettingsFile = '<?php
|
||||
// ICEcoder system settings
|
||||
$ICEcoderSettings = array(
|
||||
"versionNo" => "4.5",
|
||||
"codeMirrorDir" => "CodeMirror-4.7",
|
||||
"docRoot" => $_SERVER['DOCUMENT_ROOT'],
|
||||
"versionNo" => "5.3",
|
||||
"codeMirrorDir" => "CodeMirror",
|
||||
"docRoot" => $_SERVER[\'DOCUMENT_ROOT\'], // Set absolute path of another location if needed
|
||||
"demoMode" => false,
|
||||
"devMode" => false,
|
||||
"fileDirResOutput" => "none", // Can be none, raw, object, both (all but \'none\' output to console)
|
||||
"loginRequired" => true,
|
||||
"multiUser" => false,
|
||||
"languageBase" => "english.php",
|
||||
@@ -14,4 +16,5 @@ $ICEcoderSettings = array(
|
||||
"newFilePerms" => 644,
|
||||
"enableRegistration" => true
|
||||
);
|
||||
?>';
|
||||
?>
|
||||
@@ -19,6 +19,8 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
$ICEcoder["openLastFiles"] = isset($_POST['openLastFiles']) && $_POST['openLastFiles'] ? "true" : "false";
|
||||
$ICEcoder["updateDiffOnSave"] = isset($_POST['updateDiffOnSave']) && $_POST['updateDiffOnSave'] ? "true" : "false";
|
||||
$ICEcoder["languageUser"] = strClean($_POST['languageUser']);
|
||||
$ICEcoder["backupsKept"] = isset($_POST['backupsKept']) && $_POST['backupsKept'] ? "true" : "false";
|
||||
$ICEcoder["backupsDays"] = intval($_POST['backupsDays']);
|
||||
$ICEcoder["findFilesExclude"] = 'array("'.str_replace(',','","',str_replace(" ","",strClean($_POST['findFilesExclude']))).'")';
|
||||
$ICEcoder["codeAssist"] = isset($_POST['codeAssist']) && $_POST['codeAssist'] ? "true" : "false";
|
||||
$ICEcoder["visibleTabs"] = isset($_POST['visibleTabs']) && $_POST['visibleTabs'] ? "true" : "false";
|
||||
@@ -33,6 +35,7 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
$ICEcoder["fontSize"] = strClean($_POST['fontSize']);
|
||||
$ICEcoder["lineWrapping"] = strClean($_POST['lineWrapping']);
|
||||
$ICEcoder["indentWithTabs"] = strClean($_POST['indentWithTabs']);
|
||||
$ICEcoder["indentAuto"] = strClean($_POST['indentAuto']);
|
||||
$ICEcoder["indentSize"] = intval($_POST['indentSize']);
|
||||
$ICEcoder["pluginPanelAligned"] = strClean($_POST['pluginPanelAligned']);
|
||||
$ICEcoder["bugFilePaths"] = 'array("'.str_replace(',','","',str_replace(" ","",strClean($_POST['bugFilePaths']))).'")';
|
||||
@@ -40,7 +43,7 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
$ICEcoder["bugFileMaxLines"] = intval($_POST['bugFileMaxLines']);
|
||||
$ICEcoder["githubAuthToken"] = strClean($_POST['githubAuthToken']);
|
||||
|
||||
$settingsArray = array("root","checkUpdates","openLastFiles","updateDiffOnSave","languageUser","findFilesExclude","codeAssist","visibleTabs","lockedNav","tagWrapperCommand","autoComplete","password","bannedFiles","bannedPaths","allowedIPs","theme","fontSize","lineWrapping","indentWithTabs","indentSize","pluginPanelAligned","bugFilePaths","bugFileCheckTimer","bugFileMaxLines","githubAuthToken");
|
||||
$settingsArray = array("root","checkUpdates","openLastFiles","updateDiffOnSave","languageUser","backupsKept","backupsDays","findFilesExclude","codeAssist","visibleTabs","lockedNav","tagWrapperCommand","autoComplete","password","bannedFiles","bannedPaths","allowedIPs","theme","fontSize","lineWrapping","indentWithTabs","indentAuto","indentSize","pluginPanelAligned","bugFilePaths","bugFileCheckTimer","bugFileMaxLines","githubAuthToken");
|
||||
$settingsNew = "";
|
||||
for ($i=0;$i<count($settingsArray);$i++) {
|
||||
$settingsNew .= '"'.$settingsArray[$i].'" => ';
|
||||
@@ -69,23 +72,28 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
|
||||
// Work out the theme to use now
|
||||
$ICEcoder["theme"]=="default" ? $themeURL = 'lib/editor.css' : $themeURL = $ICEcoder["codeMirrorDir"].'/theme/'.$ICEcoder["theme"].'.css';
|
||||
$themeURL .= "?microtime=".microtime(true);
|
||||
|
||||
// Do we need a file manager refresh?
|
||||
$refreshFM = $_POST['changedFileSettings']=="true" ? "true" : "false";
|
||||
|
||||
// Change multiUser and enableRegistration in config___settings.php
|
||||
$generalSettingsContents = file_get_contents($configSettings,false,$context);
|
||||
$isMultiUser = $_POST['multiUser'] ? "true" : "false";
|
||||
$isMultiUser = isset($_POST['multiUser']) && $_POST['multiUser'] ? "true" : "false";
|
||||
$generalSettingsContents = str_replace('"multiUser" => true,','"multiUser" => '.$isMultiUser.',',$generalSettingsContents);
|
||||
$generalSettingsContents = str_replace('"multiUser" => false,','"multiUser" => '.$isMultiUser.',',$generalSettingsContents);
|
||||
|
||||
$isEnableRegistration = $_POST['enableRegistration'] ? "true" : "false";
|
||||
$isEnableRegistration = isset($_POST['enableRegistration']) && $_POST['enableRegistration'] ? "true" : "false";
|
||||
$generalSettingsContents = str_replace('"enableRegistration" => true','"enableRegistration" => '.$isEnableRegistration,$generalSettingsContents);
|
||||
$generalSettingsContents = str_replace('"enableRegistration" => false','"enableRegistration" => '.$isEnableRegistration,$generalSettingsContents);
|
||||
|
||||
$fConfigSettings = fopen($configSettings, 'w') or die($t['Cannot update config']." ".$configSettings." ".$t['and press refresh']);
|
||||
fwrite($fConfigSettings, $generalSettingsContents);
|
||||
fclose($fConfigSettings);
|
||||
if (is_writeable($configSettings)) {
|
||||
$fConfigSettings = fopen($configSettings, 'w');
|
||||
fwrite($fConfigSettings, $generalSettingsContents);
|
||||
fclose($fConfigSettings);
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('".$t['Cannot update config']." lib/".$configSettings." ".$t['and try again']."');</script>";
|
||||
}
|
||||
|
||||
$githubAuthTokenSet = $ICEcoder["githubAuthToken"] != "" ? "true" : "false";
|
||||
|
||||
@@ -97,6 +105,6 @@ if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset
|
||||
|
||||
// With all that worked out, we can now hide the settings screen and apply the new settings
|
||||
$jsBugFilePaths = "['".str_replace(",","','",str_replace(" ","",strClean($_POST['bugFilePaths'])))."']";
|
||||
echo "<script>top.ICEcoder.settingsScreen('hide');top.ICEcoder.useNewSettings('".$themeURL."',".$ICEcoder["codeAssist"].",".$ICEcoder["lockedNav"].",'".$ICEcoder["tagWrapperCommand"]."','".$ICEcoder["autoComplete"]."',".$ICEcoder["visibleTabs"].",'".$ICEcoder["fontSize"]."',".$ICEcoder["lineWrapping"].",".$ICEcoder["indentWithTabs"].",".$ICEcoder["indentSize"].",'".$ICEcoder["pluginPanelAligned"]."',".$jsBugFilePaths.",".$ICEcoder["bugFileCheckTimer"].",".$ICEcoder["bugFileMaxLines"].",'".$githubAuthTokenSet."',".$ICEcoder["updateDiffOnSave"].",".$refreshFM.");top.iceRoot = '".$ICEcoder["root"]."';</script>";
|
||||
echo "<script>top.ICEcoder.settingsScreen('hide');top.ICEcoder.useNewSettings('".$themeURL."',".$ICEcoder["codeAssist"].",".$ICEcoder["lockedNav"].",'".$ICEcoder["tagWrapperCommand"]."','".$ICEcoder["autoComplete"]."',".$ICEcoder["visibleTabs"].",'".$ICEcoder["fontSize"]."',".$ICEcoder["lineWrapping"].",".$ICEcoder["indentWithTabs"].",".$ICEcoder["indentAuto"].",".$ICEcoder["indentSize"].",'".$ICEcoder["pluginPanelAligned"]."',".$jsBugFilePaths.",".$ICEcoder["bugFileCheckTimer"].",".$ICEcoder["bugFileMaxLines"].",'".$githubAuthTokenSet."',".$ICEcoder["updateDiffOnSave"].",".$refreshFM.");top.iceRoot = '".$ICEcoder["root"]."';</script>";
|
||||
}
|
||||
?>
|
||||
@@ -1,8 +1,32 @@
|
||||
<?php
|
||||
$ftpSiteConn = false;
|
||||
if ($ftpSiteConn == 1) {
|
||||
$ftpSite = ""; // FTP site domain, eg http://yourdomain.com
|
||||
$ftpHost = ""; // FTP host, eg ftp.yourdomain.com
|
||||
$ftpUser = ""; // FTP username
|
||||
$ftpPass = ""; // FTP password
|
||||
$ftpPasv = false; // FTP account requires PASV mode?
|
||||
$ftpMode = FTP_ASCII; // FTP transfer mode, FTP_ASCII or FTP_BINARY
|
||||
$ftpRoot = ""; // FTP root dir to use as base, eg /htdocs
|
||||
}
|
||||
|
||||
// Establish settings and users template filenames
|
||||
$configSettings = 'config___settings.php';
|
||||
$configUsersTemplate = 'config___users-template.php';
|
||||
|
||||
// Create a new config file if it doesn't exist yet.
|
||||
// The reason we create it, is so it has PHP write permissions, meaning we can update it later
|
||||
if (!file_exists(dirname(__FILE__)."/".$configSettings)) {
|
||||
// Include our params to make use of (as $newConfigSettingsFile)
|
||||
include(dirname(__FILE__)."/settings-system-params.php");
|
||||
if ($fConfigSettings = fopen(dirname(__FILE__)."/".$configSettings, 'w')) {
|
||||
fwrite($fConfigSettings, $newConfigSettingsFile);
|
||||
fclose($fConfigSettings);
|
||||
} else {
|
||||
die("Cannot update config file lib/".$configSettings.". Please check write permissions on lib/ and try again");
|
||||
}
|
||||
}
|
||||
|
||||
// Load config settings
|
||||
include(dirname(__FILE__)."/".$configSettings);
|
||||
|
||||
@@ -29,6 +53,37 @@ if (!file_exists(dirname(__FILE__)."/".$settingsFile) && $ICEcoderSettings['enab
|
||||
// Load user settings
|
||||
include(dirname(__FILE__)."/".$settingsFile);
|
||||
|
||||
// Remove any previous files that are no longer there
|
||||
$prevFiles = explode(",",$ICEcoderUserSettings['previousFiles']);
|
||||
$prevFilesAvail = "";
|
||||
for ($i=0; $i<count($prevFiles); $i++) {
|
||||
if (file_exists(str_replace("|","/",$prevFiles[$i]))) {
|
||||
$prevFilesAvail .= $prevFiles[$i].",";
|
||||
}
|
||||
}
|
||||
$prevFilesAvail = rtrim($prevFilesAvail,",");
|
||||
$ICEcoderUserSettings['previousFiles'] = $prevFilesAvail;
|
||||
|
||||
// Replace our config created date with the filemtime?
|
||||
if (basename($_SERVER['SCRIPT_NAME']) == "index.php" && $ICEcoderUserSettings['configCreateDate'] == 0) {
|
||||
$settingsContents = file_get_contents(dirname(__FILE__)."/".$settingsFile,false,$context);
|
||||
clearstatcache();
|
||||
$configfilemtime = filemtime(dirname(__FILE__)."/"."config___settings.php");
|
||||
// Make it a number (avoids null, undefined etc)
|
||||
$configfilemtime = intval($configfilemtime);
|
||||
// Set it to the epoch time now if we don't have a real value
|
||||
if ($configfilemtime == 0) {
|
||||
$configfilemtime = time();
|
||||
}
|
||||
$settingsContents = str_replace('"configCreateDate" => 0,','"configCreateDate" => '.$configfilemtime.',',$settingsContents);
|
||||
// Now update the config file
|
||||
$fh = fopen(dirname(__FILE__)."/".$settingsFile, 'w') or die("Can't update config file. Please set public write permissions on ".$settingsFile." and press refresh");
|
||||
fwrite($fh, $settingsContents);
|
||||
fclose($fh);
|
||||
// Set the new value in array
|
||||
$ICEcoderUserSettings['configCreateDate'] = $configfilemtime;
|
||||
}
|
||||
|
||||
// On mismatch of settings file to system, rename to .old and reload
|
||||
If ($ICEcoderUserSettings["versionNo"] != $ICEcoderSettings["versionNo"]) {
|
||||
rename(dirname(__FILE__)."/".$settingsFile,dirname(__FILE__)."/".str_replace(".php",".old",$settingsFile));
|
||||
@@ -42,16 +97,10 @@ $ICEcoder = $ICEcoderSettings + $ICEcoderUserSettings;
|
||||
|
||||
// Include language file
|
||||
// Load base first as foundation
|
||||
if (strpos(str_replace("\\","/",realpath(dirname(__FILE__)."/../lang/".$ICEcoder['languageBase'])),str_replace("\\","/",realpath($ICEcoder['docRoot']))) !== 0) {
|
||||
die('Sorry, bad base language path');
|
||||
}
|
||||
if (strpos(str_replace("\\","/",realpath(dirname(__FILE__)."/../lang/".$ICEcoder['languageUser'])),str_replace("\\","/",realpath($ICEcoder['docRoot']))) !== 0) {
|
||||
die('Sorry, bad user language path');
|
||||
}
|
||||
include(dirname(__FILE__)."/../lang/".$ICEcoder['languageBase']);
|
||||
include(dirname(__FILE__)."/../lang/".basename($ICEcoder['languageBase']));
|
||||
$baseText = $text;
|
||||
// Load chosen language ontop to replace base
|
||||
include(dirname(__FILE__)."/../lang/".$ICEcoder['languageUser']);
|
||||
include(dirname(__FILE__)."/../lang/".basename($ICEcoder['languageUser']));
|
||||
$text = array_replace_recursive($baseText, $text);
|
||||
$_SESSION['text'] = $text;
|
||||
|
||||
@@ -60,19 +109,21 @@ if ((!$ICEcoder['loginRequired'] || $ICEcoder['demoMode']) && $ICEcoder['passwor
|
||||
$demoMode = $ICEcoder['demoMode'];
|
||||
|
||||
// Check if trial period has ended
|
||||
$tPeriod = 1209600;
|
||||
if (generateHash(strClean($ICEcoder['licenseEmail']),$ICEcoder['licenseCode'])!=$ICEcoder['licenseCode'] && $ICEcoder['configCreateDate'] > 0 && $ICEcoder['configCreateDate']+$tPeriod < time() && !isset($_GET['get']) && !isset($_POST['code'])) {
|
||||
$tPeriod = 1296000-1;
|
||||
|
||||
if (isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && generateHash(strClean($ICEcoder['licenseEmail']),$ICEcoder['licenseCode'])!=$ICEcoder['licenseCode'] && $ICEcoder['configCreateDate'] > 0 && $ICEcoder['configCreateDate']+$tPeriod < time() && !isset($_GET['get']) && !isset($_POST['code'])) {
|
||||
if (file_exists('lib/login.php')) {
|
||||
header('Location: lib/login.php?get=code&csrf='.$_SESSION["csrf"]);
|
||||
// Go to get code screen in top level window
|
||||
echo "<script>window.location='lib/login.php?get=code&csrf=".$_SESSION["csrf"]."';</script>";
|
||||
} else {
|
||||
header('Location: login.php?get=code&csrf='.$_SESSION["csrf"]);
|
||||
// Go to get code screen in top level window
|
||||
echo "<script>window.location='login.php?get=code&csrf=".$_SESSION["csrf"]."';</script>";
|
||||
}
|
||||
die('Redirecting to donate screen...');
|
||||
exit;
|
||||
}
|
||||
$tRemaining = ($ICEcoder['configCreateDate']+$tPeriod)-time();
|
||||
if ($tRemaining > $tPeriod) {$tRemaining = $tPeriod;};
|
||||
if ($tRemaining > $tPeriod || $ICEcoder['configCreateDate'] == 0) {$tRemaining = $tPeriod;};
|
||||
$tRemainingPerc = number_format($tRemaining/$tPeriod,2);
|
||||
$tDaysRemaining = intval($tRemaining/(60*60*24));
|
||||
|
||||
@@ -87,6 +138,7 @@ if (!isset($_SESSION['username'])) {$_SESSION['username'] = false;};
|
||||
if(isset($_POST['submit']) && $setPWorLogin=="login") {
|
||||
// On success, set username if multiUser, loggedIn to true and redirect
|
||||
if (generateHash(strClean($_POST['password']),$ICEcoder["password"])==$ICEcoder["password"]) {
|
||||
session_regenerate_id();
|
||||
if ($ICEcoder["multiUser"]) {
|
||||
$_SESSION['username'] = $_POST['username'];
|
||||
}
|
||||
@@ -186,10 +238,6 @@ if ((!$_SESSION['loggedIn'] || $ICEcoder["password"] == "") && !strpos($_SERVER[
|
||||
if ($ICEcoder["password"] == "" && isset($_POST['submit']) && (strpos($_POST['submit'],"set password")>-1)) {
|
||||
$password = generateHash(strClean($_POST['password']));
|
||||
$settingsContents = file_get_contents($settingsFile,false,$context);
|
||||
// Replace our config created date with the filemtime
|
||||
clearstatcache();
|
||||
$configfilemtime = filemtime("config___settings.php");
|
||||
$settingsContents = str_replace('"configCreateDate" => 0,','"configCreateDate" => '.$configfilemtime.',',$settingsContents);
|
||||
// Replace our empty password with the one submitted by user
|
||||
$settingsContents = str_replace('"password" => "",','"password" => "'.$password.'",',$settingsContents);
|
||||
// Also set the update checker preference
|
||||
|
||||
@@ -8,7 +8,7 @@ $t = $text['updater'];
|
||||
<title>Updating ICEcoder...</title>
|
||||
</head>
|
||||
|
||||
<body style="background: #141414; color: #fff; font-size: 10px; font-family: arial, helvetica, swiss, verdana">
|
||||
<body style="background: #181817; color: #fff; font-size: 10px; font-family: arial, helvetica, swiss, verdana">
|
||||
<?php
|
||||
define('PATH', '../tmp/oldVersion/');
|
||||
$updateDone = false;
|
||||
@@ -178,8 +178,8 @@ function transposeSettings($oldFile,$newFile,$saveFile) {
|
||||
// And override with old setting if not blank, not in excluded array and we have a match
|
||||
if ($thisKey != "" && $thisKey != "versionNo" && $thisKey != "codeMirrorDir" && strpos($oldSettingsArray[$j],'"'.$thisKey.'"') > -1) {
|
||||
$contentLine = $oldSettingsArray[$j].PHP_EOL;
|
||||
// If the old setting we're copying over isn't replacing the last line and doesn't end in a comma (after an rtrim to remove line endings), add one
|
||||
if ($i != count($newSettingsArray)-1 && substr(rtrim($contentLine),-1) != ",") {
|
||||
// If the old setting we're copying over isn't replacing the last line and doesn't end in a comma (after an rtrim to remove line endings), and doesn't contain a comment, add one
|
||||
if ($i != count($newSettingsArray)-1 && substr(rtrim($contentLine),-1) != "," && strpos($contentLine,"//") == -1) {
|
||||
$contentLine = str_replace(PHP_EOL,",".PHP_EOL,$contentLine);
|
||||
}
|
||||
}
|
||||
@@ -193,10 +193,23 @@ function transposeSettings($oldFile,$newFile,$saveFile) {
|
||||
}
|
||||
|
||||
function copyOverSettings($icvInfo) {
|
||||
global $updateDone;
|
||||
global $updateDone, $configSettings;
|
||||
|
||||
// System settings
|
||||
echo 'Transposing system settings...<br>';
|
||||
// Create a new config file if it doesn't exist yet.
|
||||
// The reason we create it, is so it has PHP write permissions, meaning we can update it later
|
||||
if (!file_exists(dirname(__FILE__)."/".$configSettings)) {
|
||||
echo 'Creating new settings file...<br>';
|
||||
// Include our params to make use of (as $newConfigSettingsFile)
|
||||
include(dirname(__FILE__)."/settings-system-params.php");
|
||||
if ($fConfigSettings = fopen(dirname(__FILE__)."/".$configSettings, 'w')) {
|
||||
fwrite($fConfigSettings, $newConfigSettingsFile);
|
||||
fclose($fConfigSettings);
|
||||
} else {
|
||||
die("Cannot update config file lib/".$configSettings.". Please check write permissions on lib/ and try again");
|
||||
}
|
||||
}
|
||||
transposeSettings(PATH."lib/config___settings.php","config___settings.php","config___settings.php");
|
||||
|
||||
// Users template settings
|
||||
@@ -220,13 +233,13 @@ startUpdate();
|
||||
if ($updateDone) {
|
||||
echo 'Updated successfully!<br><br>';
|
||||
echo 'Restarting ICEcoder...';
|
||||
echo '<script>alert("'.$t['Update appears to...'].'");window.location = "../";</script>';
|
||||
echo '<script>alert("'.$t['Update appears to...'].'");window.location = "../?display=updated&csrf='.$_SESSION["csrf"].'";</script>';
|
||||
} else {
|
||||
echo 'Something appears to have gone wrong :-/<br><br>';
|
||||
echo 'Please report bugs at <a href="https://github.com/mattpass/ICEcoder" style="color: #fff">https://github.com/mattpass/ICEcoder</a><br><br>';
|
||||
echo 'Please report bugs at <a href=\"https://github.com/mattpass/ICEcoder\" style=\"color: #fff\">https://github.com/mattpass/ICEcoder</a><br><br>';
|
||||
echo 'You can recover the old version from ICEcoder\'s tmp dir';
|
||||
}
|
||||
?>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
4
plugins/index.php
Normal file
4
plugins/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header("Location: ../");
|
||||
die();
|
||||
?>
|
||||
@@ -46,6 +46,7 @@ top.ICEcoder.switchMode = function(mode) {
|
||||
: fileExt == "jl" ? "text/x-julia"
|
||||
: fileExt == "c" ? "text/x-csrc"
|
||||
: fileExt == "cpp" ? "text/x-c++src"
|
||||
: fileExt == "ino" ? "text/x-c++src"
|
||||
: fileExt == "cs" ? "text/x-csharp"
|
||||
: fileExt == "go" ? "text/x-go"
|
||||
: fileExt == "lua" ? "text/x-lua"
|
||||
@@ -158,7 +159,7 @@ top.ICEcoder.updateNestingIndicator = function() {
|
||||
fileExt = fileName.split(".");
|
||||
fileExt = fileExt[fileExt.length-1];
|
||||
}
|
||||
if (thisCM && fileName && ["js","coffee","css","less","sql","erl","yaml","java","jl","c","cpp","cs","go","lua","pl","rs","scss"].indexOf(fileExt)==-1) {
|
||||
if (thisCM && fileName && ["js","coffee","css","less","sql","erl","yaml","java","jl","c","cpp","ino","cs","go","lua","pl","rs","scss"].indexOf(fileExt)==-1) {
|
||||
testToken = thisCM.getTokenAt({line:thisCM.lineCount(),ch:thisCM.lineInfo(thisCM.lineCount()-1).text.length});
|
||||
nestOK = testToken.type && testToken.type.indexOf("error") == -1 ? true : false;
|
||||
}
|
||||
@@ -203,6 +204,7 @@ top.ICEcoder.caretLocationType = function() {
|
||||
: fileExt == "jl" ? "Julia"
|
||||
: fileExt == "c" ? "C"
|
||||
: fileExt == "cpp" ? "C++"
|
||||
: fileExt == "ino" ? "C++"
|
||||
: fileExt == "cs" ? "C#"
|
||||
: fileExt == "go" ? "Go"
|
||||
: fileExt == "lua" ? "Lua"
|
||||
|
||||
5
test.php
5
test.php
@@ -1,6 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ICEcoder requirements tests</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=0.5, user-scalable=yes">
|
||||
<link rel="icon" type="image/png" href="favicon.png">
|
||||
</head>
|
||||
|
||||
<body style="font-family: Arial">
|
||||
|
||||
@@ -8,7 +8,7 @@ Open file, update document, save file, highlight line, add tag wrappers, duplica
|
||||
<head>
|
||||
<title>ICEcoder Test Suite</title>
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<script src="object-watch.js"></script>
|
||||
<script src="object-watch.js?microtime=<?php echo microtime(true);?>"></script>
|
||||
</head>
|
||||
|
||||
<script>
|
||||
@@ -49,6 +49,8 @@ test = {
|
||||
cM = ICEcoder.getcMInstance();
|
||||
if (cM && "undefined" != typeof ICEcoder.openFiles[0]) {
|
||||
testResult("+ GOOD",title+". Took "+t+"ms",x);
|
||||
ICEcoder.serverMessage();
|
||||
top.ICEcoder.serverQueue("del",0);
|
||||
test.updateDoc();
|
||||
} else if (t==1000) {
|
||||
testResult("- FAIL",title+". Took "+t+"ms",x);
|
||||
@@ -79,7 +81,7 @@ test = {
|
||||
x = setInterval(function() {
|
||||
wait();
|
||||
cM = ICEcoder.getcMInstance();
|
||||
if (cM && ICEcoder.savedPoints[0]==cM.changeGeneration()) {
|
||||
if (cM && ICEcoder.savedPoints[0]==cM.changeGeneration()-1) {
|
||||
testResult("+ GOOD",title+". Took "+t+"ms",x);
|
||||
test.tagWrapper();
|
||||
} else if (t==1000) {
|
||||
@@ -239,7 +241,9 @@ test = {
|
||||
if (cM.getValue() == '<script>\nICEcoder = "awesome";\n<\/script>') {
|
||||
testResult("+ GOOD",title);
|
||||
setTimeout(function() {
|
||||
ICEcoder.closeTab(1,false,true);
|
||||
ICEcoder.closeTab(1,false,true);
|
||||
console.log('TEST COMPLETE!');
|
||||
alert('Test Complete!\n\nRan '+s+' of '+total+' tests OK.\nSee console for more details.');
|
||||
},200);
|
||||
} else {
|
||||
testResult("- FAIL",title);
|
||||
|
||||
4
tmp/index.php
Normal file
4
tmp/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header("Location: ../");
|
||||
die();
|
||||
?>
|
||||
Reference in New Issue
Block a user