Compare commits

..

208 Commits

Author SHA1 Message Date
Matt Pass
4a61847ef7 ICEcoder is for sale 2023-12-14 11:26:43 +00:00
mattpass
7001178b79 No JS output before DOCTYPE, fix path for required file 2022-06-25 21:05:36 +01:00
mattpass
4ac0f0b43a Changing REQUEST to POST and GET 2022-06-25 20:46:17 +01:00
mattpass
d72121ff8c Specify path when requiring and code tidy 2022-06-25 20:43:10 +01:00
mattpass
b5cee2dc2d lineNumber should be via GET method 2022-06-25 20:39:54 +01:00
mattpass
351633bad6 Remove need for COOKIE via PHP 2022-06-24 21:56:46 +01:00
mattpass
361c353157 Use POST not REQUEST in terminal 2022-06-24 21:51:06 +01:00
mattpass
20fe466d84 Still need a session in demoMode 2022-06-24 21:48:42 +01:00
mattpass
c5146d7f2b Only consider writing if not in demoMode 2022-06-24 20:03:34 +01:00
mattpass
5fa36d5749 Typo and format fixes 2022-06-17 14:35:25 +01:00
mattpass
ab6610846c Usernames can have alphanums, underscore and hyphen only 2022-06-17 14:23:41 +01:00
mattpass
e720ba5d5a Dynamic assets path, tweak and fix in settings, ignore .idea 2022-06-11 21:53:45 +01:00
Matt Pass
958e91a67f Set editor to fixed position 2022-05-29 14:48:53 +01:00
Matt Pass
e21c16e1ee No selectNext if selected already on findOnInput 2022-05-21 13:15:52 +01:00
Matt Pass
509b5b8fb8 PHP v7.0 fallback added re session_create_id 2022-05-14 16:21:20 +01:00
Matt Pass
51cf24b2a3 rXSS cleaned username in editor info display 2022-01-17 12:38:29 +00:00
Matt Pass
cd964f816f Merge pull request #1007 from JamieSlome/master
Create SECURITY.md
2022-01-16 08:21:59 +00:00
Jamie Slome
99f5d1a7c9 Create SECURITY.md 2022-01-16 03:40:08 +00:00
Matt Pass
d6124b0811 Fix for installed plugin images dir 2021-12-17 17:23:18 +00:00
Matt Pass
517be5a5e0 Change plugin icon path 2021-11-24 13:26:42 +00:00
Matt Pass
fef1927690 Update README.md to use S3 2021-10-25 12:02:25 +01:00
mattpass
d642ed0fab Setup screen checks update box if needed, set bool not string 2021-07-27 09:12:03 +01:00
mattpass
f1bab2dec5 Version 8.1 2021-07-27 08:02:52 +01:00
mattpass
b1ba868eb6 Final tidy 2021-07-26 08:56:30 +01:00
mattpass
d1d6760def Change 3 params back to original init 2021-07-25 22:24:57 +01:00
mattpass
34b263bb18 On init, fake being over root dir, select, then fake not being over it 2021-07-25 22:07:51 +01:00
mattpass
b9faaafacd Not skipping results when replacing now 2021-07-25 21:26:21 +01:00
mattpass
2a00f7e8ea Regex simplification and not working with _perms 2021-07-25 20:06:01 +01:00
mattpass
fcd2e51c45 Fixed filename links to work, regex find & replace bold, simpler code 2021-07-25 19:22:41 +01:00
mattpass
94438fa34f Skip dirs in multiple results, close dir handle when done 2021-07-25 17:06:39 +01:00
mattpass
ae008e523c Better handing of find and gotoline when 0 docs open 2021-07-25 16:14:36 +01:00
mattpass
8e57e6833c Reset results display if no find string 2021-07-25 15:38:52 +01:00
mattpass
133c155ae4 Only 1 rBlock per top value 2021-07-25 15:33:54 +01:00
mattpass
81282e6f73 findReplace on change not key input, clear msg if no selection, blue currRBlock, 1px min rBlocks, rBlocks always 2021-07-25 15:23:05 +01:00
mattpass
7cb270a0a2 editor.css added, some styles moved 2021-07-25 11:34:54 +01:00
mattpass
eaa574f0a3 Only create an rBlock for result lines, not non match lines 2021-07-25 11:12:07 +01:00
mattpass
8d4dc52e2d rBlocks are grey, set red after cursor position set 2021-07-25 11:02:52 +01:00
mattpass
f80ab916a3 Close handler after use 2021-07-24 21:27:38 +01:00
mattpass
0729daf3b5 Improving regex fail handling 2021-07-24 21:27:06 +01:00
mattpass
623ee10a81 Uploaded files data in array, string type cast octal for octdec 2021-07-24 16:05:43 +01:00
mattpass
a5678eba26 Session improvements 2021-07-24 14:33:05 +01:00
mattpass
e8ba59fe46 Finishing updating multple results info items on task done 2021-07-01 21:34:00 +01:00
mattpass
d92c3b00c3 Now displaying Replaced text when successfully replaced 2021-07-01 21:13:30 +01:00
mattpass
7b97ff92ae Show filename in dialog when asking if want to remove 2021-07-01 19:11:31 +01:00
mattpass
dfb40255a9 Fix clickable filenames, don't show perms 2021-07-01 19:06:33 +01:00
mattpass
fe7c03df06 Cap R in Rename to on langs 2021-07-01 18:48:46 +01:00
mattpass
dcf1f50cf0 Handling single user in multi user mode UX and first user is admin 2021-06-27 10:35:04 +01:00
mattpass
3751ea5499 Stricter checks on file MIME type 2021-06-26 22:48:18 +01:00
mattpass
b51445c101 File must have a text MIME type to be indexed 2021-06-26 22:41:42 +01:00
mattpass
42d60ea48f Set bug reporting for error.log, 10, 10 2021-06-26 22:18:40 +01:00
mattpass
80bdd04e59 Create error.log if doesn't exist, we need from init 2021-06-26 22:17:52 +01:00
mattpass
7075ced50f Nicer looking bug reports, incl wrapping 2021-06-26 22:17:23 +01:00
Matt Pass
4fb0d838b6 Update issue templates 2021-06-26 19:43:56 +01:00
Matt Pass
aa357509c8 Update PULL_REQUEST_TEMPLATE.md 2021-06-26 19:40:27 +01:00
Matt Pass
8615828a76 Create PULL_REQUEST_TEMPLATE.md 2021-06-26 19:36:37 +01:00
Matt Pass
766d23bd78 Update issue templates - questions & finishing 2021-06-26 19:30:02 +01:00
Matt Pass
6199c06e8e Update issue templates - tweak 2021-06-26 19:25:13 +01:00
Matt Pass
5ad21bfe23 Update issue templates - features 2021-06-26 19:22:40 +01:00
Matt Pass
d326d6a02d Update issue templates 2021-06-26 19:19:26 +01:00
Matt Pass
487ce2710c Add comments plus extra logic in to handle C:/ etc 2021-06-26 14:16:50 +01:00
Matt Pass
583dcad1c0 lineNumber needs to be a global to be used 2021-06-26 14:11:35 +01:00
mattpass
ba88f98ac7 Check regex value, avoid CPU crash, highlight red if error 2021-06-25 21:58:59 +01:00
mattpass
820691665d Better input widths for terminal command line 2021-06-25 21:36:30 +01:00
mattpass
649a050e66 Switch to accounts view if password problem, avoids being stuck on another tab and unaware 2021-06-25 21:33:39 +01:00
mattpass
c32050889f Double decoding needed on filename 2021-06-25 21:31:23 +01:00
mattpass
3bd5030c42 Merge branch 'master' of github.com:icecoder/icecoder 2021-06-25 21:23:18 +01:00
mattpass
21d6ae0f2a XSS and usage fixes on multiple-results.php 2021-06-25 21:22:25 +01:00
Matt Pass
ab99aff272 Fix missing PHP tag 2021-06-13 10:36:00 +01:00
Matt Pass
932f07393b Don't force session path 2021-06-13 10:29:53 +01:00
mattpass
54e4aff163 Tidy up a few minor items 2021-05-21 21:48:06 +01:00
mattpass
ab3d04440c Remove v from version, no cache bust 2021-05-21 17:36:35 +01:00
mattpass
58f3866b45 More improved key handling 2021-05-02 10:26:57 +01:00
mattpass
fcf6c14a91 Improve key handling with search results 2021-05-02 09:55:11 +01:00
mattpass
8be9e76e8d Remove temp volume id from scroll speed range 2021-05-02 08:37:51 +01:00
mattpass
78e417add4 Limit tooltip func arg list to 200 chars, wrap in terminal 2021-04-25 08:32:36 +01:00
mattpass
23f86200e0 Start array with template details, layer actual ontop 2021-04-11 12:37:59 +01:00
mattpass
2d03477c66 Add defaults for 2 new options 2021-04-11 11:35:49 +01:00
mattpass
da88db20fb Scroll speed & find on input settings, fix tab sticking on close 2021-04-11 10:34:58 +01:00
mattpass
f5c1640dbd Move check after establishing results DOM elem 2021-04-09 16:48:26 +01:00
mattpass
4328ea2c1f Add check on ^ $ and .* to avoid regex crash 2021-04-09 16:44:00 +01:00
mattpass
0fb0644b71 Set selection of regex based on match 0 str len 2021-04-09 16:21:03 +01:00
mattpass
01df964ac7 Updates to JS and multiple results to handle more regex 2021-04-09 16:07:41 +01:00
mattpass
1cad4b074c Add findRegex bool, funcs to escape and toggle, use option in find 2021-04-09 13:16:24 +01:00
mattpass
50196789a7 RegEx icon added to left of find 2021-04-09 13:10:13 +01:00
mattpass
2d245f2da8 Don't clear selections if there are no results 2021-04-09 11:13:22 +01:00
mattpass
a1d545b76b Active line number is highlighted & according to theme 2021-04-08 17:11:15 +01:00
mattpass
a1df16031d Change bug reporting icon if bug reporting disabled 2021-04-08 16:24:37 +01:00
mattpass
8cc3a7e037 Update bug reporting msg to Settings > Acccounts 2021-04-08 16:23:50 +01:00
mattpass
8e01faad10 Only check pw criteria if pw not blank 2021-04-08 16:23:18 +01:00
mattpass
cea8e0a36e Enforce same pw rules from settings, cap lock warn too 2021-04-08 15:40:48 +01:00
mattpass
4a08853605 Auto-setting loggedIn not based on demoMode or empty pw, only go to login if req 2021-04-08 11:47:37 +01:00
mattpass
59c39acb35 Login redirs ../../ if not req, show demoMode icon 2021-04-08 11:46:54 +01:00
mattpass
0850127d2b Check ZipArchive is available before showing list of installable plugins 2021-04-05 11:36:19 +01:00
mattpass
f27905404b Lang files updated so index matches icecoder array values better 2021-04-05 11:07:03 +01:00
mattpass
65bc11cd48 selectedfiles needs an empty array fallback 2021-03-04 14:26:50 +00:00
mattpass
f79cc0336a Fix keys in wordCasings array 2021-03-04 14:04:38 +00:00
mattpass
edaa95df93 Fix file to use CSS file 2021-03-03 13:29:05 +00:00
mattpass
868db80583 Adminer 4.8.0 working in frame 2021-03-03 13:23:48 +00:00
mattpass
c8d4eeb74e Adminer updated from 4.7.3 to 4.8.0 2021-03-01 16:33:51 +00:00
mattpass
4a516e9828 Double click tabs expands/contracts file manager 2021-02-15 16:30:52 +00:00
mattpass
12a53d4c29 Update goToLine to handle folded ranges 2021-01-31 12:42:41 +00:00
mattpass
6eee161a74 .h recognized as C, ino added in indexer for C++ 2021-01-24 16:38:57 +00:00
mattpass
0793c2fd63 Make password rules more obvious 2021-01-24 16:24:09 +00:00
mattpass
af7e57b1d9 Can use rgba (+uc), rgbToHex ignores 4th alpha param 2020-12-30 15:47:26 +00:00
mattpass
de3e46d5ee Remove alpha from BG color on 3 x themes 2020-12-30 15:18:46 +00:00
mattpass
bc589549f3 Remove FTP functionality & UI from ICEcoder 2020-12-30 14:57:37 +00:00
mattpass
2e7e5a8bcd Pass iceRoot in config, set in func, update display 2020-12-23 17:26:31 +00:00
mattpass
3f0604fff4 .git and node_modules dirs excluded, .git is moved 2020-12-23 16:49:41 +00:00
mattpass
5e89f0945d Ensure we have function data before considering tooltips 2020-12-23 16:34:36 +00:00
mattpass
8f54ff53bc Clickable warning label if not a dir, cody tidy on loc 2020-12-23 16:23:09 +00:00
mattpass
574b6f1b7a Merge branch 'master' of github.com:icecoder/icecoder 2020-12-13 12:03:38 +00:00
mattpass
518dbd5818 Check we can use shell_exec before usage 2020-12-13 12:03:14 +00:00
Matt Pass
f78dce0e73 Update 2019-torres-digital-theme.css
Updates from @atorresbr and will close https://github.com/icecoder/ICEcoder/pull/947/files
2020-12-08 16:49:46 +00:00
mattpass
bb2580c031 Don't floatval matches 0 and remove v from zip name 2020-11-22 16:52:15 +00:00
mattpass
116c82736f Remove v before version number display 2020-11-22 16:24:13 +00:00
mattpass
d4c4911ead Cache bust README image 2020-11-22 16:02:43 +00:00
mattpass
21d06d5859 Version 8.0 2020-11-22 15:58:36 +00:00
mattpass
361681714b Torres theme tweak 2020-11-22 15:10:24 +00:00
mattpass
4b923dfd7e Format tweaks to cMonPaste function 2020-11-22 15:08:20 +00:00
mattpass
dccfd0a616 Fix comment for bug reporting screen 2020-11-17 17:00:37 +00:00
mattpass
e259946dcc Highlight chmod text in README, id not needed 2020-11-17 17:00:15 +00:00
mattpass
a7e1bb53a3 bug-report lang pieces added to lang files 2020-11-17 16:59:40 +00:00
mattpass
0b75351b1f Remove void return type, not avail till PHP 7.1 2020-10-26 16:44:35 +00:00
mattpass
1ccf01bfc0 No need to double output prompt if no arg for cd 2020-10-23 11:13:23 +01:00
mattpass
9b881cf774 Set cwd in session initially and chdir to it always 2020-10-23 11:09:51 +01:00
mattpass
c3c829ec3d Fix with of command to 99% 2020-10-23 11:08:18 +01:00
mattpass
362bbf5c5d Code tidy in terminal.php 2020-10-23 10:38:09 +01:00
mattpass
c19503ba78 Minor tidy in index.php and updater.php 2020-10-23 10:20:55 +01:00
mattpass
9e68bb9d72 Typo fixes in README.md 2020-10-23 09:39:53 +01:00
mattpass
536ddde998 Tweak to position of arrow on fold marker 2020-10-23 09:39:41 +01:00
mattpass
d89d01e46e iceLoc added to path for image in tutorial 2020-10-06 17:24:02 +01:00
mattpass
876a6ab0ef Wider box for system info when viewing tutorial 2020-10-06 17:19:23 +01:00
mattpass
a3e5b7925a ICE root only shown now, default also, display versions 2020-10-06 17:18:50 +01:00
mattpass
1e01e783ca Display git commit hash as link, remove GG 2020-10-06 17:12:04 +01:00
mattpass
f77f02e11f version and cM version added to all langs for editor 2020-10-06 17:06:00 +01:00
mattpass
818b9e9a71 Code tidy in editor.php and files.php 2020-10-06 14:28:59 +01:00
mattpass
1ab4ae0094 Taller viewable area for system info 2020-10-06 14:16:48 +01:00
mattpass
ca39d31f0e Tidy, no space after v, less PHP, nicer system display, remove old game DIV container 2020-10-06 14:12:51 +01:00
mattpass
352c8c1a3a No space after v when displaying version 2020-10-06 14:10:20 +01:00
mattpass
3273d9fd2c Move activeLineBG out of if, no space after v 2020-10-06 14:09:41 +01:00
Matt Pass
034f1158cd Remove surplus line in README.md 2020-10-06 05:53:15 +01:00
Matt Pass
109859c393 Line breaks needed in licence 2020-10-06 05:48:13 +01:00
Matt Pass
9c5382134b Exit instead 2020-10-06 05:43:22 +01:00
Matt Pass
75534a047e Exit instead 2020-10-06 05:42:44 +01:00
mattpass
940489688d Tweaks on tutorial display incl settings show if tabs open 2020-10-05 16:56:01 +01:00
mattpass
d78821a4dc 4 x functions tidied in icecoder.js 2020-10-05 16:24:47 +01:00
mattpass
8322e0b3fe Revised jumpToDefinition 2020-10-05 16:02:21 +01:00
mattpass
14e22568a2 Fixes and code tidying on interceptKeys 2020-10-04 09:56:46 +01:00
mattpass
1bc0ac1ec5 Shorter version of key identifying via null coalescing 2020-10-04 08:59:15 +01:00
mattpass
d3b3715384 Auto-indent lines on move line(s) should be in same operation 2020-10-04 08:56:25 +01:00
mattpass
b574ce0e6c Auto-indent lines you're pasting or moving 2020-10-04 08:48:04 +01:00
mattpass
6d120cc7b9 Always auto-open files if that's the setting, let not var in snippet 2020-10-03 12:40:11 +01:00
mattpass
107c0b53c7 Upate README.md with new setup info 2020-10-02 20:17:02 +01:00
mattpass
afd0c02ff6 Remove tipsOnLogin, add 2 x help links 2020-10-02 20:02:00 +01:00
mattpass
9fbb393013 Comment tidying on interceptKeys 2020-09-27 12:32:16 +01:00
mattpass
d4fa50cdf3 More logic and code tidying improvements on interceptKeys 2020-09-27 12:18:58 +01:00
mattpass
809a1ad197 Minor tidy on prev commit 2020-09-27 11:56:22 +01:00
mattpass
5a660f7810 First round of updates on interceptKeys 2020-09-27 11:30:58 +01:00
mattpass
0e45263fad Code tidy on sort and alpha tab functions 2020-09-27 09:53:49 +01:00
mattpass
f8a2c2a926 Tidy logic on tab drag start, move and end 2020-09-27 09:31:46 +01:00
mattpass
ea14b8bbbb Remove canSwitchTabs bool, reduce selectedTab if closing to left of it, use renameTab 2020-09-27 08:53:25 +01:00
mattpass
e52cf8edf9 Tweaks to onmousedown logic on tabs 2020-09-27 08:51:19 +01:00
mattpass
494be783b9 Combine 2 x transition properties 2020-09-26 10:32:38 +01:00
mattpass
d884c2ed11 Don't switch tab if closing another tab 2020-09-26 09:59:37 +01:00
mattpass
cfbd11d8de setTabWidths code tidy & tweaks 2020-09-26 09:36:38 +01:00
mattpass
1c81aab339 Code tweaks to close tab functionality 2020-09-26 09:23:54 +01:00
mattpass
60496c9fb0 Remove Snake game 2020-09-26 08:43:12 +01:00
mattpass
c2647bc23a Prefix terminal XHR endpoint with iceLoc 2020-09-26 08:33:39 +01:00
mattpass
74fcd33c97 Add demo mode indicator to panes 2020-09-26 08:33:12 +01:00
mattpass
8770f6fe58 Demo mode text added for all langs 2020-09-26 08:32:05 +01:00
mattpass
25b50a97f3 getDemoModeIndicator func added 2020-09-26 08:31:38 +01:00
mattpass
e0b7be3a25 Add missing div tag, fix CSS, add demo mode indicator 2020-09-26 08:30:53 +01:00
mattpass
fabed98033 iceLoc now part of ICEcoder object 2020-09-26 08:30:02 +01:00
mattpass
b702a9c31c Extra escaping needed to show new line in alert msg 2020-09-21 16:58:04 +01:00
mattpass
03ca02c4fd Some tab format & logic improvements 2020-09-20 10:29:30 +01:00
mattpass
af57283d0a Updates to print and indicate changes in browser tab 2020-09-20 10:05:07 +01:00
mattpass
374178ad14 Format updates on some core functions in icecoder.js 2020-09-20 09:57:42 +01:00
mattpass
3d82bfc227 Updated useNewSettings function code a little 2020-09-20 09:13:44 +01:00
mattpass
373b1eb645 Fix updating font size in file manager 2020-09-20 09:01:08 +01:00
mattpass
73aaabba8f Line heights and borders removed from themes 2020-09-20 08:51:41 +01:00
mattpass
e9fa15984c Removed some font attributes from new themes 2020-09-20 08:42:51 +01:00
mattpass
af6a3bce61 Improve casing on theme names 2020-09-19 12:08:22 +01:00
mattpass
bc4532f76e Remove font-size and gutter padding right from themes, re-add font size changing 2020-09-19 11:44:50 +01:00
mattpass
01dfbac81a Merge branch 'master' of github.com:icecoder/icecoder into master 2020-09-19 11:20:55 +01:00
mattpass
432837a72c 38 new themes added, 4 opt groups, ucwords 2020-09-19 11:20:45 +01:00
mattpass
c4e52e0edc Removed 4 x themes, sorted light/dark, settings object 2020-09-19 10:06:40 +01:00
Matt Pass
15969b44cc chown to set owner & group 2020-09-13 21:30:24 +01:00
mattpass
080fef30a4 Use CM's own methods for get cursor pos & num 2020-09-13 10:06:24 +01:00
mattpass
a170e5e6a0 Code tidy on server queue and modals 2020-09-13 09:47:35 +01:00
mattpass
6cbbf6674c Remove 2 x test SVGs, bool param passed 2020-09-13 09:44:17 +01:00
mattpass
8a138538a3 Updates & fixes re color picker & eyedropper 2020-09-13 08:35:34 +01:00
mattpass
ed1515d008 Merge branch 'master' of github.com:icecoder/icecoder into master 2020-09-12 08:13:11 +01:00
mattpass
0bb81ea3a7 composer.json added 2020-09-12 08:12:59 +01:00
Matt Pass
77a0182f69 Exit early on running server tasks if no .git dir 2020-09-03 11:43:07 +01:00
mattpass
1064d2708b true should be false when checking IP config exists 2020-09-03 11:15:02 +01:00
mattpass
4c7c7ee874 getPathName needed on object in 1st param 2020-09-03 10:16:26 +01:00
mattpass
e27318c825 Bug report tidy up 2020-08-23 09:41:05 +01:00
mattpass
cd352c8a0c Tweaks to bug reporting 2020-08-23 09:28:03 +01:00
mattpass
53cdbad35b Updated bug report system 2020-08-23 09:11:40 +01:00
mattpass
5343efd57f Remove 4 x icons from settings screen 2020-08-23 07:51:11 +01:00
mattpass
c99f78a0f2 Icons for sections 2020-08-17 11:46:45 +01:00
mattpass
e253ff059e Icons added for tools, hover states added 2020-08-17 11:19:56 +01:00
mattpass
1d8cfafb62 Icons added 2020-08-17 10:56:19 +01:00
mattpass
b5b6b92204 Close icon added for 4 x tools 2020-08-13 12:26:32 +01:00
mattpass
fbe19fc431 Shows caps lock warning icon on login screen now 2020-08-13 11:35:57 +01:00
mattpass
2df787655d Only open file if not a dir ondblclick 2020-08-13 10:20:09 +01:00
mattpass
35bcb14d8d Handle tooltip clash 2020-07-23 21:04:57 +01:00
mattpass
611556b5fe Display first line from version not num incase beta 2020-07-23 19:54:27 +01:00
148 changed files with 7169 additions and 5018 deletions

