Compare commits
1302 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7acd53dd54 | ||
|
|
edbe8af62f | ||
|
|
6f50a23f3b | ||
|
|
53e5a4e3cb | ||
|
|
b1ef03513c | ||
|
|
e8cc6c540a | ||
|
|
f137a95704 | ||
|
|
453850a891 | ||
|
|
b3e2b497ff | ||
|
|
c8b1e573b5 | ||
|
|
180d26f837 | ||
|
|
07117591e5 | ||
|
|
d72c8a46d5 | ||
|
|
a24d9fc8da | ||
|
|
39541f4c81 | ||
|
|
7fc5c23b50 | ||
|
|
edc9f858fc | ||
|
|
429fab5c17 | ||
|
|
1c7d96a026 | ||
|
|
394a264ca9 | ||
|
|
1a2a921753 | ||
|
|
b650b64455 | ||
|
|
d43278fbf7 | ||
|
|
4a23fe12a3 | ||
|
|
2d45e6e297 | ||
|
|
df685b308e | ||
|
|
2b44096c4e | ||
|
|
b5550d4ba8 | ||
|
|
7e40f9c044 | ||
|
|
add96dc9d2 | ||
|
|
5fe097a84a | ||
|
|
0651eedf1e | ||
|
|
f7089ec6ca | ||
|
|
2f66afa4e4 | ||
|
|
6e12da596c | ||
|
|
cf26b5b4e2 | ||
|
|
ebf12f327f | ||
|
|
34d0dec862 | ||
|
|
24c6b870fc | ||
|
|
860590214d | ||
|
|
1d69fabce2 | ||
|
|
669d06a4c6 | ||
|
|
ce38b126dc | ||
|
|
18d66850fa | ||
|
|
78a4a35b17 | ||
|
|
e524012ec0 | ||
|
|
3432f9c331 | ||
|
|
f1b090351a | ||
|
|
2371455f45 | ||
|
|
27b2953d9d | ||
|
|
b90dbda803 | ||
|
|
3d0625231f | ||
|
|
d66d41b17f | ||
|
|
741a2bcc93 | ||
|
|
24c4409c12 | ||
|
|
94512c31dd | ||
|
|
56d1f60675 | ||
|
|
defc8d4ffa | ||
|
|
51661a41dd | ||
|
|
1ffea52e69 | ||
|
|
0e64cbdc7f | ||
|
|
b77fc4d3bb | ||
|
|
1fce0da413 | ||
|
|
5e1557171f | ||
|
|
35d1b01727 | ||
|
|
94310226b4 | ||
|
|
af19a5b825 | ||
|
|
aa939e2655 | ||
|
|
cd96fe4326 | ||
|
|
eff7e7fa85 | ||
|
|
de1704a617 | ||
|
|
40a2db446a | ||
|
|
bf997fba42 | ||
|
|
e462633dab | ||
|
|
760a90dadc | ||
|
|
bbac17a2b7 | ||
|
|
10f269734c | ||
|
|
b6baa39f0b | ||
|
|
2a4d75bf9d | ||
|
|
15bce56967 | ||
|
|
14f84ad668 | ||
|
|
cea9a4e299 | ||
|
|
dff76a439d | ||
|
|
4751e1c24a | ||
|
|
ec14772abd | ||
|
|
4f47e717e6 | ||
|
|
41e3e1c821 | ||
|
|
5ec63bb973 | ||
|
|
e05fc594b7 | ||
|
|
79669fe8c7 | ||
|
|
68078c028c | ||
|
|
fa2478f2f7 | ||
|
|
8c237d3551 | ||
|
|
5ae9e0b92e | ||
|
|
3258c45eb9 | ||
|
|
b797acea90 | ||
|
|
91f47a4e20 | ||
|
|
cfc4410275 | ||
|
|
bc552d2d2f | ||
|
|
30025333dd | ||
|
|
5ac87ffbf7 | ||
|
|
a08586252a | ||
|
|
d1e4404038 | ||
|
|
b235b40715 | ||
|
|
9b7d987d0b | ||
|
|
5b88f7172b | ||
|
|
4c5583e191 | ||
|
|
bafe89a7f3 | ||
|
|
1942b3143d | ||
|
|
28d03e07b5 | ||
|
|
6579378e19 | ||
|
|
8a57b241bd | ||
|
|
ff39f44569 | ||
|
|
9ea459787e | ||
|
|
084269bf35 | ||
|
|
b601ea0e85 | ||
|
|
574e71f5e7 | ||
|
|
8189985a72 | ||
|
|
bfc1babb64 | ||
|
|
4edbf8d79d | ||
|
|
f411370e32 | ||
|
|
2ea0ae8793 | ||
|
|
ed08585867 | ||
|
|
15eba478ac | ||
|
|
16da2d6a88 | ||
|
|
0b7120633d | ||
|
|
14ab734c96 | ||
|
|
414e814de2 | ||
|
|
d14fae9dd4 | ||
|
|
114b7e5d10 | ||
|
|
4c27e23d80 | ||
|
|
fbd8475b6e | ||
|
|
d348191a37 | ||
|
|
3958742c12 | ||
|
|
0e11386448 | ||
|
|
ee1d3cfcc0 | ||
|
|
491191ebde | ||
|
|
bf44a2515e | ||
|
|
869d184939 | ||
|
|
401568677e | ||
|
|
ea7a697e7d | ||
|
|
a029eceb9d | ||
|
|
7ef86360d8 | ||
|
|
746b133a9a | ||
|
|
c141fc2864 | ||
|
|
cc5cd166be | ||
|
|
2409bc19c2 | ||
|
|
297e482b11 | ||
|
|
46c1bdce02 | ||
|
|
be74745318 | ||
|
|
cd2e2747c5 | ||
|
|
3a7e728871 | ||
|
|
3db00273dd | ||
|
|
e47b21ce80 | ||
|
|
7adefd1ff0 | ||
|
|
1276e894b5 | ||
|
|
9c90ffea43 | ||
|
|
1ace4e4ed9 | ||
|
|
cf8a214a24 | ||
|
|
24ea1b108f | ||
|
|
3b0a00af02 | ||
|
|
2ad6f7fbc8 | ||
|
|
54dd10b3bd | ||
|
|
cc62871815 | ||
|
|
72da926a4d | ||
|
|
d2f34c50df | ||
|
|
8454d918e8 | ||
|
|
048577270b | ||
|
|
113e045f26 | ||
|
|
9c35206e3b | ||
|
|
a807e598fe | ||
|
|
fbfd58b788 | ||
|
|
4314ca2917 | ||
|
|
f3b89056ac | ||
|
|
d887eca03c | ||
|
|
9ba08fbf48 | ||
|
|
15fe43098f | ||
|
|
05de070294 | ||
|
|
024e943d9f | ||
|
|
f82914207d | ||
|
|
941801078c | ||
|
|
296eeff33d | ||
|
|
0715782e3a | ||
|
|
44aca5ad1b | ||
|
|
d24a2745ce | ||
|
|
8da637c650 | ||
|
|
b9be8cb70d | ||
|
|
99a9c7ef80 | ||
|
|
744cfbad16 | ||
|
|
2db030c772 | ||
|
|
a7e4c28b2f | ||
|
|
7115b9e22c | ||
|
|
4cb2ac98d3 | ||
|
|
28881db771 | ||
|
|
7791fe21f0 | ||
|
|
73148eabed | ||
|
|
5f0d7a5a19 | ||
|
|
86b62d52a0 | ||
|
|
6c656f3b8f | ||
|
|
eaf466c2ce | ||
|
|
4efb9732a5 | ||
|
|
f80eacbd32 | ||
|
|
7cb52f4fc4 | ||
|
|
06fba7c7cb | ||
|
|
9499e98066 | ||
|
|
c2ec4b0ae3 | ||
|
|
ac3f3c4328 | ||
|
|
6857dadec5 | ||
|
|
9619dce24f | ||
|
|
f10909160a | ||
|
|
693b871456 | ||
|
|
4612e5036d | ||
|
|
abbc92d319 | ||
|
|
dec62a3380 | ||
|
|
80216b434d | ||
|
|
95b5126227 | ||
|
|
34b34bcc88 | ||
|
|
e41cb4dc09 | ||
|
|
a6b45171ab | ||
|
|
32e05ea8ac | ||
|
|
0bbc9347aa | ||
|
|
f4894fa838 | ||
|
|
34074e5e64 | ||
|
|
d5bca0c38a | ||
|
|
f96651b9e8 | ||
|
|
0d4ca6a483 | ||
|
|
195ba788bb | ||
|
|
f5d19d99d4 | ||
|
|
115169b16b | ||
|
|
90a58f0300 | ||
|
|
4e3d73e8b9 | ||
|
|
cdd38a88d2 | ||
|
|
bc9639dac2 | ||
|
|
38b7de4b5c | ||
|
|
1ee215516b | ||
|
|
92c4ec0223 | ||
|
|
aab3c5a433 | ||
|
|
ee9e053bb9 | ||
|
|
21ab41e677 | ||
|
|
2d76f1f7f3 | ||
|
|
9cd6f8ee8a | ||
|
|
b8f02708e0 | ||
|
|
d201e85d86 | ||
|
|
ec05132fa8 | ||
|
|
664d8058b5 | ||
|
|
87450c0f78 | ||
|
|
84d1402eef | ||
|
|
6746e0bc52 | ||
|
|
a0bc6e8c31 | ||
|
|
5de4cd657e | ||
|
|
230e8a0983 | ||
|
|
3d66db04ae | ||
|
|
6a81152b05 | ||
|
|
c988f76612 | ||
|
|
cc152db8ba | ||
|
|
6fedd41ced | ||
|
|
64c2cfa06f | ||
|
|
82c80a24b2 | ||
|
|
504e2e20fe | ||
|
|
21b4c8bc12 | ||
|
|
f6aff03fb9 | ||
|
|
30561cc2ae | ||
|
|
e8035c122c | ||
|
|
69aec81200 | ||
|
|
9b55729c91 | ||
|
|
d4131f3238 | ||
|
|
dbffc2925c | ||
|
|
8ec0d518ad | ||
|
|
3bf0e2e4db | ||
|
|
4803eb2bac | ||
|
|
8509a62f06 | ||
|
|
bc8d715a56 | ||
|
|
b0fd03f571 | ||
|
|
a55102106e | ||
|
|
78c3308686 | ||
|
|
fe6424a02b | ||
|
|
047a33a604 | ||
|
|
85e8d93190 | ||
|
|
5c2e7c0adf | ||
|
|
d63c1bf2ca | ||
|
|
36b03e840d | ||
|
|
b7731e03ff | ||
|
|
5c29bb106a | ||
|
|
52b29423d0 | ||
|
|
4707e15c12 | ||
|
|
484911c103 | ||
|
|
5aa5dc82bb | ||
|
|
5d4e22d363 | ||
|
|
d5b6355261 | ||
|
|
f71a16552e | ||
|
|
f2d06a1a2c | ||
|
|
ed5f2259c3 | ||
|
|
b344d1e91e | ||
|
|
5f051baeca | ||
|
|
4122a90175 | ||
|
|
823c2c1b5f | ||
|
|
5f778043e4 | ||
|
|
38c7885718 | ||
|
|
bada48ae76 | ||
|
|
2624469d61 | ||
|
|
40fbc83547 | ||
|
|
284f5acfb7 | ||
|
|
227e3cbb94 | ||
|
|
362c9935bf | ||
|
|
58eebb15fb | ||
|
|
10b6a3556f | ||
|
|
77559afe60 | ||
|
|
20f6e838ba | ||
|
|
ffef82fe76 | ||
|
|
3a98c3a457 | ||
|
|
dabb9ba79c | ||
|
|
f5cd2b46b9 | ||
|
|
5e792b80a9 | ||
|
|
020a95bd80 | ||
|
|
13d63575f6 | ||
|
|
4870fe9560 | ||
|
|
882e026f76 | ||
|
|
2136ad1955 | ||
|
|
fa97918684 | ||
|
|
05daab79c1 | ||
|
|
57a789f046 | ||
|
|
61cc4b82f0 | ||
|
|
a8168fed86 | ||
|
|
47af30e0b6 | ||
|
|
277dc67243 | ||
|
|
0e48b8d5a3 | ||
|
|
3bc4deac68 | ||
|
|
6a50c1ce2b | ||
|
|
55def4402a | ||
|
|
b23e2fe40b | ||
|
|
8133adeab8 | ||
|
|
a470daf9f5 | ||
|
|
1a85a1ddc3 | ||
|
|
ab8ad37467 | ||
|
|
b811cfe92f | ||
|
|
fa40d9dad7 | ||
|
|
16c7e5d010 | ||
|
|
d5e6fb041f | ||
|
|
f00686c679 | ||
|
|
45fef223ce | ||
|
|
89c811d140 | ||
|
|
17ec5f517c | ||
|
|
56511b66bb | ||
|
|
4f5ed727f0 | ||
|
|
75885aecf5 | ||
|
|
fa48d0d2f0 | ||
|
|
ec44407e25 | ||
|
|
394067ff07 | ||
|
|
ed800a01ce | ||
|
|
599af8d96b | ||
|
|
9a2881cd7b | ||
|
|
6e7612d3ec | ||
|
|
0413ec4414 | ||
|
|
c88d4f46e3 | ||
|
|
1306853e1e | ||
|
|
078068e252 | ||
|
|
69d8ddce77 | ||
|
|
3926d4468c | ||
|
|
493950667b | ||
|
|
d6a7db8f3e | ||
|
|
d6fcf5a121 | ||
|
|
328a8a9808 | ||
|
|
0daf6c3081 | ||
|
|
1d5c74e424 | ||
|
|
c6bb782118 | ||
|
|
b45817ec65 | ||
|
|
a15dfda92c | ||
|
|
6030e9a4ca | ||
|
|
a3c0243772 | ||
|
|
3d89af7e17 | ||
|
|
03655c4c4b | ||
|
|
acfcb6bf9d | ||
|
|
57593d730f | ||
|
|
a141a4bdf5 | ||
|
|
33e751027d | ||
|
|
e65d2b0805 | ||
|
|
9d7f7f8e93 | ||
|
|
91f14785b7 | ||
|
|
1267a3c895 | ||
|
|
0748f495df | ||
|
|
83f6c5cf53 | ||
|
|
1385d65a2b | ||
|
|
68e5e0b5a5 | ||
|
|
72e98816f0 | ||
|
|
641ff79493 | ||
|
|
dff16e9b3f | ||
|
|
7264deee67 | ||
|
|
f08552c5e3 | ||
|
|
b131ef1524 | ||
|
|
b6c16d938d | ||
|
|
842d7e5b37 | ||
|
|
91a28990e0 | ||
|
|
7843b5fac6 | ||
|
|
bdf3d6615e | ||
|
|
1c81713063 | ||
|
|
12ced2c7fc | ||
|
|
43ddc3d78f | ||
|
|
400524169e | ||
|
|
6b35c5dd2c | ||
|
|
33b2c7a06c | ||
|
|
04a11bdc4a | ||
|
|
9ee6a80209 | ||
|
|
686813e6be | ||
|
|
08c17154a8 | ||
|
|
0beb6df2c8 | ||
|
|
68a08d9636 | ||
|
|
5ea9c857e9 | ||
|
|
147a3863a6 | ||
|
|
fba79948c8 | ||
|
|
29e5dc0eae | ||
|
|
949e5790a3 | ||
|
|
b05e3f73b1 | ||
|
|
5dbf7982ce | ||
|
|
5a82761df8 | ||
|
|
748c378ff8 | ||
|
|
edf297305d | ||
|
|
869e2eb206 | ||
|
|
d2149be2ef | ||
|
|
c9399446eb | ||
|
|
e7aa4b4507 | ||
|
|
a0e3a04d1a | ||
|
|
210c92b52c | ||
|
|
a6435ec894 | ||
|
|
aab8e5cb3d | ||
|
|
b0743473f1 | ||
|
|
7b04a95eda | ||
|
|
4b8e40b20e | ||
|
|
70ca67b3d5 | ||
|
|
f5be67675b | ||
|
|
b2117ece23 | ||
|
|
56688c3836 | ||
|
|
3192015816 | ||
|
|
b6884e05cb | ||
|
|
f159d3710f | ||
|
|
51d9865dfc | ||
|
|
ecffe3a43e | ||
|
|
ddd7924960 | ||
|
|
93798fce93 | ||
|
|
0ad8c80514 | ||
|
|
b4d2947709 | ||
|
|
95f146a1c4 | ||
|
|
6aa3f45ef4 | ||
|
|
1bcc773bba | ||
|
|
116f8bdff7 | ||
|
|
c83e375e20 | ||
|
|
c73bd8f66c | ||
|
|
91ea437f37 | ||
|
|
5b71272bc3 | ||
|
|
51098b1ea3 | ||
|
|
02565fa3b8 | ||
|
|
4ebed7f960 | ||
|
|
8668c9ee3b | ||
|
|
c80cbbdc0a | ||
|
|
1584a7d1a6 | ||
|
|
62ec680dc0 | ||
|
|
3d8bd14774 | ||
|
|
59a749c5ce | ||
|
|
4124d64a58 | ||
|
|
39398cecae | ||
|
|
7df2a8c0ac | ||
|
|
cb5d3d8b1a | ||
|
|
8b30c8b2eb | ||
|
|
272bc177ce | ||
|
|
7c230cf09a | ||
|
|
638c61e014 | ||
|
|
ae864faa84 | ||
|
|
bfea966a14 | ||
|
|
58e7c5ec42 | ||
|
|
080aaea4f7 | ||
|
|
eb634555df | ||
|
|
d42ea6f54b | ||
|
|
3c4a0eba6d | ||
|
|
a7f3205edb | ||
|
|
71875e8f5b | ||
|
|
bccc613de0 | ||
|
|
accf9b0936 | ||
|
|
aa5ee237c9 | ||
|
|
1024c3ff50 | ||
|
|
1c915d81da | ||
|
|
31aceb7226 | ||
|
|
8f06223c07 | ||
|
|
73047549a6 | ||
|
|
ade86eda6b | ||
|
|
03c0842ba2 | ||
|
|
5dcfe80e71 | ||
|
|
3e0f41b585 | ||
|
|
887c7c1873 | ||
|
|
67ab6c8f9c | ||
|
|
af0e81e690 | ||
|
|
e54d735614 | ||
|
|
d298de35cf | ||
|
|
c55c154856 | ||
|
|
4a36e1ec64 | ||
|
|
53d712b0ba | ||
|
|
801597f91f | ||
|
|
af0de2020e | ||
|
|
1a5540de98 | ||
|
|
bac9dd697c | ||
|
|
62c28202a0 | ||
|
|
33b47df99b | ||
|
|
58075d175d | ||
|
|
581cef9550 | ||
|
|
d393018cd3 | ||
|
|
67a2c86173 | ||
|
|
8918abde7e | ||
|
|
b1277ab4a8 | ||
|
|
b692360fb0 | ||
|
|
bbd96d39ab | ||
|
|
6fcb600fd9 | ||
|
|
0da9371c4d | ||
|
|
209fb3be48 | ||
|
|
2817e9c34b | ||
|
|
ffed16ef15 | ||
|
|
43cc344b8b | ||
|
|
0a4c4f14eb | ||
|
|
61a22c060e | ||
|
|
1e322fedcd | ||
|
|
0da7ca2e4d | ||
|
|
f134eca08b | ||
|
|
6c717e995a | ||
|
|
07f5a9b548 | ||
|
|
951637127b | ||
|
|
6aa2d0e533 | ||
|
|
82b6af34ca | ||
|
|
d91ea35dfe | ||
|
|
1e0ff0dfd6 | ||
|
|
7147373d86 | ||
|
|
d86326aca8 | ||
|
|
b37a723296 | ||
|
|
7af428572d | ||
|
|
0c2962ca15 | ||
|
|
fcc1af71ec | ||
|
|
77b7a88651 | ||
|
|
f6e508fbff | ||
|
|
1ef5f94953 | ||
|
|
9fbf1e7504 | ||
|
|
c67d93e869 | ||
|
|
57d96b0bf9 | ||
|
|
50d2dadea2 | ||
|
|
bf755abbf4 | ||
|
|
ebc2764aab | ||
|
|
2912e351f5 | ||
|
|
f0e47e07bc | ||
|
|
ee917776f0 | ||
|
|
fe2719a6e3 | ||
|
|
0765ab378b | ||
|
|
0c9db2c573 | ||
|
|
12a8f2e81c | ||
|
|
ace40e0c29 | ||
|
|
c9e163a2df | ||
|
|
93d717c1aa | ||
|
|
b3510dfb67 | ||
|
|
5c347829a2 | ||
|
|
89e34fb24e | ||
|
|
9160b5cc8f | ||
|
|
00b02af6e6 | ||
|
|
6701c18929 | ||
|
|
659befd66a | ||
|
|
424992a783 | ||
|
|
0ab6745704 | ||
|
|
927471e165 | ||
|
|
72cd067341 | ||
|
|
0128499d73 | ||
|
|
9c4a74c406 | ||
|
|
8e139c481c | ||
|
|
45ad87c2eb | ||
|
|
cee91cc2d3 | ||
|
|
f4e2f24f65 | ||
|
|
f0da80b886 | ||
|
|
cf11fb5c3d | ||
|
|
729b48566e | ||
|
|
4f97378655 | ||
|
|
1a848823c5 | ||
|
|
526edbaca7 | ||
|
|
fa98c842d0 | ||
|
|
c7a0a4a493 | ||
|
|
cfa3fd69e0 | ||
|
|
e3bc4db204 | ||
|
|
6589e819f4 | ||
|
|
eefaebace8 | ||
|
|
35887450ce | ||
|
|
0f74645173 | ||
|
|
3388e090bb | ||
|
|
1d50425de1 | ||
|
|
4b69c44559 | ||
|
|
c673beab9d | ||
|
|
ce5b63a91c | ||
|
|
660d44cd76 | ||
|
|
3922ffcafb | ||
|
|
6d84279d46 | ||
|
|
bfbac046db | ||
|
|
3d071d8687 | ||
|
|
330d668d07 | ||
|
|
d07b5c550c | ||
|
|
3fbbeb0c5d | ||
|
|
637a853141 | ||
|
|
28387df059 | ||
|
|
6765770dea | ||
|
|
43d22c40a8 | ||
|
|
438aa25cc1 | ||
|
|
98a340a751 | ||
|
|
568cb08e4a | ||
|
|
93c76533d6 | ||
|
|
64a7520466 | ||
|
|
1b7d647d60 | ||
|
|
046bec29b2 | ||
|
|
13df17f236 | ||
|
|
631de2350d | ||
|
|
aa8ac56ff7 | ||
|
|
8df54367c5 | ||
|
|
a194aad9e9 | ||
|
|
fd2197eace | ||
|
|
c0983e0a62 | ||
|
|
4df33254d0 | ||
|
|
1c7fb3b61c | ||
|
|
c592e704ba | ||
|
|
e92662fd9b | ||
|
|
1dbc102cfc | ||
|
|
65c77f7d93 | ||
|
|
e715d02ea1 | ||
|
|
e5fac3efa3 | ||
|
|
4eb6d699c1 | ||
|
|
5c80c1eb94 | ||
|
|
60cbfd486c | ||
|
|
a5b36447b3 | ||
|
|
ce62da5b5c | ||
|
|
5e4a185e9d | ||
|
|
08765c7957 | ||
|
|
28e71adaf5 | ||
|
|
ea79d2900e | ||
|
|
28c59f88e9 | ||
|
|
fb3dc200fb | ||
|
|
e7223c96b7 | ||
|
|
90a531d2a8 | ||
|
|
1f1c71b218 | ||
|
|
b39fdaca95 | ||
|
|
65039feeba | ||
|
|
c62dabc3e3 | ||
|
|
b1f22c4421 | ||
|
|
2814739c1e | ||
|
|
d2cb97ab0a | ||
|
|
98514ac46f | ||
|
|
aaa10a5fff | ||
|
|
49c3f0e4bb | ||
|
|
673c779ca5 | ||
|
|
8c74c7a77c | ||
|
|
376d564004 | ||
|
|
26f3265299 | ||
|
|
d3d5554969 | ||
|
|
5ea3854043 | ||
|
|
ca08a101d1 | ||
|
|
d4de692822 | ||
|
|
2dc702efc6 | ||
|
|
8601363d46 | ||
|
|
110a342bb1 | ||
|
|
e4caebc368 | ||
|
|
934d353537 | ||
|
|
11465d1946 | ||
|
|
fdc5bc34fd | ||
|
|
10a91df31c | ||
|
|
c503830c25 | ||
|
|
0195524f17 | ||
|
|
c2ce4bed8f | ||
|
|
fd8b77a9df | ||
|
|
4b83741dbe | ||
|
|
ab5fbe8a9c | ||
|
|
30aef59c55 | ||
|
|
813d5f01dd | ||
|
|
040a19a400 | ||
|
|
13a5298be7 | ||
|
|
b366e47197 | ||
|
|
9bbc41d7b7 | ||
|
|
4a8703d5f0 | ||
|
|
dcb5c886fa | ||
|
|
fbc6425a13 | ||
|
|
332f2a492d | ||
|
|
86cab45ce2 | ||
|
|
0759aad72f | ||
|
|
9781a05d78 | ||
|
|
8c61b0ebc0 | ||
|
|
1d8f8dcdf9 | ||
|
|
8716026ae8 | ||
|
|
6dbef7c929 | ||
|
|
47775ac085 | ||
|
|
51aa38764a | ||
|
|
2b8010c24a | ||
|
|
8a24eeff24 | ||
|
|
863ece66fa | ||
|
|
b8f696ad69 | ||
|
|
40b31c7d00 | ||
|
|
d85983bbe9 | ||
|
|
143e006e55 | ||
|
|
68a8d6e052 | ||
|
|
ca22316ae4 | ||
|
|
46c0ec9c63 | ||
|
|
c9d4be3d1c | ||
|
|
f9b008f7d2 | ||
|
|
f2474ba8da | ||
|
|
52fc11eb57 | ||
|
|
72ab42e7bf | ||
|
|
5b32c96f1d | ||
|
|
846204c244 | ||
|
|
c0e62ad8e8 | ||
|
|
31bbbe098a | ||
|
|
0fb89ceb06 | ||
|
|
0f904e66d4 | ||
|
|
74739343d4 | ||
|
|
d4f1b9988b | ||
|
|
cd38113da2 | ||
|
|
c95772122f | ||
|
|
3196275bb1 | ||
|
|
483ee12ccd | ||
|
|
ba14dfdc46 | ||
|
|
b7a2e7d097 | ||
|
|
6ff8dcffc1 | ||
|
|
bc8903d3c8 | ||
|
|
6e43e7a336 | ||
|
|
df81050c2a | ||
|
|
ebfafc66cb | ||
|
|
bccf5d0f48 | ||
|
|
761a9f4505 | ||
|
|
5f29c44a9e | ||
|
|
c5b22427f3 | ||
|
|
d3737f5a62 | ||
|
|
7bef57ca76 | ||
|
|
ebff4cd1c0 | ||
|
|
b0dc96c888 | ||
|
|
13e1b933e1 | ||
|
|
b25cab1fe6 | ||
|
|
01ebefcb74 | ||
|
|
e536b0d5e2 | ||
|
|
2147f1f129 | ||
|
|
e684a1e91b | ||
|
|
6f95aeac8f | ||
|
|
f071f84eb4 | ||
|
|
8db478d8f0 | ||
|
|
ce481b0f25 | ||
|
|
6af16d7fca | ||
|
|
850cc3b2bd | ||
|
|
a1363ef41b | ||
|
|
71f82251f6 | ||
|
|
eaf39661ba | ||
|
|
2b991d9958 | ||
|
|
eed8b29753 | ||
|
|
ebc8e3a27b | ||
|
|
aa2ed93d74 | ||
|
|
ba520e6aa1 | ||
|
|
61373e87ea | ||
|
|
4dd95b1b0f | ||
|
|
f160b4fa80 | ||
|
|
de637f1048 | ||
|
|
f628868a8e | ||
|
|
9dd2221841 | ||
|
|
24d68efd4b | ||
|
|
ad8c3da48b | ||
|
|
7255ea4805 | ||
|
|
47cf80102c | ||
|
|
2cebe069f2 | ||
|
|
3326ba5784 | ||
|
|
5e5fa22566 | ||
|
|
95dbad842d | ||
|
|
5576c9e2e9 | ||
|
|
3577fc613e | ||
|
|
7bdeefd7e1 | ||
|
|
df2697c68b | ||
|
|
d859075e97 | ||
|
|
d6c282a70a | ||
|
|
f541fae982 | ||
|
|
054cc5cad9 | ||
|
|
b52f0cd112 | ||
|
|
4865f6c87b | ||
|
|
b2ceca3a8f | ||
|
|
2c4ee9370c | ||
|
|
1f10cad45b | ||
|
|
c2e92fa355 | ||
|
|
2f85371738 | ||
|
|
a48c9f5a77 | ||
|
|
61728cfa07 | ||
|
|
1643e74758 | ||
|
|
33a354688a | ||
|
|
7c2d6f6fb5 | ||
|
|
ea959248ca | ||
|
|
2665a3be40 | ||
|
|
d240cf0a53 | ||
|
|
c02e7cd0b5 | ||
|
|
6a3e15aabf | ||
|
|
e4bae8cdc5 | ||
|
|
e0e679d436 | ||
|
|
0f3050521d | ||
|
|
db5a10bb96 | ||
|
|
b05954eccd | ||
|
|
d2504dac64 | ||
|
|
a95e4124a8 | ||
|
|
c18630b0a5 | ||
|
|
f436aa835d | ||
|
|
7409c89a87 | ||
|
|
0de8405906 | ||
|
|
39d4bfe858 | ||
|
|
0677cb2a90 | ||
|
|
2dd2e64f43 | ||
|
|
3d45172991 | ||
|
|
979fb791ac | ||
|
|
1fcc2d996c | ||
|
|
e1d1891de8 | ||
|
|
fabfcbd742 | ||
|
|
3710fa9e79 | ||
|
|
b059261065 | ||
|
|
7b1b91ca14 | ||
|
|
098127c287 | ||
|
|
83c99f34a3 | ||
|
|
a9ae141838 | ||
|
|
c783416054 | ||
|
|
59e1bc3c56 | ||
|
|
f4cdff0c2c | ||
|
|
5bd99480f1 | ||
|
|
a86e7e4182 | ||
|
|
c3477264b3 | ||
|
|
9c4c33aa76 | ||
|
|
9b5aea5aec | ||
|
|
614ee50262 | ||
|
|
f1b7c973d3 | ||
|
|
0c7fad798c | ||
|
|
e4ed3cf978 | ||
|
|
63687b7f48 | ||
|
|
20454a21ed | ||
|
|
eb30cb0cb6 | ||
|
|
b211fae85c | ||
|
|
93b4774903 | ||
|
|
236b55fce6 | ||
|
|
c34bf50c39 | ||
|
|
b8f921dab2 | ||
|
|
fc79be3010 | ||
|
|
63d08eeed2 | ||
|
|
7fa39f645d | ||
|
|
535677fc8e | ||
|
|
2dfff50031 | ||
|
|
c335b6b7fb | ||
|
|
a81c4c7a75 | ||
|
|
e2ada5e6b2 | ||
|
|
43ae4ac317 | ||
|
|
5f0ee6d95e | ||
|
|
0947172391 | ||
|
|
0fb9680f72 | ||
|
|
ba94a3bba0 | ||
|
|
11963e263d | ||
|
|
3f15cb8fff | ||
|
|
eca4f8e06d | ||
|
|
358be2ee92 | ||
|
|
acd8f949e7 | ||
|
|
a1574af5e0 | ||
|
|
525e73e179 | ||
|
|
abe1745642 | ||
|
|
eda925e617 | ||
|
|
5ab3f7ba16 | ||
|
|
cb12bdad2d | ||
|
|
2a6c2fc273 | ||
|
|
216c04b3f1 | ||
|
|
0ecb6ea1aa | ||
|
|
f3fff8543d | ||
|
|
2d75b57195 | ||
|
|
7ebd73916e | ||
|
|
cafa9d521a | ||
|
|
a5b395d888 | ||
|
|
c214640bb1 | ||
|
|
d7a8b35ded | ||
|
|
bcc86e160f | ||
|
|
5b14389c6e | ||
|
|
0ba4803154 | ||
|
|
e58f9cae28 | ||
|
|
1d5c049c01 | ||
|
|
0d01b4a2ea | ||
|
|
d43a758a37 | ||
|
|
d886372f11 | ||
|
|
838d44bd5c | ||
|
|
8f997eb4f3 | ||
|
|
65b3fc56ef | ||
|
|
6e061cbc30 | ||
|
|
9e44b76214 | ||
|
|
d1e928e068 | ||
|
|
2c2249d96b | ||
|
|
d87e932030 | ||
|
|
44cac8a7e1 | ||
|
|
736d3c8744 | ||
|
|
3104065437 | ||
|
|
444695a908 | ||
|
|
eba6f4eaf2 | ||
|
|
e3b4f0b159 | ||
|
|
5c55939765 | ||
|
|
bd69d00182 | ||
|
|
7312789e12 | ||
|
|
4e765e64ca | ||
|
|
660f86018a | ||
|
|
b5050acba0 | ||
|
|
2fa780236b | ||
|
|
831770e7d8 | ||
|
|
c50102e153 | ||
|
|
54088daa67 | ||
|
|
169312f021 | ||
|
|
62ab717772 | ||
|
|
6273bcdd3f | ||
|
|
5b894794dd | ||
|
|
b31c41fdda | ||
|
|
2c6bcacb25 | ||
|
|
ed9b9881b6 | ||
|
|
2d2945cc5c | ||
|
|
3b1a1fbbe2 | ||
|
|
be2f15f77b | ||
|
|
3c4872c231 | ||
|
|
8c605674f3 | ||
|
|
c1549faca1 | ||
|
|
f4b98cd4ff | ||
|
|
cbeac572f5 | ||
|
|
f94371f16c | ||
|
|
7111a2aee3 | ||
|
|
cc82304996 | ||
|
|
3d91b8ab13 | ||
|
|
9a4ae52df0 | ||
|
|
466b6bb1dd | ||
|
|
facf511621 | ||
|
|
c4cada924e | ||
|
|
99b8a02c0e | ||
|
|
b74ed1490a | ||
|
|
02f64e318d | ||
|
|
2938014b33 | ||
|
|
45040555f0 | ||
|
|
591ec57c49 | ||
|
|
d5626ab7df | ||
|
|
2a25efba1a | ||
|
|
9197d24fff | ||
|
|
9fa87c5141 | ||
|
|
dddf2e9ea1 | ||
|
|
69ea8838cd | ||
|
|
33ea31f1fa | ||
|
|
e2adcabc5b | ||
|
|
a33ded4409 | ||
|
|
6161518d8b | ||
|
|
bf40cb2009 | ||
|
|
12f8315a84 | ||
|
|
0f460483f3 | ||
|
|
bf22cd1638 | ||
|
|
e656c89ba1 | ||
|
|
b8416ed4c1 | ||
|
|
62b8e18c9e | ||
|
|
1e09ccbc0c | ||
|
|
76717f6141 | ||
|
|
33308688aa | ||
|
|
df481aaf07 | ||
|
|
82190b330b | ||
|
|
19d8103806 | ||
|
|
30b6120582 | ||
|
|
b7aa8bd56c | ||
|
|
4aad818888 | ||
|
|
68a51af239 | ||
|
|
80d64ae4e0 | ||
|
|
cd295e2315 | ||
|
|
80bdd6761b | ||
|
|
bf0798d397 | ||
|
|
e130a87e81 | ||
|
|
34e22c63a0 | ||
|
|
70db2a15f4 | ||
|
|
aaa7be7bff | ||
|
|
000fda848b | ||
|
|
c0f0595ad7 | ||
|
|
62ad6dde67 | ||
|
|
8750fe7a43 | ||
|
|
b0f0bb10ec | ||
|
|
e05f276b6a | ||
|
|
a075934168 | ||
|
|
5898ebb5f0 | ||
|
|
d122c83535 | ||
|
|
2025e8f10b | ||
|
|
3339a63268 | ||
|
|
3d2eef2a69 | ||
|
|
aa9f1074bd | ||
|
|
545ba36db4 | ||
|
|
53b8979861 | ||
|
|
0569a4b633 | ||
|
|
cc306475b2 | ||
|
|
3f0982dd7c | ||
|
|
017ef727ab | ||
|
|
1f1635ede3 | ||
|
|
f2f2e780b0 | ||
|
|
f32e7df86a | ||
|
|
030e219cbd | ||
|
|
111e8c82c4 | ||
|
|
d0aad8589d | ||
|
|
c7eb890ffe | ||
|
|
47a9bde70b | ||
|
|
7abadcc6c3 | ||
|
|
8a52bcfec2 | ||
|
|
81770d2182 | ||
|
|
0ed030fae3 | ||
|
|
a8dd0632f2 | ||
|
|
04f7e84642 | ||
|
|
efda17ecfa | ||
|
|
11c9bf39ff | ||
|
|
c41cfe5ae2 | ||
|
|
61c6270edd | ||
|
|
1fe5e6ad8e | ||
|
|
8c7fbcd7d4 | ||
|
|
6746fdb98e | ||
|
|
4cf48bb50f | ||
|
|
80a4e54802 | ||
|
|
c19a958629 | ||
|
|
9b969087a5 | ||
|
|
121de8090f | ||
|
|
ae18a10fd8 | ||
|
|
05b0ef75c9 | ||
|
|
8dfad0aa5d | ||
|
|
b07f2e9633 | ||
|
|
6ecc435b85 | ||
|
|
a0a70495f0 | ||
|
|
29981dfd52 | ||
|
|
86735ac3b7 | ||
|
|
e5a1a10101 | ||
|
|
f362a83cfa | ||
|
|
df902fb08e | ||
|
|
29de36f348 | ||
|
|
92e7603aa5 | ||
|
|
e3431f201c | ||
|
|
5c7a6bbf8f | ||
|
|
d6a82d1962 | ||
|
|
a7a5ada4d9 | ||
|
|
6ff50cb42d | ||
|
|
7ffc89f41b | ||
|
|
8c1131442b | ||
|
|
c49acc9084 | ||
|
|
f03cfcb0e3 | ||
|
|
460d7c5aea | ||
|
|
50fd681420 | ||
|
|
70c8ca3a55 | ||
|
|
1234f789a4 | ||
|
|
25fd009be3 | ||
|
|
9ffab47f83 | ||
|
|
38c46f3d5c | ||
|
|
3a0c33c5cf | ||
|
|
5d6b057361 | ||
|
|
8fcbdc8ea0 | ||
|
|
a774f9052d | ||
|
|
2d79b5a988 | ||
|
|
86ae5e14b4 | ||
|
|
8153d4a139 | ||
|
|
3e80d86628 | ||
|
|
a097330772 | ||
|
|
5545743bd8 | ||
|
|
ccd212f839 | ||
|
|
5697625a7d | ||
|
|
3d54005332 | ||
|
|
a5894dfae8 | ||
|
|
b3aa6e37b9 | ||
|
|
e4e7661a3d | ||
|
|
9fe38ad649 | ||
|
|
a8a03a831a | ||
|
|
0df4db9286 | ||
|
|
e4599e3076 | ||
|
|
1a0d8933dc | ||
|
|
00af30281c | ||
|
|
8c85b3098d | ||
|
|
000607f8e0 | ||
|
|
82e3698dd2 | ||
|
|
0dd9535a5b | ||
|
|
088b3f60ea | ||
|
|
c118159121 | ||
|
|
5fad745220 | ||
|
|
02b41bfbdc | ||
|
|
82ab3faca3 | ||
|
|
df74757e83 | ||
|
|
a21772f3c2 | ||
|
|
cbd930a340 | ||
|
|
9f129c9781 | ||
|
|
18931e94b0 | ||
|
|
1520828dff | ||
|
|
43223d1677 | ||
|
|
3fb9836fc8 | ||
|
|
8cd5a10ea8 | ||
|
|
da1850896b | ||
|
|
336ef01dee | ||
|
|
246bf189b5 | ||
|
|
825effadd9 | ||
|
|
51f53855f8 | ||
|
|
65fa29fbb8 | ||
|
|
5bcfa06e19 | ||
|
|
b01218958f | ||
|
|
7887f0e7a1 | ||
|
|
f522502938 | ||
|
|
c7f533cf0a | ||
|
|
a3107de33e | ||
|
|
e69a3249e5 | ||
|
|
f3c24f05e0 | ||
|
|
20364bb1d7 | ||
|
|
3d1c92dae4 | ||
|
|
4048895c6b | ||
|
|
991908bd8d | ||
|
|
8ff559dbef | ||
|
|
d7d483ef9c | ||
|
|
b11064e3a8 | ||
|
|
409d35b29b | ||
|
|
811cf40cd7 | ||
|
|
3aa9d23ac6 | ||
|
|
9c8bb08454 | ||
|
|
2c28af0dd7 | ||
|
|
cc6bd40b15 | ||
|
|
5221ba0959 | ||
|
|
61f132327d | ||
|
|
826730e88b | ||
|
|
5cdb08c35f | ||
|
|
9806d3705a | ||
|
|
55e6e66df6 | ||
|
|
0d38b23a60 | ||
|
|
07fd0ab6bf | ||
|
|
6036b0635d | ||
|
|
74f678076a | ||
|
|
ef157d71f2 | ||
|
|
0b718e0fbf | ||
|
|
809af86c16 | ||
|
|
449e8e2c4a | ||
|
|
01c8a10463 | ||
|
|
27da7ed0fe | ||
|
|
685116c555 | ||
|
|
0c4741c793 | ||
|
|
4da7024f91 | ||
|
|
b49a2cc52d | ||
|
|
c0fe50cd2f | ||
|
|
497efaabf0 | ||
|
|
2ee777739f | ||
|
|
deb3ad5359 | ||
|
|
3f1801ef2b | ||
|
|
ca8e92e443 | ||
|
|
c514e4a1ad | ||
|
|
ec28de40c9 | ||
|
|
14053fbfdd | ||
|
|
464030808c | ||
|
|
d2377bff34 | ||
|
|
d3f378f6bd | ||
|
|
09e1562fbc | ||
|
|
4e14ac6d9b | ||
|
|
97882f0c60 | ||
|
|
482a5cfb11 | ||
|
|
f73dee1103 | ||
|
|
9034e1ad45 | ||
|
|
7e35481b62 | ||
|
|
2f87f2adc3 | ||
|
|
6b345ac041 | ||
|
|
19e18f6a10 | ||
|
|
f181cef9e9 | ||
|
|
dd19c39cf8 | ||
|
|
5887a9c755 | ||
|
|
ca35084160 | ||
|
|
644eee0aca | ||
|
|
510a0c1087 | ||
|
|
4afbe4c2fc | ||
|
|
6cf36cc99c | ||
|
|
b98127e83a | ||
|
|
f7f195f083 | ||
|
|
22e6228a08 | ||
|
|
b757e42c88 | ||
|
|
fdf1ef1cb7 | ||
|
|
4797ff84d8 | ||
|
|
3937d733f0 | ||
|
|
0328643c7c | ||
|
|
80c73523e3 | ||
|
|
8c5747798d | ||
|
|
bdf6dbd096 | ||
|
|
0eaef469f9 | ||
|
|
f2d3615e26 | ||
|
|
24f05a1c03 | ||
|
|
570642d820 | ||
|
|
fd794f99d2 | ||
|
|
9a95bae6ba | ||
|
|
1b04504617 | ||
|
|
2a2cd81149 | ||
|
|
2bb961b7a8 | ||
|
|
01b035d7af | ||
|
|
8d0de398fd | ||
|
|
2ebec54476 | ||
|
|
b66d5fe8d3 | ||
|
|
0f989f249f | ||
|
|
6980bdcf7f | ||
|
|
975a016974 | ||
|
|
4be1b45896 | ||
|
|
8e10824189 | ||
|
|
1a881b4eaf | ||
|
|
2a9e91dd55 | ||
|
|
725ea8999a | ||
|
|
3427b736ec | ||
|
|
1dde9d0198 | ||
|
|
7577c3552d | ||
|
|
30de655fb2 | ||
|
|
09cf5589f5 | ||
|
|
b206f8ab78 | ||
|
|
f358cdea5b | ||
|
|
14fe45bda8 | ||
|
|
72ff461b45 | ||
|
|
96fe7d46ba | ||
|
|
d40cdeb65e | ||
|
|
4130df7bf9 | ||
|
|
6e176cdda7 | ||
|
|
bdb171dc6d | ||
|
|
801471a105 | ||
|
|
f86cb53bd9 | ||
|
|
435e1b3b4b | ||
|
|
4b17d76144 | ||
|
|
d96ebe4282 | ||
|
|
e5c5e7dc5e | ||
|
|
fe593dcb09 | ||
|
|
b1056a19a3 | ||
|
|
048c47f7f3 | ||
|
|
a4bb1605ce | ||
|
|
c4d24c0a4c | ||
|
|
99dedb61cb | ||
|
|
702c3d069f | ||
|
|
8ec8efe967 | ||
|
|
4aa0260399 | ||
|
|
f24aaf1396 | ||
|
|
00ddd056af | ||
|
|
2438fbb13d | ||
|
|
20832c3dcc | ||
|
|
725461f04e | ||
|
|
a3edd7bdf9 | ||
|
|
8d9d330678 | ||
|
|
d46fa3012b | ||
|
|
75e9f916ec | ||
|
|
f71277008f | ||
|
|
184a9d223b | ||
|
|
b4c45e33e9 | ||
|
|
eea960bcbd | ||
|
|
609e4397db | ||
|
|
b8bfbc5f6a | ||
|
|
4b274f959e | ||
|
|
e66811a4e2 | ||
|
|
139bfe775c | ||
|
|
feb26af4bf | ||
|
|
27d75f810a | ||
|
|
bc251d8c2b | ||
|
|
bde9010000 | ||
|
|
91314f423f | ||
|
|
2bb0a361aa | ||
|
|
5517bf80f9 | ||
|
|
f141e6f7a7 | ||
|
|
7220288460 | ||
|
|
d9f4955736 | ||
|
|
13255bc58b | ||
|
|
2988de5501 | ||
|
|
70a69f1c3b | ||
|
|
7cce0bf865 | ||
|
|
16e3e92c4a | ||
|
|
5f1b78ea1d | ||
|
|
9f36a8e5f8 | ||
|
|
89a2212408 | ||
|
|
9ed344d22d | ||
|
|
642db4c5b9 | ||
|
|
2a93778df7 | ||
|
|
c11500b791 | ||
|
|
ee0303dc06 | ||
|
|
0d55f3bd81 | ||
|
|
0e377c1aff | ||
|
|
388bd7cefa | ||
|
|
8234b3b063 | ||
|
|
573a07026d | ||
|
|
880e04d760 | ||
|
|
683752762d | ||
|
|
79a78e0a58 | ||
|
|
c33bea997a | ||
|
|
a2f8d9bc43 | ||
|
|
80d717b4dc | ||
|
|
e14a8df6a0 | ||
|
|
4be0067852 | ||
|
|
30a97ed4db | ||
|
|
1257ed0174 | ||
|
|
c717dd7bba | ||
|
|
e0a7893578 | ||
|
|
6df5adf0f1 | ||
|
|
7e773e5d0a | ||
|
|
c3dbc4187f | ||
|
|
6c004c3010 | ||
|
|
96054295a0 | ||
|
|
640c0e9c4a | ||
|
|
ce04ef36da | ||
|
|
677e90ed6b | ||
|
|
c2fcdd6b9f | ||
|
|
d89cd59c8b | ||
|
|
ae0d933588 | ||
|
|
15a092ce87 | ||
|
|
e23fc7d15a | ||
|
|
0c07937d45 | ||
|
|
2694a06876 | ||
|
|
66ca709da9 | ||
|
|
a01d770044 | ||
|
|
bdfa5b6141 | ||
|
|
0d9116b9dc | ||
|
|
5c8f11bfe3 | ||
|
|
a32f04a4e3 | ||
|
|
133317efdb | ||
|
|
58f8834041 | ||
|
|
71ff5d3058 | ||
|
|
fb82fcdb20 | ||
|
|
3837e18af2 | ||
|
|
c4a431bd2f | ||
|
|
9ff868a2d4 | ||
|
|
7a44e5db9a | ||
|
|
9ec77d62cc | ||
|
|
fd974c7bb7 |
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
error-log.txt
|
||||
backups/*.zip
|
||||
lib/config-*
|
||||
plugins/*
|
||||
test/test-file1.txt
|
||||
tmp/*
|
||||
@@ -1,173 +0,0 @@
|
||||
.CodeMirror {
|
||||
line-height: 1em;
|
||||
font-family: monospace;
|
||||
|
||||
/* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */
|
||||
position: relative;
|
||||
/* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
overflow: auto;
|
||||
height: 300px;
|
||||
/* This is needed to prevent an IE[67] bug where the scrolled content
|
||||
is visible outside of the scrolling box. */
|
||||
position: relative;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Vertical scrollbar */
|
||||
.CodeMirror-scrollbar {
|
||||
position: absolute;
|
||||
right: 0; top: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
z-index: 5;
|
||||
}
|
||||
.CodeMirror-scrollbar-inner {
|
||||
/* This needs to have a nonzero width in order for the scrollbar to appear
|
||||
in Firefox and IE9. */
|
||||
width: 1px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-overlap {
|
||||
/* Ensure that the scrollbar appears in Lion, and that it overlaps the content
|
||||
rather than sitting to the right of it. */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
float: none;
|
||||
right: 0;
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-nonoverlap {
|
||||
min-width: 12px;
|
||||
}
|
||||
.CodeMirror-scrollbar.cm-sb-ie7 {
|
||||
min-width: 18px;
|
||||
}
|
||||
|
||||
.CodeMirror-gutter {
|
||||
position: absolute; left: 0; top: 0;
|
||||
z-index: 10;
|
||||
background-color: #f7f7f7;
|
||||
border-right: 1px solid #eee;
|
||||
min-width: 2em;
|
||||
height: 100%;
|
||||
}
|
||||
.CodeMirror-gutter-text {
|
||||
color: #aaa;
|
||||
text-align: right;
|
||||
padding: .4em .2em .4em .4em;
|
||||
white-space: pre !important;
|
||||
cursor: default;
|
||||
}
|
||||
.CodeMirror-lines {
|
||||
padding: .4em;
|
||||
white-space: pre;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.CodeMirror pre {
|
||||
-moz-border-radius: 0;
|
||||
-webkit-border-radius: 0;
|
||||
-o-border-radius: 0;
|
||||
border-radius: 0;
|
||||
border-width: 0; margin: 0; padding: 0; background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
padding: 0; margin: 0;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
white-space: pre-wrap;
|
||||
word-break: normal;
|
||||
}
|
||||
.CodeMirror-wrap .CodeMirror-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror textarea {
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.CodeMirror pre.CodeMirror-cursor {
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
border-left: 1px solid black;
|
||||
border-right: none;
|
||||
width: 0;
|
||||
}
|
||||
.cm-keymap-fat-cursor pre.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
background: rgba(0, 200, 0, .4);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800);
|
||||
}
|
||||
/* Kludge to turn off filter in ie9+, which also accepts rgba */
|
||||
.cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) {
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
}
|
||||
.CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
|
||||
.CodeMirror-focused pre.CodeMirror-cursor {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; }
|
||||
|
||||
.CodeMirror-searching {
|
||||
background: #ffa;
|
||||
background: rgba(255, 255, 0, .4);
|
||||
}
|
||||
|
||||
/* Default theme */
|
||||
|
||||
.cm-s-default span.cm-keyword {color: #708;}
|
||||
.cm-s-default span.cm-atom {color: #219;}
|
||||
.cm-s-default span.cm-number {color: #164;}
|
||||
.cm-s-default span.cm-def {color: #00f;}
|
||||
.cm-s-default span.cm-variable {color: black;}
|
||||
.cm-s-default span.cm-variable-2 {color: #05a;}
|
||||
.cm-s-default span.cm-variable-3 {color: #085;}
|
||||
.cm-s-default span.cm-property {color: black;}
|
||||
.cm-s-default span.cm-operator {color: black;}
|
||||
.cm-s-default span.cm-comment {color: #a50;}
|
||||
.cm-s-default span.cm-string {color: #a11;}
|
||||
.cm-s-default span.cm-string-2 {color: #f50;}
|
||||
.cm-s-default span.cm-meta {color: #555;}
|
||||
.cm-s-default span.cm-error {color: #f00;}
|
||||
.cm-s-default span.cm-qualifier {color: #555;}
|
||||
.cm-s-default span.cm-builtin {color: #30a;}
|
||||
.cm-s-default span.cm-bracket {color: #cc7;}
|
||||
.cm-s-default span.cm-tag {color: #170;}
|
||||
.cm-s-default span.cm-attribute {color: #00c;}
|
||||
.cm-s-default span.cm-header {color: blue;}
|
||||
.cm-s-default span.cm-quote {color: #090;}
|
||||
.cm-s-default span.cm-hr {color: #999;}
|
||||
.cm-s-default span.cm-link {color: #00c;}
|
||||
|
||||
span.cm-header, span.cm-strong {font-weight: bold;}
|
||||
span.cm-em {font-style: italic;}
|
||||
span.cm-emstrong {font-style: italic; font-weight: bold;}
|
||||
span.cm-link {text-decoration: underline;}
|
||||
|
||||
span.cm-invalidchar {color: #f00;}
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
|
||||
@media print {
|
||||
|
||||
/* Hide the cursor when printing */
|
||||
.CodeMirror pre.CodeMirror-cursor {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
.cm-s-erlang-dark { background: #002240; color: white; }
|
||||
.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; }
|
||||
.cm-s-erlang-dark .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-erlang-dark .CodeMirror-gutter-text { color: #d0d0d0; }
|
||||
.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-erlang-dark span.cm-atom { color: #845dc4; }
|
||||
.cm-s-erlang-dark span.cm-attribute { color: #ff80e1; }
|
||||
.cm-s-erlang-dark span.cm-bracket { color: #ff9d00; }
|
||||
.cm-s-erlang-dark span.cm-builtin { color: #eeaaaa; }
|
||||
.cm-s-erlang-dark span.cm-comment { color: #7777ff; }
|
||||
.cm-s-erlang-dark span.cm-def { color: #ee77aa; }
|
||||
.cm-s-erlang-dark span.cm-error { color: #9d1e15; }
|
||||
.cm-s-erlang-dark span.cm-keyword { color: #ffee80; }
|
||||
.cm-s-erlang-dark span.cm-meta { color: #50fefe; }
|
||||
.cm-s-erlang-dark span.cm-number { color: #ffd0d0; }
|
||||
.cm-s-erlang-dark span.cm-operator { color: #dd1111; }
|
||||
.cm-s-erlang-dark span.cm-string { color: #3ad900; }
|
||||
.cm-s-erlang-dark span.cm-tag { color: #9effff; }
|
||||
.cm-s-erlang-dark span.cm-variable { color: #50fe50; }
|
||||
.cm-s-erlang-dark span.cm-variable-2 { color: #ee00ee; }
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (C) 2012 by Marijn Haverbeke <marijnh@gmail.com>
|
||||
Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -17,7 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
Please note that some subdirectories of the CodeMirror distribution
|
||||
include their own LICENSE files, and are released under different
|
||||
licences.
|
||||
38
CodeMirror-4.7/addon/hint/show-hint.css
Normal file
@@ -0,0 +1,38 @@
|
||||
.CodeMirror-hints {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
overflow: hidden;
|
||||
list-style: none;
|
||||
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
|
||||
-webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
|
||||
-moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2);
|
||||
box-shadow: 2px 3px 5px rgba(0,0,0,.2);
|
||||
border-radius: 3px;
|
||||
border: 1px solid silver;
|
||||
|
||||
background: white;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
|
||||
max-height: 20em;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-hint {
|
||||
margin: 0;
|
||||
padding: 0 4px;
|
||||
border-radius: 2px;
|
||||
max-width: 19em;
|
||||
overflow: hidden;
|
||||
white-space: pre;
|
||||
color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
li.CodeMirror-hint-active {
|
||||
background: #08f;
|
||||
color: white;
|
||||
}
|
||||
73
CodeMirror-4.7/addon/lint/lint.css
Normal file
@@ -0,0 +1,73 @@
|
||||
/* The lint marker gutter */
|
||||
.CodeMirror-lint-markers {
|
||||
width: 12px; margin-left: 2px;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-tooltip {
|
||||
background-color: infobackground;
|
||||
border: 1px solid black;
|
||||
border-radius: 4px 4px 4px 4px;
|
||||
color: infotext;
|
||||
font-family: monospace;
|
||||
font-size: 10pt;
|
||||
overflow: hidden;
|
||||
padding: 2px 5px;
|
||||
position: fixed;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
z-index: 100;
|
||||
max-width: 600px;
|
||||
opacity: 0;
|
||||
transition: opacity .4s;
|
||||
-moz-transition: opacity .4s;
|
||||
-webkit-transition: opacity .4s;
|
||||
-o-transition: opacity .4s;
|
||||
-ms-transition: opacity .4s;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
|
||||
background-position: left bottom;
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-error {
|
||||
background-image:
|
||||
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
|
||||
;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-mark-warning {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
cursor: help;
|
||||
display: inline-block;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
|
||||
padding-left: 18px;
|
||||
background-position: top left;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
|
||||
}
|
||||
|
||||
.CodeMirror-lint-marker-multiple {
|
||||
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right bottom;
|
||||
width: 100%; height: 100%;
|
||||
}
|
||||
54
CodeMirror-4.7/lib/codemirror-compressed.js
Normal file
309
CodeMirror-4.7/lib/codemirror.css
Normal file
@@ -0,0 +1,309 @@
|
||||
/* BASICS */
|
||||
|
||||
.CodeMirror {
|
||||
/* Set height, width, borders, and global font properties here */
|
||||
font-family: monospace;
|
||||
height: 300px;
|
||||
}
|
||||
.CodeMirror-scroll {
|
||||
/* Set scrolling behaviour here */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/* PADDING */
|
||||
|
||||
.CodeMirror-lines {
|
||||
padding: 4px 0; /* Vertical padding around content */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
padding: 0 4px; /* Horizontal padding of content */
|
||||
}
|
||||
|
||||
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
background-color: white; /* The little square between H and V scrollbars */
|
||||
}
|
||||
|
||||
/* GUTTER */
|
||||
|
||||
.CodeMirror-gutters {
|
||||
border-right: 1px solid #ddd;
|
||||
background-color: #f7f7f7;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.CodeMirror-linenumbers {}
|
||||
.CodeMirror-linenumber {
|
||||
padding: 0 3px 0 5px;
|
||||
min-width: 20px;
|
||||
text-align: right;
|
||||
color: #999;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
.CodeMirror-guttermarker { color: black; }
|
||||
.CodeMirror-guttermarker-subtle { color: #999; }
|
||||
|
||||
/* CURSOR */
|
||||
|
||||
.CodeMirror div.CodeMirror-cursor {
|
||||
border-left: 1px solid black;
|
||||
}
|
||||
/* Shown when moving in bi-directional text */
|
||||
.CodeMirror div.CodeMirror-secondarycursor {
|
||||
border-left: 1px solid silver;
|
||||
}
|
||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: #7e7;
|
||||
}
|
||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.cm-animate-fat-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
-webkit-animation: blink 1.06s steps(1) infinite;
|
||||
-moz-animation: blink 1.06s steps(1) infinite;
|
||||
animation: blink 1.06s steps(1) infinite;
|
||||
}
|
||||
@-moz-keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
@-webkit-keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
@keyframes blink {
|
||||
0% { background: #7e7; }
|
||||
50% { background: none; }
|
||||
100% { background: #7e7; }
|
||||
}
|
||||
|
||||
/* Can style cursor different in overwrite (non-insert) mode */
|
||||
div.CodeMirror-overwrite div.CodeMirror-cursor {}
|
||||
|
||||
.cm-tab { display: inline-block; text-decoration: inherit; }
|
||||
|
||||
.CodeMirror-ruler {
|
||||
border-left: 1px solid #ccc;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* DEFAULT THEME */
|
||||
|
||||
.cm-s-default .cm-keyword {color: #708;}
|
||||
.cm-s-default .cm-atom {color: #219;}
|
||||
.cm-s-default .cm-number {color: #164;}
|
||||
.cm-s-default .cm-def {color: #00f;}
|
||||
.cm-s-default .cm-variable,
|
||||
.cm-s-default .cm-punctuation,
|
||||
.cm-s-default .cm-property,
|
||||
.cm-s-default .cm-operator {}
|
||||
.cm-s-default .cm-variable-2 {color: #05a;}
|
||||
.cm-s-default .cm-variable-3 {color: #085;}
|
||||
.cm-s-default .cm-comment {color: #a50;}
|
||||
.cm-s-default .cm-string {color: #a11;}
|
||||
.cm-s-default .cm-string-2 {color: #f50;}
|
||||
.cm-s-default .cm-meta {color: #555;}
|
||||
.cm-s-default .cm-qualifier {color: #555;}
|
||||
.cm-s-default .cm-builtin {color: #30a;}
|
||||
.cm-s-default .cm-bracket {color: #997;}
|
||||
.cm-s-default .cm-tag {color: #170;}
|
||||
.cm-s-default .cm-attribute {color: #00c;}
|
||||
.cm-s-default .cm-header {color: blue;}
|
||||
.cm-s-default .cm-quote {color: #090;}
|
||||
.cm-s-default .cm-hr {color: #999;}
|
||||
.cm-s-default .cm-link {color: #00c;}
|
||||
|
||||
.cm-negative {color: #d44;}
|
||||
.cm-positive {color: #292;}
|
||||
.cm-header, .cm-strong {font-weight: bold;}
|
||||
.cm-em {font-style: italic;}
|
||||
.cm-link {text-decoration: underline;}
|
||||
|
||||
.cm-s-default .cm-error {color: #f00;}
|
||||
.cm-invalidchar {color: #f00;}
|
||||
|
||||
/* Default styles for common addons */
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
|
||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
|
||||
.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }
|
||||
.CodeMirror-activeline-background {background: #e8f2ff;}
|
||||
|
||||
/* STOP */
|
||||
|
||||
/* The rest of this file contains styles related to the mechanics of
|
||||
the editor. You probably shouldn't touch them. */
|
||||
|
||||
.CodeMirror {
|
||||
line-height: 1;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.CodeMirror-scroll {
|
||||
/* 30px is the magic margin used to hide the element's real scrollbars */
|
||||
/* See overflow: hidden in .CodeMirror */
|
||||
margin-bottom: -30px; margin-right: -30px;
|
||||
padding-bottom: 30px;
|
||||
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
|
||||
before actuall scrolling happens, thus preventing shaking and
|
||||
flickering artifacts. */
|
||||
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
|
||||
position: absolute;
|
||||
z-index: 6;
|
||||
display: none;
|
||||
}
|
||||
.CodeMirror-vscrollbar {
|
||||
right: 0; top: 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
.CodeMirror-hscrollbar {
|
||||
bottom: 0; left: 0;
|
||||
overflow-y: hidden;
|
||||
overflow-x: scroll;
|
||||
}
|
||||
.CodeMirror-scrollbar-filler {
|
||||
right: 0; bottom: 0;
|
||||
}
|
||||
.CodeMirror-gutter-filler {
|
||||
left: 0; bottom: 0;
|
||||
}
|
||||
|
||||
.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;
|
||||
/* Hack to make IE7 behave */
|
||||
*zoom:1;
|
||||
*display:inline;
|
||||
}
|
||||
.CodeMirror-gutter-elt {
|
||||
position: absolute;
|
||||
cursor: default;
|
||||
z-index: 4;
|
||||
}
|
||||
|
||||
.CodeMirror-lines {
|
||||
cursor: text;
|
||||
min-height: 1px; /* prevents collapsing before first draw */
|
||||
}
|
||||
.CodeMirror pre {
|
||||
/* Reset some styles that the rest of the page might have set */
|
||||
-moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
|
||||
border-width: 0;
|
||||
background: transparent;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
margin: 0;
|
||||
white-space: pre;
|
||||
word-wrap: normal;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
}
|
||||
.CodeMirror-wrap pre {
|
||||
word-wrap: break-word;
|
||||
white-space: pre-wrap;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.CodeMirror-linebackground {
|
||||
position: absolute;
|
||||
left: 0; right: 0; top: 0; bottom: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.CodeMirror-linewidget {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.CodeMirror-widget {}
|
||||
|
||||
.CodeMirror-wrap .CodeMirror-scroll {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.CodeMirror-measure {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
visibility: hidden;
|
||||
}
|
||||
.CodeMirror-measure pre { position: static; }
|
||||
|
||||
.CodeMirror div.CodeMirror-cursor {
|
||||
position: absolute;
|
||||
border-right: none;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
}
|
||||
.CodeMirror-focused div.CodeMirror-cursors {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.CodeMirror-selected { background: #d9d9d9; }
|
||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
|
||||
.CodeMirror-crosshair { cursor: crosshair; }
|
||||
|
||||
.cm-searching {
|
||||
background: #ffa;
|
||||
background: rgba(255, 255, 0, .4);
|
||||
}
|
||||
|
||||
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
|
||||
.CodeMirror span { *vertical-align: text-bottom; }
|
||||
|
||||
/* Used to force a border model for a node */
|
||||
.cm-force-border { padding-right: .1px; }
|
||||
|
||||
@media print {
|
||||
/* Hide the cursor when printing */
|
||||
.CodeMirror div.CodeMirror-cursors {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/* Help users use markselection to safely style text background */
|
||||
span.CodeMirror-selectedtext { background: none; }
|
||||
38
CodeMirror-4.7/theme/3024-day.css
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
|
||||
Name: 3024 day
|
||||
Author: Jan T. Sott (http://github.com/idleberg)
|
||||
|
||||
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
|
||||
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-3024-day.CodeMirror {background: #f7f7f7; color: #3a3432;}
|
||||
.cm-s-3024-day div.CodeMirror-selected {background: #d6d5d4 !important;}
|
||||
|
||||
.cm-s-3024-day .CodeMirror-gutters {background: #f7f7f7; border-right: 0px;}
|
||||
.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; }
|
||||
.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; }
|
||||
.cm-s-3024-day .CodeMirror-linenumber {color: #807d7c;}
|
||||
|
||||
.cm-s-3024-day .CodeMirror-cursor {border-left: 1px solid #5c5855 !important;}
|
||||
|
||||
.cm-s-3024-day span.cm-comment {color: #cdab53;}
|
||||
.cm-s-3024-day span.cm-atom {color: #a16a94;}
|
||||
.cm-s-3024-day span.cm-number {color: #a16a94;}
|
||||
|
||||
.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute {color: #01a252;}
|
||||
.cm-s-3024-day span.cm-keyword {color: #db2d20;}
|
||||
.cm-s-3024-day span.cm-string {color: #fded02;}
|
||||
|
||||
.cm-s-3024-day span.cm-variable {color: #01a252;}
|
||||
.cm-s-3024-day span.cm-variable-2 {color: #01a0e4;}
|
||||
.cm-s-3024-day span.cm-def {color: #e8bbd0;}
|
||||
.cm-s-3024-day span.cm-bracket {color: #3a3432;}
|
||||
.cm-s-3024-day span.cm-tag {color: #db2d20;}
|
||||
.cm-s-3024-day span.cm-link {color: #a16a94;}
|
||||
.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;}
|
||||
37
CodeMirror-4.7/theme/3024-night.css
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
|
||||
Name: 3024 night
|
||||
Author: Jan T. Sott (http://github.com/idleberg)
|
||||
|
||||
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
|
||||
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-3024-night.CodeMirror {background: #090300; color: #d6d5d4;}
|
||||
.cm-s-3024-night div.CodeMirror-selected {background: #3a3432 !important;}
|
||||
.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; }
|
||||
.cm-s-3024-night .CodeMirror-linenumber {color: #5c5855;}
|
||||
|
||||
.cm-s-3024-night .CodeMirror-cursor {border-left: 1px solid #807d7c !important;}
|
||||
|
||||
.cm-s-3024-night span.cm-comment {color: #cdab53;}
|
||||
.cm-s-3024-night span.cm-atom {color: #a16a94;}
|
||||
.cm-s-3024-night span.cm-number {color: #a16a94;}
|
||||
|
||||
.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute {color: #01a252;}
|
||||
.cm-s-3024-night span.cm-keyword {color: #db2d20;}
|
||||
.cm-s-3024-night span.cm-string {color: #fded02;}
|
||||
|
||||
.cm-s-3024-night span.cm-variable {color: #01a252;}
|
||||
.cm-s-3024-night span.cm-variable-2 {color: #01a0e4;}
|
||||
.cm-s-3024-night span.cm-def {color: #e8bbd0;}
|
||||
.cm-s-3024-night span.cm-bracket {color: #d6d5d4;}
|
||||
.cm-s-3024-night span.cm-tag {color: #db2d20;}
|
||||
.cm-s-3024-night span.cm-link {color: #a16a94;}
|
||||
.cm-s-3024-night span.cm-error {background: #db2d20; color: #807d7c;}
|
||||
|
||||
.cm-s-3024-night .CodeMirror-activeline-background {background: #2F2F2F !important;}
|
||||
.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
77
CodeMirror-4.7/theme/ambiance.css
Normal file
36
CodeMirror-4.7/theme/base16-dark.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
|
||||
Name: Base16 Default Dark
|
||||
Author: Chris Kempson (http://chriskempson.com)
|
||||
|
||||
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)
|
||||
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-base16-dark.CodeMirror {background: #151515; color: #e0e0e0;}
|
||||
.cm-s-base16-dark div.CodeMirror-selected {background: #303030 !important;}
|
||||
.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; }
|
||||
.cm-s-base16-dark .CodeMirror-linenumber {color: #505050;}
|
||||
.cm-s-base16-dark .CodeMirror-cursor {border-left: 1px solid #b0b0b0 !important;}
|
||||
|
||||
.cm-s-base16-dark span.cm-comment {color: #8f5536;}
|
||||
.cm-s-base16-dark span.cm-atom {color: #aa759f;}
|
||||
.cm-s-base16-dark span.cm-number {color: #aa759f;}
|
||||
|
||||
.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute {color: #90a959;}
|
||||
.cm-s-base16-dark span.cm-keyword {color: #ac4142;}
|
||||
.cm-s-base16-dark span.cm-string {color: #f4bf75;}
|
||||
|
||||
.cm-s-base16-dark span.cm-variable {color: #90a959;}
|
||||
.cm-s-base16-dark span.cm-variable-2 {color: #6a9fb5;}
|
||||
.cm-s-base16-dark span.cm-def {color: #d28445;}
|
||||
.cm-s-base16-dark span.cm-bracket {color: #e0e0e0;}
|
||||
.cm-s-base16-dark span.cm-tag {color: #ac4142;}
|
||||
.cm-s-base16-dark span.cm-link {color: #aa759f;}
|
||||
.cm-s-base16-dark span.cm-error {background: #ac4142; color: #b0b0b0;}
|
||||
|
||||
.cm-s-base16-dark .CodeMirror-activeline-background {background: #202020 !important;}
|
||||
.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
36
CodeMirror-4.7/theme/base16-light.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
|
||||
Name: Base16 Default Light
|
||||
Author: Chris Kempson (http://chriskempson.com)
|
||||
|
||||
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-chrome-devtools)
|
||||
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-base16-light.CodeMirror {background: #f5f5f5; color: #202020;}
|
||||
.cm-s-base16-light div.CodeMirror-selected {background: #e0e0e0 !important;}
|
||||
.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; }
|
||||
.cm-s-base16-light .CodeMirror-linenumber {color: #b0b0b0;}
|
||||
.cm-s-base16-light .CodeMirror-cursor {border-left: 1px solid #505050 !important;}
|
||||
|
||||
.cm-s-base16-light span.cm-comment {color: #8f5536;}
|
||||
.cm-s-base16-light span.cm-atom {color: #aa759f;}
|
||||
.cm-s-base16-light span.cm-number {color: #aa759f;}
|
||||
|
||||
.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute {color: #90a959;}
|
||||
.cm-s-base16-light span.cm-keyword {color: #ac4142;}
|
||||
.cm-s-base16-light span.cm-string {color: #f4bf75;}
|
||||
|
||||
.cm-s-base16-light span.cm-variable {color: #90a959;}
|
||||
.cm-s-base16-light span.cm-variable-2 {color: #6a9fb5;}
|
||||
.cm-s-base16-light span.cm-def {color: #d28445;}
|
||||
.cm-s-base16-light span.cm-bracket {color: #202020;}
|
||||
.cm-s-base16-light span.cm-tag {color: #ac4142;}
|
||||
.cm-s-base16-light span.cm-link {color: #aa759f;}
|
||||
.cm-s-base16-light span.cm-error {background: #ac4142; color: #505050;}
|
||||
|
||||
.cm-s-base16-light .CodeMirror-activeline-background {background: #DDDCDC !important;}
|
||||
.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
@@ -1,9 +1,11 @@
|
||||
/* Port of TextMate's Blackboard theme */
|
||||
|
||||
.cm-s-blackboard { background: #0C1021; color: #F8F8F8; }
|
||||
.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; }
|
||||
.cm-s-blackboard .CodeMirror-selected { background: #253B76 !important; }
|
||||
.cm-s-blackboard .CodeMirror-gutter { background: #0C1021; border-right: 0; }
|
||||
.cm-s-blackboard .CodeMirror-gutter-text { color: #888; }
|
||||
.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; }
|
||||
.cm-s-blackboard .CodeMirror-linenumber { color: #888; }
|
||||
.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }
|
||||
|
||||
.cm-s-blackboard .cm-keyword { color: #FBDE2D; }
|
||||
@@ -16,10 +18,13 @@
|
||||
.cm-s-blackboard .cm-string { color: #61CE3C; }
|
||||
.cm-s-blackboard .cm-string-2 { color: #61CE3C; }
|
||||
.cm-s-blackboard .cm-meta { color: #D8FA3C; }
|
||||
.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }
|
||||
.cm-s-blackboard .cm-builtin { color: #8DA6CE; }
|
||||
.cm-s-blackboard .cm-tag { color: #8DA6CE; }
|
||||
.cm-s-blackboard .cm-attribute { color: #8DA6CE; }
|
||||
.cm-s-blackboard .cm-header { color: #FF6400; }
|
||||
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
|
||||
.cm-s-blackboard .cm-link { color: #8DA6CE; }
|
||||
.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }
|
||||
|
||||
.cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;}
|
||||
.cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}
|
||||
@@ -1,7 +1,9 @@
|
||||
.cm-s-cobalt { background: #002240; color: white; }
|
||||
.cm-s-cobalt.CodeMirror { background: #002240; color: white; }
|
||||
.cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; }
|
||||
.cm-s-cobalt .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-cobalt .CodeMirror-gutter-text { color: #d0d0d0; }
|
||||
.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; }
|
||||
.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; }
|
||||
.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-cobalt span.cm-comment { color: #08f; }
|
||||
@@ -12,7 +14,10 @@
|
||||
.cm-s-cobalt span.cm-meta { color: #ff9d00; }
|
||||
.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; }
|
||||
.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; }
|
||||
.cm-s-cobalt span.cm-error { color: #9d1e15; }
|
||||
.cm-s-cobalt span.cm-bracket { color: #d8d8d8; }
|
||||
.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; }
|
||||
.cm-s-cobalt span.cm-link { color: #845dc4; }
|
||||
.cm-s-cobalt span.cm-error { color: #9d1e15; }
|
||||
|
||||
.cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;}
|
||||
.cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}
|
||||
@@ -11,15 +11,13 @@
|
||||
.cm-s-eclipse span.cm-comment {color: #3F7F5F;}
|
||||
.cm-s-eclipse span.cm-string {color: #2A00FF;}
|
||||
.cm-s-eclipse span.cm-string-2 {color: #f50;}
|
||||
.cm-s-eclipse span.cm-error {color: #f00;}
|
||||
.cm-s-eclipse span.cm-qualifier {color: #555;}
|
||||
.cm-s-eclipse span.cm-builtin {color: #30a;}
|
||||
.cm-s-eclipse span.cm-bracket {color: #cc7;}
|
||||
.cm-s-eclipse span.cm-tag {color: #170;}
|
||||
.cm-s-eclipse span.cm-attribute {color: #00c;}
|
||||
.cm-s-eclipse span.cm-link {color: #219;}
|
||||
.cm-s-eclipse span.cm-error {color: #f00;}
|
||||
|
||||
.cm-s-eclipse .CodeMirror-matchingbracket {
|
||||
border:1px solid grey;
|
||||
color:black !important;;
|
||||
}
|
||||
.cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;}
|
||||
.cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
|
||||
@@ -6,5 +6,8 @@
|
||||
.cm-s-elegant span.cm-qualifier {color: #555;}
|
||||
.cm-s-elegant span.cm-keyword {color: #730;}
|
||||
.cm-s-elegant span.cm-builtin {color: #30a;}
|
||||
.cm-s-elegant span.cm-error {background-color: #fdd;}
|
||||
.cm-s-elegant span.cm-link {color: #762;}
|
||||
.cm-s-elegant span.cm-error {background-color: #fdd;}
|
||||
|
||||
.cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;}
|
||||
.cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
|
||||
32
CodeMirror-4.7/theme/erlang-dark.css
Normal file
@@ -0,0 +1,32 @@
|
||||
.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; }
|
||||
.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539 !important; }
|
||||
.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; }
|
||||
.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; }
|
||||
.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-erlang-dark span.cm-atom { color: #f133f1; }
|
||||
.cm-s-erlang-dark span.cm-attribute { color: #ff80e1; }
|
||||
.cm-s-erlang-dark span.cm-bracket { color: #ff9d00; }
|
||||
.cm-s-erlang-dark span.cm-builtin { color: #eaa; }
|
||||
.cm-s-erlang-dark span.cm-comment { color: #77f; }
|
||||
.cm-s-erlang-dark span.cm-def { color: #e7a; }
|
||||
.cm-s-erlang-dark span.cm-keyword { color: #ffee80; }
|
||||
.cm-s-erlang-dark span.cm-meta { color: #50fefe; }
|
||||
.cm-s-erlang-dark span.cm-number { color: #ffd0d0; }
|
||||
.cm-s-erlang-dark span.cm-operator { color: #d55; }
|
||||
.cm-s-erlang-dark span.cm-property { color: #ccc; }
|
||||
.cm-s-erlang-dark span.cm-qualifier { color: #ccc; }
|
||||
.cm-s-erlang-dark span.cm-quote { color: #ccc; }
|
||||
.cm-s-erlang-dark span.cm-special { color: #ffbbbb; }
|
||||
.cm-s-erlang-dark span.cm-string { color: #3ad900; }
|
||||
.cm-s-erlang-dark span.cm-string-2 { color: #ccc; }
|
||||
.cm-s-erlang-dark span.cm-tag { color: #9effff; }
|
||||
.cm-s-erlang-dark span.cm-variable { color: #50fe50; }
|
||||
.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; }
|
||||
.cm-s-erlang-dark span.cm-variable-3 { color: #ccc; }
|
||||
.cm-s-erlang-dark span.cm-error { color: #9d1e15; }
|
||||
|
||||
.cm-s-erlang-dark .CodeMirror-activeline-background {background: #013461 !important;}
|
||||
.cm-s-erlang-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
@@ -5,19 +5,17 @@ Ported to CodeMirror by Peter Kroon
|
||||
.cm-s-lesser-dark {
|
||||
line-height: 1.3em;
|
||||
}
|
||||
.cm-s-lesser-dark {
|
||||
font-family: 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Monaco', Courier, monospace !important;
|
||||
}
|
||||
|
||||
.cm-s-lesser-dark { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; }
|
||||
.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-cursor { border-left: 1px solid white !important; }
|
||||
.cm-s-lesser-dark .CodeMirror-lines { margin-left:3px; margin-right:3px; }/*editable code holder*/
|
||||
.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/
|
||||
|
||||
div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
||||
.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
||||
|
||||
.cm-s-lesser-dark .CodeMirror-gutter { background: #262626; border-right:1px solid #aaa; padding-right:3px; min-width:2.5em; }
|
||||
.cm-s-lesser-dark .CodeMirror-gutter-text { color: #777; }
|
||||
.cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; }
|
||||
.cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; }
|
||||
.cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; }
|
||||
.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; }
|
||||
|
||||
.cm-s-lesser-dark span.cm-keyword { color: #599eff; }
|
||||
.cm-s-lesser-dark span.cm-atom { color: #C2B470; }
|
||||
@@ -32,7 +30,6 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
||||
.cm-s-lesser-dark span.cm-string { color: #BCD279; }
|
||||
.cm-s-lesser-dark span.cm-string-2 {color: #f50;}
|
||||
.cm-s-lesser-dark span.cm-meta { color: #738C73; }
|
||||
.cm-s-lesser-dark span.cm-error { color: #9d1e15; }
|
||||
.cm-s-lesser-dark span.cm-qualifier {color: #555;}
|
||||
.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; }
|
||||
.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; }
|
||||
@@ -42,3 +39,7 @@ div.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/
|
||||
.cm-s-lesser-dark span.cm-quote {color: #090;}
|
||||
.cm-s-lesser-dark span.cm-hr {color: #999;}
|
||||
.cm-s-lesser-dark span.cm-link {color: #00c;}
|
||||
.cm-s-lesser-dark span.cm-error { color: #9d1e15; }
|
||||
|
||||
.cm-s-lesser-dark .CodeMirror-activeline-background {background: #3C3A3A !important;}
|
||||
.cm-s-lesser-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
35
CodeMirror-4.7/theme/mbo.css
Normal file
@@ -0,0 +1,35 @@
|
||||
/****************************************************************/
|
||||
/* Based on mbonaci's Brackets mbo theme */
|
||||
/* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */
|
||||
/* Create your own: http://tmtheme-editor.herokuapp.com */
|
||||
/****************************************************************/
|
||||
|
||||
.cm-s-mbo.CodeMirror {background: #2c2c2c; color: #ffffec;}
|
||||
.cm-s-mbo div.CodeMirror-selected {background: #716C62 !important;}
|
||||
.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; }
|
||||
.cm-s-mbo .CodeMirror-linenumber {color: #dadada;}
|
||||
.cm-s-mbo .CodeMirror-cursor {border-left: 1px solid #ffffec !important;}
|
||||
|
||||
.cm-s-mbo span.cm-comment {color: #95958a;}
|
||||
.cm-s-mbo span.cm-atom {color: #00a8c6;}
|
||||
.cm-s-mbo span.cm-number {color: #00a8c6;}
|
||||
|
||||
.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute {color: #9ddfe9;}
|
||||
.cm-s-mbo span.cm-keyword {color: #ffb928;}
|
||||
.cm-s-mbo span.cm-string {color: #ffcf6c;}
|
||||
.cm-s-mbo span.cm-string.cm-property {color: #ffffec;}
|
||||
|
||||
.cm-s-mbo span.cm-variable {color: #ffffec;}
|
||||
.cm-s-mbo span.cm-variable-2 {color: #00a8c6;}
|
||||
.cm-s-mbo span.cm-def {color: #ffffec;}
|
||||
.cm-s-mbo span.cm-bracket {color: #fffffc; font-weight: bold;}
|
||||
.cm-s-mbo span.cm-tag {color: #9ddfe9;}
|
||||
.cm-s-mbo span.cm-link {color: #f54b07;}
|
||||
.cm-s-mbo span.cm-error {border-bottom: #636363; color: #ffffec;}
|
||||
.cm-s-mbo span.cm-qualifier {color: #ffffec;}
|
||||
|
||||
.cm-s-mbo .CodeMirror-activeline-background {background: #494b41 !important;}
|
||||
.cm-s-mbo .CodeMirror-matchingbracket {color: #222 !important;}
|
||||
.cm-s-mbo .CodeMirror-matchingtag {background: rgba(255, 255, 255, .37);}
|
||||
44
CodeMirror-4.7/theme/mdn-like.css
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
MDN-LIKE Theme - Mozilla
|
||||
Ported to CodeMirror by Peter Kroon <plakroon@gmail.com>
|
||||
Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues
|
||||
GitHub: @peterkroon
|
||||
|
||||
The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation
|
||||
|
||||
*/
|
||||
.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; }
|
||||
.cm-s-mdn-like .CodeMirror-selected { background: #cfc !important; }
|
||||
|
||||
.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; }
|
||||
div.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }
|
||||
|
||||
.cm-s-mdn-like .cm-keyword { color: #6262FF; }
|
||||
.cm-s-mdn-like .cm-atom { color: #F90; }
|
||||
.cm-s-mdn-like .cm-number { color: #ca7841; }
|
||||
.cm-s-mdn-like .cm-def { color: #8DA6CE; }
|
||||
.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; }
|
||||
.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def { color: #07a; }
|
||||
|
||||
.cm-s-mdn-like .cm-variable { color: #07a; }
|
||||
.cm-s-mdn-like .cm-property { color: #905; }
|
||||
.cm-s-mdn-like .cm-qualifier { color: #690; }
|
||||
|
||||
.cm-s-mdn-like .cm-operator { color: #cda869; }
|
||||
.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; }
|
||||
.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; }
|
||||
.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/
|
||||
.cm-s-mdn-like .cm-meta { color: #000; } /*?*/
|
||||
.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/
|
||||
.cm-s-mdn-like .cm-tag { color: #997643; }
|
||||
.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/
|
||||
.cm-s-mdn-like .cm-header { color: #FF6400; }
|
||||
.cm-s-mdn-like .cm-hr { color: #AEAEAE; }
|
||||
.cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; }
|
||||
.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; }
|
||||
|
||||
div.cm-s-mdn-like .CodeMirror-activeline-background {background: #efefff;}
|
||||
div.cm-s-mdn-like span.CodeMirror-matchingbracket {outline:1px solid grey; color: inherit;}
|
||||
|
||||
.cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); }
|
||||
45
CodeMirror-4.7/theme/midnight.css
Normal file
@@ -0,0 +1,45 @@
|
||||
/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */
|
||||
|
||||
/*<!--match-->*/
|
||||
.cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; }
|
||||
.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; }
|
||||
|
||||
/*<!--activeline-->*/
|
||||
.cm-s-midnight .CodeMirror-activeline-background {background: #253540 !important;}
|
||||
|
||||
.cm-s-midnight.CodeMirror {
|
||||
background: #0F192A;
|
||||
color: #D1EDFF;
|
||||
}
|
||||
|
||||
.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-gutters {background: #0F192A; border-right: 1px solid;}
|
||||
.cm-s-midnight .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
.cm-s-midnight .CodeMirror-linenumber {color: #D0D0D0;}
|
||||
.cm-s-midnight .CodeMirror-cursor {
|
||||
border-left: 1px solid #F8F8F0 !important;
|
||||
}
|
||||
|
||||
.cm-s-midnight span.cm-comment {color: #428BDD;}
|
||||
.cm-s-midnight span.cm-atom {color: #AE81FF;}
|
||||
.cm-s-midnight span.cm-number {color: #D1EDFF;}
|
||||
|
||||
.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute {color: #A6E22E;}
|
||||
.cm-s-midnight span.cm-keyword {color: #E83737;}
|
||||
.cm-s-midnight span.cm-string {color: #1DC116;}
|
||||
|
||||
.cm-s-midnight span.cm-variable {color: #FFAA3E;}
|
||||
.cm-s-midnight span.cm-variable-2 {color: #FFAA3E;}
|
||||
.cm-s-midnight span.cm-def {color: #4DD;}
|
||||
.cm-s-midnight span.cm-bracket {color: #D1EDFF;}
|
||||
.cm-s-midnight span.cm-tag {color: #449;}
|
||||
.cm-s-midnight span.cm-link {color: #AE81FF;}
|
||||
.cm-s-midnight span.cm-error {background: #F92672; color: #F8F8F0;}
|
||||
|
||||
.cm-s-midnight .CodeMirror-matchingbracket {
|
||||
text-decoration: underline;
|
||||
color: white !important;
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
/* Based on Sublime Text's Monokai theme */
|
||||
|
||||
.cm-s-monokai {background: #272822; color: #f8f8f2;}
|
||||
.cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;}
|
||||
.cm-s-monokai div.CodeMirror-selected {background: #49483E !important;}
|
||||
.cm-s-monokai .CodeMirror-gutter {background: #272822; border-right: 0px;}
|
||||
.cm-s-monokai .CodeMirror-gutter-text {color: #d0d0d0;}
|
||||
.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; }
|
||||
.cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;}
|
||||
.cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;}
|
||||
|
||||
.cm-s-monokai span.cm-comment {color: #75715e;}
|
||||
@@ -17,11 +19,12 @@
|
||||
.cm-s-monokai span.cm-variable {color: #a6e22e;}
|
||||
.cm-s-monokai span.cm-variable-2 {color: #9effff;}
|
||||
.cm-s-monokai span.cm-def {color: #fd971f;}
|
||||
.cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;}
|
||||
.cm-s-monokai span.cm-bracket {color: #f8f8f2;}
|
||||
.cm-s-monokai span.cm-tag {color: #f92672;}
|
||||
.cm-s-monokai span.cm-link {color: #ae81ff;}
|
||||
.cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;}
|
||||
|
||||
.cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;}
|
||||
.cm-s-monokai .CodeMirror-matchingbracket {
|
||||
text-decoration: underline;
|
||||
color: white !important;
|
||||
@@ -7,3 +7,6 @@
|
||||
.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; }
|
||||
.cm-s-neat span.cm-meta {color: #555;}
|
||||
.cm-s-neat span.cm-link { color: #3a3; }
|
||||
|
||||
.cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;}
|
||||
.cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;}
|
||||
43
CodeMirror-4.7/theme/neo.css
Normal file
@@ -0,0 +1,43 @@
|
||||
/* neo theme for codemirror */
|
||||
|
||||
/* Color scheme */
|
||||
|
||||
.cm-s-neo.CodeMirror {
|
||||
background-color:#ffffff;
|
||||
color:#2e383c;
|
||||
line-height:1.4375;
|
||||
}
|
||||
.cm-s-neo .cm-comment {color:#75787b}
|
||||
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3}
|
||||
.cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a}
|
||||
.cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328}
|
||||
.cm-s-neo .cm-string {color:#b35e14}
|
||||
.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65}
|
||||
|
||||
|
||||
/* Editor styling */
|
||||
|
||||
.cm-s-neo pre {
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.cm-s-neo .CodeMirror-gutters {
|
||||
border:none;
|
||||
border-right:10px solid transparent;
|
||||
background-color:transparent;
|
||||
}
|
||||
|
||||
.cm-s-neo .CodeMirror-linenumber {
|
||||
padding:0;
|
||||
color:#e0e2e5;
|
||||
}
|
||||
|
||||
.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; }
|
||||
.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; }
|
||||
|
||||
.cm-s-neo div.CodeMirror-cursor {
|
||||
width: auto;
|
||||
border: 0;
|
||||
background: rgba(155,157,162,0.37);
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
/* Loosely based on the Midnight Textmate theme */
|
||||
|
||||
.cm-s-night { background: #0a001f; color: #f8f8f8; }
|
||||
.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; }
|
||||
.cm-s-night div.CodeMirror-selected { background: #447 !important; }
|
||||
.cm-s-night .CodeMirror-gutter { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-night .CodeMirror-gutter-text { color: #f8f8f8; }
|
||||
.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; }
|
||||
.cm-s-night .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; }
|
||||
.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; }
|
||||
.cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-night span.cm-comment { color: #6900a1; }
|
||||
@@ -14,8 +16,11 @@
|
||||
.cm-s-night span.cm-meta { color: #7678e2; }
|
||||
.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; }
|
||||
.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; }
|
||||
.cm-s-night span.cm-error { color: #9d1e15; }
|
||||
.cm-s-night span.cm-bracket { color: #8da6ce; }
|
||||
.cm-s-night span.cm-comment { color: #6900a1; }
|
||||
.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; }
|
||||
.cm-s-night span.cm-link { color: #845dc4; }
|
||||
.cm-s-night span.cm-error { color: #9d1e15; }
|
||||
|
||||
.cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;}
|
||||
.cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
36
CodeMirror-4.7/theme/paraiso-dark.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
|
||||
Name: Paraíso (Dark)
|
||||
Author: Jan T. Sott
|
||||
|
||||
Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
|
||||
Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-paraiso-dark.CodeMirror {background: #2f1e2e; color: #b9b6b0;}
|
||||
.cm-s-paraiso-dark div.CodeMirror-selected {background: #41323f !important;}
|
||||
.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; }
|
||||
.cm-s-paraiso-dark .CodeMirror-linenumber {color: #776e71;}
|
||||
.cm-s-paraiso-dark .CodeMirror-cursor {border-left: 1px solid #8d8687 !important;}
|
||||
|
||||
.cm-s-paraiso-dark span.cm-comment {color: #e96ba8;}
|
||||
.cm-s-paraiso-dark span.cm-atom {color: #815ba4;}
|
||||
.cm-s-paraiso-dark span.cm-number {color: #815ba4;}
|
||||
|
||||
.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute {color: #48b685;}
|
||||
.cm-s-paraiso-dark span.cm-keyword {color: #ef6155;}
|
||||
.cm-s-paraiso-dark span.cm-string {color: #fec418;}
|
||||
|
||||
.cm-s-paraiso-dark span.cm-variable {color: #48b685;}
|
||||
.cm-s-paraiso-dark span.cm-variable-2 {color: #06b6ef;}
|
||||
.cm-s-paraiso-dark span.cm-def {color: #f99b15;}
|
||||
.cm-s-paraiso-dark span.cm-bracket {color: #b9b6b0;}
|
||||
.cm-s-paraiso-dark span.cm-tag {color: #ef6155;}
|
||||
.cm-s-paraiso-dark span.cm-link {color: #815ba4;}
|
||||
.cm-s-paraiso-dark span.cm-error {background: #ef6155; color: #8d8687;}
|
||||
|
||||
.cm-s-paraiso-dark .CodeMirror-activeline-background {background: #4D344A !important;}
|
||||
.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
36
CodeMirror-4.7/theme/paraiso-light.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
|
||||
Name: Paraíso (Light)
|
||||
Author: Jan T. Sott
|
||||
|
||||
Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
|
||||
Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
|
||||
|
||||
*/
|
||||
|
||||
.cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;}
|
||||
.cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;}
|
||||
.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; }
|
||||
.cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;}
|
||||
.cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;}
|
||||
|
||||
.cm-s-paraiso-light span.cm-comment {color: #e96ba8;}
|
||||
.cm-s-paraiso-light span.cm-atom {color: #815ba4;}
|
||||
.cm-s-paraiso-light span.cm-number {color: #815ba4;}
|
||||
|
||||
.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;}
|
||||
.cm-s-paraiso-light span.cm-keyword {color: #ef6155;}
|
||||
.cm-s-paraiso-light span.cm-string {color: #fec418;}
|
||||
|
||||
.cm-s-paraiso-light span.cm-variable {color: #48b685;}
|
||||
.cm-s-paraiso-light span.cm-variable-2 {color: #06b6ef;}
|
||||
.cm-s-paraiso-light span.cm-def {color: #f99b15;}
|
||||
.cm-s-paraiso-light span.cm-bracket {color: #41323f;}
|
||||
.cm-s-paraiso-light span.cm-tag {color: #ef6155;}
|
||||
.cm-s-paraiso-light span.cm-link {color: #815ba4;}
|
||||
.cm-s-paraiso-light span.cm-error {background: #ef6155; color: #776e71;}
|
||||
|
||||
.cm-s-paraiso-light .CodeMirror-activeline-background {background: #CFD1C4 !important;}
|
||||
.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
50
CodeMirror-4.7/theme/pastel-on-dark.css
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Pastel On Dark theme ported from ACE editor
|
||||
* @license MIT
|
||||
* @copyright AtomicPages LLC 2014
|
||||
* @author Dennis Thompson, AtomicPages LLC
|
||||
* @version 1.1
|
||||
* @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme
|
||||
*/
|
||||
|
||||
.cm-s-pastel-on-dark.CodeMirror {
|
||||
background: #2c2827;
|
||||
color: #8F938F;
|
||||
line-height: 1.5;
|
||||
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-gutters {
|
||||
background: #34302f;
|
||||
border-right: 0px;
|
||||
padding: 0 3px;
|
||||
}
|
||||
.cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; }
|
||||
.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; }
|
||||
.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }
|
||||
.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; }
|
||||
.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; }
|
||||
.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; }
|
||||
.cm-s-pastel-on-dark span.cm-property { color: #8F938F; }
|
||||
.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; }
|
||||
.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; }
|
||||
.cm-s-pastel-on-dark span.cm-string { color: #66A968; }
|
||||
.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; }
|
||||
.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; }
|
||||
.cm-s-pastel-on-dark span.cm-variable-3 { color: #DE8E30; }
|
||||
.cm-s-pastel-on-dark span.cm-def { color: #757aD8; }
|
||||
.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; }
|
||||
.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; }
|
||||
.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; }
|
||||
.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; }
|
||||
.cm-s-pastel-on-dark span.cm-error {
|
||||
background: #757aD8;
|
||||
color: #f8f8f0;
|
||||
}
|
||||
.cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031) !important; }
|
||||
.cm-s-pastel-on-dark .CodeMirror-matchingbracket {
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #8F938F !important;
|
||||
margin: -1px -1px 0 -1px;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.cm-s-rubyblue { font:13px/1.4em Trebuchet, Verdana, sans-serif; } /* - customized editor font - */
|
||||
|
||||
.cm-s-rubyblue { background: #112435; color: white; }
|
||||
.cm-s-rubyblue.CodeMirror { background: #112435; color: white; }
|
||||
.cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; }
|
||||
.cm-s-rubyblue .CodeMirror-gutter { background: #1F4661; border-right: 7px solid #3E7087; min-width:2.5em; }
|
||||
.cm-s-rubyblue .CodeMirror-gutter-text { color: white; }
|
||||
.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; }
|
||||
.cm-s-rubyblue .CodeMirror-linenumber { color: white; }
|
||||
.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; }
|
||||
@@ -14,8 +14,10 @@
|
||||
.cm-s-rubyblue span.cm-meta { color: #F0F; }
|
||||
.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; }
|
||||
.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; }
|
||||
.cm-s-rubyblue span.cm-error { color: #AF2018; }
|
||||
.cm-s-rubyblue span.cm-bracket { color: #F0F; }
|
||||
.cm-s-rubyblue span.cm-link { color: #F4C20B; }
|
||||
.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; }
|
||||
.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; }
|
||||
.cm-s-rubyblue span.cm-error { color: #AF2018; }
|
||||
|
||||
.cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;}
|
||||
170
CodeMirror-4.7/theme/solarized.css
Normal file
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
Solarized theme for code-mirror
|
||||
http://ethanschoonover.com/solarized
|
||||
*/
|
||||
|
||||
/*
|
||||
Solarized color pallet
|
||||
http://ethanschoonover.com/solarized/img/solarized-palette.png
|
||||
*/
|
||||
|
||||
.solarized.base03 { color: #002b36; }
|
||||
.solarized.base02 { color: #073642; }
|
||||
.solarized.base01 { color: #586e75; }
|
||||
.solarized.base00 { color: #657b83; }
|
||||
.solarized.base0 { color: #839496; }
|
||||
.solarized.base1 { color: #93a1a1; }
|
||||
.solarized.base2 { color: #eee8d5; }
|
||||
.solarized.base3 { color: #fdf6e3; }
|
||||
.solarized.solar-yellow { color: #b58900; }
|
||||
.solarized.solar-orange { color: #cb4b16; }
|
||||
.solarized.solar-red { color: #dc322f; }
|
||||
.solarized.solar-magenta { color: #d33682; }
|
||||
.solarized.solar-violet { color: #6c71c4; }
|
||||
.solarized.solar-blue { color: #268bd2; }
|
||||
.solarized.solar-cyan { color: #2aa198; }
|
||||
.solarized.solar-green { color: #859900; }
|
||||
|
||||
/* Color scheme for code-mirror */
|
||||
|
||||
.cm-s-solarized {
|
||||
line-height: 1.45em;
|
||||
color-profile: sRGB;
|
||||
rendering-intent: auto;
|
||||
}
|
||||
.cm-s-solarized.cm-s-dark {
|
||||
color: #839496;
|
||||
background-color: #002b36;
|
||||
text-shadow: #002b36 0 1px;
|
||||
}
|
||||
.cm-s-solarized.cm-s-light {
|
||||
background-color: #fdf6e3;
|
||||
color: #657b83;
|
||||
text-shadow: #eee8d5 0 1px;
|
||||
}
|
||||
|
||||
.cm-s-solarized .CodeMirror-widget {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
.cm-s-solarized .cm-keyword { color: #cb4b16 }
|
||||
.cm-s-solarized .cm-atom { color: #d33682; }
|
||||
.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-2 { color: #b58900; }
|
||||
.cm-s-solarized .cm-variable-3 { color: #6c71c4; }
|
||||
|
||||
.cm-s-solarized .cm-property { color: #2aa198; }
|
||||
.cm-s-solarized .cm-operator {color: #6c71c4;}
|
||||
|
||||
.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; }
|
||||
|
||||
.cm-s-solarized .cm-string { color: #859900; }
|
||||
.cm-s-solarized .cm-string-2 { color: #b58900; }
|
||||
|
||||
.cm-s-solarized .cm-meta { color: #859900; }
|
||||
.cm-s-solarized .cm-qualifier { color: #b58900; }
|
||||
.cm-s-solarized .cm-builtin { color: #d33682; }
|
||||
.cm-s-solarized .cm-bracket { color: #cb4b16; }
|
||||
.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; }
|
||||
.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; }
|
||||
.cm-s-solarized .cm-tag { color: #93a1a1 }
|
||||
.cm-s-solarized .cm-attribute { color: #2aa198; }
|
||||
.cm-s-solarized .cm-header { color: #586e75; }
|
||||
.cm-s-solarized .cm-quote { color: #93a1a1; }
|
||||
.cm-s-solarized .cm-hr {
|
||||
color: transparent;
|
||||
border-top: 1px solid #586e75;
|
||||
display: block;
|
||||
}
|
||||
.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; }
|
||||
.cm-s-solarized .cm-special { color: #6c71c4; }
|
||||
.cm-s-solarized .cm-em {
|
||||
color: #999;
|
||||
text-decoration: underline;
|
||||
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-light .CodeMirror-selected {
|
||||
background: #eee8d5;
|
||||
}
|
||||
|
||||
/* Editor styling */
|
||||
|
||||
|
||||
|
||||
/* Little shadow on the view-port of the buffer view */
|
||||
.cm-s-solarized.CodeMirror {
|
||||
-moz-box-shadow: inset 7px 0 12px -6px #000;
|
||||
-webkit-box-shadow: inset 7px 0 12px -6px #000;
|
||||
box-shadow: inset 7px 0 12px -6px #000;
|
||||
}
|
||||
|
||||
/* Gutter border and some shadow from it */
|
||||
.cm-s-solarized .CodeMirror-gutters {
|
||||
border-right: 1px solid;
|
||||
}
|
||||
|
||||
/* Gutter colors and line number styling based of color scheme (dark / light) */
|
||||
|
||||
/* Dark */
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-gutters {
|
||||
background-color: #002b36;
|
||||
border-color: #00232c;
|
||||
}
|
||||
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-linenumber {
|
||||
text-shadow: #021014 0 -1px;
|
||||
}
|
||||
|
||||
/* Light */
|
||||
.cm-s-solarized.cm-s-light .CodeMirror-gutters {
|
||||
background-color: #fdf6e3;
|
||||
border-color: #eee8d5;
|
||||
}
|
||||
|
||||
/* Common */
|
||||
.cm-s-solarized .CodeMirror-linenumber {
|
||||
color: #586e75;
|
||||
padding: 0 5px;
|
||||
}
|
||||
.cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; }
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; }
|
||||
.cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; }
|
||||
|
||||
.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text {
|
||||
color: #586e75;
|
||||
}
|
||||
|
||||
.cm-s-solarized .CodeMirror-lines .CodeMirror-cursor {
|
||||
border-left: 1px solid #819090;
|
||||
}
|
||||
|
||||
/*
|
||||
Active line. Negative margin compensates left padding of the text in the
|
||||
view-port
|
||||
*/
|
||||
.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background {
|
||||
background: rgba(255, 255, 255, 0.10);
|
||||
}
|
||||
.cm-s-solarized.cm-s-light .CodeMirror-activeline-background {
|
||||
background: rgba(0, 0, 0, 0.10);
|
||||
}
|
||||
28
CodeMirror-4.7/theme/the-matrix.css
Normal file
@@ -0,0 +1,28 @@
|
||||
.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; }
|
||||
.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; }
|
||||
.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; }
|
||||
.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; }
|
||||
.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; }
|
||||
|
||||
.cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;}
|
||||
.cm-s-the-matrix span.cm-atom {color: #3FF;}
|
||||
.cm-s-the-matrix span.cm-number {color: #FFB94F;}
|
||||
.cm-s-the-matrix span.cm-def {color: #99C;}
|
||||
.cm-s-the-matrix span.cm-variable {color: #F6C;}
|
||||
.cm-s-the-matrix span.cm-variable-2 {color: #C6F;}
|
||||
.cm-s-the-matrix span.cm-variable-3 {color: #96F;}
|
||||
.cm-s-the-matrix span.cm-property {color: #62FFA0;}
|
||||
.cm-s-the-matrix span.cm-operator {color: #999}
|
||||
.cm-s-the-matrix span.cm-comment {color: #CCCCCC;}
|
||||
.cm-s-the-matrix span.cm-string {color: #39C;}
|
||||
.cm-s-the-matrix span.cm-meta {color: #C9F;}
|
||||
.cm-s-the-matrix span.cm-qualifier {color: #FFF700;}
|
||||
.cm-s-the-matrix span.cm-builtin {color: #30a;}
|
||||
.cm-s-the-matrix span.cm-bracket {color: #cc7;}
|
||||
.cm-s-the-matrix span.cm-tag {color: #FFBD40;}
|
||||
.cm-s-the-matrix span.cm-attribute {color: #FFF700;}
|
||||
.cm-s-the-matrix span.cm-error {color: #FF0000;}
|
||||
|
||||
.cm-s-the-matrix .CodeMirror-activeline-background {background: #040;}
|
||||
36
CodeMirror-4.7/theme/tomorrow-night-eighties.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
|
||||
Name: Tomorrow Night - Eighties
|
||||
Author: Chris Kempson
|
||||
|
||||
CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)
|
||||
Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)
|
||||
|
||||
*/
|
||||
|
||||
.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-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; }
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-linenumber {color: #515151;}
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-cursor {border-left: 1px solid #6A6A6A !important;}
|
||||
|
||||
.cm-s-tomorrow-night-eighties span.cm-comment {color: #d27b53;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-atom {color: #a16a94;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-number {color: #a16a94;}
|
||||
|
||||
.cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute {color: #99cc99;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-keyword {color: #f2777a;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-string {color: #ffcc66;}
|
||||
|
||||
.cm-s-tomorrow-night-eighties span.cm-variable {color: #99cc99;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-variable-2 {color: #6699cc;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-def {color: #f99157;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-bracket {color: #CCCCCC;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-tag {color: #f2777a;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-link {color: #a16a94;}
|
||||
.cm-s-tomorrow-night-eighties span.cm-error {background: #f2777a; color: #6A6A6A;}
|
||||
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background {background: #343600 !important;}
|
||||
.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;}
|
||||
30
CodeMirror-4.7/theme/twilight.css
Normal file
@@ -0,0 +1,30 @@
|
||||
.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/
|
||||
.cm-s-twilight .CodeMirror-selected { background: #323232 !important; } /**/
|
||||
|
||||
.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; }
|
||||
.cm-s-twilight .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; }
|
||||
.cm-s-twilight .CodeMirror-linenumber { color: #aaa; }
|
||||
.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-twilight .cm-keyword { color: #f9ee98; } /**/
|
||||
.cm-s-twilight .cm-atom { color: #FC0; }
|
||||
.cm-s-twilight .cm-number { color: #ca7841; } /**/
|
||||
.cm-s-twilight .cm-def { color: #8DA6CE; }
|
||||
.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/
|
||||
.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def { color: #607392; } /**/
|
||||
.cm-s-twilight .cm-operator { color: #cda869; } /**/
|
||||
.cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/
|
||||
.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/
|
||||
.cm-s-twilight .cm-string-2 { color:#bd6b18 } /*?*/
|
||||
.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/
|
||||
.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/
|
||||
.cm-s-twilight .cm-tag { color: #997643; } /**/
|
||||
.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/
|
||||
.cm-s-twilight .cm-header { color: #FF6400; }
|
||||
.cm-s-twilight .cm-hr { color: #AEAEAE; }
|
||||
.cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/
|
||||
.cm-s-twilight .cm-error { border-bottom: 1px solid red; }
|
||||
|
||||
.cm-s-twilight .CodeMirror-activeline-background {background: #27282E !important;}
|
||||
.cm-s-twilight .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
@@ -1,27 +1,32 @@
|
||||
/* Taken from the popular Visual Studio Vibrant Ink Schema */
|
||||
|
||||
.cm-s-vibrant-ink { background: black; color: white; }
|
||||
.cm-s-vibrant-ink.CodeMirror { background: black; color: white; }
|
||||
.cm-s-vibrant-ink .CodeMirror-selected { background: #35493c !important; }
|
||||
|
||||
.cm-s-vibrant-ink .CodeMirror-gutter { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-vibrant-ink .CodeMirror-gutter-text { color: #d0d0d0; }
|
||||
.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; }
|
||||
.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; }
|
||||
.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
|
||||
.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; }
|
||||
.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-vibrant-ink .cm-keyword { color: #CC7832; }
|
||||
.cm-s-vibrant-ink .cm-atom { color: #FC0; }
|
||||
.cm-s-vibrant-ink .cm-number { color: #FFEE98; }
|
||||
.cm-s-vibrant-ink .cm-def { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #FFC66D }
|
||||
.cm-s-vibrant-ink span.cm-variable-3, .cm-s-cobalt span.cm-def { color: #FFC66D }
|
||||
.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D }
|
||||
.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def { color: #FFC66D }
|
||||
.cm-s-vibrant-ink .cm-operator { color: #888; }
|
||||
.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; }
|
||||
.cm-s-vibrant-ink .cm-string { color: #A5C25C }
|
||||
.cm-s-vibrant-ink .cm-string-2 { color: red }
|
||||
.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; }
|
||||
.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }
|
||||
.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; }
|
||||
.cm-s-vibrant-ink .cm-header { color: #FF6400; }
|
||||
.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; }
|
||||
.cm-s-vibrant-ink .cm-link { color: blue; }
|
||||
.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; }
|
||||
|
||||
.cm-s-vibrant-ink .CodeMirror-activeline-background {background: #27282E !important;}
|
||||
.cm-s-vibrant-ink .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
51
CodeMirror-4.7/theme/xq-dark.css
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
Copyright (C) 2011 by MarkLogic Corporation
|
||||
Author: Mike Brevoort <mike@brevoort.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
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-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; }
|
||||
.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; }
|
||||
.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white !important; }
|
||||
|
||||
.cm-s-xq-dark span.cm-keyword {color: #FFBD40;}
|
||||
.cm-s-xq-dark span.cm-atom {color: #6C8CD5;}
|
||||
.cm-s-xq-dark span.cm-number {color: #164;}
|
||||
.cm-s-xq-dark span.cm-def {color: #FFF; text-decoration:underline;}
|
||||
.cm-s-xq-dark span.cm-variable {color: #FFF;}
|
||||
.cm-s-xq-dark span.cm-variable-2 {color: #EEE;}
|
||||
.cm-s-xq-dark span.cm-variable-3 {color: #DDD;}
|
||||
.cm-s-xq-dark span.cm-property {}
|
||||
.cm-s-xq-dark span.cm-operator {}
|
||||
.cm-s-xq-dark span.cm-comment {color: gray;}
|
||||
.cm-s-xq-dark span.cm-string {color: #9FEE00;}
|
||||
.cm-s-xq-dark span.cm-meta {color: yellow;}
|
||||
.cm-s-xq-dark span.cm-qualifier {color: #FFF700;}
|
||||
.cm-s-xq-dark span.cm-builtin {color: #30a;}
|
||||
.cm-s-xq-dark span.cm-bracket {color: #cc7;}
|
||||
.cm-s-xq-dark span.cm-tag {color: #FFBD40;}
|
||||
.cm-s-xq-dark span.cm-attribute {color: #FFF700;}
|
||||
.cm-s-xq-dark span.cm-error {color: #f00;}
|
||||
|
||||
.cm-s-xq-dark .CodeMirror-activeline-background {background: #27282E !important;}
|
||||
.cm-s-xq-dark .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;}
|
||||
43
CodeMirror-4.7/theme/xq-light.css
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
Copyright (C) 2011 by MarkLogic Corporation
|
||||
Author: Mike Brevoort <mike@brevoort.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
.cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; }
|
||||
.cm-s-xq-light span.cm-atom {color: #6C8CD5;}
|
||||
.cm-s-xq-light span.cm-number {color: #164;}
|
||||
.cm-s-xq-light span.cm-def {text-decoration:underline;}
|
||||
.cm-s-xq-light span.cm-variable {color: black; }
|
||||
.cm-s-xq-light span.cm-variable-2 {color:black;}
|
||||
.cm-s-xq-light span.cm-variable-3 {color: black; }
|
||||
.cm-s-xq-light span.cm-property {}
|
||||
.cm-s-xq-light span.cm-operator {}
|
||||
.cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;}
|
||||
.cm-s-xq-light span.cm-string {color: red;}
|
||||
.cm-s-xq-light span.cm-meta {color: yellow;}
|
||||
.cm-s-xq-light span.cm-qualifier {color: grey}
|
||||
.cm-s-xq-light span.cm-builtin {color: #7EA656;}
|
||||
.cm-s-xq-light span.cm-bracket {color: #cc7;}
|
||||
.cm-s-xq-light span.cm-tag {color: #3F7F7F;}
|
||||
.cm-s-xq-light span.cm-attribute {color: #7F007F;}
|
||||
.cm-s-xq-light span.cm-error {color: #f00;}
|
||||
|
||||
.cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;}
|
||||
.cm-s-xq-light .CodeMirror-matchingbracket {outline:1px solid grey;color:black !important;background:yellow;}
|
||||
@@ -1,7 +1,7 @@
|
||||
Copyright (C) 2012 Matt Pass
|
||||
Website: mattpass.com
|
||||
Email: matt@mattpass.com
|
||||
Twitter: @mattpass
|
||||
Copyright: © 2014 Matt Pass
|
||||
Website: mattpass.com
|
||||
Email: matt@mattpass.com
|
||||
Twitter: @mattpass
|
||||
|
||||
#ICEcoder License
|
||||
##Standard Open Source Initiative MIT License
|
||||
|
||||
64
README.md
@@ -1,65 +1,37 @@
|
||||
#ICEcoder
|
||||
##Web based IDE for smart web development
|
||||
##Web IDE / browser code editor awesomeness
|
||||
|
||||
Early version of the web based IDE which allows for creation of websites in the web browser. Uses the brilliant CodeMirror for code highlighting & editing, with a slick IDE wrapped around it to make the whole thing work.
|
||||
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.
|
||||
|
||||
###Features you'd expect
|
||||
* Context aware code highlighting
|
||||
* Supports HTML, CSS, LESS, JavaScript, CoffeeScript, PHP & Ruby
|
||||
* Smart tab key system (selected text indents line)
|
||||
* File manager
|
||||
* Find & replace/replace all
|
||||
* Document tabs indicate current doc & changes made
|
||||
* Code folding
|
||||
* Open last files on load
|
||||
* Web based, access from anywhere
|
||||
* Free, open source & customisable
|
||||
<img src="https://icecoder.net/images/icecoder-v4-5-browser-code-editor.png" alt="ICEcoder web IDE">
|
||||
|
||||
###Cool features you wouldn't expect
|
||||
* Find & replace in current doc, open docs, files & filenames
|
||||
* Found match & current position counter
|
||||
* Indicates content type cursor is on
|
||||
* Account login to keep certain files secure
|
||||
* Restrict files, ban files and restrict by IP
|
||||
* Settings to change functionality & editor theme
|
||||
* Code Assist system
|
||||
* Displays nest position of text cursor, hover to select, click to set cursor
|
||||
* Nest structure OK/broken indicator
|
||||
* Highlight word and press CTRL+I to Google search that
|
||||
* Adds end tags as you type and in a context aware way
|
||||
* Can rename open files (whoaah!)
|
||||
* CTRL+Enter open current webpage in new tab
|
||||
* CTRL+S+Enter opens a sticky tab to show live edits
|
||||
* ESC = Comment/Uncomment line, incl partial lines
|
||||
* Image viewer
|
||||
* Colour preview block on CSS colours, ie red, #ff0000 or RGBA(255,0,0,0.5)
|
||||
* MySQL Database management via Adminer plugin
|
||||
* Backs up files every 10 mins or on click of backup plugin icon
|
||||
###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).
|
||||
|
||||
###Installation
|
||||
|
||||
####Step 1: Clone the repo
|
||||
####Step 1: Get ICEcoder
|
||||
Either download the zip or clone from Github using:
|
||||
|
||||
```
|
||||
$ git clone git@github:mattpass/ICEcoder
|
||||
$ git clone git://github.com/mattpass/ICEcoder
|
||||
```
|
||||
|
||||
####Step 2: Upload the files (Linux or Windows hosting OK)
|
||||
```
|
||||
Upload to a new sub-dir URL such as yourdomain.com/_coder
|
||||
Set public write permissions on the backups folder and lib/config.php file
|
||||
```
|
||||
####Step 2: Place in your document root (online or local)
|
||||
* Put in a new sub-dir URL such as yourdomain.com/ICEcoder or localhost/ICEcoder
|
||||
* Set write permissions (757 or 775 depending on your system) on the 'backups', 'lib', 'plugins', 'test' and 'tmp' folders
|
||||
|
||||
*(Note: A small number of web servers give an internal server error here, if you get this, try 755 instead)*
|
||||
|
||||
####Step 3: Start coding
|
||||
```
|
||||
Visit the sub-dir URL in your browser and enter a password
|
||||
Now you're setup, auto-logged in and ready to code!
|
||||
```
|
||||
* Visit the sub-dir URL in your browser and enter a password
|
||||
|
||||
**Now you're setup, auto-logged in and ready to code!**
|
||||
|
||||
Suitable for commercial & non-commercial projects, just let me know if it's useful to you and any cool customisations you make to it. I take no responsibility for anything, your usage is all down to you.
|
||||
|
||||
Is fully open source and I'd encourage you to take it, make it your own and customise to your hearts content! :)
|
||||
It's fully open source and MIT licensed. I'm happy for you to take it, make it your own and customise to your hearts content and/or contribute to this main repo! :)
|
||||
|
||||
Plenty of comments included in the code to assist with understanding, customising etc.
|
||||
|
||||
Comments, improvements & feedback welcomed!
|
||||
Comments, improvements & feedback welcomed!
|
||||
|
||||
0
backups/.gitkeep
Normal file
@@ -1 +0,0 @@
|
||||
Zip It! backups are stored in this folder
|
||||
391
editor.php
@@ -1,197 +1,258 @@
|
||||
<?php include("lib/settings.php");?>
|
||||
<?php
|
||||
include("lib/headers.php");
|
||||
include("lib/settings.php");
|
||||
$t = $text['editor'];
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html style="margin: 0" onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'editor');top.ICEcoder.canResizeFilesW()}">
|
||||
<html style="margin: 0" 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,'editor');top.ICEcoder.canResizeFilesW()}" onDrop="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'editor')}">
|
||||
<head>
|
||||
<title>ICEcoder editor</title>
|
||||
<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">
|
||||
<!--
|
||||
codemirror-compressed.js
|
||||
includes:
|
||||
codemirror.js
|
||||
modes:
|
||||
clike, coffeescript, css, javascript, less, php, ruby & xml
|
||||
utils:
|
||||
foldcode, searchcursor, match-highlighter
|
||||
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>
|
||||
<?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>';
|
||||
};?>
|
||||
<script src="lib/mmd.js"></script>
|
||||
<script src="lib/foldcode.js"></script>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/emmet/emmet.min.js")) {
|
||||
echo '<script src="plugins/emmet/emmet.min.js"></script>';
|
||||
};?>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/pesticide/pesticide.js")) {
|
||||
echo '<script src="plugins/pesticide/pesticide.js"></script>';
|
||||
};?>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/stats.js/stats.min.js")) {
|
||||
echo '<script src="plugins/stats.js/stats.min.js"></script>';
|
||||
};?>
|
||||
<link rel="stylesheet" href="<?php
|
||||
if ($ICEcoder["theme"]=="default") {echo 'lib/editor.css';} else {echo $ICEcoder["codeMirrorDir"].'/theme/'.$ICEcoder["theme"].'.css';};
|
||||
$activeLineBG = $ICEcoder["theme"]=="eclipse" || $ICEcoder["theme"]=="elegant" || $ICEcoder["theme"]=="neat" ? "#ccc" : "#000";
|
||||
$activeLineBG = array_search($ICEcoder["theme"],array("3024-day","base16-light","eclipse","elegant","neat","solarized","xq-light")) !== false ? "#ccc" : "#000";
|
||||
?>">
|
||||
|
||||
<style type="text/css">
|
||||
.CodeMirror {position: absolute; width: 0; background-color: #fff; color: #000; top: 0px; width: 100%; z-index: 1}
|
||||
.CodeMirror-scroll {height: auto; overflow: visible}
|
||||
/* 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-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}
|
||||
span.CodeMirror-matchhighlight {background: #555}
|
||||
.CodeMirror-focused span.CodeMirror-matchhighlight {color: #000; background: #555; !important}
|
||||
/* Make sure this next one remains the 6th item, updated with JS */
|
||||
.cm-tab:after {position: relative; display: inline-block; width: 0; left: -1.4em; overflow: visible; color: #aaa; content: "<?php if($ICEcoder["visibleTabs"]) {echo '\\21e5';};?>";}
|
||||
.cm-matchhighlight, .CodeMirror-focused .cm-matchhighlight {color: #fff !important; background: #06c !important}
|
||||
/* Make sure this next one remains the 5th 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.15)}
|
||||
.cm-trailingspace {
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);
|
||||
background-position: bottom left;
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.CodeMirror-foldmarker {font-family: arial; line-height: .3; color: #b00; cursor: pointer;
|
||||
text-shadow: #fff 1px 1px 2px, #fff -1px -1px 2px, #fff 1px -1px 2px, #fff -1px 1px 2px;
|
||||
}
|
||||
.folds {display: inline-block; width: 13px}
|
||||
.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}
|
||||
.diffNone {}
|
||||
</style>
|
||||
<link rel="stylesheet" href="lib/file-types.css">
|
||||
<link rel="stylesheet" href="lib/file-type-icons.css">
|
||||
</head>
|
||||
|
||||
<body onLoad="top.ICEcoder.updateFileFolderCount()" style="color: #fff; margin: 0" onKeyDown="return top.ICEcoder.interceptKeys('content', event);" onKeyUp="top.ICEcoder.resetKeys(event);">
|
||||
<body style="color: #fff; margin: 0" onKeyDown="return top.ICEcoder.interceptKeys('content', event);" onKeyUp="top.ICEcoder.resetKeys(event);" onBlur="parent.ICEcoder.resetKeys(event);">
|
||||
|
||||
<div style="margin: 32px 43px; font-family: arial; font-size: 10px; color: #ddd">
|
||||
<?php
|
||||
echo '<div style="float: left; margin-right: 50px">'.PHP_EOL;
|
||||
echo '<h2 style="color: rgba(0,198,255,0.7)">server</h2>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Server name, OS & IP:</span><br>'.PHP_EOL;
|
||||
echo $_SERVER['SERVER_NAME'].' '.$_SERVER['SERVER_SOFTWARE'].' '.$_SERVER['SERVER_ADDR'].'<br><br>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Root:</span><br>'.PHP_EOL;
|
||||
echo $docRoot.'<br><br>'.PHP_EOL;
|
||||
echo '<span style="color:#888">ICEcoder root:</span><br>'.PHP_EOL;
|
||||
echo $docRoot.$ICEcoder['root'].'<br><br>'.PHP_EOL;
|
||||
echo '<span style="color:#888">PHP version:</span><br>'.PHP_EOL;
|
||||
echo phpversion().'<br><br>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Date & time:</span><br>'.PHP_EOL;
|
||||
echo '<span id="serverDT"></span><br><br><br>'.PHP_EOL;
|
||||
echo '</div>'.PHP_EOL;
|
||||
<?php if ($ICEcoder['demoMode']) {?>
|
||||
<div class="demoArrow"><?php echo $t['Click icons for...'];?></div>
|
||||
<?php ;}; ?>
|
||||
|
||||
echo '<div style="float: left">'.PHP_EOL;
|
||||
echo '<h2 style="color: rgba(0,198,255,0.7)">files</h2>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Last 10 files opened:</span><br>'.PHP_EOL;
|
||||
$last10FilesArray = explode(",",$ICEcoder["last10Files"]);
|
||||
for ($i=0;$i<count($last10FilesArray);$i++) {
|
||||
if ($ICEcoder["last10Files"]=="") {
|
||||
echo '[none]<br><br>';
|
||||
} else {
|
||||
echo '<a style="cursor:pointer" onClick="top.ICEcoder.openFile(\''.str_replace("|","/",$last10FilesArray[$i]).'\')">';
|
||||
echo str_replace($docRoot,"",str_replace("|","/",$last10FilesArray[$i]));
|
||||
echo '</a><br>'.PHP_EOL;
|
||||
if ($i==count($last10FilesArray)-1) {echo '<br>'.PHP_EOL;};
|
||||
}
|
||||
}
|
||||
echo '<span style="color:#888">File & folder count:</span><br>'.PHP_EOL;
|
||||
echo '<div id="fileFolderCounts"></div><br><br><br>'.PHP_EOL;
|
||||
echo '</div>'.PHP_EOL;
|
||||
<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>
|
||||
|
||||
echo '<div style="clear: both">'.PHP_EOL;
|
||||
echo '<h2 style="color: rgba(0,198,255,0.7)">your device</h2>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Browser:</span><br>'.PHP_EOL;
|
||||
echo $_SERVER['HTTP_USER_AGENT'].'<br><br>'.PHP_EOL;
|
||||
echo '<span style="color:#888">Your IP:</span><br>'.PHP_EOL;
|
||||
echo $_SERVER['REMOTE_ADDR'].PHP_EOL;
|
||||
echo '</div>'.PHP_EOL;
|
||||
?>
|
||||
<script>
|
||||
var nDT=<?php echo time()*1000;?>;
|
||||
setInterval(function(){
|
||||
var s=(new Date(nDT+=1e3)+'').split(' '),
|
||||
d=s[2]*1,
|
||||
t=s[4].split(':'),
|
||||
p=t[0]>11?'pm':'am',
|
||||
e=d%20==1|d>30?'st':d%20==2?'nd':d%20==3?'rd':'th';
|
||||
t[0]=--t[0]%12+1;
|
||||
if (document.getElementById('serverDT')) {
|
||||
document.getElementById('serverDT').innerHTML=[s[0],d+e,s[1],s[3],t.join(':')+p].join(' ');
|
||||
}
|
||||
},1000);
|
||||
</script>
|
||||
<div style="margin: 20px 43px 32px 43px; font-family: arial; font-size: 10px; color: #ddd">
|
||||
<div style="float: left; width: 300px; margin-right: 50px">
|
||||
<h2><?php echo $t['server'];?></h2>
|
||||
<span class="heading"><?php echo $t['Server name, OS...'];?></span><br>
|
||||
<?php echo $_SERVER['SERVER_NAME']."   ".$_SERVER['SERVER_SOFTWARE']."   ".(isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:"Unknown");?><br><br>
|
||||
<span class="heading"><?php echo $t['Root'];?></span><br>
|
||||
<?php echo $docRoot;?><br><br>
|
||||
<span class="heading"><?php echo $t['ICEcoder root'];?></span><br>
|
||||
<?php echo $docRoot.$iceRoot;?><br><br>
|
||||
<span class="heading"><?php echo $t['PHP version'];?></span><br>
|
||||
<?php echo phpversion();?><br><br>
|
||||
<span class="heading"><?php echo $t['Date & time'];?></span><br>
|
||||
<span id="serverDT"></span><br><br>
|
||||
<h2><?php echo $t['your device'];?></h2>
|
||||
<span class="heading"><?php echo $t['Browser'];?></span><br>
|
||||
<?php echo xssClean($_SERVER['HTTP_USER_AGENT'],"html");?><br><br>
|
||||
<span class="heading"><?php echo $t['Your IP'];?></span><br>
|
||||
<?php echo $_SERVER['REMOTE_ADDR'];?><br><br>
|
||||
</div>
|
||||
|
||||
<div style="float: left">
|
||||
<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
|
||||
$last10FilesArray = explode(",",$ICEcoder["last10Files"]);
|
||||
for ($i=0;$i<count($last10FilesArray);$i++) {
|
||||
if ($ICEcoder["last10Files"]=="") {
|
||||
echo '<div style="display: inline-block; margin-left: -39px; margin-top: -4px">'.$t['none'].'</div><br><br>';
|
||||
} else {
|
||||
$fileFolderName = str_replace("\\","/",$last10FilesArray[$i]);
|
||||
// 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 str_replace($docRoot,"",str_replace("|","/",$last10FilesArray[$i]));
|
||||
echo '</a></li>'.PHP_EOL;
|
||||
if ($i==count($last10FilesArray)-1) {echo '<br>'.PHP_EOL;};
|
||||
}
|
||||
}
|
||||
;?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style="clear: both"></div>
|
||||
<script>
|
||||
var nDT=<?php echo time()*1000;?>;
|
||||
setInterval(function(){
|
||||
var s=(new Date(nDT+=1e3)+'').split(' '),
|
||||
d=s[2]*1,
|
||||
t=s[4].split(':'),
|
||||
p=t[0]>11?'pm':'am',
|
||||
e=d%20==1|d>30?'st':d%20==2?'nd':d%20==3?'rd':'th';
|
||||
t[0]=--t[0]%12+1;
|
||||
if (document.getElementById('serverDT')) {
|
||||
document.getElementById('serverDT').innerHTML=[s[0],d+e,s[1],s[3],t.join(':')+p].join(' ');
|
||||
}
|
||||
},1000);
|
||||
</script>
|
||||
<?php if(is_dir('test') && !$ICEcoder['demoMode']) {?>
|
||||
<div style="float: left; margin-right: 50px">
|
||||
<h2><?php echo $t['test suite'];?></h2>
|
||||
<span class="heading"><?php echo $t['Run unit tests'];?></span><br>
|
||||
<a nohref onclick="top.ICEcoder.filesFrame.contentWindow.frames['testControl'].location.href = 'test'" style="color: #fff; cursor: pointer"><?php echo $t['Run unit tests'];?></a><div id="unitTestResults"></div>
|
||||
</div>
|
||||
<?php
|
||||
;};
|
||||
?>
|
||||
<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>
|
||||
</div>
|
||||
<div style="clear: both"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function createNewCMInstance(num) {
|
||||
var fileName = top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];
|
||||
var codeFold = CodeMirror.newFoldFunction(CodeMirror.tagRangeFinder,'<span style=\"display: inline-block; width: 13px; height: 13px; background-color: #b00; color: #fff; text-align: center; cursor: pointer\"><span style="position: relative; top: -1px">+</span></span> %N%');
|
||||
var codeFold_JS_Coffee_PHP_Ruby = CodeMirror.newFoldFunction(CodeMirror.braceRangeFinder,'<span style=\"display: inline-block; width: 13px; height: 13px; background-color: #b00; color: #fff; text-align: center; cursor: pointer\"><span style="position: relative; top: -1px">+</span></span> %N%');
|
||||
|
||||
window['cM'+num] = CodeMirror(document.body, {
|
||||
mode: "application/x-httpd-php",
|
||||
lineNumbers: true,
|
||||
lineWrapping: true,
|
||||
indentUnit: top.tabWidth,
|
||||
tabSize: top.tabWidth,
|
||||
indentWithTabs: true,
|
||||
electricChars: false,
|
||||
onCursorActivity: function() {
|
||||
top.ICEcoder.getCaretPosition();
|
||||
top.ICEcoder.updateCharDisplay();
|
||||
window['cM'+num].setLineClass(top.ICEcoder['cMActiveLine'+num], null);
|
||||
if(!window['cM'+num].somethingSelected()) {
|
||||
top.ICEcoder['cMActiveLine'+num] = window['cM'+num].setLineClass(window['cM'+num].getCursor().line, "cm-s-activeLine");
|
||||
}
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].matchHighlight("CodeMirror-matchhighlight");
|
||||
top.ICEcoder.cssColorPreview();
|
||||
CodeMirror.keyMap.ICEcoder = {
|
||||
"Tab": function(cm) {
|
||||
return cm.somethingSelected() ? cm.execCommand("indentAuto") : CodeMirror.Pass // Falls through to default or Emmet plugin
|
||||
},
|
||||
onChange: function() {
|
||||
// If we're not loading the file, it's a change, so update tab
|
||||
if (!top.ICEcoder.loadingFile) {
|
||||
top.ICEcoder.changedContent[top.ICEcoder.selectedTab-1] = 1;
|
||||
top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);
|
||||
}
|
||||
top.ICEcoder.getCaretPosition();
|
||||
top.ICEcoder.dontUpdateNest = false;
|
||||
top.ICEcoder.updateCharDisplay();
|
||||
top.ICEcoder.updateNestingIndicator();
|
||||
if (top.ICEcoder.findMode) {
|
||||
top.ICEcoder.results.splice(top.ICEcoder.findResult,1);
|
||||
top.document.getElementById('results').innerHTML = top.ICEcoder.results.length + " results";
|
||||
top.ICEcoder.findMode = false;
|
||||
}
|
||||
},
|
||||
onKeyEvent: function(instance, e) {
|
||||
top.ICEcoder.redoChangedContent(e);
|
||||
top.ICEcoder.findReplace('find',true,false);
|
||||
top.ICEcoder.getCaretPosition();
|
||||
top.ICEcoder.updateCharDisplay();
|
||||
tok = window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getTokenAt(window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getCursor());
|
||||
if (tok.string!=">") {lastString=tok.string};
|
||||
if (e.type=="keyup"&&e.keyCode=="16"&&lastKeyCode=="190") {
|
||||
canDoEndTag=true;
|
||||
for (i=0;i<top.ICEcoder.tagNestExceptions.length;i++) {
|
||||
if(top.ICEcoder.tagString!="script" && top.ICEcoder.tagString==top.ICEcoder.tagNestExceptions[i]) {
|
||||
canDoEndTag=false;
|
||||
}
|
||||
}
|
||||
if (
|
||||
top.ICEcoder.tagString.slice(0,1)=="/"||
|
||||
top.ICEcoder.tagString.slice(0,1)=="?"||
|
||||
!top.ICEcoder.codeAssist||
|
||||
fileName && (fileName.indexOf(".js")>0||fileName.indexOf(".css")>0||fileName.indexOf(".less")>0)
|
||||
) {canDoEndTag=false}
|
||||
|
||||
contentType = top.ICEcoder.caretLocType;
|
||||
if (canDoEndTag && (contentType!="JavaScript"||(contentType=="JavaScript"&&top.ICEcoder.tagString=="script"))) {
|
||||
numTabs = top.ICEcoder.htmlTagArray.length;
|
||||
if (top.ICEcoder.htmlTagArray[0]=="html") {numTabs--};
|
||||
tabs = "";
|
||||
for (i=0;i<numTabs-1;i++) {
|
||||
tabs += "\t";
|
||||
}
|
||||
endTag = "</" + top.ICEcoder.tagString + ">";
|
||||
if (top.ICEcoder.tagString=="script") {endTag="</"+"script>"};
|
||||
if(top.ICEcoder.tagString=="title"||top.ICEcoder.tagString=="a"||top.ICEcoder.tagString=="li"||top.ICEcoder.tagString=="span"||(top.ICEcoder.tagString.slice(0,1)=="h"&&parseInt(top.ICEcoder.tagString.slice(1,2),10)>=1&&parseInt(top.ICEcoder.tagString.slice(1,2),10)<=7)) {
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].replaceSelection(endTag);
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].setCursor(window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getCursor().line,window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getCursor().ch-top.ICEcoder.tagString.length-3);
|
||||
} else if(top.ICEcoder.tagString=="html"||top.ICEcoder.tagString=="head") {
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].replaceSelection("\n\n"+endTag);
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].setCursor(window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getCursor().line-1,numTabs);
|
||||
} else {
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].replaceSelection("\n"+tabs+"\t\n"+tabs+endTag);
|
||||
window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].setCursor(window['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].getCursor().line-1,numTabs);
|
||||
}
|
||||
}
|
||||
};
|
||||
lastKeyCode = e.keyCode;
|
||||
},
|
||||
onGutterClick: !fileName || (fileName && fileName.indexOf(".js") == -1 && fileName.indexOf(".coffee") == -1 && fileName.indexOf(".php") && fileName.indexOf(".rb") == -1) ? codeFold : codeFold_JS_Coffee_PHP_Ruby,
|
||||
extraKeys: {
|
||||
"Tab": function(cm) {CodeMirror.commands[top.tabsIndent ? "defaultTab" : "insertTab"](cm);},
|
||||
"Shift-Tab": "indentLess",
|
||||
"Ctrl-Up": function() {},
|
||||
"Ctrl-Down": function() {}
|
||||
}
|
||||
});
|
||||
|
||||
// Now create the active line for this CodeMirror object
|
||||
top.ICEcoder['cMActiveLine'+num] = window['cM'+num].setLineClass(0, "cm-s-activeLine");
|
||||
"Shift-Tab": "indentLess",
|
||||
"Ctrl-Space": "autocomplete",
|
||||
"Ctrl-Up" : false,
|
||||
"Ctrl-Down" : false,
|
||||
"Esc" : false,
|
||||
fallthrough: ["default"]
|
||||
};
|
||||
|
||||
function createNewCMInstance(num) {
|
||||
// Establish the filename for the tab
|
||||
var fileName = top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];
|
||||
|
||||
// Define our CodeMirror options
|
||||
var cMOptions = {
|
||||
mode: "application/x-httpd-php",
|
||||
lineNumbers: true,
|
||||
gutters: ["folds","CodeMirror-lint-markers","CodeMirror-linenumbers"],
|
||||
lineWrapping: top.ICEcoder.lineWrapping,
|
||||
indentWithTabs: top.ICEcoder.indentWithTabs,
|
||||
indentUnit: top.ICEcoder.indentSize,
|
||||
tabSize: top.ICEcoder.indentSize,
|
||||
electricChars: false,
|
||||
autoCloseTags: true,
|
||||
autoCloseBrackets: true,
|
||||
highlightSelectionMatches: true,
|
||||
showTrailingSpace: true,
|
||||
lint: false,
|
||||
keyMap: "ICEcoder"
|
||||
};
|
||||
|
||||
// Start editor instances, main and diff
|
||||
window['cM'+num] = CodeMirror(document.body, cMOptions);
|
||||
window['cM'+num+'diff'] = CodeMirror(document.body, cMOptions);
|
||||
|
||||
// Define actions for those...
|
||||
|
||||
// Focus
|
||||
window['cM'+num] .on("focus", function(thisCM) {top.ICEcoder.cMonFocus(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("focus", function(thisCM) {top.ICEcoder.cMonFocus(thisCM,'cM'+num+'diff')});
|
||||
|
||||
// Blur
|
||||
window['cM'+num] .on("blur", function(thisCM) {top.ICEcoder.cMonBlur(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("blur", function(thisCM) {top.ICEcoder.cMonBlur(thisCM,'cM'+num+'diff')});
|
||||
|
||||
// Keyup
|
||||
window['cM'+num] .on("keyup", function(thisCM) {top.ICEcoder.cMonKeyUp(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("keyup", function(thisCM) {top.ICEcoder.cMonKeyUp(thisCM,'cM'+num+'diff')});
|
||||
|
||||
// Cursor activity
|
||||
window['cM'+num] .on("cursorActivity", function(thisCM) {top.ICEcoder.cMonCursorActivity(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("cursorActivity", function(thisCM) {top.ICEcoder.cMonCursorActivity(thisCM,'cM'+num+'diff')});
|
||||
|
||||
// Before selection change
|
||||
window['cM'+num] .on("beforeSelectionChange", function(thisCM, changeObj) {top.ICEcoder.prevLine = thisCM.getCursor().line;});
|
||||
window['cM'+num+'diff'] .on("beforeSelectionChange", function(thisCM, changeObj) {top.ICEcoder.prevLineDiff = thisCM.getCursor().line;});
|
||||
|
||||
// Change
|
||||
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)});
|
||||
|
||||
// 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')});
|
||||
|
||||
// Gutter click
|
||||
window['cM'+num] .on("gutterClick", function(thisCM, line, gutter, clickEvent) {CodeMirror.doFold(thisCM.getLine(line).indexOf("{")>-1 ? "brace" : "xml",null,"+","-",false)(thisCM, line);});
|
||||
window['cM'+num+'diff'] .on("gutterClick", function(thisCM, line, gutter, clickEvent) {CodeMirror.doFold(thisCM.getLine(line).indexOf("{")>-1 ? "brace" : "xml",null,"+","-",false)(thisCM, line);});
|
||||
|
||||
// Input read
|
||||
window['cM'+num] .on("inputRead", function(thisCM) {top.ICEcoder.cMonInputRead(thisCM,'cM'+num)});
|
||||
window['cM'+num+'diff'] .on("inputRead", function(thisCM) {top.ICEcoder.cMonInputRead(thisCM,'cM'+num+'diff')});
|
||||
|
||||
// Render line
|
||||
window['cM'+num] .on("renderLine", function(thisCM, line, element) {top.ICEcoder.cMonRenderLine(thisCM,'cM'+num,line,element)});
|
||||
window['cM'+num+'diff'] .on("renderLine", function(thisCM, line, element) {top.ICEcoder.cMonRenderLine(thisCM,'cM'+num+'diff',line,element)});
|
||||
|
||||
// Now create the active lines for them
|
||||
top.ICEcoder['cMActiveLinecM'+num] = window['cM'+num].addLineClass(0, "background", "cm-s-activeLine");
|
||||
top.ICEcoder['cMActiveLinecM'+num+'diff'] = window['cM'+num+'diff'].addLineClass(0, "background", "cm-s-activeLine");
|
||||
};
|
||||
</script>
|
||||
|
||||
<div style="position: absolute; display: none; width: 5px; height: 100%; top: 0; right: 0; background: rgba(255,255,255,0.1); overflow: hidden; z-index: 2" id="resultsBar"></div>
|
||||
|
||||
<?php include_once("processes/on-editor-load.php"); ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
49
farbtastic/farbtastic.css
Normal file
@@ -0,0 +1,49 @@
|
||||
.picker {
|
||||
display: inline-block;
|
||||
}
|
||||
.farbtastic {
|
||||
position: relative;
|
||||
}
|
||||
.farbtastic * {
|
||||
position: absolute;
|
||||
cursor: crosshair;
|
||||
}
|
||||
.farbtastic, .farbtastic .wheel {
|
||||
width: 195px;
|
||||
height: 195px;
|
||||
}
|
||||
.farbtastic .color, .farbtastic .overlay {
|
||||
top: 47px;
|
||||
left: 47px;
|
||||
width: 101px;
|
||||
height: 101px;
|
||||
}
|
||||
.farbtastic .wheel {
|
||||
background: url(wheel.png) no-repeat;
|
||||
width: 195px;
|
||||
height: 195px;
|
||||
}
|
||||
.farbtastic .overlay {
|
||||
background: url(mask.png) no-repeat;
|
||||
}
|
||||
.farbtastic .marker {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
margin: -8px 0 0 -8px;
|
||||
overflow: hidden;
|
||||
background: url(marker.png) no-repeat;
|
||||
}
|
||||
.colorValue {
|
||||
border: 0;
|
||||
width: 105px;
|
||||
padding-left: 5px
|
||||
}
|
||||
.insertColorValue {
|
||||
background: #888;
|
||||
color: #fff;
|
||||
height: 18px;
|
||||
width: 60px;
|
||||
border: 0;
|
||||
margin-left: 5px;
|
||||
cursor: pointer
|
||||
}
|
||||
253
farbtastic/farbtastic.js
Normal file
@@ -0,0 +1,253 @@
|
||||
/*!
|
||||
* Farbtastic: NON jQuery color picker plug-in v1.4, based on v1.3u
|
||||
*
|
||||
* Licensed under the GPL license:
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
farbtasticFunc = function (options) {
|
||||
farbtastic(this, options);
|
||||
return this;
|
||||
};
|
||||
|
||||
farbtastic = function (container, callback) {
|
||||
var container = document.getElementById(container);
|
||||
var callback = document.getElementById(callback);
|
||||
return container.farbtastic || (container.farbtastic = new _farbtastic(container, callback));
|
||||
};
|
||||
|
||||
_farbtastic = function (container, callback) {
|
||||
// Store farbtastic object
|
||||
var fb = this;
|
||||
|
||||
// Insert markup
|
||||
container.innerHTML = '<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>';
|
||||
fb.wheel = document.getElementsByClassName('wheel')[0];
|
||||
// Dimensions
|
||||
fb.radius = 84;
|
||||
fb.square = 100;
|
||||
fb.width = 194;
|
||||
|
||||
/**
|
||||
* Link to the given element(s) or callback.
|
||||
*/
|
||||
fb.linkTo = function (callback) {
|
||||
// Unbind previous nodes
|
||||
if (typeof fb.callback == 'object') {
|
||||
console.log("Doesn't do anything?");
|
||||
fb.callback.removeEventListener('keyup', fb.updateValue);
|
||||
}
|
||||
|
||||
// Reset color
|
||||
fb.color = null;
|
||||
|
||||
// Bind callback or elements
|
||||
if (typeof callback == 'function') {
|
||||
fb.callback = callback;
|
||||
}
|
||||
else if (typeof callback == 'object' || typeof callback == 'string') {
|
||||
fb.callback = callback;
|
||||
fb.callback.addEventListener('keyup',fb.updateValue);
|
||||
if (fb.callback.value) {
|
||||
fb.setColor(fb.callback.value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
fb.updateValue = function (event) {
|
||||
if (this.value && this.value != fb.color) {
|
||||
fb.setColor(this.value);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Change color with HTML syntax #123456
|
||||
*/
|
||||
fb.setColor = function (color) {
|
||||
var unpack = fb.unpack(color);
|
||||
if (fb.color != color && unpack) {
|
||||
fb.color = color;
|
||||
fb.rgb = unpack;
|
||||
fb.hsl = fb.RGBToHSL(fb.rgb);
|
||||
fb.updateDisplay();
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Change color with HSL triplet [0..1, 0..1, 0..1]
|
||||
*/
|
||||
fb.setHSL = function (hsl) {
|
||||
fb.hsl = hsl;
|
||||
fb.rgb = fb.HSLToRGB(hsl);
|
||||
fb.color = fb.pack(fb.rgb);
|
||||
fb.updateDisplay();
|
||||
return this;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Retrieve the coordinates of the given event relative to the center
|
||||
* of the widget.
|
||||
*/
|
||||
fb.widgetCoords = function (event) {
|
||||
return { x: (event.pageX - fb.wheel.offsetParent.offsetLeft) - fb.width / 2, y: (event.pageY - fb.wheel.offsetParent.offsetTop) - fb.width / 2 };
|
||||
};
|
||||
|
||||
/**
|
||||
* Mousedown handler
|
||||
*/
|
||||
fb.mousedown = function (event) {
|
||||
// Capture mouse
|
||||
if (!document.dragging) {
|
||||
document.addEventListener('mousemove', fb.mousemove);
|
||||
document.addEventListener('mouseup', fb.mouseup);
|
||||
document.dragging = true;
|
||||
}
|
||||
|
||||
// Check which area is being dragged
|
||||
var pos = fb.widgetCoords(event);
|
||||
fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;
|
||||
|
||||
// Process
|
||||
fb.mousemove(event);
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Mousemove handler
|
||||
*/
|
||||
fb.mousemove = function (event) {
|
||||
// Get coordinates relative to color picker center
|
||||
var pos = fb.widgetCoords(event);
|
||||
|
||||
// Set new HSL parameters
|
||||
if (fb.circleDrag) {
|
||||
var hue = Math.atan2(pos.x, -pos.y) / 6.28;
|
||||
if (hue < 0) hue += 1;
|
||||
fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
|
||||
}
|
||||
else {
|
||||
var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
|
||||
var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
|
||||
fb.setHSL([fb.hsl[0], sat, lum]);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Mouseup handler
|
||||
*/
|
||||
fb.mouseup = function () {
|
||||
// Uncapture mouse
|
||||
document.removeEventListener('mousemove', fb.mousemove);
|
||||
document.removeEventListener('mouseup', fb.mouseup);
|
||||
document.dragging = false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the markers and styles
|
||||
*/
|
||||
fb.updateDisplay = function () {
|
||||
// Markers
|
||||
var angle = fb.hsl[0] * 6.28;
|
||||
document.getElementsByClassName('h-marker')[0].style.left = Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px';
|
||||
document.getElementsByClassName('h-marker')[0].style.top = Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px';
|
||||
|
||||
document.getElementsByClassName('sl-marker')[0].style.left = Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px';
|
||||
document.getElementsByClassName('sl-marker')[0].style.top = Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px';
|
||||
|
||||
// Saturation/Luminance gradient
|
||||
document.getElementsByClassName('color')[0].style.backgroundColor = fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5]));
|
||||
|
||||
// Linked elements or callback
|
||||
if (typeof fb.callback == 'object') {
|
||||
// Set background/foreground color
|
||||
document.getElementById(fb.callback.id).style.backgroundColor = document.getElementById(fb.callback.id + 'RGB').style.backgroundColor = fb.color;
|
||||
document.getElementById(fb.callback.id).style.color = document.getElementById(fb.callback.id + 'RGB').style.color = fb.hsl[2] > 0.5 ? '#000' : '#fff';
|
||||
document.getElementById('colorRGB').value = document.getElementById(fb.callback.id).style.backgroundColor.replace(/\s/g,'');
|
||||
|
||||
// Change linked value
|
||||
if (callback.value && callback.value != fb.color) {
|
||||
callback.value = fb.color;
|
||||
}
|
||||
}
|
||||
else if (typeof fb.callback == 'function') {
|
||||
fb.callback.call(fb, fb.color);
|
||||
}
|
||||
};
|
||||
|
||||
/* Various color utility functions */
|
||||
fb.pack = function (rgb) {
|
||||
var r = Math.round(rgb[0] * 255);
|
||||
var g = Math.round(rgb[1] * 255);
|
||||
var b = Math.round(rgb[2] * 255);
|
||||
return '#' + (r < 16 ? '0' : '') + r.toString(16) +
|
||||
(g < 16 ? '0' : '') + g.toString(16) +
|
||||
(b < 16 ? '0' : '') + b.toString(16);
|
||||
};
|
||||
|
||||
fb.unpack = function (color) {
|
||||
if (color.length == 7) {
|
||||
return [parseInt('0x' + color.substring(1, 3)) / 255,
|
||||
parseInt('0x' + color.substring(3, 5)) / 255,
|
||||
parseInt('0x' + color.substring(5, 7)) / 255];
|
||||
}
|
||||
else if (color.length == 4) {
|
||||
return [parseInt('0x' + color.substring(1, 2)) / 15,
|
||||
parseInt('0x' + color.substring(2, 3)) / 15,
|
||||
parseInt('0x' + color.substring(3, 4)) / 15];
|
||||
}
|
||||
};
|
||||
|
||||
fb.HSLToRGB = function (hsl) {
|
||||
var m1, m2, r, g, b;
|
||||
var h = hsl[0], s = hsl[1], l = hsl[2];
|
||||
m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
|
||||
m1 = l * 2 - m2;
|
||||
return [this.hueToRGB(m1, m2, h+0.33333),
|
||||
this.hueToRGB(m1, m2, h),
|
||||
this.hueToRGB(m1, m2, h-0.33333)];
|
||||
};
|
||||
|
||||
fb.hueToRGB = function (m1, m2, h) {
|
||||
h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
|
||||
if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
|
||||
if (h * 2 < 1) return m2;
|
||||
if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
|
||||
return m1;
|
||||
};
|
||||
|
||||
fb.RGBToHSL = function (rgb) {
|
||||
var min, max, delta, h, s, l;
|
||||
var r = rgb[0], g = rgb[1], b = rgb[2];
|
||||
min = Math.min(r, Math.min(g, b));
|
||||
max = Math.max(r, Math.max(g, b));
|
||||
delta = max - min;
|
||||
l = (min + max) / 2;
|
||||
s = 0;
|
||||
if (l > 0 && l < 1) {
|
||||
s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
|
||||
}
|
||||
h = 0;
|
||||
if (delta > 0) {
|
||||
if (max == r && max != g) h += (g - b) / delta;
|
||||
if (max == g && max != b) h += (2 + (b - r) / delta);
|
||||
if (max == b && max != r) h += (4 + (r - g) / delta);
|
||||
h /= 6;
|
||||
}
|
||||
return [h, s, l];
|
||||
};
|
||||
|
||||
// Install mousedown handler (the others are set on the document on-demand)
|
||||
document.getElementsByClassName('farbtastic')[0].onmousedown = fb.mousedown;
|
||||
|
||||
// Init color
|
||||
fb.setColor('#000000');
|
||||
|
||||
// Set linked elements/callback
|
||||
if (callback) {
|
||||
fb.linkTo(callback);
|
||||
}
|
||||
};
|
||||
BIN
farbtastic/marker.png
Normal file
|
After Width: | Height: | Size: 652 B |
BIN
farbtastic/mask.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
farbtastic/wheel.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
favicon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
177
files.php
@@ -1,146 +1,59 @@
|
||||
<?php include("lib/settings.php");?>
|
||||
<?php
|
||||
include("lib/headers.php");
|
||||
include("lib/settings.php");
|
||||
$t = $text['files'];
|
||||
|
||||
// Is our dir in the list of GitHub local paths?
|
||||
$isGitHubRepoDir = in_array($ICEcoder["root"],$ICEcoder['githubLocalPaths']);
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'files');top.ICEcoder.canResizeFilesW()}" onContextMenu="top.ICEcoder.rightClickedFile=top.ICEcoder.thisFileFolderLink; return top.ICEcoder.showMenu()" onClick="top.ICEcoder.selectFileFolder()">
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true; top.ICEcoder.boxSelect(event,'down')" onMouseUp="top.ICEcoder.mouseDown=false; top.ICEcoder.boxSelect(event,'up'); if (!top.ICEcoder.overCloseLink) {top.ICEcoder.tabDragEnd()}" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'files');top.ICEcoder.canResizeFilesW(); top.ICEcoder.boxSelect(event,'drag')}" onDrop="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'files')}" onContextMenu="top.ICEcoder.selectFileFolder(event); return top.ICEcoder.showMenu(event)" onClick="if (!top.ICEcoder.fmDraggedBox) {top.ICEcoder.selectFileFolder(event)} else {top.ICEcoder.fmDraggedBox = false}" onDragStart="top.ICEcoder.selectFileFolder(event);" onDragOver="event.preventDefault();event.stopPropagation()">
|
||||
<head>
|
||||
<title>ICEcoder file manager</title>
|
||||
<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">
|
||||
<script src="lib/coder.js" type="text/javascript"></script>
|
||||
<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>
|
||||
</head>
|
||||
|
||||
<body onLoad="top.ICEcoder.fileManager()" onDblClick="top.ICEcoder.openFile()" onKeyDown="return top.ICEcoder.interceptKeys('files', event);" onKeyUp="top.ICEcoder.resetKeys(event);">
|
||||
<div title="Refresh" onClick="top.ICEcoder.refreshFileManager()" class="refresh"></div>
|
||||
<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>
|
||||
<?php
|
||||
$ICEcoder["restrictedFiles"] = $_SESSION['restrictedFiles'];
|
||||
$ICEcoder["bannedFiles"] = $_SESSION['bannedFiles'];
|
||||
|
||||
// Function to sort given values alphabetically
|
||||
function alphasort($a, $b) {
|
||||
return strcasecmp($a->getPathname(), $b->getPathname());
|
||||
$_SESSION['githubDiff'] = false;
|
||||
if ($isGitHubRepoDir) {
|
||||
$classExtra = !isset($_GET["githubDiff"]) || $_GET["githubDiff"] == "false" ? "Off" : "On";
|
||||
if ($classExtra == "On") {
|
||||
$_SESSION['githubDiff'] = true;
|
||||
// Make sure we are showing the diff pane
|
||||
echo "<script>top.ICEcoder.setSplitPane('on');</script>";
|
||||
}
|
||||
echo '<div title="GitHub" onClick="top.ICEcoder.githubDiffToggle()" class="github'.$classExtra.'"></div>';
|
||||
}
|
||||
|
||||
// Class to put forward the values for sorting
|
||||
class SortingIterator implements IteratorAggregate {
|
||||
private $iterator = null;
|
||||
public function __construct(Traversable $iterator, $callback) {
|
||||
$array = iterator_to_array($iterator);
|
||||
usort($array, $callback);
|
||||
$this->iterator = new ArrayIterator($array);
|
||||
}
|
||||
public function getIterator() {
|
||||
return $this->iterator;
|
||||
}
|
||||
}
|
||||
|
||||
// Get a full list of dirs & files and begin sorting using above class & function
|
||||
$objectList = new SortingIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($docRoot.$iceRoot), RecursiveIteratorIterator::SELF_FIRST), 'alphasort');
|
||||
|
||||
// With that done, create arrays for out final ordered list and a temp container of files
|
||||
$finalArray = $tempArray = array();
|
||||
|
||||
// To start, push folders from object into finalArray, files into tempArray
|
||||
foreach ($objectList as $objectRef) {
|
||||
$fileFolderName = substr($objectRef->getPathname(), strlen($docRoot.$iceRoot));
|
||||
$canAdd = true;
|
||||
for ($i=0;$i<count($ICEcoder["bannedFiles"]);$i++) {
|
||||
if(strpos($fileFolderName,$ICEcoder["bannedFiles"][$i])!==false) {$canAdd = false;}
|
||||
}
|
||||
if ($objectRef->getFilename()!="." && $objectRef->getFilename()!=".." && $fileFolderName[strlen($fileFolderName)-1]!="/" && $canAdd) {
|
||||
$fileFolderName!="/" && is_dir($docRoot.$iceRoot.$fileFolderName) ? array_push($finalArray,$fileFolderName) : array_push($tempArray,$fileFolderName);
|
||||
}
|
||||
}
|
||||
|
||||
// Now push root files onto the end of finalArray and splice from the temp, leaving only files that reside in subdirs
|
||||
for ($i=0;$i<count($tempArray);$i++) {
|
||||
if (count(explode("/",$tempArray[$i]))==2) {
|
||||
array_push($finalArray,$tempArray[$i]);
|
||||
array_splice($tempArray,$i,1);
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
|
||||
// Lastly we push remaining files into the right subdirs in finalArray
|
||||
for ($i=0;$i<count($tempArray);$i++) {
|
||||
$insertAt = array_search(dirname($tempArray[$i]),$finalArray)+1;
|
||||
for ($j=$insertAt;$j<count($finalArray);$j++) {
|
||||
if ( strcasecmp(dirname($finalArray[$j]), dirname($tempArray[$i]))==0 &&
|
||||
strcasecmp(basename($finalArray[$j]), basename($tempArray[$i]))<0 ||
|
||||
strpos(dirname($finalArray[$j]),dirname($tempArray[$i]))===0) {
|
||||
$insertAt++;
|
||||
}
|
||||
}
|
||||
array_splice($finalArray, $insertAt, 0, $tempArray[$i]);
|
||||
}
|
||||
|
||||
// Finally, we have our ordered list, so display in a UL
|
||||
$fileAtts = "";
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($docRoot.$iceRoot)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="|_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
echo "<ul class=\"fileManager\">\n";
|
||||
echo "<li class=\"pft-directory\">";
|
||||
echo "<a nohref title=\"/\" onMouseOver=\"top.ICEcoder.overFileFolder('folder','/')\" onMouseOut=\"top.ICEcoder.overFileFolder('folder','')\" style=\"position: relative; left:-22px\">";
|
||||
echo " ";
|
||||
echo "<span id=\"|\">/ ";
|
||||
echo $iceRoot == "" ? "[ROOT]" : trim($iceRoot,"/");
|
||||
echo "</span> ";
|
||||
echo $fileAtts;
|
||||
echo "</a>";
|
||||
echo "</li>\n";
|
||||
$lastPath="";
|
||||
$fileCount=0;
|
||||
$fileBytes=0;
|
||||
$dirCount=0;
|
||||
for ($i=0;$i<count($finalArray);$i++) {
|
||||
$fileFolderName = str_replace("\\","/",$finalArray[$i]);
|
||||
$type = is_dir($docRoot.$iceRoot.$fileFolderName) ? "folder" : "file";
|
||||
$type=="folder" ? $dirCount++ : $fileCount++;
|
||||
if ($type=="file") {
|
||||
$fileBytes+=filesize($docRoot.$iceRoot.$fileFolderName);
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-".pathinfo($docRoot.$iceRoot.$fileFolderName, PATHINFO_EXTENSION);
|
||||
}
|
||||
$thisDepth = count(explode("/",$fileFolderName));
|
||||
$lastDepth = count(explode("/",$lastPath));
|
||||
if ($thisDepth > $lastDepth) {echo "<ul>\n";}
|
||||
if ($thisDepth < $lastDepth) {
|
||||
for ($j=$lastDepth;$j>$thisDepth;$j--) {
|
||||
echo "</ul>\n";
|
||||
}
|
||||
}
|
||||
$restrictedFile=false;
|
||||
for ($j=0;$j<count($ICEcoder["restrictedFiles"]);$j++) {
|
||||
if (strpos($fileFolderName,$ICEcoder["restrictedFiles"][$j])!="") {
|
||||
$restrictedFile=true;
|
||||
}
|
||||
}
|
||||
if ($serverType=="Linux") {
|
||||
$chmodInfo = substr(sprintf('%o', fileperms($docRoot.$iceRoot.$fileFolderName)), -3);
|
||||
$fileAtts = '<span style="color: #888; font-size: 8px" id="'.str_replace($docRoot,"",str_replace("/","|",$fileFolderName)).'_perms">'.$chmodInfo.'</span>';
|
||||
}
|
||||
$type == "folder" ? $class = 'pft-directory' : $class = 'pft-file '.strtolower($ext);
|
||||
echo "<li class=\"".$class."\"><a nohref title=\"$fileFolderName\" onMouseOver=\"top.ICEcoder.overFileFolder('$type','".str_replace($docRoot,"",str_replace("/","|",$fileFolderName))."')\" onMouseOut=\"top.ICEcoder.overFileFolder('$type','')\" style=\"position: relative; left:-22px\"> <span id=\"".str_replace($docRoot,"",str_replace("/","|",$fileFolderName))."\">".basename($fileFolderName)."</span> ".$fileAtts."</a>\n";
|
||||
if ($i<count($finalArray)) {echo "</li>\n";}
|
||||
$lastPath = $fileFolderName;
|
||||
}
|
||||
echo "</ul>\n</ul>\n";
|
||||
|
||||
echo "<script>\n";
|
||||
$varOutput = "top.ICEcoder.dirCount=";
|
||||
$varOutput .= $dirCount ? $dirCount : "0";
|
||||
$varOutput .= ";\ntop.ICEcoder.fileCount=";
|
||||
$varOutput .= $fileCount ? $fileCount : "0";
|
||||
$varOutput .= ";\ntop.ICEcoder.fileBytes=";
|
||||
$varOutput .= $fileBytes ? $fileBytes : "0";
|
||||
// Output the JS vars
|
||||
echo $varOutput;
|
||||
echo ";\n</script>";
|
||||
?>
|
||||
|
||||
<iframe name="fileControl" style="display: none"></iframe>
|
||||
|
||||
<ul class="fileManager">
|
||||
<li class="pft-directory dirOpen"><a nohref title="/" onMouseOver="top.ICEcoder.overFileFolder('folder','/')" onMouseOut="top.ICEcoder.overFileFolder('folder','')" onClick="top.ICEcoder.openCloseDir(this)" style="position: relative; left:-22px"> <span id="|">/ <?php
|
||||
echo $iceRoot == "" ? $t['ROOT'] : trim($iceRoot,"/");
|
||||
$thisPermVal = $serverType=="Linux" ? substr(sprintf('%o', fileperms($docRoot.$iceRoot)), -3) : "";
|
||||
$permColors = $thisPermVal == 777 ? 'background: #800; color: #eee' : 'color: #888';
|
||||
?></span> <span style="<?php echo $permColors;?>; font-size: 8px" id="|_perms"><?php echo $thisPermVal;;?></span></a></li><?php
|
||||
// tree file items generated by the iFrame 'fileControl' below which loads in the items at location=| (ie, the root)
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<iframe name="fileControl" src="lib/get-branch.php?location=|&csrf=<?php echo $_SESSION['csrf'];?>" style="display: none"></iframe>
|
||||
|
||||
<iframe name="testControl" style="display: none"></iframe>
|
||||
|
||||
<iframe name="processControl" style="display: none"></iframe>
|
||||
|
||||
<div class="fmDragBox" id="fmDragBox"></div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
BIN
images/big-arrow.gif
Normal file
|
After Width: | Height: | Size: 430 B |
BIN
images/bug-reporting-icons.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
images/checkbox.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
images/checkerboard.png
Normal file
|
After Width: | Height: | Size: 231 B |
BIN
images/color-picker.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 158 B After Width: | Height: | Size: 164 B |
|
Before Width: | Height: | Size: 73 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 8.9 KiB |
BIN
images/nav-alpha.png
Normal file
|
After Width: | Height: | Size: 999 B |
|
Before Width: | Height: | Size: 435 B |
BIN
images/nav-close-all.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 480 B |
|
Before Width: | Height: | Size: 65 B |
BIN
images/select-arrow.gif
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
images/split-pane-controls.gif
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
331
index.php
@@ -1,170 +1,317 @@
|
||||
<?php
|
||||
include("lib/headers.php");
|
||||
include("lib/settings.php");
|
||||
$t = $text['index'];
|
||||
|
||||
// Check IP permissions
|
||||
if (!in_array($_SERVER["REMOTE_ADDR"], $_SESSION['allowedIPs']) && !in_array("*", $_SESSION['allowedIPs'])) {
|
||||
header('Location: /');
|
||||
die("Sorry, not in allowed IPs list");
|
||||
};
|
||||
|
||||
$updateMsg = '';
|
||||
// Check for updates
|
||||
if ($ICEcoder["checkUpdates"]) {
|
||||
$icv = json_encode(file_get_contents("http://icecoder.net/latest-version.txt"));
|
||||
$icv = rtrim(ltrim($icv,'"'),'"\\n');
|
||||
if ($ICEcoder["versionNo"]<$icv) {
|
||||
$updateMsg = ';top.ICEcoder.message(\'ICEcoder '.$icv.' now released\n\nPlease upgrade\')';
|
||||
} else {
|
||||
$cmv = json_encode(file_get_contents("http://codemirror.net/latest-version.txt"));
|
||||
$cmv = rtrim(ltrim($cmv,'"'),'"\\n');
|
||||
if ($ICEcoder["cMThisVer"]<$cmv) {
|
||||
$updateMsg = ';top.ICEcoder.message(\'CodeMirror '.$cmv.' now released\n\nPlease upgrade\')';
|
||||
$icv_url = "https://icecoder.net/latest-version?thisVersion=".$ICEcoder["versionNo"];
|
||||
if (ini_get('allow_url_fopen')) {
|
||||
$icvInfo = @file_get_contents($icv_url,false,$context);
|
||||
if (!$icvInfo) {
|
||||
$icvInfo = file_get_contents(str_replace("https:","http:",$icv_url), false, $context);
|
||||
}
|
||||
$icvInfo = explode("\n",$icvInfo);
|
||||
} elseif (function_exists('curl_init')) {
|
||||
$ch = curl_init($icv_url);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
$icvInfo = explode("\n", curl_exec($ch));
|
||||
}
|
||||
$icv = $icvInfo[0];
|
||||
$icvI = str_replace('"','\\\'',$icvInfo[1]);
|
||||
$thisV = $ICEcoder["versionNo"];
|
||||
if (strpos($thisV,"beta")>-1 && !strpos($icv,"beta") && str_replace(" beta","",$thisV) == $icv) {$thisV-=0.1;};
|
||||
if ($thisV<$icv) {
|
||||
$updateMsg = ";top.ICEcoder.dataMessage('<b>".$t['UPDATE INFO'].":</b> ICEcoder v ".$icv." ".$t['now available'].". (".$t['Your version is']." v ".$ICEcoder["versionNo"].").<br><br><a onclick=\\'top.ICEcoder.update()\\' style=\\'color:#fff; background: #b00; padding: 5px; text-decoration: none; cursor: pointer\\'>".$t['Update now']."</a><br><br>".$icvI."');";
|
||||
}
|
||||
}
|
||||
|
||||
$isMac = strpos($_SERVER['HTTP_USER_AGENT'], "Macintosh")>-1 ? true : false;
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html onMouseDown="top.ICEcoder.mouseDown=true" onMouseUp="top.ICEcoder.mouseDown=false" onMouseMove="if(top.ICEcoder) {top.ICEcoder.getMouseXY(event,'top');top.ICEcoder.canResizeFilesW()}">
|
||||
<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>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<link rel="stylesheet" type="text/css" href="lib/coder.css">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="lib/ice-coder.css">
|
||||
<link rel="icon" type="image/png" href="favicon.png">
|
||||
<script>
|
||||
theme = "<?php echo $ICEcoder["theme"]=="default" ? 'icecoder' : $ICEcoder["theme"];?>";
|
||||
tabsIndent = <?php echo $ICEcoder["tabsIndent"] ? 'true' : 'false';?>;
|
||||
openLastFiles = <?php echo $ICEcoder["openLastFiles"] ? 'true' : 'false';?>;
|
||||
tabWidth = <?php echo $ICEcoder["tabWidth"]; ?>;
|
||||
iceRoot = "<?php echo $ICEcoder["root"]; ?>";
|
||||
iceRoot = "<?php echo $ICEcoder['root']; ?>";
|
||||
|
||||
window.onbeforeunload = function() {
|
||||
if (top.ICEcoder.changedContent.indexOf(1)>-1) {
|
||||
return "You have some unsaved changes.";
|
||||
for(var i=1;i<=ICEcoder.savedPoints.length;i++) {
|
||||
if (ICEcoder.savedPoints[i-1]!=top.ICEcoder.getcMInstance(i).changeGeneration()) {
|
||||
return "<?php echo $t['You have some...'];?>.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
previousFiles = [<?php
|
||||
if ($ICEcoder["previousFiles"]!="") {
|
||||
$openFilesArray = explode(",",$ICEcoder["previousFiles"]);
|
||||
echo "'".implode("','",$openFilesArray)."'";
|
||||
}
|
||||
?>];
|
||||
showFileMenu = function() {
|
||||
document.getElementById('fileMenu').style.display='inline-block';
|
||||
t = {
|
||||
<?php
|
||||
// Load the lang array for what's in the JS file
|
||||
$t = $text['ice-coder'];
|
||||
$tOutput = "";
|
||||
foreach ($t as $key => $value) {
|
||||
$tOutput .= '"'.$key.'" : "'.$value.'",'.PHP_EOL;
|
||||
}
|
||||
echo rtrim($tOutput,",".PHP_EOL).PHP_EOL;
|
||||
|
||||
// Back to the lang array for index
|
||||
$t = $text['index'];
|
||||
?>
|
||||
}
|
||||
</script>
|
||||
<script language="JavaScript" src="lib/coder.js"></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">
|
||||
</head>
|
||||
|
||||
<body onLoad="ICEcoder.init()<?php echo $updateMsg.$onLoadExtras;?>" onResize="ICEcoder.setLayout()" onKeyDown="return ICEcoder.interceptKeys('coder',event);" onKeyUp="parent.ICEcoder.resetKeys(event);">
|
||||
<body onLoad="<?php
|
||||
echo "top.ICEcoder.versionNo = '".$ICEcoder["versionNo"]."';".
|
||||
'top.ICEcoder.previousFiles = [';
|
||||
if ($ICEcoder["previousFiles"]!="") {
|
||||
$openFilesArray = explode(",",$ICEcoder["previousFiles"]);
|
||||
echo "'".implode("','",$openFilesArray)."'";
|
||||
}
|
||||
echo "];";
|
||||
echo "top.ICEcoder.theme = '".($ICEcoder["theme"]=="default" ? 'icecoder' : $ICEcoder["theme"])."';".
|
||||
"top.ICEcoder.fontSize = '".$ICEcoder["fontSize"]."';".
|
||||
"top.ICEcoder.openLastFiles = ".($ICEcoder["openLastFiles"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.updateDiffOnSave = ".($ICEcoder["updateDiffOnSave"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.languageUser = '".$ICEcoder["languageUser"]."';".
|
||||
"top.ICEcoder.codeAssist = ".($ICEcoder["codeAssist"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.lineWrapping = ".($ICEcoder["lineWrapping"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.indentWithTabs = ".($ICEcoder["indentWithTabs"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.indentSize = ".$ICEcoder["indentSize"].";".
|
||||
"top.ICEcoder.demoMode = ".($ICEcoder["demoMode"] ? 'true' : 'false').";".
|
||||
"top.ICEcoder.tagWrapperCommand = '".$ICEcoder["tagWrapperCommand"]."';".
|
||||
"top.ICEcoder.autoComplete = '".$ICEcoder["autoComplete"]."';".
|
||||
"top.ICEcoder.bugFilePaths = ['".implode("','",$ICEcoder["bugFilePaths"])."'];".
|
||||
"top.ICEcoder.bugFileCheckTimer = ".$ICEcoder["bugFileCheckTimer"].";".
|
||||
"top.ICEcoder.bugFileMaxLines = ".$ICEcoder["bugFileMaxLines"].";".
|
||||
"top.ICEcoder.newDirPerms = ".$ICEcoder["newDirPerms"].";".
|
||||
"top.ICEcoder.newFilePerms = ".$ICEcoder["newFilePerms"].";";
|
||||
if($ICEcoder["githubAuthToken"] != "") {
|
||||
$_SESSION['githubAuthToken'] = $ICEcoder["githubAuthToken"];
|
||||
echo "top.ICEcoder.githubAuthTokenSet = true;";
|
||||
}
|
||||
echo "top.ICEcoder.csrf = '".$_SESSION["csrf"]."';";
|
||||
?>ICEcoder.init()<?php echo $updateMsg.$onLoadExtras;?>;top.ICEcoder.content.style.visibility='visible';top.ICEcoder.filesFrame.contentWindow.frames['processControl'].location.href = 'processes/on-load.php';<?php if(isset($_GET["display"]) && $_GET["display"] == "updated") {echo "top.ICEcoder.updated();";};?>" onResize="ICEcoder.setLayout()" onKeyDown="return ICEcoder.interceptKeys('coder',event);" onKeyUp="parent.ICEcoder.resetKeys(event);" onBlur="parent.ICEcoder.resetKeys(event);">
|
||||
|
||||
<div id="blackMask" class="blackMask" onClick="ICEcoder.showHide('hide',this)">
|
||||
<div id="blackMask" class="blackMask" onClick="if (!ICEcoder.overPopup) {ICEcoder.showHide('hide',this)}" onContextMenu="return false">
|
||||
<div class="popupVCenter">
|
||||
<div class="popup" id="mediaContainer"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="loadingMask" class="blackMask" style="visibility: visible">
|
||||
<span class="progressBar" id="progressBar" style="-webkit-animation:fullexpand 10s ease-out; -moz-animation:fullexpand 10s ease-out"></span>
|
||||
<div id="loadingMask" class="blackMask" style="visibility: visible" onContextMenu="return false">
|
||||
<div class="popupVCenter">
|
||||
<div class="popup">
|
||||
<div class="circleOutside"></div>
|
||||
<div class="circleInside"></div>
|
||||
working...
|
||||
<div class="spinner"></div>
|
||||
<?php echo $t['working'];?>...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="fileMenu" class="fileMenu" onMouseOver="ICEcoder.changeFilesW('expand')" onMouseOut="ICEcoder.changeFilesW('contract');this.style.display='none'">
|
||||
<div id="plugins" class="plugins" style="<?php echo $ICEcoder["pluginPanelAligned"];?>: 0" onMouseOver="top.ICEcoder.showHidePlugins('show')" onMouseOut="top.ICEcoder.showHidePlugins('hide')" onClick="top.ICEcoder.showHidePlugins('hide')">
|
||||
<div style="padding: 15px">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="fileMenu" class="fileMenu" onMouseOver="ICEcoder.changeFilesW('expand')" onMouseOut="ICEcoder.changeFilesW('contract');top.ICEcoder.hideFileMenu()" style="opacity: 0" onContextMenu="return false">
|
||||
<span id="folderMenuItems">
|
||||
<a href="javascript:top.ICEcoder.newFile()" onMouseOver="showFileMenu()">New File</a>
|
||||
<a href="javascript:top.ICEcoder.newFolder()" onMouseOver="showFileMenu()">New Folder</a>
|
||||
<a href="javascript:top.ICEcoder.newFile()" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['New File'];?></a>
|
||||
<a href="javascript:top.ICEcoder.newFolder()" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['New Folder'];?></a>
|
||||
<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">
|
||||
<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">
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
</div>
|
||||
<a href="javascript:top.ICEcoder.pasteFiles(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()" id="fmMenuPasteOption" style="display: none"><?php echo $t['Paste'];?></a>
|
||||
<div onMouseOver="ICEcoder.showFileMenu()" style="padding: 2px 0"><hr></div>
|
||||
</span>
|
||||
<a href="javascript:top.ICEcoder.deleteFile(top.ICEcoder.rightClickedFile)" onMouseOver="showFileMenu()">Delete</a>
|
||||
<a href="javascript:top.ICEcoder.openFilesFromList(top.ICEcoder.selectedFiles)" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Open'];?></a>
|
||||
<a href="javascript:top.ICEcoder.copyFiles(top.ICEcoder.selectedFiles)" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Copy'];?></a>
|
||||
<a href="javascript:top.ICEcoder.duplicateFiles(top.ICEcoder.selectedFiles)" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Duplicate'];?></a>
|
||||
<a href="javascript:top.ICEcoder.deleteFiles(top.ICEcoder.selectedFiles)" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Delete'];?></a>
|
||||
<span id="singleFileMenuItems">
|
||||
<a href="javascript:top.ICEcoder.renameFile(top.ICEcoder.rightClickedFile)" onMouseOver="showFileMenu()">Rename</a>
|
||||
<a href="javascript:window.open(top.ICEcoder.rightClickedFile)" onMouseOver="showFileMenu()">View Webpage</a>
|
||||
<a href="javascript:top.ICEcoder.renameFile(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Rename'];?></a>
|
||||
<div onMouseOver="ICEcoder.showFileMenu()" style="padding: 2px 0"><hr></div>
|
||||
<a nohref onClick="window.open(iceRoot + top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,'/'))" onMouseOver="ICEcoder.showFileMenu()" style="cursor: pointer"><?php echo $t['View Webpage'];?></a>
|
||||
</span>
|
||||
<a href="javascript:top.ICEcoder.zipIt(top.ICEcoder.rightClickedFile)" onMouseOver="showFileMenu()">Zip It!</a>
|
||||
<a href="javascript:top.ICEcoder.propertiesScreen(top.ICEcoder.rightClickedFile)" onMouseOver="showFileMenu()">Properties</a>
|
||||
<div onMouseOver="ICEcoder.showFileMenu()" style="padding: 2px 0"><hr></div>
|
||||
<?php
|
||||
if (file_exists(dirname(__FILE__)."/plugins/zip-it/index.php")) {
|
||||
echo '<a href="javascript:top.ICEcoder.zipIt(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()">Zip It!</a>'.PHP_EOL;
|
||||
};
|
||||
?>
|
||||
<a href="javascript:top.ICEcoder.downloadFile(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Download'];?></a>
|
||||
<div onMouseOver="ICEcoder.showFileMenu()" style="padding: 2px 0"><hr></div>
|
||||
<a href="javascript:top.ICEcoder.propertiesScreen(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])" onMouseOver="ICEcoder.showFileMenu()"><?php echo $t['Properties'];?></a>
|
||||
</div>
|
||||
|
||||
<div id="header" class="header" onContextMenu="return false">
|
||||
<div class="plugins" id="pluginsContainer">
|
||||
<?php echo $pluginsDisplay; ?>
|
||||
<div id="header" class="header" onContextMenu="return false"></div>
|
||||
|
||||
<div id="files" class="files" onMouseOver="ICEcoder.changeFilesW('expand')" onMouseOut="ICEcoder.changeFilesW('contract'); top.ICEcoder.hideFileMenu();" onContextMenu="return false">
|
||||
<div id="fileNav" class="fileNav">
|
||||
<ul>
|
||||
<li><a nohref onclick="top.ICEcoder.canShowFMNav=true;top.ICEcoder.showHideFileNav('show','optionsFile')" onmouseover="if(top.ICEcoder.canShowFMNav) {top.ICEcoder.showHideFileNav('show','optionsFile')}" id="optionsFileNav"><?php echo $t['File'];?></a></li>
|
||||
<li><a nohref onclick="top.ICEcoder.canShowFMNav=true;top.ICEcoder.showHideFileNav('show','optionsEdit')" onmouseover="if(top.ICEcoder.canShowFMNav) {top.ICEcoder.showHideFileNav('show','optionsEdit')}" id="optionsEditNav"><?php echo $t['Edit'];?></a></li>
|
||||
<li><a nohref onclick="top.ICEcoder.canShowFMNav=true;top.ICEcoder.showHideFileNav('show','optionsSource')" onmouseover="if(top.ICEcoder.canShowFMNav) {top.ICEcoder.showHideFileNav('show','optionsSource')}" id="optionsSourceNav"><?php echo $t['Source'];?></a></li>
|
||||
<li><a nohref onclick="top.ICEcoder.canShowFMNav=true;top.ICEcoder.showHideFileNav('show','optionsHelp')" onmouseover="if(top.ICEcoder.canShowFMNav) {top.ICEcoder.showHideFileNav('show','optionsHelp')}" id="optionsHelpNav"><?php echo $t['Help'];?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="version">v <?php echo $ICEcoder["versionNo"];?></div><img src="images/full-screen.gif" id="screenMode" class="screenModeIcon" onClick="top.ICEcoder.fullScreenSwitcher()">
|
||||
<img src="images/ice-coder.png" class="logo" onClick="ICEcoder.helpScreen()" onContextMenu="ICEcoder.settingsScreen()">
|
||||
</div>
|
||||
|
||||
<div id="files" class="files" onMouseOver="ICEcoder.changeFilesW('expand')" onMouseOut="ICEcoder.changeFilesW('contract'); top.document.getElementById('fileMenu').style.display='none';">
|
||||
<div class="account" id="account">
|
||||
<div class="accountOptions">
|
||||
<div title="Save" onClick="ICEcoder.fMIcon('save')" id="fMSave" class="save"></div>
|
||||
<div title="Open" onClick="ICEcoder.fMIcon('open')" id="fMOpen" class="open"></div>
|
||||
<div title="New File" onClick="ICEcoder.fMIcon('newFile')" id="fMNewFile" class="newFile"></div>
|
||||
<div title="New Folder" onClick="ICEcoder.fMIcon('newFolder')" id="fMNewFolder" class="newFolder"></div>
|
||||
<div title="Delete" onClick="ICEcoder.fMIcon('delete')" id="fMDelete" class="delete"></div>
|
||||
<div title="Rename" onClick="ICEcoder.fMIcon('rename')" id="fMRename" class="rename"></div>
|
||||
<div title="View" onClick="ICEcoder.fMIcon('view')" id="fMView" class="view"></div>
|
||||
|
||||
<div title="Lock" onClick="ICEcoder.lockUnlockNav()" id="fmLock" class="lock"></div>
|
||||
<div id="githubNav" class="githubNav">
|
||||
<div class="commit" id="githubNavCommit" onclick="top.ICEcoder.githubAction('commit')">Commit</div>
|
||||
<div class="selected" id="githubNavSelectedCount">Selected: 0</div>
|
||||
<div class="pull" id="githubNavPull" onclick="top.ICEcoder.githubAction('pull')">Pull</div>
|
||||
</div>
|
||||
<div class="options" id="fileOptions">
|
||||
<div id="optionsFile" class="optionsList" onmouseover="top.ICEcoder.showHideFileNav('show',this.id)" onmouseout="top.ICEcoder.showHideFileNav('hide',this.id);top.ICEcoder.canShowFMNav=false">
|
||||
<ul>
|
||||
<li><a nohref onClick="ICEcoder.newFile()"><?php echo $t['New File'];?>...</a></li>
|
||||
<li><a nohref onClick="ICEcoder.newFolder()"><?php echo $t['New Folder'];?>...</a></li>
|
||||
<li><a nohref onClick="ICEcoder.openPrompt()"><?php echo $t['Open'];?>...</a></li>
|
||||
<li><a nohref onClick="ICEcoder.saveFile()"><?php echo $t['Save'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.saveFile('saveAs')"><?php echo $t['Save As'];?>...</a></li>
|
||||
<li><a nohref onclick="ICEcoder.openPreviewWindow()"><?php echo $t['Live Preview'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.downloadFile(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Download'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.copyFiles(top.ICEcoder.selectedFiles)"><?php echo $t['Copy'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.pasteFiles(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Paste'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.deleteFiles(top.ICEcoder.selectedFiles)"><?php echo $t['Delete'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.duplicateFiles(top.ICEcoder.selectedFiles)"><?php echo $t['Duplicate'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.renameFile(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Rename'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.uploadFilesSelect(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Upload'];?>...</a></li>
|
||||
<li><a nohref onclick="ICEcoder.zipIt(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Zip'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.propertiesScreen(top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1])"><?php echo $t['Properties'];?>...</a></li>
|
||||
<li><a nohref onClick="ICEcoder.printCode()"><?php echo $t['Print'];?>...</a></li>
|
||||
<li><a nohref onClick="ICEcoder.fullScreenSwitcher()"><?php echo $t['Fullscreen toggle'];?></a></li>
|
||||
<li><a nohref onClick="ICEcoder.logout()"><?php echo $t['Logout'];?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="optionsEdit" class="optionsList" onmouseover="top.ICEcoder.showHideFileNav('show',this.id)" onmouseout="top.ICEcoder.showHideFileNav('hide',this.id);top.ICEcoder.canShowFMNav=false">
|
||||
<ul>
|
||||
<li><a nohref onclick="ICEcoder.undo()"><?php echo $t['Undo'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.redo()"><?php echo $t['Redo'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.indent('more')"><?php echo $t['Indent more'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.indent('less')"><?php echo $t['Indent less'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.autocomplete()"><?php echo $t['Autocomplete'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.lineCommentToggle()"><?php echo $t['Comment/Uncomment'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.jumpToDefinition()"><?php echo $t['Jump to Definition'];?></a></li>
|
||||
<li><a nohref onClick="ICEcoder.settingsScreen()"><?php echo $t['Settings'];?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="optionsSource" class="optionsList" onmouseover="top.ICEcoder.showHideFileNav('show',this.id)" onmouseout="top.ICEcoder.showHideFileNav('hide',this.id);top.ICEcoder.canShowFMNav=false">
|
||||
<ul>
|
||||
<li><a nohref onclick="ICEcoder.refreshFileManager()">Localhost</a></li>
|
||||
<li><a nohref onclick="ICEcoder.githubManager()">GitHub</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('SVN integration coming soon')">SVN</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('Bitbucket integration coming soon\n\nCan you help with this? Get involved at icecoder.net')">Bitbucket</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('Amazon AWS integration coming soon\n\nCan you help with this? Get involved at icecoder.net')">Amazon AWS</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('Dropbox integration coming soon\n\nCan you help with this? Get involved at icecoder.net')">Dropbox</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('FTP integration coming soon\n\nCan you help with this? Get involved at icecoder.net')">FTP</a></li>
|
||||
<li><a nohref onclick="ICEcoder.message('SSH integration coming soon\n\nCan you help with this? Get involved at icecoder.net')">SSH</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="optionsHelp" class="optionsList" onmouseover="top.ICEcoder.showHideFileNav('show',this.id)" onmouseout="top.ICEcoder.showHideFileNav('hide',this.id);top.ICEcoder.canShowFMNav=false">
|
||||
<ul>
|
||||
<li><a nohref onclick="ICEcoder.showManual('<?php echo $ICEcoder["versionNo"];?>')"><?php echo $t['Manual'];?></a></li>
|
||||
<li><a nohref onClick="ICEcoder.helpScreen()"><?php echo $t['Shortcuts'];?></a></li>
|
||||
<li><a nohref onclick="ICEcoder.searchForSelected()"><?php echo $t['Search for selected'];?></a></li>
|
||||
<li><a href="https://icecoder.net" target="_blank">ICEcoder <?php echo $t['website'];?></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<iframe id="filesFrame" class="frame" name="ff" src="files.php" style="opacity: 0" onLoad="this.style.opacity='1'"></iframe>
|
||||
<iframe id="filesFrame" class="frame" name="ff" src="files.php" style="opacity: 0" onLoad="this.style.opacity='1';this.contentWindow.onscroll=function(){top.ICEcoder.mouseDown=false}"></iframe>
|
||||
<div class="serverMessage" id="serverMessage"></div>
|
||||
</div>
|
||||
|
||||
<div id="editor" class="editor">
|
||||
<div id="tabsBar" class="tabsBar" onContextMenu="return false">
|
||||
<a nohref onClick="top.ICEcoder.closeAllTabs()"><img src="images/nav-close-all.gif" class="closeAllTabs" title="<?php echo $t['Close all tabs'];?>"></a>
|
||||
<a nohref onClick="top.ICEcoder.alphaTabs()"><img src="images/nav-alpha.png" class="alphaTabs" title="<?php echo $t['Alphabetize tabs'];?>"></a>
|
||||
<?php
|
||||
for ($i=1;$i<=10;$i++) {
|
||||
echo '<div id="tab'.$i.'" class="tab" draggable="true" onClick="ICEcoder.canSwitchTabs ? ICEcoder.switchTab('.$i.') : ICEcoder.canSwitchTabs=true"></div>';
|
||||
for ($i=1;$i<=100;$i++) {
|
||||
echo '<div id="tab'.$i.'" class="tab" onMouseDown="ICEcoder.canSwitchTabs ? ICEcoder.switchTab(parseInt(this.id.slice(3),10)) : ICEcoder.canSwitchTabs=true; thisColor=top.ICEcoder.tabFGselected; if (!top.ICEcoder.overCloseLink) {ICEcoder.tabDragStart(parseInt(this.id.slice(3),10))}; if (event.button==1) {ICEcoder.closeTab(parseInt(this.id.slice(3),10)); return false};" onMouseOver="thisColor=this.style.color;this.style.color=top.ICEcoder.tabFGselected" onMouseOut="this.style.color=thisColor"></div>';
|
||||
}
|
||||
?><div class="newTab" onClick="ICEcoder.newTab()"><img src="images/nav-new.png"></div>
|
||||
?><div class="newTab" onClick="ICEcoder.newTab()" id="newTab">+</div>
|
||||
</div>
|
||||
<div id="findBar" class="findBar" onContextMenu="return false">
|
||||
<form name="findAndReplace">
|
||||
<form name="findAndReplace" onSubmit="ICEcoder.findReplace(top.document.getElementById('find').value,false,true);return false">
|
||||
<div class="findReplace">
|
||||
<div class="findText">Find</div>
|
||||
<input type="text" name="find" value="" id="find" class="textbox find" onKeyUp="ICEcoder.findReplace('find',true,false)">
|
||||
<div class="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)">
|
||||
|
||||
<select name="connector" onChange="ICEcoder.findReplaceOptions()">
|
||||
<option>in</option>
|
||||
<option>and</option>
|
||||
</select>
|
||||
<div class="replaceText" id="rText" style="display: none">
|
||||
<select name="replaceAction" class="replaceAction">
|
||||
<option>replace</option>
|
||||
<option>replace all</option>
|
||||
<div class="selectWrapper" style="width: 41px">
|
||||
<select name="connector" onChange="ICEcoder.findReplaceOptions()" style="width: 40px; margin-top: 4px">
|
||||
<option><?php echo $t['in'];?></option>
|
||||
<option><?php echo $t['and'];?></option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="replaceText" id="rText" style="display: none">
|
||||
<div class="selectWrapper" style="width: 75px; overflow: visible">
|
||||
<select name="replaceAction" style="width: 72px; margin-top: -2px">
|
||||
<option><?php echo $t['replace'];?></option>
|
||||
<option><?php echo $t['replace all'];?></option>
|
||||
</select>
|
||||
</div>
|
||||
with
|
||||
</div>
|
||||
<input type="text" name="replace" value="" id="replace" class="textbox replace" style="display: none">
|
||||
<div class="targetText" id="rTarget" style="display: none">in</div>
|
||||
<select name="target" onChange="ICEcoder.updateResultsDisplay(this.value=='this document' ? 'show' : 'hide')">
|
||||
<option>this document</option>
|
||||
<option>open documents</option>
|
||||
<option>all files</option>
|
||||
<option>all filenames</option>
|
||||
</select>
|
||||
<input type="button" name="submit" value=">>" class="submit" onClick="ICEcoder.findReplace('findReplace',false,true)">
|
||||
<div class="selectWrapper" style="width: 104px">
|
||||
<select name="target" onChange="ICEcoder.updateResultsDisplay(this.value=='this document' ? 'show' : 'hide')" style="width: 101px; margin-top: 4px; margin-left: 2px">
|
||||
<option><?php echo $t['this document'];?></option>
|
||||
<option><?php echo $t['open documents'];?></option>
|
||||
<option><?php echo $t['all files'];?></option>
|
||||
<option><?php echo $t['all filenames'];?></option>
|
||||
</select>
|
||||
</div>
|
||||
<input type="submit" name="submit" value=">>" class="submit">
|
||||
<div class="results" id="results"></div>
|
||||
</div>
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
<form onSubmit="return ICEcoder.goToLine()">
|
||||
<div class="codeAssist"><input type="checkbox" name="codeAssist" id="codeAssist" checked onClick="top.ICEcoder.codeAssistToggle()">Code Assist</div>
|
||||
<div class="goLine">Go to Line<input type="text" name="goToLine" value="" id="goToLineNo" class="textbox goToLine">
|
||||
<div class="codeAssist" title="<?php echo $t['Turn on/off...'];?>">
|
||||
<input type="checkbox" name="codeAssist" id="codeAssist" class="codeAssistCheckbox" <?php if ($ICEcoder['codeAssist']) {echo 'checked ';};?>>
|
||||
<span class="codeAssistDisplay" id="codeAssistDisplay" style="background-position: <?php echo $ICEcoder['codeAssist'] ? "0" : "-16";?> 0" onClick="top.ICEcoder.codeAssistToggle()"></span> <?php echo $t['Code Assist'];?>
|
||||
</div>
|
||||
<div class="goLine"><?php echo $t['Go to Line'];?> <input type="text" name="goToLine" value="" id="goToLineNo" class="textbox goToLine">
|
||||
<div class="view" title="<?php echo $t['View'];?>" onClick="top.ICEcoder.openPreviewWindow()" id="fMView"></div>
|
||||
<div class="bug" title="<?php echo $t['Bug reporting not active'];?>" onClick="top.ICEcoder.openBugReport()" id="bugIcon"></div>
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
</div>
|
||||
<iframe name="contentFrame" id="content" src="editor.php" class="code">
|
||||
</iframe>
|
||||
<iframe name="contentFrame" id="content" src="editor.php" class="code"></iframe>
|
||||
</div>
|
||||
|
||||
<div class="footer" id="footer" onContextMenu="return false">
|
||||
<div class="nesting" id="nestValid">Nesting OK</div>
|
||||
<div class="nestLoc">Cursor nest location</div>
|
||||
<div class="nestDisplay" id="nestDisplay"></div>
|
||||
<div class="charDisplay" id="charDisplay"><span id="char"></span></div>
|
||||
<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="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>
|
||||
|
||||
<script>
|
||||
|
||||
425
lang/chinese-simplified.php
Normal file
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
// Chinese language translation
|
||||
// by: @lzh370 (GitHub)
|
||||
// lzh370@qq.com
|
||||
|
||||
// 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>点击图标<br>求助 &<br>使用信息</b>",
|
||||
"server" => "服务器",
|
||||
"Server name, OS..." => "服务器名称, OS & IP:",
|
||||
"Root" => "根目录:",
|
||||
"ICEcoder root" => "ICEcoder 根目录:",
|
||||
"PHP version" => "PHP 版本:",
|
||||
"Date & time" => "日期 & 时间:",
|
||||
"your device" => "你的设备",
|
||||
"Browser" => "浏览器:",
|
||||
"Your IP" => "你的 IP:",
|
||||
"files" => "文件",
|
||||
"Last 10 files..." => "最后10个打开的文件:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "测试套件",
|
||||
"Run unit tests" => "运行单元测试",
|
||||
"dev mode" => "开发模式",
|
||||
"Status" => "状态",
|
||||
"Using" => "使用",
|
||||
"You can switch..." => "你可以在 lib/config__settings.php 中设置开发模式开关",
|
||||
"results" => "结果"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "锁定",
|
||||
"Refresh" => "刷新",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "更新信息",
|
||||
"now available" => "现在可以",
|
||||
"Your version is" => "你的版本是",
|
||||
"Update now" => "现在更新",
|
||||
"You have some..." => "你有一些未保存的更改",
|
||||
"working" => "载入中",
|
||||
"Color picker" => "颜色选择器",
|
||||
"New File" => "新建文件",
|
||||
"New Folder" => "新建文件夹",
|
||||
"Upload File(s)" => "上传文件",
|
||||
"Paste" => "粘贴",
|
||||
"Open" => "打开",
|
||||
"Copy" => "复制",
|
||||
"Duplicate" => "副本",
|
||||
"Delete" => "删除",
|
||||
"Rename" => "重命名",
|
||||
"View Webpage" => "预览网页",
|
||||
"Download" => "下载",
|
||||
"Properties" => "属性",
|
||||
"File" => "文件",
|
||||
"Edit" => "编辑",
|
||||
"Remote" => "远程",
|
||||
"Help" => "帮助",
|
||||
"Save" => "保存",
|
||||
"Save As" => "另存为",
|
||||
"Live Preview" => "实时预览",
|
||||
"Upload" => "上传",
|
||||
"Zip" => "压缩",
|
||||
"Print" => "打印",
|
||||
"Fullscreen toggle" => "全屏切换",
|
||||
"Logout" => "退出",
|
||||
"Undo" => "撤销",
|
||||
"Redo" => "重做",
|
||||
"Indent more" => "增加缩进",
|
||||
"Indent less" => "减少缩进",
|
||||
"Autocomplete" => "自动完成",
|
||||
"Comment/Uncomment" => "注释 / 清除注释",
|
||||
"Jump to Definition" => "跳转至指定行",
|
||||
"Manual" => "手册",
|
||||
"Shortcuts" => "快捷键",
|
||||
"Settings" => "设置",
|
||||
"Search for selected" => "搜索选择",
|
||||
"website" => "网站",
|
||||
"Close all tabs" => "关闭所有选项卡",
|
||||
"Alphabetize tabs" => "按字母顺序排列的选项卡",
|
||||
// "Find" => "搜索",
|
||||
// "in" => "in",
|
||||
// "and" => "and",
|
||||
// "replace" => "替换",
|
||||
// "replace all" => "替换所有",
|
||||
// "this document" => "当前文件",
|
||||
// "open documents" => "打开的文件",
|
||||
// "all files" => "所有文件",
|
||||
// "all filenames" => "所有文件名",
|
||||
"Turn on/off..." => "开启/关闭代码辅助",
|
||||
"Code Assist" => "代码辅助",
|
||||
"Go to Line" => "转到行",
|
||||
"View" => "预览",
|
||||
"Bug reporting not active" => "错误报告没有激活"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "搜索到:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "抱歉",
|
||||
"does not seem..." => "服务器上不存在",
|
||||
"Sorry, could not..." => "抱歉, 不能得到的内容",
|
||||
"Sorry, cannot create..." => "抱歉, 不能创建文件夹",
|
||||
"Sorry, cannot copy" => "抱歉, 不能复制",
|
||||
"into" => "到",
|
||||
"Uploaded file(s) OK" => "上传文件完成",
|
||||
"Sorry, cannot upload" => "抱歉, 不能上传",
|
||||
"Sorry, cannot upload..." => "抱歉, 在演示模式不能上传文件",
|
||||
"Sorry, cannot rename" => "抱歉, 不能重命名",
|
||||
"Maybe public write..." => "也许父文件夹也需要写入权限?",
|
||||
"Sorry, cannot move" => "抱歉, 不能移动",
|
||||
"Sorry, cannot save" => "抱歉, 不能保存",
|
||||
"Sorry, cannot replace..." => "抱歉, 目标不能替换文本",
|
||||
"Sorry, cannot change..." => "抱歉, 目标不能更改权限",
|
||||
"Sorry, cannot delete..." => "抱歉, 不能删除根级别ROOT",
|
||||
"Sorry, cannot delete" => "抱歉, 不能删除",
|
||||
"Sorry, this file..." => "抱歉, 此文件已更改, 不能保存",
|
||||
"Reload this file..." => "重新加载该文件, 你的版本复制到一个新文件?",
|
||||
"There was a..." => "这些代码还没有完全准备好. 所以 ICEcoder 需要再次重新加载.",
|
||||
"displayed at" => "显示在",
|
||||
"Enter filename to..." => "输入文件名并保存到",
|
||||
"That file exists..." => "该文件已存在, 要覆盖吗?",
|
||||
"Saving" => "正在保存"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "本地文件与 GitHub repo 没有明显差异. 切换回普通模式?",
|
||||
"Sorry, there was..." => "抱歉, 这里有一个错误, 代码:",
|
||||
"Your local folder..." => "你的本地文件夹是空的, 你是否想克隆"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "抱歉, 不能创建目录到",
|
||||
"Cannot update config..." => "不能更新配置文件. 请对",
|
||||
"and try again" => "增加写入权限, 并再次尝试",
|
||||
"saving github paths" => "正在保存 github 路径...",
|
||||
"github paths" => "github 路径",
|
||||
"Choose existing path" => "选择现有路径",
|
||||
"Local path" => "本地路径",
|
||||
"Remote GitHub path" => "远程 GitHub 路径",
|
||||
"Choose" => "选择",
|
||||
"Set local and..." => "设置本地路径和远程路径需要去除空格",
|
||||
"Update" => "更新",
|
||||
"Add new path" => "增加新路径",
|
||||
"Add" => "增加",
|
||||
"Usage Info" => "使用方法:",
|
||||
"Enter relative local..." => "输入本地相对路径 (/server/myfiles) 和 GitHub 绝对路径 (https://github.com/user/repo 或 https://github.com/user/repo/tree/branch 各分支), 按照示例. 完成后你就建立了这两个地点的源路径, 它是成对数存在.",
|
||||
"You can then..." => "你可以选择一个路径作为 ICEcoder 的根路径.",
|
||||
"The file manager..." => "文件管理器右侧会显示一个新的GitHub图标, 您可以点击执行, 会自动校验并显示本地与github源之间的差异. 这些差别可以被提交并推送到在GitHub上的远程路径或克隆到你的本地路径, 用来同步您的文件.",
|
||||
"If you want..." => "如果你想设置的另一个根路径, 可以在 帮助 > 设置窗口 中进行设置."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "抱歉, 您的服务器没有启用 OpenSSL 的 PHP 实例, 所以 https 目前不可用. GitHub 的数据传输必须要用 https 连接, 请修改 php.ini 设置, 重启你的服务器并重新尝试"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "错误的 CSRF token. 请在 https://github.com/mattpass/ICEcoder 报告错误信息, 以便我们修复它."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "快捷键",
|
||||
"Within document" => "文档",
|
||||
"On Tabs" => "选项卡",
|
||||
"Within file manager" => "文件管理器",
|
||||
"Anywhere" => "其他",
|
||||
"Space" => "空格",
|
||||
"Click" => "单击",
|
||||
"or" => "或",
|
||||
"Left click" => "左键单击",
|
||||
"Middle click" => "中键单击",
|
||||
"Double click tap..." => "双击 / 点击 (移动端)",
|
||||
"Right click" => "右键单击",
|
||||
"Middle scrollwheel" => "中间滚轮滚动",
|
||||
"Drag" => "拖动",
|
||||
"Autocomplete add snippet" => "自动完成 / 添加片段",
|
||||
"Multiple select" => "多选",
|
||||
"Move line up" => "向上移动行",
|
||||
"Move line down" => "向下移动行",
|
||||
"Duplicate lines" => "复制行",
|
||||
"Remove lines" => "删除行",
|
||||
"Insert line before" => "前插入行",
|
||||
"Insert line after" => "后插入行",
|
||||
"Search for selected" => "搜索选择",
|
||||
"Jump to definition" => "跳转到 / 跳转回",
|
||||
"Comment uncomment" => "注释 / 清除注释",
|
||||
"Insert tab indent" => "插入tab / 插入选择",
|
||||
"Wrap with div" => "封装 <div>",
|
||||
"Wrap with span" => "封装 <span>",
|
||||
"Wrap unwrap p" => "封装 / 撤销封装 <p>",
|
||||
"Wrap unwrap a" => "封装 / 撤销封装 <a>",
|
||||
"Wrap unwrap b" => "封装 / 撤销封装 <b>",
|
||||
"Wrap unwrap i" => "封装 / 撤销封装 <i>",
|
||||
"Wrap unwrap strong" => "封装 / 撤销封装 <strong>",
|
||||
"Wrap unwrap em" => "封装 / 撤销封装 <em>",
|
||||
"Wrap unwrap li" => "封装 / 撤销封装 <li>",
|
||||
"Wrap unwrap h1..." => "封装 / 撤销封装 <h1> - <h3>",
|
||||
"End line with..." => "换行 <br>",
|
||||
"Close tab" => "关闭选项卡",
|
||||
"Select file folder" => "选择文件 / 文件夹",
|
||||
"Open file" => "打开文件",
|
||||
"Range select" => "范围选择",
|
||||
"Options for selected" => "所选的选项",
|
||||
"Delete selected" => "删除已选",
|
||||
"Next previous tab" => "下一个 / 上一个 选项卡",
|
||||
"Next tab" => "下一个选项卡",
|
||||
"Previous tab" => "上一个选项卡",
|
||||
"New tab" => "新建选项卡",
|
||||
"Close current tab" => "关闭当前选项卡",
|
||||
"Open file prompt" => "打开文件的提示",
|
||||
"Find" => "搜索",
|
||||
"Focus on Go..." => "光标定位到转到行的输入框",
|
||||
"Save" => "保存",
|
||||
"Save as" => "另存为...",
|
||||
"View webpage" => "预览网页",
|
||||
"Contract expand file..." => "收缩 / 扩展文件管理器",
|
||||
"Fold unfold current..." => "折叠 / 展开当前行",
|
||||
"Refocus on document" => "光标重新聚焦于文档",
|
||||
"Cancel tasks" => "取消任务"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "搜索中没有选中的文本",
|
||||
"Creating Folder" => "正在创建文件夹",
|
||||
"Sorry you can..." => "抱歉, 只能同时打开100个文件!",
|
||||
"Opening File" => "正在打开文件",
|
||||
"Enter relative file..." => "输入本地相对路径 (前缀 /) 或远程 URL",
|
||||
"Getting" => "正在获取",
|
||||
"Please enter the..." => "请输入新的名称为",
|
||||
"Renaming to" => "正在重命名",
|
||||
"Moving to" => "正在移动到",
|
||||
"Deleting File" => "正在删除文件",
|
||||
"Pasting File" => "正在粘贴文件",
|
||||
"Sorry cannot paste..." => "抱歉, 无法粘贴到根路径",
|
||||
"Nothing to paste..." => "粘贴失败, 请先复制一个文件 / 文件夹!",
|
||||
"Replacing text in" => "正在替换文本",
|
||||
"Cancelled tasks" => "取消任务",
|
||||
"Open previous files" => "打开以前的文件?",
|
||||
"Please enter your..." => "请输入您的 GitHub token (允许使用个人令牌或客户端令牌). 可以查看 Github Auth Token 的帮助 > 更多信息在设置窗口",
|
||||
"This will compare..." => "将比较和显示你的本地目录和 GitHub repo 之间的差异. 确定吗?",
|
||||
"Please note for..." => "请注意: 需要更新才能正常工作, 你需要为所有 ICEcoder 文件和文件夹设置写入和删除权限. 如果您需要恢复 ICEcoder 到这个版本, 你可以在 /tmp 目录找到它们. 点击 OK 继续使用自动升级或点击 cancel 访问 ICEcoder 网站, 您也可以到 grab 的项目首页下载 zip 来进行手动更新.",
|
||||
"You can start..." => "你可以在 帮助 > 设置中启动错误报告",
|
||||
"Error cannot find..." => "错误: 无法找到/进入错误文件路径",
|
||||
"No new errors..." => "没有新的错误被找到",
|
||||
"You have made..." => "您已做的更改未保存。您确定要关闭它而不保存吗?",
|
||||
"Close all tabs" => "是否关闭所有选项卡?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "设置密码",
|
||||
"login" => "登陆",
|
||||
"To disable registration..." => "要禁用注册模式, 请打开设置或打开文件 lib/config___settings.php 并更改 enableRegistration 为 false , 并重新载入本页面",
|
||||
"Registration mode enabled" => "注册模式已启用",
|
||||
"auto-check for updates" => "自动检测更新",
|
||||
"To put into..." => "要禁用多用户模式, 请打开设置或打开文件 lib/config___settings.php 并更改 multiUser 为 true , 并重新载入本页面",
|
||||
"multi-user" => "多用户"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "重命名所有",
|
||||
"replace all" => "全部替换",
|
||||
"document" => "文档",
|
||||
"Found" => "找到",
|
||||
"times" => "时间",
|
||||
"replace" => "替换",
|
||||
"file folder" => "文件/文件夹",
|
||||
"rename to" => "重命名为",
|
||||
"rename" => "重命名",
|
||||
"file" => "文件",
|
||||
"No matches found" => "没有找到匹配",
|
||||
"selected" => "选择",
|
||||
"found in" => "查询结果在",
|
||||
"Replaced" => "已替换"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder 需要重新加载,这个插件才可以使用。现在刷新吗?",
|
||||
"saving plugins" => "正在保存插件...",
|
||||
"Cannot update config..." => "不能更新配置文件. 请为",
|
||||
"and try again" => "设置写入权限并刷新重试",
|
||||
"couldnt delete dir" => "不能删除目录",
|
||||
"couldnt delete file" => "不能删除文件",
|
||||
"plugins" => "插件",
|
||||
"Guide to writing..." => "编写插件指南",
|
||||
"Manage Installed" => "管理已安装",
|
||||
"URL" => "URL",
|
||||
"Target" => "目标",
|
||||
"Timer" => "定时器",
|
||||
"Update" => "更新",
|
||||
"Install" => "安装",
|
||||
"Uninstall" => "卸载",
|
||||
"Reload after install..." => "安装后需要刷新"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "属性",
|
||||
"Size" => "尺寸",
|
||||
"Modified" => "修改",
|
||||
"Last access" => "最近访问",
|
||||
"Type" => "类型",
|
||||
"Readable Writeable" => "可读 / 可写",
|
||||
"Relative path" => "相对路径",
|
||||
"Absolute path" => "绝对路径",
|
||||
"Contains" => "包含",
|
||||
"Permissions" => "权限",
|
||||
"Owner" => "所有者",
|
||||
"Group" => "组",
|
||||
"Public" => "公众",
|
||||
"Read" => "读取",
|
||||
"Write" => "写入",
|
||||
"Execute" => "执行",
|
||||
"Change to" => "更改为",
|
||||
"update" => "更新"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "你的文档不是UTF-8编码, 它将被转换"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "不能更新配置文件. 请为",
|
||||
"and try again" => "增加写入权限并再次尝试"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "设置",
|
||||
"version" => "版本",
|
||||
"website" => "网站",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "codemirror 目录",
|
||||
"codemirror version" => "codemirror 版本",
|
||||
"file manager root" => "文件管理器的根目录ROOT",
|
||||
"Free to use..." => "您可以自由使用它, 无论商业与否, 只需让我知道有任何很酷的使用或有定制的:)同样我们无任何责任和任何担保, 使用所有的责任是你的. 很多个人和公司为 ICEcoder 作出过贡献, 在此篇幅有限无法一一列举, 请访问贡献者详细列表",
|
||||
"functionality" => "功能",
|
||||
"check for updates..." => "启动时检查更新",
|
||||
"auto open last..." => "启动时自动载入最后打开的文件",
|
||||
"when finding in..." => "在查找文件时, 排除",
|
||||
"assisting" => "辅助",
|
||||
"code assist" => "代码辅助",
|
||||
"visible tabs" => "缩进线可见",
|
||||
"locked nav" => "锁定导航",
|
||||
"tag wrapper command" => "标签封装命令",
|
||||
"auto-complete on" => "打开自动完成",
|
||||
"security" => "安全",
|
||||
"new password" => "新密码",
|
||||
"8 chars min" => "最少8个字符",
|
||||
"confirm password" => "确认密码",
|
||||
"banned files/folders" => "禁止文件 / 文件夹",
|
||||
"banned paths" => "禁止路径",
|
||||
"ip addresses" => "ip 地址",
|
||||
"Slash prefixed comma..." => "斜线前缀, 以半角逗号分隔",
|
||||
"Comma delimited" => "以半角逗号分隔",
|
||||
"style" => "样式",
|
||||
"theme" => "主题",
|
||||
"line wrapping" => "换行",
|
||||
"indent type" => "缩进类型",
|
||||
"indent size" => "缩进大小",
|
||||
"font size" => "字体大小",
|
||||
"layout" => "布局",
|
||||
"plugin panel aligned" => "插件板对齐",
|
||||
"file manager" => "文件管理器",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "斜线前缀",
|
||||
"bug reporting" => "错误报告",
|
||||
"check in files" => "检查文件",
|
||||
"every" => "任何",
|
||||
"secs getting last" => "秒, 最后得到",
|
||||
"lines" => "行",
|
||||
"multi-user" => "多用户",
|
||||
"Make sure you..." => "确保你没有把自己锁了",
|
||||
"Registration" => "启用注册",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "如需要得到差异列表, 提交您 GitHub 上托管的 repo 等. 如果你还没有一个, 您可以使用:".PHP_EOL.PHP_EOL.
|
||||
"- 个人访问令牌 (https://help.github.com/articles/creating-an-access-token-for-command-line-use), 或".PHP_EOL.
|
||||
"- 完整的客户端/机密双令牌 (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"我们不建议您在此处设置您的令牌, 更安全的方式是当ICEcoder要求输入时将其只保存在会话中.".PHP_EOL.PHP_EOL.
|
||||
"然而, 如果你在一个值得信赖和安全的环境中工作, 把它设置在这里是更有效的.",
|
||||
"Sorry cannot commit..." => "抱歉, 设置不能在演示模式下提交",
|
||||
"update" => "更新"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "不能更新配置文件. 请为",
|
||||
"and try again" => " 增加写入权限并重新尝试",
|
||||
"and press refresh" => "增加写入权限并刷新"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "更新似乎是成功的"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
425
lang/chinese-traditional.php
Normal file
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
// Traditional Chinese language translation
|
||||
// by: @lzh370 (GitHub)
|
||||
// lzh370@qq.com
|
||||
|
||||
// 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>點擊圖標<br>求助 &<br>實用信息</b>",
|
||||
"server" => "伺服器",
|
||||
"Server name, OS..." => "伺服器名稱, OS & IP:",
|
||||
"Root" => "根目錄:",
|
||||
"ICEcoder root" => "ICEcoder 根目錄:",
|
||||
"PHP version" => "PHP 版本:",
|
||||
"Date & time" => "日期 & 時間:",
|
||||
"your device" => "你的設備",
|
||||
"Browser" => "瀏覽器:",
|
||||
"Your IP" => "你的 IP:",
|
||||
"files" => "文件",
|
||||
"Last 10 files..." => "最後10個打開的文件:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "測試套件",
|
||||
"Run unit tests" => "運行單元測試",
|
||||
"dev mode" => "開發模式",
|
||||
"Status" => "狀態",
|
||||
"Using" => "使用",
|
||||
"You can switch..." => "你可以在 lib/config__settings.php 中設置開發模式開關",
|
||||
"results" => "結果"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "鎖定",
|
||||
"Refresh" => "刷新",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "更新信息",
|
||||
"now available" => "現在可以",
|
||||
"Your version is" => "你的版本是",
|
||||
"Update now" => "現在更新",
|
||||
"You have some..." => "你有一些未保存的更改",
|
||||
"working" => "裝載中",
|
||||
"Color picker" => "顔色選擇器",
|
||||
"New File" => "新建文件",
|
||||
"New Folder" => "新建文件夾",
|
||||
"Upload File(s)" => "上傳文件",
|
||||
"Paste" => "粘貼",
|
||||
"Open" => "打開",
|
||||
"Copy" => "複製",
|
||||
"Duplicate" => "副本",
|
||||
"Delete" => "刪除",
|
||||
"Rename" => "重命名",
|
||||
"View Webpage" => "預覽網頁",
|
||||
"Download" => "下載",
|
||||
"Properties" => "屬性",
|
||||
"File" => "文件",
|
||||
"Edit" => "編輯",
|
||||
"Remote" => "遠程",
|
||||
"Help" => "幫助",
|
||||
"Save" => "保存",
|
||||
"Save As" => "另存爲",
|
||||
"Live Preview" => "實時預覽",
|
||||
"Upload" => "上傳",
|
||||
"Zip" => "壓縮",
|
||||
"Print" => "打印",
|
||||
"Fullscreen toggle" => "全屏切換",
|
||||
"Logout" => "登出",
|
||||
"Undo" => "撤銷",
|
||||
"Redo" => "重做",
|
||||
"Indent more" => "增加縮進",
|
||||
"Indent less" => "减少縮進",
|
||||
"Autocomplete" => "自動完成",
|
||||
"Comment/Uncomment" => "注釋 / 清除注釋",
|
||||
"Jump to Definition" => "跳轉指定行",
|
||||
"Manual" => "手冊",
|
||||
"Shortcuts" => "快捷鍵",
|
||||
"Settings" => "選項",
|
||||
"Search for selected" => "搜索選項",
|
||||
"website" => "網站",
|
||||
"Close all tabs" => "關閉所有選項卡",
|
||||
"Alphabetize tabs" => "按字母順序排序選項卡",
|
||||
// "Find" => "檢索",
|
||||
// "in" => "in",
|
||||
// "and" => "and",
|
||||
// "replace" => "替換",
|
||||
// "replace all" => "替換所有",
|
||||
// "this document" => "當前文件",
|
||||
// "open documents" => "打開的文件",
|
||||
// "all files" => "所有文件",
|
||||
// "all filenames" => "所有文件名",
|
||||
"Turn on/off..." => "開啓/關閉代碼輔助",
|
||||
"Code Assist" => "代碼輔助",
|
||||
"Go to Line" => "轉到行",
|
||||
"View" => "預覽",
|
||||
"Bug reporting not active" => "錯誤報告沒有激活"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "檢索到:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "抱歉",
|
||||
"does not seem..." => "服務器上不存在",
|
||||
"Sorry, could not..." => "抱歉, 不能獲取内容",
|
||||
"Sorry, cannot create..." => "抱歉, 不能創建文件夾",
|
||||
"Sorry, cannot copy" => "抱歉, 不能複製",
|
||||
"into" => "到",
|
||||
"Uploaded file(s) OK" => "上傳文件完成",
|
||||
"Sorry, cannot upload" => "抱歉, 不能上傳",
|
||||
"Sorry, cannot upload..." => "抱歉, 演示模式不允許上傳文件",
|
||||
"Sorry, cannot rename" => "抱歉, 不能重命名",
|
||||
"Maybe public write..." => "也許父文件夾也需要寫入權限?",
|
||||
"Sorry, cannot move" => "抱歉, 不能移動",
|
||||
"Sorry, cannot save" => "抱歉, 不能保存",
|
||||
"Sorry, cannot replace..." => "抱歉, 目標不能替換文本",
|
||||
"Sorry, cannot change..." => "抱歉, 目標不能更改權限",
|
||||
"Sorry, cannot delete..." => "抱歉, 不能刪除根級別ROOT",
|
||||
"Sorry, cannot delete" => "抱歉, 不能刪除",
|
||||
"Sorry, this file..." => "抱歉, 此文件已更改, 不能保存",
|
||||
"Reload this file..." => "重新加載該文件, 你的版本複製到一個新文件?",
|
||||
"There was a..." => "這些代碼還沒有準備好. 因此 ICEcoder 需要重新加載.",
|
||||
"displayed at" => "顯示在",
|
||||
"Enter filename to..." => "輸入文件名并保存到",
|
||||
"That file exists..." => "該文件已存在, 要覆蓋嗎?",
|
||||
"Saving" => "正在保存"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "本地文件與 GitHub repo 沒有明顯差異. 切換回普通模式?",
|
||||
"Sorry, there was..." => "抱歉, 這裏有一個錯誤, 代碼:",
|
||||
"Your local folder..." => "你的本地文件夾是空的, 你是否想克隆"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "抱歉, 不能創建目錄到",
|
||||
"Cannot update config..." => "不能更新配置文件. 請對",
|
||||
"and try again" => "增加寫入權限, 并再次嘗試",
|
||||
"saving github paths" => "正在保存 github 路徑...",
|
||||
"github paths" => "github 路徑",
|
||||
"Choose existing path" => "選擇現有路徑",
|
||||
"Local path" => "本地路徑",
|
||||
"Remote GitHub path" => "遠程 GitHub 路徑",
|
||||
"Choose" => "選擇",
|
||||
"Set local and..." => "設置本地路徑和遠程路徑需要去除空格",
|
||||
"Update" => "更新",
|
||||
"Add new path" => "增加新路徑",
|
||||
"Add" => "增加",
|
||||
"Usage Info" => "使用方法",
|
||||
"Enter relative local..." => "輸入本地相對路徑 (/server/myfiles) 和 GitHub 絕對路徑 (https://github.com/user/repo 或 https://github.com/user/repo/tree/branch 各分隻), 按照示例. 完成后你就建立了這兩個源路徑, 它應該成對數存在.",
|
||||
"You can then..." => "你可以選擇一個路徑作爲 ICEcoder 的根路徑.",
|
||||
"The file manager..." => "文件管理器右側會顯示一個新的GitHub圖標, 您可以點擊執行, 會自動校驗并顯示本地與github源之間的差異. 這些差異可以提交和推送到GitHub上的遠程路徑或克隆到您的本地路徑, 用來同步您的文檔.",
|
||||
"If you want..." => "如果您想設置一個根路徑, 可以在 幫助 > 設置窗口 中進行設置."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "抱歉, 您的服務器沒有啓用 OpenSSL 的 PHP 實例, 因此 https 目前不可用. GitHub 的數據傳輸必須要用 https 連接, 請修改 php.ini 設置, 重啓您的服務器并重新嘗試"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "錯誤的 CSRF token. 請在 https://github.com/mattpass/ICEcoder 報告錯誤信息, 以便我們修復它."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "快捷鍵",
|
||||
"Within document" => "文檔",
|
||||
"On Tabs" => "選項卡",
|
||||
"Within file manager" => "文件管理器",
|
||||
"Anywhere" => "其他",
|
||||
"Space" => "空格",
|
||||
"Click" => "單擊",
|
||||
"or" => "或",
|
||||
"Left click" => "左鍵單擊",
|
||||
"Middle click" => "中鍵單擊",
|
||||
"Double click tap..." => "雙擊 / 手指點擊 (移動端)",
|
||||
"Right click" => "右鍵單擊",
|
||||
"Middle scrollwheel" => "中間滾輪滾動",
|
||||
"Drag" => "拖動",
|
||||
"Autocomplete add snippet" => "自動完成 / 添加片段",
|
||||
"Multiple select" => "多選",
|
||||
"Move line up" => "向上移動行",
|
||||
"Move line down" => "向下移動行",
|
||||
"Duplicate lines" => "復制行",
|
||||
"Remove lines" => "刪除行",
|
||||
"Insert line before" => "前插入行",
|
||||
"Insert line after" => "后插入行",
|
||||
"Search for selected" => "搜索選擇",
|
||||
"Jump to definition" => "跳轉到 / 跳轉回",
|
||||
"Comment uncomment" => "注釋 / 清楚注釋",
|
||||
"Insert tab indent" => "插入tab / 插入選擇",
|
||||
"Wrap with div" => "封裝 <div>",
|
||||
"Wrap with span" => "封裝 <span>",
|
||||
"Wrap unwrap p" => "封裝 / 撤銷封裝 <p>",
|
||||
"Wrap unwrap a" => "封裝 / 撤銷封裝 <a>",
|
||||
"Wrap unwrap b" => "封裝 / 撤銷封裝 <b>",
|
||||
"Wrap unwrap i" => "封裝 / 撤銷封裝 <i>",
|
||||
"Wrap unwrap strong" => "封裝 / 撤銷封裝 <strong>",
|
||||
"Wrap unwrap em" => "封裝 / 撤銷封裝 <em>",
|
||||
"Wrap unwrap li" => "封装 / 撤销封装 <li>",
|
||||
"Wrap unwrap h1..." => "封裝 / 撤銷封裝 <h1> - <h3>",
|
||||
"End line with..." => "換行 <br>",
|
||||
"Close tab" => "關閉選項卡",
|
||||
"Select file folder" => "選擇文件 / 文件夾",
|
||||
"Open file" => "打開文件",
|
||||
"Range select" => "範圍選擇",
|
||||
"Options for selected" => "所選的選項",
|
||||
"Delete selected" => "刪除已選",
|
||||
"Next previous tab" => "下一個 / 上一個 選項卡",
|
||||
"Next tab" => "下一個選項卡",
|
||||
"Previous tab" => "上一個選項卡",
|
||||
"New tab" => "新建選項卡",
|
||||
"Close current tab" => "關閉當前選項卡",
|
||||
"Open file prompt" => "打開文件的提示",
|
||||
"Find" => "檢索",
|
||||
"Focus on Go..." => "光標定位到轉到行的輸入框",
|
||||
"Save" => "保存",
|
||||
"Save as" => "另存爲...",
|
||||
"View webpage" => "預覽網頁",
|
||||
"Contract expand file..." => "收縮 / 擴展文件管理器",
|
||||
"Fold unfold current..." => "摺叠 / 展開當前行",
|
||||
"Refocus on document" => "光標重新聚焦到文檔",
|
||||
"Cancel tasks" => "取消任务"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "搜索中沒有選中的文件",
|
||||
"Creating Folder" => "正在創建文件夾",
|
||||
"Sorry you can..." => "抱歉, 衹能同時打開100個文件!",
|
||||
"Opening File" => "正在打開文件",
|
||||
"Enter relative file..." => "輸入本地相對路徑 (前綴 /) 或遠程 URL",
|
||||
"Getting" => "正在獲取",
|
||||
"Please enter the..." => "請輸入新的名稱爲",
|
||||
"Renaming to" => "正在重命名",
|
||||
"Moving to" => "正在移動到",
|
||||
"Deleting File" => "正在刪除文件",
|
||||
"Pasting File" => "正在粘貼文件",
|
||||
"Sorry cannot paste..." => "抱歉, 無法粘貼到根路徑",
|
||||
"Nothing to paste..." => "粘貼失敗, 請先複製一個文件 / 文件夾!",
|
||||
"Replacing text in" => "正在替換文本",
|
||||
"Cancelled tasks" => "取消任務",
|
||||
"Open previous files" => "打開以前的文件?",
|
||||
"Please enter your..." => "請輸入您的 GitHub token (允許使用個人令牌或客戶端令牌). 可以查看 Github Auth Token 的幫助 > 更多信息在 幫助 > 設置窗口",
|
||||
"This will compare..." => "將比較和顯示您的本地目錄和 GitHub repo 之間的差異. 確定嗎?",
|
||||
"Please note for..." => "請注意: 需要更新才能工作, 您需要爲所有 ICEcoder 文件和文件夾設置寫如何刪除權限. 如果您需要恢復 ICEcoder 到這個版本, 您可以在 /tmp 目錄找到它們. 點擊 OK 繼續使用自動升級或點擊 cancel 訪問 ICEcoder 官方網站, 您也可以到 GitHub 的項目首頁下載 zip 來手動進行更新.",
|
||||
"You can start..." => "您可以在 幫助 > 設置中啓動錯誤報告",
|
||||
"Error cannot find..." => "錯誤: 無法找到和進入錯誤日志文件路徑",
|
||||
"No new errors..." => "沒有新的錯誤被找到",
|
||||
"You have made..." => "您已做的更改未保存。您確定要關閉它而不保存嗎?",
|
||||
"Close all tabs" => "是否關閉所有選項卡?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "設置密碼",
|
||||
"login" => "登錄",
|
||||
"To disable registration..." => "要禁用注冊模式, 請進入選項或打開文件 lib/config___settings.php 并更改 enableRegistration 爲 false , 并重新載入本頁面",
|
||||
"Registration mode enabled" => "注冊模式已啓用",
|
||||
"auto-check for updates" => "自動檢測更新",
|
||||
"To put into..." => "要禁用多用戶模式, 請進入選項或打開文件 lib/config___settings.php 并更改 multiUser 爲 true , 并重新載入本頁面",
|
||||
"multi-user" => "多用戶"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "重命名所有",
|
||||
"replace all" => "全部替換",
|
||||
"document" => "文檔",
|
||||
"Found" => "找到",
|
||||
"times" => "時間",
|
||||
"replace" => "替換",
|
||||
"file folder" => "文件 / 文件夾",
|
||||
"rename to" => "重命名爲",
|
||||
"rename" => "重命名",
|
||||
"file" => "文件",
|
||||
"No matches found" => "沒有找到匹配",
|
||||
"selected" => "選擇",
|
||||
"found in" => "查詢結果在",
|
||||
"Replaced" => "已替換"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder 需要重新加載, 這個插件才可以使用。現在刷新嗎?",
|
||||
"saving plugins" => "正在保存插件...",
|
||||
"Cannot update config..." => "不能更新配置文件. 請爲",
|
||||
"and try again" => "設置寫入權限并刷新重試",
|
||||
"couldnt delete dir" => "不能刪除目錄",
|
||||
"couldnt delete file" => "不能刪除文件",
|
||||
"plugins" => "插件",
|
||||
"Guide to writing..." => "編寫插件指南",
|
||||
"Manage Installed" => "管理已安裝",
|
||||
"URL" => "URL",
|
||||
"Target" => "目標",
|
||||
"Timer" => "定時器",
|
||||
"Update" => "更新",
|
||||
"Install" => "安裝",
|
||||
"Uninstall" => "卸載",
|
||||
"Reload after install..." => "安裝后需要刷新"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "屬性",
|
||||
"Size" => "尺寸",
|
||||
"Modified" => "修改",
|
||||
"Last access" => "最近訪問",
|
||||
"Type" => "類型",
|
||||
"Readable Writeable" => "可讀 / 可寫",
|
||||
"Relative path" => "相對路徑",
|
||||
"Absolute path" => "絕對路徑",
|
||||
"Contains" => "包含",
|
||||
"Permissions" => "權限",
|
||||
"Owner" => "所有者",
|
||||
"Group" => "組",
|
||||
"Public" => "公衆",
|
||||
"Read" => "讀取",
|
||||
"Write" => "寫入",
|
||||
"Execute" => "執行",
|
||||
"Change to" => "更改爲",
|
||||
"update" => "更新"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "你的文檔不是 UTF-8 編碼, 它將被轉換"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "不能更新配置文件. 請爲",
|
||||
"and try again" => "增加寫入權限并再次嘗試"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "設置",
|
||||
"version" => "版本",
|
||||
"website" => "網站",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "codemirror 目錄",
|
||||
"codemirror version" => "codemirror 版本",
|
||||
"file manager root" => "文件管理器的根目錄 ROOT",
|
||||
"Free to use..." => "您可以免費使用它, 無論商業與否, 衹需讓我知道任何很酷的或有定製的:)同樣我們無任何責任和任何擔保, 使用所有的責任都是你的. 很多個人和公司爲 ICEcoder 作出過貢獻, 在此篇幅有限無法一一列舉, 請訪問貢獻者詳細列表",
|
||||
"functionality" => "功能",
|
||||
"check for updates..." => "啓動時檢查更新",
|
||||
"auto open last..." => "啓動時自動載入最后打開的文件",
|
||||
"when finding in..." => "在查找文件時, 排除",
|
||||
"assisting" => "輔助",
|
||||
"code assist" => "代碼輔助",
|
||||
"visible tabs" => "縮進綫可見",
|
||||
"locked nav" => "鎖定導航",
|
||||
"tag wrapper command" => "標簽封裝命令",
|
||||
"auto-complete on" => "打開自動完成",
|
||||
"security" => "安全",
|
||||
"new password" => "新密碼",
|
||||
"8 chars min" => "至少8個字符",
|
||||
"confirm password" => "確認密碼",
|
||||
"banned files/folders" => "禁止文件 / 文件夾",
|
||||
"banned paths" => "禁止路徑",
|
||||
"ip addresses" => "ip 地址",
|
||||
"Slash prefixed comma..." => "斜綫前綴, 以半角逗號分隔",
|
||||
"Comma delimited" => "以半角逗號分隔",
|
||||
"style" => "樣式",
|
||||
"theme" => "主題",
|
||||
"line wrapping" => "換行",
|
||||
"indent type" => "縮進類型",
|
||||
"indent size" => "縮進大小",
|
||||
"font size" => "字體大小",
|
||||
"layout" => "佈局",
|
||||
"plugin panel aligned" => "插件版對齊",
|
||||
"file manager" => "文件管理器",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "斜綫前綴",
|
||||
"bug reporting" => "報告錯誤",
|
||||
"check in files" => "檢查文件",
|
||||
"every" => "任何",
|
||||
"secs getting last" => "秒, 最後得到",
|
||||
"lines" => "行",
|
||||
"multi-user" => "多用戶",
|
||||
"Make sure you..." => "確保你沒有把自己鎖了",
|
||||
"Registration" => "啓用注冊",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "如需要得到差異列表, 提交您 GitHub 上托管的 repo 等. 如果你還沒有一個, 你可以使用:".PHP_EOL.PHP_EOL.
|
||||
"- 個人令牌訪問 (https://help.github.com/articles/creating-an-access-token-for-command-line-use), 或".PHP_EOL.
|
||||
"- 完整的客戶端/機密雙令牌 (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"我們不建議您在此處設置令牌, 更安全的方式是當 ICEcoder 要求輸入時將其隻保存在會話中.".PHP_EOL.PHP_EOL.
|
||||
"然而, 如果你在一個信賴和安全的環境下工作, 把它設置在這裏是更有效的.",
|
||||
"Sorry cannot commit..." => "抱歉, 在演示模式下不能提交設置",
|
||||
"update" => "更新"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "不能更新配置文件. 請爲",
|
||||
"and try again" => " 增加寫入權限并重新嘗試",
|
||||
"and press refresh" => " 增加寫入權限并重新嘗試"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "更新似乎是成功的"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
427
lang/dutch.php
Normal file
@@ -0,0 +1,427 @@
|
||||
<?php
|
||||
// Dutch language translation
|
||||
// Door: Julian Kaagman
|
||||
// @dutchwaters (GitHub)
|
||||
|
||||
// Please preserve formatting, line breaks, special characters, anything in <tags> and HTML equivalents (eg &). Translations on right side.
|
||||
// Special chars: http://www.ascii.cl/htmlcodes.htm
|
||||
|
||||
$text = array(
|
||||
|
||||
// / [ROOT LEVEL]
|
||||
|
||||
"editor" =>
|
||||
array(
|
||||
"Click icons for..." => "<strong>Klik op de icoontjes<br>voor hulp &<br>gebruiks info</strong>",
|
||||
"server" => "server",
|
||||
"Server name, OS..." => "Server naam, besturingssysteem & IP:",
|
||||
"Root" => "Root:",
|
||||
"ICEcoder root" => "ICEcoder root:",
|
||||
"PHP version" => "PHP versie:",
|
||||
"Date & time" => "Datum & tijd:",
|
||||
"your device" => "Uw apparaat",
|
||||
"Browser" => "Browser:",
|
||||
"Your IP" => "Uw IP:",
|
||||
"files" => "bestanden",
|
||||
"Last 10 files..." => "Laatste 10 geopende bestanden:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "test suite",
|
||||
"Run unit tests" => "Voer unit tests uit",
|
||||
"dev mode" => "Ontwikkelaars modus",
|
||||
"Status" => "Status",
|
||||
"Using" => "Gebruikt",
|
||||
"You can switch..." => "U kunt de ontwikkelaars modus aan/uit zetten
|
||||
in lib/config__settings.php",
|
||||
"results" => "resultaten"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Vergrendelen",
|
||||
"Refresh" => "Vernieuwen",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "UPDATE INFO",
|
||||
"now available" => "nu beschikbaar",
|
||||
"Your version is" => "Uw versie is",
|
||||
"Update now" => "Nu updaten",
|
||||
"You have some..." => "Er zijn wijzigingen die niet opgeslagen zijn",
|
||||
"working" => "bezig",
|
||||
"Color picker" => "Kleuren kiezer",
|
||||
"New File" => "Nieuw bestand",
|
||||
"New Folder" => "Nieuwe map",
|
||||
"Upload File(s)" => "Upload bestand(en)",
|
||||
"Paste" => "Plakken",
|
||||
"Open" => "Open",
|
||||
"Copy" => "Kopiëren",
|
||||
"Duplicate" => "Dupliceren",
|
||||
"Delete" => "Verwijderen",
|
||||
"Rename" => "Hernoemen",
|
||||
"View Webpage" => "Bekijk webpagina",
|
||||
"Download" => "Download",
|
||||
"Properties" => "Eigenschappen",
|
||||
"File" => "Bestand",
|
||||
"Edit" => "Bewerken",
|
||||
"Remote" => "Extern",
|
||||
"Help" => "Help",
|
||||
"Save" => "Opslaan",
|
||||
"Save As" => "Opslaan als",
|
||||
"Live Preview" => "Voorbeeld",
|
||||
"Upload" => "Upload",
|
||||
"Zip" => "Zip",
|
||||
"Print" => "Print",
|
||||
"Fullscreen toggle" => "Schakelen volledig scherm",
|
||||
"Logout" => "Uitloggen",
|
||||
"Undo" => "Ongedaan maken",
|
||||
"Redo" => "Opnieuw",
|
||||
"Indent more" => "Rechts inspringen",
|
||||
"Indent less" => "Links verspringen",
|
||||
"Autocomplete" => "Automatisch aanvullen",
|
||||
"Comment/Uncomment" => "Commentaar maken",
|
||||
"Jump to Definition" => "Spring naar definitie",
|
||||
"Manual" => "Handleiding",
|
||||
"Shortcuts" => "Snelkoppeling",
|
||||
"Settings" => "Opties",
|
||||
"Search for selected" => "Zoek naar geselecteerd",
|
||||
"website" => "website",
|
||||
"Close all tabs" => "Sluit alle tabbladen",
|
||||
"Alphabetize tabs" => "Sorteer tabbladen",
|
||||
// "Find" => "Zoek",
|
||||
// "in" => "in",
|
||||
// "and" => "en",
|
||||
// "replace" => "vervangen",
|
||||
// "replace all" => "alles vervangen",
|
||||
// "this document" => "dit document",
|
||||
// "open documents" => "open documenten",
|
||||
// "all files" => "alle bestanden",
|
||||
// "all filenames" => "alle bestandsnamen",
|
||||
"Turn on/off..." => "Schakel codehulp aan/uit",
|
||||
"Code Assist" => "Codehulp",
|
||||
"Go to Line" => "Ga naar regel",
|
||||
"View" => "Beeld",
|
||||
"Bug reporting not active" => "Bug rapportage niet actief"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Gevonden in:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Sorry",
|
||||
"does not seem..." => "bestaat niet op de server",
|
||||
"Sorry, could not..." => "Sorry, kan geen gegevens ophalen van",
|
||||
"Sorry, cannot create..." => "Sorry, kan geen map aanmaken op",
|
||||
"Sorry, cannot copy" => "Sorry, kan niet het volgende niet kopiëren",
|
||||
"into" => "naar",
|
||||
"Uploaded file(s) OK" => "Geüploade bestand(en)",
|
||||
"Sorry, cannot upload" => "Sorry, kan niet uploaden",
|
||||
"Sorry, cannot upload..." => "Sorry, kan niet uploaden in de demo modus",
|
||||
"Sorry, cannot rename" => "Sorry, kan niet hernoemen",
|
||||
"Maybe public write..." => "Misschien zijn er publieke schrijfrechten nodig voor deze, of de bovenliggende map?",
|
||||
"Sorry, cannot move" => "Sorry, kan niet worden verplaatst",
|
||||
"Sorry, cannot save" => "Sorry, kan niet opslaan",
|
||||
"Sorry, cannot replace..." => "Sorry, Kan geen tekst vervangen in",
|
||||
"Sorry, cannot change..." => "Sorry, kan de rechten niet wijzigen voor",
|
||||
"Sorry, cannot delete..." => "Sorry, kan de root level niet verwijderen",
|
||||
"Sorry, cannot delete" => "Sorry, kan niet verwijderd worden",
|
||||
"Sorry, this file..." => "Sorry, het bestand is gewijzigd, maar kan niet worden opgeslagen",
|
||||
"Reload this file..." => "Vernieuw dit bestand en kopieer de huidige versie naar een nieuw bestand?",
|
||||
"There was a..." => "Er was een technisch probleem, mogelijk was er iets niet gereed. ICEcodeer heeft bestandsbeheer opnieuw geladen.",
|
||||
"displayed at" => "weergegeven op",
|
||||
"Enter filename to..." => "Voer een bestandsnaam in om het op te slaan op",
|
||||
"That file exists..." => "Dit bestand bestaat al, overschrijven?",
|
||||
"Saving" => "Opslaan"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Er zijn geen verschillen aangetroffen tussen de lokale en de Github repo. Wilt u terug schakelen naar de normale modus?",
|
||||
"Sorry, there was..." => "Sorry, er is een fout opgetreden, foutcode:",
|
||||
"Your local folder..." => "Uw lokale map is leeg, wilt u de inhoud klonen"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Sorry, kan geen map aanmaken op",
|
||||
"Cannot update config..." => "Kan het configuratie bestand niet updaten. Zet alstublieft eerst publieke schrijfrechten aan",
|
||||
"and try again" => "en probeer het opnieuw",
|
||||
"saving github paths" => "opslaan Github paden...",
|
||||
"github paths" => "Github paden",
|
||||
"Choose existing path" => "Kies een bestaand pad",
|
||||
"Local path" => "Lokaal pad",
|
||||
"Remote GitHub path" => "Extern Github pad",
|
||||
"Choose" => "Kies",
|
||||
"Set local and..." => "Maak het lokale en externe pad leeg, om te verwijderen",
|
||||
"Update" => "Update",
|
||||
"Add new path" => "Nieuw pad toevoegen",
|
||||
"Add" => "Toevoegen",
|
||||
"Usage Info" => "Gebruiks Info:",
|
||||
"Enter relative local..." => "Voer relatieve lokale paden (bv /server/mijnbestanden) en absolute Github paden (bv https://github.com/user/repo of https://github.com/user/repo/tree/branch voor vertakkingen (branches)), zoals het voorbeeld. Als je dit doet worden de bron paden op beide locaties gevestigd als een paar.",
|
||||
"You can then..." => "You can then choose a path pair and this then becomes your new root path in ICEcoder.",
|
||||
"The file manager..." => "The file manager then displays a new GitHub icon, which you can click on to perform and show a diff check between the 2 sources. These diffs can then be committed and pushed to the remote path at GitHub or cloned to your local path, to sync your files.",
|
||||
"If you want..." => "If you want to set another root path, this can be done in the Settings screen."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Sorry, you do not appear to have OpenSSL loaded on your PHP instance, so https is not available. This is required for GitHub data transfer, please amend php.ini settings, restart your server and try again"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Foute CSRF token. Graag de fout informatie delen op https://github.com/mattpass/ICEcoder zodat het kan worden opgelost."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "snelkoppelingen",
|
||||
"Within document" => "Binnen het document",
|
||||
"On Tabs" => "Op Tabs",
|
||||
"Within file manager" => "Binnen bestandsbeheer",
|
||||
"Anywhere" => "Overal",
|
||||
"Space" => "Spatie",
|
||||
"Click" => "Klik",
|
||||
"or" => "of",
|
||||
"Left click" => "Linker muisklik",
|
||||
"Middle click" => "Middelste muisklik",
|
||||
"Double click tap..." => "Dubbel klikken / tap (mobiele apparatuur)",
|
||||
"Right click" => "Rechter muisklik",
|
||||
"Middle scrollwheel" => "Midden scrollwiel",
|
||||
"Drag" => "Slepen",
|
||||
"Autocomplete add snippet" => "Aanvullen / toevoegen snippet",
|
||||
"Multiple select" => "Multi selecteren",
|
||||
"Move line up" => "Verplaats regel omhoog",
|
||||
"Move line down" => "Verplaats regel omlaag",
|
||||
"Duplicate lines" => "Kopieer regel(s)",
|
||||
"Remove lines" => "Verwijder regel(s)",
|
||||
"Insert line before" => "Regel invoegen voor",
|
||||
"Insert line after" => "Regel invoegen na",
|
||||
"Search for selected" => "Zoek naar geselecteerd",
|
||||
"Jump to definition" => "Spring naar definitie / spring terug",
|
||||
"Comment uncomment" => "Commentaar (ongedaan) maken",
|
||||
"Insert tab indent" => "Invoegen tab / verspringen geselecteerd",
|
||||
"Wrap with div" => "Omhullen met <div>",
|
||||
"Wrap with span" => "Omhullen met <span>",
|
||||
"Wrap unwrap p" => "Omhullen / onthullen met <p>",
|
||||
"Wrap unwrap a" => "Omhullen / onthullen met <a>",
|
||||
"Wrap unwrap b" => "Omhullen / onthullen met <b>",
|
||||
"Wrap unwrap i" => "Omhullen / onthullen met <i>",
|
||||
"Wrap unwrap strong" => "Omhullen / onthullen met <strong>",
|
||||
"Wrap unwrap em" => "Omhullen / onthullen met <em>",
|
||||
"Wrap unwrap li" => "Omhullen / onthullen met <li>",
|
||||
"Wrap unwrap h1..." => "Omhullen / onthullen met <h1> - <h3>",
|
||||
"End line with..." => "Eindig regel met <br>",
|
||||
"Close tab" => "Sluit tab",
|
||||
"Select file folder" => "Selecteer bestand / map",
|
||||
"Open file" => "Open bestand",
|
||||
"Range select" => "Selecteer bereik",
|
||||
"Options for selected" => "Opties voor geselecteerd",
|
||||
"Delete selected" => "Verwijder geselecteerde",
|
||||
"Next previous tab" => "Volgende / vorige tab",
|
||||
"Next tab" => "Volgende tab",
|
||||
"Previous tab" => "Vorige tab",
|
||||
"New tab" => "Nieuw tab",
|
||||
"Close current tab" => "Sluit huidige tab",
|
||||
"Open file prompt" => "Open bestands prompt",
|
||||
"Find" => "Zoek",
|
||||
"Focus on Go..." => "Focus op ga naar regel invoer",
|
||||
"Save" => "Opslaan",
|
||||
"Save as" => "Opslaan als...",
|
||||
"View webpage" => "Bekijk webpagina",
|
||||
"Contract expand file..." => "Inklappen / uitklappen bestandsbeheer",
|
||||
"Fold unfold current..." => "Vouwen / uitvouwen huidige regel",
|
||||
"Refocus on document" => "Herfocus op document",
|
||||
"Cancel tasks" => "Annuleer taken"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "Geen tekst geselecteerd om te zoeken",
|
||||
"Creating Folder" => "Aanmaken map",
|
||||
"Sorry you can..." => "Sorry, je kan maximaal 100 bestanden open hebben staan!",
|
||||
"Opening File" => "Openen bestand",
|
||||
"Enter relative file..." => "Geef relatieve bestands pad (voorafgaand door een slash) of een externe URL",
|
||||
"Getting" => "Ophalen",
|
||||
"Please enter the..." => "Voer de nieuwe naam in voor",
|
||||
"Renaming to" => "Hernoemen naar",
|
||||
"Moving to" => "Verplaatsen naar",
|
||||
"Deleting File" => "Bestand verwijderen",
|
||||
"Pasting File" => "Bestand plakken",
|
||||
"Sorry cannot paste..." => "Sorry, kan niet de gehele root plakken",
|
||||
"Nothing to paste..." => "Er is niets om te plakken, kopieer eerst een bestand of map!",
|
||||
"Replacing text in" => "Wijzig de tekst in",
|
||||
"Cancelled tasks" => "Geannuleerde taken",
|
||||
"Open previous files" => "Open voorgaande bestand(en)?",
|
||||
"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",
|
||||
"This will compare..." => "This will compare and show a diff view between your local dir and the repo. OK?",
|
||||
"Please note for..." => "Let op: om de update goed te laten doorvoeren, moet je schrijfrechten hebben op alle bestanden en mappen van ICEcoder. Moet je deze versie van ICEcoder herstellen, dan vind je die in de map /tmp. Klik op ok om door te gaan met automatisch updaten, of druk op annuleren om af te breken. Voor een handmatige update kun je het zip bestand van de ICEcoder website downloaden.",
|
||||
"You can start..." => "U kunt bug rapporteren aanzetten in: Help > Settings",
|
||||
"Error cannot find..." => "Fout: kan geen toegang krijgen of de bestands paden vinden",
|
||||
"No new errors..." => "Geen nieuwe fouten gevonden",
|
||||
"You have made..." => "Er zijn wijzigingen aangetroffen. Wilt u verder gaan zonder op te slaan?",
|
||||
"Close all tabs" => "Sluit alle tabbladen?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "sla wachtwoord op",
|
||||
"login" => "login",
|
||||
"To disable registration..." => "Om de registratie modus uit te zetten, open het menu opties of open lib/config___settings.php en wijzig enableRegistration naar false",
|
||||
"Registration mode enabled" => "Registratie modus aan",
|
||||
"auto-check for updates" => "automatisch controleren op updates",
|
||||
"To put into..." => "Om de multi-user modus te gebruiken, open het menu opties of open lib/config___settings.php en verander multiUser naar true",
|
||||
"multi-user" => "multi-user"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "hernoem alles",
|
||||
"replace all" => "vervang alles",
|
||||
"document" => "document",
|
||||
"Found" => "Gevonden",
|
||||
"times" => "keer",
|
||||
"replace" => "vervang",
|
||||
"file folder" => "bestand/map",
|
||||
"rename to" => "hernoemen naar",
|
||||
"rename" => "hernoemen",
|
||||
"file" => "bestand",
|
||||
"No matches found" => "Geen overeenkomsten gevonden",
|
||||
"selected" => "geselecteerd",
|
||||
"found in" => "gevonden in",
|
||||
"Replaced" => "Vervangen"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder moet opnieuw worden geladen om deze plug-in te gebruiken. Nu opnieuw laden?",
|
||||
"saving plugins" => "opslaan plug-ins...",
|
||||
"Cannot update config..." => "Kan het configuratie bestand niet updaten. Zet alstublieft eerst publieke schrijfrechten aan",
|
||||
"and try again" => "en probeer het opnieuw",
|
||||
"couldnt delete dir" => "kan de map niet verwijderen",
|
||||
"couldnt delete file" => "kan bestand niet verwijderen",
|
||||
"plugins" => "plug-ins",
|
||||
"Guide to writing..." => "Gids om plug-ins te schrijven",
|
||||
"Manage Installed" => "Beheer geÏnstalleerd",
|
||||
"URL" => "URL",
|
||||
"Target" => "Doel",
|
||||
"Timer" => "Timer",
|
||||
"Update" => "Update",
|
||||
"Install" => "Installeren",
|
||||
"Uninstall" => "DeÏnstalleren",
|
||||
"Reload after install..." => "Opnieuw laden na installatie vereist"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "eigenschappen",
|
||||
"Size" => "Groote",
|
||||
"Modified" => "Aangepast",
|
||||
"Last access" => "Laatst geopend",
|
||||
"Type" => "Type",
|
||||
"Readable Writeable" => "Leesbaar / Schrijfbaar",
|
||||
"Relative path" => "Relatief pad",
|
||||
"Absolute path" => "Absoluut pad",
|
||||
"Contains" => "Bevat",
|
||||
"Permissions" => "Rechten",
|
||||
"Owner" => "Eigenaar",
|
||||
"Group" => "Groep",
|
||||
"Public" => "Publiek",
|
||||
"Read" => "Lezen",
|
||||
"Write" => "Schrijven",
|
||||
"Execute" => "Uitvoeren",
|
||||
"Change to" => "Veranderen naar",
|
||||
"update" => "update"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Het bleek dat uw bestand niet gebruik maakte van UTF-8 codering, dus is het geconverteerd"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kan het configuratie bestand niet updaten. Zet alstublieft eerst publieke schrijfrechten aan",
|
||||
"and try again" => "en probeer het opnieuw"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "instellingen",
|
||||
"version" => "versie",
|
||||
"website" => "website",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "codemirror dir",
|
||||
"codemirror version" => "codemirror versie",
|
||||
"file manager root" => "bestandsbeheer root",
|
||||
"Free to use..." => "Vrij voor eigen gebruik, commercieel of persoonlijk. :)<br><br>Wij zijn niet aansprakelijk en bieden geen garantie, gebruik op eigen risico.<br><br>Een hoop fantastische mensen, en bedrijven hebben meegeholpen aan de ontwikkeling van ICEcoder waarvoor bedankt. Zie wie er allemaal heeft bijgedragen op",
|
||||
"functionality" => "functionaliteit",
|
||||
"check for updates..." => "check voor updates bij laden",
|
||||
"auto open last..." => "automatisch openen laatst geopende bestanden na inloggen",
|
||||
"when finding in..." => "when finding in files, exclude",
|
||||
"assisting" => "assisteren",
|
||||
"code assist" => "codehulp",
|
||||
"visible tabs" => "zichtbare tabs",
|
||||
"locked nav" => "vergrendelde nav",
|
||||
"tag wrapper command" => "tag wrapper command",
|
||||
"auto-complete on" => "automatisch aanvullen",
|
||||
"security" => "beveiliging",
|
||||
"new password" => "nieuw wachtwoord",
|
||||
"8 chars min" => "minimaal 8 tekens",
|
||||
"confirm password" => "herhaal wachtwoord",
|
||||
"banned files/folders" => "uitgesloten bestanden/mappen",
|
||||
"banned paths" => "uitgesloten paden",
|
||||
"ip addresses" => "ip adressen",
|
||||
"Slash prefixed comma..." => "Slash prefixed, komma gescheiden",
|
||||
"Comma delimited" => "komma gescheiden",
|
||||
"style" => "style",
|
||||
"theme" => "thema",
|
||||
"line wrapping" => "regel omslag",
|
||||
"indent type" => "inspring type",
|
||||
"indent size" => "inspring size",
|
||||
"font size" => "lettergrootte",
|
||||
"layout" => "lay-out",
|
||||
"plugin panel aligned" => "plug-in paneel positie",
|
||||
"file manager" => "bestandsbeheer",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "Slash prefixed",
|
||||
"bug reporting" => "bug rapportage",
|
||||
"check in files" => "check in bestanden",
|
||||
"every" => "elke",
|
||||
"secs getting last" => "seconde, verstuur laatste",
|
||||
"lines" => "regels",
|
||||
"multi-user" => "multi-user",
|
||||
"Make sure you..." => "Zorg ervoor dat je niet jezelf buitensluit",
|
||||
"Registration" => "Registratie",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "Required to get diffs, commit to your GitHub hosted repo etc. If you do not have one, you can use a:".PHP_EOL.PHP_EOL.
|
||||
"- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"It is not recommended you set your token here however and is more secure to enter it when requested by ICEcoder as that will keep it in session only.".PHP_EOL.PHP_EOL.
|
||||
"However, if you work in a trusted and secure environment, it is more efficient to set it here.",
|
||||
"Sorry cannot commit..." => "Sorry, cannot commit settings in demo mode",
|
||||
"update" => "update"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kan het configuratie bestand niet updaten. Zet alstublieft eerst publieke schrijfrechten aan",
|
||||
"and try again" => "probeer het opnieuw",
|
||||
"and press refresh" => "en druk vernieuwen"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Update lijkt succesvol te zijn verlopen"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
436
lang/english.php
Normal file
@@ -0,0 +1,436 @@
|
||||
<?php
|
||||
// English language translation
|
||||
// by: @mattpass (GitHub)
|
||||
// @mattpass (Twitter)
|
||||
|
||||
// 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>Click icons<br>for help &<br>usage info</b>",
|
||||
"server" => "server",
|
||||
"Server name, OS..." => "Server name, OS & IP:",
|
||||
"Root" => "Root:",
|
||||
"ICEcoder root" => "ICEcoder root:",
|
||||
"PHP version" => "PHP version:",
|
||||
"Date & time" => "Date & time:",
|
||||
"your device" => "your device",
|
||||
"Browser" => "Browser:",
|
||||
"Your IP" => "Your IP:",
|
||||
"files" => "files",
|
||||
"Last 10 files..." => "Last 10 files opened:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "test suite",
|
||||
"Run unit tests" => "Run unit tests",
|
||||
"dev mode" => "dev mode",
|
||||
"Status" => "Status",
|
||||
"Using" => "Using",
|
||||
"You can switch..." => "You can switch dev mode on/off in lib/config__settings.php"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Lock",
|
||||
"Refresh" => "Refresh",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "UPDATE INFO",
|
||||
"now available" => "now available",
|
||||
"Your version is" => "Your version is",
|
||||
"Update now" => "Update now",
|
||||
"You have some..." => "You have some unsaved changes",
|
||||
"working" => "working",
|
||||
"Color picker" => "Color picker",
|
||||
"New File" => "New File",
|
||||
"New Folder" => "New Folder",
|
||||
"Upload File(s)" => "Upload File(s)",
|
||||
"Paste" => "Paste",
|
||||
"Open" => "Open",
|
||||
"Copy" => "Copy",
|
||||
"Duplicate" => "Duplicate",
|
||||
"Delete" => "Delete",
|
||||
"Rename" => "Rename",
|
||||
"View Webpage" => "View Webpage",
|
||||
"Download" => "Download",
|
||||
"Properties" => "Properties",
|
||||
"File" => "File",
|
||||
"Edit" => "Edit",
|
||||
"Source" => "Source",
|
||||
"Help" => "Help",
|
||||
"Save" => "Save",
|
||||
"Save As" => "Save As",
|
||||
"Live Preview" => "Live Preview",
|
||||
"Upload" => "Upload",
|
||||
"Zip" => "Zip",
|
||||
"Print" => "Print",
|
||||
"Fullscreen toggle" => "Fullscreen toggle",
|
||||
"Logout" => "Logout",
|
||||
"Undo" => "Undo",
|
||||
"Redo" => "Redo",
|
||||
"Indent more" => "Indent more",
|
||||
"Indent less" => "Indent less",
|
||||
"Autocomplete" => "Autocomplete",
|
||||
"Comment/Uncomment" => "Comment/Uncomment",
|
||||
"Jump to Definition" => "Jump to Definition",
|
||||
"Manual" => "Manual",
|
||||
"Shortcuts" => "Shortcuts",
|
||||
"Settings" => "Settings",
|
||||
"Search for selected" => "Search for selected",
|
||||
"website" => "website",
|
||||
"Close all tabs" => "Close all tabs",
|
||||
"Alphabetize tabs" => "Alphabetize tabs",
|
||||
"Find" => "Find",
|
||||
"in" => "in",
|
||||
"and" => "and",
|
||||
"replace" => "replace",
|
||||
"replace all" => "replace all",
|
||||
"this document" => "this document",
|
||||
"open documents" => "open documents",
|
||||
"all files" => "all files",
|
||||
"all filenames" => "all filenames",
|
||||
"Turn on/off..." => "Turn on/off code assist",
|
||||
"Code Assist" => "Code Assist",
|
||||
"Go to Line" => "Go to Line",
|
||||
"View" => "View",
|
||||
"Bug reporting not active" => "Bug reporting not active"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Found in:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Sorry",
|
||||
"does not seem..." => "does not seem to exist on the server",
|
||||
"Sorry, could not..." => "Sorry, could not get contents of",
|
||||
"Sorry, cannot create..." => "Sorry, cannot create folder at",
|
||||
"Sorry, cannot copy" => "Sorry, cannot copy",
|
||||
"into" => "into",
|
||||
"Uploaded file(s) OK" => "Uploaded file(s) OK",
|
||||
"Sorry, cannot upload" => "Sorry, cannot upload",
|
||||
"Sorry, cannot upload..." => "Sorry, cannot upload whilst in demo mode",
|
||||
"Sorry, cannot rename" => "Sorry, cannot rename",
|
||||
"Maybe public write..." => "Maybe public write permissions needed on this or parent folder?",
|
||||
"Sorry, cannot move" => "Sorry, cannot move",
|
||||
"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..." => "Sorry, cannot delete the root level",
|
||||
"Sorry, cannot delete" => "Sorry, cannot delete",
|
||||
"Sorry, this file..." => "Sorry, this file has changed, cannot save",
|
||||
"Reload this file..." => "Reload this file and copy your version to a diff pane?",
|
||||
"There was a..." => "There was a tech hiccup, likely something was not quite ready. So ICEcoder reloaded its file control again.",
|
||||
"displayed at" => "displayed at",
|
||||
"Enter filename to..." => "Enter filename to save at",
|
||||
"That file exists..." => "That file exists already, overwrite?",
|
||||
"Saving" => "Saving"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "There are no differences between the local and GitHub repo. Switch back to regular mode?",
|
||||
"Sorry, there was..." => "Sorry, there was an error, code:",
|
||||
"Your local folder..." => "Your local folder is empty, would you like to clone"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Sorry, cannot create folder at",
|
||||
"Cannot update config..." => "Cannot update config file. Please set public write permissions on",
|
||||
"and try again" => "and try again",
|
||||
"saving github paths" => "saving github paths...",
|
||||
"github paths" => "github paths",
|
||||
"Choose existing path" => "Choose existing path",
|
||||
"Local path" => "Local path",
|
||||
"Remote GitHub path" => "Remote GitHub path",
|
||||
"Choose" => "Choose",
|
||||
"Set local and..." => "Set local and remote path to blank to remove",
|
||||
"Update" => "Update",
|
||||
"Add new path" => "Add new path",
|
||||
"Add" => "Add",
|
||||
"Usage Info" => "Usage Info:",
|
||||
"Enter relative local..." => "Enter relative local paths (eg /server/myfiles) and absolute GitHub paths (eg https://github.com/user/repo or https://github.com/user/repo/tree/branch for branches), as per the examples. With this done you have established the source paths at both locations, as a pair.",
|
||||
"You can then..." => "You can then choose a path pair and this then becomes your new root path in ICEcoder.",
|
||||
"The file manager..." => "The file manager then displays a new GitHub icon, which you can click on to perform and show a diff check between the 2 sources. These diffs can then be committed and pushed to the remote path at GitHub or cloned to your local path, to sync your files.",
|
||||
"If you want..." => "If you want to set another root path, this can be done in the Settings screen."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Sorry, you do not appear to have OpenSSL loaded on your PHP instance, so https is not available. This is required for GitHub data transfer, please amend php.ini settings, restart your server and try again"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Bad CSRF token. Please report the error info at https://github.com/mattpass/ICEcoder so it can be fixed."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "shortcuts",
|
||||
"Within document" => "Within document",
|
||||
"On Tabs" => "On Tabs",
|
||||
"Within file manager" => "Within file manager",
|
||||
"Anywhere" => "Anywhere",
|
||||
"Space" => "Space",
|
||||
"Click" => "Click",
|
||||
"or" => "or",
|
||||
"Left click" => "Left click",
|
||||
"Middle click" => "Middle click",
|
||||
"Double click tap..." => "Double click / tap (mobile)",
|
||||
"Right click" => "Right click",
|
||||
"Middle scrollwheel" => "Middle scrollwheel",
|
||||
"Drag" => "Drag",
|
||||
"Autocomplete add snippet" => "Autocomplete / add snippet",
|
||||
"Multiple select" => "Multiple select",
|
||||
"Move line up" => "Move line up",
|
||||
"Move line down" => "Move line down",
|
||||
"Duplicate lines" => "Duplicate line(s)",
|
||||
"Remove lines" => "Remove line(s)",
|
||||
"Insert line before" => "Insert line before",
|
||||
"Insert line after" => "Insert line after",
|
||||
"Search for selected" => "Search for selected",
|
||||
"Jump to definition" => "Jump to definition / jump back",
|
||||
"Comment uncomment" => "Comment / uncomment",
|
||||
"Insert tab indent" => "Insert tab / auto indent selected",
|
||||
"Insert more" => "Indent more",
|
||||
"Insert less" => "Indent less",
|
||||
"Wrap with div" => "Wrap with <div>",
|
||||
"Wrap with span" => "Wrap with <span>",
|
||||
"Wrap unwrap p" => "Wrap / unwrap with <p>",
|
||||
"Wrap unwrap a" => "Wrap / unwrap with <a>",
|
||||
"Wrap unwrap b" => "Wrap / unwrap with <b>",
|
||||
"Wrap unwrap i" => "Wrap / unwrap with <i>",
|
||||
"Wrap unwrap strong" => "Wrap / unwrap with <strong>",
|
||||
"Wrap unwrap em" => "Wrap / unwrap with <em>",
|
||||
"Wrap unwrap li" => "Wrap / unwrap with <li>",
|
||||
"Wrap unwrap h1..." => "Wrap / unwrap with <h1> - <h3>",
|
||||
"End line with..." => "End line with <br>",
|
||||
"Close tab" => "Close tab",
|
||||
"Select file folder" => "Select file / folder",
|
||||
"Open file" => "Open file",
|
||||
"Range select" => "Range select",
|
||||
"Options for selected" => "Options for selected",
|
||||
"Delete selected" => "Delete selected",
|
||||
"Next previous tab" => "Next / previous tab",
|
||||
"Next tab" => "Next tab",
|
||||
"Previous tab" => "Previous tab",
|
||||
"New tab" => "New tab",
|
||||
"Close current tab" => "Close current tab",
|
||||
"Open file prompt" => "Open file prompt",
|
||||
"Find" => "Find",
|
||||
"Focus on Go..." => "Focus on Go to line input",
|
||||
"Save" => "Save",
|
||||
"Save as" => "Save as...",
|
||||
"View webpage" => "View webpage",
|
||||
"Contract expand file..." => "Contract / expand file manager",
|
||||
"Fold unfold current..." => "Fold / unfold current line",
|
||||
"Refocus on document" => "Refocus on document",
|
||||
"Cancel tasks" => "Cancel tasks"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "No text selected to search on",
|
||||
"all files" => "all files",
|
||||
"all filenames" => "all filenames",
|
||||
"selected files" => "selected files",
|
||||
"selected filenames" => "selected filenames",
|
||||
"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",
|
||||
"Getting" => "Getting",
|
||||
"Please enter the..." => "Please enter the new name for",
|
||||
"Renaming to" => "Renaming to",
|
||||
"Moving to" => "Moving to",
|
||||
"Deleting File" => "Deleting File",
|
||||
"Pasting File" => "Pasting File",
|
||||
"Sorry cannot paste..." => "Sorry, cannot paste a whole root",
|
||||
"Nothing to paste..." => "Nothing to paste, copy a file/folder first!",
|
||||
"and" => "and",
|
||||
"this document" => "this document",
|
||||
"replace" => "replace",
|
||||
"replace all" => "replace all",
|
||||
"file" => "file",
|
||||
"Replacing text in" => "Replacing text in",
|
||||
"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",
|
||||
"This will compare..." => "This will compare and show a diff view between your local dir and the repo. OK?",
|
||||
"Please note for..." => "Please note: for updating to work properly, you need to have write access on all ICEcoder dirs & files. It will first check if this is the case and list any unwriteable (and therefore unmoveable) files.\\n\\nIf you need to recover this version of ICEcoder for any reason, you'll find it in the /tmp dir.\\n\\nClick OK to proceed with the check and auto-update, or cancel to visit the ICEcoder site so you can grab the zip and update manually.",
|
||||
"You can start..." => "You can start bug reporting in Help > Settings",
|
||||
"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"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "set password",
|
||||
"login" => "login",
|
||||
"To disable registration..." => "To disable registration mode, open the settings menu or open lib/config___settings.php and change enableRegistration to false then reload this page",
|
||||
"Registration mode enabled" => "Registration mode enabled",
|
||||
"auto-check for updates" => "auto-check for updates",
|
||||
"To put into..." => "To put into multi-user mode, open the settings menu or open lib/config___settings.php and change multiUser to true then reload this page",
|
||||
"multi-user" => "multi-user"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "rename all",
|
||||
"replace all" => "replace all",
|
||||
"document" => "document",
|
||||
"Found" => "Found",
|
||||
"times" => "times",
|
||||
"replace" => "replace",
|
||||
"file folder" => "file/folder",
|
||||
"rename to" => "rename to",
|
||||
"rename" => "rename",
|
||||
"file" => "file",
|
||||
"No matches found" => "No matches found",
|
||||
"selected" => "selected",
|
||||
"found in" => "found in",
|
||||
"Replaced" => "Replaced"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder needs to reload to make this plugin usable. Reload now?",
|
||||
"saving plugins" => "saving plugins...",
|
||||
"Cannot update config..." => "Cannot update config file. Please set public write permissions on",
|
||||
"and try again" => "and try again",
|
||||
"couldnt delete dir" => "could not delete dir",
|
||||
"couldnt delete file" => "could not delete file",
|
||||
"plugins" => "plugins",
|
||||
"Guide to writing..." => "Guide to writing plugins",
|
||||
"Manage Installed" => "Manage Installed",
|
||||
"URL" => "URL",
|
||||
"Target" => "Target",
|
||||
"Timer" => "Timer",
|
||||
"Update" => "Update",
|
||||
"Install" => "Install",
|
||||
"Uninstall" => "Uninstall",
|
||||
"Reload after install..." => "Reload after install required"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "properties",
|
||||
"Size" => "Size",
|
||||
"Modified" => "Modified",
|
||||
"Last access" => "Last access",
|
||||
"Type" => "Type",
|
||||
"Readable Writeable" => "Readable / Writeable",
|
||||
"Relative path" => "Relative path",
|
||||
"Absolute path" => "Absolute path",
|
||||
"Contains" => "Contains",
|
||||
"Permissions" => "Permissions",
|
||||
"Owner" => "Owner",
|
||||
"Group" => "Group",
|
||||
"Public" => "Public",
|
||||
"Read" => "Read",
|
||||
"Write" => "Write",
|
||||
"Execute" => "Execute",
|
||||
"Change to" => "Change to",
|
||||
"update" => "update"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Your document does not appear to be in UTF-8 encoding so has been converted"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Cannot update config file. Please set public write permissions on",
|
||||
"and try again" => "and try again"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "settings",
|
||||
"version" => "version",
|
||||
"website" => "website",
|
||||
"git" => "git",
|
||||
"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",
|
||||
"functionality" => "functionality",
|
||||
"check for updates..." => "check for updates on load",
|
||||
"auto open last..." => "auto open last files on login",
|
||||
"when finding in..." => "when finding in files, exclude",
|
||||
"assisting" => "assisting",
|
||||
"code assist" => "code assist",
|
||||
"visible tabs" => "visible tabs",
|
||||
"locked nav" => "locked nav",
|
||||
"tag wrapper command" => "tag wrapper command",
|
||||
"auto-complete on" => "auto-complete on",
|
||||
"security" => "security",
|
||||
"new password" => "new password",
|
||||
"8 chars min" => "8 chars min",
|
||||
"confirm password" => "confirm password",
|
||||
"banned files/folders" => "banned files/folders",
|
||||
"banned paths" => "banned paths",
|
||||
"ip addresses" => "ip addresses",
|
||||
"Slash prefixed comma..." => "Slash prefixed, comma delimited",
|
||||
"Comma delimited" => "Comma delimited",
|
||||
"style" => "style",
|
||||
"theme" => "theme",
|
||||
"line wrapping" => "line wrapping",
|
||||
"indent type" => "indent type",
|
||||
"indent size" => "indent size",
|
||||
"font size" => "font size",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "plugin panel aligned",
|
||||
"file manager" => "file manager",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "Slash prefixed",
|
||||
"bug reporting" => "bug reporting",
|
||||
"check in files" => "check in files",
|
||||
"every" => "every",
|
||||
"secs getting last" => "secs, getting last",
|
||||
"lines" => "lines",
|
||||
"multi-user" => "multi-user",
|
||||
"Make sure you..." => "Make sure you do not lock yourself out",
|
||||
"Registration" => "Registration",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "Required to get diffs, commit to your GitHub hosted repo etc. If you do not have one, you can use a:".PHP_EOL.PHP_EOL.
|
||||
"- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"It is not recommended you set your token here however and is more secure to enter it when requested by ICEcoder as that will keep it in session only.".PHP_EOL.PHP_EOL.
|
||||
"However, if you work in a trusted and secure environment, it is more efficient to set it here.",
|
||||
"Sorry cannot commit..." => "Sorry, cannot commit settings in demo mode",
|
||||
"update" => "update"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Cannot update config file. Please set public write permissions on",
|
||||
"and try again" => "and try again",
|
||||
"and press refresh" => "and press refresh"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Update appears to be successful"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
423
lang/french.php
Normal file
@@ -0,0 +1,423 @@
|
||||
<?php
|
||||
// French language translation
|
||||
// par: @krisxoofoo (GitHub)
|
||||
// @kris_fr Twitter)
|
||||
|
||||
// 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>Cliquez sur les icônes<br>pour l'aide &<br>et infos d'utilisation</b>",
|
||||
"server" => "Serveur",
|
||||
"Server name, OS..." => "Nom du serveur, OS & IP :",
|
||||
"Root" => "Racine :",
|
||||
"ICEcoder root" => "Racine d'ICEcoder :",
|
||||
"PHP version" => "Version PHP :",
|
||||
"Date & time" => "Date & heure :",
|
||||
"your device" => "Votre équipement",
|
||||
"Browser" => "Navigateur :",
|
||||
"Your IP" => "Votre IP :",
|
||||
"files" => "Fichiers",
|
||||
"Last 10 files..." => "10 derniers fichiers ouverts :",
|
||||
"none" => "[aucun]",
|
||||
"test suite" => "Suite de test",
|
||||
"Run unit tests" => "Lancer les tests unit",
|
||||
"dev mode" => "Mode dev",
|
||||
"Status" => "Statuts",
|
||||
"Using" => "Utilise",
|
||||
"You can switch..." => "Vous pouvez basculer le mode dev on/off
|
||||
dans lib/config__settings.php",
|
||||
"results" => "résultats"
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Verrouiller",
|
||||
"Refresh" => "Rafraîchir",
|
||||
"ROOT" => "[RACINE]"
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "INFO DE MISE A JOUR",
|
||||
"now available" => "actuellement disponible",
|
||||
"Your version is" => "Votre version est la",
|
||||
"Update now" => "Mettre à jour maintenant",
|
||||
"You have some..." => "Vous avez quelques changements non sauvegardés",
|
||||
"working" => "en progression",
|
||||
"Color picker" => "Sélecteur de couleur",
|
||||
"New File" => "Nouveau fichier",
|
||||
"New Folder" => "Nouveau dossier",
|
||||
"Upload File(s)" => "Télécharger le(s) Fichier(s)",
|
||||
"Paste" => "Coller",
|
||||
"Open" => "Ouvrir",
|
||||
"Copy" => "Copier",
|
||||
"Duplicate" => "Dupliquer",
|
||||
"Delete" => "Effacer",
|
||||
"Rename" => "Renommer",
|
||||
"View Webpage" => "Afficher la page web",
|
||||
"Download" => "Télécharger",
|
||||
"Properties" => "Propriétés",
|
||||
"File" => "Fichier",
|
||||
"Edit" => "Editer",
|
||||
"Remote" => "Distant",
|
||||
"Help" => "Aide",
|
||||
"Save" => "Enregistrer",
|
||||
"Save As" => "Enregistrer sous",
|
||||
"Live Preview" => "Prévisualisation",
|
||||
"Upload" => "Télécharger",
|
||||
"Zip" => "Compresser",
|
||||
"Print" => "Imprimer",
|
||||
"Fullscreen toggle" => "Basculer en mode plein écran",
|
||||
"Logout" => "Déconnexion",
|
||||
"Undo" => "Annuler",
|
||||
"Redo" => "Refaire",
|
||||
"Indent more" => "Plus d'indentation",
|
||||
"Indent less" => "Moins d'indentation",
|
||||
"Autocomplete" => "Autocomplétion",
|
||||
"Comment/Uncomment" => "Commenter/Décommenter",
|
||||
"Jump to Definition" => "Aller à la Définition",
|
||||
"Manual" => "Manuel",
|
||||
"Shortcuts" => "Raccourcis",
|
||||
"Settings" => "Préférences",
|
||||
"Search for selected" => "Rechercher pour la sélection",
|
||||
"website" => "Site internet",
|
||||
"Close all tabs" => "Fermer les onglets",
|
||||
"Alphabetize tabs" => "Onglets par ordre alphabétique",
|
||||
// "Find" => "Chercher",
|
||||
// "in" => "dans",
|
||||
// "and" => "et",
|
||||
// "replace" => "remplacer",
|
||||
// "replace all" => "remplacer tout",
|
||||
// "this document" => "ce document",
|
||||
// "open documents" => "les documents ouverts",
|
||||
// "all files" => "tous les fichiers",
|
||||
// "all filenames" => "tous les noms de fichiers",
|
||||
"Turn on/off..." => "Basculer on/off l'assistance au code",
|
||||
"Code Assist" => "Assistance au Code",
|
||||
"Go to Line" => "Aller à la ligne",
|
||||
"View" => "Afficher",
|
||||
"Bug reporting not active" => "Le signalement de dysfonctionnement n'est pas actif"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Trouvé dans :"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Désolé",
|
||||
"does not seem..." => "ne semble pas exister sur le serveur",
|
||||
"Sorry, could not..." => "Désolé, impossibilité de récupérer le contenu de",
|
||||
"Sorry, cannot create..." => "Désolé, impossibilité de créer le dossier sur",
|
||||
"Sorry, cannot copy" => "Désolé, impossibilité de copier",
|
||||
"into" => "dans",
|
||||
"Uploaded file(s) OK" => "Téléchargement du (des) fichier(s) réussi(s)",
|
||||
"Sorry, cannot upload" => "Désolé, impossibilité de télécharger",
|
||||
"Sorry, cannot upload..." => "Désolé, impossibilité de télécharger en mode démo",
|
||||
"Sorry, cannot rename" => "Désolé, impossibilité de renommer",
|
||||
"Maybe public write..." => " Peut-être que les permissions d'écriture publique sont nécessaires sur ce dossier ou son répertoire ?",
|
||||
"Sorry, cannot move" => "Désolé, impossibilité de déplacer",
|
||||
"Sorry, cannot save" => "Désolé, impossibilité de sauvegarder",
|
||||
"Sorry, cannot replace..." => "Désolé, impossibilité de remplacer le texte dans ",
|
||||
"Sorry, cannot change..." => "Désolé, impossibilité de changer les permissions sur",
|
||||
"Sorry, cannot delete..." => "Désolé, imossibilité de supprimer le dossier racine",
|
||||
"Sorry, cannot delete" => "Désolé, impossibilité d'effacer",
|
||||
"Sorry, this file..." => "Désolé, le fichier a été modifié, impossibilité de sauvegarder",
|
||||
"Reload this file..." => "Recharger le fichier, et copier votre version dans un nouveau document ?",
|
||||
"There was a..." => "Un problème technique a été rencontré, probablement quelque chose qui n'était pas tout à fait prêt. ICEcoder a donc relancé à nouveau son contrôle de fichier.",
|
||||
"displayed at" => "affiché sur",
|
||||
"Enter filename to..." => "Saisissez le nom du fichier à enregistrer sur",
|
||||
"That file exists..." => "Ce fichier existe déjà, voulez vous l'écraser ?",
|
||||
"Saving" => "Sauvegardé"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Il n'y a pas de différences entre le repo local et celui de GitHub. Revenir en mode normal ?",
|
||||
"Sorry, there was..." => "Désolé, il y avait une erreur, le code :",
|
||||
"Your local folder..." => " Votre dossier local est vide, voulez-vous le cloner ?"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Désolé, impossible de créer un dossier dans",
|
||||
"Cannot update config..." => "Impossibilité de mettre à jour le fichier de configuration. Veuillez vérifier les permissions d'écriture.",
|
||||
"and try again" => "et essayez de nouveau",
|
||||
"saving github paths" => "chemins github sauvegardés ...",
|
||||
"github paths" => "chemins github",
|
||||
"Choose existing path" => "Choisis le chemin existant",
|
||||
"Local path" => "Chemin local",
|
||||
"Remote GitHub path" => "Chemin distant GitHub",
|
||||
"Choose" => "Choisir",
|
||||
"Set local and..." => "Définir le chemin d'accès local et distant à blanc pour le retirer ",
|
||||
"Update" => "Mise à jour",
|
||||
"Add new path" => "Ajouter un nouveau chemin",
|
||||
"Add" => "Ajouter",
|
||||
"Usage Info" => "Info d'utilisation :",
|
||||
"Enter relative local..." => "Entrez les chemins relatifs locaux (par exemple / serveur / mesfichiers) et les chemins absolus GitHub (par exemple https://github.com/user/repo ou https://github.com/user/repo/tree/branch pour les branches). Avec ceci, vous aurez établi les chemins source sur les deux sites, comme une paire.",
|
||||
"You can then..." => "Vous pouvez ensuite choisir une paire de chemin, et cela devient alors votre nouveau chemin d'accès racine dans ICEcoder.",
|
||||
"The file manager..." => "Le gestionnaire de fichiers affiche alors une nouvelle icône GitHub, que vous pouvez cliquer dessus pour exécuter et afficher une vérification des différences entre les 2 sources. Ces différences peuvent être versées et basculées dans le projet distant GitHub ou clonées sur votre version locale du projet, afin de synchroniser vos fichiers.",
|
||||
"If you want..." => " Si vous souhaitez définir un autre chemin d'accès à la racine, cela peut être fait dans l'écran des paramètres."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Désolé, vous ne semblez pas avoir OpenSSL chargé sur votre instance de PHP, https n'est donc pas disponible. Cela est nécessaire pour le transfert de données GitHub, veuillez modifier les paramètres du fichier php.ini, redémarrez votre serveur et essayez à nouveau."
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Mauvais jeton CSRF. S'il vous plaît, envoyer un rapport de l'erreur à https://github.com/mattpass/ICEcoder si vous désirez qu'il soit corrigé."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "raccourcis",
|
||||
"Within document" => "Dans un fichier",
|
||||
"On Tabs" => "Dans les onglets",
|
||||
"Within file manager" => "Dans le gestionnaire de fichiers",
|
||||
"Anywhere" => "N'importe où",
|
||||
"Space" => "Espace",
|
||||
"Click" => "Clic",
|
||||
"or" => "ou",
|
||||
"Left click" => "Clic gauche",
|
||||
"Middle click" => "Clic du milieu",
|
||||
"Double click tap..." => "Double clic / touche (mobile)",
|
||||
"Right click" => "Clic droit",
|
||||
"Middle scrollwheel" => "Roulette du milieu",
|
||||
"Drag" => "Glisser",
|
||||
"Autocomplete add snippet" => "Saisie semi-automatique / ajouter un extrait",
|
||||
"Multiple select" => "Sélection multiple",
|
||||
"Move line up" => "Aller à la ligne supérieure",
|
||||
"Move line down" => "Aller à la ligne inférieure",
|
||||
"Duplicate lines" => "Dupliquer la(les) ligne(s)",
|
||||
"Remove lines" => "Supprimer la(les) ligne(s)",
|
||||
"Insert line before" => "Insérer un ligne avant",
|
||||
"Insert line after" => "Insérer une ligne après",
|
||||
"Search for selected" => "Rechercher pour la sélection",
|
||||
"Jump to definition" => "Aller à la définition / revenir en arrière",
|
||||
"Comment uncomment" => "Commenter / Décommenter",
|
||||
"Insert tab indent" => "Insérer un tableau / indent selected",
|
||||
"Wrap with div" => "Plier avec <div>",
|
||||
"Wrap with span" => "Plier avec <span>",
|
||||
"Wrap unwrap p" => "Plier / déplier avec <p>",
|
||||
"Wrap unwrap a" => "Plier / déplier avec <a>",
|
||||
"Wrap unwrap b" => "Plier / déplier avec <b>",
|
||||
"Wrap unwrap i" => "Plier / déplier avec <i>",
|
||||
"Wrap unwrap strong" => "Plier / déplier avec <strong>",
|
||||
"Wrap unwrap em" => "Plier / déplier avec <em>",
|
||||
"Wrap unwrap h1..." => "Plier / déplier avec <h1> - <h3>",
|
||||
"End line with..." => "Fin de ligne avec <br>",
|
||||
"Close tab" => "Fermer l'onglet",
|
||||
"Select file folder" => "Sélectionner fichier / dossier",
|
||||
"Open file" => "Ouvrir le fichier",
|
||||
"Range select" => "Sélection de la plage",
|
||||
"Options for selected" => "Options pour sélectionner",
|
||||
"Delete selected" => "Suppression de la sélection",
|
||||
"Next previous tab" => "Onglet suivant / précédent",
|
||||
"Next tab" => "Onglet suivant",
|
||||
"Previous tab" => "Onglet précédent",
|
||||
"New tab" => "Nouvel onglet",
|
||||
"Close current tab" => "Fermer l'onglet courant",
|
||||
"Open file prompt" => "Ouvrir une invite de fichier",
|
||||
"Find" => "Chercher",
|
||||
"Focus on Go..." => " Focus sur le début de ligne",
|
||||
"Save" => "Enregistrer",
|
||||
"Save as" => "Enregistrer sous...",
|
||||
"View webpage" => "Afficher la page web",
|
||||
"Contract expand file..." => "Réduire / agrandir le gestionnaire de fichiers",
|
||||
"Fold unfold current..." => "Plier / déplier la ligne courante",
|
||||
"Refocus on document" => "Revenir sur le document",
|
||||
"Cancel tasks" => "Quitter les tâches"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "Aucun texte sélectionné pour la recherche sur",
|
||||
"Creating Folder" => "réation de dossier",
|
||||
"Sorry you can..." => "Désolé, vous ne pouvez pas avoir plus de 100 fichiers ouverts en même temps !",
|
||||
"Opening File" => "Ouverture de fichier",
|
||||
"Enter relative file..." => "Entrez le chemin relatif du fichier (préfixé avec un /) ou l'URL distante",
|
||||
"Getting" => "Obtention",
|
||||
"Please enter the..." => "S'il vous plait, saisissez le nouveau nom pour",
|
||||
"Renaming to" => "Renommé en",
|
||||
"Moving to" => "Déplacé vers",
|
||||
"Deleting File" => "Suppression fichier",
|
||||
"Pasting File" => "Collage fichier",
|
||||
"Sorry cannot paste..." => "Désolé, il n'est pas possible de coller une racine",
|
||||
"Nothing to paste..." => "Rien à coller, copiez un fichier/dossier en premier !",
|
||||
"Replacing text in" => "Remplacement de texte dans",
|
||||
"Cancelled tasks" => "Tâches annulés",
|
||||
"Open previous files" => "Ouvrir les fichiers précédents ?",
|
||||
"Please enter your..." => "S'il vous plaît entrez votre token GitHub (soit l'accès par token personnel ou le token client / paire secrète). Voir l'info-bulle à côté de Github Auth Token sur écran Aide> Paramètres pour plus d'infos",
|
||||
"This will compare..." => "Ceci compare et montre une vue des différences entre votre répertoire local et le repo. D'accord ?",
|
||||
"Please note for..." => "S'il vous plaît, noter : la mise à jour fonctionne correctement, vous devez avoir les permissions d'écriture / suppression à tous les répertoires et fichiers d'ICEcoder. Si vous avez besoin de récupérer cette version d'ICEcoder pour une raison quelconque, vous la trouverez dans le répertoire / tmp. Cliquez sur OK pour procéder à une mise à jour automatique, ou annuler et visiter le site d'ICEcoder de sorte que vous pouvez récupérer le fichier zip et mettre à jour manuellement.",
|
||||
"You can start..." => "Vous pouvez reporter un dysfonctionnement dans Aide > Préférences",
|
||||
"Error cannot find..." => "Erreur : ne peut pas trouver / accéder aux chemins des fichiers d'erreur",
|
||||
"No new errors..." => "Aucune nouvelle erreur trouvée",
|
||||
"You have made..." => "Vous avez réalisé des modifications. Etes vous sûr(e) de désirer quitter sans sauvegarder ?",
|
||||
"Close all tabs" => "Fermer tous les onglets?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "Définir un mot de passe",
|
||||
"login" => "Connexion",
|
||||
"To disable registration..."=> "Pour désactiver le mode 'enregsitrement', ouvrir le menu des préférences ou le fichier lib/config___settings.php et modifier enableRegistration à 'false', puis recharger cette page",
|
||||
"Registration mode enabled" => "Mode Enregistrement activé",
|
||||
"auto-check for updates" => "Vérification automatique des mises à jour",
|
||||
"To put into..." => "Pour passer en mode 'multi-utilisateur', ouvrir le menu des preférences ou le ifchier lib/config___settings.php et modifier multiUser à 'true', puis recharger cette page",
|
||||
"multi-user" => "Multi-utilisateur"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "Tout renommer",
|
||||
"replace all" => "Tout remplacer",
|
||||
"document" => "document",
|
||||
"Found" => "trouvé",
|
||||
"times" => "date",
|
||||
"replace" => "remplacer",
|
||||
"file folder" => "fichier/dossier",
|
||||
"rename to" => "renommer en",
|
||||
"rename" => "renommer",
|
||||
"file" => "fichier",
|
||||
"No matches found" => "Aucun résultat de trouver",
|
||||
"selected" => "sélectionné",
|
||||
"found in" => "trouvé dans",
|
||||
"Replaced" => "Remplacé"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder a besoin d'être rechargé pour rendre ce plugin utilisable. Le faire maintenant ?",
|
||||
"saving plugins" => "sauvegarde des plugins ...",
|
||||
"Cannot update config..." => "Impossibilité de mettre à jour le fichier de configuration. Vérifiez les permissions d'écriture",
|
||||
"and try again" => "et essayez de nouveau",
|
||||
"couldnt delete dir" => "ne peut pas effacer le dossier",
|
||||
"couldnt delete file" => "ne peut pas effacer le fichier",
|
||||
"plugins" => "plugins",
|
||||
"Guide to writing..." => "Guide pour écrire des plugins",
|
||||
"Manage Installed" => "Gestionnaire installé",
|
||||
"URL" => "URL",
|
||||
"Target" => "Cible",
|
||||
"Timer" => "Compteur",
|
||||
"Update" => "Mise à jour",
|
||||
"Install" => "Installation",
|
||||
"Uninstall" => "Désinstallation",
|
||||
"Reload after install..." => "Une reconnexion est nécessaire après l'installation"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "propriétés",
|
||||
"Size" => "Taille",
|
||||
"Modified" => "Dernière modification",
|
||||
"Last access" => "Dernier accès",
|
||||
"Type" => "Type",
|
||||
"Readable Writeable" => "Lisible / Inscriptible",
|
||||
"Relative path" => "Chemin relatif",
|
||||
"Absolute path" => "Chemin absolute",
|
||||
"Contains" => "Contenu",
|
||||
"Permissions" => "Permissions",
|
||||
"Owner" => "Propriétaire",
|
||||
"Group" => "Groupe",
|
||||
"Public" => "Public",
|
||||
"Read" => "Lire",
|
||||
"Write" => "Ecrire",
|
||||
"Execute" => "Exécuter",
|
||||
"Change to" => "Modifier en",
|
||||
"update" => "mise à jour"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Votre document ne semble pas être en UTF-8 et a donc été converti"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Impossibilité de mettre à jour le fichier de configuration. Vérifiez les permissions d'écriture sur celui-ci",
|
||||
"and try again" => "et essayez de nouveau"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "préférences",
|
||||
"version" => "version",
|
||||
"website" => "Site internet",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "chemin de codemirror",
|
||||
"codemirror version" => "version de codemirror ",
|
||||
"file manager root" => "racine du gestionnaire de fichiers",
|
||||
"Free to use..." => "Libre de l'utiliser pour vos propres fins, commerciales ou non, faites moi juste savoir de toute utilisation sympa ou personnalisations. :)<br><br>Aucune garantie ou responsabilité est acceptées de notre part, toute responsabilité d'utilisation est de votre ressort.<br><br>De nombreuses personnes fantastiques et d'entreprises ont contribué à réaliser ICEcoder et il est important de les remercier ici. S'il vous plaît, parcourez la liste complète sur",
|
||||
"functionality" => "fonctionnalités",
|
||||
"check for updates..." => "Vérifier les mises à jour",
|
||||
"auto open last..." => "affichage des derniers fichiers",
|
||||
"when finding in..." => "extension à exclure des recherches",
|
||||
"assisting" => "assistant",
|
||||
"code assist" => "Assistance de code",
|
||||
"visible tabs" => "onglets visibles",
|
||||
"locked nav" => "navigation vérouillée",
|
||||
"tag wrapper command" => "commande de tag",
|
||||
"auto-complete on" => "auto-complétion sur",
|
||||
"security" => "sécurité",
|
||||
"new password" => "nouveau mot de passe",
|
||||
"8 chars min" => "8 caractères minimum",
|
||||
"confirm password" => "confirmation du mot de passe",
|
||||
"banned files/folders" => "fichiers/dossiers bannis",
|
||||
"banned paths" => "chemins bannis",
|
||||
"ip addresses" => "adresses ip",
|
||||
"Slash prefixed comma..."=> "Slash préfixé, séparées par des virgules",
|
||||
"Comma delimited" => "Délimité par des virgules",
|
||||
"style" => "style",
|
||||
"theme" => "thème",
|
||||
"line wrapping" => "retour à la ligne",
|
||||
"indent type" => "indent type",
|
||||
"indent size" => "indent size",
|
||||
"font size" => "font size",
|
||||
"layout" => "disposition",
|
||||
"plugin panel aligned" => "panneau des plugins aligné",
|
||||
"file manager" => "gestionnaire de fichiers",
|
||||
"root" => "racine",
|
||||
"Slash prefixed" => "Slash préfixé",
|
||||
"bug reporting" => "Rapport de dysfonctionnement",
|
||||
"check in files" => "vérifier dans les fichiers",
|
||||
"every" => "chaque",
|
||||
"secs getting last" => "secondes, obtenir le dernier",
|
||||
"lines" => "lignes",
|
||||
"multi-user" => "multi-utilisateurs",
|
||||
"Make sure you..." => "Assurez-vous que vous ne vous bloquez pas sur",
|
||||
"Registration" => "Enregistrement",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "Nécessaire pour obtenir les diffs, procéder à un commit sur votre projet sous GitHub. Si vous n'en avez pas, vous pouvez utiliser un :".PHP_EOL.PHP_EOL.
|
||||
"- jeton/token d'accès personel (https://help.github.com/articles/creating-an-access-token-for-command-line-use), ou un jeton/token ".PHP_EOL.
|
||||
" client/paire secrète (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"Il n'est pas recommandé de définir votre jeton ici, cependant, il est plus sûr de l'entrer à la demande d'ICEcoder car cela le garde uniquement en session.".PHP_EOL.PHP_EOL.
|
||||
"Cependant, si vous travaillez dans un environnement fiable et sécurisé, il est plus efficace de le mettre ici.",
|
||||
"Sorry cannot commit..." => "Désolé, vous ne pouvez pas modifier les préférences en mode de démonstration",
|
||||
"update" => "Mise à jour"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Impossibilité de mettre à jour le fichier de configuration. Vérifiez les permissions d'écriture sur celui-ci",
|
||||
"and try again" => "et essayez de nouveau",
|
||||
"and press refresh" => "et pressez le rafraîchissement de la page"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "La mise à jour semble s'être réalisée avec succès"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
396
lang/german.php
Normal file
@@ -0,0 +1,396 @@
|
||||
<?php
|
||||
// German language translation
|
||||
// by: @olliiee (GitHub)
|
||||
// @trolliusgigant (Twitter)
|
||||
|
||||
// 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>Klick auf das Icon<br>für Hilfe &<br>Anwendungsbeispielen</b>",
|
||||
"server" => "Server",
|
||||
"Server name, OS..." => "Servername, OS & IP:",
|
||||
"Root" => "Root:",
|
||||
"ICEcoder root" => "ICEcoder root:",
|
||||
"PHP version" => "PHP Version:",
|
||||
"Date & time" => "Datum & Uhrzeit:",
|
||||
"your device" => "Dein Gerät",
|
||||
"Browser" => "Browser:",
|
||||
"Your IP" => "Deine IP:",
|
||||
"files" => "Dateien",
|
||||
"Last 10 files..." => "Die letzten 10 geöffneten Dateien:",
|
||||
"none" => "[nichts]",
|
||||
"test suite" => "Test Suite",
|
||||
"Run unit tests" => "Unittest starten",
|
||||
"dev mode" => "Entwicklermodus",
|
||||
"Status" => "Status",
|
||||
"Using" => "Verwenden",
|
||||
"You can switch..." => "Du kannst den Entwicklermodus in der in lib/config__settings.php ein- und ausschateln",
|
||||
"results" => "Ergebnis"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Sperren",
|
||||
"Refresh" => "Erneueren",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
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",
|
||||
"working" => "arbeite",
|
||||
"Color picker" => "Farbauswahl",
|
||||
"New File" => "Neue Datei",
|
||||
"New Folder" => "Neuer Ordner",
|
||||
"Upload File(s)" => "Dateie(n) hochladen",
|
||||
"Paste" => "Einfügen",
|
||||
"Open" => "Öffnen",
|
||||
"Copy" => "Kopiere",
|
||||
"Duplicate" => "Duplizieren",
|
||||
"Delete" => "Löschen",
|
||||
"Rename" => "Umbenennen",
|
||||
"View Webpage" => "Webseite anzeigen",
|
||||
"Download" => "Herunterladen",
|
||||
"Properties" => "Einstellungen",
|
||||
"File" => "Datei",
|
||||
"Edit" => "Editieren",
|
||||
"Remote" => "Fernzugriff",
|
||||
"Help" => "Hilfe",
|
||||
"Save" => "Speichern",
|
||||
"Save As" => "Speichern als",
|
||||
"Live Preview" => "Live Vorschau",
|
||||
"Upload" => "Hochladen",
|
||||
"Zip" => "Zip",
|
||||
"Print" => "Drucken",
|
||||
"Fullscreen toggle" => "Vollbildmodus wechseln",
|
||||
"Logout" => "Ausloggen",
|
||||
"Undo" => "Rückgängig",
|
||||
"Redo" => "Wiederherstellen",
|
||||
"Indent more" => "Einzug vergrößern",
|
||||
"Indent less" => "Einzug verkleinern",
|
||||
"Autocomplete" => "Auto vervollständigen",
|
||||
"Comment/Uncomment" => "Kommentieren/Auskommentieren",
|
||||
"Jump to Definition" => "Springe zur Definition",
|
||||
"Manual" => "Anleitung",
|
||||
"Shortcuts" => "Schnellzugriffe",
|
||||
"Settings" => "Einstellungen",
|
||||
"Search for selected" => "Nach selektiertem suchen",
|
||||
"website" => "Website",
|
||||
"Close all tabs" => "Alle Tabs schließen",
|
||||
"Alphabetize tabs" => "Tabs alphabetisch sortieren",
|
||||
// "Find" => "Finden",
|
||||
// "in" => "in",
|
||||
// "and" => "und",
|
||||
// "replace" => "ersetzen",
|
||||
// "replace all" => "alle ersetzen",
|
||||
// "this document" => "dieses Dokument",
|
||||
// "open documents" => "geöffnete Dokumente",
|
||||
// "all files" => "Alle Dateien",
|
||||
// "all filenames" => "Alle Dateinamen",
|
||||
"Turn on/off..." => "Codeassistenten ein- ausschalten",
|
||||
"Code Assist" => "Codeassistent",
|
||||
"Go to Line" => "Geh zur Zeile",
|
||||
"View" => "Anzeigen",
|
||||
"Bug reporting not active" => "Fehlermeldungen sind nicht aktiv"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Gefunden in:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Entschuldigung",
|
||||
"does not seem..." => "Es scheint auf dem Server nicht zu existieren",
|
||||
"Sorry, could not..." => "Entschuldigung, kann den Inhalte von",
|
||||
"Sorry, cannot create..." => "Entschuldigung, kann den Ordner nicht erstellen in",
|
||||
"Sorry, cannot copy" => "Entschuldigung, kann nicht kopieren",
|
||||
"into" => "in",
|
||||
"Uploaded file(s) OK" => "Hoch geladene Datei(n) OK",
|
||||
"Sorry, cannot upload" => "Entschuldigung, kann nicht hochladen",
|
||||
"Sorry, cannot upload..." => "Entschuldigung, kann solange nicht hochladen, solange der Demo Modus aktiv ist",
|
||||
"Sorry, cannot rename" => "Entschuldigung, kann nicht umbenennen",
|
||||
"Maybe public write..." => "Vielleicht fehlen Schreibrechte auf dem übergeordneten Ordner?",
|
||||
"Sorry, cannot move" => "Entschuldigung, kann nicht verschieben",
|
||||
"Sorry, cannot save" => "Entschuldigung, kann nicht speichern",
|
||||
"Sorry, cannot replace..." => "Entschuldigung, kann den Text nicht ersetzen",
|
||||
"Sorry, cannot change..." => "Entschuldigung, kann die Berechtigung nicht ändern für",
|
||||
"Sorry, cannot delete..." => "Entschuldigung, kann das Hauptverzeichnis nicht löschen",
|
||||
"Sorry, cannot delete" => "Entschuldigung, kann nicht löschen",
|
||||
"Sorry, this file..." => "Entschuldigung, die Datei wurde geändert, kann nicht speichern",
|
||||
"Reload this file..." => "Soll die Datei mit deiner neueren Version neu geladen werden?",
|
||||
"There was a..." => "Irgend was ist schief gelaufen. ICEcoder lädt einfach noch mal neu.",
|
||||
"displayed at" => "angezeigt bei",
|
||||
"Enter filename to..." => "Dateinamen eingeben um es zu speichern",
|
||||
"That file exists..." => "Die Datei existiert bereits, überschreiben?",
|
||||
"Saving" => "Speichere"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Es gibt keinen Unterschied zwischen der lokalen Datei und dem im GitHub Repo. Zurück zum regulären Modus?",
|
||||
"Sorry, there was..." => "Entschuldigung, es ist ein Fehler aufgetreten. Fehlercode:",
|
||||
"Your local folder..." => "Dein lokales Verzeichnis ist leer, soll es geklont werden"
|
||||
),
|
||||
|
||||
"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",
|
||||
"and try again" => "und versuch es noch einmal",
|
||||
"saving github paths" => "Speichere GitHub Pfad ...",
|
||||
"github paths" => "GitHub Pfad",
|
||||
"Choose existing path" => "Wähle existierenden Pfad",
|
||||
"Local path" => "Lokaler Pfad",
|
||||
"Remote GitHub path" => "Ferner GitHub Pfad",
|
||||
"Choose" => "Whähle",
|
||||
"Set local and..." => "Lösch lokalen und fernen Pfad",
|
||||
"Update" => "Aktualisieren",
|
||||
"Add new path" => "Neuen Pfad hinzufügen",
|
||||
"Add" => "Hinfzufügen",
|
||||
"Usage Info" => "Infos zur Verwendung:",
|
||||
"Enter relative local..." => "Gib den relativen, lokalen Pfad (z.B. /server/meineDateien) und absoluten GitHub Pfad (z.B. https://github.com/user/repo oder https://github.com/user/repo/tree/branch für branches), wie im Beispiel an. Dadurch werden die entsprechenden Quellverzeichnisse als Paar angelegt.",
|
||||
"You can then..." => "Du kannst ein Paar auswählenn, welches als neues Root Verzeichnis in ICECoder festgelegt wird.",
|
||||
"The file manager..." => "Im Dateimanager erscheint ein GitHub Icon. Durch einen Klick auf das Icon, werden die Unterschiede zwischen beiden Versionen angezeigt. Diese Unterschiede können committed und zum GitHub Repo gepusht, oder zum lokale Pfad geklont werden.",
|
||||
"If you want..." => "Soll ein weiterers Hauptverzeichnis gesetzt werden, kann dies in den Einstellungen vorgenommen werden."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Es scheint so, als sei OpenSSL nicht mit PHP geladen worden, dadurch steht https nicht zur verfügung. Dies wird jedoch für den Datentransfer zu GitHub benötigt. Bitte die PHP.ini entsprechend anpassen und neu starten."
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Fehlerhafter CSRF Token. Bitte den Fehler an https://github.com/mattpass/ICEcoder damit das Problem gelöst werden kann."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "shortcuts",
|
||||
"Within document" => "Innerhalb des Dokuments",
|
||||
"On Tabs" => "Geöffnete Tabs",
|
||||
"Within file manager" => "Innerhalb des Dateimanagers",
|
||||
"Anywhere" => "Überall",
|
||||
"Space" => "Leerzeichen",
|
||||
"Click" => "Klick",
|
||||
"or" => "oder",
|
||||
"Left click" => "Linksklick",
|
||||
"Middle click" => "mittlerer Klick",
|
||||
"Double click tap..." => "Doppelklick / Tap (Mobile)",
|
||||
"Right click" => "Rechtsklick",
|
||||
"Middle scrollwheel" => "mittleres Mausrad",
|
||||
"Drag" => "Ziehen",
|
||||
"Autocomplete add snippet" => "Autocomplete / snippet hinzufügen",
|
||||
"Multiple select" => "Mehrfachauswahl",
|
||||
"Move line up" => "Zeile höher",
|
||||
"Move line down" => "Zeile runter",
|
||||
"Duplicate lines" => "Zeile(n) duplizieren",
|
||||
"Remove lines" => "Zeile(n) entfernen",
|
||||
"Insert line before" => "Zeile vorher einfügen",
|
||||
"Insert line after" => "Zeile danach einügen",
|
||||
"Search for selected" => "Nach dem gesuchten auswählen",
|
||||
"Jump to definition" => "Zur Definition springen / zur¨ck springen",
|
||||
"Comment uncomment" => "Kommentieren / Auskommentieren",
|
||||
"Insert tab indent" => "Tab einfügen / Gedankenstrich selektiert",
|
||||
"Wrap with div" => "Mit <div> umschließen",
|
||||
"Wrap with span" => "Mit <span> umschließen",
|
||||
"Wrap unwrap p" => "Umschließen / unwrap with <p>",
|
||||
"Wrap unwrap a" => "Umschließen / Mit <a> auschließen",
|
||||
"Wrap unwrap b" => "Umschließen / Mit <b> auschließen",
|
||||
"Wrap unwrap i" => "Umschließen / Mit <i> auschließen",
|
||||
"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>",
|
||||
"Close tab" => "Tab schließen",
|
||||
"Select file folder" => "Datei / Verzeichnis ausählen",
|
||||
"Open file" => "Datei öffnen",
|
||||
"Range select" => "Bereich auswählen",
|
||||
"Options for selected" => "Optionen für ausgewählte",
|
||||
"Delete selected" => "Ausgewählte löschen",
|
||||
"Next previous tab" => "Nächster / Vorheriger Tab",
|
||||
"Next tab" => "Nächster Tab",
|
||||
"Previous tab" => "Vorheriger Tab",
|
||||
"New tab" => "Neuer Tab",
|
||||
"Close current tab" => "Aktuellen Tab schließen",
|
||||
"Open file prompt" => "Datei öffnen Dialog anzeigen",
|
||||
"Find" => "Finden",
|
||||
"Focus on Go..." => "Fokus auf Gehe zu Zeile Feld setzen",
|
||||
"Save" => "Speichern",
|
||||
"Save as" => "Speichern als ...",
|
||||
"View webpage" => "Webseite anzeigen",
|
||||
"Contract expand file..." => "Alle Dateien / Verzeichnisse anzeigen",
|
||||
"Fold unfold current..." => "Aktuelle Zeile einklappen",
|
||||
"Refocus on document" => "Erneut den Fokus auf das Dokument setzen",
|
||||
"Cancel tasks" => "Vorgang abbrechen"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "Passwort setzen",
|
||||
"login" => "Login",
|
||||
"To disable registration..." => "Um den Registrierungsmodus zu deaktivieren, öffne im Menü die Einstellungen oder die Datein lib/config___settings.php und setze unter enableRegistration auf false, danach lade die Seite erneut.",
|
||||
"Registration mode enabled" => "Registrierungsmodus aktiviert",
|
||||
"auto-check for updates" => "Automatisch nach Update suchen",
|
||||
"To put into..." => "Um den Mehrbenutzermodus zu aktivieren, öffne im Menü die Einstellungen oder die Datein lib/config___settings.php und setze unter multiUser auf true, danach lade die Seite erneut",
|
||||
"multi-user" => "Mehrbenutzermodus"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "Alle umbenennen",
|
||||
"replace all" => "Alle ersetzen",
|
||||
"document" => "Dokument",
|
||||
"Found" => "Gefunden",
|
||||
"times" => "",
|
||||
"replace" => "ersetzen",
|
||||
"file folder" => "Datei/Verzeichnis",
|
||||
"rename to" => "Umbenennen nach",
|
||||
"rename" => "Umbenennen",
|
||||
"file" => "Datei",
|
||||
"No matches found" => "Nichts gefunden",
|
||||
"selected" => "Ausgewählte",
|
||||
"found in" => "Gefunden in",
|
||||
"Replaced" => "Ersetzen"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder muss neu geladen werden, damit das Plugin genutzt werden kann. Jetzt neu laden?",
|
||||
"saving plugins" => "speicher 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",
|
||||
"Manage Installed" => "Geführte Installtion",
|
||||
"URL" => "URL",
|
||||
"Target" => "Ziel",
|
||||
"Timer" => "Timer",
|
||||
"Update" => "Update",
|
||||
"Install" => "Installieren",
|
||||
"Uninstall" => "Deinstallieren",
|
||||
"Reload after install..." => "Neuladen nach der Installation erforderlich"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "Eigenschaften",
|
||||
"Size" => "Größe",
|
||||
"Modified" => "Verändert",
|
||||
"Last access" => "Letzter Zugriff",
|
||||
"Type" => "Typ",
|
||||
"Readable Writeable" => "Lesbar / Schreibbar",
|
||||
"Relative path" => "Relativer Pfad",
|
||||
"Absolute path" => "Absoluter Pfad",
|
||||
"Contains" => "Beinhaltet",
|
||||
"Permissions" => "Berechtigungen",
|
||||
"Owner" => "Besitzer",
|
||||
"Group" => "Gruppe",
|
||||
"Public" => "Öffentlich",
|
||||
"Read" => "Lesen",
|
||||
"Write" => "Schreiben",
|
||||
"Execute" => "Ausführen",
|
||||
"Change to" => "Ändern um",
|
||||
"update" => "aktualisieren"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Das Dokument scheint nicht in UTF-8 codiert zu sein, darum wurde es angepasst"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kann Konfigurationsdatei nicht aktualisieren. Bitte Schreibrechte vergeben",
|
||||
"and try again" => "und versuch es noch mal"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "Einstellungen",
|
||||
"version" => "Version",
|
||||
"website" => "Website",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "gespiegeltes Verzeichnis",
|
||||
"codemirror version" => "gespiegelte Version",
|
||||
"file manager root" => "Grundverzeichnis 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",
|
||||
"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",
|
||||
"security" => "Sicherheit",
|
||||
"new password" => "neues Passwort",
|
||||
"8 chars min" => "8 Zeichen mindestens",
|
||||
"confirm password" => "Passwort bestätigen",
|
||||
"banned files/folders" => "verbannte Dateien/Verzeichnisse",
|
||||
"banned paths" => "verbannte Verzeichnisse",
|
||||
"ip addresses" => "IP Adressen",
|
||||
"Slash prefixed comma..." => "Schrägstrich vorangestellt, durch Komma getrennt",
|
||||
"Comma delimited" => "Komma getrennt",
|
||||
"style" => "Style",
|
||||
"theme" => "Theme",
|
||||
"line wrapping" => "Zeilenumbruch",
|
||||
"indent type" => "Gedankenstrich Typ",
|
||||
"indent size" => "Größe Gedankenstrich",
|
||||
"font size" => "Schriftgröße",
|
||||
"layout" => "Layout",
|
||||
"plugin panel aligned" => "Plugin-Panel ausgerichtet",
|
||||
"file manager" => "Dateimanager",
|
||||
"root" => "Stamm",
|
||||
"Slash prefixed" => "Schrägstrich vorangestellt",
|
||||
"bug reporting" => "Fehlermeldung",
|
||||
"check in files" => "Dateien einchecken",
|
||||
"every" => "jeden",
|
||||
"secs getting last" => "Sekunden, immer zuletzt",
|
||||
"lines" => "Zeilen",
|
||||
"multi-user" => "Mehrbenutzer",
|
||||
"Make sure you..." => "Sei sicher, dass du dich nicht selber aussperrst",
|
||||
"Registration" => "Registrieren",
|
||||
"auth token" => "Authetifizierungs-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.
|
||||
"Es ist nicht zu empfehlen den Token hier zu speichern, sondern wenn ICEcoder dazu auffordert. Dadurch gilt der Token immer nur pro Sitzung.".PHP_EOL.PHP_EOL.
|
||||
"Jedoch, wenn du in einer sicheren und vertrauensvollen Umgebung (privater PC, Laptop, ..) arbeitest, ist es Sinnvoll ihn hier einzugeben.",
|
||||
"Sorry cannot commit..." => "Entschuldigung, kann Einstellungen im Demo-Modus nicht übernehmen",
|
||||
"update" => "aktualisieren"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kann Konfigurationsdatei nicht aktualisieren. Bitte Schreibrechte vergeben",
|
||||
"and try again" => "und versuch es noch einmal",
|
||||
"and press refresh" => "und drück Neu laden"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Update scheint erolgreich gelaufen zu sein"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
435
lang/italian.php
Normal file
@@ -0,0 +1,435 @@
|
||||
<?php
|
||||
// Italian language translation
|
||||
// by: @pietrondo (GitHub)
|
||||
// @pietrobravo (Twitter)
|
||||
// blog.pietrocapriata.me (sito web)
|
||||
// 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>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:",
|
||||
"ICEcoder root" => "ICEcoder root:",
|
||||
"PHP version" => "Versione PHP",
|
||||
"Date & time" => "Ora e data:",
|
||||
"your device" => "dispositivo in uso",
|
||||
"Browser" => "Browser:",
|
||||
"Your IP" => "Il tuo IP:",
|
||||
"files" => "file",
|
||||
"Last 10 files..." => "Ultimi 10 file aperti:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "prova suite",
|
||||
"Run unit tests" => "Esegui test di unità",
|
||||
"dev mode" => "modalità sviluppo",
|
||||
"Status" => "Stato",
|
||||
"Using" => "Utilizzo",
|
||||
"You can switch..." => "È possibile attivare/disattivare la modalità sviluppo nel file lib/config__settings.php"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Blocca",
|
||||
"Refresh" => "Aggiorna",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "INFORMAZIONI AGGIORNAMENTO",
|
||||
"now available" => "Èora disponibile",
|
||||
"Your version is" => "La tua versione Egrave;",
|
||||
"Update now" => "Aggiorna ora",
|
||||
"You have some..." => "Ci sono modifiche non salvate",
|
||||
"working" => "working",
|
||||
"Color picker" => "Selettore di colore",
|
||||
"New File" => "Nuovo file",
|
||||
"New Folder" => "Nuova cartella",
|
||||
"Upload File(s)" => "Carica File",
|
||||
"Paste" => "Incolla",
|
||||
"Open" => "Apri",
|
||||
"Copy" => "Copia",
|
||||
"Duplicate" => "Duplica",
|
||||
"Delete" => "Elimina",
|
||||
"Rename" => "Rinomina",
|
||||
"View Webpage" => "Visualizza la pagina web",
|
||||
"Download" => "Download",
|
||||
"Properties" => "Propietà",
|
||||
"File" => "File",
|
||||
"Edit" => "Modifica",
|
||||
"Remote" => "Remoto",
|
||||
"Help" => "Aiuto",
|
||||
"Save" => "Salva",
|
||||
"Save As" => "Salva come",
|
||||
"Live Preview" => "Anteprima",
|
||||
"Upload" => "Upload",
|
||||
"Zip" => "Comprimi",
|
||||
"Print" => "Stampa",
|
||||
"Fullscreen toggle" => "Modalità schermo intero",
|
||||
"Logout" => "Logout",
|
||||
"Undo" => "Annulla",
|
||||
"Redo" => "Riesegui",
|
||||
"Indent more" => "Aumenta rientro",
|
||||
"Indent less" => "Riduci rientro",
|
||||
"Autocomplete" => "Autocompleta",
|
||||
"Comment/Uncomment" => "Commenta/Rimuovi commento",
|
||||
"Jump to Definition" => "Vai alla Definizione",
|
||||
"Manual" => "Manuale",
|
||||
"Shortcuts" => "Scorciatorie",
|
||||
"Settings" => "Configurazione",
|
||||
"Search for selected" => "Cerca selezionato",
|
||||
"website" => "sito web",
|
||||
"Close all tabs" => "Chiudi tutte le schede",
|
||||
"Alphabetize tabs" => "Ordina le schede",
|
||||
"Find" => "Trova",
|
||||
"in" => "in",
|
||||
"and" => "e",
|
||||
"replace" => "sostituisci",
|
||||
"replace all" => "sostituisci tutto",
|
||||
"this document" => "questo documento",
|
||||
"open documents" => "apri documenti",
|
||||
"all files" => "tutti i file",
|
||||
"all filenames" => "tutti i nomi",
|
||||
"Turn on/off..." => "Attiva/disattiva code assist",
|
||||
"Code Assist" => "Code Assist",
|
||||
"Go to Line" => "Vai alla linea",
|
||||
"View" => "Visualizza",
|
||||
"Bug reporting not active" => "Segnalazione bug non attiva"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Trovato in:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Spiacente",
|
||||
"does not seem..." => "non sembra esistere sul server",
|
||||
"Sorry, could not..." => "Siamo spiacenti, non è possibile ottenere i contenuti di",
|
||||
"Sorry, cannot create..." => "Siamo spiacenti, non è possibile creare una cartella a",
|
||||
"Sorry, cannot copy" => "Siamo spiacenti, non è possibile copiare",
|
||||
"into" => "into",
|
||||
"Uploaded file(s) OK" => "Upload file Ok",
|
||||
"Sorry, cannot upload" => "Siamo spiacenti, non è possibile caricare",
|
||||
"Sorry, cannot upload..." => "Siamo spiacenti , non è possibile caricare mentre in modalità demo",
|
||||
"Sorry, cannot rename" => "Siamo spiacenti , non è possibile rinominare",
|
||||
"Maybe public write..." => "Forse sono necessari permessi di scrittura pubblica su questa o sulla cartella principale??",
|
||||
"Sorry, cannot move" => "Siamo spiacenti, non è possibile muovere",
|
||||
"Sorry, cannot save" => "Siamo spiacenti, non è possibile salvare",
|
||||
"Sorry, cannot replace..." => "Siamo spiacenti, non è possibile sostituire il testo",
|
||||
"Sorry, cannot change..." => "Siamo spiacenti, non è possibile cambiare i permessi",
|
||||
"Sorry, cannot delete..." => "Siamo spiacenti, non è possibile cancellare la cartella root",
|
||||
"Sorry, cannot delete" => "Siamo spiacenti, non è possibile cancellare",
|
||||
"Sorry, this file..." => "Siamo spiacenti, questo file è stato cambiato, non è possibile salvarlo",
|
||||
"Reload this file..." => "Ricarica questo file e copia la tua versione in un pannello differente",
|
||||
"There was a..." => "C'è stato un problema tecnico, probabilmente qualcosa che non era ancora pronto. Così ICEcoder ha ricaricato di nuovo il file.",
|
||||
"displayed at" => "visualizzato in",
|
||||
"Enter filename to..." => "Inserisci il nome del file da salvare in",
|
||||
"That file exists..." => "Questo file esiste già, sovrascrivere??",
|
||||
"Saving" => "Stiamo salvando"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Non ci sono differenze tra il repo locale e GitHub. Tornare alla modalità normale??",
|
||||
"Sorry, there was..." => "Spiacente, c'è stato un errore, il codice:",
|
||||
"Your local folder..." => "La cartella locale è vuota, ti piacerebbe clonare"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Siamo spiacenti, non è possibile creare la cartella in",
|
||||
"Cannot update config..." => "Impossibile aggiornare il file di configurazione. Si prega di impostare i permessi di scrittura pubblica su",
|
||||
"and try again" => "e prova ancora",
|
||||
"saving github paths" => "salvando il percorso di github...",
|
||||
"github paths" => "percorso di github",
|
||||
"Choose existing path" => "Scegli il percorso esistente",
|
||||
"Local path" => "Percorso locale",
|
||||
"Remote GitHub path" => "Remote GitHub path",
|
||||
"Choose" => "Scegli",
|
||||
"Set local and..." => "Imposta percorso locale e remoto, lasciare vuoto per per rimuovere",
|
||||
"Update" => "Aggiorna",
|
||||
"Add new path" => "Aggiungi nuovo percorso",
|
||||
"Add" => "Aggiungi",
|
||||
"Usage Info" => "Usage Info:",
|
||||
"Enter relative local..." => "Inserisci percorsi locali relativi (ad esempio / server / myfiles) e percorsi assoluti GitHub (ad es https://github.com/user/repo o https://github.com/user/repo/tree/branch per le filiali), come da gli esempi.",
|
||||
"You can then..." => "È quindi possibile scegliere un percorso e questo allora diventa il tuo nuovo percorso principale in ICEcoder.",
|
||||
"The file manager..." => "Il file manager visualizza una nuova icona GitHub, su cui è possibile fare clic su per eseguire e mostrare un controllo diff tra le 2 fonti. Questi diff possono essere validati e inviati al percorso remoto a GitHub o clonati in un percorso locale, per la sincronizzazione dei file.",
|
||||
"If you want..." => "If you want to set another root path, this can be done in the Settings screen."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Siamo spiacenti, non sembra avere OpenSSL caricato nella vostra installazione PHP, quindi https non è disponibile. Questo è necessario per GitHub il trasferimento dei dati, si prega di modificare le impostazioni di php.ini, di riavviare il server e riprovare"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Bad CSRF token. Per favore riporta l'errore a https://github.com/mattpass/ICEcoder così che possa essere fixato."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "shortcuts",
|
||||
"Within document" => "all'interno del documento",
|
||||
"On Tabs" => "Sulle Tabs",
|
||||
"Within file manager" => "All'interno del file manager",
|
||||
"Anywhere" => "Dappertutto",
|
||||
"Space" => "Spazio",
|
||||
"Click" => "Click",
|
||||
"or" => "o",
|
||||
"Left click" => "Click Sinistro",
|
||||
"Middle click" => "Click centrale",
|
||||
"Double click tap..." => "Doppio click / tap (mobile)",
|
||||
"Right click" => "Click Destro",
|
||||
"Middle scrollwheel" => "scrollwheel Medio",
|
||||
"Drag" => "Trascina",
|
||||
"Autocomplete add snippet" => "Completamento automatico / aggiungi snippet",
|
||||
"Multiple select" => "Selezione multiple",
|
||||
"Move line up" => "Vai alla linea sopra",
|
||||
"Move line down" => "Vai alla linea sotto",
|
||||
"Duplicate lines" => "Duplica linea(e)",
|
||||
"Remove lines" => "Rimuovi linea(e)",
|
||||
"Insert line before" => "Inserisci linea prima di",
|
||||
"Insert line after" => "Inserisci linea dopo di",
|
||||
"Search for selected" => "Cerca selezionati",
|
||||
"Jump to definition" => "Vai a definizione / torna indietro",
|
||||
"Comment uncomment" => "Commento / decommenta",
|
||||
"Insert tab indent" => "Inserisci tab / rientro selezionato",
|
||||
"Wrap with div" => "Includi con <div>",
|
||||
"Wrap with span" => "Includi <span>",
|
||||
"Wrap unwrap p" => "Includi / escludi con <p>",
|
||||
"Wrap unwrap a" => "Includi / escludi con <a>",
|
||||
"Wrap unwrap b" => "Includi / escludi con <b>",
|
||||
"Wrap unwrap i" => "Includi / escludi con <i>",
|
||||
"Wrap unwrap strong" => "Includi / escludi con <strong>",
|
||||
"Wrap unwrap em" => "Includi / escludi con <em>",
|
||||
"Wrap unwrap li" => "Includi / escludi con <li>",
|
||||
"Wrap unwrap h1..." => "Includi / escludi con <h1> - <h3>",
|
||||
"End line with..." => "Finisci la linea con <br>",
|
||||
"Close tab" => "Chiudi tab",
|
||||
"Select file folder" => "Seleziona file, cartella",
|
||||
"Open file" => "Apri file",
|
||||
"Range select" => "Seleziona range",
|
||||
"Options for selected" => "Opzioni per selezionati",
|
||||
"Delete selected" => "Elimina selezionati",
|
||||
"Next previous tab" => "Tab successiva / precedente",
|
||||
"Next tab" => "Tab successiva",
|
||||
"Previous tab" => "Tab precedente",
|
||||
"New tab" => "Nuova tab",
|
||||
"Close current tab" => "Chiudi tab corrente",
|
||||
"Open file prompt" => "Open file prompt",
|
||||
"Find" => "Trova",
|
||||
"Focus on Go..." => "Focus on Go to line input",
|
||||
"Save" => "Salva",
|
||||
"Save as" => "Salva come...",
|
||||
"View webpage" => "Vedi pagina web",
|
||||
"Contract expand file..." => "Contrai / espandi file manager",
|
||||
"Fold unfold current..." => "Piega / dispiega riga corrente",
|
||||
"Refocus on document" => "Refocus sul documento",
|
||||
"Cancel tasks" => "Cancella compito"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "Nessun testo selezionato per la ricerc",
|
||||
"all files" => "tutti i file",
|
||||
"all filenames" => "tutti i nomi dei file",
|
||||
"selected files" => "seleziona file",
|
||||
"selected filenames" => "seleziona nomi dei file",
|
||||
"Creating Folder" => "Sto creando una cartla",
|
||||
"Sorry you can..." => "Spiacente, puoi avere solo 100 file aperti a volta!",
|
||||
"Opening File" => "Apertura file",
|
||||
"Enter relative file..." => "Digita il percorso relativo (con / di prefisso) o l'url remoto",
|
||||
"Getting" => "Getting",
|
||||
"Please enter the..." => "Per favore digita un nuovo nome per",
|
||||
"Renaming to" => "Rinominando a ",
|
||||
"Moving to" => "Muovendo a",
|
||||
"Deleting File" => "Eliminando file",
|
||||
"Pasting File" => "Incollando file",
|
||||
"Sorry cannot paste..." => "Spiacente, ma non puoi copiare un intera radice",
|
||||
"Nothing to paste..." => "Niente da copiare, copia prima un file o una cartella!",
|
||||
"and" => "e",
|
||||
"this document" => "questo documento",
|
||||
"replace" => "sostituisci",
|
||||
"replace all" => "sostituisci tutto",
|
||||
"file" => "file",
|
||||
"Replacing text in" => "Sostituisci il testo con",
|
||||
"Cancelled tasks" => "Compiti cancellati",
|
||||
"Open previous files" => "Aprire i file precedenti?",
|
||||
"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",
|
||||
"This will compare..." => "Questo confronterà e mostrarà la diff tra il dir locale e il repository. Ok?",
|
||||
"Please note for..." => "Si prega di notare: affinche l'aggiornamento funzioni correttamente, è necessario disporre dei permessi di scrittura e cancellazione su tutti le cartelle e file di ICEcoder e. Se è necessario ripristinare questa versione di ICEcoder per qualsiasi motivo, lo troverete nella directory / tmp dir. Fare clic su OK per procedere con l'aggiornamento automatico o annullare a visitare il sito ICEcoder in modo da poter utilizzare la zip e aggiornare manualmente.",
|
||||
"You can start..." => "Puoi ripoertare il bug in Help > Settings",
|
||||
"Error cannot find..." => "Error: cannot find/access the error file paths",
|
||||
"No new errors..." => "Nessun nuovo errore trovato",
|
||||
"You have made..." => "Hai fatto alcuni cambiamenti. Sei sicuro che vuoi chiudere senza prima salvare?",
|
||||
"Close all tabs" => "Chiudere tutte le tabs?",
|
||||
"results" => "risultati"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "imposta password",
|
||||
"login" => "login",
|
||||
"To disable registration..." => "Per disattivare la modalità di registrazione, apri il menu delle impostazioni o aprire lib/config___settings.php e cambia enableRegistration in false quindi ricarica questa pagina",
|
||||
"Registration mode enabled" => "Modalità di registrazione abilitata",
|
||||
"auto-check for updates" => "auto-check per aggiornamenti",
|
||||
"To put into..." => "Per mettere in modalità multi-utente, aprire il menu delle impostazioni o apri lib / config ___ settings.php e cambiare multiutente su true quindi ricarica questa pagina",
|
||||
"multi-user" => "multi-user"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "rename all",
|
||||
"replace all" => "replace all",
|
||||
"document" => "document",
|
||||
"Found" => "Found",
|
||||
"times" => "times",
|
||||
"replace" => "replace",
|
||||
"file folder" => "file/folder",
|
||||
"rename to" => "rename to",
|
||||
"rename" => "rename",
|
||||
"file" => "file",
|
||||
"No matches found" => "No matches found",
|
||||
"selected" => "selected",
|
||||
"found in" => "found in",
|
||||
"Replaced" => "Replaced"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder needs to reload to make this plugin usable. Reload now?",
|
||||
"saving plugins" => "saving plugins...",
|
||||
"Cannot update config..." => "Cannot update config file. Please set public write permissions on",
|
||||
"and try again" => "and try again",
|
||||
"couldnt delete dir" => "could not delete dir",
|
||||
"couldnt delete file" => "could not delete file",
|
||||
"plugins" => "plugins",
|
||||
"Guide to writing..." => "Guide to writing plugins",
|
||||
"Manage Installed" => "Manage Installed",
|
||||
"URL" => "URL",
|
||||
"Target" => "Target",
|
||||
"Timer" => "Timer",
|
||||
"Update" => "Update",
|
||||
"Install" => "Install",
|
||||
"Uninstall" => "Uninstall",
|
||||
"Reload after install..." => "Reload after install required"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "Proprietà",
|
||||
"Size" => "Dimensione",
|
||||
"Modified" => "Modificato",
|
||||
"Last access" => "Ultimo accesso",
|
||||
"Type" => "Type",
|
||||
"Readable Writeable" => "Leggibile / Scrivibile",
|
||||
"Relative path" => "Percorso relativo",
|
||||
"Absolute path" => "Percorso assoluto",
|
||||
"Contains" => "Contiene",
|
||||
"Permissions" => "Permessi",
|
||||
"Owner" => "Proprietario",
|
||||
"Group" => "Gruppo",
|
||||
"Public" => "Pubblico",
|
||||
"Read" => "Lettura",
|
||||
"Write" => "Scrittura",
|
||||
"Execute" => "Esecuzione",
|
||||
"Change to" => "Cambia a",
|
||||
"update" => "aggiorna"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Il tuo documento non sembra essere in formato UTF-8 per questo viene corretto"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Impossibile aggiornare il file di configurazione. Si prega di impostare i permessi di scrittura pubblica su",
|
||||
"and try again" => "e prova ancora"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "settings",
|
||||
"version" => "versione",
|
||||
"website" => "sito web",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "dir codemirror ",
|
||||
"codemirror version" => "versione codemirror ",
|
||||
"file manager root" => "root di file manager ",
|
||||
"Free to use..." => "Libero di usarlo per i propri scopi, commerciali e non, facendomelo solo sapere per eventuali nuovi e interessanti utilizzi o personalizzazioni. :) <br> Nessuna garanzia o responsabilità, tutte le responsabilità di utilizzo è vostra. <br> Un sacco di aziende e persone fantastiche hanno contribuito a costruire ICEcoder e ce ne sarebbero troppi da ringraziare. Si prega di consultare la lista completa a",
|
||||
"functionality" => "funzionalità",
|
||||
"check for updates..." => "controlla aggiornamenti all'avvio",
|
||||
"auto open last..." => "Apri automaticamente ultimi file al login",
|
||||
"when finding in..." => "quando trovi nei file, escludi",
|
||||
"assisting" => "assisting",
|
||||
"code assist" => "code assist",
|
||||
"visible tabs" => "tab visibili",
|
||||
"locked nav" => "navigazione bloccata",
|
||||
"tag wrapper command" => "tag wrapper command",
|
||||
"auto-complete on" => "auto-completamento attivo",
|
||||
"security" => "sicurezza",
|
||||
"new password" => "nuova password",
|
||||
"8 chars min" => "8 caratteri minimo",
|
||||
"confirm password" => "conferma password",
|
||||
"banned files/folders" => "file e cartelle vietati",
|
||||
"banned paths" => "percorsi vietati",
|
||||
"ip addresses" => "indirizzo ip",
|
||||
"Slash prefixed comma..." => "slash di prefisso, delimitato da virgole",
|
||||
"Comma delimited" => "delimitato da virgole",
|
||||
"style" => "style",
|
||||
"theme" => "tema",
|
||||
"line wrapping" => "a capo automatico",
|
||||
"indent type" => "tipo di rientro",
|
||||
"indent size" => "dimensioni rientro",
|
||||
"font size" => "dimensione font ",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "Pannello plug inallineato",
|
||||
"file manager" => "file manager",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "barra obliqua prefisso",
|
||||
"bug reporting" => "bug reporting",
|
||||
"check in files" => "check in files",
|
||||
"every" => "ogni",
|
||||
"secs getting last" => "secs, getting last",
|
||||
"lines" => "linee",
|
||||
"multi-user" => "multi-user",
|
||||
"Make sure you..." => "Assicurati di non bloccarti fuori",
|
||||
"Registration" => "Registrazione",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "Necessario per ottenere diff, validare il votro repo GitHub ospitato ecc Se non ne avete uno, è possibile utilizzare un:".PHP_EOL.PHP_EOL.
|
||||
"-
|
||||
token di accesso personale (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"Non è consigliabile impostare il token qui e comunque è più sicuro inserirlo quando richiesto dal ICEcoder e verrà tenuto solamente durante la sessione.".PHP_EOL.PHP_EOL.
|
||||
"However, if you work in a trusted and secure environment, it is more efficient to set it here.",
|
||||
"Sorry cannot commit..." => "Siamo spiacenti, non è possibile modificare le impostazioni in modalità demo",
|
||||
"update" => "aggiorna"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Non posso aggiornare il file config. Per favore permetti l'accesso pubblico di scrittura",
|
||||
"and try again" => "e prova ancora",
|
||||
"and press refresh" => "e premi aggiorna"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "L'aggiornamento sembra andato bene"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
426
lang/norwegian.php
Normal file
@@ -0,0 +1,426 @@
|
||||
<?php
|
||||
// Norwegian language translation
|
||||
// by: @koseelg (GitHub)
|
||||
// @koseelg (Twitter)
|
||||
|
||||
// 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>Klikk på ikoner<br>for hjelp &<br>bruk av info</b>",
|
||||
"server" => "server",
|
||||
"Server name, OS..." => "Server navn, OS & IP:",
|
||||
"Root" => "Root:",
|
||||
"ICEcoder root" => "ICEcoder root:",
|
||||
"PHP version" => "PHP versjon:",
|
||||
"Date & time" => "Dato & tid:",
|
||||
"your device" => "din enhet",
|
||||
"Browser" => "Nettleser:",
|
||||
"Your IP" => "Din IP:",
|
||||
"files" => "filer",
|
||||
"Last 10 files..." => "Siste 10 åpne filer:",
|
||||
"none" => "[none]",
|
||||
"test suite" => "test suite",
|
||||
"Run unit tests" => "Kjør unit tests",
|
||||
"dev mode" => "utvikler modus",
|
||||
"Status" => "Status",
|
||||
"Using" => "Brukes",
|
||||
"You can switch..." => "Du kan slå utvikler modus på/av i lib/config__settings.php",
|
||||
"results" => "resultater"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "Steng",
|
||||
"Refresh" => "Last igjen",
|
||||
"ROOT" => "[ROOT]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "UPDATE INFO",
|
||||
"now available" => "Nå tilgjengelig",
|
||||
"Your version is" => "Din versjon er",
|
||||
"Update now" => "Oppdater nå",
|
||||
"You have some..." => "Du har noe ulagrede endringer",
|
||||
"working" => "arbeider",
|
||||
"Color picker" => "Fargevelger",
|
||||
"New File" => "Ny Fil",
|
||||
"New Folder" => "Ny Mappe",
|
||||
"Upload File(s)" => "Last opp Fil(er)",
|
||||
"Paste" => "Lim inn",
|
||||
"Open" => "Åpne",
|
||||
"Copy" => "Kopier",
|
||||
"Duplicate" => "Duplikat",
|
||||
"Delete" => "Slett",
|
||||
"Rename" => "Gi annet navn",
|
||||
"View Webpage" => "Vis Webside",
|
||||
"Download" => "Last ned",
|
||||
"Properties" => "Egenskaper",
|
||||
"File" => "Fil",
|
||||
"Edit" => "Redigere",
|
||||
"Remote" => "Ekstern",
|
||||
"Help" => "Hjelp",
|
||||
"Save" => "Lagre",
|
||||
"Save As" => "Lagre Som",
|
||||
"Live Preview" => "Direkte Forhåndsvisning",
|
||||
"Upload" => "Last opp",
|
||||
"Zip" => "Zip",
|
||||
"Print" => "Skriv ut",
|
||||
"Fullscreen toggle" => "Fullskjerm svitsj",
|
||||
"Logout" => "Loggut",
|
||||
"Undo" => "Angre",
|
||||
"Redo" => "Gjenta",
|
||||
"Indent more" => "Større innrykk",
|
||||
"Indent less" => "Mindre innrykk",
|
||||
"Autocomplete" => "Autokomplettere",
|
||||
"Comment/Uncomment" => "Kommentar/Fjern Kommentar",
|
||||
"Jump to Definition" => "Hopp til Definisjon",
|
||||
"Manual" => "Manual",
|
||||
"Shortcuts" => "Snarveier",
|
||||
"Settings" => "Innstillinger",
|
||||
"Search for selected" => "Søk for utvalgte",
|
||||
"website" => "webside",
|
||||
"Close all tabs" => "Lukk alle faner",
|
||||
"Alphabetize tabs" => "Ordne faner alfabetisk",
|
||||
"Find" => "Finn",
|
||||
"in" => "i",
|
||||
"and" => "og",
|
||||
"replace" => "erstatt",
|
||||
"replace all" => "erstatt alt",
|
||||
"this document" => "dette dokumentet",
|
||||
"open documents" => "åpne dokumenter",
|
||||
"all files" => "alle filer",
|
||||
"all filenames" => "alle filenavn",
|
||||
"Turn on/off..." => "Svitsj på/av kode assistenten",
|
||||
"Code Assist" => "Kode Assistenten",
|
||||
"Go to Line" => "Gå til Linje",
|
||||
"View" => "Vis",
|
||||
"Bug reporting not active" => "Bug rapportering ikke aktiv"
|
||||
),
|
||||
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "Funnet i:"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "Beklager",
|
||||
"does not seem..." => "synes ikke å eksistere på serveren",
|
||||
"Sorry, could not..." => "Beklager, kunne ikke få innholdet i",
|
||||
"Sorry, cannot create..." => "Beklager, kan ikke opprette mappe på",
|
||||
"Sorry, cannot copy" => "Beklager, kan ikke kopiere",
|
||||
"into" => "inn",
|
||||
"Uploaded file(s) OK" => "Opplastete fil(er) OK",
|
||||
"Sorry, cannot upload" => "Beklager, kan ikke laste opp",
|
||||
"Sorry, cannot upload..." => "Beklager, kan ikke laste opp i demo-modus",
|
||||
"Sorry, cannot rename" => "Beklager, kan ikke endre navn",
|
||||
"Maybe public write..." => "Kanskje det trengs offentlige skriverettigheter på denne, eller overordnede mappen?",
|
||||
"Sorry, cannot move" => "Beklager, kan ikke flytte",
|
||||
"Sorry, cannot save" => "Beklager, kan ikke lagre",
|
||||
"Sorry, cannot replace..." => "Beklager, kan ikke erstatte tekst i",
|
||||
"Sorry, cannot change..." => "Beklager, kan ikke endre tillatelser på",
|
||||
"Sorry, cannot delete..." => "Beklager, kan ikke slette rotnivå",
|
||||
"Sorry, cannot delete" => "Beklager, kan ikke slette",
|
||||
"Sorry, this file..." => "Beklager, denne filen er endret, kan ikke lagre",
|
||||
"Reload this file..." => "Skal denne filen lastes igjen og kopieres denne versjon til et nytt dokument?",
|
||||
"There was a..." => "Dette var en teknisk hikke, sannsynligvis var noe ikke helt klar. Så ICEcoder laster sin kontrollfil på nytt.",
|
||||
"displayed at" => "vises på",
|
||||
"Enter filename to..." => "Skriv inn filnavnet for å lagre på",
|
||||
"That file exists..." => "Denne filen eksisterer allerede, skriv over?",
|
||||
"Saving" => "Lagring"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "Det er ingen forskjeller mellom det lokale og GitHub lagringssted. Gå tilbake til vanlig modus?",
|
||||
"Sorry, there was..." => "Beklager, det var en feil, kode:",
|
||||
"Your local folder..." => "Din lokale mappe er tom, ønsker du å klone"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "Beklager, kan ikke opprette mappe på",
|
||||
"Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter",
|
||||
"and try again" => "og prøv igjen",
|
||||
"saving github paths" => "lagre GitHub stier...",
|
||||
"github paths" => "github stier",
|
||||
"Choose existing path" => "Velg eksisterende sti",
|
||||
"Local path" => "Lokal sti",
|
||||
"Remote GitHub path" => "Ekstern GitHub sti",
|
||||
"Choose" => "Velg",
|
||||
"Set local and..." => "Sett lokal og ekstern sti til tomt, for å fjerne",
|
||||
"Update" => "Oppdater",
|
||||
"Add new path" => "Legg til ny sti",
|
||||
"Add" => "Legg til",
|
||||
"Usage Info" => "Bruksinfo:",
|
||||
"Enter relative local..." => "Oppgi relative lokale stier (f.e. /server/myfiles) og absolutte GitHub stier (f.e. https://github.com/user/repo eller https://github.com/user/repo/tree/branch for grener), som eksemplene. Med dette har du etablert kildestier på begge steder, som et par.",
|
||||
"You can then..." => "Du kan deretter velge en stipar og dette blir da den nye rot stien i ICEcoder.",
|
||||
"The file manager..." => "Filbehandleren viser deretter et nytt GitHub-ikon, som du kan klikke på, for å utføre en sjekk og vise forskjell mellom de 2 kildene. Disse forskjellene kan da være påkrevd, og flyttes til den eksterne stien på GitHub eller klones til din lokale sti, for å synkronisere filene dine.",
|
||||
"If you want..." => "Hvis du ønsker å velge en annen root sti, kan dette gjøres i skjermbildet Innstillinger."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "Beklager, det ser ikke ut til å ha lastet inn OpenSSL på PHP instans, så https er ikke tilgjengelig. Dette er nødvendig for GitHub dataoverføring, du kan endre php.ini innstillingene, start serveren på nytt og prøv igjen"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "Bad CSRF token. Vennligst rapporter feilinfoen på https://github.com/mattpass/ICEcoder slik at det kan fikses."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "snarveier",
|
||||
"Within document" => "Innenfor dokument",
|
||||
"On Tabs" => "På faner",
|
||||
"Within file manager" => "Innenfor filbehandler",
|
||||
"Anywhere" => "Hvor som helst",
|
||||
"Space" => "Mellomrom",
|
||||
"Click" => "Klikk",
|
||||
"or" => "eller",
|
||||
"Left click" => "Venstre klikk",
|
||||
"Middle click" => "Middel klikk",
|
||||
"Double click tap..." => "Dobbel klikk / tap (mobil)",
|
||||
"Right click" => "Høyre klikk",
|
||||
"Middle scrollwheel" => "Middel rullehjul",
|
||||
"Drag" => "Dra",
|
||||
"Autocomplete add snippet" => "Autofullfør/legg til kodebiten",
|
||||
"Multiple select" => "Flere valg",
|
||||
"Move line up" => "Flytt linje opp",
|
||||
"Move line down" => "Flytt linje ned",
|
||||
"Duplicate lines" => "Dupliser linje(r)",
|
||||
"Remove lines" => "Slett linje(r)",
|
||||
"Insert line before" => "Sett inn linje før",
|
||||
"Insert line after" => "Sett inn linje etter",
|
||||
"Search for selected" => "Søk etter valgt",
|
||||
"Jump to definition" => "Hopp til definisjon/hopp tilbake",
|
||||
"Comment uncomment" => "Kommentar/fjern kommentar",
|
||||
"Insert tab indent" => "Sett inn innrykk/valgt innrykk",
|
||||
"Wrap with div" => "Wrap med <div>",
|
||||
"Wrap with span" => "Wrap med <span>",
|
||||
"Wrap unwrap p" => "Wrap/uwrap med <p>",
|
||||
"Wrap unwrap a" => "Wrap/uwrap med <a>",
|
||||
"Wrap unwrap b" => "Wrap/uwrap med <b>",
|
||||
"Wrap unwrap i" => "Wrap/uwrap med <i>",
|
||||
"Wrap unwrap strong" => "Wrap/uwrap med <strong>",
|
||||
"Wrap unwrap em" => "Wrap/uwrap med <em>",
|
||||
"Wrap unwrap li" => "Wrap/uwrap med <li>",
|
||||
"Wrap unwrap h1..." => "Wrap/uwrap med <h1> - <h3>",
|
||||
"End line with..." => "Avslutt linje med <br>",
|
||||
"Close tab" => "Lukk fane",
|
||||
"Select file folder" => "Velg fil/mappe",
|
||||
"Open file" => "Åpne fil",
|
||||
"Range select" => "Velg område",
|
||||
"Options for selected" => "Egenskaper for valgt",
|
||||
"Delete selected" => "Slett valgt",
|
||||
"Next previous tab" => "Neste/forige fane",
|
||||
"Next tab" => "Neste fane",
|
||||
"Previous tab" => "Forige fane",
|
||||
"New tab" => "Ny fane",
|
||||
"Close current tab" => "Lukk gjeldende fane",
|
||||
"Open file prompt" => "Åpne fil prompt",
|
||||
"Find" => "Finn",
|
||||
"Focus on Go..." => "Fokus på Gå til linje inndata",
|
||||
"Save" => "Lagre",
|
||||
"Save as" => "Lagre som...",
|
||||
"View webpage" => "Vis webside",
|
||||
"Contract expand file..." => "Trekk sammen/utvid filbehandler",
|
||||
"Fold unfold current..." => "Brett/utfold gjeldende linje",
|
||||
"Refocus on document" => "Refokusere på dokument",
|
||||
"Cancel tasks" => "Avbryt oppgaver"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "Ingen tekst valgt til å søke på",
|
||||
"Creating Folder" => "Lage mappe",
|
||||
"Sorry you can..." => "Beklager, du kan bare ha 100 filer åpne samtidig!",
|
||||
"Opening File" => "Åpner Fil",
|
||||
"Enter relative file..." => "Oppgi den relative filstien (med prefiks /) eller ekstern URL",
|
||||
"Getting" => "Får",
|
||||
"Please enter the..." => "Skriv inn det nye navnet på",
|
||||
"Renaming to" => "Endre navn til",
|
||||
"Moving to" => "Flytt til",
|
||||
"Deleting File" => "Slett Fil",
|
||||
"Pasting File" => "Lim inn Fil",
|
||||
"Sorry cannot paste..." => "Beklager, kan ikke lime inn en hel rot mappe",
|
||||
"Nothing to paste..." => "Ingenting å lime inn, kopiere en fil/mappe først!",
|
||||
"Replacing text in" => "Erstatte tekst i",
|
||||
"Cancelled tasks" => "Kansellerte oppgaver",
|
||||
"Open previous files" => "Åpne siste filer?",
|
||||
"Please enter your..." => "Skriv inn GitHub token (enten personlig tilgang token eller kunde/hemmelig par token). Se verktøytips ved siden av Github Auth Token på Hjelp-skjermbildet > Innstillinger for mer info",
|
||||
"This will compare..." => "Det vil sammenlignes og vise en forskjell mellom din lokale mappe og lagringsstedet. OK?",
|
||||
"Please note for..." => "Vennligst merk: for at oppdatering skal fungere skikkelig, må du ha skrive/slette tilgang til alle ICEcoder kataloger og filer. Hvis du trenger å gjenopprette denne versjonen av ICEcoder av en eller annen grunn, vil du finne den i /tmp mappen. Klikk OK for å fortsette med en auto-oppdatering eller avbryt for å besøke ICEcoder området slik at du kan ta tak i zip-filen og oppdatere manuelt.",
|
||||
"You can start..." => "Du kan starte feilrapportering i Hjelp > Innstillinger",
|
||||
"Error cannot find..." => "Feil: kan ikke finne/få tilgang til feil filstier",
|
||||
"No new errors..." => "Ingen feil funnet",
|
||||
"You have made..." => "Du har gjort endringer. Er du sikker på, at du vil lukke uten å lagre?",
|
||||
"Close all tabs" => "Lukk alle faner?"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "sett passord",
|
||||
"login" => "logginn",
|
||||
"To disable registration..." => "Hvis du vil deaktivere registreringsmodus, åpne innstillingsmenyen eller åpne lib/config ___ settings.php og endre/aktiver Påmelding til 'false', deretter laste siden om igjen",
|
||||
"Registration mode enabled" => "Registreringsmodus aktivert",
|
||||
"auto-check for updates" => "auto-sjekk for oppdateringer",
|
||||
"To put into..." => "Å sette til flerbrukermodus, åpne innstillingsmenyen eller åpne lib/config ___ settings.php og endre flerbruker til 'true', deretter laste siden om igjen",
|
||||
"multi-user" => "flerbruker"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "endre navn på alle",
|
||||
"replace all" => "erstatte alle",
|
||||
"document" => "dokument",
|
||||
"Found" => "Funnet",
|
||||
"times" => "ganger",
|
||||
"replace" => "erstatte",
|
||||
"file folder" => "fil/mappe",
|
||||
"rename to" => "endre navn til",
|
||||
"rename" => "endre navn",
|
||||
"file" => "fil",
|
||||
"No matches found" => "Ingen treff",
|
||||
"selected" => "valgt",
|
||||
"found in" => "funnet i",
|
||||
"Replaced" => "Erstattet"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder må startes om igjen, for å gjøre programtillegget kjørbar. Start om igjen nå?",
|
||||
"saving plugins" => "lagre programtillegg...",
|
||||
"Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter",
|
||||
"and try again" => "og prøv igjen",
|
||||
"couldnt delete dir" => "kan ikke slette mappe",
|
||||
"couldnt delete file" => "kan ikke slette fil",
|
||||
"plugins" => "programtillegg",
|
||||
"Guide to writing..." => "Guide til skriving av programtillegg",
|
||||
"Manage Installed" => "Administrer installerte",
|
||||
"URL" => "URL",
|
||||
"Target" => "Mål",
|
||||
"Timer" => "Tidsur",
|
||||
"Update" => "Oppdater",
|
||||
"Install" => "Installer",
|
||||
"Uninstall" => "Avinstaller",
|
||||
"Reload after install..." => "Omstart etter installasjon nødvendig"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "egenskaper",
|
||||
"Size" => "Størrelse",
|
||||
"Modified" => "Endret",
|
||||
"Last access" => "Siste tilgang",
|
||||
"Type" => "Type",
|
||||
"Readable Writeable" => "Lesbar/Skrivbar",
|
||||
"Relative path" => "Relativ sti",
|
||||
"Absolute path" => "Absolute sti",
|
||||
"Contains" => "Inneholder",
|
||||
"Permissions" => "Tillatelser",
|
||||
"Owner" => "Eier",
|
||||
"Group" => "Gruppe",
|
||||
"Public" => "Offentlig",
|
||||
"Read" => "Lese",
|
||||
"Write" => "Skrive",
|
||||
"Execute" => "Kjøre",
|
||||
"Change to" => "Endre til",
|
||||
"update" => "oppdatere"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "Dokumentet ser ikke ut til å være i UTF-8 koding, derfor har det blitt omgjort"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter",
|
||||
"and try again" => "og prøv igjen"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "innstillinger",
|
||||
"version" => "versjon",
|
||||
"website" => "webside",
|
||||
"git" => "git",
|
||||
"codemirror dir" => "codemirror mappe",
|
||||
"codemirror version" => "codemirror versjon",
|
||||
"file manager root" => "filbehandler root",
|
||||
"Free to use..." => "Gratis å bruke den til eget formål, kommersielle eller ikke, bare gi meg beskjed om eventuelle kule bruk eller tilpasninger. :) <br>Ingen garanti eller erstatningsansvar aksepteres for noe som helst, det er ditt eget ansvar for all bruk.<br>Mange fantastiske mennesker og bedrifter har bidratt til å bygge ICEcoder og det er for mange å takke her. Vennligst se hele listen på",
|
||||
"functionality" => "funksjonalitet",
|
||||
"check for updates..." => "se etter oppdateringer ved start",
|
||||
"auto open last..." => "åpne automatisk siste filer ved innlogging",
|
||||
"when finding in..." => "når funnet blant filer, utelukke",
|
||||
"assisting" => "assistere",
|
||||
"code assist" => "code assistent",
|
||||
"visible tabs" => "synlige faner",
|
||||
"locked nav" => "låst navi",
|
||||
"tag wrapper command" => "tag wrapper kommando",
|
||||
"auto-complete on" => "autokompletering på",
|
||||
"security" => "sikkerhet",
|
||||
"new password" => "nytt passord",
|
||||
"8 chars min" => "min. 8 tegn",
|
||||
"confirm password" => "bekreft passord",
|
||||
"banned files/folders" => "forbudte filer/mapper",
|
||||
"banned paths" => "forbudte stier",
|
||||
"ip addresses" => "ip adresser",
|
||||
"Slash prefixed comma..." => "Slash som prefiks, komma som skille",
|
||||
"Comma delimited" => "Skilled med komma",
|
||||
"style" => "stil",
|
||||
"theme" => "tema",
|
||||
"line wrapping" => "linjebryting",
|
||||
"indent type" => "innrykk type",
|
||||
"indent size" => "innrykk størr.",
|
||||
"font size" => "skrift størr.",
|
||||
"layout" => "layout",
|
||||
"plugin panel aligned" => "programtilleggspanel justert",
|
||||
"file manager" => "filbehandler",
|
||||
"root" => "root",
|
||||
"Slash prefixed" => "Slash prefiks",
|
||||
"bug reporting" => "feil rapportering",
|
||||
"check in files" => "sjekke blant filer",
|
||||
"every" => "hver",
|
||||
"secs getting last" => "sek., får siste",
|
||||
"lines" => "linjer",
|
||||
"multi-user" => "flerbruker",
|
||||
"Make sure you..." => "Pass på, at du ikke stenger deg ut selv",
|
||||
"Registration" => "Registrering",
|
||||
"auth token" => "auth token",
|
||||
"Required to get..." => "Nødvendig for å skille, bestemme ditt lagringssted på GitHub lageret etc. Hvis du ikke har en, kan du bruke en:".PHP_EOL.PHP_EOL.
|
||||
"- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), eller".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"Det anbefales ikke, at du setter token din her midlertidig, og vær sikre på å oppgi den, når du blir bedt av ICEcoder, som vil holde den i økten sin.".PHP_EOL.PHP_EOL.
|
||||
"Men hvis du jobber i et trygt og sikkert miljø, er det mer effektivt å sette den her.",
|
||||
"Sorry cannot commit..." => "Beklager, kan ikke bekrefte innstillinger i demo-modus",
|
||||
"update" => "oppdatere"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter;",
|
||||
"and try again" => "og prøv igjen",
|
||||
"and press refresh" => "og trykk refresh"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "Oppdatering synes å være vellykket"
|
||||
)
|
||||
|
||||
);
|
||||
?>
|
||||
|
||||
423
lang/persian.php
Normal file
@@ -0,0 +1,423 @@
|
||||
<?php
|
||||
// Persian language translation
|
||||
// by: @voltan (GitHub)
|
||||
// @azizabadi_ (Twitter)
|
||||
|
||||
// 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>بر روی آیکن ها کلیک کنید<br>برای راهنمایی &<br>اطلاعات استفاده</b>",
|
||||
"server" => "سرور",
|
||||
"Server name, OS..." => "نام سرور ، سیستم عامل و آی پی :",
|
||||
"Root" => "روت:",
|
||||
"ICEcoder root" => "ICEcoder روت :",
|
||||
"PHP version" => "نسخه پی اچ پی:",
|
||||
"Date & time" => "زمان و تاریخ :",
|
||||
"your device" => "دستگاه شما",
|
||||
"Browser" => "مرورگر :",
|
||||
"Your IP" => "آی پی شما:",
|
||||
"files" => "فایل ها",
|
||||
"Last 10 files..." => "آخرین ۱۰ فایل باز شده",
|
||||
"none" => "[پوچ]",
|
||||
"test suite" => "تست سویت",
|
||||
"Run unit tests" => "اجرای تست های واحد",
|
||||
"dev mode" => "حالت توسعه دهنده",
|
||||
"Status" => "وضعیت",
|
||||
"Using" => "استفاده",
|
||||
"You can switch..." => "شما میتوانید حالت توسعه را از lib/config__settings.php روشن یا خاموش کنید",
|
||||
"results" => "نتایج"
|
||||
|
||||
),
|
||||
|
||||
"files" =>
|
||||
array(
|
||||
"Lock" => "قفل",
|
||||
"Refresh" => "بارگذاری مجدد",
|
||||
"ROOT" => "[ریشه]"
|
||||
|
||||
),
|
||||
|
||||
"index" =>
|
||||
array(
|
||||
"UPDATE INFO" => "اطلاعات به روز رسانی",
|
||||
"now available" => "هم اکنون در دسترس است",
|
||||
"Your version is" => "نسخه مورد استفاده شما",
|
||||
"Update now" => "به روز کنید",
|
||||
"You have some..." => "شما چند تغییر ذخیره نشده دارید",
|
||||
"working" => "در حال کار",
|
||||
"Color picker" => "اشاره گر رنگ",
|
||||
"New File" => "فایل جدید",
|
||||
"New Folder" => "پوشه جدید",
|
||||
"Upload File(s)" => "بارگذاری فایل",
|
||||
"Paste" => "چسباندن",
|
||||
"Open" => "باز کردن",
|
||||
"Copy" => "کپی کردن",
|
||||
"Duplicate" => "تهیه نسخه دوم",
|
||||
"Delete" => "حذف",
|
||||
"Rename" => "تغیر نام",
|
||||
"View Webpage" => "نمایش وب سایت",
|
||||
"Download" => "دریافت",
|
||||
"Properties" => "ویژگی ها",
|
||||
"File" => "فایل",
|
||||
"Edit" => "ویرایش",
|
||||
"Remote" => "کنترل از راه دور",
|
||||
"Help" => "کمک",
|
||||
"Save" => "ذخیره",
|
||||
"Save As" => "ذخیره به عنوان",
|
||||
"Live Preview" => "پیش نمایش زنده",
|
||||
"Upload" => "بارگذاری",
|
||||
"Zip" => "زیپ",
|
||||
"Print" => "چاپ",
|
||||
"Fullscreen toggle" => "نمایش تمام صفحه",
|
||||
"Logout" => "خروج",
|
||||
"Undo" => "برگشت",
|
||||
"Redo" => "ازنو",
|
||||
"Indent more" => "کم کردن فاصله",
|
||||
"Indent less" => "زیاد کردن فاصله",
|
||||
"Autocomplete" => "تکمیل خودکار",
|
||||
"Comment/Uncomment" => "نظر/ضد نظر",
|
||||
"Jump to Definition" => "انتقال به تعریف",
|
||||
"Manual" => "دستی",
|
||||
"Shortcuts" => "کلید های میانبر",
|
||||
"Settings" => "تنظیمات",
|
||||
"Search for selected" => "جستجو برای انتخاب شده ها",
|
||||
"website" => "وب سایت",
|
||||
"Close all tabs" => "بستن همه پنجره ها",
|
||||
"Alphabetize tabs" => "مرتب سازی پنجره ها بر اساس حروف الفبا",
|
||||
// "Find" => "یافتن",
|
||||
// "in" => "در",
|
||||
// "and" => "و",
|
||||
// "replace" => "جایگزین کردن",
|
||||
// "replace all" => "جایگزین کردن همه",
|
||||
// "this document" => "این سند",
|
||||
// "open documents" => "سند های باز",
|
||||
// "all files" => "همه فایل ها",
|
||||
// "all filenames" => "همه نام فایل ها",
|
||||
"Turn on/off..." => "روشن / خاموش کردن کد کمد",
|
||||
"Code Assist" => "کد کمک",
|
||||
"Go to Line" => "برو به خط",
|
||||
"View" => "نمایش",
|
||||
"Bug reporting not active" => "گزارش اشکال فعال نیست"
|
||||
),
|
||||
// /LIB
|
||||
|
||||
"bug-files-check" =>
|
||||
array(
|
||||
"Found in" => "یافتن در :"
|
||||
),
|
||||
|
||||
"file-control" =>
|
||||
array(
|
||||
"Sorry" => "متاسفیم",
|
||||
"does not seem..." => "به نظر می رسد بر روی سرور موجود نیست",
|
||||
"Sorry, could not..." => "متاسفانه نمی توانیم اطلاعات را دریافت کنیم",
|
||||
"Sorry, cannot create..." => "متاسفانه نمی توانیم یک شاخه در مسیر زیر ایجاد کنیم",
|
||||
"Sorry, cannot copy" => "متاسفانه نمی توانیم کپی کنیم",
|
||||
"into" => "into",
|
||||
"Uploaded file(s) OK" => "بارگذاری فایل ها موفقیت آمیز بود",
|
||||
"Sorry, cannot upload" => "متاسفانه نمیتوانیم آپلود کنیم",
|
||||
"Sorry, cannot upload..." => "متاسفانه امکان آپلود در نسخه دمو وجود ندارد",
|
||||
"Sorry, cannot rename" => "متاسفانه نمی توانیم تغییر نام دهیم",
|
||||
"Maybe public write..." => "به نظر می رسد دسترسی نوشتن برای شاخه والد لازم است",
|
||||
"Sorry, cannot move" => "متاسفانه نمی توانیم انتقال دهیم",
|
||||
"Sorry, cannot save" => "متاسفانه نمی توانیم ذخیره کنیم",
|
||||
"Sorry, cannot replace..." => "متاسفانه نمی نمی توانیم جایگزین کنیم",
|
||||
"Sorry, cannot change..." => "متاسفانه نمی توانیم دسترسی را تغییر دهیم",
|
||||
"Sorry, cannot delete..." => "متاسفانه نمی توانیم دسترسی ریشه را تغییر دهیم",
|
||||
"Sorry, cannot delete" => "متاسفانه نمی توانیم تغییر دهیم",
|
||||
"Sorry, this file..." => "متاسفانه این فایل تغییر دارد و نمی توانیم آن را ذخیره کنیم",
|
||||
"Reload this file..." => "بارگذاری مجدد این فایل و جایگزینی تغییرات شما در یک فایل جدید؟",
|
||||
"There was a..." => "یک وقفه تکنولوژیک وجوددارد،احتمالا چیزی کامل آماده نیست. بنابراین ICEcoder مجددا این فایل را بارگذاری می کند..",
|
||||
"displayed at" => "نمایش داده شده در",
|
||||
"Enter filename to..." => "نام فایل را برای ذخیره وارد کنید",
|
||||
"That file exists..." => "این فایل هم اکنون موجود است ، جایگزین شود؟",
|
||||
"Saving" => "در حال ذخره"
|
||||
),
|
||||
|
||||
"get-branch" =>
|
||||
array(
|
||||
"There are no..." => "تغییراتی بین مخزن محلی و مخزن گیت وجود دارد ، به حالت معمول برگردد؟",
|
||||
"Sorry, there was..." => "متاسفانه خطای روی داده است . کد خطا : ",
|
||||
"Your local folder..." => "شاخه محلی شما خالی است ، آیا میخواهید تکثیر کنید ؟"
|
||||
),
|
||||
|
||||
"github-manager" =>
|
||||
array(
|
||||
"Sorry, cannot create..." => "متاسفانه نمیتوانیم یک شاخه بسازیم در :",
|
||||
"Cannot update config..." => "متاسفانه نمیتوان فایل تنظیمات را به روز کرد. لطفا دسترسی نوشتن را اضافه کنید به",
|
||||
"and try again" => "و مجددا تلاش نمایید",
|
||||
"saving github paths" => "ذخیره مسیر های گیت هاب ...",
|
||||
"github paths" => "مسیر های گیت هاب",
|
||||
"Choose existing path" => "انتخاب یک مسیر موجود",
|
||||
"Local path" => "مسیر محلی",
|
||||
"Remote GitHub path" => "مسیر ریموت گیت هاب",
|
||||
"Choose" => "انتخاب",
|
||||
"Set local and..." => "برای حذف مسیر محلی و ریموت ، آنها را به صورت خالی تنظیم کرده و ذخیره کنید",
|
||||
"Update" => "به روز رسانی",
|
||||
"Add new path" => "اضافه کردن مسیر جدید",
|
||||
"Add" => "اضافه کردن",
|
||||
"Usage Info" => "اطلاعات مورد استفاده :",
|
||||
"Enter relative local..." => "Enter relative local paths (eg /server/myfiles) and absolute GitHub paths (eg https://github.com/user/repo or https://github.com/user/repo/tree/branch for branches), as per the examples. With this done you have established the source paths at both locations, as a pair.",
|
||||
"You can then..." => "شما میتوانید یک جفت مسیر انتخاب کنید و مسیر جدید ریشه خود را در ICEcoder وارد کنید.",
|
||||
"The file manager..." => "The file manager then displays a new GitHub icon, which you can click on to perform and show a diff check between the 2 sources. These diffs can then be committed and pushed to the remote path at GitHub or cloned to your local path, to sync your files.",
|
||||
"If you want..." => "اگر میخواهید یک مسیر ریشه دیگر تنظیم کنید ، به صفحه تنظیمات بروید."
|
||||
),
|
||||
|
||||
"github" =>
|
||||
array(
|
||||
"Sorry, you do..." => "متاسفانه امکان استفاده از OpenSSL در تنظیمات پی اچ پی شما وجود ندارد, بنابر این https در دسترس نیست. این گزینه برای انتقال فایل با گیت هاب لازم است, لطفا تنظیمات php.ini خود را به روز کنید, سرور خود را مجددا راه اندازی کنید و سپس امتحان کنید"
|
||||
),
|
||||
|
||||
"headers" =>
|
||||
array(
|
||||
"Bad CSRF token..." => "توکن CSRF اشتباه. لطفا خطا را در https://github.com/mattpass/ICEcoder گزارش دهید تا اصلاح شود."
|
||||
),
|
||||
|
||||
"help" =>
|
||||
array(
|
||||
"shortcuts" => "میان بر ها",
|
||||
"Within document" => "داخل سند",
|
||||
"On Tabs" => "در تب های",
|
||||
"Within file manager" => "در مدیریت فایل",
|
||||
"Anywhere" => "همه جا",
|
||||
"Space" => "اسپیس",
|
||||
"Click" => "کلیک",
|
||||
"or" => "یا",
|
||||
"Left click" => "کلیک چپ",
|
||||
"Middle click" => "کلیک وسط",
|
||||
"Double click tap..." => "دبل کلیک / تب ( موبایل )",
|
||||
"Right click" => "کلیک راست",
|
||||
"Middle scrollwheel" => "اسکرولر وسط",
|
||||
"Drag" => "دراگ",
|
||||
"Autocomplete add snippet" => "تکمیل خودکار / اضافه کردن قطعه",
|
||||
"Multiple select" => "چند انتخاب",
|
||||
"Move line up" => "انتقال خط بالا",
|
||||
"Move line down" => "انتقال خط پایین",
|
||||
"Duplicate lines" => "تکثیر خط",
|
||||
"Remove lines" => "حذف خط",
|
||||
"Insert line before" => "اضافه کردن خط قبل از",
|
||||
"Insert line after" => "اضافه کردن خط بعد از",
|
||||
"Search for selected" => "جستجو برای انتخاب شده",
|
||||
"Jump to definition" => "برو به تعریف / برو عقب",
|
||||
"Comment uncomment" => "کامتی / حذف کامیت",
|
||||
"Insert tab indent" => "وارد کردن تب / انتخاب شده داخل است",
|
||||
"Wrap with div" => "قرار دادن با <div>",
|
||||
"Wrap with span" => "قرار دادن با <span>",
|
||||
"Wrap unwrap p" => "قرار دادن / باز کردن با <p>",
|
||||
"Wrap unwrap a" => "قرار دادن / باز کردن با <a>",
|
||||
"Wrap unwrap b" => "قرار دادن / باز کردن با <b>",
|
||||
"Wrap unwrap i" => "قرار دادن / باز کردن با <i>",
|
||||
"Wrap unwrap strong" => "قرار دادن / باز کردن با <strong>",
|
||||
"Wrap unwrap em" => "قرار دادن / باز کردن با <em>",
|
||||
"Wrap unwrap li" => "قرار دادن / باز کردن با <li>",
|
||||
"Wrap unwrap h1..." => "قرار دادن / باز کردن با <h1> - <h3>",
|
||||
"End line with..." => "انتخاب خط با <br>",
|
||||
"Close tab" => "بستن تب",
|
||||
"Select file folder" => "انتخاب فایل / پوشه",
|
||||
"Open file" => "باز کردن فایل",
|
||||
"Range select" => "انتخاب رنج",
|
||||
"Options for selected" => "گزینه های برای انتخاب",
|
||||
"Delete selected" => "حذف انتخاب ها",
|
||||
"Next previous tab" => "تب قبلی / بعدی",
|
||||
"Next tab" => "تب بعدی",
|
||||
"Previous tab" => "تب قبلی",
|
||||
"New tab" => "تب جدید",
|
||||
"Close current tab" => "بستن تب فعلی",
|
||||
"Open file prompt" => "باز کردن سریع فایل",
|
||||
"Find" => "یافتن",
|
||||
"Focus on Go..." => "فکوس کن برای رفتن به خط ورود",
|
||||
"Save" => "ذخیره",
|
||||
"Save as" => "ذخیره به عنوان ...",
|
||||
"View webpage" => "مشاهده صفحه وب",
|
||||
"Contract expand file..." => "قرارداد / گسترش مدیریت فایل",
|
||||
"Fold unfold current..." => "ریختن (فولد) / آشکار شدن فایل فعلی",
|
||||
"Refocus on document" => "فوکوس مجدد در سند",
|
||||
"Cancel tasks" => "لغو تسک"
|
||||
),
|
||||
|
||||
"ice-coder" =>
|
||||
array(
|
||||
"No text selected..." => "هیچ متنی برای جستجو انتخاب نشده است",
|
||||
"Creating Folder" => "در حال ساخت پوشه",
|
||||
"Sorry you can..." => "متاسفانه ، شما می توانید حداکثر ۱۰۰ فایل را هم زمان باز کنید !",
|
||||
"Opening File" => "در حال باز کردن فایل",
|
||||
"Enter relative file..." => "قراردادن مسیر فایل مشابه ( ابتدا با / ) یا لینک ریموت",
|
||||
"Getting" => "دریافت",
|
||||
"Please enter the..." => "لطفا یک نام جدید وارد کنید برای",
|
||||
"Renaming to" => "تغییر نام به",
|
||||
"Moving to" => "انتقال به",
|
||||
"Deleting File" => "در حال حذف فایل ها",
|
||||
"Pasting File" => "در حال پست کردن فایل",
|
||||
"Sorry cannot paste..." => "متاسفانه نمی توان به ریشه چیزی اضافه کرد",
|
||||
"Nothing to paste..." => "هیچ چیش برای چسباندن نیست ! ابتدا فایل / پوشه را کپی کنید",
|
||||
"Replacing text in" => "جایگزین کردن متن در",
|
||||
"Cancelled tasks" => "تسک های لغو شده ",
|
||||
"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",
|
||||
"This will compare..." => "این گزینه تفاوت بین فایل محلی شما و تغییرات سرور را نمایش می دهد. مورد تایید است؟",
|
||||
"Please note for..." => "Please note: for updating to work properly, you need to have write/delete access on all ICEcoder dirs & files. If you need to recover this version of ICEcoder for any reason, you'll find it in the /tmp dir. Click OK to proceed with an auto-update or cancel to visit the ICEcoder site so you can grab the zip and update manually.",
|
||||
"You can start..." => "شما می توانید ارسال خطا را از منوی کمک رسانی > تنظیمات انجام دهید",
|
||||
"Error cannot find..." => "خطا : نمی توانید به فایل / مسیر فایل های خطا دسترسی پیدا کنید.",
|
||||
"No new errors..." => "هیچ خطای جدیدی پیدا نشد",
|
||||
"You have made..." => "شما تغییراتی اعمال کرده اید. آیا اطمینان دارید که میخواهید بدون ذخیره کردن فایل را ببندید؟",
|
||||
"Close all tabs" => "بستن همه تب ها؟"
|
||||
),
|
||||
|
||||
"login" =>
|
||||
array(
|
||||
"set password" => "تنظیم واژه رمز",
|
||||
"login" => "ورود",
|
||||
"To disable registration..." => "برای غیر فعال کردن حالت ثبت نام ، منوی تنظیمات را باز کنید و یا فایل lib/config___settings.php را باز کنید و گزینه enableRegistration را به false تغییر دهید. سپس این صفحه را بارگذاری مجدد نمایید",
|
||||
"Registration mode enabled" => "حالت ثبت نام فعال است",
|
||||
"auto-check for updates" => "بررسی خودکار برای به روز رسانی",
|
||||
"To put into..." => "برای وارد شدن به حالت چند کاربره ، منوی تنظیمات را باز کنید و یا فایل lib/config___settings.php و گزینه multiUser را به true تغییر دهید و و ذخیره کنید. سپس این صفحه را بارگذاری مجدد نمایید",
|
||||
"multi-user" => "چند کاربره"
|
||||
),
|
||||
|
||||
"multiple-results" =>
|
||||
array(
|
||||
"rename all" => "تغییر نام همه",
|
||||
"replace all" => "جایگزین کردن همه",
|
||||
"document" => "سند",
|
||||
"Found" => "یافتن",
|
||||
"times" => "دفعات",
|
||||
"replace" => "جایگزین کردن",
|
||||
"file folder" => "فایل/فولدر",
|
||||
"rename to" => "تغییر نام به",
|
||||
"rename" => "تغیر نام",
|
||||
"file" => "فایل",
|
||||
"No matches found" => "جستجو نتیجه ای نداشت",
|
||||
"selected" => "انتخاب شده",
|
||||
"found in" => "یافتن در",
|
||||
"Replaced" => "جایگزین شود"
|
||||
),
|
||||
|
||||
"plugins-manager" =>
|
||||
array(
|
||||
"ICEcoder needs to..." => "ICEcoder نیاز به بارگذاری مجدد برای فعال شدن این افزونه دارد. بارگذاری مجدد انجام شود؟",
|
||||
"saving plugins" => "ذخیره سازی افزونه ...",
|
||||
"Cannot update config..." => "نمی توان فایل تنظیمات را به روز کرد ، دسترسی نوشتن را فعال کنید برای",
|
||||
"and try again" => "و مجدد امتحان کنید",
|
||||
"couldnt delete dir" => "ناتوان در حذف پوشه",
|
||||
"couldnt delete file" => "ناتوان در حذف فایل",
|
||||
"plugins" => "افزونه ها",
|
||||
"Guide to writing..." => "راهنمای نوشتن افزونه",
|
||||
"Manage Installed" => "مدیریت نصب",
|
||||
"URL" => "آدرس",
|
||||
"Target" => "هدف",
|
||||
"Timer" => "زمان سنج",
|
||||
"Update" => "آپدیت",
|
||||
"Install" => "اینستال",
|
||||
"Uninstall" => "آن انیستال",
|
||||
"Reload after install..." => "بارگذاری مجدد بعد از نصب لازم است"
|
||||
),
|
||||
|
||||
"properties" =>
|
||||
array(
|
||||
"properties" => "ویژگی ها",
|
||||
"Size" => "اندازه",
|
||||
"Modified" => "ویرایش شده",
|
||||
"Last access" => "آخرین دسترسی",
|
||||
"Type" => "نوع",
|
||||
"Readable Writeable" => "قابل خواندن / قابل نوشتن",
|
||||
"Relative path" => "مسیر نسبی",
|
||||
"Absolute path" => "مسیر مطلق",
|
||||
"Contains" => "شامل",
|
||||
"Permissions" => "دسترسی ها",
|
||||
"Owner" => "سازنده",
|
||||
"Group" => "گروه",
|
||||
"Public" => "عمومی",
|
||||
"Read" => "خواندن",
|
||||
"Write" => "نوشتن",
|
||||
"Execute" => "اجرا",
|
||||
"Change to" => "تغییر به",
|
||||
"update" => "به روز کردن"
|
||||
),
|
||||
|
||||
"settings-common" =>
|
||||
array(
|
||||
"Your document does..." => "سند شما با استاندارد UTF-8 همخوانی ندارد ، تبدیل می شود"
|
||||
),
|
||||
|
||||
"settings-save-current-files" =>
|
||||
array(
|
||||
"Cannot update config..." => "نمیتوان فایل تنظیمات را به روز کرد ، لطفا دسترسی نوشتن را بررسی کنید در",
|
||||
"and try again" => "و مجددا تلاش نمایید"
|
||||
),
|
||||
|
||||
"settings-screen" =>
|
||||
array(
|
||||
"settings" => "تنظیمات",
|
||||
"version" => "نسخه",
|
||||
"website" => "وب سایت",
|
||||
"git" => "گیت",
|
||||
"codemirror dir" => "مسیر کد آینه",
|
||||
"codemirror version" => "نسخه کد آینه",
|
||||
"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",
|
||||
"functionality" => "تابع بندی",
|
||||
"check for updates..." => "بررسی برای به روز رسانی در هنگام بارگذاری",
|
||||
"auto open last..." => "باز کردن خودکار آخرین فایل ها در هنگامک بارگذاری",
|
||||
"when finding in..." => "وقتی در فایل یافت شد ، رد شود",
|
||||
"assisting" => "کمک رسانی",
|
||||
"code assist" => "کد کمک",
|
||||
"visible tabs" => "تب های قابل نمایش",
|
||||
"locked nav" => "قفل کردن منو",
|
||||
"tag wrapper command" => "برچسب دستور والد",
|
||||
"auto-complete on" => "تکمیل خودکار روشن",
|
||||
"security" => "امنیت",
|
||||
"new password" => "پسورد جدید",
|
||||
"8 chars min" => "حداقل ۸ کارکتر",
|
||||
"confirm password" => "تایید پسورد",
|
||||
"banned files/folders" => "فایل ها / پوشه های مسدود شده",
|
||||
"banned paths" => "مسیر های مسدود شده",
|
||||
"ip addresses" => "آدرس آی پی",
|
||||
"Slash prefixed comma..." => "پیشوند اسلش, با کاما از هم جدا کنید",
|
||||
"Comma delimited" => "با کما جدا شوند",
|
||||
"style" => "استایل",
|
||||
"theme" => "قالب",
|
||||
"line wrapping" => "وارپینگ خط",
|
||||
"indent type" => "نوع برجسته کردن",
|
||||
"indent size" => "اندازه برجسته کردن",
|
||||
"font size" => "اندازه فونت",
|
||||
"layout" => "لایه",
|
||||
"plugin panel aligned" => "تراز پنل پلاگین",
|
||||
"file manager" => "مدیریت فایل",
|
||||
"root" => "ریشه",
|
||||
"Slash prefixed" => "پیشوند اسلش",
|
||||
"bug reporting" => "گزارش باگ",
|
||||
"check in files" => "فایل های چک این",
|
||||
"every" => "همه",
|
||||
"secs getting last" => "دریافت فهرست",
|
||||
"lines" => "خط",
|
||||
"multi-user" => "چند کاربره",
|
||||
"Make sure you..." => "مطمئن شوید خود را خاریج از اینجا قفل نکرده اید",
|
||||
"Registration" => "ثبت نام",
|
||||
"auth token" => "توکن خودکار",
|
||||
"Required to get..." => "Required to get diffs, commit to your GitHub hosted repo etc. If you do not have one, you can use a:".PHP_EOL.PHP_EOL.
|
||||
"- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL.
|
||||
"- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL.
|
||||
"It is not recommended you set your token here however and is more secure to enter it when requested by ICEcoder as that will keep it in session only.".PHP_EOL.PHP_EOL.
|
||||
"However, if you work in a trusted and secure environment, it is more efficient to set it here.",
|
||||
"Sorry cannot commit..." => "متاسفانه نمی توان در حالت نمایشی تنظیمات را تغییر داد",
|
||||
"update" => "به روز کردن"
|
||||
),
|
||||
|
||||
"settings-update" =>
|
||||
array(
|
||||
"Cannot update config..." => "نمی توان فایل تنظیمات را به روز کرد ، لطفا دسترسی نوشتن را اعمال کنید در",
|
||||
"and try again" => "و مجدد تلاش کنید",
|
||||
"and press refresh" => "و صفحه را مجدد بارگذاری کنید"
|
||||
),
|
||||
|
||||
"updater" =>
|
||||
array(
|
||||
"Update appears to..." => "با موفقیت به روز شد"
|
||||
)
|
||||
);
|
||||
?>
|
||||
115
lib/bug-files-check.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
// Load common functions
|
||||
include("headers.php");
|
||||
include_once("settings-common.php");
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['bug-files-check'];
|
||||
|
||||
$files = explode(",",str_replace("|","/",$_GET['files']));
|
||||
$filesSizesSeen = explode(",",$_GET['filesSizesSeen']);
|
||||
$maxLines = $_GET['maxLines'];
|
||||
|
||||
$result = "ok";
|
||||
|
||||
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) {
|
||||
$result = "error";
|
||||
} else {
|
||||
$filesSizesSeen[$i] = filesize($files[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($result != "error") {
|
||||
|
||||
$filesWithNewBugs = 0;
|
||||
|
||||
for ($i=0; $i<count($files); $i++) {
|
||||
// If we have set a filesize value previously and it's different to now, there's new bugs
|
||||
$fileSizesSeenArray = explode(",",$_GET['filesSizesSeen']);
|
||||
if ($fileSizesSeenArray[$i]!="null" && $fileSizesSeenArray[$i] != $filesSizesSeen[$i]) {
|
||||
$result = "bugs";
|
||||
$filesWithNewBugs++;
|
||||
|
||||
$filename = $files[$i];
|
||||
$chars = ($filesSizesSeen[$i]-$fileSizesSeenArray[$i]);
|
||||
$buffer = 4096;
|
||||
$lines = $maxLines+1+1; // 1 (possibly) for end of file and 1 for partial lines
|
||||
|
||||
// Open the file
|
||||
$f = fopen($filename, "rb");
|
||||
|
||||
// Jump to last character
|
||||
fseek($f, 0, SEEK_END);
|
||||
|
||||
// If we don't have a line at end, deduct 1 from $lines to get
|
||||
if(fread($f, 1) != "\n") $lines -= 1;
|
||||
|
||||
// Start reading
|
||||
$output = "";
|
||||
$chunk = "";
|
||||
|
||||
// While we would like more
|
||||
while(ftell($f) > 0 && $chars > 0 && $lines > 0) {
|
||||
|
||||
// Figure out how far back we should jump
|
||||
$seek = min($chars, $buffer);
|
||||
|
||||
// Do the jump (backwards, relative to where we are)
|
||||
fseek($f, -$seek, SEEK_CUR);
|
||||
|
||||
// Read a chunk and prepend it to our output
|
||||
$output = ($chunk = fread($f, $seek)).$output;
|
||||
|
||||
// Jump back to where we started reading
|
||||
fseek($f, -mb_strlen($chunk, '8bit'), SEEK_CUR);
|
||||
|
||||
// Take this seek chunk off the number of chars
|
||||
$chars -= $seek;
|
||||
|
||||
// Deduct new lines found in this chunk from $lines
|
||||
$lines -= substr_count($chunk, "\n");
|
||||
}
|
||||
|
||||
// Close file
|
||||
fclose($f);
|
||||
|
||||
// OK, now we have bug lines to output, save to our file
|
||||
$output = rtrim(str_replace("\r\n","\n",$output));
|
||||
$output = explode("\n",$output);
|
||||
$output = array_slice($output, -$maxLines);
|
||||
$output = $t['Found in']." ".$filename."...\n".implode("\n",$output);
|
||||
|
||||
if ($filesWithNewBugs==1) {
|
||||
file_put_contents("../tmp/bug-report.log", $output);
|
||||
} else {
|
||||
file_put_contents("../tmp/bug-report.log", "\n\n".$output, FILE_APPEND);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Get dir name tmp dir's parent
|
||||
$tmpLoc = dirname(__FILE__);
|
||||
$tmpLoc = explode(DIRECTORY_SEPARATOR,$tmpLoc);
|
||||
$tmpLoc = $tmpLoc[count($tmpLoc)-2];
|
||||
|
||||
// Output result and status array
|
||||
$status = array(
|
||||
"files" => $files,
|
||||
"filesSizesSeen" => $filesSizesSeen,
|
||||
"maxLines" => $maxLines,
|
||||
"bugReportPath" => "|".$tmpLoc."|tmp|bug-report.log",
|
||||
"result" => $result
|
||||
);
|
||||
|
||||
// Include our process once our bug checking work is done
|
||||
include("../processes/on-bug-check.php");
|
||||
|
||||
// Finally, display our status in JSON format as the XHR response text
|
||||
echo json_encode($status);
|
||||
|
||||
?>
|
||||
144
lib/coder.css
@@ -1,144 +0,0 @@
|
||||
/* 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 {
|
||||
font-family: arial, verdana, helvetica, sans-serif;
|
||||
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;
|
||||
user-select: none;
|
||||
background-color: #222;
|
||||
}
|
||||
|
||||
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
|
||||
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}
|
||||
.whiteGlow {box-shadow: 0 0 8px 2px rgba(255,255,255,0.6)}
|
||||
|
||||
.circleOutside {background-color: rgba(0,0,0,0); border:5px solid rgba(0,183,229,0.9); opacity:.9; border-top:5px solid rgba(0,0,0,0); border-left:5px solid rgba(0,0,0,0); border-radius:50px; box-shadow: 0 0 35px #2187e7;
|
||||
width:50px; height:50px; margin:0 auto; -moz-animation:spin .5s infinite linear; -webkit-animation:spin .5s infinite linear;
|
||||
}
|
||||
.circleInside {background-color: rgba(0,0,0,0); border:5px solid rgba(0,183,229,0.9); opacity:.9; border-top:5px solid rgba(0,0,0,0); border-left:5px solid rgba(0,0,0,0); border-radius:50px; box-shadow: 0 0 15px #2187e7;
|
||||
width:30px; height:30px; margin:0 auto; position:relative; top:-50px; -moz-animation:spinoff .5s infinite linear; -webkit-animation:spinoff .5s infinite linear;
|
||||
}
|
||||
@-moz-keyframes spin {
|
||||
0% { -moz-transform:rotate(0deg);}
|
||||
100% { -moz-transform:rotate(360deg);}
|
||||
}
|
||||
@-moz-keyframes spinoff {
|
||||
0% { -moz-transform:rotate(0deg);}
|
||||
100% { -moz-transform:rotate(-360deg);}
|
||||
}
|
||||
@-webkit-keyframes spin {
|
||||
0% { -webkit-transform:rotate(0deg);}
|
||||
100% { -webkit-transform:rotate(360deg);}
|
||||
}
|
||||
@-webkit-keyframes spinoff {
|
||||
0% { -webkit-transform:rotate(0deg); }
|
||||
100% { -webkit-transform:rotate(-360deg);}
|
||||
}
|
||||
|
||||
.progressBar {top: 0; left: 0; width:100%; height:1px; margin:2px 0; background:#2187e7; position:absolute; box-shadow:0 0 10px 1px rgba(0,198,255,0.7)}
|
||||
@-moz-keyframes fullexpand {
|
||||
0% { width:0;}
|
||||
100%{ width:100%;}
|
||||
}
|
||||
@-webkit-keyframes fullexpand {
|
||||
0% { width:0;}
|
||||
100%{ width:100%;}
|
||||
}
|
||||
|
||||
.header {position: absolute; display: inline-block; top: 0; left: 0; width: 100%; height: 40px; background-color: #fff; text-align: right; z-index: 2}
|
||||
.header .plugins {position: absolute; display: inline-block; left: 15px; top: 3px}
|
||||
.header .plugins img {position: relative; display: inline-block; margin-right: 15px}
|
||||
.header .screenModeIcon {position: absolute; top: 5px; right: 178px; cursor: pointer}
|
||||
.header .version {position: relative; display: inline-block; margin-top: 25px; font-size: 10px; color: #bbb}
|
||||
.header .logo {position: relative; margin: 5px 10px 0 5px; cursor: pointer}
|
||||
|
||||
.files {position: absolute; display: inline-block; top: 0; left: 0; height: 100%; width: 250px; background-color: #444; background-image: url('../images/files-arrow.png'); background-repeat: no-repeat; background-position: 100% 50%; overflow: hidden; z-index: 1;
|
||||
box-shadow: 0 0 10px 4px rgba(0,0,0,0.4);
|
||||
}
|
||||
.files .account {display: inline-block; height: 50px; width: 250px; margin-top: 40px; background-color: #888}
|
||||
.files .accountOptions {position: relative; height: 32px; width: 100%; margin-left: 15px; margin-top: 8px}
|
||||
.files .accountOptions div {display: inline-block; background: url('../images/file-manager-icons.png') 0 0 no-repeat; cursor: pointer}
|
||||
.files .accountOptions .save {width: 30px; height: 32px; opacity: 0.3}
|
||||
.files .accountOptions .open {width: 25px; height: 32px; background-position: -32px -3px; margin: 3px 0 0 7px; opacity: 0.3}
|
||||
.files .accountOptions .newFile {width: 15px; height: 16px; background-position: -64px 0; margin: 8px 0 0 10px; opacity: 0.3}
|
||||
.files .accountOptions .newFolder {width: 20px; height: 16px; background-position: -80px 0; margin: 8px 0 0 5px; opacity: 0.3}
|
||||
.files .accountOptions .delete {width: 16px; height: 16px; background-position: -100px 0; margin: 8px 0 0 5px; opacity: 0.3}
|
||||
.files .accountOptions .rename {width: 16px; height: 16px; background-position: -116px 0; margin: 8px 0 0 5px; opacity: 0.3}
|
||||
.files .accountOptions .view {width: 16px; height: 16px; background-position: -132px 0; margin: 8px 0 0 5px; opacity: 0.3}
|
||||
.files .accountOptions .lock {position: relative; margin-left: 208px; margin-top: -27px; width: 12px; height: 16px; background-position: -64px -16px; z-index: 1}
|
||||
.files input:focus, .findReplace input:focus, .findReplace select:focus, .accountPassword:focus {outline: none; 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 .frame {display: inline-block; width: 250px}
|
||||
.files .serverMessage {position: absolute; display: inline-block; width: 450px; bottom: 0; margin-bottom: 30px; background-color: rgba(255,255,255,0.8); font-size: 10px; padding: 7px 12px; opacity: 0;
|
||||
-webkit-transition: all 0.2s;
|
||||
-moz-transition: all 0.2s;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.files .serverMessage b {font-size: 10px}
|
||||
|
||||
.editor {position: absolute; display: inline-block; top: 0; left: 15px; width: 2400px}
|
||||
.editor .tabsBar {display: inline-block; height: 22px; width: 2400px; margin-top: 40px; padding-left: 41px; background-color: #888;}
|
||||
.tabsBar .tab {display: inline-block; display: none; background-image: url('../images/nav-bg.jpg'); background-repeat: repeat-x; background-position: 0 0; padding: 5px 8px 2px 8px; font-size: 10px; border-left: solid 1px #fff; border-right: solid 1px #777; color: #fff; cursor: pointer;
|
||||
-webkit-transition: all 0.15s;
|
||||
-moz-transition: all 0.15s;
|
||||
transition: all 0.15s;
|
||||
}
|
||||
.tabsBar .tab .closeTab {margin: 1px 0 0 5px; border-radius: 6px}
|
||||
.tabsBar .newTab {display: inline-block; background-image: url('../images/nav-bg.jpg'); background-repeat: repeat-x; background-position: 0 0; padding: 6px 5px 1px 5px; border-left: solid 1px #fff; border-right: solid 1px #777; cursor: pointer;}
|
||||
.editor .findBar {display: inline-block; height: 28px; width: 2400px; color: #fff; background-color: #141414}
|
||||
.findBar .findReplace {position: absolute; z-index: 1}
|
||||
.findReplace select {position: relative; font-size: 10px; margin: 8px 2px 0 2px; top: -2px;}
|
||||
.findReplace .findText {display: inline-block; height: 21px; font-size: 10px; margin: 8px 2px 0 2px; margin-left: 43px}
|
||||
.findReplace .find {position: relative; width: 120px; height: 14px; border: 0; top: -2px; font-size: 10px; padding-left: 5px; margin-right: 3px}
|
||||
.findReplace .replaceAction {margin: 0 2px 0 0; top: -2px}
|
||||
.findReplace .replaceText {height: 21px; font-size: 10px; margin: 8px 2px 0 2px}
|
||||
.findReplace .replace {position: relative; width: 120px; height: 16px; border: 0; top: -2px; font-size: 10px; padding-left: 5px}
|
||||
.findReplace .targetText {height: 21px; font-size: 10px; margin: 8px 2px 0 2px}
|
||||
.findReplace .submit {position: relative; top: -2px; height: 17px; border: 1px solid #bbb; background-color: #f8f8f8; font-size: 10px; cursor: pointer}
|
||||
.findReplace .results {position: relative; display: inline-block; width: 200px; height: 20px; font-size: 10px; margin: 8px 0 0 20px}
|
||||
.findBar .codeAssist {position: fixed; display: inline-block; width: 100px; right: 74px; top: 70px; height: 21px; font-size: 10px; z-index: 1}
|
||||
.findBar .codeAssist input {margin-top: -1px}
|
||||
.findBar .goLine {position: fixed; display: inline-block; width: 100px; right: -10px; top: 70px; height: 21px; font-size: 10px; z-index: 1}
|
||||
.goLine .goToLine {width: 25px; height: 16px; border: 0; font-size: 10px; margin: -3px 0 0 3px}
|
||||
.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: 2}
|
||||
.footer .nesting {display: inline-block; padding: 5px 8px; margin: 4px 0 0 15px; font-weight: bold; font-size: 10px; color: #fff; background-color: #0b0}
|
||||
.footer .nestLoc {position: absolute; display: inline-block; width: 120px; padding: 5px 0 0 8px; margin-top: 3px; left: 112px; font-weight: bold; font-size: 12px; color: #fff; text-align: right}
|
||||
.footer .nestDisplay {position: absolute; display: inline-block; padding: 5px 0 0 8px; margin-top: 3px; left: 255px; font-size: 12px; color: #fff; text-align: right}
|
||||
.footer .charDisplay {position: absolute; display: inline-block; padding: 5px 0 0 8px; margin-top: 3px; left: 100%; font-weight: bold; font-size: 12px; color: #fff; text-align: right; width: 200px; text-align: right; margin-left: -220px}
|
||||
|
||||
.textbox {box-shadow: inset 1px 1px 2px 0 rgba(0,0,0,0.4)}
|
||||
|
||||
.fileMenu {position: absolute; display: none; left: 0; top: 0; background-color: #333; z-index: 10}
|
||||
.fileMenu a {display: block; padding: 2px 5px; background-color: #333; color: #eee; text-decoration: none}
|
||||
.fileMenu a:hover {background-color: #666}
|
||||
|
||||
.screenContainer {position: absolute; display: table; width: 100%; height: 100%; top: 0; left: 0; text-align: center}
|
||||
.screenContainer .screenVCenter {#position: absolute; display: table-cell; #top: 50%; vertical-align: middle; text-align: center}
|
||||
.screenVCenter .screenCenter {#position: relative; #top: -50%; text-align: center; display: inline}
|
||||
.screenCenter .version {position: relative; display: block; margin: 5px 0 15px 0; font-size: 10px; color: #bbb}
|
||||
.screenCenter .accountPassword {border: 0; background-color: #333; color: #fff; height: 20px}
|
||||
.screenCenter .button {border: 0; background: #444; color: #eee; height: 22px; cursor: pointer}
|
||||
.screenCenter .button:hover {background-color: #333; color: #eee}
|
||||
1748
lib/coder.js
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
$ICEcoder = array(
|
||||
"root" => "",
|
||||
"tabsIndent" => true,
|
||||
"checkUpdates" => true,
|
||||
"openLastFiles" => true,
|
||||
"findFilesExclude" => array("_coder",".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"),
|
||||
"codeAssist" => true,
|
||||
"visibleTabs" => false,
|
||||
"lockedNav" => true,
|
||||
"accountPassword" => "",
|
||||
"restrictedFiles" => array("wp-",".php",".rb",".sql",".zip"),
|
||||
"bannedFiles" => array("_coder","ICEcoder"),
|
||||
"allowedIPs" => array("*"),
|
||||
"plugins" => array(
|
||||
array("Adminer","plugins/adminer/icon.png","margin-top: 3px","plugins/adminer/adminer-3.4.0-mysql-en.php","_blank",""),
|
||||
array("Zip It!","plugins/zip-it/icon.png","margin-top: 3px; margin-left: 3px","plugins/zip-it/?zip=|&exclude=*.doc*.gif*.jpg*.jpeg*.pdf*.png*.swf*.xml*.zip","fileControl:<b>Zipping Files</b>","30"),
|
||||
array("ICErepo","plugins/ice-repo/icon.png","margin-top: 3px","plugins/ice-repo","_blank",""),
|
||||
array("Dochub","plugins/dochub/icon.png","margin-top: 3px","http://dochub.io","_blank","")
|
||||
),
|
||||
"theme" => "default",
|
||||
"tabWidth" => 4,
|
||||
"previousFiles" => "",
|
||||
"last10Files" => ""
|
||||
);
|
||||
?>
|
||||
17
lib/config___settings.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
// ICEcoder system settings
|
||||
$ICEcoderSettings = array(
|
||||
"versionNo" => "4.5",
|
||||
"codeMirrorDir" => "CodeMirror-4.7",
|
||||
"docRoot" => $_SERVER['DOCUMENT_ROOT'],
|
||||
"demoMode" => false,
|
||||
"devMode" => false,
|
||||
"loginRequired" => true,
|
||||
"multiUser" => false,
|
||||
"languageBase" => "english.php",
|
||||
"lineEnding" => "\n",
|
||||
"newDirPerms" => 755,
|
||||
"newFilePerms" => 644,
|
||||
"enableRegistration" => true
|
||||
);
|
||||
?>
|
||||
38
lib/config___users-template.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
$ICEcoderUserSettings = array(
|
||||
"versionNo" => "4.5",
|
||||
"licenseEmail" => "",
|
||||
"licenseCode" => "",
|
||||
"configCreateDate" => 0,
|
||||
"root" => "",
|
||||
"checkUpdates" => true,
|
||||
"openLastFiles" => true,
|
||||
"updateDiffOnSave" => true,
|
||||
"languageUser" => "english.php",
|
||||
"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"),
|
||||
"codeAssist" => true,
|
||||
"visibleTabs" => false,
|
||||
"lockedNav" => true,
|
||||
"tagWrapperCommand" => "ctrl+alt",
|
||||
"autoComplete" => "ctrl+space",
|
||||
"password" => "",
|
||||
"bannedFiles" => array(),
|
||||
"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"),
|
||||
"allowedIPs" => array("*"),
|
||||
"theme" => "default",
|
||||
"fontSize" => "13px",
|
||||
"lineWrapping" => true,
|
||||
"indentWithTabs" => true,
|
||||
"indentSize" => 4,
|
||||
"pluginPanelAligned" => "left",
|
||||
"bugFilePaths" => array(),
|
||||
"bugFileCheckTimer" => 0,
|
||||
"bugFileMaxLines" => 0,
|
||||
"githubAuthToken" => "",
|
||||
"plugins" => array(),
|
||||
"githubLocalPaths" => array(),
|
||||
"githubRemotePaths" => array(),
|
||||
"previousFiles" => "",
|
||||
"last10Files" => ""
|
||||
);
|
||||
?>
|
||||
412
lib/difflib.js
Normal file
@@ -0,0 +1,412 @@
|
||||
/***
|
||||
This is part of jsdifflib v1.0. <http://snowtide.com/jsdifflib>
|
||||
|
||||
Copyright (c) 2007, Snowtide Informatics Systems, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Snowtide Informatics Systems nor the names of its
|
||||
contributors may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
||||
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGE.
|
||||
***/
|
||||
/* Author: Chas Emerick <cemerick@snowtide.com> */
|
||||
var __whitespace = {" ":true, "\t":true, "\n":true, "\f":true, "\r":true};
|
||||
|
||||
var difflib = {
|
||||
defaultJunkFunction: function (c) {
|
||||
return __whitespace.hasOwnProperty(c);
|
||||
},
|
||||
|
||||
stripLinebreaks: function (str) { return str.replace(/^[\n\r]*|[\n\r]*$/g, ""); },
|
||||
|
||||
stringAsLines: function (str) {
|
||||
var lfpos = str.indexOf("\n");
|
||||
var crpos = str.indexOf("\r");
|
||||
var linebreak = ((lfpos > -1 && crpos > -1) || crpos < 0) ? "\n" : "\r";
|
||||
|
||||
var lines = str.split(linebreak);
|
||||
for (var i = 0; i < lines.length; i++) {
|
||||
lines[i] = difflib.stripLinebreaks(lines[i]);
|
||||
}
|
||||
|
||||
return lines;
|
||||
},
|
||||
|
||||
// iteration-based reduce implementation
|
||||
__reduce: function (func, list, initial) {
|
||||
if (initial != null) {
|
||||
var value = initial;
|
||||
var idx = 0;
|
||||
} else if (list) {
|
||||
var value = list[0];
|
||||
var idx = 1;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (; idx < list.length; idx++) {
|
||||
value = func(value, list[idx]);
|
||||
}
|
||||
|
||||
return value;
|
||||
},
|
||||
|
||||
// comparison function for sorting lists of numeric tuples
|
||||
__ntuplecomp: function (a, b) {
|
||||
var mlen = Math.max(a.length, b.length);
|
||||
for (var i = 0; i < mlen; i++) {
|
||||
if (a[i] < b[i]) return -1;
|
||||
if (a[i] > b[i]) return 1;
|
||||
}
|
||||
|
||||
return a.length == b.length ? 0 : (a.length < b.length ? -1 : 1);
|
||||
},
|
||||
|
||||
__calculate_ratio: function (matches, length) {
|
||||
return length ? 2.0 * matches / length : 1.0;
|
||||
},
|
||||
|
||||
// returns a function that returns true if a key passed to the returned function
|
||||
// is in the dict (js object) provided to this function; replaces being able to
|
||||
// carry around dict.has_key in python...
|
||||
__isindict: function (dict) {
|
||||
return function (key) { return dict.hasOwnProperty(key); };
|
||||
},
|
||||
|
||||
// replacement for python's dict.get function -- need easy default values
|
||||
__dictget: function (dict, key, defaultValue) {
|
||||
return dict.hasOwnProperty(key) ? dict[key] : defaultValue;
|
||||
},
|
||||
|
||||
SequenceMatcher: function (a, b, isjunk) {
|
||||
this.set_seqs = function (a, b) {
|
||||
this.set_seq1(a);
|
||||
this.set_seq2(b);
|
||||
}
|
||||
|
||||
this.set_seq1 = function (a) {
|
||||
if (a == this.a) return;
|
||||
this.a = a;
|
||||
this.matching_blocks = this.opcodes = null;
|
||||
}
|
||||
|
||||
this.set_seq2 = function (b) {
|
||||
if (b == this.b) return;
|
||||
this.b = b;
|
||||
this.matching_blocks = this.opcodes = this.fullbcount = null;
|
||||
this.__chain_b();
|
||||
}
|
||||
|
||||
this.__chain_b = function () {
|
||||
var b = this.b;
|
||||
var n = b.length;
|
||||
var b2j = this.b2j = {};
|
||||
var populardict = {};
|
||||
for (var i = 0; i < b.length; i++) {
|
||||
var elt = b[i];
|
||||
if (b2j.hasOwnProperty(elt)) {
|
||||
var indices = b2j[elt];
|
||||
if (n >= 200 && indices.length * 100 > n) {
|
||||
populardict[elt] = 1;
|
||||
delete b2j[elt];
|
||||
} else {
|
||||
indices.push(i);
|
||||
}
|
||||
} else {
|
||||
b2j[elt] = [i];
|
||||
}
|
||||
}
|
||||
|
||||
for (var elt in populardict) {
|
||||
if (populardict.hasOwnProperty(elt)) {
|
||||
delete b2j[elt];
|
||||
}
|
||||
}
|
||||
|
||||
var isjunk = this.isjunk;
|
||||
var junkdict = {};
|
||||
if (isjunk) {
|
||||
for (var elt in populardict) {
|
||||
if (populardict.hasOwnProperty(elt) && isjunk(elt)) {
|
||||
junkdict[elt] = 1;
|
||||
delete populardict[elt];
|
||||
}
|
||||
}
|
||||
for (var elt in b2j) {
|
||||
if (b2j.hasOwnProperty(elt) && isjunk(elt)) {
|
||||
junkdict[elt] = 1;
|
||||
delete b2j[elt];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.isbjunk = difflib.__isindict(junkdict);
|
||||
this.isbpopular = difflib.__isindict(populardict);
|
||||
}
|
||||
|
||||
this.find_longest_match = function (alo, ahi, blo, bhi) {
|
||||
var a = this.a;
|
||||
var b = this.b;
|
||||
var b2j = this.b2j;
|
||||
var isbjunk = this.isbjunk;
|
||||
var besti = alo;
|
||||
var bestj = blo;
|
||||
var bestsize = 0;
|
||||
var j = null;
|
||||
var k;
|
||||
|
||||
var j2len = {};
|
||||
var nothing = [];
|
||||
for (var i = alo; i < ahi; i++) {
|
||||
var newj2len = {};
|
||||
var jdict = difflib.__dictget(b2j, a[i], nothing);
|
||||
for (var jkey in jdict) {
|
||||
if (jdict.hasOwnProperty(jkey)) {
|
||||
j = jdict[jkey];
|
||||
if (j < blo) continue;
|
||||
if (j >= bhi) break;
|
||||
newj2len[j] = k = difflib.__dictget(j2len, j - 1, 0) + 1;
|
||||
if (k > bestsize) {
|
||||
besti = i - k + 1;
|
||||
bestj = j - k + 1;
|
||||
bestsize = k;
|
||||
}
|
||||
}
|
||||
}
|
||||
j2len = newj2len;
|
||||
}
|
||||
|
||||
while (besti > alo && bestj > blo && !isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {
|
||||
besti--;
|
||||
bestj--;
|
||||
bestsize++;
|
||||
}
|
||||
|
||||
while (besti + bestsize < ahi && bestj + bestsize < bhi &&
|
||||
!isbjunk(b[bestj + bestsize]) &&
|
||||
a[besti + bestsize] == b[bestj + bestsize]) {
|
||||
bestsize++;
|
||||
}
|
||||
|
||||
while (besti > alo && bestj > blo && isbjunk(b[bestj - 1]) && a[besti - 1] == b[bestj - 1]) {
|
||||
besti--;
|
||||
bestj--;
|
||||
bestsize++;
|
||||
}
|
||||
|
||||
while (besti + bestsize < ahi && bestj + bestsize < bhi && isbjunk(b[bestj + bestsize]) &&
|
||||
a[besti + bestsize] == b[bestj + bestsize]) {
|
||||
bestsize++;
|
||||
}
|
||||
|
||||
return [besti, bestj, bestsize];
|
||||
}
|
||||
|
||||
this.get_matching_blocks = function () {
|
||||
if (this.matching_blocks != null) return this.matching_blocks;
|
||||
var la = this.a.length;
|
||||
var lb = this.b.length;
|
||||
|
||||
var queue = [[0, la, 0, lb]];
|
||||
var matching_blocks = [];
|
||||
var alo, ahi, blo, bhi, qi, i, j, k, x;
|
||||
while (queue.length) {
|
||||
qi = queue.pop();
|
||||
alo = qi[0];
|
||||
ahi = qi[1];
|
||||
blo = qi[2];
|
||||
bhi = qi[3];
|
||||
x = this.find_longest_match(alo, ahi, blo, bhi);
|
||||
i = x[0];
|
||||
j = x[1];
|
||||
k = x[2];
|
||||
|
||||
if (k) {
|
||||
matching_blocks.push(x);
|
||||
if (alo < i && blo < j)
|
||||
queue.push([alo, i, blo, j]);
|
||||
if (i+k < ahi && j+k < bhi)
|
||||
queue.push([i + k, ahi, j + k, bhi]);
|
||||
}
|
||||
}
|
||||
|
||||
matching_blocks.sort(difflib.__ntuplecomp);
|
||||
|
||||
var i1 = 0, j1 = 0, k1 = 0, block = 0;
|
||||
var i2, j2, k2;
|
||||
var non_adjacent = [];
|
||||
for (var idx in matching_blocks) {
|
||||
if (matching_blocks.hasOwnProperty(idx)) {
|
||||
block = matching_blocks[idx];
|
||||
i2 = block[0];
|
||||
j2 = block[1];
|
||||
k2 = block[2];
|
||||
if (i1 + k1 == i2 && j1 + k1 == j2) {
|
||||
k1 += k2;
|
||||
} else {
|
||||
if (k1) non_adjacent.push([i1, j1, k1]);
|
||||
i1 = i2;
|
||||
j1 = j2;
|
||||
k1 = k2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (k1) non_adjacent.push([i1, j1, k1]);
|
||||
|
||||
non_adjacent.push([la, lb, 0]);
|
||||
this.matching_blocks = non_adjacent;
|
||||
return this.matching_blocks;
|
||||
}
|
||||
|
||||
this.get_opcodes = function () {
|
||||
if (this.opcodes != null) return this.opcodes;
|
||||
var i = 0;
|
||||
var j = 0;
|
||||
var answer = [];
|
||||
this.opcodes = answer;
|
||||
var block, ai, bj, size, tag;
|
||||
var blocks = this.get_matching_blocks();
|
||||
for (var idx in blocks) {
|
||||
if (blocks.hasOwnProperty(idx)) {
|
||||
block = blocks[idx];
|
||||
ai = block[0];
|
||||
bj = block[1];
|
||||
size = block[2];
|
||||
tag = '';
|
||||
if (i < ai && j < bj) {
|
||||
tag = 'replace';
|
||||
} else if (i < ai) {
|
||||
tag = 'delete';
|
||||
} else if (j < bj) {
|
||||
tag = 'insert';
|
||||
}
|
||||
if (tag) answer.push([tag, i, ai, j, bj]);
|
||||
i = ai + size;
|
||||
j = bj + size;
|
||||
|
||||
if (size) answer.push(['equal', ai, i, bj, j]);
|
||||
}
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
// this is a generator function in the python lib, which of course is not supported in javascript
|
||||
// the reimplementation builds up the grouped opcodes into a list in their entirety and returns that.
|
||||
this.get_grouped_opcodes = function (n) {
|
||||
if (!n) n = 3;
|
||||
var codes = this.get_opcodes();
|
||||
if (!codes) codes = [["equal", 0, 1, 0, 1]];
|
||||
var code, tag, i1, i2, j1, j2;
|
||||
if (codes[0][0] == 'equal') {
|
||||
code = codes[0];
|
||||
tag = code[0];
|
||||
i1 = code[1];
|
||||
i2 = code[2];
|
||||
j1 = code[3];
|
||||
j2 = code[4];
|
||||
codes[0] = [tag, Math.max(i1, i2 - n), i2, Math.max(j1, j2 - n), j2];
|
||||
}
|
||||
if (codes[codes.length - 1][0] == 'equal') {
|
||||
code = codes[codes.length - 1];
|
||||
tag = code[0];
|
||||
i1 = code[1];
|
||||
i2 = code[2];
|
||||
j1 = code[3];
|
||||
j2 = code[4];
|
||||
codes[codes.length - 1] = [tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)];
|
||||
}
|
||||
|
||||
var nn = n + n;
|
||||
var group = [];
|
||||
var groups = [];
|
||||
for (var idx in codes) {
|
||||
if (codes.hasOwnProperty(idx)) {
|
||||
code = codes[idx];
|
||||
tag = code[0];
|
||||
i1 = code[1];
|
||||
i2 = code[2];
|
||||
j1 = code[3];
|
||||
j2 = code[4];
|
||||
if (tag == 'equal' && i2 - i1 > nn) {
|
||||
group.push([tag, i1, Math.min(i2, i1 + n), j1, Math.min(j2, j1 + n)]);
|
||||
groups.push(group);
|
||||
group = [];
|
||||
i1 = Math.max(i1, i2-n);
|
||||
j1 = Math.max(j1, j2-n);
|
||||
}
|
||||
|
||||
group.push([tag, i1, i2, j1, j2]);
|
||||
}
|
||||
}
|
||||
|
||||
if (group && !(group.length == 1 && group[0][0] == 'equal')) groups.push(group)
|
||||
|
||||
return groups;
|
||||
}
|
||||
|
||||
this.ratio = function () {
|
||||
matches = difflib.__reduce(
|
||||
function (sum, triple) { return sum + triple[triple.length - 1]; },
|
||||
this.get_matching_blocks(), 0);
|
||||
return difflib.__calculate_ratio(matches, this.a.length + this.b.length);
|
||||
}
|
||||
|
||||
this.quick_ratio = function () {
|
||||
var fullbcount, elt;
|
||||
if (this.fullbcount == null) {
|
||||
this.fullbcount = fullbcount = {};
|
||||
for (var i = 0; i < this.b.length; i++) {
|
||||
elt = this.b[i];
|
||||
fullbcount[elt] = difflib.__dictget(fullbcount, elt, 0) + 1;
|
||||
}
|
||||
}
|
||||
fullbcount = this.fullbcount;
|
||||
|
||||
var avail = {};
|
||||
var availhas = difflib.__isindict(avail);
|
||||
var matches = numb = 0;
|
||||
for (var i = 0; i < this.a.length; i++) {
|
||||
elt = this.a[i];
|
||||
if (availhas(elt)) {
|
||||
numb = avail[elt];
|
||||
} else {
|
||||
numb = difflib.__dictget(fullbcount, elt, 0);
|
||||
}
|
||||
avail[elt] = numb - 1;
|
||||
if (numb > 0) matches++;
|
||||
}
|
||||
|
||||
return difflib.__calculate_ratio(matches, this.a.length + this.b.length);
|
||||
}
|
||||
|
||||
this.real_quick_ratio = function () {
|
||||
var la = this.a.length;
|
||||
var lb = this.b.length;
|
||||
return _calculate_ratio(Math.min(la, lb), la + lb);
|
||||
}
|
||||
|
||||
this.isjunk = isjunk ? isjunk : difflib.defaultJunkFunction;
|
||||
this.a = this.b = null;
|
||||
this.set_seqs(a, b);
|
||||
}
|
||||
};
|
||||
21
lib/download.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
include("headers.php");
|
||||
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) {
|
||||
die("<script>alert('Sorry, that file doesn\'t appear to exist');</script>");
|
||||
}
|
||||
|
||||
if (file_exists($file)) {
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Disposition: attachment; filename='.basename($file));
|
||||
header('Content-Length: '.filesize($file));
|
||||
ob_clean();
|
||||
flush();
|
||||
readfile($file);
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
@@ -1,40 +1,40 @@
|
||||
/* ICE coder default theme: Based VERY loosely on Monokai */
|
||||
/* ICEcoder default theme by Matt Pass */
|
||||
|
||||
.cm-s-icecoder {color: #666; background: #1c1c19;}
|
||||
.cm-s-icecoder {color: #666; background: #161612}
|
||||
|
||||
.cm-s-icecoder span.cm-keyword {color: #f8f8f8; font-weight:bold;}
|
||||
.cm-s-icecoder span.cm-atom {color: #ae81ff;}
|
||||
.cm-s-icecoder span.cm-number {color: #0a0;}
|
||||
.cm-s-icecoder span.cm-def {color: #fd971f;}
|
||||
.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-variable {color: #a6e22e;}
|
||||
.cm-s-icecoder span.cm-variable-2 {color: #f92672;}
|
||||
.cm-s-icecoder span.cm-variable-3 {color: #0a0;}
|
||||
.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-property {color: #a6e22e;}
|
||||
.cm-s-icecoder span.cm-operator {color: #0a0;}
|
||||
.cm-s-icecoder span.cm-comment {color: #444;}
|
||||
.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-string {color: #fd0;}
|
||||
.cm-s-icecoder span.cm-string-2 {color: #f80;}
|
||||
.cm-s-icecoder span.cm-string {color: #ccb100}
|
||||
.cm-s-icecoder span.cm-string-2 {color: #cc6d00}
|
||||
|
||||
.cm-s-icecoder span.cm-meta {color: #555;}
|
||||
.cm-s-icecoder span.cm-error {color: #f00;}
|
||||
.cm-s-icecoder span.cm-meta {color: #555}
|
||||
.cm-s-icecoder span.cm-error {color: #d00}
|
||||
|
||||
.cm-s-icecoder span.cm-qualifier {color: #555;}
|
||||
.cm-s-icecoder span.cm-builtin {color: #06c;}
|
||||
.cm-s-icecoder span.cm-bracket {color: #cc7;}
|
||||
.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-tag {color: #e8e8e8;}
|
||||
.cm-s-icecoder span.cm-attribute {color: #00b8bb;}
|
||||
.cm-s-icecoder span.cm-tag {color: #e8e8e8}
|
||||
.cm-s-icecoder span.cm-attribute {color: #099}
|
||||
|
||||
.cm-s-icecoder span.cm-header {color: #a0a;}
|
||||
.cm-s-icecoder span.cm-quote {color: #090;}
|
||||
.cm-s-icecoder span.cm-hr {color: #999;}
|
||||
.cm-s-icecoder span.cm-link {color: #ff0;}
|
||||
.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 .CodeMirror-cursor {border-left: 1px solid white !important;}
|
||||
.cm-s-icecoder .CodeMirror-selected {background: #037 !important;}
|
||||
.cm-s-icecoder .CodeMirror-gutter {background: #333; border-right: 1px solid #e8e8e8}
|
||||
.cm-s-icecoder .CodeMirror-gutter-text {color: #999; width: 35px; cursor: default}
|
||||
.cm-s-icecoder .CodeMirror-matchingbracket {border: 1px solid grey; color: black !important;}
|
||||
.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-linenumber {color: #555; cursor: default}
|
||||
.cm-s-icecoder .CodeMirror-matchingbracket {border: 1px solid grey; color: black !important}
|
||||
295
lib/file-control-xhr.php
Normal file
@@ -0,0 +1,295 @@
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
$t = $text['file-control'];
|
||||
|
||||
// ===============================
|
||||
// SET OUR ERROR INFO TO A DEFAULT
|
||||
// ===============================
|
||||
|
||||
$error = false;
|
||||
$errorStr = "false";
|
||||
$errorMsg = "None";
|
||||
|
||||
// ==============================
|
||||
// GET CLEANED FILENAMES OR ERROR
|
||||
// ==============================
|
||||
|
||||
// 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']!=""
|
||||
? $_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]);
|
||||
}
|
||||
};
|
||||
$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" &&
|
||||
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";
|
||||
};
|
||||
}
|
||||
|
||||
// ============
|
||||
// SAVING FILES
|
||||
// ============
|
||||
|
||||
if (!$error && $_GET['action']=="save") {
|
||||
|
||||
// ====================================
|
||||
// NEW FILES AND SAVE AS XHR LOOPAROUND
|
||||
// ====================================
|
||||
|
||||
if (strpos($fileOrig,"[NEW]")>0||$saveType=="saveAs") {
|
||||
$finalAction = strpos($fileOrig,"[NEW]")>0 ? "save as" : "save";
|
||||
$fileURL = isset($file) ? $file : "";
|
||||
$fileMDTURLPart = isset($_GET["fileMDT"]) && $_GET["fileMDT"]!="undefined" ? "&fileMDT=".numClean($_GET['fileMDT']) : "";
|
||||
$doNext = '
|
||||
top.ICEcoder.serverMessage();
|
||||
fileLoc = "'.$fileLoc.'";
|
||||
newFileName = top.ICEcoder.getInput("'.$t['Enter filename to...'].' "+(fileLoc!="" ? fileLoc : "/"),"");
|
||||
if (newFileName) {
|
||||
if (newFileName.substr(0,1)!="/") {newFileName = "/" + newFileName};
|
||||
newFileName = fileLoc + newFileName;
|
||||
if (top.document.getElementById("filesFrame").contentWindow.document.getElementById(newFileName.replace(/\\\//g,"|"))) {
|
||||
overwriteOK = top.ICEcoder.ask("'.$t['That file exists...'].'");
|
||||
}
|
||||
};
|
||||
|
||||
if ("undefined" == typeof newFileName || (newFileName && "undefined" == typeof overwriteOK) || ("undefined" != typeof overwriteOK && overwriteOK)) {
|
||||
newFileName = "'.$docRoot.'" + newFileName;
|
||||
saveURL = "lib/file-control-xhr.php?action=save'.$fileMDTURLPart.'&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.document.getElementById(\'saveTemp1\').value);
|
||||
top.ICEcoder.serverMessage("<b>'.$t['Saving'].'</b><br>" + "'.($finalAction == "Save" ? "newFileName" : "'".$fileName."'").'");
|
||||
} else {
|
||||
top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);
|
||||
}';
|
||||
|
||||
// ===================
|
||||
// FILE CONTENT SAVING
|
||||
// ===================
|
||||
|
||||
} elseif (isset($_POST['contents'])) {
|
||||
$finalAction = isset($_POST["newFileName"]) ? "save as" : "save";
|
||||
|
||||
// =================
|
||||
// FILE IS WRITEABLE
|
||||
// =================
|
||||
|
||||
if (!$demoMode && ((file_exists($file) && is_writable($file)) || isset($_POST['newFileName']) && $_POST['newFileName']!="")) {
|
||||
$filemtime = $serverType=="Linux" ? filemtime($file) : "1000000";
|
||||
|
||||
// =======================
|
||||
// MDT'S MATCH, WRITE FILE
|
||||
// =======================
|
||||
|
||||
if (!(isset($_GET['fileMDT']))||$filemtime==$_GET['fileMDT']) {
|
||||
// Newly created files have the perms set too
|
||||
$setPerms = (!file_exists($file)) ? true : false;
|
||||
$fh = fopen($file, 'w') or die($t['Sorry, cannot save']);
|
||||
// replace \r\n (Windows), \r (old Mac) and \n (Linux) line endings with whatever we chose to be lineEnding
|
||||
$contents = $_POST['contents'];
|
||||
$contents = str_replace("\r\n", $ICEcoder["lineEnding"], $contents);
|
||||
$contents = str_replace("\r", $ICEcoder["lineEnding"], $contents);
|
||||
$contents = str_replace("\n", $ICEcoder["lineEnding"], $contents);
|
||||
// Now write that content, close the file and clear the statcache
|
||||
fwrite($fh, $contents);
|
||||
fclose($fh);
|
||||
if ($setPerms) {
|
||||
chmod($file,octdec($ICEcoder['newFilePerms']));
|
||||
}
|
||||
clearstatcache();
|
||||
$filemtime = $serverType=="Linux" ? filemtime($file) : "1000000";
|
||||
$doNext .= 'top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1]="'.$filemtime.'";';
|
||||
// Reload file manager, rename tab & remove old file highlighting if it was a new file
|
||||
if (isset($_POST['newFileName']) && $_POST['newFileName']!="") {
|
||||
$doNext .= 'top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\',false,false,false,\'file\');';
|
||||
$doNext .= 'top.ICEcoder.renameTab(top.ICEcoder.selectedTab,\''.$fileLoc."/".$fileName.'\');';
|
||||
if (!strpos($_REQUEST['file'],"[NEW]")) {
|
||||
// We're saving as a new file, so unhighlight the old name in the file manager if visible
|
||||
$doNext .= "fileLink = top.ICEcoder.filesFrame.contentWindow.document.getElementById('".str_replace("/","|",$fileLoc)."|".basename($_REQUEST['file'])."');";
|
||||
$doNext .= "if (fileLink) {fileLink.style.backgroundColor = top.ICEcoder.tabBGnormal; fileLink.style.color = top.ICEcoder.tabFGnormalFile};";
|
||||
}
|
||||
}
|
||||
// Reload previewWindow window if not a Markdown file
|
||||
// In doing this, we check on an interval for the page to be complete and if we last saw it loading
|
||||
// When we are done loading, so set the loading status to false and load plugins ontop...
|
||||
$doNext .= 'if (top.ICEcoder.previewWindow.location && top.ICEcoder.previewWindow.location.pathname.indexOf(".md")==-1) {
|
||||
top.ICEcoder.previewWindowLoading = false;
|
||||
top.ICEcoder.previewWindow.location.reload(true);
|
||||
|
||||
top.ICEcoder.checkPreviewWindowLoadingInt = setInterval(function() {
|
||||
if (top.ICEcoder.previewWindow.document.readyState != "loading" && top.ICEcoder.previewWindowLoading) {
|
||||
top.ICEcoder.previewWindowLoading = false;
|
||||
try {top.ICEcoder.doPesticide();} catch(err) {};
|
||||
try {top.ICEcoder.doStatsJS(\'save\');} catch(err) {};
|
||||
clearInterval(top.ICEcoder.checkPreviewWindowLoadingInt);
|
||||
} else {
|
||||
top.ICEcoder.previewWindowLoading = top.ICEcoder.previewWindow.document.readyState == "loading" ? true : false;
|
||||
}
|
||||
},4);
|
||||
|
||||
};';
|
||||
|
||||
// Copy over content to diff pane if we have that setting on
|
||||
$doNext .= '
|
||||
cM = top.ICEcoder.getcMInstance();
|
||||
cMdiff = top.ICEcoder.getcMdiffInstance();
|
||||
if (top.ICEcoder.updateDiffOnSave) {
|
||||
cMdiff.setValue(cM.getValue());
|
||||
};
|
||||
';
|
||||
|
||||
// Finally, set previous files, indicate changes, set saved points and redo tabs
|
||||
$doNext .= '
|
||||
top.ICEcoder.setPreviousFiles();
|
||||
setTimeout(function(){top.ICEcoder.indicateChanges()},4);
|
||||
top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1] = cM.changeGeneration();
|
||||
top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);';
|
||||
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-save.php");
|
||||
|
||||
// ======================================================
|
||||
// MDT'S DON'T MATCH, OFFER TO LOAD FILE & SHOW DIFF VIEW
|
||||
// ======================================================
|
||||
|
||||
} else {
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
$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...'].'");
|
||||
if (refreshFile) {
|
||||
var cM = top.ICEcoder.getcMInstance();
|
||||
var thisTab = top.ICEcoder.selectedTab;
|
||||
var userVersionFile = cM.getValue();
|
||||
/* Revert back to original */
|
||||
cM.setValue(loadedFile.value);
|
||||
top.ICEcoder.savedPoints[thisTab-1] = cM.changeGeneration();
|
||||
top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1] = "'.$filemtime.'";
|
||||
cM.clearHistory();
|
||||
/* Now for the new version in the diff pane */
|
||||
top.ICEcoder.setSplitPane(\'on\');
|
||||
var cMdiff = top.ICEcoder.getcMdiffInstance();
|
||||
cMdiff.setValue(userVersionFile);
|
||||
};';
|
||||
$finalAction = "nothing";
|
||||
}
|
||||
|
||||
// ===================
|
||||
// FILE IS UNWRITEABLE
|
||||
// ===================
|
||||
|
||||
} else {
|
||||
$finalAction = "nothing";
|
||||
$doNext .= "top.ICEcoder.message('".$t['Sorry, cannot save']."\\n".$file."');";
|
||||
}
|
||||
$doNext .= 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ===================
|
||||
// JSON DATA TO RETURN
|
||||
// ===================
|
||||
|
||||
echo '{
|
||||
"file": {
|
||||
"absPath": "'.$file.'",
|
||||
"relPath": "'.$fileLoc.'/'.$fileName.'",
|
||||
"name": "'.$fileName.'",
|
||||
"path": "'.dirname($file).'",
|
||||
"bytes": "'.filesize($file).'",
|
||||
"modifiedDT": "'.$filemtime.'"
|
||||
},
|
||||
"action": {
|
||||
"initial" : "'.$_GET["action"].'",
|
||||
"final" : "'.$finalAction.'",
|
||||
"timeStart": '.$_POST["timeStart"].',
|
||||
"timeEnd": 0,
|
||||
"timeTaken": 0,
|
||||
"csrf": "'.$_GET["csrf"].'",
|
||||
"doNext" : "'.str_replace(PHP_EOL,'',str_replace(' ','',str_replace('"','\"',$doNext))).'top.ICEcoder.switchMode();"
|
||||
},
|
||||
"status": {
|
||||
"error" : '.($error ? 'true' : 'false').',
|
||||
"errorStr" : "'.$errorStr.'",
|
||||
"errorMsg" : "'.$errorMsg.'"
|
||||
}
|
||||
}';
|
||||
?>
|
||||
@@ -1,129 +1,343 @@
|
||||
<?php include("settings.php");?>
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
$t = $text['file-control'];
|
||||
?>
|
||||
<?php if ($_SESSION['githubDiff']) { ?>
|
||||
<script src="github.js"></script>
|
||||
<script src="underscore-min.js"></script>
|
||||
<?php ;}; ?>
|
||||
<script>
|
||||
<?php
|
||||
// Get the save type if any
|
||||
if (isset($_GET['saveType'])) {$saveType = strClean($_GET['saveType']);};
|
||||
$saveType = isset($_GET['saveType']) ? strClean($_GET['saveType']) : "";
|
||||
|
||||
// Establish the filename/new filename
|
||||
$file = str_replace("|","/",strClean(
|
||||
isset($_POST['newFileName']) && $_POST['newFileName']!=""
|
||||
? $_POST['newFileName']
|
||||
: $_GET['file']
|
||||
: $_REQUEST['file']
|
||||
));
|
||||
|
||||
// Make $file a full path and establish the $fileLoc and $fileName
|
||||
if (strpos($file,$docRoot)===false) {$file=str_replace("|","/",$docRoot.$iceRoot.$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]);
|
||||
}
|
||||
};
|
||||
$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" &&
|
||||
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)
|
||||
) {
|
||||
die("alert('Sorry! - problem with file requested');</script>");
|
||||
};
|
||||
}
|
||||
|
||||
// If we're due to open a file...
|
||||
if ($_GET['action']=="load") {
|
||||
echo '<script>action="load";</script>';
|
||||
echo 'action="load";';
|
||||
|
||||
// Determine what to do based on filename
|
||||
// Everything is opened as text in the editor unless specified otherwise
|
||||
$fileType="text";
|
||||
if (strpos($fileName,".jpg")>0||strpos($fileName,".jpeg")>0||strpos($fileName,".gif")>0||strpos($fileName,".png")>0) {$fileType="image";};
|
||||
|
||||
if ($fileType=="text") {
|
||||
$bannedFile=false;
|
||||
for ($i=0;$i<count($ICEcoder["restrictedFiles"]);$i++) {
|
||||
if (strpos($fileName,$ICEcoder["restrictedFiles"][$i])!="") {
|
||||
$bannedFile=true;
|
||||
}
|
||||
}
|
||||
if (file_exists($file)) {
|
||||
echo '<script>fileType="text";';
|
||||
echo 'top.ICEcoder.shortURL = top.ICEcoder.rightClickedFile = top.ICEcoder.thisFileFolderLink = "'.$fileLoc."/".$fileName.'";';
|
||||
echo '</script>';
|
||||
$loadedFile = file_get_contents($file);
|
||||
echo '<textarea name="loadedFile" id="loadedFile">'.str_replace("</textarea>","<ICEcoder:/:textarea>",htmlentities($loadedFile)).'</textarea>';
|
||||
if (file_exists($file)) {
|
||||
$finfo = "text";
|
||||
// Determine what to do based on mime type
|
||||
if (function_exists('finfo_open')) {
|
||||
$finfoMIME = finfo_open(FILEINFO_MIME);
|
||||
$finfo = finfo_file($finfoMIME, $file);
|
||||
finfo_close($finfoMIME);
|
||||
} else {
|
||||
echo '<script>fileType="nothing";</script>';
|
||||
echo '<script>top.ICEcoder.message(\'Sorry, '.$fileLoc."/".$fileName.' doesn\\\'t seem to exist on the server\');</script>';
|
||||
$fileExt = explode(" ",pathinfo($file, PATHINFO_EXTENSION));
|
||||
$fileExt = $fileExt[0];
|
||||
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) {
|
||||
echo 'fileType="text";';
|
||||
echo 'top.ICEcoder.shortURL = top.ICEcoder.thisFileFolderLink = "'.$fileLoc."/".$fileName.'";';
|
||||
$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>';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-load.php");
|
||||
} else if (strpos($finfo,"image")===0) {
|
||||
echo 'fileType="image";fileName=\''.$fileLoc."/".$fileName.'\';';
|
||||
} else {
|
||||
echo 'fileType="other";window.open(\'http://'.$_SERVER['SERVER_NAME'].$fileLoc."/".$fileName.'\');';
|
||||
};
|
||||
} else {
|
||||
echo 'fileType="nothing"; top.ICEcoder.message(\''.$t['Sorry'].', '.$fileLoc."/".$fileName.' '.$t['does not seem...'].'\');';
|
||||
}
|
||||
|
||||
if ($fileType=="image") {
|
||||
echo '<script>fileType="image";fileName=\''.$fileLoc."/".$fileName.'\'</script>';
|
||||
};
|
||||
};
|
||||
|
||||
// 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 (is_writable($docRoot.$fileLoc)) {
|
||||
mkdir($file, 0705);
|
||||
if (!$demoMode && is_writable($docRoot.$fileLoc)) {
|
||||
mkdir($file, octdec($ICEcoder['newDirPerms']));
|
||||
// Reload file manager
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\');action="newFolder";</script>';
|
||||
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 "<script>top.ICEcoder.message('Sorry, cannot create folder at\\n".$fileLoc."');action='nothing';</script>";
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot create...']."\\n".$fileLoc."');";
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
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") {
|
||||
if (is_writable($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])))) {
|
||||
rename($docRoot.$iceRoot.str_replace("|","/",strClean($_GET['oldFileName'])),$docRoot.$fileLoc."/".$fileName);
|
||||
// Reload file manager
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'rename\',\''.$fileLoc.'\',\''.$fileName.'\',\'\',\''.str_replace($iceRoot,"",strClean($_GET['oldFileName'])).'\');';
|
||||
echo 'action="rename";</script>';
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('Sorry, cannot rename\\n".strClean($_GET['oldFileName'])."');</script>";
|
||||
echo '<script>action="nothing";</script>';
|
||||
$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");
|
||||
}
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
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 (is_writable(str_replace("|","/",strClean($_GET['fileRef'])))) {
|
||||
if (!$demoMode && is_writable(str_replace("|","/",strClean($_GET['fileRef'])))) {
|
||||
$file = str_replace("|","/",strClean($_GET['fileRef']));
|
||||
$loadedFile = file_get_contents($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("Sorry, cannot save");
|
||||
$fh = fopen($file, 'w') or die($t['Sorry, cannot save']);
|
||||
fwrite($fh, $newContent);
|
||||
fclose($fh);
|
||||
echo '<script>action="replaceText";</script>';
|
||||
echo 'action="replaceText";';
|
||||
// Run our custom processes
|
||||
include_once("../processes/on-file-replace-text.php");
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('Sorry, cannot replace text in\\n".strClean($_GET['fileRef'])."');</script>";
|
||||
echo '<script>action="nothing";</script>';
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot replace...']."\\n".strClean($_GET['fileRef'])."');";
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
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 (is_writable($file)) {
|
||||
if (!$demoMode && is_writable($file)) {
|
||||
chmod($file,octdec(numClean($_GET['perms'])));
|
||||
// Reload file manager
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'chmod\',\''.$fileLoc.'\',\''.$fileName.'\',\''.numClean($_GET['perms']).'\');';
|
||||
echo 'action="perms";</script>';
|
||||
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 "<script>top.ICEcoder.message('Sorry, cannot change permissions on \\n".strClean($file)."');</script>";
|
||||
echo '<script>action="nothing";</script>';
|
||||
echo "action='nothing'; top.ICEcoder.message('".$t['Sorry, cannot change...']." \\n".strClean($file)."');";
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// If we're due to delete a file...
|
||||
if ($_GET['action']=="delete") {
|
||||
$filesArray = split(";",$file); // May contain more than one file here
|
||||
for ($i=0;$i<=count($filesArray)-1;$i++) {
|
||||
if (is_writable($iceRoot.$filesArray[$i])) {
|
||||
if (is_dir($iceRoot.$filesArray[$i])) {
|
||||
rrmdir($iceRoot.$filesArray[$i]);
|
||||
} else {
|
||||
unlink($iceRoot.$filesArray[$i]);
|
||||
}
|
||||
$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 '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'delete\',\''.$fileLoc.'\',\''.$fileName.'\');';
|
||||
echo 'action="delete";</script>';
|
||||
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 "<script>top.ICEcoder.message('Sorry can\\'t delete\\n".$filesArray[$i]."');</script>";
|
||||
echo "top.ICEcoder.message('".$t['Sorry, cannot delete']."\\n".str_replace($docRoot,"",$fullPath)."');";
|
||||
}
|
||||
echo '<script>action="nothing";</script>';
|
||||
echo 'action="nothing";';
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
echo 'top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);';
|
||||
}
|
||||
|
||||
// The function to recursively remove folders & files
|
||||
@@ -132,74 +346,25 @@ function rrmdir($dir) {
|
||||
$objects = scandir($dir);
|
||||
foreach ($objects as $object) {
|
||||
if ($object != "." && $object != "..") {
|
||||
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
|
||||
filetype($dir."/".$object) == "dir"
|
||||
? rrmdir($dir."/".$object)
|
||||
: unlink($dir."/".$object);
|
||||
}
|
||||
}
|
||||
reset($objects);
|
||||
rmdir($dir);
|
||||
}
|
||||
}
|
||||
|
||||
if ($_GET['action']=="save") {
|
||||
echo '<script>action="save";</script>';
|
||||
// on the form posting via a reload, save the file
|
||||
if (isset($_POST['contents'])) {
|
||||
if ((file_exists($file) && is_writable($file)) || isset($_POST['newFileName']) && $_POST['newFileName']!="") {
|
||||
if (filemtime($file)==$_GET['fileMDT']||!(isset($_GET['fileMDT']))) {
|
||||
$fh = fopen($file, 'w') or die("Sorry, cannot save");
|
||||
fwrite($fh, $_POST['contents']);
|
||||
fclose($fh);
|
||||
clearstatcache();
|
||||
echo '<script>top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1]="'.filemtime($file).'";</script>';
|
||||
// Reload file manager & rename tab if it was a new file
|
||||
if (isset($_POST['newFileName']) && $_POST['newFileName']!="") {
|
||||
echo '<script>top.ICEcoder.selectedFiles=[];top.ICEcoder.updateFileManagerList(\'add\',\''.$fileLoc.'\',\''.$fileName.'\');</script>';
|
||||
echo '<script>top.ICEcoder.renameTab(top.ICEcoder.selectedTab,\''.$fileLoc."/".$fileName.'\');</script>';
|
||||
}
|
||||
// Reload stickytab window
|
||||
echo '<script>if (top.ICEcoder.stickyTabWindow.location) {top.ICEcoder.stickyTabWindow.location.reload()};action="doneSave";</script>';
|
||||
} else {
|
||||
$loadedFile = file_get_contents($file);
|
||||
echo '<textarea name="loadedFile" id="loadedFile">'.str_replace("</textarea>","<ICEcoder:/:textarea>",htmlentities($loadedFile)).'</textarea>';
|
||||
echo '<textarea name="userVersionFile" id="userVersionFile"></textarea>';
|
||||
?>
|
||||
<script>
|
||||
var refreshFile = top.ICEcoder.ask('Sorry, this file has changed, cannot save\n<?php echo $file;?>\n\nReload this file and copy your version to a new document?');
|
||||
if (refreshFile) {
|
||||
var cM = top.ICEcoder.getcMInstance();
|
||||
var thisTab = top.ICEcoder.selectedTab;
|
||||
document.getElementById('userVersionFile').value = cM.getValue();
|
||||
// Revert back to original
|
||||
cM.setValue(document.getElementById('loadedFile').value);
|
||||
top.ICEcoder.changedContent[thisTab-1] = 0;
|
||||
top.ICEcoder.openFileMDTs[top.ICEcoder.selectedTab-1] = "<?php echo filemtime($file); ?>";
|
||||
cM.clearHistory();
|
||||
// Now for the new file
|
||||
top.ICEcoder.newTab();
|
||||
cM = top.ICEcoder.getcMInstance();
|
||||
cM.setValue(document.getElementById('userVersionFile').value);
|
||||
cM.clearHistory();
|
||||
// Finally, switch back to original tab
|
||||
top.ICEcoder.switchTab(thisTab);
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
echo "<script>action='nothing';</script>";
|
||||
}
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('Sorry, cannot write\\n".$file."');action='nothing';</script>";
|
||||
}
|
||||
echo '<script>top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);</script>';
|
||||
}
|
||||
};
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
if (action=="load") {
|
||||
if (fileType=="text") {
|
||||
setTimeout(function() {
|
||||
if (!top.ICEcoder.content.contentWindow.createNewCMInstance) {
|
||||
console.log('There was tech hiccup, likely something wasn\'t quite ready. So ICEcoder reloaded it\'s file control again.');
|
||||
window.location.reload();
|
||||
console.log('<?php echo $t['There was a...']; ?>');
|
||||
window.location.reload(true);
|
||||
<?php
|
||||
if (file_exists($file)) {
|
||||
?>
|
||||
} else {
|
||||
top.ICEcoder.loadingFile = true;
|
||||
// Reset the various states back to their initial setting
|
||||
@@ -211,72 +376,80 @@ if (action=="load") {
|
||||
top.ICEcoder.setLayout();
|
||||
top.ICEcoder.content.contentWindow.createNewCMInstance(top.ICEcoder.nextcMInstance);
|
||||
|
||||
// Set the value & innerHTML of the code textarea to that of our loaded file plus make it visible (it's hidden on _coder's load)
|
||||
// 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];
|
||||
|
||||
$ghRemoteURLPaths = $ICEcoder['githubRemotePaths'];
|
||||
$ghRemoteURL = $ghRemoteURLPaths[$ghRemoteURLPos];
|
||||
|
||||
$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;
|
||||
}
|
||||
?>
|
||||
|
||||
top.ICEcoder.filesFrame.contentWindow.frames['processControl'].location.href = "github.php?action=read&repo=<?php echo $ghRemoteURL;?>&filePath=<?php echo $ghFilePath;?>&csrf="+top.ICEcoder.csrf;
|
||||
}
|
||||
|
||||
// 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();
|
||||
cM = top.ICEcoder.getcMInstance();
|
||||
cM.setValue(document.getElementById('loadedFile').value);
|
||||
top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1] = cM.changeGeneration();
|
||||
top.document.getElementById('content').style.visibility='visible';
|
||||
top.ICEcoder.switchTab(top.ICEcoder.selectedTab);
|
||||
cM.focus();
|
||||
top.ICEcoder.switchTab(top.ICEcoder.selectedTab,'noFocus');
|
||||
setTimeout(function(){top.filesFrame.contentWindow.focus();},0);
|
||||
|
||||
// Then clean it up, set the text cursor, update the display and get the character data
|
||||
top.ICEcoder.contentCleanUp();
|
||||
top.ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].setLineClass(top.ICEcoder['cMActiveLine'+top.ICEcoder.selectedTab], null);
|
||||
top.ICEcoder['cMActiveLine'+top.ICEcoder.selectedTab] = top.ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].setLineClass(0, "cm-s-activeLine");
|
||||
top.ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]].removeLineClass(top.ICEcoder['cMActiveLinecM'+top.ICEcoder.cMInstances[top.ICEcoder.selectedTab-1]], "background");
|
||||
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 filemtime($file); ?>');
|
||||
top.ICEcoder.openFileMDTs.push('<?php echo $serverType=="Linux" ? filemtime($file) : "1000000"; ?>');
|
||||
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.loadingFile = false;
|
||||
<?php
|
||||
;};
|
||||
?>
|
||||
}
|
||||
},4);
|
||||
}
|
||||
|
||||
if (fileType=="image") {
|
||||
top.document.getElementById('blackMask').style.visibility = "visible";
|
||||
top.document.getElementById('mediaContainer').innerHTML = "<img src=\"<?php echo $fileLoc."/".$fileName;?>\" class=\"whiteGlow\" style=\"border: solid 10px #fff; max-width: 700px; max-height: 500px\" onClick=\"return false\"><br><span class=\"whiteGlow\" style=\"border: solid 10px #fff; color: #000; background-color: #fff\" onClick=\"return false\"><?php echo $fileLoc."/".$fileName;?></span>";
|
||||
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>" +
|
||||
"<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>" +
|
||||
"<input type=\"text\" id=\"hexMouseXY\" 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=\"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.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);
|
||||
}
|
||||
</script>
|
||||
|
||||
<form name="saveFile" action="file-control.php?action=save&file=<?php if (isset($file)) {echo $file;}; if (isset($_GET['fileMDT']) && $_GET['fileMDT']!="undefined") {echo "&fileMDT=".numClean($_GET['fileMDT']);};?>" method="POST">
|
||||
<textarea name="contents"></textarea>
|
||||
<input type="hidden" name="newFileName" value="">
|
||||
</form>
|
||||
|
||||
<script>
|
||||
if (action=="save") {
|
||||
<?php
|
||||
if (strpos($file,"[NEW]")>0||$saveType=="saveAs") {
|
||||
if (strpos($fileName,"[NEW]")>0) {echo "fileLoc = '".$fileLoc."';";} else {echo "fileLoc = '';";};
|
||||
?>
|
||||
newFileName = top.ICEcoder.getInput(fileLoc != ""
|
||||
? 'Enter filename to save at '+fileLoc
|
||||
: 'Enter filename (including path, prefixed with /)'
|
||||
,'');
|
||||
if (newFileName.substr(0,1)!="/") {newFileName = "/" + newFileName}
|
||||
if (newFileName) {
|
||||
newFileName = fileLoc == "" ? newFileName : fileLoc + "/" + fileName;
|
||||
}
|
||||
if (newFileName && top.document.getElementById('filesFrame').contentWindow.document.getElementById(newFileName.replace(/\//g,"|"))) {
|
||||
overwriteOK = top.ICEcoder.ask('That file exists already, overwrite?');
|
||||
}
|
||||
document.saveFile.newFileName.value = '<?php echo $docRoot; ?>' + newFileName;
|
||||
<?php ;};?>
|
||||
if ("undefined" == typeof newFileName || (newFileName && "undefined" == typeof overwriteOK) || ("undefined" != typeof overwriteOK && overwriteOK)) {
|
||||
top.ICEcoder.serverMessage('<b>Saving</b><br>'+ <?php echo strpos($file,"[NEW]")>0 ? "newFileName" : "'$file'"; ?>);
|
||||
document.saveFile.contents.value = top.document.getElementById('saveTemp1').value;
|
||||
document.saveFile.submit();
|
||||
} else {
|
||||
top.ICEcoder.serverMessage();top.ICEcoder.serverQueue("del",0);
|
||||
action=="nothing";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
if (action=="doneSave") {
|
||||
top.ICEcoder.changedContent[top.ICEcoder.selectedTab-1] = 0;
|
||||
top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);
|
||||
}
|
||||
// Finally, switch mode in case we have saved, renamed file etc
|
||||
top.ICEcoder.switchMode();
|
||||
</script>
|
||||
29
lib/file-type-icons.css
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Additional file types */
|
||||
.fileManager LI.ext-c:before {background-position: -48px 0}
|
||||
.fileManager LI.ext-cpp: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}
|
||||
.fileManager LI.ext-erl:before {background-position: -128px 0}
|
||||
.fileManager LI.ext-gif:before {background-position: -144px 0}
|
||||
.fileManager LI.ext-go:before {background-position: -160px 0}
|
||||
.fileManager LI.ext-htm:before, .fileManager LI.ext-html:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-jpg:before, .fileManager LI.ext-jpeg:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-java:before {background-position: -208px 0}
|
||||
.fileManager LI.ext-js:before, .fileManager LI.ext-json:before {background-position: -224px 0}
|
||||
.fileManager LI.ext-jl:before {background-position: -240px 0}
|
||||
.fileManager LI.ext-less:before {background-position: -256px 0}
|
||||
.fileManager LI.ext-lua:before {background-position: -272px 0}
|
||||
.fileManager LI.ext-md:before {background-position: -288px 0}
|
||||
.fileManager LI.ext-pl:before {background-position: -304px 0}
|
||||
.fileManager LI.ext-php:before {background-position: -320px 0}
|
||||
.fileManager LI.ext-png:before {background-position: -336px 0}
|
||||
.fileManager LI.ext-py:before {background-position: -352px 0}
|
||||
.fileManager LI.ext-rb:before, .fileManager LI.ext-ruby:before {background-position: -368px 0}
|
||||
.fileManager LI.ext-rs:before {background-position: -384px 0}
|
||||
.fileManager LI.ext-scss:before {background-position: -400px 0}
|
||||
.fileManager LI.ext-sql:before {background-position: -416px 0}
|
||||
.fileManager LI.ext-txt:before {background-position: -432px 0}
|
||||
.fileManager LI.ext-xml:before {background-position: -448px 0}
|
||||
.fileManager LI.ext-yaml:before {background-position: -464px 0}
|
||||
.fileManager LI.ext-zip:before {background-position: -480px 0}
|
||||
25
lib/file-types.css
Normal file
@@ -0,0 +1,25 @@
|
||||
.fileManager {
|
||||
margin: 0 0 15px 20px;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.fileManager span {font-family: helvetica, arial, swiss, verdana; padding: 1px 3px; border-radius: 3px}
|
||||
.fileManager a {color: #eee; text-decoration: none; cursor: pointer}
|
||||
.fileManager .pft-directory, .fileManager .pft-file {list-style-image: url(../images/blank.gif)}
|
||||
.fileManager ul, .fileManager li {margin-left: 15px}
|
||||
|
||||
/* Default file */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
position: absolute; display: block; width: 16px; height: 16px; content: ""; margin-top: -2px; margin-left: -20px; background:url(../images/file-folder-icons.png) no-repeat 0 0;
|
||||
}
|
||||
.fileManager LI.dirOpen:before {background-position: -16px 0}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) { /* hacked for chrome and safari */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
margin-top: -19px;
|
||||
}
|
||||
}
|
||||
.fileManager LI.pft-file:before {background-position: -32px 0}
|
||||
@@ -17,55 +17,21 @@ table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
body {margin: 0; overflow: auto}
|
||||
|
||||
.refresh {position: fixed; display: inline-block; width: 14px; height: 14px; background: url('../images/file-manager-icons.png') -100px -16px no-repeat; right: 0; margin-right: 15px; cursor: pointer}
|
||||
|
||||
.fileManager {
|
||||
margin: 15px 0 15px 22px;
|
||||
body {margin: 0; overflow: auto;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-o-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.fileManager span {font-family: helvetica, arial, swiss, verdana}
|
||||
.fileManager a {color: #eee; text-decoration: none; cursor: pointer}
|
||||
.fileManager .pft-directory, .fileManager .pft-file {list-style-image: url(../images/blank.gif)}
|
||||
.fileManager ul, .fileManager li {margin-left: 15px}
|
||||
|
||||
/* Default file */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
position: absolute; display: block; width: 16px; height: 16px; content: ""; margin-top: -2px; margin-left: -23px; background:url(../images/file-folder-icons.png) no-repeat 0 0;
|
||||
}
|
||||
.fileManager LI.dirOpen:before {background-position: -16px 0}
|
||||
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) { /* hacked for chrome and safari */
|
||||
.fileManager LI.pft-directory:before, .fileManager LI.pft-file:before {
|
||||
margin-top: -19px;
|
||||
}
|
||||
}
|
||||
.fileManager LI.pft-file:before {background-position: -32px 0}
|
||||
|
||||
/* Additional file types */
|
||||
.fileManager LI.ext-coffee:before {background-position: -48px 0}
|
||||
.fileManager LI.ext-css:before {background-position: -64px 0}
|
||||
.fileManager LI.ext-gif:before {background-position: -80px 0}
|
||||
.fileManager LI.ext-htm:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-html:before {background-position: -96px 0}
|
||||
.fileManager LI.ext-jpg:before {background-position: -112px 0}
|
||||
.fileManager LI.ext-jpeg:before {background-position: -112px 0}
|
||||
.fileManager LI.ext-js:before {background-position: -128px 0}
|
||||
/*.fileManager LI.ext-pdf:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-less:before {background-position: -144px 0}
|
||||
.fileManager LI.ext-php:before {background-position: -160px 0}
|
||||
.fileManager LI.ext-png:before {background-position: -176px 0}
|
||||
.fileManager LI.ext-rb:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-rbx:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-rhtml:before {background-position: -192px 0}
|
||||
.fileManager LI.ext-ruby:before {background-position: -192px 0}
|
||||
/*.fileManager LI.ext-sql:before {background-position: -???px 0} */
|
||||
/*.fileManager LI.ext-swf:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-txt:before {background-position: -208px 0}
|
||||
/*.fileManager LI.ext-xml:before {background-position: -???px 0} */
|
||||
.fileManager LI.ext-zip:before {background-position: -224px 0}
|
||||
.lock {position: fixed; display: inline-block; width: 12px; height: 16px; background: url('../images/file-manager-icons.png') 0 0 no-repeat; right: 0; margin-right: 16px; top: 0; cursor: pointer}
|
||||
.refresh {position: fixed; display: inline-block; width: 14px; height: 14px; background: url('../images/file-manager-icons.png') -32px 0 no-repeat; right: 0; margin-right: 15px; top: 25px; cursor: pointer}
|
||||
.plugins {position: fixed; display: inline-block; width: 16px; height: 16px; background: url('../images/file-manager-icons.png') -64px 0 no-repeat; right: 0; margin-right: 15px; top: 47px; cursor: pointer}
|
||||
.githubOn {position: fixed; display: inline-block; width: 14px; height: 14px; background: url('../images/file-manager-icons.png') -80px 0 no-repeat; right: 0; margin-right: 15px; top: 72px; cursor: pointer}
|
||||
.githubOff {position: fixed; display: inline-block; width: 14px; height: 14px; background: url('../images/file-manager-icons.png') -96px 0 no-repeat; right: 0; margin-right: 15px; top: 72px; cursor: pointer}
|
||||
.fmDragBox {position: absolute; display: inline-block; width: 0; height: 0; top: 0; left: 0; background: rgba(0,198,255,0.3);
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
55
lib/foldcode.js
Normal file
@@ -0,0 +1,55 @@
|
||||
// Modified version of CodeMirror's codefold.js to show guttermarkers
|
||||
|
||||
CodeMirror.doFold = function(foldType, widget, markOn, markOff, dontCollapse) {
|
||||
|
||||
if (widget == null) widget = "\u2194";
|
||||
if (typeof widget == "string") {
|
||||
var text = document.createTextNode(widget);
|
||||
widget = document.createElement("span");
|
||||
widget.appendChild(text);
|
||||
widget.className = "CodeMirror-foldmarker";
|
||||
}
|
||||
if (markOn == null) markOn = "+";
|
||||
if (typeof markOn == "string") {
|
||||
var text = document.createTextNode(markOn);
|
||||
markOn = document.createElement("span");
|
||||
markOn.appendChild(text);
|
||||
markOn.className = "fold foldOn";
|
||||
}
|
||||
if (markOff == null) markOff = "-";
|
||||
if (typeof markOff == "string") {
|
||||
var text = document.createTextNode(markOff);
|
||||
markOff = document.createElement("span");
|
||||
markOff.appendChild(text);
|
||||
markOff.className = "fold foldOff";
|
||||
}
|
||||
|
||||
return function(cm, pos) {
|
||||
if (typeof pos == "number") pos = CodeMirror.Pos(pos, 0);
|
||||
var range = CodeMirror.fold[foldType](cm, pos);
|
||||
foldable = range && (range.from.line != range.to.line || range.from.ch != range.to.ch) ? true : false;
|
||||
if (!foldable) cm.setGutterMarker(pos.line, "folds", null);
|
||||
if (!range) return;
|
||||
|
||||
var present = cm.findMarksAt(range.from), cleared = 0;
|
||||
for (var i = 0; i < present.length; ++i) {
|
||||
if (present[i].__isFold) {
|
||||
++cleared;
|
||||
present[i].clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (foldable) {
|
||||
cm.setGutterMarker(pos.line, "folds", cleared || dontCollapse ? markOff.cloneNode(true) : markOn.cloneNode(true));
|
||||
}
|
||||
|
||||
if (cleared || dontCollapse) return;
|
||||
var myWidget = widget.cloneNode(true);
|
||||
CodeMirror.on(myWidget, "mousedown", function() {myRange.clear();cm.setGutterMarker(pos.line, "folds", markOff.cloneNode(true));});
|
||||
var myRange = cm.markText(range.from, range.to, {
|
||||
replacedWith: myWidget,
|
||||
clearOnEnter: true,
|
||||
__isFold: true
|
||||
});
|
||||
};
|
||||
};
|
||||
422
lib/get-branch.php
Normal file
@@ -0,0 +1,422 @@
|
||||
<?php
|
||||
if (!isset($ICEcoder['root'])) {
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
}
|
||||
|
||||
if (!$_SESSION['loggedIn']) {
|
||||
header("Location: ../");
|
||||
die();
|
||||
}
|
||||
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['get-branch'];
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ICEcoder v <?php echo $ICEcoder["versionNo"];?> get branch</title>
|
||||
<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>
|
||||
<?php ;}; ?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<?php
|
||||
// Need to get dir contents recursively? (Used by GitHub diff mode)
|
||||
if ($_SESSION['githubDiff']) {
|
||||
// Function to sort given values alphabetically
|
||||
function alphasort($a, $b) {
|
||||
return strcmp($a->getPathname(), $b->getPathname());
|
||||
}
|
||||
|
||||
// Class to put forward the values for sorting
|
||||
class SortingIterator implements IteratorAggregate {
|
||||
private $iterator = null;
|
||||
public function __construct(Traversable $iterator, $callback) {
|
||||
$array = iterator_to_array($iterator);
|
||||
usort($array, $callback);
|
||||
$this->iterator = new ArrayIterator($array);
|
||||
}
|
||||
public function getIterator() {
|
||||
return $this->iterator;
|
||||
}
|
||||
}
|
||||
|
||||
// Get a full list of dirs & files and begin sorting using above class & function
|
||||
$path = $docRoot.$iceRoot;
|
||||
$objectList = new SortingIterator(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST), 'alphasort');
|
||||
|
||||
// Iterator to get files
|
||||
$iter = new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),
|
||||
RecursiveIteratorIterator::SELF_FIRST,
|
||||
RecursiveIteratorIterator::CATCH_GET_CHILD // Ignore "Permission denied"
|
||||
);
|
||||
|
||||
// Check if dir has .gitignore file
|
||||
function hasGitignore($dir) {
|
||||
return is_file("$dir/.gitignore");
|
||||
}
|
||||
|
||||
// Get a list of .gitignore files into $gi array
|
||||
$gi = array();
|
||||
if(hasGitignore($path)) {
|
||||
$gi[] = "$path/.gitignore";
|
||||
}
|
||||
foreach ($iter as $scanpath) {
|
||||
if (is_dir($scanpath) && strpos($scanpath,".git") == false) {
|
||||
$thisDir = str_replace("\\","/",$scanpath);
|
||||
if(hasGitignore($thisDir)) {
|
||||
$gi[] = $thisDir."/.gitignore";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get $matches array containing existing files listed in .gitignore
|
||||
function parseGitignore($file) { # $file = '/absolute/path/to/.gitignore'
|
||||
$dir = dirname($file);
|
||||
$matches = array();
|
||||
$lines = file($file);
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if ($line === '') continue; # empty line
|
||||
if (substr($line, 0, 1) == '#') continue; # a comment
|
||||
if (substr($line, 0, 1) == '!') { # negated glob
|
||||
$line = substr($line, 1);
|
||||
$files = array_diff(glob("$dir/*"), glob("$dir/$line"));
|
||||
} else { # normal glob
|
||||
$files = glob("$dir/$line");
|
||||
}
|
||||
$matches = array_merge($matches, $files);
|
||||
}
|
||||
return $matches;
|
||||
}
|
||||
|
||||
// Cycle through all .gitignore files running above function to get a list of $excluded files
|
||||
// Exclude the .git dir as first item as we don't want to see that
|
||||
$excluded = array("/.git");
|
||||
foreach ($gi as $scanpath) {
|
||||
$excludedTest = (parseGitignore($scanpath));
|
||||
if (count($excludedTest) > 0) {
|
||||
$excluded = array_merge($excluded, $excludedTest);
|
||||
}
|
||||
}
|
||||
|
||||
$objectListArray = array();
|
||||
foreach ($objectList as $objectRef) {
|
||||
$fileFolderName = @ltrim(substr(str_replace("\\","/",$objectRef->getPathname()), strlen($path)),"/");
|
||||
array_push($objectListArray,$fileFolderName);
|
||||
}
|
||||
}
|
||||
|
||||
// If we're just getting a branch, get that and set as the finalArray
|
||||
$scanDir = $docRoot.$iceRoot;
|
||||
$location = "";
|
||||
echo '<div id="branch" style="display: none">';
|
||||
$location = str_replace("|","/",$_GET['location']);
|
||||
if ($location=="/") {$location = "";};
|
||||
|
||||
$dirArray = $filesArray = $finalArray = array();
|
||||
$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) {
|
||||
$canAdd = false;
|
||||
}
|
||||
if ($entry != "." && $entry != ".." && $canAdd) {
|
||||
is_dir($docRoot.$iceRoot.$location."/".$entry)
|
||||
? array_push($dirArray,$location."/".$entry)
|
||||
: array_push($filesArray,$location."/".$entry);
|
||||
}
|
||||
}
|
||||
natcasesort($dirArray);
|
||||
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 ($type=="file") {
|
||||
// Get extension (prefix 'ext-' to prevent invalid classes from extensions that begin with numbers)
|
||||
$ext = "ext-".pathinfo($docRoot.$iceRoot.$fileFolderName, PATHINFO_EXTENSION);
|
||||
}
|
||||
if ($i==0) {echo "<ul style=\"display: block\">\n";}
|
||||
if ($i==count($finalArray)-1 && isset($_GET['location'])) {
|
||||
echo "</ul>\n";
|
||||
}
|
||||
$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) : '';
|
||||
$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;
|
||||
echo "</span></a></li>\n";
|
||||
}
|
||||
|
||||
echo ' </div>';
|
||||
|
||||
if ($_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;
|
||||
$dirListArray = $dirSHAArray = $dirTypeArray = array();
|
||||
// For each of the files in our local path...
|
||||
for ($i=0; $i<count($objectListArray); $i++) {
|
||||
$fileFolderName = "/".$objectListArray[$i];
|
||||
|
||||
// If we're not looking at a .git dir, it's not a .gitignore excluded path and not a dir
|
||||
if (strpos($fileFolderName,".git/") == false && !in_array($docRoot.$iceRoot.$fileFolderName, $excluded) && !is_dir($docRoot.$iceRoot.$fileFolderName)) {
|
||||
// Get contents of file
|
||||
$contents = file_get_contents($docRoot.$iceRoot.$fileFolderName);
|
||||
|
||||
$finfo = "text";
|
||||
// Determine if we should remove \r line endings based on mime type (text files yes, others no)
|
||||
if (function_exists('finfo_open')) {
|
||||
$finfoMIME = finfo_open(FILEINFO_MIME);
|
||||
$finfo = finfo_file($finfoMIME, $docRoot.$iceRoot.$fileFolderName);
|
||||
finfo_close($finfoMIME);
|
||||
} else {
|
||||
$fileExt = explode(" ",pathinfo($docRoot.$iceRoot.$fileFolderName, PATHINFO_EXTENSION));
|
||||
$fileExt = $fileExt[0];
|
||||
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) {
|
||||
$contents = str_replace("\r","",$contents);
|
||||
};
|
||||
// Establish the blob SHA contents and push name, SHA and type into 3 arrays
|
||||
$store = "blob ".strlen($contents)."\000".$contents;
|
||||
array_push($dirListArray,ltrim($fileFolderName,"/"));
|
||||
array_push($dirSHAArray,sha1($store));
|
||||
array_push($dirTypeArray,"file");
|
||||
}
|
||||
}
|
||||
|
||||
// Get our GitHub relative site path
|
||||
$ghRemoteURLPos = array_search($ICEcoder["root"],$ICEcoder['githubLocalPaths']);
|
||||
$ghRemoteURLPaths = $ICEcoder['githubRemotePaths'];
|
||||
$ghRemoteURL = $ghRemoteURLPaths[$ghRemoteURLPos];
|
||||
$ghRemoteURL = str_replace("https://github.com/","",$ghRemoteURL);
|
||||
|
||||
// Reduce absolute excluded paths to relative
|
||||
for ($i=0; $i<count($excluded); $i++) {
|
||||
$excluded[$i] = str_replace($docRoot.$iceRoot,"",$excluded[$i]);
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
top.repo = '<?php echo $ghRemoteURL;?>';
|
||||
top.path = '<?php echo $path;?>';
|
||||
dirListArray = [<?php echo "'".implode("','", $dirListArray)."'";?>];
|
||||
dirSHAArray = [<?php echo "'".implode("','", $dirSHAArray)."'";?>];
|
||||
dirTypeArray = [<?php echo "'".implode("','", $dirTypeArray)."'";?>];
|
||||
excludedArray = [<?php echo "'".implode("','", $excluded)."'";?>];
|
||||
// Start our github object
|
||||
var github = new Github({token: "<?php echo $_SESSION['githubAuthToken'];?>", auth: "oauth"});
|
||||
repoListArray = [];
|
||||
repoSHAArray = [];
|
||||
|
||||
// Set our repo and get the tree recursively
|
||||
var repo = github.getRepo(top.repo.split("/")[0], top.repo.split("/")[1]);
|
||||
repo.getTree('master?recursive=true', function(err, tree) {
|
||||
if(!err) {
|
||||
top.treePaths = [];
|
||||
top.diffPaths = [];
|
||||
top.deletedPaths = [];
|
||||
// ==========================================================
|
||||
// NEW FILES are not compared for diffs in this loop, so kept
|
||||
// ==========================================================
|
||||
for (var i=0; i<tree.length; i++) {
|
||||
// compare files (when tree types are blobs)
|
||||
if (tree[i].type == "blob") {
|
||||
// ===========================
|
||||
// UNCHANGED FILES are removed
|
||||
// ===========================
|
||||
if (tree[i].sha == dirSHAArray[dirListArray.indexOf(tree[i].path)]) {
|
||||
if (document.getElementById("|"+tree[i].path.replace("/","|")+"_perms")) {
|
||||
thatNode = document.getElementById("|"+tree[i].path.replace("/","|")+"_perms").parentNode.parentNode;
|
||||
thatNode.parentNode.removeChild(thatNode);
|
||||
}
|
||||
} else {
|
||||
// ======================
|
||||
// CHANGED FILES are kept
|
||||
// ======================
|
||||
if ("undefined" != typeof dirSHAArray[dirListArray.indexOf(tree[i].path)]) {
|
||||
top.diffPaths.push(tree[i].path);
|
||||
// ======================
|
||||
// DELETED FILES are kept
|
||||
// ======================
|
||||
} else {
|
||||
top.deletedPaths.push(tree[i].path);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
top.treePaths.push(tree[i].path);
|
||||
}
|
||||
}
|
||||
// Now we are only showing new, changed and deleted files from our GitHub tree list
|
||||
// in short, we have removed unchanged files from what would be visible
|
||||
|
||||
// However, we should now consider dirs that the user hasn't opened yet as we can
|
||||
// maybe remove closed dirs that contain no changes
|
||||
for (var i=0; i<top.treePaths.length; i++) {
|
||||
canShowDir = false;
|
||||
for (j=0; j<top.diffPaths.length; j++) {
|
||||
if (top.diffPaths[j].indexOf(top.treePaths[i]+"/") === 0) {
|
||||
canShowDir = true;
|
||||
}
|
||||
}
|
||||
// Remove dirs that contain no changes in them
|
||||
if (!canShowDir) {
|
||||
if (document.getElementById("|"+top.treePaths[i].replace("/","|")+"_perms")) {
|
||||
thatNode = document.getElementById("|"+top.treePaths[i].replace("/","|")+"_perms").parentNode.parentNode;
|
||||
thatNode.parentNode.removeChild(thatNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Finally, remove any excluded files as specified in the .gitignore file
|
||||
for (var i=0; i<excludedArray.length; i++) {
|
||||
if (document.getElementById(excludedArray[i].replace(/\//g,"|")+"_perms")) {
|
||||
thatNode = document.getElementById(excludedArray[i].replace(/\//g,"|")+"_perms").parentNode.parentNode;
|
||||
thatNode.parentNode.removeChild(thatNode);
|
||||
}
|
||||
}
|
||||
|
||||
// With everything done, we can now set folderContent, animate those into view and when done, hide the loading screen
|
||||
setTimeout(function(){
|
||||
folderContent = document.getElementById('branch').innerHTML;
|
||||
showFiles();
|
||||
// If there are no diffs, ask user if they want to switch back to regular mode
|
||||
setTimeout(function(){
|
||||
if (parent.document.getElementById('|').parentNode.parentNode.parentNode.childNodes[2].childNodes.length==1) {
|
||||
if(top.ICEcoder.ask('<?php echo $t['There are no...'];?>')) {
|
||||
top.ICEcoder.githubDiffToggle();
|
||||
} else {
|
||||
top.ICEcoder.showHide('hide',top.get('loadingMask'));
|
||||
}
|
||||
} else {
|
||||
top.ICEcoder.showHide('hide',top.get('loadingMask'));
|
||||
}
|
||||
},100);
|
||||
},4);
|
||||
} else {
|
||||
// There was an error, display HTTP error code and response message
|
||||
top.ICEcoder.message('<?php echo $t['Sorry, there was...'];?> '+err.error+'\n\n'+err.request.response);
|
||||
top.ICEcoder.showHide('hide',top.get('loadingMask'));
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<script>
|
||||
targetElem = top.ICEcoder.filesFrame.contentWindow.document.getElementById('<?php echo $_GET['location'];?>');
|
||||
newUL = document.createElement("ul");
|
||||
newUL.style = "display: block";
|
||||
locNest = targetElem.parentNode.parentNode;
|
||||
if(locNest.nextSibling && locNest.nextSibling.tagName=="UL") {
|
||||
x = locNest.nextSibling;
|
||||
x.parentNode.removeChild(x);
|
||||
}
|
||||
folderContent = document.getElementById('branch').innerHTML;
|
||||
folderItems = folderContent.split("\n");
|
||||
|
||||
showFiles = function() {
|
||||
// Now display folders & files
|
||||
|
||||
// Animate into view?
|
||||
if (folderItems.length <= 50) {
|
||||
showFileI=0;
|
||||
animFolders = setInterval(function() {
|
||||
showFileI++;
|
||||
showNextFile('progressive');
|
||||
},4);
|
||||
// Display immediately
|
||||
} else {
|
||||
showFileJ = folderItems.length;
|
||||
showContent = folderContent;
|
||||
showNextFile();
|
||||
}
|
||||
}
|
||||
|
||||
showNextFile = function(progressive) {
|
||||
if (progressive) {
|
||||
showContent = "";
|
||||
for (showFileJ=0; showFileJ<=showFileI; showFileJ++) {
|
||||
showContent += folderItems[showFileJ];
|
||||
if (showFileJ<showFileI) {showContent += "\n";};
|
||||
}
|
||||
}
|
||||
showContent = showContent.slice(28);
|
||||
if (showFileJ==folderItems.length) {
|
||||
// If we've been animating into view, clear that interval
|
||||
if ("undefined" != typeof animFolders) {clearInterval(animFolders);};
|
||||
showContent = showContent.slice(0,-2);
|
||||
// If we've got some deleted files (as we're in GitHub diff mode), add those into the file manager
|
||||
if ("undefined" != typeof top.deletedPaths && top.deletedPaths.length > 0) {
|
||||
i = 0;
|
||||
top.addDeletedFiles = setInterval(function() {
|
||||
fSplit = top.deletedPaths[i].lastIndexOf("/");
|
||||
thePath = top.deletedPaths[i].substr(0,fSplit);
|
||||
theFile = top.deletedPaths[i].substr(fSplit+1);
|
||||
|
||||
// If it's not excluded
|
||||
if ("undefined" != typeof excludedArray && excludedArray.indexOf((thePath == "" ? "" : "/" + thePath)+"/"+theFile) == -1) {
|
||||
|
||||
// If we're adding a deleted dir/file in a sub-dir
|
||||
if ("<?php echo $location;?>" == "/"+thePath) {
|
||||
top.ICEcoder.updateFileManagerList('add','/'+thePath,theFile,false,false,false,'file');
|
||||
// If we're adding a deleted dir/file at the root level
|
||||
} else {
|
||||
// Folder
|
||||
if (thePath != "") {
|
||||
top.ICEcoder.updateFileManagerList('add',top.iceRoot,thePath,false,false,false,'folder');
|
||||
// File
|
||||
} else {
|
||||
top.ICEcoder.updateFileManagerList('add',top.iceRoot+thePath,theFile,false,false,false,'file');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
i++;
|
||||
if ("undefined" == typeof top.deletedPaths[i]) {
|
||||
clearInterval(top.addDeletedFiles);
|
||||
}
|
||||
|
||||
},20);
|
||||
}
|
||||
setTimeout(function(){top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);},4);
|
||||
if (!top.ICEcoder.fmReady) {top.ICEcoder.fmReady=true;};
|
||||
}
|
||||
newUL.innerHTML = showContent;
|
||||
locNest.parentNode.insertBefore(newUL,locNest.nextSibling);
|
||||
}
|
||||
|
||||
// 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();';};?>
|
||||
} else {
|
||||
<?php
|
||||
$iceGithubLocalPaths = $ICEcoder["githubLocalPaths"];
|
||||
$iceGithubRemotePaths = $ICEcoder["githubRemotePaths"];
|
||||
$pathPos = array_search($iceRoot,$iceGithubLocalPaths);
|
||||
if ($pathPos !== false) {
|
||||
?>
|
||||
if (top.ICEcoder.ask("<?php echo $t['Your local folder...'];?> <?php echo $iceGithubRemotePaths[$pathPos];?>?")) {
|
||||
setTimeout(function() {
|
||||
top.ICEcoder.showHide('show',top.get('loadingMask'));
|
||||
top.ICEcoder.filesFrame.contentWindow.frames['fileControl'].location.href = "github.php?action=clone&csrf="+top.ICEcoder.csrf;
|
||||
},4);
|
||||
}
|
||||
<?php ;}; ?>
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
36
lib/github-manager.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/* 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}
|
||||
input {padding: 4px; border: 1px solid #555; background-color: #444; color: #fff}
|
||||
input:focus {
|
||||
outline: none;
|
||||
-webkit-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
-moz-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
}
|
||||
|
||||
.githubManager {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
246
lib/github-manager.php
Normal file
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
$t = $text['github-manager'];
|
||||
|
||||
// If we have an action to perform
|
||||
if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset($_GET['action'])) {
|
||||
|
||||
// Get our old paths & user settings
|
||||
$oldLocal = $ICEcoder["githubLocalPaths"];
|
||||
$oldRemote = $ICEcoder["githubRemotePaths"];
|
||||
$settingsContents = file_get_contents($settingsFile,false,$context);
|
||||
|
||||
// ========
|
||||
// CHOOSING
|
||||
// ========
|
||||
if ($_GET['action']=="choose") {
|
||||
|
||||
$pathPair = numClean($_GET['pathPair']);
|
||||
|
||||
$chosenLocal = $oldLocal[$pathPair];
|
||||
$chosenRemote = $oldRemote[$pathPair];
|
||||
|
||||
$pathValid = false;
|
||||
|
||||
if (!is_dir($docRoot.$chosenLocal)) {
|
||||
if (is_writable($docRoot)) {
|
||||
mkdir($docRoot.$chosenLocal, octdec($ICEcoder['newDirPerms']));
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('".$t['Sorry, cannot create...']."\\n".$chosenLocal."');</script>";
|
||||
}
|
||||
}
|
||||
|
||||
if (is_dir($docRoot.$chosenLocal)) {
|
||||
$pathValid = true;
|
||||
}
|
||||
|
||||
if ($pathValid) {
|
||||
|
||||
// New setting for the root path
|
||||
$settingsNew = '"root" => "'.$chosenLocal.'",'.PHP_EOL;
|
||||
|
||||
// Identify the bit to replace
|
||||
$repPosStart = strpos($settingsContents,'"root"');
|
||||
$repPosEnd = strpos($settingsContents,'"checkUpdates"');
|
||||
|
||||
// Compile our new settings
|
||||
$settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents));
|
||||
|
||||
// Now update the config file
|
||||
if (is_writeable($settingsFile)) {
|
||||
$fh = fopen($settingsFile, 'w');
|
||||
fwrite($fh, $settingsContents);
|
||||
fclose($fh);
|
||||
// Hide this popup and reload file manager
|
||||
echo "<script>top.ICEcoder.showHide('hide',top.document.getElementById('blackMask'));top.ICEcoder.refreshFileManager();</script>";
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('".$t['Cannot update config...']." lib/".$settingsFile." ".$t['and try again']."');</script>";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ======
|
||||
// ADDING
|
||||
// ======
|
||||
|
||||
if ($_GET['action']=="add") {
|
||||
|
||||
// Start creating a new chunk for the github paths
|
||||
$settingsNew = '"githubLocalPaths" => array(';
|
||||
|
||||
// Add the new one
|
||||
if ($_POST['githubLocalPathNEW'] != "" && $_POST['githubRemotePathNEW'] != "") {
|
||||
$settingsNew .= '"'.xssClean($_POST['githubLocalPathNEW'],"html").'",';
|
||||
}
|
||||
|
||||
// Then set all the old local paths
|
||||
for ($i=0; $i<count($oldLocal); $i++) {
|
||||
$settingsNew .= '"'.$oldLocal[$i].'",';
|
||||
}
|
||||
// Rtrim off the last comma
|
||||
$settingsNew = rtrim($settingsNew,',');
|
||||
$settingsNew .= '),'.PHP_EOL;
|
||||
|
||||
// Now do the same for the remote paths
|
||||
$settingsNew .= '"githubRemotePaths" => array(';
|
||||
|
||||
// Add the new one
|
||||
if ($_POST['githubLocalPathNEW'] != "" && $_POST['githubRemotePathNEW'] != "") {
|
||||
$settingsNew .= '"'.xssClean($_POST['githubRemotePathNEW'],"html").'",';
|
||||
}
|
||||
|
||||
// Then set all the old remote paths
|
||||
for ($i=0; $i<count($oldRemote); $i++) {
|
||||
$settingsNew .= '"'.$oldRemote[$i].'",';
|
||||
}
|
||||
// Rtrim off the last comma
|
||||
$settingsNew = rtrim($settingsNew,',');
|
||||
$settingsNew .= '),'.PHP_EOL;
|
||||
|
||||
}
|
||||
|
||||
// ===================
|
||||
// UPDATING & REMOVING
|
||||
// ===================
|
||||
|
||||
if ($_GET['action']=="update") {
|
||||
|
||||
// Start creating a new chunk for the github paths
|
||||
$settingsNew = '"githubLocalPaths" => array(';
|
||||
|
||||
// Redo the arrays using the form data
|
||||
for ($i=0; $i<count($oldLocal); $i++) {
|
||||
if ($_POST['githubLocalPath'.$i] != "") {
|
||||
$settingsNew .= '"'.xssClean($_POST['githubLocalPath'.$i],"html").'",';
|
||||
}
|
||||
}
|
||||
// Rtrim off the last comma
|
||||
$settingsNew = rtrim($settingsNew,',');
|
||||
$settingsNew .= '),'.PHP_EOL;
|
||||
|
||||
// Now do the same for the remote paths
|
||||
$settingsNew .= '"githubRemotePaths" => array(';
|
||||
|
||||
// Redo the arrays using the form data
|
||||
for ($i=0; $i<count($oldRemote); $i++) {
|
||||
if ($_POST['githubRemotePath'.$i] != "") {
|
||||
$settingsNew .= '"'.xssClean($_POST['githubRemotePath'.$i],"html").'",';
|
||||
}
|
||||
}
|
||||
// Rtrim off the last comma
|
||||
$settingsNew = rtrim($settingsNew,',');
|
||||
$settingsNew .= '),'.PHP_EOL;
|
||||
}
|
||||
|
||||
if ($_GET['action']!="choose") {
|
||||
// Now we have a new settingsNew string to use
|
||||
// we can update the path arrays in the settings file
|
||||
|
||||
// Identify the bit to replace
|
||||
$repPosStart = strpos($settingsContents,'"githubLocalPaths"');
|
||||
$repPosEnd = strpos($settingsContents,'"previousFiles"');
|
||||
|
||||
// Compile our new settings
|
||||
$settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents));
|
||||
|
||||
// Now update the config file
|
||||
if (is_writeable($settingsFile)) {
|
||||
$fh = fopen($settingsFile, 'w');
|
||||
fwrite($fh, $settingsContents);
|
||||
fclose($fh);
|
||||
// Finally, reload the iFrame screen for the user
|
||||
header("Location: github-manager.php?updatedGithubPaths&csrf=".$_SESSION["csrf"]);
|
||||
echo "<script>window.location='github-manager.php?updatedGithubPaths&csrf='+top.ICEcoder.csrf;</script>";
|
||||
die($t['saving github paths']);
|
||||
} else {
|
||||
echo "<script>top.ICEcoder.message('".$t['Cannot update config...']." lib/".$settingsFile." ".$t['and try again']."');</script>";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<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">
|
||||
</head>
|
||||
|
||||
<body class="githubManager">
|
||||
|
||||
<h1><?php echo $t['github paths'];?></h1>
|
||||
|
||||
<div style="display: inline-block; width: 620px; height: 340px; overflow-y: auto">
|
||||
<?php
|
||||
$pathsLocal = $ICEcoder['githubLocalPaths'];
|
||||
$pathsRemote = $ICEcoder['githubRemotePaths'];
|
||||
if (count($pathsLocal) > 0) {
|
||||
?>
|
||||
<div style="display: inline-block; width: 600px; margin-bottom: 30px">
|
||||
<h2><?php echo $t['Choose existing path'];?></h2><br>
|
||||
|
||||
<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>
|
||||
</tr>
|
||||
<?php
|
||||
for ($i=0; $i<count($pathsLocal); $i++) {
|
||||
echo '<tr>';
|
||||
echo '<td style="padding: 0 10px 8px 0"><input type="text" name="githubLocalPath'.$i.'" value="'.$pathsLocal[$i].'" style="width: 250px"></td>';
|
||||
echo '<td style="padding: 0 10px 8px 0"><input type="text" name="githubRemotePath'.$i.'" value="'.$pathsRemote[$i].'" style="width: 250px"></td>';
|
||||
echo '<td style="padding: 2px 0 8px 0"><div style="display: inline-block; padding: 5px; background: #2187e7; color: #fff; font-size: 12px; cursor: pointer" onclick="window.location=\'github-manager.php?action=choose&pathPair='.$i.'&csrf='.$_SESSION["csrf"].'\'">'.$t['Choose'].'</div></td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
echo '<tr>';
|
||||
echo '<td style="padding-top: 7px; color: #444">'.$t['Set local and...'].'</td>';
|
||||
echo '<td style="padding: 3px 10px 8px 0; text-align: right"><div style="display: inline-block; padding: 5px; background: #2187e7; color: #fff; font-size: 12px; cursor: pointer" onclick="document.getElementById(\'githubUpdateForm\').submit()">'.$t['Update'].'</div></td>';
|
||||
echo '</tr>';
|
||||
?>
|
||||
</table>
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
</div>
|
||||
<?php
|
||||
;};
|
||||
?>
|
||||
|
||||
<div style="display: inline-block; width: 600px">
|
||||
<h2><?php echo $t['Add new path'];?></h2><br>
|
||||
|
||||
<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>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0 10px 8px 0"><input type="text" name="githubLocalPathNEW" value="" style="width: 250px"></td>
|
||||
<td style="padding: 0 0 8px 0"><input type="text" name="githubRemotePathNEW" value="" style="width: 250px"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" style="padding: 3px 0 8px 0; text-align: right"><div style="display: inline-block; padding: 5px; background: #2187e7; color: #fff; font-size: 12px; cursor: pointer" onclick="document.getElementById('githubAddForm').submit()"><?php echo $t['Add'];?></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="csrf" value="<?php echo $_SESSION["csrf"]; ?>">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<h2 style="margin-bottom: 10px"><?php echo $t['Usage Info'];?></h2>
|
||||
|
||||
<p style="color: #888; margin: 0 10px 10px 0"><?php echo $t['Enter relative local...'];?></p>
|
||||
<p style="color: #888; margin: 0 10px 10px 0"><?php echo $t['You can then...'];?></p>
|
||||
<p style="color: #888; margin: 0 10px 10px 0"><?php echo $t['The file manager...'];?></p>
|
||||
<p style="color: #888; margin: 0 10px 0 0"><?php echo $t['If you want...'];?></p>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
36
lib/github.css
Normal file
@@ -0,0 +1,36 @@
|
||||
/* 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}
|
||||
input, textarea {font-family: arial, verdana, helvetica, sans-serif; padding: 4px; border: 1px solid #555; background-color: #444; color: #fff}
|
||||
input:focus, textarea:focus {
|
||||
outline: none;
|
||||
-webkit-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
-moz-box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
box-shadow: 0 0 10px 1px rgba(0,198,255,0.7);
|
||||
}
|
||||
|
||||
.githubAction {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
413
lib/github.js
Normal file
@@ -0,0 +1,413 @@
|
||||
// This file contains the HTTP Req Abs, Repo API and getRepo
|
||||
// portions of Top Level API from github.com/michael/github.js
|
||||
|
||||
// ORIGINAL LIB:
|
||||
// Github.js 0.7.0
|
||||
// (c) 2012 Michael Aufreiter, Development Seed
|
||||
// Github.js is freely distributable under the MIT license.
|
||||
// For all details and documentation:
|
||||
// http://substance.io/michael/github
|
||||
|
||||
(function() {
|
||||
var Github;
|
||||
var API_URL = 'https://api.github.com';
|
||||
|
||||
Github = window.Github = function(options) {
|
||||
|
||||
// HTTP Request Abstraction
|
||||
// =======
|
||||
//
|
||||
// I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.
|
||||
|
||||
function _request(method, path, data, cb, raw) {
|
||||
function getURL() {
|
||||
var url = API_URL + path;
|
||||
return url + ((/\?/).test(url) ? "&" : "?") + (new Date()).getTime();
|
||||
}
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
if (!raw) {xhr.dataType = "json"}
|
||||
|
||||
xhr.open(method, getURL());
|
||||
xhr.onreadystatechange = function () {
|
||||
if (this.readyState == 4) {
|
||||
if (this.status >= 200 && this.status < 300 || this.status === 304) {
|
||||
cb(null, raw ? this.responseText : this.responseText ? JSON.parse(this.responseText) : true);
|
||||
} else {
|
||||
cb({request: this, error: this.status});
|
||||
}
|
||||
}
|
||||
}
|
||||
xhr.setRequestHeader('Accept','application/vnd.github.raw');
|
||||
xhr.setRequestHeader('Content-Type','application/json;charset=UTF-8');
|
||||
if (
|
||||
(options.auth == 'oauth' && options.token) ||
|
||||
(options.auth == 'basic' && options.username && options.password)
|
||||
) {
|
||||
xhr.setRequestHeader('Authorization',options.auth == 'oauth'
|
||||
? 'token '+ options.token
|
||||
: 'Basic ' + Base64.encode(options.username + ':' + options.password)
|
||||
);
|
||||
}
|
||||
data ? xhr.send(JSON.stringify(data)) : xhr.send();
|
||||
}
|
||||
|
||||
// Repository API
|
||||
// =======
|
||||
|
||||
Github.Repository = function(options) {
|
||||
var repo = options.name;
|
||||
var user = options.user;
|
||||
|
||||
var that = this;
|
||||
var repoPath = "/repos/" + user + "/" + repo;
|
||||
|
||||
var currentTree = {
|
||||
"branch": null,
|
||||
"sha": null
|
||||
};
|
||||
|
||||
// Uses the cache if branch has not been changed
|
||||
// -------
|
||||
|
||||
function updateTree(branch, cb) {
|
||||
if (branch === currentTree.branch && currentTree.sha) return cb(null, currentTree.sha);
|
||||
that.getRef("heads/"+branch, function(err, sha) {
|
||||
currentTree.branch = branch;
|
||||
currentTree.sha = sha;
|
||||
cb(err, sha);
|
||||
});
|
||||
}
|
||||
|
||||
// Get a particular reference
|
||||
// -------
|
||||
|
||||
this.getRef = function(ref, cb) {
|
||||
_request("GET", repoPath + "/git/refs/" + ref, null, function(err, res) {
|
||||
if (err) return cb(err);
|
||||
cb(null, res.object.sha);
|
||||
});
|
||||
};
|
||||
|
||||
// Create a new reference
|
||||
// --------
|
||||
//
|
||||
// {
|
||||
// "ref": "refs/heads/my-new-branch-name",
|
||||
// "sha": "827efc6d56897b048c772eb4087f854f46256132"
|
||||
// }
|
||||
|
||||
this.createRef = function(options, cb) {
|
||||
_request("POST", repoPath + "/git/refs", options, cb);
|
||||
};
|
||||
|
||||
// Delete a reference
|
||||
// --------
|
||||
//
|
||||
// repo.deleteRef('heads/gh-pages')
|
||||
// repo.deleteRef('tags/v1.0')
|
||||
|
||||
this.deleteRef = function(ref, cb) {
|
||||
_request("DELETE", repoPath + "/git/refs/"+ref, options, cb);
|
||||
};
|
||||
|
||||
// List all branches of a repository
|
||||
// -------
|
||||
|
||||
this.listBranches = function(cb) {
|
||||
_request("GET", repoPath + "/git/refs/heads", null, function(err, heads) {
|
||||
if (err) return cb(err);
|
||||
cb(null, _.map(heads, function(head) { return _.last(head.ref.split('/')); }));
|
||||
});
|
||||
};
|
||||
|
||||
// Retrieve the contents of a blob
|
||||
// -------
|
||||
|
||||
this.getBlob = function(sha, cb) {
|
||||
_request("GET", repoPath + "/git/blobs/" + sha, null, cb, 'raw');
|
||||
};
|
||||
|
||||
// For a given file path, get the corresponding sha (blob for files, tree for dirs)
|
||||
// -------
|
||||
|
||||
this.getSha = function(branch, path, cb) {
|
||||
// Just use head if path is empty
|
||||
if (path === "") return that.getRef("heads/"+branch, cb);
|
||||
that.getTree(branch+"?recursive=true", function(err, tree) {
|
||||
var file = _.select(tree, function(file) {
|
||||
return file.path === path;
|
||||
})[0];
|
||||
cb(null, file ? file.sha : null);
|
||||
});
|
||||
};
|
||||
|
||||
// Retrieve the tree a commit points to
|
||||
// -------
|
||||
|
||||
this.getTree = function(tree, cb) {
|
||||
_request("GET", repoPath + "/git/trees/"+tree, null, function(err, res) {
|
||||
if (err) return cb(err);
|
||||
cb(null, res.tree);
|
||||
});
|
||||
};
|
||||
|
||||
// Post a new blob object, getting a blob SHA back
|
||||
// -------
|
||||
|
||||
this.postBlob = function(content, cb) {
|
||||
if (typeof(content) === "string") {
|
||||
content = {
|
||||
"content": content,
|
||||
"encoding": "utf-8"
|
||||
};
|
||||
}
|
||||
|
||||
_request("POST", repoPath + "/git/blobs", content, function(err, res) {
|
||||
if (err) return cb(err);
|
||||
cb(null, res.sha);
|
||||
});
|
||||
};
|
||||
|
||||
// Update an existing tree adding a new blob object getting a tree SHA back
|
||||
// -------
|
||||
|
||||
this.updateTree = function(baseTree, path, blob, cb) {
|
||||
var data = {
|
||||
"base_tree": baseTree,
|
||||
"tree": [
|
||||
{
|
||||
"path": path,
|
||||
"mode": "100644",
|
||||
"type": "blob",
|
||||
"sha": blob
|
||||
}
|
||||
]
|
||||
};
|
||||
_request("POST", repoPath + "/git/trees", data, function(err, res) {
|
||||
if (err) return cb(err);
|
||||
cb(null, res.sha);
|
||||
});
|
||||
};
|
||||
|
||||
// Post a new tree object having a file path pointer replaced
|
||||
// with a new blob SHA getting a tree SHA back
|
||||
// -------
|
||||
|
||||
this.postTree = function(tree, cb) {
|
||||
_request("POST", repoPath + "/git/trees", { "tree": tree }, function(err, res) {
|
||||
if (err) return cb(err);
|
||||
cb(null, res.sha);
|
||||
});
|
||||
};
|
||||
|
||||
// Create a new commit object with the current commit SHA as the parent
|
||||
// and the new tree SHA, getting a commit SHA back
|
||||
// -------
|
||||
|
||||
this.commit = function(parent, tree, message, cb) {
|
||||
var data = {
|
||||
"message": message,
|
||||
"author": {
|
||||
"name": options.username
|
||||
},
|
||||
"parents": [
|
||||
parent
|
||||
],
|
||||
"tree": tree
|
||||
};
|
||||
|
||||
_request("POST", repoPath + "/git/commits", data, function(err, res) {
|
||||
currentTree.sha = res.sha; // update latest commit
|
||||
if (err) return cb(err);
|
||||
cb(null, res.sha);
|
||||
});
|
||||
};
|
||||
|
||||
// Update the reference of your head to point to the new commit SHA
|
||||
// -------
|
||||
|
||||
this.updateHead = function(head, commit, cb) {
|
||||
_request("PATCH", repoPath + "/git/refs/heads/" + head, { "sha": commit }, function(err, res) {
|
||||
cb(err);
|
||||
});
|
||||
};
|
||||
|
||||
// Show repository information
|
||||
// -------
|
||||
|
||||
this.show = function(cb) {
|
||||
_request("GET", repoPath, null, cb);
|
||||
};
|
||||
|
||||
// Get contents
|
||||
// --------
|
||||
|
||||
this.contents = function(path, cb) {
|
||||
_request("GET", repoPath + "/contents", { path: path }, cb);
|
||||
};
|
||||
|
||||
// Fork repository
|
||||
// -------
|
||||
|
||||
this.fork = function(cb) {
|
||||
_request("POST", repoPath + "/forks", null, cb);
|
||||
};
|
||||
|
||||
// Create pull request
|
||||
// --------
|
||||
|
||||
this.createPullRequest = function(options, cb) {
|
||||
_request("POST", repoPath + "/pulls", options, cb);
|
||||
};
|
||||
|
||||
// Read file at given path
|
||||
// -------
|
||||
|
||||
this.read = function(branch, path, cb) {
|
||||
that.getSha(branch, path, function(err, sha) {
|
||||
if (!sha) return cb("not found", null);
|
||||
that.getBlob(sha, function(err, content) {
|
||||
cb(err, content, sha);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Remove a file from the tree
|
||||
// -------
|
||||
|
||||
this.remove = function(branch, path, cb) {
|
||||
updateTree(branch, function(err, latestCommit) {
|
||||
that.getTree(latestCommit+"?recursive=true", function(err, tree) {
|
||||
// Update Tree
|
||||
var newTree = _.reject(tree, function(ref) { return ref.path === path });
|
||||
_.each(newTree, function(ref) {
|
||||
if (ref.type === "tree") delete ref.sha;
|
||||
});
|
||||
|
||||
that.postTree(newTree, function(err, rootTree) {
|
||||
that.commit(latestCommit, rootTree, 'Deleted '+path , function(err, commit) {
|
||||
that.updateHead(branch, commit, function(err) {
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Move a file to a new location
|
||||
// -------
|
||||
|
||||
this.move = function(branch, path, newPath, cb) {
|
||||
updateTree(branch, function(err, latestCommit) {
|
||||
that.getTree(latestCommit+"?recursive=true", function(err, tree) {
|
||||
// Update Tree
|
||||
_.each(tree, function(ref) {
|
||||
if (ref.path === path) ref.path = newPath;
|
||||
if (ref.type === "tree") delete ref.sha;
|
||||
});
|
||||
|
||||
that.postTree(tree, function(err, rootTree) {
|
||||
that.commit(latestCommit, rootTree, 'Deleted '+path , function(err, commit) {
|
||||
that.updateHead(branch, commit, function(err) {
|
||||
cb(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Write file contents to a given branch and path
|
||||
// -------
|
||||
|
||||
this.write = function(branch, path, content, message, cb) {
|
||||
updateTree(branch, function(err, latestCommit) {
|
||||
if (err) return cb(err);
|
||||
that.postBlob(content, function(err, blob) {
|
||||
if (err) return cb(err);
|
||||
that.updateTree(latestCommit, path, blob, function(err, tree) {
|
||||
if (err) return cb(err);
|
||||
that.commit(latestCommit, tree, message, function(err, commit) {
|
||||
if (err) return cb(err);
|
||||
that.updateHead(branch, commit, cb);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
// Gists API
|
||||
// =======
|
||||
|
||||
Github.Gist = function(options) {
|
||||
var id = options.id;
|
||||
var that = this;
|
||||
var gistPath = "/gists/"+id;
|
||||
|
||||
// Read the gist
|
||||
// --------
|
||||
|
||||
this.read = function(cb) {
|
||||
_request("GET", gistPath, null, function(err, gist) {
|
||||
cb(err, gist);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// Delete the gist
|
||||
// --------
|
||||
|
||||
this.delete = function(cb) {
|
||||
_request("DELETE", gistPath, null, function(err,res) {
|
||||
cb(err,res);
|
||||
});
|
||||
};
|
||||
|
||||
// Fork a gist
|
||||
// --------
|
||||
|
||||
this.fork = function(cb) {
|
||||
_request("POST", gistPath+"/fork", null, function(err,res) {
|
||||
cb(err,res);
|
||||
});
|
||||
};
|
||||
|
||||
// Update a gist with the new stuff
|
||||
// --------
|
||||
|
||||
this.update = function(options, cb) {
|
||||
_request("PATCH", gistPath, options, function(err,res) {
|
||||
cb(err,res);
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
// Top Level API
|
||||
// -------
|
||||
|
||||
this.getRepo = function(user, repo) {
|
||||
return new Github.Repository({user: user, name: repo});
|
||||
};
|
||||
|
||||
Github.User = function(token) {
|
||||
console.log(token);
|
||||
this.validate = function(cb) {
|
||||
_request("GET", "/applications/"+token+"/tokens/", function(err, res) {
|
||||
console.log(err);
|
||||
console.log(res);
|
||||
cb(err,res);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
this.getUser = function(token) {
|
||||
return new Github.User(token);
|
||||
};
|
||||
|
||||
|
||||
|
||||
};
|
||||
}).call(this);
|
||||
276
lib/github.php
Normal file
@@ -0,0 +1,276 @@
|
||||
<?php
|
||||
include("headers.php");
|
||||
include("settings.php");
|
||||
$t = $text['github'];
|
||||
|
||||
// SSL check, as everything is over https
|
||||
$wrappers = stream_get_wrappers();
|
||||
$sslAvail = true;
|
||||
if (!extension_loaded('openssl') || !in_array('https', $wrappers)) {
|
||||
$sslAvail = false;
|
||||
echo "<script>top.ICEcoder.message('".$t['Sorry, you do...']."');top.ICEcoder.showHide('hide',top.get('loadingMask'));</script>";
|
||||
die();
|
||||
}
|
||||
|
||||
// If we have an action to perform
|
||||
if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset($_GET['action']) && $sslAvail) {
|
||||
|
||||
// ====
|
||||
// AUTH
|
||||
// ====
|
||||
if ($_GET['action']=="auth") {
|
||||
$_SESSION['githubAuthToken'] = xssClean($_GET['token'],"html");
|
||||
echo '<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="github.js"></script>
|
||||
</body>
|
||||
<script>
|
||||
top.ICEcoder.githubAuthTokenSet = true;
|
||||
goNext = "'.xssClean($_GET['goNext'],"html").'";
|
||||
if (goNext=="showManager") {
|
||||
top.ICEcoder.githubManager();
|
||||
}
|
||||
if (goNext=="loadFiles") {
|
||||
top.ICEcoder.githubDiffToggle();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>';
|
||||
}
|
||||
|
||||
// ====
|
||||
// READ
|
||||
// ====
|
||||
if ($_GET['action']=="read") {
|
||||
|
||||
echo '<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="github.js"></script>
|
||||
<script src="underscore-min.js"></script>
|
||||
</body>
|
||||
<script>
|
||||
// Start our github object, establish this repo & file path
|
||||
var github = new Github({token: "'.$_SESSION['githubAuthToken'].'", auth: "oauth"});
|
||||
var thisRepo = "'.$_GET['repo'].'";
|
||||
var thisFilePath = "'.$_GET['filePath'].'";
|
||||
|
||||
// Start our repo and read the data in, then update diff pane with that
|
||||
var repo = github.getRepo(thisRepo.split("|")[0], thisRepo.split("|")[1]);
|
||||
repo.read("master", thisFilePath.replace(/\|/g,"/"), function(err, data) {
|
||||
if (err) {
|
||||
top.ICEcoder.message("There has been an error trying to get that file from GitHub.\n\nGitHub response:\n"+err);
|
||||
} else {
|
||||
cMdiff = top.ICEcoder.getcMdiffInstance();
|
||||
cMdiff.setValue(data);
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>';
|
||||
}
|
||||
|
||||
// =====
|
||||
// CLONE
|
||||
// =====
|
||||
if ($_GET['action']=="clone") {
|
||||
|
||||
$iceGithubLocalPaths = $ICEcoder["githubLocalPaths"];
|
||||
$iceGithubRemotePaths = $ICEcoder["githubRemotePaths"];
|
||||
$pathPos = array_search($iceRoot,$iceGithubLocalPaths);
|
||||
if ($pathPos !== false) {
|
||||
|
||||
// USE: https://github.com/mattpass/ICEcoder/zipball/master
|
||||
// Store the plugin zip to the tmp dir
|
||||
$target = $docRoot.$iceGithubLocalPaths[$pathPos]."/";
|
||||
$zipURL = $iceGithubRemotePaths[$pathPos].'/zipball/master';
|
||||
$zipFile = "../tmp/".basename($zipURL);
|
||||
|
||||
if (ini_get('allow_url_fopen')) {
|
||||
$fileData = file_get_contents($zipURL, false, $context);
|
||||
} elseif (function_exists('curl_init')) {
|
||||
$client = curl_init($zipURL);
|
||||
curl_setopt($client, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($client, CURLOPT_RETURNTRANSFER, 1); //fixed this line
|
||||
$fileData = curl_exec($client);
|
||||
}
|
||||
file_put_contents($zipFile, $fileData);
|
||||
|
||||
// Now unpack the zip
|
||||
$zip = new ZipArchive;
|
||||
$zip->open($zipFile);
|
||||
|
||||
// Create all files & dirs, in 1kb chunks
|
||||
for($i=0; $i<$zip->numFiles; $i++) {
|
||||
|
||||
$name = $zip->getNameIndex($i);
|
||||
if ($i==0) {
|
||||
$dirName = $name;
|
||||
} else {
|
||||
$tgtName = str_replace($dirName,"",$name);
|
||||
// Determine output filename
|
||||
$file = $target.$tgtName;
|
||||
|
||||
// Create the directories if necessary
|
||||
$dir = dirname($file);
|
||||
if (!is_dir($dir)) mkdir($dir, 0777, true);
|
||||
|
||||
// Read from zip and write to disk
|
||||
$fpr = $zip->getStream($name);
|
||||
if (!is_dir($file)) {
|
||||
$fpw = fopen($file, 'w');
|
||||
while ($data = fread($fpr, 1024)) {
|
||||
fwrite($fpw, $data);
|
||||
}
|
||||
fclose($fpw);
|
||||
}
|
||||
fclose($fpr);
|
||||
}
|
||||
}
|
||||
$zip->close();
|
||||
|
||||
// Remove the tmp zip file
|
||||
unlink($zipFile);
|
||||
|
||||
// Refresh the file manager
|
||||
echo "<script>top.ICEcoder.refreshFileManager();</script>";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ======
|
||||
// COMMIT
|
||||
// ======
|
||||
if ($_GET['action']=="commit") {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html onContextMenu="return false">
|
||||
<head>
|
||||
<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">
|
||||
</head>
|
||||
|
||||
<body class="githubAction">
|
||||
|
||||
<h1><?php
|
||||
$action = xssClean($_GET['action'],"html");
|
||||
echo $action == "commit" ? "Commit files" : "Pull files"; ?></h1>
|
||||
|
||||
<form name="commitDetails">
|
||||
Title:<br><input type="text" name="commitTitle" id="commitTitle" value="" style="width: 300px; margin: 5px 0 15px 0" maxlength="50"><br>
|
||||
Message:<br><textarea name="commitMessage" id="commitMessage" style="width: 300px; height: 118px; margin: 5px 0 15px 0"></textarea>
|
||||
</form>
|
||||
|
||||
<div style="display: inline-block; padding: 5px; background: #2187e7; color: #fff; font-size: 12px; cursor: pointer" onclick="top.ICEcoder.showHide('show',top.get('loadingMask'));commitFiles()">Commit</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
<?php
|
||||
// Get file contents for selected files
|
||||
$selectedFiles = xssClean($_GET['selectedFiles'],"html");
|
||||
$selectedFiles = explode(";",$selectedFiles);
|
||||
|
||||
for ($i=0; $i<count($selectedFiles); $i++) {
|
||||
// Replace pipes with slashes
|
||||
$file = str_replace("|","/",$selectedFiles[$i]);
|
||||
|
||||
// Trim any +'s or spaces from the end of file
|
||||
$file = rtrim(rtrim($file,'+'),' ');
|
||||
|
||||
// Establish the real absolute path to the file
|
||||
$file = str_replace("\\","/",realpath($docRoot.$iceRoot.$file));
|
||||
|
||||
// Only get the file if it exists and begins with our $docRoot
|
||||
if (file_exists($file) && strpos($file,$docRoot) === 0) {
|
||||
$loadedFile = toUTF8noBOM(file_get_contents($file,false,$context),true);
|
||||
echo '<textarea name="loadedFile'.$i.'" id="loadedFile'.$i.'" style="display: none">'.str_replace("</textarea>","<ICEcoder:/:textarea>",str_replace("&","&",$loadedFile)).'</textarea><br><br>'.PHP_EOL.PHP_EOL;
|
||||
} else {
|
||||
die("<script>alert('Sorry, that file doesn\'t appear to exist');</script>");
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
// Start our github object
|
||||
var github = new Github({token: "<?php echo $_SESSION['githubAuthToken'];?>", auth: "oauth"});
|
||||
|
||||
committingFiles = ['<?php
|
||||
$cF = implode("','", $selectedFiles);
|
||||
echo $cF;
|
||||
?>'];
|
||||
seqFile = 0;
|
||||
commitFiles = function() {
|
||||
// Commit our files one after another
|
||||
var repo = github.getRepo(top.repo.split("/")[0], top.repo.split("/")[1]);
|
||||
repo.write(
|
||||
'master',
|
||||
committingFiles[seqFile].substr(1).replace(/\|/g,"/"),
|
||||
document.getElementById('loadedFile'+seqFile).value,
|
||||
document.getElementById('commitTitle').value+'\n\n'+document.getElementById('commitMessage').value,
|
||||
function(err) {
|
||||
if (!err) {
|
||||
var locSplit = committingFiles[seqFile].lastIndexOf("|");
|
||||
var location = committingFiles[seqFile].substr(0,locSplit+1);
|
||||
var file = committingFiles[seqFile].substr(locSplit+1);
|
||||
|
||||
// Splice from diff or deleted paths
|
||||
if (top.diffPaths.indexOf(committingFiles[seqFile].substr(1).replace(/\|/g,"/")) > -1) {
|
||||
top.diffPaths.splice(top.diffPaths.indexOf(committingFiles[seqFile].substr(1).replace(/\|/g,"/")),1);
|
||||
}
|
||||
if (top.deletedPaths.indexOf(committingFiles[seqFile].substr(1).replace(/\|/g,"/")) > -1) {
|
||||
top.deletedPaths.splice(top.deletedPaths.indexOf(committingFiles[seqFile].substr(1).replace(/\|/g,"/")),1);
|
||||
}
|
||||
|
||||
// Then deselect and remove from file manager
|
||||
top.ICEcoder.thisFileFolderLink = committingFiles[seqFile];
|
||||
top.ICEcoder.selectFileFolder(false,'ctrlSim');
|
||||
top.ICEcoder.updateFileManagerList("delete",location,file);
|
||||
seqFile++;
|
||||
// If there's another file to do
|
||||
if (top.ICEcoder.selectedFiles.length > 0) {
|
||||
commitFiles();
|
||||
} else {
|
||||
top.ICEcoder.showHide('hide',top.get('loadingMask'));
|
||||
top.ICEcoder.showHide('hide',top.get('blackMask'));
|
||||
if (top.diffPaths.length == 0 && top.deletedPaths.length == 0) {
|
||||
top.ICEcoder.message('All done, switching modes');
|
||||
top.ICEcoder.githubDiffToggle();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
top.ICEcoder.message('There was an error with committing.\n\nSee dev tools console for details.');
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
|
||||
// ====
|
||||
// PULL
|
||||
// ====
|
||||
if ($_GET['action']=="pull") {
|
||||
?>
|
||||
<script>
|
||||
top.ICEcoder.showHide('hide',top.get('blackMask'));
|
||||
top.ICEcoder.message("Pull actions not yet available. Will be in ICEcoder v4.4");
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
35
lib/headers.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
// Stop if we're running an old version in the tmp dir
|
||||
if(strpos(str_replace("\\","/",dirname(__FILE__)),"tmp/oldVersion") !== false) {
|
||||
die("This is an old version of ICEcoder. Won't run from tmp/oldVersion/ dir.");
|
||||
}
|
||||
|
||||
// Load common functions
|
||||
include_once(dirname(__FILE__)."/settings-common.php");
|
||||
$text = $_SESSION['text'];
|
||||
$t = $text['headers'];
|
||||
|
||||
// CSRF synchronizer token pattern, 32 chars
|
||||
if (!isset($_SESSION["csrf"])) {
|
||||
$_SESSION["csrf"] = md5(uniqid(mt_rand(), true));
|
||||
}
|
||||
|
||||
if (($_GET || $_POST) && (!isset($_REQUEST["csrf"]) || $_REQUEST["csrf"] !== $_SESSION["csrf"])) {
|
||||
$req = isset($_REQUEST["csrf"]) ? xssClean($_REQUEST["csrf"],"html") : "";
|
||||
die($t['Bad CSRF token...']."<br><br>
|
||||
CSRF issue:<br>
|
||||
REQUEST: ".$req."<br>
|
||||
SESSION: ".xssClean($_SESSION["csrf"],"html")."<br>
|
||||
FILE: ".xssClean($_SERVER["SCRIPT_NAME"],"html")."<br>
|
||||
GET: ".xssClean(var_export($_GET, true),"html")."<br>
|
||||
POST: ".xssClean(var_export($_POST, true),"html"));
|
||||
}
|
||||
|
||||
if (!headers_sent()) {
|
||||
// Set our security related headers
|
||||
header("X-Frame-Options: SAMEORIGIN"); // Only frames of same origin
|
||||
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
|
||||
}
|
||||
?>
|
||||
16
lib/help.css
@@ -17,15 +17,17 @@ table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
}
|
||||
|
||||
body {overflow: hidden;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-o-user-select:none;
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-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}
|
||||
|
||||
.help {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff; padding: 20px}
|
||||
.help .key {display: inline-block; width: 175px; text-align: right; margin-right: 5px; float: left}
|
||||
.help .key .plus {color: #888}
|
||||
.help .shortcut {display: inline-block; width: 175px; color: #888; margin-left: 5px; float: left}
|
||||
.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}
|
||||