31
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: Bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is. Please paste any JS error (from dev tools Console tab) and PHP errors from ICEcoders data/logs/error/error.log file at the time of the bug.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen and what happened instead.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Browser & Server (please complete the following information):**
- Browser [eg Chrome, Firefox]
- Server [eg Apache, Nginx, IIS]
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,17 @@
---
name: Feature request
about: Got a great idea for feature?
title: ''
labels: Feature
assignees: ''
---
**It would be great if ICEcoder....**
Explain your idea here. The more info the better if it's a complicated feature. Be sure to suggest something many people would like however!
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,17 @@
---
name: Got a question?
about: Not sure about something, ask away!
title: ''
labels: Question
assignees: ''
---
**I'm not sure about...**
Explain what you're unsure about here. The more info the better if it's a complicated. Other people might have the same questions and can learn from replies, ask away!
**Describe where you're unsure**
Explain where you're at and what in ICEcoder is causing you issues, we can probably advise!
**Additional context**
Add any other context or screenshots about the question here.

View File

@@ -0,0 +1,17 @@
---
name: Tweak suggestion
about: Could something be tweaked to make it better?
title: ''
labels: Tweak
assignees: ''
---
**It would be so much better if we could tweak...**
Explain your thoughts here. The more info the better if it's a complicated tweak. Be sure to suggest something many people would like however!
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the tweak suggestion here.

19
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,19 @@
**Describe the PR**
A clear and concise description of what the PR covers. Be sure it's something lots of people would appreciate!
**Benefits**
If it's a bug fix or tweak, note what it's resolving. If it's a feature, detail what's great about it. Note that not all PR are merged!
**Check the files!**
Before you hit the button, check the files changed in this PR, to ensure only the exact changes needed are included.
**Screenshots**
If applicable, add screenshots to help explain what's covered here.
**Notes**
Any other notes?

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.idea/*
data/* data/*
!data/.gitkeep !data/.gitkeep
plugins/* plugins/*

View File

@@ -1,6 +1,9 @@
Copyright: © 2020 ICEcoder Ltd Copyright: © 2020 ICEcoder Ltd
Website: icecoder.net
Website: icecoder.net
Email: info@icecoder.net Email: info@icecoder.net
Twitter: @icecoder Twitter: @icecoder
# ICEcoder License # ICEcoder License

View File

@@ -1,10 +1,14 @@
# ICEcoder is for sale! Please contact info@icecoder.net. Serious offers only.
---
# ICEcoder # ICEcoder
## Web IDE / browser code editor awesomeness ## Code editor awesomeness ...in your browser
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. ICEcoder is a browser based code editor, which provides a modern approach to building websites. By allowing you to code directly within the web browser, online or offline, it means you only need one program (your browser) to develop sites, plus can test on actual web servers. After development, you can also maintain the website easily, all of which make for speedy and smart development.
<img src="https://icecoder.net/images/icecoder-v8-0-beta-browser-code-editor.png" alt="ICEcoder web IDE"> <img src="https://assets.icecoder.net/images/icecoder-8-1-browser-code-editor.png" alt="ICEcoder code editor">
### Requirements ### Requirements
@@ -14,29 +18,40 @@ You can run ICEcoder either online or locally, on Linux, Windows or Mac based pl
#### Step 1: Get ICEcoder #### Step 1: Get ICEcoder
Either download the zip or clone from Github using: Either download the zip or clone from Github into your wwwroot (document root) dir for your website (this is typically `/var/www/html/`) via:
``` ```
$ git clone git://github.com/icecoder/ICEcoder $ git clone git@github.com:icecoder/icecoder /var/www/html/icecoder
``` ```
#### Step 2: Place in your document root (online or local) #### Step 2: Set permissions on dirs & files
* Put in a new sub-dir URL such as yourdomain.com/ICEcoder or localhost/ICEcoder You'll need to ensure both the ICEcoder dir and the wwwroot dir have permissions to read, write and execute. This can be done by changing permissions (using `chmod`), but it it safer and so better, to use `chown`:
* Set write permissions (757 or 775 depending on your system) on the 'data', 'lib', 'plugins' and 'tmp' folders
*(Note: A small number of web servers give an internal server error here, if you get this, try 755 instead)* `chown -R www-data.www-data /var/www/html`
This will recursively set the `www-data` user as both the owner and group users for files on the `/var/www/html` dir (which ICEcoder dir is of course inside of, at say `/var/www/html/ICEcoder`).
#### Step 3: Start coding #### Step 3: Start coding
* Visit the sub-dir URL in your browser and enter a password Now you can visit `yoursite.com/ICEcoder` to view ICEcoder, sign in and start coding!
**Now you're setup, auto-logged in and ready to code!** #### Tip: If using ICEcoder locally, you can use:
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, all usage is all down to you. `php -S localhost:8080`
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! :) ...to get PHP to start a simple web server. You can then visit `localhost:8080/ICEcoder`
Plenty of comments included in the code to assist with understanding, customising etc. #### Want to setup in other environments?
It's now possible to setup ICEcoder in a Docker container, via Composer, as an executable and more. Checkout https://icecoder.net/downloads for info on these setups!
#### It's free & open source for everyone!
Suitable for commercial & non-commercial projects, just let us know if it's useful to you and any cool customizations you make to it. We take no responsibility for anything, all usage is all down to you.
It's fully open source and MIT licensed. So we're happy for you to take it, make it your own and customize to your hearts content and/or contribute to this main repo! :)
Plenty of comments included in the code to assist with understanding, customizing etc.
Comments, improvements & feedback welcomed! Comments, improvements & feedback welcomed!

5
SECURITY.md Normal file
View File

@@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please report security issues to `info@icecoder.net`

10
assets/css/bug-report.css Normal file
View File

@@ -0,0 +1,10 @@
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}
.bug-report {padding: 20px; background: rgba(0,0,0,0.92); color: #ccc}
pre {font-family: monospace, courier, sans-serif;; white-space: pre-wrap; word-break: break-all}

15
assets/css/editor.css Normal file
View File

@@ -0,0 +1,15 @@
.dataMessage {display: none; margin: 32px 43px 0 43px; padding: 10px; width: 500px; font-family: arial; font-size: 10px; color: #ddd; background: #333}
.dataItemsContainer {margin: 20px 43px 32px 43px; font-family: arial; font-size: 10px; color: #ddd}
.dataItems {float: left; line-height: 14px}
.dataItems span {line-height: 21px}
.heading {color: #888}
.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: #1d1d1b !important}
.diffNone {background: ''; color: ''}
.resultsBar {position: absolute; display: none; width: 12px; height: 100%; top: 0; right: 0; overflow: hidden; pointer-events: none; z-index: 2}
.resultsBar .rBlock {position: absolute; display: block; width: 12px; background: rgba(128,128,128,0.3)}

View File

@@ -1,5 +1,5 @@
/* Additional file types */ /* Additional file types */
.ext-c:before {background-position: -48px 0 !important;} .ext-c:before, .ext-h:before {background-position: -48px 0 !important;}
.ext-cpp:before, .ext-ino:before {background-position: -64px 0 !important;} .ext-cpp:before, .ext-ino:before {background-position: -64px 0 !important;}
.ext-cs:before {background-position: -80px 0 !important;} .ext-cs:before {background-position: -80px 0 !important;}
.ext-coffee:before {background-position: -96px 0 !important;} .ext-coffee:before {background-position: -96px 0 !important;}

View File

@@ -10,9 +10,15 @@ body {margin: 0; overflow: auto;
user-select: none; user-select: none;
} }
.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} .lock {position: fixed; display: inline-block; width: 12px; height: 16px; right: 0; margin-right: 16px; top: 0; color: #666; 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} .lock:hover {color: #fff; 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} .lock .icon-tabler {width: 22px; height: 22px; margin-left: -5px; margin-top: 0; stroke-width: 1.25; pointer-events: none}
.refresh {position: fixed; display: inline-block; width: 14px; height: 14px; right: 0; margin-right: 15px; top: 34px; color: #666; cursor: pointer}
.refresh:hover {color: #fff; cursor: pointer}
.refresh .icon-tabler {width: 20px; height: 20px; margin-left: -3px; margin-top: -3px; stroke-width: 1.25; transform: rotate(180deg); pointer-events: none}
.plugins {position: fixed; display: inline-block; width: 16px; height: 16px; right: 0; margin-right: 15px; top: 61px; color: #666; cursor: pointer}
.plugins:hover {color: #fff; cursor: pointer}
.plugins .icon-tabler {width: 24px; height: 24px; margin-left: -3px; margin-top: -3px; stroke-width: 1.25; pointer-events: none}
.fmDragBox {position: absolute; display: inline-block; width: 0; height: 0; top: 0; left: 0; background: rgba(0,198,255,0.3); .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; -webkit-user-select: none;
-moz-user-select: none; -moz-user-select: none;

View File

@@ -1,16 +0,0 @@
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: #2187e7; text-decoration: none}
input {padding: 4px; border: 0; background-color: #444; color: #fff}
select {padding: 3px 4px; border: 0; background-color: #444; color: #fff}
input:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff}
select:focus {outline: none}
.ftpManager {background-color: #1c1c19; color: #fff; padding: 20px}
.ftpManager .info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help}

View File

@@ -9,9 +9,11 @@ body {overflow: hidden;
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px} h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
h2 {font-size: 18px; font-weight: normal; color: #fff} h2 {font-size: 18px; font-weight: normal; color: #fff}
.icon-tabler {width: 24px; height: 24px; stroke-width: 1.25}
.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 {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} .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} .popupVCenter .popup {#position: relative; #top: -50%; text-align: center; color: #fff; font-size: 10px}
.popupVCenter .popup .imgDisplay {border: solid 10px #fff; max-width: 700px; max-height: 500px; background-color: #000; background-image: url('../images/checkerboard.png')}
.floatingContainer {position: absolute; top: 0; left: 0; width: 55px; height: 55px; visibility: hidden; border: solid 1px #444; image-rendering: pixelated} .floatingContainer {position: absolute; top: 0; left: 0; width: 55px; height: 55px; visibility: hidden; border: solid 1px #444; image-rendering: pixelated}
.floatingContainer:before {position: absolute; display: inline-block; width: 3px; height: 3px; left: 25px; top: 25px; content: ''; border: solid 1px #b00} .floatingContainer:before {position: absolute; display: inline-block; width: 3px; height: 3px; left: 25px; top: 25px; content: ''; border: solid 1px #b00}
@@ -68,15 +70,15 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
.files .tools {position: absolute; display: inline-block; width: 250px; height: 30px; left: 0; bottom: 0} .files .tools {position: absolute; display: inline-block; width: 250px; height: 30px; left: 0; bottom: 0}
.files .tools div {display: inline-block; margin: 8px 0 8px 15px; color: #666; cursor: pointer} .files .tools div {display: inline-block; margin: 8px 0 8px 15px; color: #666; cursor: pointer}
.files .tools div:hover {color: #fff; cursor: pointer} .files .tools div:hover {color: #fff; cursor: pointer}
.files .tools .icon-tabler {width: 22px; height: 22px; margin-left: -3px; margin-top: -3px; stroke-width: 1.25; pointer-events: none}
.files .tools .highlight {color: #eee; padding: 1px 3px; margin: 7px -3px 7px 12px; border-radius: 3px} .files .tools .highlight {color: #eee; padding: 1px 3px; margin: 7px -3px 7px 12px; border-radius: 3px}
.files .tools .error {background: #800} .files .tools .error {background: #800}
.files .tools .info {background: #080} .files .tools .info {background: #080}
.editor {position: absolute; display: inline-block; top: 0; left: 15px; width: 2400px} .editor {position: fixed; display: inline-block; top: 0; left: 15px; width: 2400px}
.editor .tabsBar {display: inline-block; height: 27px; width: 2400px; margin-top: 15px; padding-left: 53px; background: #fff} .editor .tabsBar {display: inline-block; height: 27px; width: 2400px; margin-top: 15px; padding-left: 53px; background: #fff}
.tabsBar .tab {position: absolute; display: none; height: 15px; padding: 6px 8px 6px 9px; border-right: 1px solid #ddd; color: #fff; white-space: nowrap; overflow: hidden; cursor: pointer; z-index: 1; .tabsBar .tab {position: absolute; display: none; height: 15px; padding: 6px 8px 6px 9px; border-right: 1px solid #ddd; color: #fff; white-space: nowrap; overflow: hidden; cursor: pointer; z-index: 1;
transition: width 0.15s ease-in-out; transition: width, left 0.15s ease-in-out;
transition: left 0.15s ease-in-out;
} }
.tabsBar .tab:before { .tabsBar .tab:before {
position: absolute; width: 16px; height: 16px; content: ""; margin-left: -2px; background:url('../images/file-folder-icons.png') no-repeat 0 0; background-position: -32px 0; position: absolute; width: 16px; height: 16px; content: ""; margin-left: -2px; background:url('../images/file-folder-icons.png') no-repeat 0 0; background-position: -32px 0;
@@ -105,7 +107,8 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
appearance: none; appearance: none;
} }
.findReplace .selectWrapper select:focus {outline: 0} .findReplace .selectWrapper select:focus {outline: 0}
.findReplace .findText {display: inline-block; height: 28px; font-size: 10px; margin: 7px 3px 0 27px} .findReplace .findRegexToggle {display: inline-block; height: 10px; width: 16px; font-size: 10px; margin: 3px 0 0 5px; padding: 4px 1px; border-radius: 2px; text-align: center; cursor: pointer}
.findReplace .findText {display: inline-block; height: 28px; font-size: 10px; margin: 7px 3px 0 4px}
.findReplace .find {position: relative; width: 167px; height: 28px; border: 0; top: -2px; font-size: 12px; padding-left: 5px; margin-right: 3px; background: #444; color: #eee} .findReplace .find {position: relative; width: 167px; height: 28px; border: 0; top: -2px; font-size: 12px; padding-left: 5px; margin-right: 3px; background: #444; color: #eee}
.findReplace .replaceText {height: 28px; font-size: 10px; margin: 6px 3px 0 2px} .findReplace .replaceText {height: 28px; font-size: 10px; margin: 6px 3px 0 2px}
.findReplace .replace {position: relative; width: 167px; height: 28px; border: 0; top: -2px; font-size: 12px; padding-left: 5px; background: #444; color: #eee} .findReplace .replace {position: relative; width: 167px; height: 28px; border: 0; top: -2px; font-size: 12px; padding-left: 5px; background: #444; color: #eee}
@@ -117,26 +120,34 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
.findBar .goLine {position: fixed; display: inline-block; width: 120px; right: 65px; top: 49px; height: 21px; font-size: 10px; color: #eee; cursor: default; z-index: 1} .findBar .goLine {position: fixed; display: inline-block; width: 120px; right: 65px; top: 49px; height: 21px; font-size: 10px; color: #eee; cursor: default; z-index: 1}
.goLine .goToLine {width: 50px; height: 28px; border: 0; font-size: 12px; margin: -7px 0 0 3px; padding-left: 4px; background: #333; color: #eee} .goLine .goToLine {width: 50px; height: 28px; border: 0; font-size: 12px; margin: -7px 0 0 3px; padding-left: 4px; background: #333; color: #eee}
.findReplace input:focus, .goLine .goToLine:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff} .findReplace input:focus, .goLine .goToLine:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff}
.findBar .view {position: fixed; display: inline-block; width: 16px; height: 16px; right: 40px; top: 49px; background: url('../images/file-manager-icons.png') 0 0 no-repeat; cursor: pointer; background-position: -48px 0; opacity: 0.3} .findBar .view {position: fixed; display: inline-block; width: 16px; height: 16px; right: 40px; top: 49px; color: #888; cursor: pointer; opacity: 0.3}
.findBar .bug {position: fixed; display: inline-block; width: 16px; height: 16px; right: 15px; top: 48px; background: url('../images/bug-reporting-icons.png') 0 0 no-repeat; cursor: pointer; background-position: 0 0} .findBar .view:hover {color: #fff; cursor: pointer}
.findBar .view .icon-tabler {width: 22px; height: 22px; margin-left: -3px; margin-top: -3px; stroke-width: 1.25; pointer-events: none}
.findBar .bug {position: fixed; display: inline-block; width: 16px; height: 16px; right: 15px; top: 49px; color: #404040; cursor: pointer}
.findBar .bug:hover {color: #fff; cursor: pointer}
.findBar .bug .icon-tabler {width: 23px; height: 23px; margin-left: -3px; margin-top: -4px; stroke-width: 1.25; pointer-events: none}
.editor .terminal {position: fixed; top: 10000px; transition: top 0.2s ease; z-index: 2} .editor .terminal {position: fixed; top: 10000px; transition: top 0.2s ease; z-index: 2}
.editor .output {position: fixed; top: 10000px; padding: 15px 18px 8px 13px; transition: top 0.2s ease; background: rgba(0,0,0,0.92); z-index: 2} .editor .output {position: fixed; top: 10000px; padding: 15px 18px 8px 13px; transition: top 0.2s ease; background: rgba(0,0,0,0.92); color: #eee; z-index: 2}
.editor .database {position: fixed; top: 10000px; transition: top 0.2s ease; z-index: 2} .editor .database {position: fixed; top: 10000px; transition: top 0.2s ease; z-index: 2}
.editor .git {position: fixed; top: 10000px; padding: 15px 18px 15px 13px; overflow-y: auto; transition: top 0.2s ease; background: rgba(0,0,0,0.92); z-index: 2} .editor .git {position: fixed; top: 10000px; padding: 15px 18px 15px 13px; overflow-y: auto; transition: top 0.2s ease; background: rgba(0,0,0,0.92); color: #eee; z-index: 2}
.editor .git::-webkit-scrollbar {width: 12px; height: 12px} .editor .git::-webkit-scrollbar {width: 12px; height: 12px}
.editor .git::-webkit-scrollbar-thumb {background: rgba(0,198,255,0.2)} .editor .git::-webkit-scrollbar-thumb {background: rgba(0,198,255,0.2)}
.editor .git::-webkit-scrollbar-thumb:hover {background: rgba(0,198,255,0.8)} .editor .git::-webkit-scrollbar-thumb:hover {background: rgba(0,198,255,0.8)}
.editor .git::-webkit-scrollbar-corner, .editor .git::-webkit-scrollbar-resizer {background: transparent} .editor .git::-webkit-scrollbar-corner, .editor .git::-webkit-scrollbar-resizer {background: transparent}
.editor .git .link {font-family: monospace; cursor: pointer} .editor .git .link {font-family: monospace; cursor: pointer}
.editor .git .link:hover {color: rgba(0,198,255,1)} .editor .git .link:hover {color: rgba(0,198,255,1)}
.editor .code {position: relative; display: inline-block; top: 28px; width: 600px; height: 600px; visibility: hidden} .editor .code {position: relative; display: inline-block; 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.15); left: 0; z-index: 1} .footer {position: fixed; display: inline-block; width: 100%; height: 30px; bottom: 0; background-color: rgba(0,0,0,0.15); left: 0; z-index: 1}
.footer .versionsDisplay {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; transition: opacity 0.2s; z-index: 2; cursor: pointer} .footer .versionsDisplay {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; transition: opacity 0.2s; z-index: 2; cursor: pointer}
.footer .serverMessage {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; transition: opacity 0.2s; z-index: 1} .footer .serverMessage {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; transition: opacity 0.2s; z-index: 1}
.footer .splitPaneControls {position: absolute; display: inline-block; width: 50px; text-align: center; padding: 6px} .footer .splitPaneControls {position: absolute; display: inline-block; width: 50px; text-align: center; padding: 6px}
.footer .splitPaneControls .off {display: inline-block; width: 18px; height: 18px; margin-right: 10px; background: url('../images/split-pane-controls.gif') no-repeat 0 0; cursor: pointer} .footer .splitPaneControls .off {display: inline-block; width: 18px; height: 18px; margin-right: 10px; color: #888; cursor: pointer}
.footer .splitPaneControls .on {display: inline-block; width: 19px; height: 18px; background: url('../images/split-pane-controls.gif') no-repeat -18px 0; cursor: pointer} .footer .splitPaneControls .off:hover {color: #fff; cursor: pointer}
.footer .splitPaneControls .off .icon-tabler {margin-left: -3px; margin-top: -3px; stroke-width: 1.25; pointer-events: none}
.footer .splitPaneControls .on {display: inline-block; width: 19px; height: 18px; color: #888; cursor: pointer}
.footer .splitPaneControls .off:hover {color: #fff; cursor: pointer}
.footer .splitPaneControls .on .icon-tabler {margin-left: -3px; margin-top: -3px; stroke-width: 1.25; pointer-events: none}
.footer .splitPaneNames {position: absolute; display: inline-block; width: 100px; text-align: center; margin-top: 9px; color: #555; opacity: 0; transition: opacity 0.3s ease-in-out} .footer .splitPaneNames {position: absolute; display: inline-block; width: 100px; text-align: center; margin-top: 9px; color: #555; opacity: 0; transition: opacity 0.3s ease-in-out}
.footer .charDisplay, .footer .byteDisplay {position: absolute; display: inline-block; padding: 5px 0 0 8px; margin-top: 3px; margin-right: 10px; right: 0; font-size: 12px; color: #fff; text-align: right; text-align: right; cursor: pointer} .footer .charDisplay, .footer .byteDisplay {position: absolute; display: inline-block; padding: 5px 0 0 8px; margin-top: 3px; margin-right: 10px; right: 0; font-size: 12px; color: #fff; text-align: right; text-align: right; cursor: pointer}
@@ -148,6 +159,8 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
.fileMenu hr {border: 0; height: 1px; padding: 0; margin: 0; background: #444} .fileMenu hr {border: 0; height: 1px; padding: 0; margin: 0; background: #444}
.tooltip {position: absolute; top: 0; left: 0; padding: 5px; background: #444; color: #bbb} .tooltip {position: absolute; top: 0; left: 0; padding: 5px; background: #444; color: #bbb}
.closeIcon {position: fixed; display: inline-block; top: 10px; right: 10px; width: 24px; height: 24px; color: #888; cursor: pointer; z-index: 101}
.closeIcon:hover {color: #ddd}
.screenContainer {position: absolute; display: table; width: 100%; height: 100%; top: 0; left: 0; text-align: center} .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} .screenContainer .screenVCenter {#position: absolute; display: table-cell; #top: 50%; vertical-align: middle; text-align: center}
@@ -156,7 +169,9 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
.screenCenter .text {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888} .screenCenter .text {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888}
.screenCenter .text input {margin-top: 1px} .screenCenter .text input {margin-top: 1px}
.screenCenter .text a {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888; text-decoration: none} .screenCenter .text a {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888; text-decoration: none}
.screenCenter .adminUser {margin-bottom: 15px; color: #bbb}
.screenCenter .password {border: 0; background-color: #333; color: #fff; height: 20px} .screenCenter .password {border: 0; background-color: #333; color: #fff; height: 20px}
.screenCenter .password:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff} .screenCenter .password:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff}
.screenCenter .button {border: 0; background: #444; color: #eee; height: 22px; cursor: pointer} .screenCenter .button {border: 0; background: #444; color: #eee; height: 22px; cursor: pointer}
.screenCenter .button:hover {background: #2187e7; color: #eee} .screenCenter .button:hover {background: #2187e7; color: #eee}
.screenCenter .iconCapsLock {position: absolute; margin-left: 2px; color: #888}

View File

@@ -14,14 +14,10 @@
position: fixed; position: fixed;
white-space: pre; white-space: pre;
white-space: pre-wrap; white-space: pre-wrap;
margin: 0 0 0 5px;
z-index: 100; z-index: 100;
max-width: 600px; max-width: 600px;
opacity: 0; 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 { .CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {

View File

@@ -27,6 +27,7 @@ body {overflow: hidden;
h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px} h1 {font-size: 36px; font-weight: normal; color: #888; margin-bottom: 20px}
h2 {font-size: 18px; font-weight: normal; color: #fff} h2 {font-size: 18px; font-weight: normal; color: #fff}
.icon-tabler {width: 24px; height: 24px; stroke-width: 1.25}
.settings {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff} .settings {font-family: arial, verdana, helvetica, sans-serif; background-color: #1c1c19; color: #fff}
.settings .infoPane {position: relative; width: 230px; height: 570px; font-size: 10px; color: #888; background-color: #fff; padding: 20px; float: left} .settings .infoPane {position: relative; width: 230px; height: 570px; font-size: 10px; color: #888; background-color: #fff; padding: 20px; float: left}
.settings .infoPane a {color: #06c; text-decoration: none} .settings .infoPane a {color: #06c; text-decoration: none}
@@ -40,5 +41,7 @@ h2 {font-size: 18px; font-weight: normal; color: #fff}
.settings input, .settings textarea {border: 1px solid #555; background-color: #444; color: #fff} .settings input, .settings textarea {border: 1px solid #555; background-color: #444; color: #fff}
.settings input:focus, .settings textarea:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff} .settings input:focus, .settings textarea:focus {outline: none; background: rgba(0,198,255,0.5); color: #fff}
.settings input[type="text"]:disabled {opacity: 0.5} .settings input[type="text"]:disabled {opacity: 0.5}
.settings .info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help} .settings .iconCapsLock {position: absolute; margin-left: 2px; color: #888}
.settings .info {font-size: 10px; color: rgba(0,198,255,1); cursor: help}
.settings .info .icon-tabler {width: 18px; height: 18px; margin-top: -2px; pointer-events: none}
.settings .update {position: absolute; bottom: 0; right: 20px; padding: 5px 10px; font-size: 18px; background-color: rgba(0,198,255,0.7); opacity: 0.1; cursor: pointer} .settings .update {position: absolute; bottom: 0; right: 20px; padding: 5px 10px; font-size: 18px; background-color: rgba(0,198,255,0.7); opacity: 0.1; cursor: pointer}

View File

@@ -27,12 +27,12 @@ table, caption, tbody, tfoot, thead, tr, th, td {
html, body {width: 100%; height: 100%} html, body {width: 100%; height: 100%}
.output {position: absolute; display: block; top: 0; padding: 15px 18px 8px 13px; width: 100%; min-height: 100%; border: 0; background: rgba(0,0,0,0.92); color: #ccc} .output {position: absolute; display: block; top: 0; padding: 15px 18px 8px 13px; width: 100%; min-height: 100%; border: 0; background: rgba(0,0,0,0.92); color: #ccc; white-space: pre-wrap; word-break: break-all}
.commandLine {width: 100%; padding: 8px 2px 8px 0; color: #fff} .commandLine {width: 100%; padding: 8px 2px 8px 0; color: #fff}
.commandLine .user {display: inline-block; height: 24px; margin-top: -4px; margin-left: -13px; padding: 5px 5px 5px 0; margin-bottom: 5px; background: #b58901; color: #000} .commandLine .user {display: inline-block; height: 24px; margin-top: -4px; margin-left: -13px; padding: 5px 5px 5px 0; margin-bottom: 5px; background: #b58901; color: #000}
.commandLine .cwd {display: inline-block; height: 24px; margin-top: -4px; padding: 5px 5px 5px 0; margin-bottom: 5px; background: #278bd2; color: #fff} .commandLine .cwd {display: inline-block; height: 24px; margin-top: -4px; padding: 5px 5px 5px 0; margin-bottom: 5px; background: #278bd2; color: #fff}
.commandLine .promptVLine {display: inline-block; width: 1px; height: 12px; margin-top: -5px; margin-left: 3px; background: #b58901} .commandLine .promptVLine {display: inline-block; width: 1px; height: 12px; margin-top: -5px; margin-left: 3px; background: #b58901}
.commandLine .promptHLine {display: inline-block; color: #b58901} .commandLine .promptHLine {display: inline-block; color: #b58901}
.commandLine .promptArrow {display: inline-block; margin-left:-1px} .commandLine .promptArrow {display: inline-block; margin-left:-1px}
.commandLine .command {border: none; background: transparent; color: #fff} .commandLine .command {border: none; width: 10000px; max-width: 95%; background: transparent; color: #fff}
.commandLine .command:focus {outline: none} .commandLine .command:focus {outline: none}

View File

@@ -3,7 +3,7 @@
Author: Torres Digital® | Sites → Lojas Virtuais e e-Commerce Author: Torres Digital® | Sites → Lojas Virtuais e e-Commerce
Author URI: https://www.facebook.com/torresdigital/ Author URI: https://www.facebook.com/torresdigital/
Description: omos uma Agência Gaúcha que trabalha com Desenvolvimento Web voltado para todos os Nichos do Mercado tais como os de insumos, commodities, pequenos, médios e grandes Lojistas que desejam alcançar mais Clientes através do e-Commerce: Sites, Aplicativos, Lojas Virtuais, Marketplaces, WordPress e Woocommerce, integrados com os Principais Cartões e Soluções de Pagamentos do Brasil e do Mundo; tais como Cielo, CyberSource, PagSeguro, Stripe, Vindi, MasterCard, Visa, American Express, outros. Description: Somos uma Agência Gaúcha que trabalha com Desenvolvimento Web voltado para todos os Nichos do Mercado tais como os de insumos, commodities, pequenos, médios e grandes Lojistas que desejam alcançar mais Clientes através do e-Commerce: Sites, Aplicativos, Lojas Virtuais, Marketplaces, WordPress e Woocommerce, integrados com os Principais Cartões e Soluções de Pagamentos do Brasil e do Mundo; tais como Cielo, CyberSource, PagSeguro, Stripe, Vindi, MasterCard, Visa, American Express, outros.
www.torresdigital.tk * Menos é mais. www.torresdigital.tk * Menos é mais.
@@ -34,10 +34,10 @@ This theme is licensed under the GPL. Use it to make something cool, have fun, a
.cm-s-2019-torres-digital-theme span.cm-variable-3 { color: #96F; } .cm-s-2019-torres-digital-theme span.cm-variable-3 { color: #96F; }
.cm-s-2019-torres-digital-theme span.cm-property { color: #F8019E; } .cm-s-2019-torres-digital-theme span.cm-property { color: #F8019E; }
.cm-s-2019-torres-digital-theme span.cm-operator { color: #999; } .cm-s-2019-torres-digital-theme span.cm-operator { color: #999; }
.cm-s-2019-torres-digital-theme span.cm-comment { color: #616163; } .cm-s-2019-torres-digital-theme span.cm-comment { color: #d5d5d5; font-weight: 600; }
.cm-s-2019-torres-digital-theme span.cm-string { color: #F8019E; } .cm-s-2019-torres-digital-theme span.cm-string { color: #F8019E; }
.cm-s-2019-torres-digital-theme span.cm-meta { color: #F1FD31; font-weight: bold; } .cm-s-2019-torres-digital-theme span.cm-meta { color: #F1FD31; font-weight: bold; }
.cm-s-2019-torres-digital-theme span.cm-qualifier { color: #FFF700; } .cm-s-2019-torres-digital-theme span.cm-qualifier { color: #FFF700; font-weight: 600; }
.cm-s-2019-torres-digital-theme span.cm-builtin { color: #F8A901; } .cm-s-2019-torres-digital-theme span.cm-builtin { color: #F8A901; }
.cm-s-2019-torres-digital-theme span.cm-bracket { color: #cc7; } .cm-s-2019-torres-digital-theme span.cm-bracket { color: #cc7; }
.cm-s-2019-torres-digital-theme span.cm-tag { color: #FFBD40; } .cm-s-2019-torres-digital-theme span.cm-tag { color: #FFBD40; }

View File

@@ -1,41 +0,0 @@
/*
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; }
.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; }
.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; }
.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; }
.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; }
.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; }

View File

@@ -0,0 +1,51 @@
.cm-s-all-hallow-eve {
font-family: monospace;
background: #000000;
color: #FFFFFF;
}
.cm-s-all-hallow-eve .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-all-hallow-eve div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-all-hallow-eve .CodeMirror-activeline-background {
background: #333300;
}
.cm-s-all-hallow-eve .CodeMirror-selected {
background: #73597EE0;
}
.cm-s-all-hallow-eve .cm-comment {
color: #9933CC;
}
.cm-s-all-hallow-eve .cm-keyword {
color: #CC7833;
}
.cm-s-all-hallow-eve .cm-def {
font-style: italic;
}
.cm-s-all-hallow-eve .cm-string {
color: #66CC33;
}
.cm-s-all-hallow-eve .cm-variable-2 {
text-decoration: underline;
}
.cm-s-all-hallow-eve .cm-property {
color: #C83730;
}
.cm-s-all-hallow-eve .cm-atom {
color: #C83730;
}
.cm-s-all-hallow-eve .cm-number {
color: #C83730;
}
.cm-s-all-hallow-eve .cm-operator {
color: #CC7833;
}
.cm-s-all-hallow-eve .CodeMirror-linenumber {
color: #9933CC;
}

View File

@@ -1,5 +0,0 @@
.cm-s-ambiance.CodeMirror {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}

View File

@@ -39,7 +39,6 @@
/* Editor styling */ /* Editor styling */
.cm-s-ambiance.CodeMirror { .cm-s-ambiance.CodeMirror {
line-height: 1.40em;
color: #E6E1DC; color: #E6E1DC;
background-color: #202020; background-color: #202020;
-webkit-box-shadow: inset 0 0 10px black; -webkit-box-shadow: inset 0 0 10px black;

51
assets/css/theme/amy.css Normal file
View File

@@ -0,0 +1,51 @@
.cm-s-amy {
font-family: monospace;
background: #200020;
color: #D0D0FF;
}
.cm-s-amy .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #200020;
z-index: 3;
border: none;
}
.cm-s-amy div.CodeMirror-cursor {
border-left: 3px solid #D0D0FF;
}
.cm-s-amy .CodeMirror-activeline-background {
background: #80000040;
}
.cm-s-amy .CodeMirror-selected {
background: #80000080;
}
.cm-s-amy .cm-string {
color: #999999;
}
.cm-s-amy .cm-atom {
color: null;
}
.cm-s-amy .cm-number {
color: null;
}
.cm-s-amy .cm-keyword {
color: #A080FF;
}
.cm-s-amy .cm-variable {
color: #50A0A0;
}
.cm-s-amy .cm-def {
color: #80B0B0;
}
.cm-s-amy .cm-variable-2 {
color: #009090;
}
.cm-s-amy .cm-property {
color: null;
}
.cm-s-amy .cm-operator {
color: #A080FF;
}
.cm-s-amy .CodeMirror-linenumber {
color: null;
}

View File

@@ -0,0 +1,55 @@
.cm-s-argonaut {
font-family: monospace;
background: #151515;
color: #B2B2B2;
}
.cm-s-argonaut .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #151515;
z-index: 3;
border: none;
}
.cm-s-argonaut div.CodeMirror-cursor {
border-left: 3px solid #B2B2B2;
}
.cm-s-argonaut .CodeMirror-activeline-background {
background: #000C16;
}
.cm-s-argonaut .CodeMirror-selected {
background: #002F53;
}
.cm-s-argonaut .cm-comment {
font-style: italic;
color: #00A6FF;
}
.cm-s-argonaut .cm-string {
color: #6497C5;
}
.cm-s-argonaut .cm-number {
color: #815DB3;
}
.cm-s-argonaut .cm-variable {
color: #FFCA00;
}
.cm-s-argonaut .cm-def {
font-style: italic;
}
.cm-s-argonaut .cm-property {
color: #815DB3;
}
.cm-s-argonaut .cm-variable-2 {
color: #0065D3;
}
.cm-s-argonaut .cm-atom {
color: #815DB3;
}
.cm-s-argonaut .cm-keyword {
color: null;
}
.cm-s-argonaut .cm-operator {
color: null;
}
.cm-s-argonaut .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,53 @@
.cm-s-black-pearl-ii {
font-family: monospace;
background: #000000;
color: #FFFFFF;
}
.cm-s-black-pearl-ii .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-black-pearl-ii div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-black-pearl-ii .CodeMirror-activeline-background {
background: #FFFFFF0D;
}
.cm-s-black-pearl-ii .CodeMirror-selected {
background: #FFFFFF26;
}
.cm-s-black-pearl-ii .cm-comment {
font-style: italic;
color: #428BDD;
}
.cm-s-black-pearl-ii .cm-atom {
color: null;
}
.cm-s-black-pearl-ii .cm-def {
font-style: italic;
color: #8AA6C1;
}
.cm-s-black-pearl-ii .cm-string {
color: #CC66FF;
}
.cm-s-black-pearl-ii .cm-number {
color: null;
}
.cm-s-black-pearl-ii .cm-variable-2 {
color: #FFFFFF;
}
.cm-s-black-pearl-ii .cm-property {
color: null;
}
.cm-s-black-pearl-ii .cm-keyword {
color: null;
}
.cm-s-black-pearl-ii .cm-operator {
color: null;
}
.cm-s-black-pearl-ii .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,54 @@
.cm-s-chrome-devtools {
font-family: monospace;
background: #FFFFFF;
color: #000000;
}
.cm-s-chrome-devtools .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #FFFFFF;
z-index: 3;
border: none;
}
.cm-s-chrome-devtools div.CodeMirror-cursor {
border-left: 3px solid #000000;
}
.cm-s-chrome-devtools .CodeMirror-activeline-background {
background: #0000001A;
}
.cm-s-chrome-devtools .CodeMirror-selected {
background: #BAD6FD;
}
.cm-s-chrome-devtools .cm-string {
color: #C41A16;
}
.cm-s-chrome-devtools .cm-number {
color: null;
}
.cm-s-chrome-devtools .cm-keyword {
color: #AA0D91;
}
.cm-s-chrome-devtools .cm-atom {
color: null;
}
.cm-s-chrome-devtools .cm-variable {
color: #000000;
}
.cm-s-chrome-devtools .cm-def {
font-style: italic;
}
.cm-s-chrome-devtools .cm-comment {
color: #007400;
}
.cm-s-chrome-devtools .cm-variable-2 {
color: #881280;
}
.cm-s-chrome-devtools .cm-property {
color: null;
}
.cm-s-chrome-devtools .cm-operator {
color: #AA0D91;
}
.cm-s-chrome-devtools .CodeMirror-linenumber {
color: #007400;
}

View File

@@ -0,0 +1,48 @@
.cm-s-clouds-midnight {
font-family: monospace;
background: #191919;
color: #929292;
}
.cm-s-clouds-midnight .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #191919;
z-index: 3;
border: none;
}
.cm-s-clouds-midnight div.CodeMirror-cursor {
border-left: 3px solid #929292;
}
.cm-s-clouds-midnight .CodeMirror-activeline-background {
background: #D7D7D708;
}
.cm-s-clouds-midnight .CodeMirror-selected {
background: #000000;
}
.cm-s-clouds-midnight .cm-comment {
color: #3C403B;
}
.cm-s-clouds-midnight .cm-string {
color: #5D90CD;
}
.cm-s-clouds-midnight .cm-number {
color: #E92E2E;
}
.cm-s-clouds-midnight .cm-atom {
color: #E92E2E;
}
.cm-s-clouds-midnight .cm-variable-2 {
color: #606060;
}
.cm-s-clouds-midnight .cm-property {
color: #E92E2E;
}
.cm-s-clouds-midnight .cm-keyword {
color: null;
}
.cm-s-clouds-midnight .cm-operator {
color: null;
}
.cm-s-clouds-midnight .CodeMirror-linenumber {
color: #3C403B;
}

View File

@@ -0,0 +1,55 @@
.cm-s-darkpastel {
font-family: monospace;
background: #2a2a2a;
color: #ffffff;
}
.cm-s-darkpastel .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #2a2a2a;
z-index: 3;
border: none;
}
.cm-s-darkpastel div.CodeMirror-cursor {
border-left: 3px solid #ffffff;
}
.cm-s-darkpastel .CodeMirror-activeline-background {
background: #3E3D32;
}
.cm-s-darkpastel .CodeMirror-selected {
background: #237CC4;
}
.cm-s-darkpastel .cm-comment {
color: #B8FF9A;
}
.cm-s-darkpastel .cm-string {
color: #FF9F9A;
}
.cm-s-darkpastel .cm-number {
color: #66D9EF;
}
.cm-s-darkpastel .cm-atom {
color: #66D9EF;
}
.cm-s-darkpastel .cm-variable {
color: #A6E22E;
}
.cm-s-darkpastel .cm-def {
font-style: italic;
color: #FD971F;
}
.cm-s-darkpastel .cm-variable-2 {
color: #F29C00;
}
.cm-s-darkpastel .cm-property {
color: #66D9EF;
}
.cm-s-darkpastel .cm-keyword {
color: null;
}
.cm-s-darkpastel .cm-operator {
color: null;
}
.cm-s-darkpastel .CodeMirror-linenumber {
color: #B8FF9A;
}

View File

@@ -0,0 +1,46 @@
.cm-s-django {
font-family: monospace;
background: #0B2F20;
color: #F8F8F8;
}
.cm-s-django .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0B2F20;
z-index: 3;
border: none;
}
.cm-s-django div.CodeMirror-cursor {
border-left: 3px solid #F8F8F8;
}
.cm-s-django .CodeMirror-activeline-background {
background: #0000004A;
}
.cm-s-django .CodeMirror-selected {
background: #245032;
}
.cm-s-django .cm-comment {
font-style: italic;
color: #245032;
}
.cm-s-django .cm-keyword {
color: #96DD3B;
}
.cm-s-django .cm-string {
color: #91BB9E;
}
.cm-s-django .cm-property {
color: #FFB454;
}
.cm-s-django .cm-atom {
color: #FFB454;
}
.cm-s-django .cm-number {
color: #FFB454;
}
.cm-s-django .cm-operator {
color: #96DD3B;
}
.cm-s-django .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,50 @@
.cm-s-eiffel {
font-family: monospace;
background: #FFFFFF;
color: #000000;
}
.cm-s-eiffel .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #FFFFFF;
z-index: 3;
border: none;
}
.cm-s-eiffel div.CodeMirror-cursor {
border-left: 3px solid #000000;
}
.cm-s-eiffel .CodeMirror-activeline-background {
background: #00000012;
}
.cm-s-eiffel .CodeMirror-selected {
background: #C3DCFF;
}
.cm-s-eiffel .cm-comment {
color: #00B418;
}
.cm-s-eiffel .cm-keyword {
color: #0100B6;
}
.cm-s-eiffel .cm-number {
font-style: italic;
color: #3C4C72;
}
.cm-s-eiffel .cm-atom {
font-style: italic;
color: #3C4C72;
}
.cm-s-eiffel .cm-string {
color: #D80800;
}
.cm-s-eiffel .cm-def {
font-style: italic;
}
.cm-s-eiffel .cm-property {
color: #3C4C72;
}
.cm-s-eiffel .cm-operator {
color: #0100B6;
}
.cm-s-eiffel .CodeMirror-linenumber {
color: #00B418;
}

View File

@@ -0,0 +1,51 @@
.cm-s-emacs-strict {
font-family: monospace;
background: #000000;
color: #D3D3D3;
}
.cm-s-emacs-strict .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-emacs-strict div.CodeMirror-cursor {
border-left: 3px solid #D3D3D3;
}
.cm-s-emacs-strict .CodeMirror-activeline-background {
background: #16012BEB;
}
.cm-s-emacs-strict .CodeMirror-selected {
background: #001DC3EB;
}
.cm-s-emacs-strict .cm-comment {
color: #FF7D27;
}
.cm-s-emacs-strict .cm-string {
color: #FF9E7B;
}
.cm-s-emacs-strict .cm-variable {
color: #81CEF9;
}
.cm-s-emacs-strict .cm-variable-2 {
color: #9CCFF4;
}
.cm-s-emacs-strict .cm-property {
color: null;
}
.cm-s-emacs-strict .cm-atom {
color: null;
}
.cm-s-emacs-strict .cm-number {
color: null;
}
.cm-s-emacs-strict .cm-keyword {
color: null;
}
.cm-s-emacs-strict .cm-operator {
color: null;
}
.cm-s-emacs-strict .CodeMirror-linenumber {
color: #FF7D27;
}

View File

@@ -0,0 +1,51 @@
.cm-s-fade-to-grey {
font-family: monospace;
background: #000000;
color: #FFFFFF;
}
.cm-s-fade-to-grey .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-fade-to-grey div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-fade-to-grey .CodeMirror-activeline-background {
background: #3A3A007A;
}
.cm-s-fade-to-grey .CodeMirror-selected {
background: #4A8CDBB3;
}
.cm-s-fade-to-grey .cm-comment {
color: #696854;
}
.cm-s-fade-to-grey .cm-keyword {
color: #D01D33;
}
.cm-s-fade-to-grey .cm-variable {
color: #AAAAAA;
}
.cm-s-fade-to-grey .cm-def {
color: #C3C3C3;
}
.cm-s-fade-to-grey .cm-string {
color: #E3E658;
}
.cm-s-fade-to-grey .cm-property {
color: #CBC3B1;
}
.cm-s-fade-to-grey .cm-atom {
color: #CBC3B1;
}
.cm-s-fade-to-grey .cm-number {
color: #CBC3B1;
}
.cm-s-fade-to-grey .cm-operator {
color: #D01D33;
}
.cm-s-fade-to-grey .CodeMirror-linenumber {
color: #696854;
}

46
assets/css/theme/fake.css Normal file
View File

@@ -0,0 +1,46 @@
.cm-s-fake {
font-family: monospace;
background: #010304;
color: #FFEDC5;
}
.cm-s-fake .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #010304;
z-index: 3;
border: none;
}
.cm-s-fake div.CodeMirror-cursor {
border-left: 3px solid #FFEDC5;
}
.cm-s-fake .CodeMirror-activeline-background {
background: #FFFFFF0D;
}
.cm-s-fake .CodeMirror-selected {
background: #DDF0FF33;
}
.cm-s-fake .cm-comment {
font-style: italic;
color: #8E8D93;
}
.cm-s-fake .cm-keyword {
color: #FF4A1A;
}
.cm-s-fake .cm-string {
color: #FF9924;
}
.cm-s-fake .cm-property {
color: #DAD085;
}
.cm-s-fake .cm-atom {
color: #DAD085;
}
.cm-s-fake .cm-number {
color: #DAD085;
}
.cm-s-fake .cm-operator {
color: #FF4A1A;
}
.cm-s-fake .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,54 @@
.cm-s-friendship-bracelet {
font-family: monospace;
background: #1F1F1F;
color: #F1F1F1;
}
.cm-s-friendship-bracelet .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #1F1F1F;
z-index: 3;
border: none;
}
.cm-s-friendship-bracelet div.CodeMirror-cursor {
border-left: 3px solid #F1F1F1;
}
.cm-s-friendship-bracelet .CodeMirror-activeline-background {
background: #404040;
}
.cm-s-friendship-bracelet .CodeMirror-selected {
background: #73597EE0;
}
.cm-s-friendship-bracelet .cm-comment {
color: #8A8988;
}
.cm-s-friendship-bracelet .cm-keyword {
color: #FF8C56;
}
.cm-s-friendship-bracelet .cm-variable {
color: #389AD9;
}
.cm-s-friendship-bracelet .cm-def {
font-style: italic;
}
.cm-s-friendship-bracelet .cm-string {
color: #F3F99A;
}
.cm-s-friendship-bracelet .cm-variable-2 {
color: #FC8C56;
}
.cm-s-friendship-bracelet .cm-property {
color: #FF6666;
}
.cm-s-friendship-bracelet .cm-atom {
color: #FF6666;
}
.cm-s-friendship-bracelet .cm-number {
color: #FF6666;
}
.cm-s-friendship-bracelet .cm-operator {
color: #FF8C56;
}
.cm-s-friendship-bracelet .CodeMirror-linenumber {
color: #8A8988;
}

View File

@@ -0,0 +1,46 @@
.cm-s-glitterbomb {
font-family: monospace;
background: #0B0A0A;
color: #CFCFCF;
}
.cm-s-glitterbomb .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0B0A0A;
z-index: 3;
border: none;
}
.cm-s-glitterbomb div.CodeMirror-cursor {
border-left: 3px solid #CFCFCF;
}
.cm-s-glitterbomb .CodeMirror-activeline-background {
background: #F8F8F8;
}
.cm-s-glitterbomb .CodeMirror-selected {
background: #FFFFFF59;
}
.cm-s-glitterbomb .cm-comment {
font-style: italic;
color: #44444E;
}
.cm-s-glitterbomb .cm-keyword {
color: #DBB800;
}
.cm-s-glitterbomb .cm-number {
color: #935E29;
}
.cm-s-glitterbomb .cm-string {
color: #4D6537;
}
.cm-s-glitterbomb .cm-property {
color: #935E29;
}
.cm-s-glitterbomb .cm-atom {
color: #935E29;
}
.cm-s-glitterbomb .cm-operator {
color: #DBB800;
}
.cm-s-glitterbomb .CodeMirror-linenumber {
color: italic;
}

48
assets/css/theme/idle.css Normal file
View File

@@ -0,0 +1,48 @@
.cm-s-idle {
font-family: monospace;
background: #FFFFFF;
color: #000000;
}
.cm-s-idle .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #FFFFFF;
z-index: 3;
border: none;
}
.cm-s-idle div.CodeMirror-cursor {
border-left: 3px solid #000000;
}
.cm-s-idle .CodeMirror-activeline-background {
background: #00000012;
}
.cm-s-idle .CodeMirror-selected {
background: #BAD6FD;
}
.cm-s-idle .cm-comment {
color: #919191;
}
.cm-s-idle .cm-string {
color: #00A33F;
}
.cm-s-idle .cm-atom {
color: #A535AE;
}
.cm-s-idle .cm-keyword {
color: #FF5600;
}
.cm-s-idle .cm-variable {
color: #21439C;
}
.cm-s-idle .cm-property {
color: #A535AE;
}
.cm-s-idle .cm-number {
color: #A535AE;
}
.cm-s-idle .cm-operator {
color: #FF5600;
}
.cm-s-idle .CodeMirror-linenumber {
color: #919191;
}

View File

@@ -0,0 +1,49 @@
.cm-s-idlefingers {
font-family: monospace;
background: #323232;
color: #FFFFFF;
}
.cm-s-idlefingers .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #323232;
z-index: 3;
border: none;
}
.cm-s-idlefingers div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-idlefingers .CodeMirror-activeline-background {
background: #343536;
}
.cm-s-idlefingers .CodeMirror-selected {
background: #5A647EE0;
}
.cm-s-idlefingers .cm-comment {
font-style: italic;
color: #BC9458;
}
.cm-s-idlefingers .cm-keyword {
color: #CC7833;
}
.cm-s-idlefingers .cm-def {
font-style: italic;
}
.cm-s-idlefingers .cm-string {
color: #A5C261;
}
.cm-s-idlefingers .cm-property {
color: #B83426;
}
.cm-s-idlefingers .cm-atom {
color: #B83426;
}
.cm-s-idlefingers .cm-number {
color: #B83426;
}
.cm-s-idlefingers .cm-operator {
color: #CC7833;
}
.cm-s-idlefingers .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,52 @@
.cm-s-iplastic {
font-family: monospace;
background: #EEEEEE;
color: #000000;
}
.cm-s-iplastic .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #EEEEEE;
z-index: 3;
border: none;
}
.cm-s-iplastic div.CodeMirror-cursor {
border-left: 3px solid #000000;
}
.cm-s-iplastic .CodeMirror-activeline-background {
background: #0000001A;
}
.cm-s-iplastic .CodeMirror-selected {
background: #BAD6FD;
}
.cm-s-iplastic .cm-string {
color: #009933;
}
.cm-s-iplastic .cm-number {
color: null;
}
.cm-s-iplastic .cm-keyword {
color: #0000FF;
}
.cm-s-iplastic .cm-atom {
color: null;
}
.cm-s-iplastic .cm-variable {
color: #FF8000;
}
.cm-s-iplastic .cm-def {
font-style: italic;
}
.cm-s-iplastic .cm-comment {
font-style: italic;
color: #0066FF;
}
.cm-s-iplastic .cm-property {
color: null;
}
.cm-s-iplastic .cm-operator {
color: #0000FF;
}
.cm-s-iplastic .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,45 @@
.cm-s-ir_black {
font-family: monospace;
background: #000000;
color: #EDEDED;
}
.cm-s-ir_black .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-ir_black div.CodeMirror-cursor {
border-left: 3px solid #EDEDED;
}
.cm-s-ir_black .CodeMirror-activeline-background {
background: #FFFFFF24;
}
.cm-s-ir_black .CodeMirror-selected {
background: #333333;
}
.cm-s-ir_black .cm-comment {
color: #7C7C7C;
}
.cm-s-ir_black .cm-keyword {
color: #96CBFE;
}
.cm-s-ir_black .cm-string {
color: #A8FF60;
}
.cm-s-ir_black .cm-number {
color: #DAD085;
}
.cm-s-ir_black .cm-property {
color: #DAD085;
}
.cm-s-ir_black .cm-atom {
color: #DAD085;
}
.cm-s-ir_black .cm-operator {
color: #96CBFE;
}
.cm-s-ir_black .CodeMirror-linenumber {
color: #7C7C7C;
}

View File

@@ -0,0 +1,45 @@
.cm-s-ir_white {
font-family: monospace;
background: #FFFFFF;
color: #010101;
}
.cm-s-ir_white .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #FFFFFF;
z-index: 3;
border: none;
}
.cm-s-ir_white div.CodeMirror-cursor {
border-left: 3px solid #010101;
}
.cm-s-ir_white .CodeMirror-activeline-background {
background: #FFFFFF0D;
}
.cm-s-ir_white .CodeMirror-selected {
background: #E0E0ED;
}
.cm-s-ir_white .cm-comment {
color: #898989;
}
.cm-s-ir_white .cm-keyword {
color: #016692;
}
.cm-s-ir_white .cm-string {
color: #009F78;
}
.cm-s-ir_white .cm-number {
color: #7A7025;
}
.cm-s-ir_white .cm-property {
color: #7A7025;
}
.cm-s-ir_white .cm-atom {
color: #7A7025;
}
.cm-s-ir_white .cm-operator {
color: #016692;
}
.cm-s-ir_white .CodeMirror-linenumber {
color: #898989;
}

View File

@@ -0,0 +1,45 @@
.cm-s-johnny {
font-family: monospace;
background: #FFFFFF;
color: #010101;
}
.cm-s-johnny .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #FFFFFF;
z-index: 3;
border: none;
}
.cm-s-johnny div.CodeMirror-cursor {
border-left: 3px solid #010101;
}
.cm-s-johnny .CodeMirror-activeline-background {
background: #ECDE0021;
}
.cm-s-johnny .CodeMirror-selected {
background: #C8C8D3;
}
.cm-s-johnny .cm-comment {
color: #898989;
}
.cm-s-johnny .cm-keyword {
color: #016692;
}
.cm-s-johnny .cm-string {
color: #008D6B;
}
.cm-s-johnny .cm-number {
color: #7A7025;
}
.cm-s-johnny .cm-property {
color: #7A7025;
}
.cm-s-johnny .cm-atom {
color: #7A7025;
}
.cm-s-johnny .cm-operator {
color: #016692;
}
.cm-s-johnny .CodeMirror-linenumber {
color: #898989;
}

View File

@@ -0,0 +1,52 @@
.cm-s-juicy {
font-family: monospace;
background: #F1F1F1;
color: #000000;
}
.cm-s-juicy .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #F1F1F1;
z-index: 3;
border: none;
}
.cm-s-juicy div.CodeMirror-cursor {
border-left: 3px solid #000000;
}
.cm-s-juicy .CodeMirror-activeline-background {
background: #00000012;
}
.cm-s-juicy .CodeMirror-selected {
background: #A9C9FF;
}
.cm-s-juicy .cm-comment {
font-style: italic;
color: #999999;
}
.cm-s-juicy .cm-string {
color: #FF6600;
}
.cm-s-juicy .cm-number {
color: #CC0000;
}
.cm-s-juicy .cm-keyword {
color: #993300;
}
.cm-s-juicy .cm-variable {
color: #FF0000;
}
.cm-s-juicy .cm-variable-2 {
color: #FF0000;
}
.cm-s-juicy .cm-property {
color: #CC0000;
}
.cm-s-juicy .cm-atom {
color: #CC0000;
}
.cm-s-juicy .cm-operator {
color: #993300;
}
.cm-s-juicy .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,43 @@
.cm-s-krtheme {
font-family: monospace;
background: #0B0A09;
color: #FCFFE0;
}
.cm-s-krtheme .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0B0A09;
z-index: 3;
border: none;
}
.cm-s-krtheme div.CodeMirror-cursor {
border-left: 3px solid #FCFFE0;
}
.cm-s-krtheme .CodeMirror-activeline-background {
background: #38403D;
}
.cm-s-krtheme .CodeMirror-selected {
background: #AA00FF73;
}
.cm-s-krtheme .cm-keyword {
color: #949C8B;
}
.cm-s-krtheme .cm-comment {
font-style: italic;
color: #706D5B;
}
.cm-s-krtheme .cm-property {
color: #85873A;
}
.cm-s-krtheme .cm-atom {
color: #85873A;
}
.cm-s-krtheme .cm-number {
color: #85873A;
}
.cm-s-krtheme .cm-operator {
color: #949C8B;
}
.cm-s-krtheme .CodeMirror-linenumber {
color: italic;
}

View File

@@ -2,9 +2,6 @@
http://lesscss.org/ dark theme http://lesscss.org/ dark theme
Ported to CodeMirror by Peter Kroon Ported to CodeMirror by Peter Kroon
*/ */
.cm-s-lesser-dark {
line-height: 1.3em;
}
.cm-s-lesser-dark.CodeMirror { 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; } /* 33322B*/ .cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /* 33322B*/
.cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); }

View File

@@ -2,7 +2,6 @@
background-color: #000; background-color: #000;
color: #fff; color: #fff;
line-height: 1.2em; line-height: 1.2em;
font-size: 1em;
} }
.cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight { .cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight {
text-decoration: underline; text-decoration: underline;
@@ -19,7 +18,7 @@
text-decoration-color: #404040; text-decoration-color: #404040;
text-decoration-style: dotted; text-decoration-style: dotted;
} }
.cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; } .cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; }
.cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; } .cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; }
.cm-s-liquibyte .CodeMirror-guttermarker { } .cm-s-liquibyte .CodeMirror-guttermarker { }
.cm-s-liquibyte .CodeMirror-guttermarker-subtle { } .cm-s-liquibyte .CodeMirror-guttermarker-subtle { }

View File

@@ -0,0 +1,50 @@
.cm-s-lowlight {
font-family: monospace;
background: #1E1E1E;
color: #CACACA;
}
.cm-s-lowlight .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #1E1E1E;
z-index: 3;
border: none;
}
.cm-s-lowlight div.CodeMirror-cursor {
border-left: 3px solid #CACACA;
}
.cm-s-lowlight .CodeMirror-activeline-background {
background: #00000014;
}
.cm-s-lowlight .CodeMirror-selected {
background: #68729B29;
}
.cm-s-lowlight .cm-comment {
font-style: italic;
color: #3C5636;
background: #112B0A1A;
}
.cm-s-lowlight .cm-keyword {
color: #8F8D17;
}
.cm-s-lowlight .cm-string {
color: #A57C5C;
}
.cm-s-lowlight .cm-property {
color: #EDD34D;
}
.cm-s-lowlight .cm-variable-2 {
color: #BAA827;
}
.cm-s-lowlight .cm-atom {
color: #EDD34D;
}
.cm-s-lowlight .cm-number {
color: #EDD34D;
}
.cm-s-lowlight .cm-operator {
color: #8F8D17;
}
.cm-s-lowlight .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,47 @@
.cm-s-made-of-code {
font-family: monospace;
background: #090916;
color: #F8F8F8;
}
.cm-s-made-of-code .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #090916;
z-index: 3;
border: none;
}
.cm-s-made-of-code div.CodeMirror-cursor {
border-left: 3px solid #F8F8F8;
}
.cm-s-made-of-code .CodeMirror-activeline-background {
background: #00000000;
}
.cm-s-made-of-code .CodeMirror-selected {
background: #007DFF80;
}
.cm-s-made-of-code .cm-comment {
color: #54576B;
background: #00000000;
}
.cm-s-made-of-code .cm-keyword {
color: #FF3854;
}
.cm-s-made-of-code .cm-string {
color: #8FFF58;
background: #102622FA;
}
.cm-s-made-of-code .cm-property {
color: #F1D950;
}
.cm-s-made-of-code .cm-atom {
color: #F1D950;
}
.cm-s-made-of-code .cm-number {
color: #F1D950;
}
.cm-s-made-of-code .cm-operator {
color: #FF3854;
}
.cm-s-made-of-code .CodeMirror-linenumber {
color: #54576B;
}

View File

@@ -12,7 +12,7 @@
.cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; }
.cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; }
.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } .cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; color: #333; }
.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; } .cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; }
.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; } .cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; }

View File

@@ -12,8 +12,6 @@
color: #D1EDFF; color: #D1EDFF;
} }
.cm-s-midnight.CodeMirror { border-top: 1px solid black; border-bottom: 1px solid black; }
.cm-s-midnight div.CodeMirror-selected { background: #314D67; } .cm-s-midnight div.CodeMirror-selected { background: #314D67; }
.cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); }
.cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); }

View File

@@ -0,0 +1,49 @@
.cm-s-monoindustrial {
font-family: monospace;
background: #222C28;
color: #FFFFFF;
}
.cm-s-monoindustrial .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #222C28;
z-index: 3;
border: none;
}
.cm-s-monoindustrial div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-monoindustrial .CodeMirror-activeline-background {
background: #0C0D0C40;
}
.cm-s-monoindustrial .CodeMirror-selected {
background: #91999466;
}
.cm-s-monoindustrial .cm-comment {
color: #666C68;
background: #151C19;
}
.cm-s-monoindustrial .cm-number {
color: #588E60;
}
.cm-s-monoindustrial .cm-def {
color: #648BD2;
}
.cm-s-monoindustrial .cm-property {
color: #588E60;
}
.cm-s-monoindustrial .cm-variable-2 {
color: #A65EFF;
}
.cm-s-monoindustrial .cm-atom {
color: #588E60;
}
.cm-s-monoindustrial .cm-keyword {
color: null;
}
.cm-s-monoindustrial .cm-operator {
color: null;
}
.cm-s-monoindustrial .CodeMirror-linenumber {
color: #666C68;
}

View File

@@ -0,0 +1,55 @@
.cm-s-monokai-bright {
font-family: monospace;
background: #272822;
color: #F8F8F2;
}
.cm-s-monokai-bright .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #272822;
z-index: 3;
border: none;
}
.cm-s-monokai-bright div.CodeMirror-cursor {
border-left: 3px solid #F8F8F2;
}
.cm-s-monokai-bright .CodeMirror-activeline-background {
background: #3E3D32;
}
.cm-s-monokai-bright .CodeMirror-selected {
background: #9D550F;
}
.cm-s-monokai-bright .cm-comment {
color: #75715E;
}
.cm-s-monokai-bright .cm-string {
color: #E6DB74;
}
.cm-s-monokai-bright .cm-number {
color: #66D9EF;
}
.cm-s-monokai-bright .cm-atom {
color: #66D9EF;
}
.cm-s-monokai-bright .cm-keyword {
color: #F92672;
}
.cm-s-monokai-bright .cm-variable {
color: #A6E22E;
}
.cm-s-monokai-bright .cm-def {
font-style: italic;
color: #FD971F;
}
.cm-s-monokai-bright .cm-variable-2 {
color: #F92672;
}
.cm-s-monokai-bright .cm-property {
color: #66D9EF;
}
.cm-s-monokai-bright .cm-operator {
color: #F92672;
}
.cm-s-monokai-bright .CodeMirror-linenumber {
color: #75715E;
}

View File

@@ -0,0 +1,55 @@
.cm-s-monokai-fannonedition {
font-family: monospace;
background: #0A0A0A;
color: #F8F8F2;
}
.cm-s-monokai-fannonedition .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0A0A0A;
z-index: 3;
border: none;
}
.cm-s-monokai-fannonedition div.CodeMirror-cursor {
border-left: 3px solid #F8F8F2;
}
.cm-s-monokai-fannonedition .CodeMirror-activeline-background {
background: #2D2D2D;
}
.cm-s-monokai-fannonedition .CodeMirror-selected {
background: #2B2B2B;
}
.cm-s-monokai-fannonedition .cm-comment {
color: #999999;
}
.cm-s-monokai-fannonedition .cm-string {
color: #F3E87E;
}
.cm-s-monokai-fannonedition .cm-number {
color: #66D9EF;
}
.cm-s-monokai-fannonedition .cm-atom {
color: #66D9EF;
}
.cm-s-monokai-fannonedition .cm-keyword {
color: #EC7600;
}
.cm-s-monokai-fannonedition .cm-variable {
color: #A6E22E;
}
.cm-s-monokai-fannonedition .cm-def {
font-style: italic;
color: #FD971F;
}
.cm-s-monokai-fannonedition .cm-variable-2 {
color: #FE890C;
}
.cm-s-monokai-fannonedition .cm-property {
color: #66D9EF;
}
.cm-s-monokai-fannonedition .cm-operator {
color: #EC7600;
}
.cm-s-monokai-fannonedition .CodeMirror-linenumber {
color: #999999;
}

54
assets/css/theme/mreq.css Normal file
View File

@@ -0,0 +1,54 @@
.cm-s-mreq {
font-family: monospace;
background: #181818;
color: #c4c4c4;
}
.cm-s-mreq .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #181818;
z-index: 3;
border: none;
}
.cm-s-mreq div.CodeMirror-cursor {
border-left: 3px solid #c4c4c4;
}
.cm-s-mreq .CodeMirror-activeline-background {
background: #020202;
}
.cm-s-mreq .CodeMirror-selected {
background: #c4c4c4;
}
.cm-s-mreq .cm-comment {
color: #6a6a6a;
}
.cm-s-mreq .cm-string {
color: #C59C70;
}
.cm-s-mreq .cm-number {
color: #6facbe;
}
.cm-s-mreq .cm-atom {
color: #6facbe;
}
.cm-s-mreq .cm-keyword {
color: #ca7473;
}
.cm-s-mreq .cm-variable {
color: #ca7473;
}
.cm-s-mreq .cm-def {
color: #c59c70;
}
.cm-s-mreq .cm-variable-2 {
color: #ca7473;
}
.cm-s-mreq .cm-property {
color: #6facbe;
}
.cm-s-mreq .cm-operator {
color: #ca7473;
}
.cm-s-mreq .CodeMirror-linenumber {
color: #6a6a6a;
}

View File

@@ -5,7 +5,6 @@
.cm-s-neo.CodeMirror { .cm-s-neo.CodeMirror {
background-color:#ffffff; background-color:#ffffff;
color:#2e383c; color:#2e383c;
line-height:1.4375;
} }
.cm-s-neo .cm-comment { color:#75787b; } .cm-s-neo .cm-comment { color:#75787b; }
.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; }

View File

@@ -0,0 +1,49 @@
.cm-s-nightlion {
font-family: monospace;
color: #9e9e9e;
background: #1a1a1a;
}
.cm-s-nightlion .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #1a1a1a;
z-index: 3;
border: none;
}
.cm-s-nightlion div.CodeMirror-cursor {
border-left: 3px solid #9e9e9e;
}
.cm-s-nightlion .CodeMirror-activeline-background {
background: #ffffff08;
}
.cm-s-nightlion .CodeMirror-selected {
background: #ddf0ff33;
}
.cm-s-nightlion .cm-keyword {
color: #74b6e9ff;
}
.cm-s-nightlion .cm-string {
color: #e0db5dff;
}
.cm-s-nightlion .cm-property {
color: #76b6edff;
}
.cm-s-nightlion .cm-comment {
font-style: italic;
color: #0080ffff;
}
.cm-s-nightlion .cm-def {
color: #ffcc66ff;
}
.cm-s-nightlion .cm-atom {
color: #76b6edff;
}
.cm-s-nightlion .cm-number {
color: #76b6edff;
}
.cm-s-nightlion .cm-operator {
color: #74b6e9ff;
}
.cm-s-nightlion .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,55 @@
.cm-s-oceanic {
font-family: monospace;
background: #1B2630;
color: #F8F8F2;
}
.cm-s-oceanic .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #1B2630;
z-index: 3;
border: none;
}
.cm-s-oceanic div.CodeMirror-cursor {
border-left: 3px solid #F8F8F2;
}
.cm-s-oceanic .CodeMirror-activeline-background {
background: #3D2E2E77;
}
.cm-s-oceanic .CodeMirror-selected {
background: #95A3A63D;
}
.cm-s-oceanic .cm-comment {
color: #6D6D6D;
}
.cm-s-oceanic .cm-string {
color: #8AD6F2;
}
.cm-s-oceanic .cm-number {
color: #FFB266;
}
.cm-s-oceanic .cm-atom {
color: #FFB266;
}
.cm-s-oceanic .cm-keyword {
color: #E47D80;
}
.cm-s-oceanic .cm-variable {
color: #F2AAEC;
}
.cm-s-oceanic .cm-def {
font-style: italic;
color: #FFD2A6;
}
.cm-s-oceanic .cm-variable-2 {
color: #BAE682;
}
.cm-s-oceanic .cm-property {
color: #FFB266;
}
.cm-s-oceanic .cm-operator {
color: #E47D80;
}
.cm-s-oceanic .CodeMirror-linenumber {
color: #6D6D6D;
}

View File

@@ -6,7 +6,6 @@
.cm-s-panda-syntax { .cm-s-panda-syntax {
background: #292A2B; background: #292A2B;
color: #E6E6E6; color: #E6E6E6;
line-height: 1.5;
font-family: 'Operator Mono', 'Source Sans Pro', Menlo, Monaco, Consolas, Courier New, monospace; font-family: 'Operator Mono', 'Source Sans Pro', Menlo, Monaco, Consolas, Courier New, monospace;
} }
.cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; } .cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; }

View File

@@ -1,38 +0,0 @@
/*
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; }
.cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; }
.cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; }
.cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db; border-right: 0px; }
.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }
.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }
.cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; }
.cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; }
.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; }
.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }

View File

@@ -10,7 +10,6 @@
.cm-s-pastel-on-dark.CodeMirror { .cm-s-pastel-on-dark.CodeMirror {
background: #2c2827; background: #2c2827;
color: #8F938F; color: #8F938F;
line-height: 1.5;
} }
.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); }
.cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); }

View File

@@ -0,0 +1,46 @@
.cm-s-plasticcodewrap {
font-family: monospace;
background: #00161B;
color: #F8F8F8;
}
.cm-s-plasticcodewrap .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #00161B;
z-index: 3;
border: none;
}
.cm-s-plasticcodewrap div.CodeMirror-cursor {
border-left: 3px solid #F8F8F8;
}
.cm-s-plasticcodewrap .CodeMirror-activeline-background {
background: #FFFFFF0D;
}
.cm-s-plasticcodewrap .CodeMirror-selected {
background: #C5DFE980;
}
.cm-s-plasticcodewrap .cm-comment {
font-style: italic;
color: #1E9AE0;
}
.cm-s-plasticcodewrap .cm-keyword {
color: #FFAA00;
}
.cm-s-plasticcodewrap .cm-string {
color: #65BA3A;
}
.cm-s-plasticcodewrap .cm-property {
color: #FFB454;
}
.cm-s-plasticcodewrap .cm-atom {
color: #FFB454;
}
.cm-s-plasticcodewrap .cm-number {
color: #FFB454;
}
.cm-s-plasticcodewrap .cm-operator {
color: #FFAA00;
}
.cm-s-plasticcodewrap .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,55 @@
.cm-s-rails-envy {
font-family: monospace;
background: #121210;
color: #F8F8F2;
}
.cm-s-rails-envy .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #121210;
z-index: 3;
border: none;
}
.cm-s-rails-envy div.CodeMirror-cursor {
border-left: 3px solid #F8F8F2;
}
.cm-s-rails-envy .CodeMirror-activeline-background {
background: #3E3D32;
}
.cm-s-rails-envy .CodeMirror-selected {
background: #49483E;
}
.cm-s-rails-envy .cm-comment {
color: #75715E;
}
.cm-s-rails-envy .cm-string {
color: #FFFF66;
}
.cm-s-rails-envy .cm-number {
color: #66D9EF;
}
.cm-s-rails-envy .cm-atom {
color: #66D9EF;
}
.cm-s-rails-envy .cm-keyword {
color: #40A187;
}
.cm-s-rails-envy .cm-variable {
color: #A6E22E;
}
.cm-s-rails-envy .cm-def {
font-style: italic;
color: #FD971F;
}
.cm-s-rails-envy .cm-variable-2 {
color: #52F9F9;
}
.cm-s-rails-envy .cm-property {
color: #66D9EF;
}
.cm-s-rails-envy .cm-operator {
color: #40A187;
}
.cm-s-rails-envy .CodeMirror-linenumber {
color: #75715E;
}

View File

@@ -0,0 +1,54 @@
.cm-s-rdark {
font-family: monospace;
background: #1B2426;
color: #B9BDB6;
}
.cm-s-rdark .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #1B2426;
z-index: 3;
border: none;
}
.cm-s-rdark div.CodeMirror-cursor {
border-left: 3px solid #B9BDB6;
}
.cm-s-rdark .CodeMirror-activeline-background {
background: #00000070;
}
.cm-s-rdark .CodeMirror-selected {
background: #E0E8FF66;
}
.cm-s-rdark .cm-comment {
color: #646763;
}
.cm-s-rdark .cm-string {
color: #5CE638;
}
.cm-s-rdark .cm-number {
color: null;
}
.cm-s-rdark .cm-atom {
color: null;
}
.cm-s-rdark .cm-keyword {
color: #5BA1CF;
}
.cm-s-rdark .cm-variable {
color: #FFAA3E;
}
.cm-s-rdark .cm-def {
color: #FFFFFF;
}
.cm-s-rdark .cm-variable-2 {
color: #FFFFFF;
}
.cm-s-rdark .cm-property {
color: null;
}
.cm-s-rdark .cm-operator {
color: #5BA1CF;
}
.cm-s-rdark .CodeMirror-linenumber {
color: #646763;
}

View File

@@ -28,7 +28,6 @@ http://ethanschoonover.com/solarized/img/solarized-palette.png
/* Color scheme for code-mirror */ /* Color scheme for code-mirror */
.cm-s-solarized { .cm-s-solarized {
line-height: 1.45em;
color-profile: sRGB; color-profile: sRGB;
rendering-intent: auto; rendering-intent: auto;
} }

View File

@@ -0,0 +1,46 @@
.cm-s-spectacular {
font-family: monospace;
background: #0B0A0A;
color: #F3F3F3;
}
.cm-s-spectacular .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0B0A0A;
z-index: 3;
border: none;
}
.cm-s-spectacular div.CodeMirror-cursor {
border-left: 3px solid #F3F3F3;
}
.cm-s-spectacular .CodeMirror-activeline-background {
background: #F8F8F8;
}
.cm-s-spectacular .CodeMirror-selected {
background: #FFFFFF59;
}
.cm-s-spectacular .cm-comment {
font-style: italic;
color: #60606D;
}
.cm-s-spectacular .cm-keyword {
color: #FFAA00;
}
.cm-s-spectacular .cm-string {
color: #A9E448;
}
.cm-s-spectacular .cm-property {
color: #FFB454;
}
.cm-s-spectacular .cm-atom {
color: #FFB454;
}
.cm-s-spectacular .cm-number {
color: #FFB454;
}
.cm-s-spectacular .cm-operator {
color: #FFAA00;
}
.cm-s-spectacular .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,46 @@
.cm-s-sunburst {
font-family: monospace;
background: #000000;
color: #F8F8F8;
}
.cm-s-sunburst .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #000000;
z-index: 3;
border: none;
}
.cm-s-sunburst div.CodeMirror-cursor {
border-left: 3px solid #F8F8F8;
}
.cm-s-sunburst .CodeMirror-activeline-background {
background: #FFFFFF1A;
}
.cm-s-sunburst .CodeMirror-selected {
background: #DDF0FF33;
}
.cm-s-sunburst .cm-comment {
font-style: italic;
color: #AEAEAE;
}
.cm-s-sunburst .cm-keyword {
color: #E28964;
}
.cm-s-sunburst .cm-string {
color: #65B042;
}
.cm-s-sunburst .cm-property {
color: #DAD085;
}
.cm-s-sunburst .cm-atom {
color: #DAD085;
}
.cm-s-sunburst .cm-number {
color: #DAD085;
}
.cm-s-sunburst .cm-operator {
color: #E28964;
}
.cm-s-sunburst .CodeMirror-linenumber {
color: italic;
}

View File

@@ -0,0 +1,55 @@
.cm-s-text-ex-machina {
font-family: monospace;
background: #151515;
color: #E6E6E6;
}
.cm-s-text-ex-machina .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #151515;
z-index: 3;
border: none;
}
.cm-s-text-ex-machina div.CodeMirror-cursor {
border-left: 3px solid #E6E6E6;
}
.cm-s-text-ex-machina .CodeMirror-activeline-background {
background: #3E3D32;
}
.cm-s-text-ex-machina .CodeMirror-selected {
background: #666666;
}
.cm-s-text-ex-machina .cm-comment {
color: #333333;
}
.cm-s-text-ex-machina .cm-string {
color: #66CCFF;
}
.cm-s-text-ex-machina .cm-number {
color: #80FF0080;
}
.cm-s-text-ex-machina .cm-atom {
color: #80FF0080;
}
.cm-s-text-ex-machina .cm-keyword {
color: #777CB2;
}
.cm-s-text-ex-machina .cm-variable {
color: #CCFF66;
}
.cm-s-text-ex-machina .cm-def {
font-style: italic;
color: #CCFF6680;
}
.cm-s-text-ex-machina .cm-variable-2 {
color: #323464;
}
.cm-s-text-ex-machina .cm-property {
color: #80FF0080;
}
.cm-s-text-ex-machina .cm-operator {
color: #777CB2;
}
.cm-s-text-ex-machina .CodeMirror-linenumber {
color: #333333;
}

View File

@@ -0,0 +1,42 @@
.cm-s-tomorrow-night-blue {
font-family: monospace;
background: #002451;
color: #FFFFFF;
}
.cm-s-tomorrow-night-blue .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #002451;
z-index: 3;
border: none;
}
.cm-s-tomorrow-night-blue div.CodeMirror-cursor {
border-left: 3px solid #FFFFFF;
}
.cm-s-tomorrow-night-blue .CodeMirror-activeline-background {
background: #00346E;
}
.cm-s-tomorrow-night-blue .CodeMirror-selected {
background: #003F8E;
}
.cm-s-tomorrow-night-blue .cm-comment {
color: #7285B7;
}
.cm-s-tomorrow-night-blue .cm-property {
color: null;
}
.cm-s-tomorrow-night-blue .cm-atom {
color: null;
}
.cm-s-tomorrow-night-blue .cm-number {
color: null;
}
.cm-s-tomorrow-night-blue .cm-keyword {
color: null;
}
.cm-s-tomorrow-night-blue .cm-operator {
color: null;
}
.cm-s-tomorrow-night-blue .CodeMirror-linenumber {
color: #7285B7;
}

View File

@@ -0,0 +1,53 @@
.cm-s-venom {
font-family: monospace;
background: #0D0D0D;
color: #BFBFBF;
}
.cm-s-venom .CodeMirror-gutters {
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 0 2px 0 rgba(0, 0, 0, 0.5);
background-color: #0D0D0D;
z-index: 3;
border: none;
}
.cm-s-venom div.CodeMirror-cursor {
border-left: 3px solid #BFBFBF;
}
.cm-s-venom .CodeMirror-activeline-background {
background: #191919;
}
.cm-s-venom .CodeMirror-selected {
background: #000000;
}
.cm-s-venom .cm-string {
font-style: italic;
color: #2E8C3C;
}
.cm-s-venom .cm-comment {
font-style: italic;
color: #3D5473;
}
.cm-s-venom .cm-number {
color: #404251;
}
.cm-s-venom .cm-atom {
color: #404251;
}
.cm-s-venom .cm-keyword {
color: #6986BF;
}
.cm-s-venom .cm-variable {
color: #6248A8;
}
.cm-s-venom .cm-def {
color: #A7575C;
}
.cm-s-venom .cm-property {
color: #404251;
}
.cm-s-venom .cm-operator {
color: #6986BF;
}
.cm-s-venom .CodeMirror-linenumber {
color: italic;
}

View File

@@ -1,44 +0,0 @@
/*
Name: yeti
Author: Michael Kaminsky (http://github.com/mkaminsky11)
Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax)
*/
.cm-s-yeti.CodeMirror {
background-color: #ECEAE8 !important;
color: #d1c9c0 !important;
border: none;
}
.cm-s-yeti .CodeMirror-gutters {
color: #adaba6;
background-color: #E5E1DB;
border: none;
}
.cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; }
.cm-s-yeti .CodeMirror-linenumber { color: #adaba6; }
.cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background: #DCD8D2; }
.cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { background: #DCD8D2; }
.cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { background: #DCD8D2; }
.cm-s-yeti span.cm-comment { color: #d4c8be; }
.cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; }
.cm-s-yeti span.cm-number { color: #a074c4; }
.cm-s-yeti span.cm-variable { color: #55b5db; }
.cm-s-yeti span.cm-variable-2 { color: #a074c4; }
.cm-s-yeti span.cm-def { color: #55b5db; }
.cm-s-yeti span.cm-operator { color: #9fb96e; }
.cm-s-yeti span.cm-keyword { color: #9fb96e; }
.cm-s-yeti span.cm-atom { color: #a074c4; }
.cm-s-yeti span.cm-meta { color: #96c0d8; }
.cm-s-yeti span.cm-tag { color: #96c0d8; }
.cm-s-yeti span.cm-attribute { color: #9fb96e; }
.cm-s-yeti span.cm-qualifier { color: #96c0d8; }
.cm-s-yeti span.cm-property { color: #a074c4; }
.cm-s-yeti span.cm-builtin { color: #a074c4; }
.cm-s-yeti span.cm-variable-3 { color: #96c0d8; }
.cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; }
.cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 B

View File

@@ -0,0 +1,21 @@
MIT License for https://github.com/tabler/tabler-icons
Copyright (c) 2020 Paweł Kuna
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.

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-triangle" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<path d="M12 9v2m0 4v.01" />
<path d="M5.07 19H19a2 2 0 0 0 1.75 -2.75L13.75 4a2 2 0 0 0 -3.5 0L3.25 16.25a2 2 0 0 0 1.75 2.75" />
</svg>

After

Width:  |  Height:  |  Size: 426 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-browser" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="4" y="4" width="16" height="16" rx="1" />
<line x1="4" y1="8" x2="20" y2="8" />
<line x1="8" y1="4" x2="8" y2="8" />
</svg>

After

Width:  |  Height:  |  Size: 418 B

View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-bug" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<path d="M9 9v-1a3 3 0 0 1 6 0v1" />
<path d="M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3" />
<line x1="3" y1="13" x2="7" y2="13" />
<line x1="17" y1="13" x2="21" y2="13" />
<line x1="12" y1="20" x2="12" y2="14" />
<line x1="4" y1="19" x2="7.35" y2="17" />
<line x1="20" y1="19" x2="16.65" y2="17" />
<line x1="4" y1="7" x2="7.75" y2="9.4" />
<line x1="20" y1="7" x2="16.25" y2="9.4" />
</svg>

After

Width:  |  Height:  |  Size: 712 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-database" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<ellipse cx="12" cy="6" rx="8" ry="3"></ellipse>
<path d="M4 6v6a8 3 0 0 0 16 0v-6" />
<path d="M4 12v6a8 3 0 0 0 16 0v-6" />
</svg>

After

Width:  |  Height:  |  Size: 419 B

View File

@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-git-compare" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<circle cx="6" cy="6" r="2" />
<circle cx="18" cy="18" r="2" />
<path d="M11 6h5a2 2 0 0 1 2 2v8" />
<polyline points="14 9 11 6 14 3" />
<path d="M13 18h-5a2 2 0 0 1 -2 -2v-8" />
<polyline points="10 15 13 18 10 21" />
</svg>

After

Width:  |  Height:  |  Size: 528 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-info-circle" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<circle cx="12" cy="12" r="9" />
<line x1="12" y1="8" x2="12.01" y2="8" />
<polyline points="11 12 12 12 12 16 13 16" />
</svg>

After

Width:  |  Height:  |  Size: 417 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-layout-columns" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="4" y="4" width="16" height="16" rx="2" />
<line x1="12" y1="4" x2="12" y2="20" />
</svg>

After

Width:  |  Height:  |  Size: 386 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-layout-list" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="4" y="4" width="16" height="6" rx="2" />
<rect x="4" y="14" width="16" height="6" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 393 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-lock-open" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="5" y="11" width="14" height="10" rx="2" />
<circle cx="12" cy="16" r="1" />
<path d="M8 11v-5a4 4 0 0 1 8 0" />
</svg>

After

Width:  |  Height:  |  Size: 415 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-lock" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="5" y="11" width="14" height="10" rx="2" />
<circle cx="12" cy="16" r="1" />
<path d="M8 11v-4a4 4 0 0 1 8 0v4" />
</svg>

After

Width:  |  Height:  |  Size: 412 B

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plug" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<path d="M7 7h10v6a3 3 0 0 1 -3 3h-4a3 3 0 0 1 -3 -3v-6" />
<line x1="9" y1="3" x2="9" y2="7" />
<line x1="15" y1="3" x2="15" y2="7" />
<path d="M12 16v2a2 2 0 0 0 2 2h3" />
</svg>

After

Width:  |  Height:  |  Size: 467 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plus" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<line x1="12" y1="5" x2="12" y2="19" />
<line x1="5" y1="12" x2="19" y2="12" />
</svg>

After

Width:  |  Height:  |  Size: 365 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-rotate-clockwise" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<path d="M4.05 11a8 8 0 1 1 .5 4m-.5 5v-5h5" />
</svg>

After

Width:  |  Height:  |  Size: 341 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-square" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<rect x="4" y="4" width="16" height="16" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 334 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-terminal-2" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<path d="M8 9l3 3l-3 3" />
<line x1="13" y1="15" x2="16" y2="15" />
<rect x="3" y="4" width="18" height="16" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 414 B

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z"/>
<line x1="18" y1="6" x2="6" y2="18" />
<line x1="6" y1="6" x2="18" y2="18" />
</svg>

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

File diff suppressed because it is too large Load Diff

View File

@@ -21,6 +21,7 @@ var mode =
: fileExt == "java" ? "text/x-java" : fileExt == "java" ? "text/x-java"
: fileExt == "jl" ? "text/x-julia" : fileExt == "jl" ? "text/x-julia"
: fileExt == "c" ? "text/x-csrc" : fileExt == "c" ? "text/x-csrc"
: fileExt == "h" ? "text/x-csrc"
: fileExt == "cpp" ? "text/x-c++src" : fileExt == "cpp" ? "text/x-c++src"
: fileExt == "ino" ? "text/x-c++src" : fileExt == "ino" ? "text/x-c++src"
: fileExt == "cs" ? "text/x-csharp" : fileExt == "cs" ? "text/x-csharp"

View File

@@ -14,13 +14,13 @@ class Backup
} }
public function makeBackup($fileLoc, $fileName, $contents) { public function makeBackup($fileLoc, $fileName, $contents) {
global $ftpSite, $t, $ICEcoder; global $t, $ICEcoder;
$backupDirFormat = "Y-m-d"; $backupDirFormat = "Y-m-d";
// Establish the base, host and date dir parts... // Establish the base, host and date dir parts...
$backupDirBase = str_replace("\\", "/", dirname(__FILE__)) . "/../data/backups/"; $backupDirBase = str_replace("\\", "/", dirname(__FILE__)) . "/../data/backups/";
$backupDirHost = isset($ftpSite) ? parse_url($ftpSite, PHP_URL_HOST) : "localhost"; $backupDirHost = "localhost";
$backupDirDate = date($backupDirFormat); $backupDirDate = date($backupDirFormat);
// Establish an array of dirs from base to our file location // Establish an array of dirs from base to our file location

View File

@@ -1,188 +0,0 @@
<?php declare(strict_types=1);
namespace ICEcoder;
use ICEcoder\System;
class FTP
{
private $systemClass;
public function __construct()
{
$this->systemClass = new System();
}
public function writeFile() {
global $fileLoc, $fileName, $ftpConn, $ftpRoot, $ftpHost, $ftpMode, $ICEcoder, $doNext, $filemtime, $tabNum;
$ftpFilepath = ltrim($fileLoc . "/" . $fileName, "/");
if (isset($_POST['changes'])) {
// Get existing file contents as lines
$loadedFile = toUTF8noBOM($this->ftpGetContents($ftpConn, $ftpRoot . $fileLoc . "/" . $fileName, $ftpMode), false);
$fileLines = explode("\n", str_replace("\r", "", $loadedFile));
// Need to add a new line at the end of each because explode will lose them,
// want want to end up with same array that 'file($file)' produces for a local file
// - it keeps the line endings at the end of each array item
for ($i = 0; $i < count($fileLines); $i++) {
if ($i < count($fileLines) - 1) {
$fileLines[$i] .= $ICEcoder["lineEnding"];
}
}
// Stitch changes onto it
$contents = $this->systemClass->stitchChanges($fileLines, $_POST['changes']);
// get old file contents and count stats on usage \n and \r there
// in this case we can keep line endings, which file had before, without
// making code version control systems going crazy about line endings change in whole file.
$unixNewLines = preg_match_all('/[^\r][\n]/u', $loadedFile);
$windowsNewLines = preg_match_all('/[\r][\n]/u', $loadedFile);
} else {
$contents = $_POST['contents'];
}
// replace \r\n (Windows), \r (old Mac) and \n (Linux) line endings with whatever we chose to be lineEnding
$contents = str_replace("\r\n", $ICEcoder["lineEnding"], $contents);
$contents = str_replace("\r", $ICEcoder["lineEnding"], $contents);
$contents = str_replace("\n", $ICEcoder["lineEnding"], $contents);
if (isset($_POST['changes']) && ($unixNewLines > 0) || ($windowsNewLines > 0)) {
if ($unixNewLines > $windowsNewLines){
$contents = str_replace($ICEcoder["lineEnding"], "\n", $contents);
} elseif ($windowsNewLines > $unixNewLines){
$contents = str_replace($ICEcoder["lineEnding"], "\r\n", $contents);
}
}
// Write our file contents
if (!$this->ftpWriteFile($ftpConn, $ftpFilepath, $contents, $ftpMode)) {
$doNext .= 'ICEcoder.message("Sorry, could not write ' . $ftpFilepath . ' at ' . $ftpHost . '");';
} else {
$doNext .= 'ICEcoder.openFileMDTs[' . ($tabNum - 1) .']="' . $filemtime . '";';
$doNext .= '(function() {var x = ICEcoder.openFileVersions; var y = ' . ($tabNum - 1) .'; x[y] = "undefined" != typeof x[y] ? x[y] + 1 : 1})(); ICEcoder.updateVersionsDisplay();';
}
}
// Start a FTP connection
function ftpStart()
{
global $ftpConn, $ftpLogin, $ftpHost, $ftpUser, $ftpPass, $ftpPasv;
// Establish connection, login and maybe use pasv
$ftpConn = ftp_connect($ftpHost);
$ftpLogin = ftp_login($ftpConn, $ftpUser, $ftpPass);
if ($ftpPasv) {
ftp_pasv($ftpConn, true);
}
}
// End a FTP connection
function ftpEnd()
{
global $ftpConn;
ftp_close($ftpConn);
}
// Get dir/file lists (simple and detailed) from FTP detailed rawlist response
function ftpGetList($ftpConn, $directory = '.')
{
$simpleList = $detailedList = array();
// If we have a FTP rawlist to work with
if (is_array($rows = @ftp_rawlist($ftpConn, $directory))) {
foreach ($rows as $row) {
// Split row up by spaces and set keys on $item array
$chunks = preg_split("/\s+/", $row);
list($item['rights'], $item['number'], $item['user'], $item['group'], $item['size'], $item['month'], $item['day'], $item['time']) = $chunks;
// Also set if this is a dir or file
$item['type'] = $chunks[0][0] === 'd' ? 'directory' : 'file';
// Splice the array and finally work out $simpleList and $detailedList
array_splice($chunks, 0, 8);
$detailedList[implode(" ", $chunks)] = $item;
$simpleList[] = implode(" ", $chunks);
}
// Return simple array list and detailed items list also
return array('simpleList' => $simpleList, 'detailedList' => $detailedList);
}
return false;
}
// Get detailed info on a file from returned info from ftpGetList
function ftpGetFileInfo($ftpConn, $directory = '.', $fileName)
{
// Get both sets of arrays back and get our detailed list
$ftpListArrays = $this->ftpGetList($ftpConn, $directory);
$detailedList = $ftpListArrays['detailedList'];
// Now get the file info for our file
$fileInfo = $detailedList[$fileName];
// Return the info
return $fileInfo;
}
// Get contents over FTP
function ftpGetContents($ftpConn, $filepath, $ftpMode)
{
// Create temp handler, this type needed for extended char set
$tempHandle = fopen('php://temp', 'r+');
// Get file from FTP assuming that it exists
ftp_fget($ftpConn, $tempHandle, $filepath, $ftpMode, 0);
// Return our content
return stream_get_contents($tempHandle, -1, 0);
}
// Write file contents over FTP
function ftpWriteFile($ftpConn, $filepath, $contents, $ftpMode)
{
// Create temp handler, this type needed for extended char set
$tempHandle = fopen('php://temp', 'r+');
// Write contents to handle and rewind head
fwrite($tempHandle, $contents);
rewind($tempHandle);
// Write our content and return true/false
return ftp_fput($ftpConn, $filepath, $tempHandle, $ftpMode, 0);
}
// Make a new dir over FTP
function ftpMkDir($ftpConn, $perms, $dir)
{
// Create the new dir
if (!ftp_mkdir($ftpConn, $dir)) {
return false;
} else {
// Also then set perms (we must be able to do that if we created dir, so can always return true)
$this->ftpPerms($ftpConn, $perms, $dir);
return true;
}
}
// Rename a dir/dile over FTP
function ftpRename($ftpConn, $oldPath, $newPath)
{
// Return success status of rename
return ftp_rename($ftpConn, $oldPath, $newPath);
}
// Change dir/file perms over FTP
function ftpPerms($ftpConn, $perms, $filePath)
{
// Return success status of perms change
return ftp_chmod($ftpConn, $perms, $filePath);
}
// Delete dir/file over FTP
function ftpDelete($ftpConn, $type, $path)
{
if ($type == "file") {
// Delete our file and return true/false
return ftp_delete($ftpConn, $path);
} else {
// Delete our dir and return true/false
return ftp_rmdir($ftpConn, $path);
}
}
}

View File

@@ -4,26 +4,24 @@ namespace ICEcoder;
use RecursiveDirectoryIterator; use RecursiveDirectoryIterator;
use RecursiveIteratorIterator; use RecursiveIteratorIterator;
use ICEcoder\FTP;
use ICEcoder\System; use ICEcoder\System;
use scssc; use scssc;
use lessc; use lessc;
class File class File
{ {
private $ftpClass;
private $systemClass; private $systemClass;
public function __construct() public function __construct()
{ {
$this->ftpClass = new FTP();
$this->systemClass = new System(); $this->systemClass = new System();
} }
public function check() { public function check() {
global $file, $fileOrig, $docRoot, $iceRoot, $fileLoc, $fileName, $error, $errorStr, $errorMsg; global $file, $fileOrig, $docRoot, $iceRoot, $fileLoc, $fileName, $error, $errorStr, $errorMsg;
// Replace pipes with slashes, then establish the actual name as we may have HTML entities in filename // Replace pipes with slashes, then establish the actual name as we may have HTML entities in filename
$file = html_entity_decode(str_replace("|", "/", $file)); // Infact we may have &amplt; which when decoded is &lt; and decoded again is original < so decoding twice is needed
$file = html_entity_decode(html_entity_decode(str_replace("|", "/", $file)));
// Put the original $file var aside for use // Put the original $file var aside for use
$fileOrig = $file; $fileOrig = $file;
@@ -67,7 +65,7 @@ class File
// On the banned file/dir list // On the banned file/dir list
($bannedFileFound) || ($bannedFileFound) ||
// A local folder that isn't the doc root or starts with the doc root // A local folder that isn't the doc root or starts with the doc root
("getRemoteFile" !== $_GET['action'] && !isset($ftpSite) && ("getRemoteFile" !== $_GET['action'] &&
rtrim($allFiles[$i], "/") !== rtrim($docRoot, "/") && rtrim($allFiles[$i], "/") !== rtrim($docRoot, "/") &&
true === realpath(rtrim(dirname($allFiles[$i]), "/")) && true === realpath(rtrim(dirname($allFiles[$i]), "/")) &&
0 !== strpos(realpath(rtrim(dirname($allFiles[$i]), "/")), realpath(rtrim($docRoot, "/"))) 0 !== strpos(realpath(rtrim(dirname($allFiles[$i]), "/")), realpath(rtrim($docRoot, "/")))
@@ -111,9 +109,9 @@ class File
} }
public function load() { public function load() {
global $file, $fileLoc, $fileName, $t, $ftpConn, $ftpHost, $ftpLogin, $ftpRoot, $ftpUser, $ftpMode; global $file, $fileLoc, $fileName, $t, $lineNumber;
echo 'action="load";'; echo 'action="load";';
$lineNumber = max(isset($_REQUEST['lineNumber']) ? intval($_REQUEST['lineNumber']) : 1, 1); $lineNumber = max(isset($_GET['lineNumber']) ? intval($_GET['lineNumber']) : 1, 1);
// Check this file isn't on the banned list at all // Check this file isn't on the banned list at all
$canOpen = true; $canOpen = true;
for ($i = 0; $i < count($_SESSION['bannedFiles']); $i++) { for ($i = 0; $i < count($_SESSION['bannedFiles']); $i++) {
@@ -124,10 +122,10 @@ class File
if (false === $canOpen) { if (false === $canOpen) {
echo 'fileType="nothing"; parent.parent.ICEcoder.message(\'' . $t['Sorry, could not...'] . ' ' . $fileLoc . "/" . $fileName . '\');'; echo 'fileType="nothing"; parent.parent.ICEcoder.message(\'' . $t['Sorry, could not...'] . ' ' . $fileLoc . "/" . $fileName . '\');';
} elseif (isset($ftpSite) || file_exists($file)) { } elseif (file_exists($file)) {
$finfo = "text"; $finfo = "text";
// Determine what to do based on mime type // Determine what to do based on mime type
if (!isset($ftpSite) && function_exists('finfo_open')) { if (function_exists('finfo_open')) {
$finfoMIME = finfo_open(FILEINFO_MIME); $finfoMIME = finfo_open(FILEINFO_MIME);
$finfo = finfo_file($finfoMIME, $file); $finfo = finfo_file($finfoMIME, $file);
finfo_close($finfoMIME); finfo_close($finfoMIME);
@@ -144,20 +142,9 @@ class File
if (0 === strpos($finfo, "text") || 0 === strpos($finfo, "application/json") || 0 === strpos($finfo, "application/xml") || false !== strpos($finfo, "empty")) { if (0 === strpos($finfo, "text") || 0 === strpos($finfo, "application/json") || 0 === strpos($finfo, "application/xml") || false !== strpos($finfo, "empty")) {
echo 'fileType="text";'; echo 'fileType="text";';
// Get file over FTP? // Get data from file
if (isset($ftpSite)) { $loadedFile = toUTF8noBOM(getData($file), true);
$this->ftpClass->ftpStart();
// Show user warning if no good connection
if (!$ftpConn || !$ftpLogin) {
die('parent.parent.ICEcoder.message("Sorry, no FTP connection to ' . $ftpHost . ' for user ' . $ftpUser . '");parent.parent.ICEcoder.serverMessage();parent.parent.ICEcoder.serverQueue("del");</script>');
}
// Get our file contents and close the FTP connection
$loadedFile = toUTF8noBOM($this->ftpClass->ftpGetContents($ftpConn, $ftpRoot . $fileLoc . "/" . $fileName, $ftpMode), false);
$this->ftpClass->ftpEnd();
// Get local file
} else {
$loadedFile = toUTF8noBOM(getData($file), true);
}
$encoding = ini_get("default_charset"); $encoding = ini_get("default_charset");
if ("" == $encoding) { if ("" == $encoding) {
$encoding = "UTF-8"; $encoding = "UTF-8";
@@ -186,7 +173,7 @@ class File
$script = 'if ("text" === fileType) {'; $script = 'if ("text" === fileType) {';
if (isset($ftpSite) || file_exists($file)) { if (file_exists($file)) {
$script .= ' $script .= '
setTimeout(function() { setTimeout(function() {
if (!parent.parent.ICEcoder.content.contentWindow.createNewCMInstance) { if (!parent.parent.ICEcoder.content.contentWindow.createNewCMInstance) {
@@ -246,8 +233,8 @@ class File
if ("image" === fileType) { if ("image" === fileType) {
parent.parent.document.getElementById(\'blackMask\').style.visibility = "visible"; parent.parent.document.getElementById(\'blackMask\').style.visibility = "visible";
parent.parent.document.getElementById(\'mediaContainer\').innerHTML = parent.parent.document.getElementById(\'mediaContainer\').innerHTML =
"<canvas id=\"canvasPicker\" width=\"1\" height=\"1\" style=\"position: absolute; margin: 10px 0 0 10px; cursor: crosshair\" onmouseover=\"parent.parent.ICEcoder.overPopup=true\" onmouseout=\"parent.parent.ICEcoder.overPopup=false\"></canvas>" + "<canvas id=\"canvasPicker\" width=\"1\" height=\"1\" style=\"position: absolute; margin: 10px 0 0 10px; cursor: crosshair\"></canvas>" +
"<img src=\"' . ((isset($ftpSite) ? $ftpSite : "") . $fileLoc . "/" . $fileName . "?unique=" . microtime(true)) .'\" style=\"border: solid 10px #fff; max-width: 700px; max-height: 500px; background-color: #000; background-image: url(\'assets/images/checkerboard.png\')\" onLoad=\"reducedImgMsg = (this.naturalWidth > 700 || this.naturalHeight > 500) ? \', ' .$t['displayed at'] . '\' + this.width + \' x \' + this.height : \'\'; document.getElementById(\'imgInfo\').innerHTML += \' (\' + this.naturalWidth + \' x \' + this.naturalHeight + reducedImgMsg + \')\'; ICEcoder.initCanvasImage(this); ICEcoder.interactCanvasImage(this)\"><br>" + "<img src=\"' . $fileLoc . "/" . $fileName . "?unique=" . microtime(true) .'\" class=\"imgDisplay\" onLoad=\"reducedImgMsg = (this.naturalWidth > 700 || this.naturalHeight > 500) ? \', ' .$t['displayed at'] . '\' + this.width + \' x \' + this.height : \'\'; document.getElementById(\'imgInfo\').innerHTML += \' (\' + this.naturalWidth + \' x \' + this.naturalHeight + reducedImgMsg + \')\'; ICEcoder.initCanvasImage(this); ICEcoder.interactCanvasImage(this)\"><br>" +
"<div style=\"display: inline-block; margin-top: -10px; border: solid 10px #fff; color: #000; background-color: #fff\" id=\"imgInfo\" onmouseover=\"parent.parent.ICEcoder.overPopup=true\" onmouseout=\"parent.parent.ICEcoder.overPopup=false\">" + "<div style=\"display: inline-block; margin-top: -10px; border: solid 10px #fff; color: #000; background-color: #fff\" id=\"imgInfo\" onmouseover=\"parent.parent.ICEcoder.overPopup=true\" onmouseout=\"parent.parent.ICEcoder.overPopup=false\">" +
"<b>' . $fileLoc . "/" . $fileName . '</b>" + "<b>' . $fileLoc . "/" . $fileName . '</b>" +
"</div><br>" + "</div><br>" +
@@ -273,7 +260,6 @@ class File
$fileName = $fileDetails['fileName']; $fileName = $fileDetails['fileName'];
$fileMDTURLPart = $fileDetails['fileMDTURLPart']; $fileMDTURLPart = $fileDetails['fileMDTURLPart'];
$fileVersionURLPart = $fileDetails['fileVersionURLPart']; $fileVersionURLPart = $fileDetails['fileVersionURLPart'];
$ftpSite = $fileDetails['ftpSite'];
$doNext = ' $doNext = '
ICEcoder.serverMessage(); ICEcoder.serverMessage();
@@ -300,7 +286,7 @@ class File
/* Saving under conditions: Confirmation of overwrite or there is no filename conflict, it is a new file, in either case we can save */ /* Saving under conditions: Confirmation of overwrite or there is no filename conflict, it is a new file, in either case we can save */
if (overwriteOK || noConflictSave) { if (overwriteOK || noConflictSave) {
newFileName = "' . (true === $ftpSite ? "" : $docRoot) . '" + newFileName; newFileName = "' . $docRoot . '" + newFileName;
saveURL = "lib/file-control.php?action=save' . $fileMDTURLPart . $fileVersionURLPart . '&csrf=' . $_GET["csrf"] . '"; saveURL = "lib/file-control.php?action=save' . $fileMDTURLPart . $fileVersionURLPart . '&csrf=' . $_GET["csrf"] . '";
var xhr = ICEcoder.xhrObj(); var xhr = ICEcoder.xhrObj();
@@ -386,7 +372,7 @@ class File
fclose($fh); fclose($fh);
if ($setPerms) { if ($setPerms) {
chmod($file, octdec($ICEcoder['newFilePerms'])); chmod($file, octdec((string) $ICEcoder['newFilePerms']));
} }
clearstatcache(); clearstatcache();
$filemtime = "Windows" !== $serverType ? filemtime($file) : "1000000"; $filemtime = "Windows" !== $serverType ? filemtime($file) : "1000000";
@@ -493,12 +479,12 @@ class File
if (is_dir($source)) { if (is_dir($source)) {
$fileOrFolder = "folder"; $fileOrFolder = "folder";
if (!is_dir($dest)) { if (!is_dir($dest)) {
mkdir($dest, octdec($ICEcoder['newDirPerms'])); mkdir($dest, octdec((string) $ICEcoder['newDirPerms']));
} else { } else {
for ($i = 2; $i < 1000000000; $i++) { for ($i = 2; $i < 1000000000; $i++) {
if (!is_dir($dest . " (" . $i . ")")) { if (!is_dir($dest . " (" . $i . ")")) {
$dest = $dest." (" . $i . ")"; $dest = $dest." (" . $i . ")";
mkdir($dest, octdec($ICEcoder['newDirPerms'])); mkdir($dest, octdec((string) $ICEcoder['newDirPerms']));
$i = 1000000000; $i = 1000000000;
} }
} }
@@ -508,9 +494,9 @@ class File
RecursiveIteratorIterator::SELF_FIRST) as $item RecursiveIteratorIterator::SELF_FIRST) as $item
) { ) {
if ($item->isDir()) { if ($item->isDir()) {
mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(), octdec($ICEcoder['newDirPerms'])); mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(), octdec((string) $ICEcoder['newDirPerms']));
} else { } else {
copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); copy($item->getPathName(), $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
} }
} }
} else { } else {
@@ -564,8 +550,8 @@ class File
$uploadDir = $docRoot . $iceRoot . str_replace("..", "", str_replace("|", "/", $_POST['folder'] . "/")); $uploadDir = $docRoot . $iceRoot . str_replace("..", "", str_replace("|", "/", $_POST['folder'] . "/"));
foreach($uploads as $current) { foreach($uploads as $current) {
$uploadedFile = $uploadDir . $current->name; $uploadedFile = $uploadDir . $current['name'];
$fileName = $current->name; $fileName = $current['name'];
// Get & set existing perms for existing files, or set to newFilePerms setting for new files // Get & set existing perms for existing files, or set to newFilePerms setting for new files
if (file_exists($uploadedFile)) { if (file_exists($uploadedFile)) {
$chmodInfo = substr(sprintf('%o', fileperms($uploadedFile)), -4); $chmodInfo = substr(sprintf('%o', fileperms($uploadedFile)), -4);
@@ -586,8 +572,8 @@ class File
} }
private function uploadThisFile($current, $uploadFile, $setPerms){ private function uploadThisFile($current, $uploadFile, $setPerms){
if (move_uploaded_file($current->tmp_name, $uploadFile)){ if (move_uploaded_file($current['tmp_name'], $uploadFile)){
chmod($uploadFile, octdec($setPerms)); chmod($uploadFile, octdec((string) $setPerms));
return true; return true;
} }
} }
@@ -596,10 +582,11 @@ class File
public function getUploadedDetails($fileArr) { public function getUploadedDetails($fileArr) {
$uploads = []; $uploads = [];
foreach($fileArr['name'] as $keyee => $info) { foreach($fileArr['name'] as $keyee => $info) {
$uploads[$keyee]->name = xssClean($fileArr['name'][$keyee], "html"); $uploads[$keyee] = [];
$uploads[$keyee]->type = $fileArr['type'][$keyee]; $uploads[$keyee]['name'] = xssClean($fileArr['name'][$keyee], "html");
$uploads[$keyee]->tmp_name = $fileArr['tmp_name'][$keyee]; $uploads[$keyee]['type'] = $fileArr['type'][$keyee];
$uploads[$keyee]->error = $fileArr['error'][$keyee]; $uploads[$keyee]['tmp_name'] = $fileArr['tmp_name'][$keyee];
$uploads[$keyee]['error'] = $fileArr['error'][$keyee];
} }
return $uploads; return $uploads;
} }
@@ -721,26 +708,13 @@ class File
} }
public function returnJSON() { public function returnJSON() {
global $ftpSite, $ftpConn, $fileLoc, $fileName, $ftpRoot, $file, $filemtime, $finalAction, $timeStart, $error, $errorStr, $errorMsg, $doNext; global $fileLoc, $fileName, $file, $filemtime, $finalAction, $timeStart, $error, $errorStr, $errorMsg, $doNext;
if (isset($ftpSite)) { $itemAbsPath = $file;
// Get info on dir/file now $itemPath = dirname($file);
$ftpFileDirInfo = $this->ftpClass->ftpGetFileInfo($ftpConn, ltrim($fileLoc, "/"), $fileName); $itemBytes = is_dir($file) || !file_exists($file) ? null : filesize($file);
// End the connection $itemType = (file_exists($file) ? (is_dir($file) ? "dir" : "file") : "unknown");
$this->ftpClass->ftpEnd(); $itemExists = (file_exists($file) ? "true" : "false");
// Then set info
$itemAbsPath = $ftpRoot . $fileLoc . '/' . $fileName;
$itemPath = dirname($ftpRoot.$fileLoc . '/' . $fileName);
$itemBytes = $ftpFileDirInfo['size'];
$itemType = (isset($ftpFileDirInfo['type']) ? ("directory" === $ftpFileDirInfo['type'] ? "dir" : "file") : "unknown");
$itemExists = (isset($ftpFileDirInfo['type']) ? "true" : "false");
} else {
$itemAbsPath = $file;
$itemPath = dirname($file);
$itemBytes = is_dir($file) || !file_exists($file) ? null : filesize($file);
$itemType = (file_exists($file) ? (is_dir($file) ? "dir" : "file") : "unknown");
$itemExists = (file_exists($file) ? "true" : "false");
}
return '{ return '{
"file": { "file": {

View File

@@ -7,10 +7,20 @@ class Settings
public function __construct() public function __construct()
{ {
// Set version number and document root as core settings // Set version number and document root as core settings
$this->versionNo = "8.0 beta"; // Defaults to the right
$this->docRoot = $_SERVER['DOCUMENT_ROOT']; $this->versionNo = "8.1"; // "8.1";
$this->docRoot = $_SERVER['DOCUMENT_ROOT']; // $_SERVER['DOCUMENT_ROOT']
$this->assetsRoot = "assets"; // "assets" (relative or absolute)
} }
public function getCoreDetails()
{
return [
"versionNo" => $this->versionNo,
"docRoot" => $this->docRoot,
"assetsRoot" => $this->assetsRoot,
];
}
// ======== // ========
// DATA DIR // DATA DIR
@@ -37,7 +47,7 @@ class Settings
// GLOBAL CONFIG // GLOBAL CONFIG
// ============= // =============
public function getConfigGlobalTemplate() public function getConfigGlobalTemplate($asArray)
{ {
// Return the serialized global config template // Return the serialized global config template
$fileName = 'template-config-global.php'; $fileName = 'template-config-global.php';
@@ -46,6 +56,9 @@ class Settings
opcache_invalidate($fullPath, true); opcache_invalidate($fullPath, true);
} }
$settings = file_get_contents($fullPath); $settings = file_get_contents($fullPath);
if ($asArray) {
$settings = $this->serializedFileData("get", $fullPath);
}
return $settings; return $settings;
} }
@@ -73,9 +86,7 @@ class Settings
public function getConfigGlobalSettings() public function getConfigGlobalSettings()
{ {
// Start an array with version number and document root // Start an array with version number and document root
$settings = []; $settings = $this->getCoreDetails();
$settings['versionNo'] = $this->versionNo;
$settings['docRoot'] = $this->docRoot;
// Get global config file details // Get global config file details
$fullPath = $this->getConfigGlobalFileDetails()['fullPath']; $fullPath = $this->getConfigGlobalFileDetails()['fullPath'];
$settingsFromFile = $this->serializedFileData("get", $fullPath); $settingsFromFile = $this->serializedFileData("get", $fullPath);
@@ -113,7 +124,7 @@ class Settings
// USERS CONFIG // USERS CONFIG
// ============ // ============
public function getConfigUsersTemplate() public function getConfigUsersTemplate($asArray)
{ {
// Return the serialized users config template // Return the serialized users config template
$fileName = 'template-config-users.php'; $fileName = 'template-config-users.php';
@@ -122,6 +133,9 @@ class Settings
opcache_invalidate($fullPath, true); opcache_invalidate($fullPath, true);
} }
$settings = file_get_contents($fullPath); $settings = file_get_contents($fullPath);
if ($asArray) {
$settings = $this->serializedFileData("get", $fullPath);
}
return $settings; return $settings;
} }
@@ -171,7 +185,7 @@ class Settings
return $this->setConfigUsersSettings($fileName, $settings); return $this->setConfigUsersSettings($fileName, $settings);
} }
public function updateConfigUsersCreateDate($fileName): void public function updateConfigUsersCreateDate($fileName)
{ {
global $ICEcoderUserSettings; global $ICEcoderUserSettings;
@@ -191,7 +205,7 @@ class Settings
$ICEcoderUserSettings['configCreateDate'] = $filemtime; $ICEcoderUserSettings['configCreateDate'] = $filemtime;
} }
public function createIPSettingsFileIfNotExist(): void public function createIPSettingsFileIfNotExist()
{ {
global $username, $settingsFile, $settingsFileAddr; global $username, $settingsFile, $settingsFileAddr;
@@ -201,7 +215,7 @@ class Settings
$serverAddr = "127.0.0.1"; $serverAddr = "127.0.0.1";
} }
$settingsFileAddr = 'config-' . $username . str_replace(".", "_", $serverAddr) . '.php'; $settingsFileAddr = 'config-' . $username . str_replace(".", "_", $serverAddr) . '.php';
if (true === file_exists(dirname(__FILE__) . "/../data/" . $settingsFileAddr)) { if (false === file_exists(dirname(__FILE__) . "/../data/" . $settingsFileAddr)) {
if (false === copy(dirname(__FILE__) . "/../data/" . $settingsFile, dirname(__FILE__) . "/../data/" . $settingsFileAddr)) { if (false === copy(dirname(__FILE__) . "/../data/" . $settingsFile, dirname(__FILE__) . "/../data/" . $settingsFileAddr)) {
$reqsFailures = ["phpCreateSettingsFileAddr"]; $reqsFailures = ["phpCreateSettingsFileAddr"];
include dirname(__FILE__) . "/../lib/requirements.php"; include dirname(__FILE__) . "/../lib/requirements.php";

View File

@@ -4,16 +4,33 @@ namespace ICEcoder;
class System class System
{ {
/**
* @param $name
*/
public function functionEnabled($name) {
return is_callable($name) && false === stripos(ini_get('disable_functions'), $name);
}
/** /**
* @param $path * @param $path
*/ */
private function createDirIfNotExists($path): void private function createDirIfNotExists($path)
{ {
if (false === file_exists($path)) { if (false === file_exists($path)) {
mkdir($path); mkdir($path);
} }
} }
/**
* @param $path
*/
private function createFileIfNotExists($path)
{
if (false === file_exists($path)) {
touch($path);
}
}
/** /**
* @return string * @return string
*/ */
@@ -26,13 +43,14 @@ class System
} }
} }
public function setErrorHandling(): void public function setErrorHandling()
{ {
// Don't display, but log all errors // Don't display, but log all errors
ini_set('display_errors', '0'); ini_set('display_errors', '0');
ini_set('log_errors', '1'); ini_set('log_errors', '1');
$this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs'); $this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs');
$this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs/error'); $this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs/error');
$this->createFileIfNotExists(dirname(__FILE__) . '/../data/logs/error/error.log');
ini_set('error_log', dirname(__FILE__) . '/../data/logs/error/error.log'); ini_set('error_log', dirname(__FILE__) . '/../data/logs/error/error.log');
error_reporting(-1); error_reporting(-1);
} }
@@ -41,7 +59,7 @@ class System
* @param $file * @param $file
* @param $msg * @param $msg
*/ */
public function writeLog($file, $msg): void public function writeLog($file, $msg)
{ {
$this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs'); $this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs');
$this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs/processes'); $this->createDirIfNotExists(dirname(__FILE__) . '/../data/logs/processes');
@@ -50,7 +68,7 @@ class System
fclose($fh); fclose($fh);
} }
public function setTimeZone(): void public function setTimeZone()
{ {
// Set our default timezone and suppress warning with @ // Set our default timezone and suppress warning with @
@date_default_timezone_set(date_default_timezone_get()); @date_default_timezone_set(date_default_timezone_get());
@@ -74,7 +92,7 @@ class System
/** /**
* @param $path * @param $path
*/ */
public function invalidateOPCache($path): void public function invalidateOPCache($path)
{ {
if (function_exists('opcache_invalidate')) { if (function_exists('opcache_invalidate')) {
opcache_invalidate($path, true); opcache_invalidate($path, true);
@@ -148,4 +166,30 @@ class System
return $contents; return $contents;
} }
/**
* @param $dark
* @return string
*/
public function getDemoModeIndicator($dark = false) {
global $ICEcoder, $text;
if (true === $ICEcoder["demoMode"]) {
$darkExtra = true === $dark
? '.demoModeIndicator::after {position: absolute; top: 0; width: 0; height: 0; border-style: solid; border-width: 30px 0 0 30px; border-color: transparent transparent transparent #1c1c19; content: \'\'; z-index: 1}'
: '';
$content = '
<style>
.demoModeIndicator {position: absolute; top: -30px; right: 0; width: 0; height: 0; border-top: 30px solid transparent; border-bottom: 30px solid transparent; border-right: 30px solid #b00; color: #fff; z-index: 1}
.demoModeIndicator svg {position: fixed; display: inline-block; width: 24px; height: 32px; right: 0; margin-right: 0; top: -3px}
' . $darkExtra . '
</style>
';
$content .= '
<div class="demoModeIndicator" title="' . $text['demo-mode']['Demo mode'] . '">' . file_get_contents(dirname(__FILE__) . "/../assets/images/icons/lock.svg") .'</div>
';
return $content;
}
return "";
}
} }

View File

@@ -28,7 +28,7 @@ class ExtraProcesses
* @param $action * @param $action
* @param string $msg * @param string $msg
*/ */
private function writeLog($action, $msg = ""): void private function writeLog($action, $msg = "")
{ {
$username = "" !== $this->username ? $this->username : "default-user"; $username = "" !== $this->username ? $this->username : "default-user";
@@ -56,7 +56,7 @@ class ExtraProcesses
/** /**
* *
*/ */
public function onFileLoad(): void public function onFileLoad()
{ {
// PHP example: // PHP example:
// $this->writeLog("FILE LOAD"); // $this->writeLog("FILE LOAD");
@@ -225,7 +225,7 @@ class ExtraProcesses
/** /**
* @param string $username * @param string $username
*/ */
public function onUserNew($username = ""): void public function onUserNew($username = "")
{ {
// PHP example: // PHP example:
// $this->writeLog("USER NEW", $username ?? ""); // $this->writeLog("USER NEW", $username ?? "");
@@ -234,7 +234,7 @@ class ExtraProcesses
/** /**
* @param string $username * @param string $username
*/ */
public function onUserLogin($username = ""): void public function onUserLogin($username = "")
{ {
// PHP example: // PHP example:
// $this->writeLog("USER LOGIN", $username ?? ""); // $this->writeLog("USER LOGIN", $username ?? "");
@@ -243,7 +243,7 @@ class ExtraProcesses
/** /**
* @param string $username * @param string $username
*/ */
public function onUserLogout($username = ""): void public function onUserLogout($username = "")
{ {
// PHP example: // PHP example:
// $this->writeLog("USER LOGOUT", $username ?? ""); // $this->writeLog("USER LOGOUT", $username ?? "");
@@ -252,7 +252,7 @@ class ExtraProcesses
/** /**
* @param string $username * @param string $username
*/ */
public function onUserLoginFail($username = ""): void public function onUserLoginFail($username = "")
{ {
// PHP example: // PHP example:
// $this->writeLog("USER LOGIN FAIL", $username ?? ""); // $this->writeLog("USER LOGIN FAIL", $username ?? "");
@@ -262,7 +262,7 @@ class ExtraProcesses
* @param string $result * @param string $result
* @param string $status * @param string $status
*/ */
public function onBugCheckResult($result = "", $status = ""): void public function onBugCheckResult($result = "", $status = "")
{ {
// PHP example: // PHP example:
// $this->writeLog("BUG CHECK", $result . " : ". var_export($status, true)); // $this->writeLog("BUG CHECK", $result . " : ". var_export($status, true));

Some files were not shown because too many files have changed in this diff Show More