From e4570d453092e3c73cbfdfe53264a4b0c26acee1 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Thu, 28 Sep 2017 21:23:35 +0100 Subject: [PATCH 001/704] Remove old console.log --- lib/file-control.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/file-control.php b/lib/file-control.php index d1dc86e4..50404421 100644 --- a/lib/file-control.php +++ b/lib/file-control.php @@ -106,7 +106,6 @@ // Get local file } else { $loadedFile = toUTF8noBOM(getData($file),true); - //echo 'console.log('.$loadedFile.');'; } $encoding=ini_get("default_charset"); if($encoding=="") { From 153aa1f0d5827d5be6daf4ea044c8f4a406305f7 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Thu, 28 Sep 2017 21:39:21 +0100 Subject: [PATCH 002/704] Typo fix --- lib/terminal-xhr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/terminal-xhr.php b/lib/terminal-xhr.php index 7e0a1230..267f2771 100644 --- a/lib/terminal-xhr.php +++ b/lib/terminal-xhr.php @@ -9,7 +9,7 @@ function proc_open_enabled() { } if(!proc_open_enabled()) { - exit("sorry but you can't used this terminal if your proc_open is disabled\n\n"); + exit("Sorry but you can't use this terminal if your proc_open is disabled\n\n"); } $aliases = array( From 00680d08691f3af2e8eef4b32264a3b51d5e1803 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Thu, 28 Sep 2017 21:46:06 +0100 Subject: [PATCH 003/704] v6 is free! --- lib/config___users-template.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/config___users-template.php b/lib/config___users-template.php index 8dba99df..6194d859 100644 --- a/lib/config___users-template.php +++ b/lib/config___users-template.php @@ -1,8 +1,8 @@ "6.0 beta", -"licenseEmail" => "", -"licenseCode" => "", +"licenseEmail" => "v6free@icecoder.net", +"licenseCode" => "93be18fba1dee0e186031907422a0f8df3462568bfd0161e1504", "configCreateDate" => 0, "root" => "", "checkUpdates" => true, @@ -47,4 +47,4 @@ "last10Files" => "", "favoritePaths" => array() ); -?> \ No newline at end of file +?> From d3df8621b8a4fe42ea5f16aa5bd991f0fc31c601 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Thu, 28 Sep 2017 23:30:28 +0100 Subject: [PATCH 004/704] Version 6.0 --- README.md | 84 +++++++++++++-------------- lib/config___users-template.php | 100 ++++++++++++++++---------------- lib/settings-system-params.php | 38 ++++++------ 3 files changed, 111 insertions(+), 111 deletions(-) diff --git a/README.md b/README.md index 11767fb7..2e91eb7f 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,42 @@ -# ICEcoder - -## Web IDE / browser code editor awesomeness - -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 web IDE - -### Requirements - -You can run ICEcoder either online or locally, on Linux, Windows or Mac based platforms. The only requirement is to have PHP 5 available (5.3 recommended). You can have this either as a vanilla installation or via a program such as WAMP or XAMPP (for Windows) or MAMP (for Mac). - -### Installation - -#### Step 1: Get ICEcoder - -Either download the zip or clone from Github using: - -``` -$ git clone git://github.com/mattpass/ICEcoder -``` - -#### Step 2: Place in your document root (online or local) - -* Put in a new sub-dir URL such as yourdomain.com/ICEcoder or localhost/ICEcoder -* Set write permissions (757 or 775 depending on your system) on the 'backups', 'lib', 'plugins', 'test' and 'tmp' folders - -*(Note: A small number of web servers give an internal server error here, if you get this, try 755 instead)* - -#### Step 3: Start coding - -* Visit the sub-dir URL in your browser and enter a password - -**Now you're setup, auto-logged in and ready to code!** - -Suitable for commercial & non-commercial projects, just let me know if it's useful to you and any cool customisations you make to it. I take no responsibility for anything, your usage is all down to you. - -It's fully open source and MIT licensed. I'm happy for you to take it, make it your own and customise to your hearts content and/or contribute to this main repo! :) - -Plenty of comments included in the code to assist with understanding, customising etc. - -Comments, improvements & feedback welcomed! +# ICEcoder + +## Web IDE / browser code editor awesomeness + +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 web IDE + +### Requirements + +You can run ICEcoder either online or locally, on Linux, Windows or Mac based platforms. The only requirement is to have PHP 5 available (5.3 recommended). You can have this either as a vanilla installation or via a program such as WAMP or XAMPP (for Windows) or MAMP (for Mac). + +### Installation + +#### Step 1: Get ICEcoder + +Either download the zip or clone from Github using: + +``` +$ git clone git://github.com/mattpass/ICEcoder +``` + +#### Step 2: Place in your document root (online or local) + +* Put in a new sub-dir URL such as yourdomain.com/ICEcoder or localhost/ICEcoder +* Set write permissions (757 or 775 depending on your system) on the 'backups', 'lib', 'plugins', 'test' and 'tmp' folders + +*(Note: A small number of web servers give an internal server error here, if you get this, try 755 instead)* + +#### Step 3: Start coding + +* Visit the sub-dir URL in your browser and enter a password + +**Now you're setup, auto-logged in and ready to code!** + +Suitable for commercial & non-commercial projects, just let me know if it's useful to you and any cool customisations you make to it. I take no responsibility for anything, your usage is all down to you. + +It's fully open source and MIT licensed. I'm happy for you to take it, make it your own and customise to your hearts content and/or contribute to this main repo! :) + +Plenty of comments included in the code to assist with understanding, customising etc. + +Comments, improvements & feedback welcomed! diff --git a/lib/config___users-template.php b/lib/config___users-template.php index 6194d859..d05db5ef 100644 --- a/lib/config___users-template.php +++ b/lib/config___users-template.php @@ -1,50 +1,50 @@ - "6.0 beta", -"licenseEmail" => "v6free@icecoder.net", -"licenseCode" => "93be18fba1dee0e186031907422a0f8df3462568bfd0161e1504", -"configCreateDate" => 0, -"root" => "", -"checkUpdates" => true, -"openLastFiles" => true, -"updateDiffOnSave" => true, -"languageUser" => "english.php", -"backupsKept" => true, -"backupsDays" => 14, -"deleteToTmp" => true, -"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"), -"codeAssist" => true, -"visibleTabs" => false, -"lockedNav" => true, -"tagWrapperCommand" => "ctrl+alt", -"autoComplete" => "keypress", -"password" => "", -"bannedFiles" => array(), -"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"), -"allowedIPs" => array("*"), -"autoLogoutMins" => 0, -"theme" => "default", -"fontSize" => "13px", -"lineWrapping" => false, -"lineNumbers" => true, -"showTrailingSpace" => true, -"matchBrackets" => true, -"autoCloseTags" => true, -"autoCloseBrackets" => true, -"indentWithTabs" => false, -"indentAuto" => true, -"indentSize" => 4, -"pluginPanelAligned" => "left", -"bugFilePaths" => array(), -"bugFileCheckTimer" => 0, -"bugFileMaxLines" => 0, -"githubAuthToken" => "", -"plugins" => array(), -"ftpSites" => array(), -"githubLocalPaths" => array(), -"githubRemotePaths" => array(), -"previousFiles" => "", -"last10Files" => "", -"favoritePaths" => array() -); -?> + "6.0", +"licenseEmail" => "v6free@icecoder.net", +"licenseCode" => "93be18fba1dee0e186031907422a0f8df3462568bfd0161e1504", +"configCreateDate" => 0, +"root" => "", +"checkUpdates" => true, +"openLastFiles" => true, +"updateDiffOnSave" => true, +"languageUser" => "english.php", +"backupsKept" => true, +"backupsDays" => 14, +"deleteToTmp" => true, +"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"), +"codeAssist" => true, +"visibleTabs" => false, +"lockedNav" => true, +"tagWrapperCommand" => "ctrl+alt", +"autoComplete" => "keypress", +"password" => "", +"bannedFiles" => array(), +"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"), +"allowedIPs" => array("*"), +"autoLogoutMins" => 0, +"theme" => "default", +"fontSize" => "13px", +"lineWrapping" => false, +"lineNumbers" => true, +"showTrailingSpace" => true, +"matchBrackets" => true, +"autoCloseTags" => true, +"autoCloseBrackets" => true, +"indentWithTabs" => false, +"indentAuto" => true, +"indentSize" => 4, +"pluginPanelAligned" => "left", +"bugFilePaths" => array(), +"bugFileCheckTimer" => 0, +"bugFileMaxLines" => 0, +"githubAuthToken" => "", +"plugins" => array(), +"ftpSites" => array(), +"githubLocalPaths" => array(), +"githubRemotePaths" => array(), +"previousFiles" => "", +"last10Files" => "", +"favoritePaths" => array() +); +?> diff --git a/lib/settings-system-params.php b/lib/settings-system-params.php index b58a9f3c..9c85fed3 100644 --- a/lib/settings-system-params.php +++ b/lib/settings-system-params.php @@ -1,20 +1,20 @@ - "6.0 beta", - "codeMirrorDir" => "CodeMirror", - "docRoot" => $_SERVER[\'DOCUMENT_ROOT\'], // Set absolute path of another location if needed - "demoMode" => false, - "devMode" => false, - "fileDirResOutput" => "none", // Can be none, raw, object, both (all but \'none\' output to console) - "loginRequired" => true, - "multiUser" => false, - "languageBase" => "english.php", - "lineEnding" => "\n", - "newDirPerms" => 755, - "newFilePerms" => 644, - "enableRegistration" => true -); -?>'; + "6.0", + "codeMirrorDir" => "CodeMirror", + "docRoot" => $_SERVER[\'DOCUMENT_ROOT\'], // Set absolute path of another location if needed + "demoMode" => false, + "devMode" => false, + "fileDirResOutput" => "none", // Can be none, raw, object, both (all but \'none\' output to console) + "loginRequired" => true, + "multiUser" => false, + "languageBase" => "english.php", + "lineEnding" => "\n", + "newDirPerms" => 755, + "newFilePerms" => 644, + "enableRegistration" => true +); +?>'; ?> \ No newline at end of file From f6899088483b51bb702decc5d50f2bb41ed44cd6 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Fri, 4 May 2018 17:47:51 +0100 Subject: [PATCH 005/704] Extra fallback to open file --- lib/settings-common.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/settings-common.php b/lib/settings-common.php index a1ec95ea..00b7512d 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -74,7 +74,9 @@ function getData($url,$type='fopen',$dieMessage=false,$timeout=60) { if (!$data) { $data = @file_get_contents(str_replace("https:","http:",$url), false, $context); } - } + } elseif (file_exists($url)) { + $data = file_get_contents($url); + } // Return data or die with message if ($data) { return $data; @@ -298,4 +300,4 @@ function getVersionsCount($fileLoc,$fileName) { "dateCounts" => $dateCounts ); } -?> \ No newline at end of file +?> From 684277a3cc286e94c0d586db100bfa4531d2610c Mon Sep 17 00:00:00 2001 From: Rafael Rotelok Date: Sat, 16 Jun 2018 00:17:54 -0300 Subject: [PATCH 006/704] Fixing Encoding issues --- lang/norwegian.php | 156 +++++++++++++++++----------------- lang/portuguese-brazilian.php | 4 +- 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/lang/norwegian.php b/lang/norwegian.php index 8da22931..0ab38731 100644 --- a/lang/norwegian.php +++ b/lang/norwegian.php @@ -11,7 +11,7 @@ "editor" => array( - "Click icons for..." => "Klikk p� ikoner
for hjelp &
bruk av info
", + "Click icons for..." => "Klikk på ikoner
for hjelp &
bruk av info
", "server" => "server", "Server name, OS..." => "Server navn, OS & IP:", "Root" => "Root:", @@ -22,14 +22,14 @@ "Browser" => "Nettleser:", "Your IP" => "Din IP:", "files" => "filer", - "Last 10 files..." => "Siste 10 �pne filer:", + "Last 10 files..." => "Siste 10 åpne filer:", "none" => "[none]", "test suite" => "test suite", - "Run unit tests" => "Kj�r unit tests", + "Run unit tests" => "Kjør unit tests", "dev mode" => "utvikler modus", "Status" => "Status", "Using" => "Brukes", - "You can switch..." => "Du kan sl� utvikler modus p�/av i lib/config__settings.php", + "You can switch..." => "Du kan slå utvikler modus på/av i lib/config__settings.php", "results" => "resultater" ), @@ -45,9 +45,9 @@ "index" => array( "UPDATE INFO" => "UPDATE INFO", - "now available" => "N� tilgjengelig", + "now available" => "Nå tilgjengelig", "Your version is" => "Din versjon er", - "Update now" => "Oppdater n�", + "Update now" => "Oppdater nå", "You have some..." => "Du har noe ulagrede endringer", "Are you sure you want to close?" => "Are you sure you want to close?", "working" => "arbeider", @@ -56,7 +56,7 @@ "New Folder" => "Ny Mappe", "Upload File(s)" => "Last opp Fil(er)", "Paste" => "Lim inn", - "Open" => "�pne", + "Open" => "Åpne", "Copy" => "Kopier", "Duplicate" => "Duplikat", "Delete" => "Slett", @@ -70,7 +70,7 @@ "Help" => "Hjelp", "Save" => "Lagre", "Save As" => "Lagre Som", - "Live Preview" => "Direkte Forh�ndsvisning", + "Live Preview" => "Direkte Forhåndsvisning", "Upload" => "Last opp", "Zip" => "Zip", "Print" => "Skriv ut", @@ -78,7 +78,7 @@ "Logout" => "Loggut", "Undo" => "Angre", "Redo" => "Gjenta", - "Indent more" => "St�rre innrykk", + "Indent more" => "Større innrykk", "Indent less" => "Mindre innrykk", "Autocomplete" => "Autokomplettere", "Comment/Uncomment" => "Kommentar/Fjern Kommentar", @@ -86,7 +86,7 @@ "Manual" => "Manual", "Shortcuts" => "Snarveier", "Settings" => "Innstillinger", - "Search for selected" => "S�k for utvalgte", + "Search for selected" => "Søk for utvalgte", "website" => "webside", "Close all tabs" => "Lukk alle faner", "Alphabetize tabs" => "Ordne faner alfabetisk", @@ -96,12 +96,12 @@ "replace" => "erstatt", "replace all" => "erstatt alt", "this document" => "dette dokumentet", - "open documents" => "�pne dokumenter", + "open documents" => "åpne dokumenter", "all files" => "alle filer", "all filenames" => "alle filenavn", - "Turn on/off..." => "Svitsj p�/av kode assistenten", + "Turn on/off..." => "Svitsj på/av kode assistenten", "Code Assist" => "Kode Assistenten", - "Go to Line" => "G� til Linje", + "Go to Line" => "Gå til Linje", "View" => "Vis", "Bug reporting not active" => "Bug rapportering ikke aktiv" ), @@ -116,75 +116,75 @@ "file-control" => array( "Sorry" => "Beklager", - "does not seem..." => "synes ikke � eksistere p� serveren", - "Sorry, could not..." => "Beklager, kunne ikke f� innholdet i", - "Sorry, cannot create..." => "Beklager, kan ikke opprette mappe p�", + "does not seem..." => "synes ikke å eksistere på serveren", + "Sorry, could not..." => "Beklager, kunne ikke få innholdet i", + "Sorry, cannot create..." => "Beklager, kan ikke opprette mappe på", "Sorry, cannot copy" => "Beklager, kan ikke kopiere", "into" => "inn", "Uploaded file(s) OK" => "Opplastete fil(er) OK", "Sorry, cannot upload" => "Beklager, kan ikke laste opp", "Sorry, cannot upload..." => "Beklager, kan ikke laste opp i demo-modus", "Sorry, cannot rename" => "Beklager, kan ikke endre navn", - "Maybe public write..." => "Kanskje det trengs offentlige skriverettigheter p� denne, eller overordnede mappen?", + "Maybe public write..." => "Kanskje det trengs offentlige skriverettigheter på denne, eller overordnede mappen?", "Sorry, cannot move" => "Beklager, kan ikke flytte", "Sorry, cannot save" => "Beklager, kan ikke lagre", "Sorry, cannot replace..." => "Beklager, kan ikke erstatte tekst i", - "Sorry, cannot change..." => "Beklager, kan ikke endre tillatelser p�", - "Sorry, cannot delete..." => "Beklager, kan ikke slette rotniv�", + "Sorry, cannot change..." => "Beklager, kan ikke endre tillatelser på", + "Sorry, cannot delete..." => "Beklager, kan ikke slette rotnivå", "Sorry, cannot delete" => "Beklager, kan ikke slette", "Sorry, this file..." => "Beklager, denne filen er endret, kan ikke lagre", "Reload this file..." => "Skal denne filen lastes igjen og kopieres denne versjon til et nytt dokument?", - "There was a..." => "Dette var en teknisk hikke, sannsynligvis var noe ikke helt klar. S� ICEcoder laster sin kontrollfil p� nytt.", - "displayed at" => "vises p�", - "Enter filename to..." => "Skriv inn filnavnet for � lagre p�", + "There was a..." => "Dette var en teknisk hikke, sannsynligvis var noe ikke helt klar. Så ICEcoder laster sin kontrollfil på nytt.", + "displayed at" => "vises på", + "Enter filename to..." => "Skriv inn filnavnet for å lagre på", "That file exists..." => "Denne filen eksisterer allerede, skriv over?", "Saving" => "Lagring" ), "get-branch" => array( - "There are no..." => "Det er ingen forskjeller mellom det lokale og GitHub lagringssted. G� tilbake til vanlig modus?", + "There are no..." => "Det er ingen forskjeller mellom det lokale og GitHub lagringssted. Gå tilbake til vanlig modus?", "Sorry, there was..." => "Beklager, det var en feil, kode:", - "Your local folder..." => "Din lokale mappe er tom, �nsker du � klone" + "Your local folder..." => "Din lokale mappe er tom, ønsker du å klone" ), "github-manager" => array( - "Sorry, cannot create..." => "Beklager, kan ikke opprette mappe p�", + "Sorry, cannot create..." => "Beklager, kan ikke opprette mappe på", "Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter", - "and try again" => "og pr�v igjen", + "and try again" => "og prøv igjen", "saving github paths" => "lagre GitHub stier...", "github paths" => "github stier", "Choose existing path" => "Velg eksisterende sti", "Local path" => "Lokal sti", "Remote GitHub path" => "Ekstern GitHub sti", "Choose" => "Velg", - "Set local and..." => "Sett lokal og ekstern sti til tomt, for � fjerne", + "Set local and..." => "Sett lokal og ekstern sti til tomt, for å fjerne", "Update" => "Oppdater", "Add new path" => "Legg til ny sti", "Add" => "Legg til", "Usage Info" => "Bruksinfo:", - "Enter relative local..." => "Oppgi relative lokale stier (f.e. /server/myfiles) og absolutte GitHub stier (f.e. https://github.com/user/repo eller https://github.com/user/repo/tree/branch for grener), som eksemplene. Med dette har du etablert kildestier p� begge steder, som et par.", + "Enter relative local..." => "Oppgi relative lokale stier (f.e. /server/myfiles) og absolutte GitHub stier (f.e. https://github.com/user/repo eller https://github.com/user/repo/tree/branch for grener), som eksemplene. Med dette har du etablert kildestier på begge steder, som et par.", "You can then..." => "Du kan deretter velge en stipar og dette blir da den nye rot stien i ICEcoder.", - "The file manager..." => "Filbehandleren viser deretter et nytt GitHub-ikon, som du kan klikke p�, for � utf�re en sjekk og vise forskjell mellom de 2 kildene. Disse forskjellene kan da v�re p�krevd, og flyttes til den eksterne stien p� GitHub eller klones til din lokale sti, for � synkronisere filene dine.", - "If you want..." => "Hvis du �nsker � velge en annen root sti, kan dette gj�res i skjermbildet Innstillinger." + "The file manager..." => "Filbehandleren viser deretter et nytt GitHub-ikon, som du kan klikke på, for å utføre en sjekk og vise forskjell mellom de 2 kildene. Disse forskjellene kan da være påkrevd, og flyttes til den eksterne stien på GitHub eller klones til din lokale sti, for å synkronisere filene dine.", + "If you want..." => "Hvis du ønsker å velge en annen root sti, kan dette gjøres i skjermbildet Innstillinger." ), "github" => array( - "Sorry, you do..." => "Beklager, det ser ikke ut til � ha lastet inn OpenSSL p� PHP instans, s� https er ikke tilgjengelig. Dette er n�dvendig for GitHub dataoverf�ring, du kan endre php.ini innstillingene, start serveren p� nytt og pr�v igjen" + "Sorry, you do..." => "Beklager, det ser ikke ut til å ha lastet inn OpenSSL på PHP instans, så https er ikke tilgjengelig. Dette er nødvendig for GitHub dataoverføring, du kan endre php.ini innstillingene, start serveren på nytt og prøv igjen" ), "headers" => array( - "Bad CSRF token..." => "Bad CSRF token. Vennligst rapporter feilinfoen p� https://github.com/mattpass/ICEcoder slik at det kan fikses." + "Bad CSRF token..." => "Bad CSRF token. Vennligst rapporter feilinfoen på https://github.com/mattpass/ICEcoder slik at det kan fikses." ), "help" => array( "shortcuts" => "snarveier", "Within document" => "Innenfor dokument", - "On Tabs" => "P� faner", + "On Tabs" => "På faner", "Within file manager" => "Innenfor filbehandler", "Anywhere" => "Hvor som helst", "Space" => "Mellomrom", @@ -193,18 +193,18 @@ "Left click" => "Venstre klikk", "Middle click" => "Middel klikk", "Double click tap..." => "Dobbel klikk / tap (mobil)", - "Right click" => "H�yre klikk", + "Right click" => "Høyre klikk", "Middle scrollwheel" => "Middel rullehjul", "Drag" => "Dra", - "Autocomplete add snippet" => "Autofullf�r/legg til kodebiten", + "Autocomplete add snippet" => "Autofullfør/legg til kodebiten", "Multiple select" => "Flere valg", "Move line up" => "Flytt linje opp", "Move line down" => "Flytt linje ned", "Duplicate lines" => "Dupliser linje(r)", "Remove lines" => "Slett linje(r)", - "Insert line before" => "Sett inn linje f�r", + "Insert line before" => "Sett inn linje før", "Insert line after" => "Sett inn linje etter", - "Search for selected" => "S�k etter valgt", + "Search for selected" => "Søk etter valgt", "Jump to definition" => "Hopp til definisjon/hopp tilbake", "Comment uncomment" => "Kommentar/fjern kommentar", "Insert tab indent" => "Sett inn innrykk/valgt innrykk", @@ -221,8 +221,8 @@ "End line with..." => "Avslutt linje med
", "Close tab" => "Lukk fane", "Select file folder" => "Velg fil/mappe", - "Open file" => "�pne fil", - "Range select" => "Velg omr�de", + "Open file" => "Åpne fil", + "Range select" => "Velg område", "Options for selected" => "Egenskaper for valgt", "Delete selected" => "Slett valgt", "Next previous tab" => "Neste/forige fane", @@ -230,43 +230,43 @@ "Previous tab" => "Forige fane", "New tab" => "Ny fane", "Close current tab" => "Lukk gjeldende fane", - "Open file prompt" => "�pne fil prompt", + "Open file prompt" => "Åpne fil prompt", "Find" => "Finn", - "Focus on Go..." => "Fokus p� G� til linje inndata", + "Focus on Go..." => "Fokus på Gå til linje inndata", "Save" => "Lagre", "Save as" => "Lagre som...", "View webpage" => "Vis webside", "Contract expand file..." => "Trekk sammen/utvid filbehandler", "Fold unfold current..." => "Brett/utfold gjeldende linje", - "Refocus on document" => "Refokusere p� dokument", + "Refocus on document" => "Refokusere på dokument", "Cancel tasks" => "Avbryt oppgaver" ), "ice-coder" => array( - "No text selected..." => "Ingen tekst valgt til � s�ke p�", + "No text selected..." => "Ingen tekst valgt til å søke på", "Creating Folder" => "Lage mappe", - "Sorry you can..." => "Beklager, du kan bare ha 100 filer �pne samtidig!", - "Opening File" => "�pner Fil", + "Sorry you can..." => "Beklager, du kan bare ha 100 filer åpne samtidig!", + "Opening File" => "Åpner Fil", "Enter relative file..." => "Oppgi den relative filstien (med prefiks /) eller ekstern URL", - "Getting" => "F�r", - "Please enter the..." => "Skriv inn det nye navnet p�", + "Getting" => "Får", + "Please enter the..." => "Skriv inn det nye navnet på", "Renaming to" => "Endre navn til", "Moving to" => "Flytt til", "Deleting File" => "Slett Fil", "Pasting File" => "Lim inn Fil", "Sorry cannot paste..." => "Beklager, kan ikke lime inn en hel rot mappe", - "Nothing to paste..." => "Ingenting � lime inn, kopiere en fil/mappe f�rst!", + "Nothing to paste..." => "Ingenting å lime inn, kopiere en fil/mappe først!", "Replacing text in" => "Erstatte tekst i", "Cancelled tasks" => "Kansellerte oppgaver", - "Open previous files" => "�pne siste filer?", - "Please enter your..." => "Skriv inn GitHub token (enten personlig tilgang token eller kunde/hemmelig par token). Se verkt�ytips ved siden av Github Auth Token p� Hjelp-skjermbildet > Innstillinger for mer info", + "Open previous files" => "Åpne siste filer?", + "Please enter your..." => "Skriv inn GitHub token (enten personlig tilgang token eller kunde/hemmelig par token). Se verktøytips ved siden av Github Auth Token på Hjelp-skjermbildet > Innstillinger for mer info", "This will compare..." => "Det vil sammenlignes og vise en forskjell mellom din lokale mappe og lagringsstedet. OK?", - "Please note for..." => "Vennligst merk: for at oppdatering skal fungere skikkelig, m� du ha skrive/slette tilgang til alle ICEcoder kataloger og filer. Hvis du trenger � gjenopprette denne versjonen av ICEcoder av en eller annen grunn, vil du finne den i /tmp mappen. Klikk OK for � fortsette med en auto-oppdatering eller avbryt for � bes�ke ICEcoder omr�det slik at du kan ta tak i zip-filen og oppdatere manuelt.", + "Please note for..." => "Vennligst merk: for at oppdatering skal fungere skikkelig, må du ha skrive/slette tilgang til alle ICEcoder kataloger og filer. Hvis du trenger å gjenopprette denne versjonen av ICEcoder av en eller annen grunn, vil du finne den i /tmp mappen. Klikk OK for å fortsette med en auto-oppdatering eller avbryt for å besøke ICEcoder området slik at du kan ta tak i zip-filen og oppdatere manuelt.", "You can start..." => "Du kan starte feilrapportering i Hjelp > Innstillinger", - "Error cannot find..." => "Feil: kan ikke finne/f� tilgang til feil filstier", + "Error cannot find..." => "Feil: kan ikke finne/få tilgang til feil filstier", "No new errors..." => "Ingen feil funnet", - "You have made..." => "Du har gjort endringer. Er du sikker p�, at du vil lukke uten � lagre?", + "You have made..." => "Du har gjort endringer. Er du sikker på, at du vil lukke uten å lagre?", "Close all tabs" => "Lukk alle faner?" ), @@ -274,16 +274,16 @@ array( "set password" => "sett passord", "login" => "logginn", - "To disable registration..." => "Hvis du vil deaktivere registreringsmodus, �pne innstillingsmenyen eller �pne lib/config ___ settings.php og endre/aktiver P�melding til 'false', deretter laste siden om igjen", + "To disable registration..." => "Hvis du vil deaktivere registreringsmodus, åpne innstillingsmenyen eller åpne lib/config ___ settings.php og endre/aktiver Påmelding til 'false', deretter laste siden om igjen", "Registration mode enabled" => "Registreringsmodus aktivert", "auto-check for updates" => "auto-sjekk for oppdateringer", - "To put into..." => "� sette til flerbrukermodus, �pne innstillingsmenyen eller �pne lib/config ___ settings.php og endre flerbruker til 'true', deretter laste siden om igjen", + "To put into..." => "Å sette til flerbrukermodus, åpne innstillingsmenyen eller åpne lib/config ___ settings.php og endre flerbruker til 'true', deretter laste siden om igjen", "multi-user" => "flerbruker" ), "multiple-results" => array( - "rename all" => "endre navn p� alle", + "rename all" => "endre navn på alle", "replace all" => "erstatte alle", "document" => "dokument", "Found" => "Funnet", @@ -301,28 +301,28 @@ "plugins-manager" => array( - "ICEcoder needs to..." => "ICEcoder m� startes om igjen, for � gj�re programtillegget kj�rbar. Start om igjen n�?", + "ICEcoder needs to..." => "ICEcoder må startes om igjen, for å gjøre programtillegget kjørbar. Start om igjen nå?", "saving plugins" => "lagre programtillegg...", "Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter", - "and try again" => "og pr�v igjen", + "and try again" => "og prøv igjen", "couldnt delete dir" => "kan ikke slette mappe", "couldnt delete file" => "kan ikke slette fil", "plugins" => "programtillegg", "Guide to writing..." => "Guide til skriving av programtillegg", "Manage Installed" => "Administrer installerte", "URL" => "URL", - "Target" => "M�l", + "Target" => "Mål", "Timer" => "Tidsur", "Update" => "Oppdater", "Install" => "Installer", "Uninstall" => "Avinstaller", - "Reload after install..." => "Omstart etter installasjon n�dvendig" + "Reload after install..." => "Omstart etter installasjon nødvendig" ), "properties" => array( "properties" => "egenskaper", - "Size" => "St�rrelse", + "Size" => "Størrelse", "Modified" => "Endret", "Last access" => "Siste tilgang", "Type" => "Type", @@ -336,20 +336,20 @@ "Public" => "Offentlig", "Read" => "Lese", "Write" => "Skrive", - "Execute" => "Kj�re", + "Execute" => "Kjøre", "Change to" => "Endre til", "update" => "oppdatere" ), "settings-common" => array( - "Your document does..." => "Dokumentet ser ikke ut til � v�re i UTF-8 koding, derfor har det blitt omgjort" + "Your document does..." => "Dokumentet ser ikke ut til å være i UTF-8 koding, derfor har det blitt omgjort" ), "settings-save-current-files" => array( "Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter", - "and try again" => "og pr�v igjen" + "and try again" => "og prøv igjen" ), "settings-screen" => @@ -361,17 +361,17 @@ "codemirror dir" => "codemirror mappe", "codemirror version" => "codemirror versjon", "file manager root" => "filbehandler root", - "Free to use..." => "Gratis � bruke den til eget form�l, kommersielle eller ikke, bare gi meg beskjed om eventuelle kule bruk eller tilpasninger. :)
Ingen garanti eller erstatningsansvar aksepteres for noe som helst, det er ditt eget ansvar for all bruk.
Mange fantastiske mennesker og bedrifter har bidratt til � bygge ICEcoder og det er for mange � takke her. Vennligst se hele listen p�", + "Free to use..." => "Gratis å bruke den til eget formål, kommersielle eller ikke, bare gi meg beskjed om eventuelle kule bruk eller tilpasninger. :)
Ingen garanti eller erstatningsansvar aksepteres for noe som helst, det er ditt eget ansvar for all bruk.
Mange fantastiske mennesker og bedrifter har bidratt til å bygge ICEcoder og det er for mange å takke her. Vennligst se hele listen på", "functionality" => "funksjonalitet", "check for updates..." => "se etter oppdateringer ved start", - "auto open last..." => "�pne automatisk siste filer ved innlogging", - "when finding in..." => "n�r funnet blant filer, utelukke", + "auto open last..." => "åpne automatisk siste filer ved innlogging", + "when finding in..." => "når funnet blant filer, utelukke", "assisting" => "assistere", "code assist" => "code assistent", "visible tabs" => "synlige faner", - "locked nav" => "l�st navi", + "locked nav" => "låst navi", "tag wrapper command" => "tag wrapper kommando", - "auto-complete on" => "autokompletering p�", + "auto-complete on" => "autokompletering på", "security" => "sikkerhet", "new password" => "nytt passord", "8 chars min" => "min. 8 tegn", @@ -385,8 +385,8 @@ "theme" => "tema", "line wrapping" => "linjebryting", "indent type" => "innrykk type", - "indent size" => "innrykk st�rr.", - "font size" => "skrift st�rr.", + "indent size" => "innrykk størr.", + "font size" => "skrift størr.", "auto indent" => "auto indent", "layout" => "layout", "plugin panel aligned" => "programtilleggspanel justert", @@ -396,17 +396,17 @@ "bug reporting" => "feil rapportering", "check in files" => "sjekke blant filer", "every" => "hver", - "secs getting last" => "sek., f�r siste", + "secs getting last" => "sek., får siste", "lines" => "linjer", "multi-user" => "flerbruker", - "Make sure you..." => "Pass p�, at du ikke stenger deg ut selv", + "Make sure you..." => "Pass på, at du ikke stenger deg ut selv", "Registration" => "Registrering", "auth token" => "auth token", - "Required to get..." => "N�dvendig for � skille, bestemme ditt lagringssted p� GitHub lageret etc. Hvis du ikke har en, kan du bruke en:".PHP_EOL.PHP_EOL. + "Required to get..." => "Nødvendig for å skille, bestemme ditt lagringssted på GitHub lageret etc. Hvis du ikke har en, kan du bruke en:".PHP_EOL.PHP_EOL. "- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), eller".PHP_EOL. "- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL. - "Det anbefales ikke, at du setter token din her midlertidig, og v�r sikre p� � oppgi den, n�r du blir bedt av ICEcoder, som vil holde den i �kten sin.".PHP_EOL.PHP_EOL. - "Men hvis du jobber i et trygt og sikkert milj�, er det mer effektivt � sette den her.", + "Det anbefales ikke, at du setter token din her midlertidig, og vær sikre på å oppgi den, når du blir bedt av ICEcoder, som vil holde den i økten sin.".PHP_EOL.PHP_EOL. + "Men hvis du jobber i et trygt og sikkert miljø, er det mer effektivt å sette den her.", "Sorry cannot commit..." => "Beklager, kan ikke bekrefte innstillinger i demo-modus", "update" => "oppdatere" ), @@ -414,13 +414,13 @@ "settings-update" => array( "Cannot update config..." => "Kan ikke oppdatere konfigurasjonsfilen. Vennligst sett offentlige skriverettigheter;", - "and try again" => "og pr�v igjen", + "and try again" => "og prøv igjen", "and press refresh" => "og trykk refresh" ), "updater" => array( - "Update appears to..." => "Oppdatering synes � v�re vellykket" + "Update appears to..." => "Oppdatering synes å være vellykket" ) ); diff --git a/lang/portuguese-brazilian.php b/lang/portuguese-brazilian.php index 227e5d6b..8fd65f87 100644 --- a/lang/portuguese-brazilian.php +++ b/lang/portuguese-brazilian.php @@ -271,7 +271,7 @@ "Replacing text in" => "Substituindo texto em", "Cancelled tasks" => "Tarefas canceladas", "Open previous files" => "Abrir arquivos anteriores?", - "Please enter your..." => "Informe sua chave GitHub (chave pessoal ou par). Veja dica próximo � chave Github em Ajuda > Configurações para mais informações", + "Please enter your..." => "Informe sua chave GitHub (chave pessoal ou par). Veja dica próximo ¢ chave Github em Ajuda > Configurações para mais informações", "This will compare..." => "Esta ação irã comparar e exibir diferenças do seu repositório local. OK?", "Please note for..." => "Atenção: para atualizar corretamente, é necessãrio permissão de escrita em todos os diretórios/arquivos do ICEcoder. \\n\\nSe por algum motivo necessite recuperar esta versão do ICEcoder, estarã disponível na pasta /tmp.\\n\\nClique OK para prosseguir com a atualização, ou cancelar para visitar a pãgina do ICEcoder na internet onde poderã baixar a atualização manualmente.", "You can start..." => "Voce pode reportar um bug em Ajuda > Configurações", @@ -336,7 +336,7 @@ "properties" => "propriedades", "Size" => "Tamanho", "Modified" => "Modificado", - "Last access" => "�ltimo acesso", + "Last access" => "ᅳltimo acesso", "Type" => "Tipo", "Readable Writeable" => "Leitura / Escrita", "Relative path" => "Caminho relativo", From 51ab4721425e11b369a743a2efa78a80fd4e1601 Mon Sep 17 00:00:00 2001 From: Rafael Rotelok Date: Sat, 16 Jun 2018 00:19:49 -0300 Subject: [PATCH 007/704] PSR-2 Compliance, removing the closing tag ( ?> ) on php only files inserting a blank line on the end of php only files --- backups/index.php | 1 - lang/chinese-simplified.php | 1 - lang/chinese-traditional.php | 1 - lang/dutch.php | 2 +- lang/english.php | 1 - lang/french.php | 1 - lang/german.php | 2 +- lang/italian.php | 2 +- lang/norwegian.php | 2 +- lang/persian.php | 2 +- lang/portuguese-brazilian.php | 1 - lang/spanish.php | 2 +- lib/bug-files-check.php | 1 - lib/config___users-template.php | 2 +- lib/download.php | 1 - lib/file-control-xhr.php | 1 - lib/ftp-control.php | 1 - lib/go-localhost-root.php | 1 - lib/headers.php | 1 - lib/session-active-ping.php | 1 - lib/settings-common.php | 2 +- lib/settings-save-current-files.php | 1 - lib/settings-system-params.php | 1 - lib/settings-update.php | 1 - lib/settings.php | 1 - lib/terminal-xhr.php | 2 +- plugins/index.php | 1 - processes/on-bug-check.php | 1 - processes/on-file-dir-delete.php | 1 - processes/on-file-dir-move.php | 1 - processes/on-file-dir-paste.php | 1 - processes/on-file-dir-perms.php | 1 - processes/on-file-dir-rename.php | 1 - processes/on-file-load.php | 1 - processes/on-file-replace-text.php | 1 - processes/on-file-save.php | 1 - processes/on-file-upload.php | 1 - processes/on-get-remote-file.php | 1 - processes/on-new-dir.php | 1 - processes/on-user-login-fail.php | 1 - processes/on-user-login.php | 1 - processes/on-user-logout.php | 1 - processes/on-user-new.php | 1 - tmp/index.php | 1 - 44 files changed, 9 insertions(+), 44 deletions(-) diff --git a/backups/index.php b/backups/index.php index 47543f95..1a1abd9f 100644 --- a/backups/index.php +++ b/backups/index.php @@ -1,4 +1,3 @@ \ No newline at end of file diff --git a/lang/chinese-simplified.php b/lang/chinese-simplified.php index 22b46e64..550c9c25 100644 --- a/lang/chinese-simplified.php +++ b/lang/chinese-simplified.php @@ -424,4 +424,3 @@ ) ); -?> \ No newline at end of file diff --git a/lang/chinese-traditional.php b/lang/chinese-traditional.php index da39aa78..912d9da0 100644 --- a/lang/chinese-traditional.php +++ b/lang/chinese-traditional.php @@ -424,4 +424,3 @@ ) ); -?> \ No newline at end of file diff --git a/lang/dutch.php b/lang/dutch.php index 382f0118..55bff09d 100644 --- a/lang/dutch.php +++ b/lang/dutch.php @@ -489,4 +489,4 @@ "Search" => "Zoek", ) ); -?> + diff --git a/lang/english.php b/lang/english.php index 3ef10226..91d90861 100644 --- a/lang/english.php +++ b/lang/english.php @@ -521,4 +521,3 @@ "Search" => "Search", ) ); -?> \ No newline at end of file diff --git a/lang/french.php b/lang/french.php index 63a576cf..18131469 100644 --- a/lang/french.php +++ b/lang/french.php @@ -422,4 +422,3 @@ ) ); -?> \ No newline at end of file diff --git a/lang/german.php b/lang/german.php index 940b4509..1bbe7fd4 100644 --- a/lang/german.php +++ b/lang/german.php @@ -395,4 +395,4 @@ ) ); -?> + diff --git a/lang/italian.php b/lang/italian.php index 54ce2244..d79afb10 100644 --- a/lang/italian.php +++ b/lang/italian.php @@ -454,4 +454,4 @@ ) ); -?> + diff --git a/lang/norwegian.php b/lang/norwegian.php index 0ab38731..501539d6 100644 --- a/lang/norwegian.php +++ b/lang/norwegian.php @@ -424,5 +424,5 @@ ) ); -?> + diff --git a/lang/persian.php b/lang/persian.php index e369f08b..91a53162 100644 --- a/lang/persian.php +++ b/lang/persian.php @@ -422,4 +422,4 @@ "Update appears to..." => "با موفقیت به روز شد" ) ); -?> + diff --git a/lang/portuguese-brazilian.php b/lang/portuguese-brazilian.php index 8fd65f87..03122241 100644 --- a/lang/portuguese-brazilian.php +++ b/lang/portuguese-brazilian.php @@ -436,4 +436,3 @@ ) ); -?> \ No newline at end of file diff --git a/lang/spanish.php b/lang/spanish.php index 41ccb865..b6a947e4 100644 --- a/lang/spanish.php +++ b/lang/spanish.php @@ -465,4 +465,4 @@ ) ); -?> + diff --git a/lib/bug-files-check.php b/lib/bug-files-check.php index b18c68c4..7e892f38 100644 --- a/lib/bug-files-check.php +++ b/lib/bug-files-check.php @@ -112,4 +112,3 @@ // Finally, display our status in JSON format as the XHR response text echo json_encode($status); -?> \ No newline at end of file diff --git a/lib/config___users-template.php b/lib/config___users-template.php index d05db5ef..a417aca7 100644 --- a/lib/config___users-template.php +++ b/lib/config___users-template.php @@ -47,4 +47,4 @@ "last10Files" => "", "favoritePaths" => array() ); -?> + diff --git a/lib/download.php b/lib/download.php index 079b3fbe..d21b68da 100644 --- a/lib/download.php +++ b/lib/download.php @@ -24,4 +24,3 @@ readfile($file); exit; } -?> \ No newline at end of file diff --git a/lib/file-control-xhr.php b/lib/file-control-xhr.php index cbf70043..5ef26685 100644 --- a/lib/file-control-xhr.php +++ b/lib/file-control-xhr.php @@ -1009,4 +1009,3 @@ function rrmdir($dir) { "errorMsg" : "'.$errorMsg.'" } }'; -?> \ No newline at end of file diff --git a/lib/ftp-control.php b/lib/ftp-control.php index 93b388fb..daeef920 100644 --- a/lib/ftp-control.php +++ b/lib/ftp-control.php @@ -112,4 +112,3 @@ function ftpDelete($ftpConn, $type, $path) { return ftp_rmdir($ftpConn, $path); } } -?> \ No newline at end of file diff --git a/lib/go-localhost-root.php b/lib/go-localhost-root.php index 7117b894..868aacec 100644 --- a/lib/go-localhost-root.php +++ b/lib/go-localhost-root.php @@ -34,4 +34,3 @@ ?> \ No newline at end of file diff --git a/lib/headers.php b/lib/headers.php index b178e593..52c3bbfd 100644 --- a/lib/headers.php +++ b/lib/headers.php @@ -37,4 +37,3 @@ header('Pragma: no-cache'); // Caching over HTTP 1.0 covered header('Expires: 0'); // Caching over Proxies covered } -?> \ No newline at end of file diff --git a/lib/session-active-ping.php b/lib/session-active-ping.php index b6276a8a..f0b08be9 100644 --- a/lib/session-active-ping.php +++ b/lib/session-active-ping.php @@ -3,4 +3,3 @@ // Do this every 5 mins to keep session alive include("headers.php"); include("settings.php"); -?> \ No newline at end of file diff --git a/lib/settings-common.php b/lib/settings-common.php index 00b7512d..3168af70 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -300,4 +300,4 @@ function getVersionsCount($fileLoc,$fileName) { "dateCounts" => $dateCounts ); } -?> + diff --git a/lib/settings-save-current-files.php b/lib/settings-save-current-files.php index 44b1b065..fac6e4fe 100644 --- a/lib/settings-save-current-files.php +++ b/lib/settings-save-current-files.php @@ -57,4 +57,3 @@ } echo ''; } -?> \ No newline at end of file diff --git a/lib/settings-system-params.php b/lib/settings-system-params.php index 9c85fed3..e5c274db 100644 --- a/lib/settings-system-params.php +++ b/lib/settings-system-params.php @@ -17,4 +17,3 @@ "enableRegistration" => true ); ?>'; -?> \ No newline at end of file diff --git a/lib/settings-update.php b/lib/settings-update.php index a759ee12..af21372f 100644 --- a/lib/settings-update.php +++ b/lib/settings-update.php @@ -114,4 +114,3 @@ $jsBugFilePaths = "['".str_replace(",","','",str_replace(" ","",strClean($_POST['bugFilePaths'])))."']"; echo ""; } -?> \ No newline at end of file diff --git a/lib/settings.php b/lib/settings.php index 7a84934c..a395630d 100644 --- a/lib/settings.php +++ b/lib/settings.php @@ -290,4 +290,3 @@ // Continue with whatever we're doing // ================================== } -?> \ No newline at end of file diff --git a/lib/terminal-xhr.php b/lib/terminal-xhr.php index 267f2771..909b6c73 100644 --- a/lib/terminal-xhr.php +++ b/lib/terminal-xhr.php @@ -107,4 +107,4 @@ function proc_open_enabled() { // Finally, output our string echo $output; -?> + diff --git a/plugins/index.php b/plugins/index.php index 47543f95..1a1abd9f 100644 --- a/plugins/index.php +++ b/plugins/index.php @@ -1,4 +1,3 @@ \ No newline at end of file diff --git a/processes/on-bug-check.php b/processes/on-bug-check.php index 1d14fecd..b8737821 100644 --- a/processes/on-bug-check.php +++ b/processes/on-bug-check.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../bug-logs.log", 'a'); // fwrite($fh, "Bug check on: ".date("D dS M Y h:i:sa")."\nresult: ".$result.", status array:".var_export($status, true)."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-dir-delete.php b/processes/on-file-dir-delete.php index 0fa96486..61dca450 100644 --- a/processes/on-file-dir-delete.php +++ b/processes/on-file-dir-delete.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "DELETED >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-dir-move.php b/processes/on-file-dir-move.php index c01c8709..1aa92c75 100644 --- a/processes/on-file-dir-move.php +++ b/processes/on-file-dir-move.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "MOVED >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-dir-paste.php b/processes/on-file-dir-paste.php index cd318999..9242e863 100644 --- a/processes/on-file-dir-paste.php +++ b/processes/on-file-dir-paste.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "PASTE >>> ".date("D dS M Y h:i:sa").": ".$dest."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-dir-perms.php b/processes/on-file-dir-perms.php index b6c91dc7..d371c9dd 100644 --- a/processes/on-file-dir-perms.php +++ b/processes/on-file-dir-perms.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "PERMS >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName." = ".$_GET['perms']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-dir-rename.php b/processes/on-file-dir-rename.php index 3ab8d1e0..f103573a 100644 --- a/processes/on-file-dir-rename.php +++ b/processes/on-file-dir-rename.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "RENAMED >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-load.php b/processes/on-file-load.php index 885c1bea..0b89e1d6 100644 --- a/processes/on-file-load.php +++ b/processes/on-file-load.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "LOAD >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-replace-text.php b/processes/on-file-replace-text.php index 7a56439d..6dc950d0 100644 --- a/processes/on-file-replace-text.php +++ b/processes/on-file-replace-text.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "REPLACED TEXT >>> ".date("D dS M Y h:i:sa").": ".$_GET['fileRef']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-file-save.php b/processes/on-file-save.php index 10f97ee9..6d20dc17 100644 --- a/processes/on-file-save.php +++ b/processes/on-file-save.php @@ -51,4 +51,3 @@ echo ";top.ICEcoder.message('Couldn\'t compile your LESS, error info below:\\n\\n".$e->getMessage()."');"; } } -?> \ No newline at end of file diff --git a/processes/on-file-upload.php b/processes/on-file-upload.php index 6c252226..afd12660 100644 --- a/processes/on-file-upload.php +++ b/processes/on-file-upload.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "UPLOAD >>> ".date("D dS M Y h:i:sa").": ".($uploads[0]->name)."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-get-remote-file.php b/processes/on-get-remote-file.php index a83b0e5b..df3210c1 100644 --- a/processes/on-get-remote-file.php +++ b/processes/on-get-remote-file.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "GET REMOTE FILE >>> ".date("D dS M Y h:i:sa").": ".$file."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-new-dir.php b/processes/on-new-dir.php index c166fb92..f3c094bc 100644 --- a/processes/on-new-dir.php +++ b/processes/on-new-dir.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../file-dir-access.log", 'a'); // fwrite($fh, "NEW DIR >>> ".date("D dS M Y h:i:sa").": ".$fileLoc."/".$fileName."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-user-login-fail.php b/processes/on-user-login-fail.php index 9289a8ce..2f741860 100644 --- a/processes/on-user-login-fail.php +++ b/processes/on-user-login-fail.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../user-access.log", 'a'); // fwrite($fh, "FAIL ".date("D dS M Y h:i:sa").": ".$_POST['username']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-user-login.php b/processes/on-user-login.php index 0842dd56..edcbf831 100644 --- a/processes/on-user-login.php +++ b/processes/on-user-login.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../user-access.log", 'a'); // fwrite($fh, "login ".date("D dS M Y h:i:sa").": ".$_SESSION['username']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-user-logout.php b/processes/on-user-logout.php index ba176bfd..96890128 100644 --- a/processes/on-user-logout.php +++ b/processes/on-user-logout.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../user-access.log", 'a'); // fwrite($fh, "logout ".date("D dS M Y h:i:sa").": ".$_SESSION['username']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/processes/on-user-new.php b/processes/on-user-new.php index 40c57d36..22aa7193 100644 --- a/processes/on-user-new.php +++ b/processes/on-user-new.php @@ -8,4 +8,3 @@ // $fh = fopen(dirname(__FILE__)."/../user-access.log", 'a'); // fwrite($fh, "NEW >>> ".date("D dS M Y h:i:sa").": ".$_SESSION['username']."\n"); // fclose($fh); -?> \ No newline at end of file diff --git a/tmp/index.php b/tmp/index.php index 47543f95..1a1abd9f 100644 --- a/tmp/index.php +++ b/tmp/index.php @@ -1,4 +1,3 @@ \ No newline at end of file From b187d34868503612956aed79856a067c944e5d32 Mon Sep 17 00:00:00 2001 From: Rafael Rotelok Date: Sat, 16 Jun 2018 00:22:44 -0300 Subject: [PATCH 008/704] Fixing wrong char conversions --- lang/portuguese-brazilian.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/portuguese-brazilian.php b/lang/portuguese-brazilian.php index 03122241..e230ec1a 100644 --- a/lang/portuguese-brazilian.php +++ b/lang/portuguese-brazilian.php @@ -271,7 +271,7 @@ "Replacing text in" => "Substituindo texto em", "Cancelled tasks" => "Tarefas canceladas", "Open previous files" => "Abrir arquivos anteriores?", - "Please enter your..." => "Informe sua chave GitHub (chave pessoal ou par). Veja dica próximo ¢ chave Github em Ajuda > Configurações para mais informações", + "Please enter your..." => "Informe sua chave GitHub (chave pessoal ou par). Veja dica próximo à chave Github em Ajuda > Configurações para mais informações", "This will compare..." => "Esta ação irã comparar e exibir diferenças do seu repositório local. OK?", "Please note for..." => "Atenção: para atualizar corretamente, é necessãrio permissão de escrita em todos os diretórios/arquivos do ICEcoder. \\n\\nSe por algum motivo necessite recuperar esta versão do ICEcoder, estarã disponível na pasta /tmp.\\n\\nClique OK para prosseguir com a atualização, ou cancelar para visitar a pãgina do ICEcoder na internet onde poderã baixar a atualização manualmente.", "You can start..." => "Voce pode reportar um bug em Ajuda > Configurações", @@ -336,7 +336,7 @@ "properties" => "propriedades", "Size" => "Tamanho", "Modified" => "Modificado", - "Last access" => "ᅳltimo acesso", + "Last access" => "Último acesso", "Type" => "Tipo", "Readable Writeable" => "Leitura / Escrita", "Relative path" => "Caminho relativo", From 84e8714255163fe475696be13f733666643e2885 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 16 Jun 2018 13:27:57 +0100 Subject: [PATCH 009/704] Update French language Based on Kris's PR --- lang/french.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lang/french.php b/lang/french.php index 18131469..ec73e602 100644 --- a/lang/french.php +++ b/lang/french.php @@ -243,6 +243,10 @@ "ice-coder" => array( "No text selected..." => "Aucun texte sélectionné pour la recherche sur", + "all files" => "tous les fichiers", + "all filenames" => "tous les noms de fichiers", + "selected files" => "fichiers sélectionnés", + "selected filenames" => "les nomes de fichiers sélectionnés", "Creating Folder" => "réation de dossier", "Sorry you can..." => "Désolé, vous ne pouvez pas avoir plus de 100 fichiers ouverts en même temps !", "Opening File" => "Ouverture de fichier", @@ -255,6 +259,11 @@ "Pasting File" => "Collage fichier", "Sorry cannot paste..." => "Désolé, il n'est pas possible de coller une racine", "Nothing to paste..." => "Rien à coller, copiez un fichier/dossier en premier !", + "and" => "et", + "this document" => "ce document", + "replace" => "remplacer", + "replace all" => "tout remplacer", + "file" => "fichier", "Replacing text in" => "Remplacement de texte dans", "Cancelled tasks" => "Tâches annulés", "Open previous files" => "Ouvrir les fichiers précédents ?", @@ -265,7 +274,8 @@ "Error cannot find..." => "Erreur : ne peut pas trouver / accéder aux chemins des fichiers d'erreur", "No new errors..." => "Aucune nouvelle erreur trouvée", "You have made..." => "Vous avez réalisé des modifications. Etes vous sûr(e) de désirer quitter sans sauvegarder ?", - "Close all tabs" => "Fermer tous les onglets?" + "Close all tabs" => "Fermer tous les onglets?", + "results" => "résultats" ), "login" => @@ -369,7 +379,7 @@ "visible tabs" => "onglets visibles", "locked nav" => "navigation vérouillée", "tag wrapper command" => "commande de tag", - "auto-complete on" => "auto-complétion sur", + "auto-complete on" => "auto-complétion sur", "security" => "sécurité", "new password" => "nouveau mot de passe", "8 chars min" => "8 caractères minimum", From 219f8ab1e277d0d59af4656abfcfc5880565e361 Mon Sep 17 00:00:00 2001 From: Marc Laporte Date: Sun, 7 Oct 2018 16:36:25 -0400 Subject: [PATCH 010/704] Fix a typo --- test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.php b/test.php index f75506fc..bc2ccf91 100644 --- a/test.php +++ b/test.php @@ -18,7 +18,7 @@ $success = 0; -echo 'TEST 1 of 3: PHP Version:
ICEcoder needs at least PHP 5.0, tho 5.3 and above is recommended:

'; +echo 'TEST 1 of 3: PHP Version:
ICEcoder needs at least PHP 5.0, though 5.3 and above is recommended:

'; echo "Your PHP Version: ".phpversion()."

"; echo 'TEST RESULT: '; From 1a3537311e76d68b836e6cbfdd45c2e60c861e41 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 22 May 2019 15:52:17 +0200 Subject: [PATCH 011/704] settings-screen.php update (no BOM) --- lib/settings-screen.php | 871 ++++++++++++++++++++-------------------- 1 file changed, 431 insertions(+), 440 deletions(-) diff --git a/lib/settings-screen.php b/lib/settings-screen.php index 068d30a3..97a49099 100644 --- a/lib/settings-screen.php +++ b/lib/settings-screen.php @@ -1,441 +1,432 @@ - - - - - -ICEcoder <?php echo $ICEcoder["versionNo"];?> settings screen - - - -/lib/codemirror.css?microtime="> - - - - - -'.PHP_EOL; -} -?> - - - - -
- - -

- -

- :
- v -

- - :
- https://icecoder.net -

- - :
- https://github.com/mattpass/ICEcoder -

- - :
- -

- - :
- -

- - :
- -

- -

-

-
- -
- -
-
General
-
Style
-
Accounts
-
Security
-
- -
- -
- -

language


- [?] -

- -


- >
- >
- > update diff pane on save -

- -


- >
-
-
- -

- -
- -

- -
- -
- -

find & replace


- :
- "> -

- -


- [?]
- ">
- ... - "> - - "> - -

- -


- [?]
- "> -

- -


- > " >
-
- 0 ? count($backupDirsList) : 0; - echo $backupNumDays." ".($backupNumDays != 1 ? $t['days'] : $t['day'])." ".$t['of backups stored...']; - ?> -

- - > [?] -

- -
-
- - - - - - - - - -
">update
-"> -
- - - + + + + + +ICEcoder <?php echo $ICEcoder["versionNo"];?> settings screen + + + +/lib/codemirror.css?microtime="> + + + + + +'.PHP_EOL; +} +?> + + + + +
+ + +

+ +

+ :
+ v +

+ + :
+ https://icecoder.net +

+ + :
+ https://github.com/mattpass/ICEcoder +

+ + :
+ +

+ + :
+ +

+ + :
+ +

+ +

+

+
+ +
+ +
+
General
+
Style
+
Accounts
+
Security
+
+ +
+ +
+ +

language


+ [?] +

+ +


+ >
+ >
+ > update diff pane on save +

+ +


+ >
+
+
+ +

+ +
+ +

+ +
+ +
+ +

find & replace


+ :
+ "> +

+ +


+ [?]
+ ">
+ ... + "> + + "> + +

+ +


+ [?]
+ "> +

+ +


+ > " >
+
+ 0 ? count($backupDirsList) : 0; + echo $backupNumDays." ".($backupNumDays != 1 ? $t['days'] : $t['day'])." ".$t['of backups stored...']; + ?> +

+ + > [?] +

+ +
+
+ + + + + + + + + +
">update
+"> +
+ + + \ No newline at end of file From 36d79288342d7ff88c4aae38bc23137e91ecbc8b Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 22 May 2019 14:59:13 +0100 Subject: [PATCH 012/704] Remove BOM in settings-screen.php, keep line space --- lib/settings-screen.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/settings-screen.php b/lib/settings-screen.php index 97a49099..2c7fe469 100644 --- a/lib/settings-screen.php +++ b/lib/settings-screen.php @@ -1,4 +1,4 @@ -" }); + var input = document.getElementById("select"); function selectTheme() { var theme = input.options[input.selectedIndex].innerHTML; if (theme=="default") {theme = "icecoder"}; editor.setOption("theme", theme); } + function changeIndentSize() { var indentSize = document.getElementById("indentSize").value; editor.setOption("indentUnit", indentSize); editor.setOption("tabSize", indentSize); editor.refresh(); } + + function changeLineNumbersToggle() { var lineNumbersSelect = document.getElementById("lineNumbers"); var lineNumbers = lineNumbersSelect.options[lineNumbersSelect.selectedIndex].innerHTML == "yes" ? true : false; editor.setOption("lineNumbers", lineNumbers); editor.refresh(); } + function changeFontSize() { cMCSS = document.styleSheets[2]; cMCSS.rules ? strCSS = 'rules' : strCSS = 'cssRules'; cMCSS[strCSS][0].style['fontSize'] = document.getElementById("fontSize").value; editor.refresh(); } + var changeEnableRegistrationStatus = function(){ document.getElementById('enableRegistration').disabled=!document.getElementById('enableRegistration').disabled; } @@ -396,12 +402,14 @@ function changeFontSize() { var showButton = function() { document.getElementById('updateButton').style.opacity = 1; } + var showHideTabs = function() { cMCSS = document.styleSheets[2]; cMCSS.rules ? strCSS = 'rules' : strCSS = 'cssRules'; cMCSS[strCSS][2].style['border-left-width'] = document.settings.visibleTabs.checked ? '1px' : '0'; cMCSS[strCSS][2].style['margin-left'] = document.settings.visibleTabs.checked ? '-1px' : '0'; } + var validatePasswords = function() { if (document.settings.password.value != 0 && document.settings.password.value.length<8) { top.ICEcoder.message('Please use at least 8 chars in the password'); @@ -413,6 +421,7 @@ function changeFontSize() { } } } + tabNames = ['general','style','accounts','security']; var switchTab = function(tab) { for (var i=0; i - \ No newline at end of file + From ff5a7e7c9f73a2194a2ab4f748165ec4765b85ec Mon Sep 17 00:00:00 2001 From: Matthew Piercey Date: Wed, 29 May 2019 15:46:28 -0400 Subject: [PATCH 013/704] Tweak LICENSE formatting Fix Markdown headers --- LICENSE.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/LICENSE.md b/LICENSE.md index 0d0043cd..0858e746 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,10 +1,12 @@ -Copyright: � 2015 ICEcoder Ltd +Copyright: © 2015 ICEcoder Ltd Website: icecoder.net Email: info@icecoder.net Twitter: @icecoder -#ICEcoder License -##Standard Open Source Initiative MIT License +# ICEcoder License + +## Standard Open Source Initiative MIT License + 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 @@ -27,4 +29,4 @@ THE SOFTWARE. Please note that this LICENSE file covers the ICEcoder shell IDE only and 3rd party code, in subfolders such as CodeMirror and plugins, may contain their own LICENSE files, and may not also be an MIT licence. -``` \ No newline at end of file +``` From b488cabe71d0a2eee26fd0b6144bf1f28140f1d5 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sat, 15 Jun 2019 02:36:16 -0300 Subject: [PATCH 014/704] Torres Digital Theme for ICECoder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A simple ICECoder theme created for Torres Digital -Sites → Lojas Virtuais e e-Commerce. --- .../theme/2019-torres-digital-theme.css | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 CodeMirror/theme/2019-torres-digital-theme.css diff --git a/CodeMirror/theme/2019-torres-digital-theme.css b/CodeMirror/theme/2019-torres-digital-theme.css new file mode 100644 index 00000000..2cd5a2ba --- /dev/null +++ b/CodeMirror/theme/2019-torres-digital-theme.css @@ -0,0 +1,47 @@ +/* Theme Name: 2019 Torres Digital® 🇧🇷 + + Author: Torres Digital® | Sites → Lojas Virtuais e e-Commerce + 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. + + www.torresdigital.tk * Menos é mais. + + Version: 2.0 *//* 15 de Junho de 2019 - 00h:04m:41s + +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +This theme is licensed under the GPL. Use it to make something cool, have fun, and share what you’ve learned with others. */ + +/*All Begin*/ +.cm-s-2019-torres-digital-theme.CodeMirror { background:/* #2D223F*/ #251C36; color:#fff; } +.cm-s-2019-torres-digital-theme div.CodeMirror-selected { background: #2D2D2D; } +.cm-s-2019-torres-digital-theme .CodeMirror-line::selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span::selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-2019-torres-digital-theme .CodeMirror-line::-moz-selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span::-moz-selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-2019-torres-digital-theme .CodeMirror-gutters { background: #090412; border-right: 3px solid #442E46; } +.cm-s-2019-torres-digital-theme .CodeMirror-guttermarker { color: #0f0; } +.cm-s-2019-torres-digital-theme .CodeMirror-guttermarker-subtle { color: white; } +.cm-s-2019-torres-digital-theme .CodeMirror-linenumber { color: #FFFFFF; } +.cm-s-2019-torres-digital-theme .CodeMirror-cursor { border-left: 1px solid #00FF00; } + +.cm-s-2019-torres-digital-theme span.cm-keyword { color: #008803; font-weight: bold; } +.cm-s-2019-torres-digital-theme span.cm-atom { color: #49E6FF; } +.cm-s-2019-torres-digital-theme span.cm-number { color: /*#FFB94F*/ /*#E7FB40*/ #FDE231; } +.cm-s-2019-torres-digital-theme span.cm-def { color: #99C; } +.cm-s-2019-torres-digital-theme span.cm-variable { color: #F6C; } +.cm-s-2019-torres-digital-theme span.cm-variable-2 { color: #C6F; } +.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-operator { color: #999; } +.cm-s-2019-torres-digital-theme span.cm-comment { color: #616163; } +.cm-s-2019-torres-digital-theme span.cm-string { color: #39C; } +.cm-s-2019-torres-digital-theme span.cm-meta { color: #C9F; } +.cm-s-2019-torres-digital-theme span.cm-qualifier { color: #FFF700; } +.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-tag { color: #FFBD40; } +.cm-s-2019-torres-digital-theme span.cm-attribute { color: #FFF700; } +.cm-s-2019-torres-digital-theme span.cm-error { color: #FF0000; } + +.cm-s-2019-torres-digital-theme .CodeMirror-activeline-background { background: #040; } From bf1fdf80f3b083db334289897d8105a6ed437930 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sat, 15 Jun 2019 07:30:55 -0300 Subject: [PATCH 015/704] 2019 Torres Digital ICECoder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A New Theme for ICECOder by Torres Digital -Sites → Lojas Virtuais e e-Commerce --- .../theme/2019-torres-digital-theme.css | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 CodeMirror/theme/2019-torres-digital-theme.css diff --git a/CodeMirror/theme/2019-torres-digital-theme.css b/CodeMirror/theme/2019-torres-digital-theme.css new file mode 100644 index 00000000..30e1238a --- /dev/null +++ b/CodeMirror/theme/2019-torres-digital-theme.css @@ -0,0 +1,47 @@ +/* Theme Name: 2019 Torres Digital® 🇧🇷 + + Author: Torres Digital® | Sites → Lojas Virtuais e e-Commerce + 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. + + www.torresdigital.tk * Menos é mais. + + Version: 2.0 *//* 15 de Junho de 2019 - 00h:04m:41s + +License: GNU General Public License v2 or later +License URI: http://www.gnu.org/licenses/gpl-2.0.html + +This theme is licensed under the GPL. Use it to make something cool, have fun, and share what you’ve learned with others. */ + +/*All Begin*/ +.cm-s-2019-torres-digital-theme.CodeMirror { background:/* #2D223F*/ #251C36; color:#fff; } +.cm-s-2019-torres-digital-theme div.CodeMirror-selected { background: #2D2D2D; } +.cm-s-2019-torres-digital-theme .CodeMirror-line::selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span::selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-2019-torres-digital-theme .CodeMirror-line::-moz-selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span::-moz-selection, .cm-s-2019-torres-digital-theme .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-2019-torres-digital-theme .CodeMirror-gutters { background: #090412; border-right: 3px solid #442E46; } +.cm-s-2019-torres-digital-theme .CodeMirror-guttermarker { color: #0f0; } +.cm-s-2019-torres-digital-theme .CodeMirror-guttermarker-subtle { color: white; } +.cm-s-2019-torres-digital-theme .CodeMirror-linenumber { color: #FFFFFF; } +.cm-s-2019-torres-digital-theme .CodeMirror-cursor { border-left: 1px solid #00FF00; } + +.cm-s-2019-torres-digital-theme span.cm-keyword { color: #21ff26; font-weight: bold; } +.cm-s-2019-torres-digital-theme span.cm-atom { color: #49E6FF; } +.cm-s-2019-torres-digital-theme span.cm-number { color: /*#FFB94F*/ /*#E7FB40*/ #FDE231; } +.cm-s-2019-torres-digital-theme span.cm-def { color: #99C; } +.cm-s-2019-torres-digital-theme span.cm-variable { color: #FFE100; } +.cm-s-2019-torres-digital-theme span.cm-variable-2 { color: #C6F; } +.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-operator { color: #999; } +.cm-s-2019-torres-digital-theme span.cm-comment { color: #616163; } +.cm-s-2019-torres-digital-theme span.cm-string { color:#565eff; } +.cm-s-2019-torres-digital-theme span.cm-meta { color: #F1FD31; } +.cm-s-2019-torres-digital-theme span.cm-qualifier { color: #FFF700; } +.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-tag { color: #FFBD40; } +.cm-s-2019-torres-digital-theme span.cm-attribute { color: #FFF700; } +.cm-s-2019-torres-digital-theme span.cm-error { color: #FF0000; } + +.cm-s-2019-torres-digital-theme .CodeMirror-activeline-background { background: #040; } From 281e0f5617e74c058e6e7a376ed90111e1d87b71 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sun, 16 Jun 2019 03:47:47 -0300 Subject: [PATCH 016/704] Updating the Scheme Colors Updating the Scheme Colors of the theme. ;) --- CodeMirror/theme/2019-torres-digital-theme.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CodeMirror/theme/2019-torres-digital-theme.css b/CodeMirror/theme/2019-torres-digital-theme.css index 2cd5a2ba..5aae05d7 100644 --- a/CodeMirror/theme/2019-torres-digital-theme.css +++ b/CodeMirror/theme/2019-torres-digital-theme.css @@ -25,18 +25,18 @@ This theme is licensed under the GPL. Use it to make something cool, have fun, a .cm-s-2019-torres-digital-theme .CodeMirror-linenumber { color: #FFFFFF; } .cm-s-2019-torres-digital-theme .CodeMirror-cursor { border-left: 1px solid #00FF00; } -.cm-s-2019-torres-digital-theme span.cm-keyword { color: #008803; font-weight: bold; } +.cm-s-2019-torres-digital-theme span.cm-keyword { color: #ADFF2F; font-weight: bold; } .cm-s-2019-torres-digital-theme span.cm-atom { color: #49E6FF; } .cm-s-2019-torres-digital-theme span.cm-number { color: /*#FFB94F*/ /*#E7FB40*/ #FDE231; } -.cm-s-2019-torres-digital-theme span.cm-def { color: #99C; } -.cm-s-2019-torres-digital-theme span.cm-variable { color: #F6C; } +.cm-s-2019-torres-digital-theme span.cm-def { color: #15E4D7;font-weight: bold; } +.cm-s-2019-torres-digital-theme span.cm-variable { color: #FFF700; } .cm-s-2019-torres-digital-theme span.cm-variable-2 { color: #C6F; } .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-operator { color: #999; } .cm-s-2019-torres-digital-theme span.cm-comment { color: #616163; } -.cm-s-2019-torres-digital-theme span.cm-string { color: #39C; } -.cm-s-2019-torres-digital-theme span.cm-meta { color: #C9F; } +.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-qualifier { color: #FFF700; } .cm-s-2019-torres-digital-theme span.cm-builtin { color: #F8A901; } .cm-s-2019-torres-digital-theme span.cm-bracket { color: #cc7; } From d61e263e0e11da84a1b7b674bdcc8b526f615f52 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Mon, 17 Jun 2019 21:04:10 +0100 Subject: [PATCH 017/704] Updated CSS hack for Chrome and Safari only Avoids this CSS being applied to other browers such as Firefox and IE where it causes tree misalignment of dirs --- lib/file-types.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/file-types.css b/lib/file-types.css index 226f88d6..5ed3e9fb 100644 --- a/lib/file-types.css +++ b/lib/file-types.css @@ -17,9 +17,9 @@ } .fileManager LI.dirOpen:before {background-position: -16px 0} -@media screen and (-webkit-min-device-pixel-ratio:0) { /* hacked for chrome and safari */ +@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { /* hacked for chrome and safari */ .fileManager LI.pft-directory:before, .fileManager LI.pft-file:before { margin-top: -19px; } } -.fileManager LI.pft-file:before {background-position: -32px 0} \ No newline at end of file +.fileManager LI.pft-file:before {background-position: -32px 0} From 0e463bf683f39352ec58ea691e09b7c7c55b2b57 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Mon, 15 Jul 2019 00:27:29 -0300 Subject: [PATCH 018/704] =?UTF-8?q?=F0=9F=9A=80=20Variables=20Colors=20-?= =?UTF-8?q?=20Update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updating the Variables Colors in the theme .. --- CodeMirror/.DS_Store | Bin 0 -> 6148 bytes CodeMirror/theme/2019-torres-digital-theme.css | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 CodeMirror/.DS_Store diff --git a/CodeMirror/.DS_Store b/CodeMirror/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..513cca5fb8644ccad56bec9ab883d6c452ee4312 GIT binary patch literal 6148 zcmeHKO;Zyw7=B+U+WNT&BBIW$_M)Q)81aLHV=bWK7u7O+C|Y;hKr=3z&hBDGrr4w7 z!5`q!?}INFtc=F%{-(*v0K@VIUNB8X{&zt0Vlg+bDvH<{0&lY+B3;>8z zk{H`W*)L4C%e2Otbj=1rRDHNZj>y}Nu-9;-ib#P-fxk}yxprH?f&%>n)URK;C0wF( za!Hwb^k#5?gI%}EC2MgNYa_)CK|c(_70AM1BOAR{>=p>12n=R`H8Pu8B$E;@Em1C? zbD3$E{gU2ie%K|4`$2d2Cv0ktwQSfJPi#_VwC=c>EsAnBu!31XZFx6Ti5Hly{fre9 zYyOB3&a!XWqnwpw_>6M~4iDxM%5p~M{CscU5woYSyK=;w?>Tys3deg-R4T1_DIVW*=-8Rd6Q#)@|EKmA3Ys9lJVrckS7` zudB<<8Ev+ezccO0`Sc4%cxh*rjq|*4v;00A57@mxIyqyGFKu_`$~oC z>zv1!dt=(;h2g0wp9SMNW4oXCgyUp{&jT*piMrN_NuOTWP{3w}+$ljLN-c*=lID*x z&nH|HKR#i3p5;!n^xRFyvY9jNrbQ5l8OfBr(M0rHQ6ptbR-U`l$3uBeC{ zDG({}KPVvg2a}S-l*Vd^YU`j(T>%JVRIQAB`AHySOpPgx)exzL48u^uFckF_1H*8t zH#IM%u^M6+4yZ35s7FS9LqRn<^=~RVU@F8Yj}(X$XjGs%EE@9sAN>9OzcDB(MG8a; z{8I{GY#=+3rYY&Ob Date: Mon, 12 Aug 2019 23:45:01 +0100 Subject: [PATCH 019/704] 4 x lang files no longer need trial strings --- lang/dutch.php | 2 - lang/english.php | 1044 +++++++++++++++++++++++----------------------- lang/italian.php | 2 - lang/spanish.php | 2 - 4 files changed, 521 insertions(+), 529 deletions(-) diff --git a/lang/dutch.php b/lang/dutch.php index 55bff09d..b82c4b27 100644 --- a/lang/dutch.php +++ b/lang/dutch.php @@ -21,8 +21,6 @@ "your device" => "Uw apparaat", "Browser" => "Browser:", "Your IP" => "Uw IP:", - "trial remaining" => "Resterende demo tijd", - "days left" => "dagen", "files" => "bestanden", "Last 10 files..." => "Laatste 10 geopende bestanden:", "none" => "[none]", diff --git a/lang/english.php b/lang/english.php index 91d90861..7ef53d3a 100644 --- a/lang/english.php +++ b/lang/english.php @@ -1,523 +1,521 @@ - and HTML equivalents (eg &). Translations on right side. - -$text = array( - -// / [ROOT LEVEL] - - "editor" => - array( - "server" => "server", - "Server name, OS..." => "Server name, OS & IP:", - "Root" => "Root:", - "ICEcoder root" => "ICEcoder root:", - "PHP version" => "PHP version:", - "Date & time" => "Date & time:", - "your device" => "your device", - "Browser" => "Browser:", - "Your IP" => "Your IP:", - "trial remaining" => "trial remaining", - "days left" => "days left", - "files" => "files", - "Last 10 files..." => "Last 10 files opened:", - "none" => "[none]", - "test suite" => "test suite", - "Run unit tests" => "Run unit tests", - "dev mode" => "dev mode", - "Status" => "Status", - "Using" => "Using", - "You can switch..." => "You can switch dev mode on/off in lib/config__settings.php" - - ), - - "files" => - array( - "Lock" => "Lock", - "Refresh" => "Refresh", - "Plugins" => "Plugins", - "ROOT" => "[ROOT]" - - ), - - "index" => - array( - "UPDATE INFO" => "UPDATE INFO", - "now available" => "now available", - "Your version is" => "Your version is", - "Update now" => "Update now", - "You have some..." => "You have some unsaved changes", - "Are you sure..." => "Are you sure you want to close?", - "working" => "working", - "Color picker" => "Color picker", - "Plugins Manager" => "Plugins Manager", - "New File" => "New File", - "New Folder" => "New Folder", - "Upload File(s)" => "Upload File(s)", - "Paste" => "Paste", - "Open" => "Open", - "Copy" => "Copy", - "Duplicate" => "Duplicate", - "Delete" => "Delete", - "Rename" => "Rename", - "View Webpage" => "View Webpage", - "Download" => "Download", - "Properties" => "Properties", - "File" => "File", - "Edit" => "Edit", - "Source" => "Source", - "Help" => "Help", - "Save" => "Save", - "Save As" => "Save As", - "Live Preview" => "Live Preview", - "Upload" => "Upload", - "Zip" => "Zip", - "Print" => "Print", - "Fullscreen toggle" => "Fullscreen toggle", - "Logout" => "Logout", - "Undo" => "Undo", - "Redo" => "Redo", - "Indent more" => "Indent more", - "Indent less" => "Indent less", - "Autocomplete" => "Autocomplete", - "Comment/Uncomment" => "Comment/Uncomment", - "Jump to Definition" => "Jump to Definition", - "Manual" => "Manual", - "Shortcuts" => "Shortcuts", - "Settings" => "Settings", - "Search for selected" => "Search for selected", - "website" => "website", - "Close all tabs" => "Close all tabs", - "Alphabetize tabs" => "Alphabetize tabs", - "Find" => "Find", - "in" => "in", - "and" => "and", - "replace" => "replace", - "replace all" => "replace all", - "this document" => "this document", - "open documents" => "open documents", - "all files" => "all files", - "all filenames" => "all filenames", - "Turn on/off..." => "Turn on/off code assist", - "Code Assist" => "Code Assist", - "Go to Line" => "Go to Line", - "View" => "View", - "Bug reporting not active" => "Bug reporting not active", - "Single pane" => "Single pane", - "Diff pane also" => "Diff pane also" - ), - -// /LIB - - "auto-logout-warning" => - array( - "Auto Logout Warning" => "Auto logout warning", - "You will be..." => "You will be logged out after", - "seconds due to..." => "seconds due to inactivity, for security purposes. Use the mouse or hit a key to continue.

You can adjust or disable this from the Edit > Settings section." - ), - - "backup-versions" => - array( - "backup" => "backup", - "backups" => "backups", - "available for" => "available for" - ), - - "bug-files-check" => - array( - "Found in" => "Found in:" - ), - - "file-control" => - array( - "Sorry, bad filename..." => "Sorry, bad filename provided. Check the dev tools console for more info?", - "Sorry" => "Sorry", - "does not seem..." => "does not seem to exist on the server", - "Sorry, could not..." => "Sorry, could not get contents of", - "Sorry, cannot create..." => "Sorry, cannot create folder at", - "Sorry, cannot copy" => "Sorry, cannot copy", - "into" => "into", - "Uploaded file(s) OK" => "Uploaded file(s) OK", - "Sorry, cannot upload" => "Sorry, cannot upload", - "Sorry, cannot upload..." => "Sorry, cannot upload whilst in demo mode", - "Sorry, cannot rename" => "Sorry, cannot rename", - "Maybe public write..." => "Maybe public write permissions needed on this or parent folder?", - "Sorry, cannot move" => "Sorry, cannot move", - "Sorry, cannot save" => "Sorry, cannot save", - "Sorry, cannot replace..." => "Sorry, cannot replace text in", - "Sorry, cannot change..." => "Sorry, cannot change permissions on", - "Sorry, cannot delete more..." => "Sorry, cannot delete more then one item at a time under FTP mode", - "Sorry, cannot delete..." => "Sorry, cannot delete the root level", - "Sorry, cannot delete" => "Sorry, cannot delete", - "Sorry, this file..." => "Sorry, this file has changed outside of ICEcoder, cannot save", - "Reload this file..." => "Reload this file and copy your version to a diff pane?\\\\n(left side = file from server, right side = unsaved file)", - "There was a..." => "There was a tech hiccup, likely something was not quite ready. So ICEcoder reloaded its file control again.", - "displayed at" => "displayed at", - "Enter filename to..." => "Enter filename to save at", - "That file exists..." => "That file exists already, overwrite?", - "Saving" => "Saving" - ), - - "ftp-manager" => - array( - "Saving FTP sites" => "Saving FTP sites", - "Cannot update config..." => "Cannot update config file. Please set public write permissions on", - "and try again" => "and try again", - "ftp manager" => "ftp manager", - "Choose existing site" => "Choose existing site", - "Are you sure..." => "Are you sure you wish to remove this site?", - "Add new site" => "Add new site", - "Edit site" => "Edit site", - "Site base" => "Site base", - "Host" => "Host", - "Username" => "Username", - "Password" => "Password", - "PASV and mode" => "PASV and mode", - "Root" => "Root", - "eg http://yourdomain.com" => "eg http://yourdomain.com", - "eg ftp.yourdomain.com" => "eg ftp.yourdomain.com", - "eg user123" => "eg user123", - "eg pass123" => "eg pass123", - "Use PASV mode..." => "Use PASV mode if your FTP site requires it and choose the data transfer type - ASCII or binary", - "eg /htdocs" => "eg /htdocs", - "PASV connection off" => "PASV connection off", - "PASV connection on" => "PASV connection on", - "ASCII transfer" => "ASCII transfer", - "Binary transfer" => "Binary transfer", - "Add" => "Add", - "Choose" => "Choose", - "Update" => "Update" - ), - - "get-branch" => - array( - "There are no..." => "There are no differences between the local and GitHub repo. Switch back to regular mode?", - "Sorry, there was..." => "Sorry, there was an error, code:", - "Your local folder..." => "Your local folder is empty, would you like to clone" - ), - - "github-manager" => - array( - "Sorry, cannot create..." => "Sorry, cannot create folder at", - "Cannot update config..." => "Cannot update config file. Please set public write permissions on", - "and try again" => "and try again", - "saving github paths" => "saving github paths...", - "github paths" => "github paths", - "Choose existing path" => "Choose existing path", - "Local path" => "Local path", - "Slash prefixed" => "Slash prefixed", - "Remote GitHub path" => "Remote GitHub path", - "Absolute URL beginning..." => "Absolute URL, beginning https://github.com", - "Choose" => "Choose", - "Set local and..." => "Set local and remote path to blank to remove", - "Update" => "Update", - "Add new path" => "Add new path", - "Add" => "Add", - "Usage Info" => "Usage Info:", - "Enter relative local..." => "Enter relative local paths (eg /server/myfiles) and absolute GitHub paths (eg https://github.com/user/repo or https://github.com/user/repo/tree/branch for branches), as per the examples. With this done you have established the source paths at both locations, as a pair.", - "You can then..." => "You can then choose a path pair and this then becomes your new root path in ICEcoder.", - "The file manager..." => "The file manager then displays a new GitHub icon, which you can click on to perform and show a diff check between the 2 sources. These diffs can then be committed and pushed to the remote path at GitHub or cloned to your local path, to sync your files.", - "If you want..." => "If you want to set another root path, this can be done in the Settings screen." - ), - - "github" => - array( - "Sorry, you do..." => "Sorry, you do not appear to have OpenSSL loaded on your PHP instance, so https is not available. This is required for GitHub data transfer, please amend php.ini settings, restart your server and try again" - ), - - "headers" => - array( - "Bad CSRF token..." => "Bad CSRF token. Please report the error info at https://github.com/mattpass/ICEcoder so it can be fixed." - ), - - "help" => - array( - "shortcuts" => "shortcuts", - "Within document" => "Within document", - "On Tabs" => "On Tabs", - "Within file manager" => "Within file manager", - "Anywhere" => "Anywhere", - "Space" => "Space", - "Click" => "Click", - "or" => "or", - "Left click" => "Left click", - "Middle click" => "Middle click", - "Double click tap..." => "Double click / tap (mobile)", - "Right click" => "Right click", - "Middle scrollwheel" => "Middle scrollwheel", - "Drag" => "Drag", - "Autocomplete add snippet" => "Autocomplete / add snippet", - "Multiple select" => "Multiple select", - "Move line up" => "Move line up", - "Move line down" => "Move line down", - "Duplicate lines" => "Duplicate line(s)", - "Remove lines" => "Remove line(s)", - "Insert line before" => "Insert line before", - "Insert line after" => "Insert line after", - "Search for selected" => "Search for selected", - "Jump to definition" => "Jump to definition / jump back", - "Comment uncomment" => "Comment / uncomment", - "Insert tab indent" => "Insert tab / auto indent selected", - "Insert more" => "Indent more", - "Insert less" => "Indent less", - "Wrap with div" => "Wrap with <div>", - "Wrap with span" => "Wrap with <span>", - "Wrap unwrap p" => "Wrap / unwrap with <p>", - "Wrap unwrap a" => "Wrap / unwrap with <a>", - "Wrap unwrap b" => "Wrap / unwrap with <b>", - "Wrap unwrap i" => "Wrap / unwrap with <i>", - "Wrap unwrap strong" => "Wrap / unwrap with <strong>", - "Wrap unwrap em" => "Wrap / unwrap with <em>", - "Wrap unwrap li" => "Wrap / unwrap with <li>", - "Wrap unwrap h1..." => "Wrap / unwrap with <h1> - <h3>", - "End line with..." => "End line with <br>", - "Close tab" => "Close tab", - "Select file folder" => "Select file / folder", - "Open file" => "Open file", - "Range select" => "Range select", - "Options for selected" => "Options for selected", - "Delete selected" => "Delete selected", - "Next previous tab" => "Next / previous tab", - "Next tab" => "Next tab", - "Previous tab" => "Previous tab", - "New tab" => "New tab", - "Close current tab" => "Close current tab", - "Open file prompt" => "Open file prompt", - "Find" => "Find", - "Previous" => "Previous", - "Focus on Go..." => "Focus on Go to line input", - "Save" => "Save", - "Save as" => "Save as...", - "View webpage" => "View webpage", - "Contract expand file..." => "Contract / expand file manager", - "Fold unfold current..." => "Fold / unfold current line", - "Refocus on document" => "Refocus on document", - "Cancel tasks" => "Cancel tasks" - ), - - "ice-coder" => - array( - "results" => "results", - "No text selected..." => "No text selected to search on", - "all files" => "all files", - "all filenames" => "all filenames", - "selected files" => "selected files", - "selected filenames" => "selected filenames", - "Creating Folder" => "Creating Folder", - "Sorry you can..." => "Sorry, you can only have 100 files open at a time!", - "Opening File" => "Opening File", - "Enter relative file..." => "Enter relative file path (prefixed with /) or remote URL\\nYou can enter \\n'/path/file:123' or \\n'/path/file(123)' or \\n'/path/file.ext line 123' \\nto go directly to particular line", - "Getting" => "Getting", - "Saving" => "Saving:", - "Please enter the..." => "Please enter the new name for", - "Renaming to" => "Renaming to", - "Moving to" => "Moving to", - "Deleting File" => "Deleting File", - "Pasting File" => "Pasting File", - "Sorry cannot paste..." => "Sorry, cannot paste a whole root", - "Nothing to paste..." => "Nothing to paste, copy a file/folder first!", - "and" => "and", - "this document" => "this document", - "replace" => "replace", - "replace all" => "replace all", - "file" => "file", - "Replacing text in" => "Replacing text in", - "Sorry there was..." => "Sorry, there was an error with your request.\\n\\nPlease check your dev tools console for more info.", - "Cancelled tasks" => "Cancelled tasks", - "Open previous files" => "Open previous files?", - "Please enter your..." => "Please enter your GitHub token (either personal access token or client/secret pair token). See tooltip next to Github Auth Token on Help > Settings screen for more info", - "This will compare..." => "This will compare and show a diff view between your local dir and the repo. OK?", - "Please note for..." => "Please note: for updating to work properly, you need to have write access on all ICEcoder dirs & files. It will first check if this is the case and list any unwriteable (and therefore unmoveable) files.\\n\\nIf you need to recover this version of ICEcoder for any reason, you'll find it in the /tmp dir.\\n\\nClick OK to proceed with the check and auto-update, or cancel to visit the ICEcoder site so you can grab the zip and update manually.", - "You can start..." => "You can start bug reporting in Help > Settings", - "Error cannot find..." => "Error: cannot find/access the error file paths", - "No new errors..." => "No new errors found", - "You have made..." => "You have made changes. Are you sure you want to close without saving?", - "Close all tabs" => "Close all tabs?" - ), - - "login" => - array( - "set password" => "set password", - "login" => "login", - "To disable registration..." => "To disable registration mode, open the settings menu or open lib/config___settings.php and change enableRegistration to false then reload this page", - "Registration mode enabled" => "Registration mode enabled", - "disable further registrations" => "disable further registrations", - "auto-check for updates" => "auto-check for updates", - "To put into..." => "To put into multi-user mode, open the settings menu or open lib/config___settings.php and change multiUser to true then reload this page", - "multi-user" => "multi-user" - ), - - "multiple-results" => - array( - "rename all" => "rename all", - "replace all" => "replace all", - "document" => "document", - "Found" => "Found", - "times" => "times", - "replace" => "replace", - "file folder" => "file/folder", - "rename to" => "rename to", - "rename" => "rename", - "file" => "file", - "No matches found" => "No matches found", - "selected" => "selected", - "found in" => "found in", - "Replaced" => "Replaced" - ), - - "plugins-manager" => - array( - "ICEcoder needs to..." => "ICEcoder needs to reload to make this plugin usable. Reload now?", - "saving plugins" => "saving plugins...", - "Cannot update config..." => "Cannot update config file. Please set public write permissions on", - "and try again" => "and try again", - "couldnt delete dir" => "could not delete dir", - "couldnt delete file" => "could not delete file", - "plugins" => "plugins", - "Guide to writing..." => "Guide to writing plugins", - "Manage Installed" => "Manage Installed", - "URL" => "URL", - "Target" => "Target", - "Timer" => "Timer", - "Update" => "Update", - "Install" => "Install", - "Uninstall" => "Uninstall", - "Reload after install..." => "Reload after install required" - ), - - "properties" => - array( - "properties" => "properties", - "Size" => "Size", - "Modified" => "Modified", - "Last access" => "Last access", - "Type" => "Type", - "Readable Writeable" => "Readable / Writeable", - "Relative path" => "Relative path", - "Absolute path" => "Absolute path", - "Contains" => "Contains", - "Permissions" => "Permissions", - "Owner" => "Owner", - "Group" => "Group", - "Public" => "Public", - "Read" => "Read", - "Write" => "Write", - "Execute" => "Execute", - "Change to" => "Change to", - "update" => "update" - ), - - "settings-common" => - array( - "Your document does..." => "Your document does not appear to be in UTF-8 encoding so has been converted" - ), - - "settings-save-current-files" => - array( - "Cannot update config..." => "Cannot update config file. Please set public write permissions on", - "and try again" => "and try again" - ), - - "settings-screen" => - array( - "settings" => "settings", - "version" => "version", - "website" => "website", - "git" => "git", - "codemirror dir" => "codemirror dir", - "codemirror version" => "codemirror version", - "file manager root" => "file manager root", - "backups" => "backups", - "keep version control..." => "keep version control backups for", - "day" => "day", - "days" => "days", - "of backups stored..." => "of backups stored currently", - "deleting actually moves..." => "deleting actually moves to ICEcoder's tmp dir", - "local/server items..." => "local/server items only", - "Get in contact..." => "Get in contact by...", - "You may use..." => "You may use ICEcoder for your own purposes, commercial or not, just let us know of any cool uses or customisations. :)

No warranty or liability accepted for anything, all responsibility of use is your own.", - "functionality" => "functionality", - "check for updates..." => "check for updates on load", - "auto open last..." => "auto open last files on login", - "when finding in..." => "when finding in files, exclude", - "assisting" => "assisting", - "code assist" => "code assist", - "visible tabs" => "visible tabs", - "locked nav" => "locked nav", - "tag wrapper command" => "tag wrapper command", - "auto-complete on" => "auto-complete on", - "security" => "security", - "new password" => "new password", - "8 chars min" => "8 chars min", - "confirm password" => "confirm password", - "banned files/folders" => "banned files/folders", - "banned paths" => "banned paths", - "ip addresses" => "ip addresses", - "auto-logout after" => "auto-logout after", - "mins of inactivity..." => "mins of inactivity if no unsaved files", - "Slash prefixed comma..." => "Slash prefixed, comma delimited", - "Comma delimited" => "Comma delimited", - "style" => "style", - "theme" => "theme", - "line wrapping" => "line wrapping", - "line numbers" => "line numbers", - "indent type" => "indent type", - "indent size" => "indent size", - "match brackets" => "match brackets", - "show trailing space" => "show trailing space", - "font size" => "font size", - "auto indent" => "auto indent", - "auto close tags" => "auto close tags", - "auto close brackets" => "auto close brackets", - "layout" => "layout", - "plugin panel aligned" => "plugin panel aligned", - "file manager" => "file manager", - "root" => "root", - "Set 0 to..." => "Set 0 to disable", - "Slash prefixed" => "Slash prefixed", - "bug reporting" => "bug reporting", - "check in files" => "check in files", - "every" => "every", - "secs getting last" => "secs, getting last", - "lines" => "lines", - "multi-user" => "multi-user", - "Make sure you..." => "Make sure you do not lock yourself out", - "Registration" => "Registration", - "auth token" => "auth token", - "Required to get..." => "Required to get diffs, commit to your GitHub hosted repo etc. If you do not have one, you can use a:".PHP_EOL.PHP_EOL. - "- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL. - "- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL. - "It is not recommended you set your token here however and is more secure to enter it when requested by ICEcoder as that will keep it in session only.".PHP_EOL.PHP_EOL. - "However, if you work in a trusted and secure environment, it is more efficient to set it here.", - "Sorry cannot commit..." => "Sorry, cannot commit settings in demo mode", - "update" => "update" - ), - - "settings-update" => - array( - "Cannot update config..." => "Cannot update config file. Please set public write permissions on", - "and try again" => "and try again", - "and press refresh" => "and press refresh" - ), - - "updater" => - array( - "Update appears to..." => "Update appears to be successful" - ), - - "find-in-files" => - array( - "Enter path to search in" => "Enter path to search in", - "Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)" => "Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)", - "Type of text" => "Type of text", - "Fixed text" => "Fixed text", - "Regular expression" => "Regular expression", - "Case sensitive" => "Case sensitive", - "Yes" => "Yes", - "No" => "No", - "Search" => "Search", - ) -); + and HTML equivalents (eg &). Translations on right side. + +$text = array( + +// / [ROOT LEVEL] + + "editor" => + array( + "server" => "server", + "Server name, OS..." => "Server name, OS & IP:", + "Root" => "Root:", + "ICEcoder root" => "ICEcoder root:", + "PHP version" => "PHP version:", + "Date & time" => "Date & time:", + "your device" => "your device", + "Browser" => "Browser:", + "Your IP" => "Your IP:", + "files" => "files", + "Last 10 files..." => "Last 10 files opened:", + "none" => "[none]", + "test suite" => "test suite", + "Run unit tests" => "Run unit tests", + "dev mode" => "dev mode", + "Status" => "Status", + "Using" => "Using", + "You can switch..." => "You can switch dev mode on/off in lib/config__settings.php" + + ), + + "files" => + array( + "Lock" => "Lock", + "Refresh" => "Refresh", + "Plugins" => "Plugins", + "ROOT" => "[ROOT]" + + ), + + "index" => + array( + "UPDATE INFO" => "UPDATE INFO", + "now available" => "now available", + "Your version is" => "Your version is", + "Update now" => "Update now", + "You have some..." => "You have some unsaved changes", + "Are you sure..." => "Are you sure you want to close?", + "working" => "working", + "Color picker" => "Color picker", + "Plugins Manager" => "Plugins Manager", + "New File" => "New File", + "New Folder" => "New Folder", + "Upload File(s)" => "Upload File(s)", + "Paste" => "Paste", + "Open" => "Open", + "Copy" => "Copy", + "Duplicate" => "Duplicate", + "Delete" => "Delete", + "Rename" => "Rename", + "View Webpage" => "View Webpage", + "Download" => "Download", + "Properties" => "Properties", + "File" => "File", + "Edit" => "Edit", + "Source" => "Source", + "Help" => "Help", + "Save" => "Save", + "Save As" => "Save As", + "Live Preview" => "Live Preview", + "Upload" => "Upload", + "Zip" => "Zip", + "Print" => "Print", + "Fullscreen toggle" => "Fullscreen toggle", + "Logout" => "Logout", + "Undo" => "Undo", + "Redo" => "Redo", + "Indent more" => "Indent more", + "Indent less" => "Indent less", + "Autocomplete" => "Autocomplete", + "Comment/Uncomment" => "Comment/Uncomment", + "Jump to Definition" => "Jump to Definition", + "Manual" => "Manual", + "Shortcuts" => "Shortcuts", + "Settings" => "Settings", + "Search for selected" => "Search for selected", + "website" => "website", + "Close all tabs" => "Close all tabs", + "Alphabetize tabs" => "Alphabetize tabs", + "Find" => "Find", + "in" => "in", + "and" => "and", + "replace" => "replace", + "replace all" => "replace all", + "this document" => "this document", + "open documents" => "open documents", + "all files" => "all files", + "all filenames" => "all filenames", + "Turn on/off..." => "Turn on/off code assist", + "Code Assist" => "Code Assist", + "Go to Line" => "Go to Line", + "View" => "View", + "Bug reporting not active" => "Bug reporting not active", + "Single pane" => "Single pane", + "Diff pane also" => "Diff pane also" + ), + +// /LIB + + "auto-logout-warning" => + array( + "Auto Logout Warning" => "Auto logout warning", + "You will be..." => "You will be logged out after", + "seconds due to..." => "seconds due to inactivity, for security purposes. Use the mouse or hit a key to continue.

You can adjust or disable this from the Edit > Settings section." + ), + + "backup-versions" => + array( + "backup" => "backup", + "backups" => "backups", + "available for" => "available for" + ), + + "bug-files-check" => + array( + "Found in" => "Found in:" + ), + + "file-control" => + array( + "Sorry, bad filename..." => "Sorry, bad filename provided. Check the dev tools console for more info?", + "Sorry" => "Sorry", + "does not seem..." => "does not seem to exist on the server", + "Sorry, could not..." => "Sorry, could not get contents of", + "Sorry, cannot create..." => "Sorry, cannot create folder at", + "Sorry, cannot copy" => "Sorry, cannot copy", + "into" => "into", + "Uploaded file(s) OK" => "Uploaded file(s) OK", + "Sorry, cannot upload" => "Sorry, cannot upload", + "Sorry, cannot upload..." => "Sorry, cannot upload whilst in demo mode", + "Sorry, cannot rename" => "Sorry, cannot rename", + "Maybe public write..." => "Maybe public write permissions needed on this or parent folder?", + "Sorry, cannot move" => "Sorry, cannot move", + "Sorry, cannot save" => "Sorry, cannot save", + "Sorry, cannot replace..." => "Sorry, cannot replace text in", + "Sorry, cannot change..." => "Sorry, cannot change permissions on", + "Sorry, cannot delete more..." => "Sorry, cannot delete more then one item at a time under FTP mode", + "Sorry, cannot delete..." => "Sorry, cannot delete the root level", + "Sorry, cannot delete" => "Sorry, cannot delete", + "Sorry, this file..." => "Sorry, this file has changed outside of ICEcoder, cannot save", + "Reload this file..." => "Reload this file and copy your version to a diff pane?\\\\n(left side = file from server, right side = unsaved file)", + "There was a..." => "There was a tech hiccup, likely something was not quite ready. So ICEcoder reloaded its file control again.", + "displayed at" => "displayed at", + "Enter filename to..." => "Enter filename to save at", + "That file exists..." => "That file exists already, overwrite?", + "Saving" => "Saving" + ), + + "ftp-manager" => + array( + "Saving FTP sites" => "Saving FTP sites", + "Cannot update config..." => "Cannot update config file. Please set public write permissions on", + "and try again" => "and try again", + "ftp manager" => "ftp manager", + "Choose existing site" => "Choose existing site", + "Are you sure..." => "Are you sure you wish to remove this site?", + "Add new site" => "Add new site", + "Edit site" => "Edit site", + "Site base" => "Site base", + "Host" => "Host", + "Username" => "Username", + "Password" => "Password", + "PASV and mode" => "PASV and mode", + "Root" => "Root", + "eg http://yourdomain.com" => "eg http://yourdomain.com", + "eg ftp.yourdomain.com" => "eg ftp.yourdomain.com", + "eg user123" => "eg user123", + "eg pass123" => "eg pass123", + "Use PASV mode..." => "Use PASV mode if your FTP site requires it and choose the data transfer type - ASCII or binary", + "eg /htdocs" => "eg /htdocs", + "PASV connection off" => "PASV connection off", + "PASV connection on" => "PASV connection on", + "ASCII transfer" => "ASCII transfer", + "Binary transfer" => "Binary transfer", + "Add" => "Add", + "Choose" => "Choose", + "Update" => "Update" + ), + + "get-branch" => + array( + "There are no..." => "There are no differences between the local and GitHub repo. Switch back to regular mode?", + "Sorry, there was..." => "Sorry, there was an error, code:", + "Your local folder..." => "Your local folder is empty, would you like to clone" + ), + + "github-manager" => + array( + "Sorry, cannot create..." => "Sorry, cannot create folder at", + "Cannot update config..." => "Cannot update config file. Please set public write permissions on", + "and try again" => "and try again", + "saving github paths" => "saving github paths...", + "github paths" => "github paths", + "Choose existing path" => "Choose existing path", + "Local path" => "Local path", + "Slash prefixed" => "Slash prefixed", + "Remote GitHub path" => "Remote GitHub path", + "Absolute URL beginning..." => "Absolute URL, beginning https://github.com", + "Choose" => "Choose", + "Set local and..." => "Set local and remote path to blank to remove", + "Update" => "Update", + "Add new path" => "Add new path", + "Add" => "Add", + "Usage Info" => "Usage Info:", + "Enter relative local..." => "Enter relative local paths (eg /server/myfiles) and absolute GitHub paths (eg https://github.com/user/repo or https://github.com/user/repo/tree/branch for branches), as per the examples. With this done you have established the source paths at both locations, as a pair.", + "You can then..." => "You can then choose a path pair and this then becomes your new root path in ICEcoder.", + "The file manager..." => "The file manager then displays a new GitHub icon, which you can click on to perform and show a diff check between the 2 sources. These diffs can then be committed and pushed to the remote path at GitHub or cloned to your local path, to sync your files.", + "If you want..." => "If you want to set another root path, this can be done in the Settings screen." + ), + + "github" => + array( + "Sorry, you do..." => "Sorry, you do not appear to have OpenSSL loaded on your PHP instance, so https is not available. This is required for GitHub data transfer, please amend php.ini settings, restart your server and try again" + ), + + "headers" => + array( + "Bad CSRF token..." => "Bad CSRF token. Please report the error info at https://github.com/mattpass/ICEcoder so it can be fixed." + ), + + "help" => + array( + "shortcuts" => "shortcuts", + "Within document" => "Within document", + "On Tabs" => "On Tabs", + "Within file manager" => "Within file manager", + "Anywhere" => "Anywhere", + "Space" => "Space", + "Click" => "Click", + "or" => "or", + "Left click" => "Left click", + "Middle click" => "Middle click", + "Double click tap..." => "Double click / tap (mobile)", + "Right click" => "Right click", + "Middle scrollwheel" => "Middle scrollwheel", + "Drag" => "Drag", + "Autocomplete add snippet" => "Autocomplete / add snippet", + "Multiple select" => "Multiple select", + "Move line up" => "Move line up", + "Move line down" => "Move line down", + "Duplicate lines" => "Duplicate line(s)", + "Remove lines" => "Remove line(s)", + "Insert line before" => "Insert line before", + "Insert line after" => "Insert line after", + "Search for selected" => "Search for selected", + "Jump to definition" => "Jump to definition / jump back", + "Comment uncomment" => "Comment / uncomment", + "Insert tab indent" => "Insert tab / auto indent selected", + "Insert more" => "Indent more", + "Insert less" => "Indent less", + "Wrap with div" => "Wrap with <div>", + "Wrap with span" => "Wrap with <span>", + "Wrap unwrap p" => "Wrap / unwrap with <p>", + "Wrap unwrap a" => "Wrap / unwrap with <a>", + "Wrap unwrap b" => "Wrap / unwrap with <b>", + "Wrap unwrap i" => "Wrap / unwrap with <i>", + "Wrap unwrap strong" => "Wrap / unwrap with <strong>", + "Wrap unwrap em" => "Wrap / unwrap with <em>", + "Wrap unwrap li" => "Wrap / unwrap with <li>", + "Wrap unwrap h1..." => "Wrap / unwrap with <h1> - <h3>", + "End line with..." => "End line with <br>", + "Close tab" => "Close tab", + "Select file folder" => "Select file / folder", + "Open file" => "Open file", + "Range select" => "Range select", + "Options for selected" => "Options for selected", + "Delete selected" => "Delete selected", + "Next previous tab" => "Next / previous tab", + "Next tab" => "Next tab", + "Previous tab" => "Previous tab", + "New tab" => "New tab", + "Close current tab" => "Close current tab", + "Open file prompt" => "Open file prompt", + "Find" => "Find", + "Previous" => "Previous", + "Focus on Go..." => "Focus on Go to line input", + "Save" => "Save", + "Save as" => "Save as...", + "View webpage" => "View webpage", + "Contract expand file..." => "Contract / expand file manager", + "Fold unfold current..." => "Fold / unfold current line", + "Refocus on document" => "Refocus on document", + "Cancel tasks" => "Cancel tasks" + ), + + "ice-coder" => + array( + "results" => "results", + "No text selected..." => "No text selected to search on", + "all files" => "all files", + "all filenames" => "all filenames", + "selected files" => "selected files", + "selected filenames" => "selected filenames", + "Creating Folder" => "Creating Folder", + "Sorry you can..." => "Sorry, you can only have 100 files open at a time!", + "Opening File" => "Opening File", + "Enter relative file..." => "Enter relative file path (prefixed with /) or remote URL\\nYou can enter \\n'/path/file:123' or \\n'/path/file(123)' or \\n'/path/file.ext line 123' \\nto go directly to particular line", + "Getting" => "Getting", + "Saving" => "Saving:", + "Please enter the..." => "Please enter the new name for", + "Renaming to" => "Renaming to", + "Moving to" => "Moving to", + "Deleting File" => "Deleting File", + "Pasting File" => "Pasting File", + "Sorry cannot paste..." => "Sorry, cannot paste a whole root", + "Nothing to paste..." => "Nothing to paste, copy a file/folder first!", + "and" => "and", + "this document" => "this document", + "replace" => "replace", + "replace all" => "replace all", + "file" => "file", + "Replacing text in" => "Replacing text in", + "Sorry there was..." => "Sorry, there was an error with your request.\\n\\nPlease check your dev tools console for more info.", + "Cancelled tasks" => "Cancelled tasks", + "Open previous files" => "Open previous files?", + "Please enter your..." => "Please enter your GitHub token (either personal access token or client/secret pair token). See tooltip next to Github Auth Token on Help > Settings screen for more info", + "This will compare..." => "This will compare and show a diff view between your local dir and the repo. OK?", + "Please note for..." => "Please note: for updating to work properly, you need to have write access on all ICEcoder dirs & files. It will first check if this is the case and list any unwriteable (and therefore unmoveable) files.\\n\\nIf you need to recover this version of ICEcoder for any reason, you'll find it in the /tmp dir.\\n\\nClick OK to proceed with the check and auto-update, or cancel to visit the ICEcoder site so you can grab the zip and update manually.", + "You can start..." => "You can start bug reporting in Help > Settings", + "Error cannot find..." => "Error: cannot find/access the error file paths", + "No new errors..." => "No new errors found", + "You have made..." => "You have made changes. Are you sure you want to close without saving?", + "Close all tabs" => "Close all tabs?" + ), + + "login" => + array( + "set password" => "set password", + "login" => "login", + "To disable registration..." => "To disable registration mode, open the settings menu or open lib/config___settings.php and change enableRegistration to false then reload this page", + "Registration mode enabled" => "Registration mode enabled", + "disable further registrations" => "disable further registrations", + "auto-check for updates" => "auto-check for updates", + "To put into..." => "To put into multi-user mode, open the settings menu or open lib/config___settings.php and change multiUser to true then reload this page", + "multi-user" => "multi-user" + ), + + "multiple-results" => + array( + "rename all" => "rename all", + "replace all" => "replace all", + "document" => "document", + "Found" => "Found", + "times" => "times", + "replace" => "replace", + "file folder" => "file/folder", + "rename to" => "rename to", + "rename" => "rename", + "file" => "file", + "No matches found" => "No matches found", + "selected" => "selected", + "found in" => "found in", + "Replaced" => "Replaced" + ), + + "plugins-manager" => + array( + "ICEcoder needs to..." => "ICEcoder needs to reload to make this plugin usable. Reload now?", + "saving plugins" => "saving plugins...", + "Cannot update config..." => "Cannot update config file. Please set public write permissions on", + "and try again" => "and try again", + "couldnt delete dir" => "could not delete dir", + "couldnt delete file" => "could not delete file", + "plugins" => "plugins", + "Guide to writing..." => "Guide to writing plugins", + "Manage Installed" => "Manage Installed", + "URL" => "URL", + "Target" => "Target", + "Timer" => "Timer", + "Update" => "Update", + "Install" => "Install", + "Uninstall" => "Uninstall", + "Reload after install..." => "Reload after install required" + ), + + "properties" => + array( + "properties" => "properties", + "Size" => "Size", + "Modified" => "Modified", + "Last access" => "Last access", + "Type" => "Type", + "Readable Writeable" => "Readable / Writeable", + "Relative path" => "Relative path", + "Absolute path" => "Absolute path", + "Contains" => "Contains", + "Permissions" => "Permissions", + "Owner" => "Owner", + "Group" => "Group", + "Public" => "Public", + "Read" => "Read", + "Write" => "Write", + "Execute" => "Execute", + "Change to" => "Change to", + "update" => "update" + ), + + "settings-common" => + array( + "Your document does..." => "Your document does not appear to be in UTF-8 encoding so has been converted" + ), + + "settings-save-current-files" => + array( + "Cannot update config..." => "Cannot update config file. Please set public write permissions on", + "and try again" => "and try again" + ), + + "settings-screen" => + array( + "settings" => "settings", + "version" => "version", + "website" => "website", + "git" => "git", + "codemirror dir" => "codemirror dir", + "codemirror version" => "codemirror version", + "file manager root" => "file manager root", + "backups" => "backups", + "keep version control..." => "keep version control backups for", + "day" => "day", + "days" => "days", + "of backups stored..." => "of backups stored currently", + "deleting actually moves..." => "deleting actually moves to ICEcoder's tmp dir", + "local/server items..." => "local/server items only", + "Get in contact..." => "Get in contact by...", + "You may use..." => "You may use ICEcoder for your own purposes, commercial or not, just let us know of any cool uses or customisations. :)

No warranty or liability accepted for anything, all responsibility of use is your own.", + "functionality" => "functionality", + "check for updates..." => "check for updates on load", + "auto open last..." => "auto open last files on login", + "when finding in..." => "when finding in files, exclude", + "assisting" => "assisting", + "code assist" => "code assist", + "visible tabs" => "visible tabs", + "locked nav" => "locked nav", + "tag wrapper command" => "tag wrapper command", + "auto-complete on" => "auto-complete on", + "security" => "security", + "new password" => "new password", + "8 chars min" => "8 chars min", + "confirm password" => "confirm password", + "banned files/folders" => "banned files/folders", + "banned paths" => "banned paths", + "ip addresses" => "ip addresses", + "auto-logout after" => "auto-logout after", + "mins of inactivity..." => "mins of inactivity if no unsaved files", + "Slash prefixed comma..." => "Slash prefixed, comma delimited", + "Comma delimited" => "Comma delimited", + "style" => "style", + "theme" => "theme", + "line wrapping" => "line wrapping", + "line numbers" => "line numbers", + "indent type" => "indent type", + "indent size" => "indent size", + "match brackets" => "match brackets", + "show trailing space" => "show trailing space", + "font size" => "font size", + "auto indent" => "auto indent", + "auto close tags" => "auto close tags", + "auto close brackets" => "auto close brackets", + "layout" => "layout", + "plugin panel aligned" => "plugin panel aligned", + "file manager" => "file manager", + "root" => "root", + "Set 0 to..." => "Set 0 to disable", + "Slash prefixed" => "Slash prefixed", + "bug reporting" => "bug reporting", + "check in files" => "check in files", + "every" => "every", + "secs getting last" => "secs, getting last", + "lines" => "lines", + "multi-user" => "multi-user", + "Make sure you..." => "Make sure you do not lock yourself out", + "Registration" => "Registration", + "auth token" => "auth token", + "Required to get..." => "Required to get diffs, commit to your GitHub hosted repo etc. If you do not have one, you can use a:".PHP_EOL.PHP_EOL. + "- personal access token (https://help.github.com/articles/creating-an-access-token-for-command-line-use), or".PHP_EOL. + "- full client/secret pair token (http://developer.github.com/v3/oauth).".PHP_EOL.PHP_EOL. + "It is not recommended you set your token here however and is more secure to enter it when requested by ICEcoder as that will keep it in session only.".PHP_EOL.PHP_EOL. + "However, if you work in a trusted and secure environment, it is more efficient to set it here.", + "Sorry cannot commit..." => "Sorry, cannot commit settings in demo mode", + "update" => "update" + ), + + "settings-update" => + array( + "Cannot update config..." => "Cannot update config file. Please set public write permissions on", + "and try again" => "and try again", + "and press refresh" => "and press refresh" + ), + + "updater" => + array( + "Update appears to..." => "Update appears to be successful" + ), + + "find-in-files" => + array( + "Enter path to search in" => "Enter path to search in", + "Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)" => "Enter semicolon-separated masks of files to look at (e.g. *.php;*.html;*.js)", + "Type of text" => "Type of text", + "Fixed text" => "Fixed text", + "Regular expression" => "Regular expression", + "Case sensitive" => "Case sensitive", + "Yes" => "Yes", + "No" => "No", + "Search" => "Search", + ) +); diff --git a/lang/italian.php b/lang/italian.php index d79afb10..5f681f1c 100644 --- a/lang/italian.php +++ b/lang/italian.php @@ -25,8 +25,6 @@ "none" => "[none]", "test suite" => "prova suite", "trial remaining" => "tempo rimanente alla fine del periodo di prova", - "days left" => "giorni rimanenti", - "Run unit tests" => "Esegui test di unità", "dev mode" => "modalità sviluppo", "Status" => "Stato", "Using" => "Utilizzo", diff --git a/lang/spanish.php b/lang/spanish.php index b6a947e4..f47585ed 100644 --- a/lang/spanish.php +++ b/lang/spanish.php @@ -20,8 +20,6 @@ "your device" => "su dispositivo", "Browser" => "Navegador:", "Your IP" => "Su IP:", - "trial remaining" => "prueba restante", - "days left" => "dias", "files" => "archivos", "Last 10 files..." => "Ultimos 10 archivos abiertos:", "none" => "[ninguno]", From 07211b6ac331a94671b996e722eb2af3260ae2b4 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Mon, 12 Aug 2019 23:49:08 +0100 Subject: [PATCH 020/704] Italisn lang file - remove BOM, restore string --- lang/italian.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/italian.php b/lang/italian.php index 5f681f1c..4ae3e73c 100644 --- a/lang/italian.php +++ b/lang/italian.php @@ -1,4 +1,4 @@ - "Ultimi 10 file aperti:", "none" => "[none]", "test suite" => "prova suite", - "trial remaining" => "tempo rimanente alla fine del periodo di prova", + "Run unit tests" => "Esegui test di unità", "dev mode" => "modalità sviluppo", "Status" => "Stato", "Using" => "Utilizzo", From 9d8b695e35acd745521cb91666207f434a2d5fc5 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Mon, 12 Aug 2019 23:53:07 +0100 Subject: [PATCH 021/704] Remove trial bar remaining from editor --- editor.php | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/editor.php b/editor.php index ec297290..7700a1bd 100644 --- a/editor.php +++ b/editor.php @@ -87,18 +87,12 @@ .diffGreyLighter {background: #888 !important; color: #1d1d1b !important} .diffNone {} .info {font-size: 10px; color: rgba(0,198,255,0.7); cursor: help} -.trialBarContainer {display: inline-block; width: 170px; height: 8px; background: #0b0b0b; margin-bottom: 40px} -.trialBarRemaining {display: inline-block; width: 170px; height: 8px; background: rgba(0,198,255,0.7); box-shadow: 0 0 10px 1px rgba(0,198,255,0.5); - transition: width 0.7s ease-in-out; -} -.trialBarText {margin-top: 6px; color: #888} -.trialBarText a {color: #fff; text-decoration: none} - + @@ -123,15 +117,6 @@
- -

- - -


    Date: Mon, 12 Aug 2019 23:56:13 +0100 Subject: [PATCH 022/704] No need for 200ms delay now before auto-open --- lib/ice-coder.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/ice-coder.js b/lib/ice-coder.js index 6f5ec00d..c007d4a6 100644 --- a/lib/ice-coder.js +++ b/lib/ice-coder.js @@ -97,8 +97,7 @@ var ICEcoder = { top.ICEcoder.showHide('hide',top.get('loadingMask')); top.ICEcoder.autoOpenInt = setInterval(function() { if (top.ICEcoder.fmReady) { - // Delay auto open process by 200ms to give trial bar time to begin animation - if (top.ICEcoder.openLastFiles) {setTimeout(function() {top.ICEcoder.autoOpenFiles()},200);}; + if (top.ICEcoder.openLastFiles) {top.ICEcoder.autoOpenFiles();}; clearInterval(top.ICEcoder.autoOpenInt); } }, 4); @@ -4530,4 +4529,4 @@ var ICEcoder = { } } -}; \ No newline at end of file +}; From 75fc4382b018cda212f3fa774716bc6d52d9c452 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Mon, 12 Aug 2019 23:56:59 +0100 Subject: [PATCH 023/704] Update ice-coder.min.js --- lib/ice-coder.min.js | 335 ++++++++++++++++++++++--------------------- 1 file changed, 168 insertions(+), 167 deletions(-) diff --git a/lib/ice-coder.min.js b/lib/ice-coder.min.js index e78694dd..dd557814 100644 --- a/lib/ice-coder.min.js +++ b/lib/ice-coder.min.js @@ -1,149 +1,149 @@ var get=function(a){return top.document.getElementById(a)},ICEcoder={filesW:250,minFilesW:14,maxFilesW:250,selectedTab:0,savedPoints:[],savedContents:[],canSwitchTabs:!0,openFiles:[],openFileMDTs:[],openFileVersions:[],cMInstances:[],nextcMInstance:1,selectedFiles:[],findMode:!1,scrollbarVisible:!1,mouseDown:!1,mouseDownInCM:!1,mouseDownMinimap:!1,draggingFilesW:!1,draggingTab:!1,draggingWithKey:!1,tabLeftPos:[],tabBGcurrent:"#1d1d1b",tabBGselected:"#49d",tabBGopen:"#c3c3c3",tabBGnormal:"transparent", tabFGcurrent:"#fff",tabFGselected:"#fff",tabFGopenFile:"#000",tabFGnormalFile:"#eee",tabFGnormalTab:"#888",serverQueueItems:[],miniMapBoxTop:0,miniMapBoxHeight:0,previewWindow:!1,previewWindowLoading:!1,pluginIntervalRefs:[],overPopup:!1,cmdKey:!1,oppTagReplaceData:[],fmReady:!1,bugReportStatus:"off",bugReportPath:"",bugFilesSizesSeen:[],bugFilesSizesActual:[],githubDiff:!1,githubAuthTokenSet:!1,splitPane:!1,splitPaneLeftPerc:100,renderLineStyle:[],renderPaneShiftAmount:0,debounce:"",editorFocusInstance:"", openSeconds:0,ready:!1,initAliases:function(){for(var a="header files fileOptions optionsFile optionsEdit optionsSource optionsHelp filesFrame editor tabsBar findBar content terminal footer nestValid versionsDisplay splitPaneControls splitPaneNamesMain splitPaneNamesDiff charDisplay byteDisplay docExplorer miniMap miniMapContainer miniMapContent functionClassList".split(" "),b=0;b=60*top.ICEcoder.autoLogoutMins&&top.ICEcoder.logout("autoLogout");top.ICEcoder.openSeconds++;0==top.ICEcoder.openSeconds%300&&(top.ICEcoder.filesFrame.contentWindow.frames.pingActive.location.href="https://github.com/lib/session-active-ping.php")},1E3);top.ICEcoder.ready=!0},setLayout:function(a){var b,c;b=window.innerWidth;c=window.innerHeight;this.header.style.width= +ICEcoder.setLayout();top.ICEcoder.overFileFolder("folder","|");top.ICEcoder.selectFileFolder("init");top.ICEcoder.filesFrame.contentWindow.focus();top.ICEcoder.showHide("hide",top.get("loadingMask"));top.ICEcoder.autoOpenInt=setInterval(function(){top.ICEcoder.fmReady&&(top.ICEcoder.openLastFiles&&top.ICEcoder.autoOpenFiles(),clearInterval(top.ICEcoder.autoOpenInt))},4);setInterval(ICEcoder.updateNestingIndicator,30);top.ICEcoder.startBugChecking();top.ICEcoder.autoLogoutTimer=0;top.ICEcoder.oneSecondInt= +setInterval(function(){top.ICEcoder.autoLogoutTimer++;for(var a=!1,b=1;b<=ICEcoder.savedPoints.length;b++)ICEcoder.savedPoints[b-1]!=top.ICEcoder.getcMInstance(b).changeGeneration()&&(a=!0);!a&&1=60*top.ICEcoder.autoLogoutMins&&top.ICEcoder.logout("autoLogout");top.ICEcoder.openSeconds++;0==top.ICEcoder.openSeconds%300&&(top.ICEcoder.filesFrame.contentWindow.frames.pingActive.location.href="https://github.com/lib/session-active-ping.php")},1E3);top.ICEcoder.ready=!0},setLayout:function(a){var b=window.innerWidth;var c=window.innerHeight;this.header.style.width= this.tabsBar.style.width=this.findBar.style.width=b+"px";this.files.style.width=this.editor.style.left=this.filesW+"px";this.optionsFile.style.width=this.optionsEdit.style.width=this.optionsSource.style.width=this.optionsHelp.style.width=this.filesW-60+"px";this.filesFrame.style.height=c-25-35+"px";this.nestValid.style.left=this.filesW+10+"px";this.versionsDisplay.style.left=this.filesW+25+"px";this.splitPaneControls.style.left=parseInt((b-this.filesW)/2,10)-25-4+this.filesW-100+"px";this.splitPaneNamesMain.style.left= parseInt(.25*(b-this.filesW),10)-50+this.filesW-60+"px";this.splitPaneNamesDiff.style.left=parseInt(.75*(b-this.filesW),10)-50+this.filesW-135+"px";top.ICEcoder.setTabWidths();a||(this.editor.style.width=ICEcoder.content.style.width=b-this.filesW-200+"px",ICEcoder.terminal.style.width=b-this.filesW+"px",ICEcoder.content.style.height=c-25-21-28-26+"px",ICEcoder.terminal.style.height=c+"px",setTimeout(function(){for(var a=0;atop.ICEcoder.splitPaneLeftPerc?top.ICEcoder.splitPaneLeftPerc=50-(100-top.ICEcoder.splitPaneLeftPerc)/1.8+50:(top.ICEcoder.splitPaneLeftPerc=top.ICEcoder.splitPane?50:100,clearInterval(top.ICEcoder.animSplitPaneInt));top.ICEcoder.setLayout()},4)},docExplorerShow:function(a){var b;"terminal"==a?(get("terminal").style.display="block",setTimeout(function(){top.ICEcoder.terminal.contentWindow.document.getElementById("command").focus()},0)):(get("terminal").style.display="none",get("miniMap").style.display= "miniMap"==a?"block":"none",get("functionClassList").style.display="functionClassList"==a?"block":"none","miniMap"==a&&(top.miniMapInt=setInterval(function(){0!=get("miniMapContent").getBoundingClientRect().height&&(b=top.ICEcoder.getcMInstance(),top.ICEcoder.setMinimapLayout(b),clearInterval(top.miniMapInt))},10)))},changeFilesW:function(a){ICEcoder.lockedNav&&ICEcoder.filesW!=ICEcoder.minFilesW||("undefined"!=typeof ICEcoder.changeFilesInt&&clearInterval(ICEcoder.changeFilesInt),ICEcoder.changeFilesInt= setInterval(function(){ICEcoder.changeFilesWStep(a)},10))},changeFilesWStep:function(a){"expand"==a?ICEcoder.filesWICEcoder.minFilesW+1?ICEcoder.filesW-=Math.ceil((ICEcoder.filesW-ICEcoder.minFilesW)/2):ICEcoder.filesW=ICEcoder.minFilesW;("expand"==a&&ICEcoder.filesW==ICEcoder.maxFilesW||"contract"==a&&ICEcoder.filesW==ICEcoder.minFilesW)&&clearInterval(ICEcoder.changeFilesInt); ICEcoder.setLayout()},canResizeFilesW:function(){top.ICEcoder.ready&&"w-resize"==top.document.body.style.cursor?top.ICEcoder.mouseDown&&"gutter"==top.ICEcoder.mouseDownInCM&&(top.ICEcoder.filesW=top.ICEcoder.maxFilesW=250<=top.ICEcoder.mouseX&&400>=top.ICEcoder.mouseX?top.ICEcoder.mouseX:250>top.ICEcoder.mouseX?250:400,top.ICEcoder.files.style.width=top.ICEcoder.filesFrame.style.width=top.ICEcoder.filesW+"px",top.ICEcoder.setLayout(),top.ICEcoder.draggingFilesW=!0):top.ICEcoder.draggingFilesW=!1}, -lockUnlockNav:function(){var a;a=top.ICEcoder.filesFrame.contentWindow.document.getElementById("fmLock");ICEcoder.lockedNav=!ICEcoder.lockedNav;a.style.backgroundPosition=ICEcoder.lockedNav?"0 0":"-16px 0"},showHidePlugins:function(a){get("plugins").style.width="show"==a?"55px":"3px";get("plugins").style.background="show"==a?"#333":"transparent";"show"==a&&ICEcoder.changeFilesW("expand")},cMonFocus:function(a,b){top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay(); -top.ICEcoder.editorFocusInstance=b;top.ICEcoder.getCaretPosition()},cMonBlur:function(a,b){},cMonKeyUp:function(a,b){"undefined"!=typeof top.doFind&&clearInterval(top.doFind);top.doFind=setTimeout(function(){top.ICEcoder.findReplace(top.get("find").value,!0,!1)},500);top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay()},cMonCursorActivity:function(a,b){var c;top.ICEcoder.getCaretPosition();top.ICEcoder.updateCharDisplay();top.ICEcoder.updateByteDisplay(); -a.removeLineClass(top.ICEcoder["cMActiveLine"+b],"background");a.getCursor("start").line==a.getCursor().line&&(top.ICEcoder["cMActiveLine"+b]=a.addLineClass(a.getCursor().line,"background","cm-s-activeLine"));"CSS"==top.ICEcoder.caretLocType&&top.ICEcoder.cssColorPreview();c=-1")&&"undefined"!=typeof e&&"undo"!=c.origin&&"redo"!=c.origin&&"undefined"!=typeof e.open&&"undefined"!=typeof e.close&&(f="open"==e.at?"close":"open",null!==e[f]&&(e=e[f].tag+";"+e[f].from.line+":"+e[f].from.ch,-1==top.ICEcoder.oppTagReplaceData.indexOf(e)&&top.ICEcoder.oppTagReplaceData.push(e)))},cMonChange:function(a,b,c,d){var e,f,g,k,h,l,p,n,m,r;b=a.listSelections();top.ICEcoder.loadingFile?setTimeout(function(){a.replaceRange("X", -{line:1,ch:1},{line:1,ch:1});a.undo();a.clearHistory();top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration();top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1]=a.getValue()},0):top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);setTimeout(function(){top.ICEcoder.scrollBarVisible=a.getScrollInfo().height>a.getScrollInfo().clientHeight;top.ICEcoder.setLayout()},0);if("undefined"!=typeof top.ICEcoder.oppTagReplaceData[0])for(var t=0;ta.defaultTextHeight()&&(f+=b.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main", -c[d][2],"height",f+"px"]);for(e=0;ea.defaultTextHeight()&&(f+=a.getLineHandle(e).height-a.defaultTextHeight()); -f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",f+"px"]);for(e=0;ec&e>c&a[d-1]==b[e-1];d--)e--;return[c,d-c,e-c]},updatePreviewWindow:function(a,b,c,d){top.ICEcoder.previewWindow.location.pathname==b?-1<["htm","html","txt"].indexOf(d)?top.ICEcoder.previewWindow.document.documentElement.innerHTML=a.getValue():-1<["md"].indexOf(d)&&(top.ICEcoder.previewWindow.document.documentElement.innerHTML=mmd(a.getValue())):-1<["css"].indexOf(d)&&-1/g,"");a.setValue(b);a.clearHistory();top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration();top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1]=a.getValue()},undo:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();(-1=e.line;b--)d.replaceRange(d.getLine(b),{line:b+1,ch:0},{line:b+1,ch:1E6});d.replaceRange(k,{line:"up"==a?f.line: -e.line,ch:0},{line:"up"==a?f.line:e.line,ch:1E6});d.setSelection({line:e.line+("up"==a?-1:1),ch:e.ch},{line:f.line+("up"==a?-1:1),ch:f.ch})}))},highlightLine:function(a){var b,c;b=top.ICEcoder.getcMInstance();c=top.ICEcoder.getcMdiffInstance();b=-1\n"+d.getSelection()+"\n
","around");for(var a=e+1;a<=f+1;a++)d.indentLine(a);d.indentLine(f+2,"prev");d.indentLine(f+2,"subtract")})):-1<["p","a","h1","h2","h3"].indexOf(a)&&d.getSelection().substr(0,a.length+1)=="<"+b&&d.getSelection().substr(-(a.length+ -3))==""?d.replaceSelection(d.getSelection().substr(d.getSelection().indexOf(">")+1,d.getSelection().length-d.getSelection().indexOf(">")-1-a.length-3),"around"):("a"==a&&(b='a href=""'),d.replaceSelection("<"+b+">"+d.getSelection()+"","around"),"a"==a&&d.setCursor({line:d.getCursor("start").line,ch:d.getCursor("start").ch+9}))},addLineBreakAtEnd:function(a){var b,c;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();b=-1",{line:a,ch:0},{line:a,ch:1E6})},insertLineBefore:function(a){var b,c,d;b=ICEcoder.getcMInstance();c=ICEcoder.getcMdiffInstance();d=-1'+top.ICEcoder.functionClassList[a].name+'
'+top.ICEcoder.functionClassList[a].params+"");get("functionClassList").innerHTML=b},0))},updateFunctionClassListItems:function(a){var b,c;b=ICEcoder.getcMInstance();c="";-1'+get("miniMapContent").innerHTML+"";get("miniMapContent").innerHTML=get("miniMapContent").innerHTML.replace(/\';var b=get("miniMapBox"),b=new Draggabilly(b,{axis:"y",containment:!0});b.on("dragMove",function(b,d,e){yPos=this.position.y;maxHeight=parseInt(get("docExplorer").style.height, -10)<=parseInt(get("miniMapContent").getBoundingClientRect().height,10)?parseInt(get("docExplorer").style.height,10):parseInt(get("miniMapContent").getBoundingClientRect().height,10);newPerc=this.position.y/(maxHeight-top.ICEcoder.miniMapBoxHeight);yPos=(a.getScrollInfo().height-a.getScrollInfo().clientHeight)*newPerc;a.scrollTo(0,yPos)});b.on("pointerDown",function(a,b){top.ICEcoder.mouseDownMinimap=!0});b.on("pointerUp",function(a,b){top.ICEcoder.mouseDownMinimap=!1});top.ICEcoder.setMinimapLayout(a); -get("docExplorer").style.right="-220px"}},setMinimapLayout:function(a,b){var c,d;get("miniMapBox")&&a&&(c=top.ICEcoder.getcMInstance(),d=a.getScrollInfo().top/(a.getScrollInfo().height-a.getScrollInfo().clientHeight),parseInt(get("miniMapContent").getBoundingClientRect().height,10)>parseInt(get("docExplorer").style.height,10)?(get("miniMapContainer").style.height=parseInt(get("docExplorer").style.height,10)+"px",top.ICEcoder.miniMapBoxHeight=parseInt(get("docExplorer").style.height,10)/c.defaultTextHeight()* -2,get("miniMapBox").style.height=top.ICEcoder.miniMapBoxHeight+"px",top.ICEcoder.miniMapBoxTop=d*parseInt(get("docExplorer").style.height,10)-d*top.ICEcoder.miniMapBoxHeight,get("miniMapContent").style.marginTop=-(parseInt(get("miniMapContent").getBoundingClientRect().height,10)-parseInt(get("docExplorer").style.height,10))*d+"px"):(get("miniMapContainer").style.height=parseInt(get("miniMapContent").getBoundingClientRect().height,10)+"px",top.ICEcoder.miniMapBoxHeight=parseInt(get("docExplorer").style.height, -10)/c.defaultTextHeight()*2,get("miniMapBox").style.height=top.ICEcoder.miniMapBoxHeight+"px",top.ICEcoder.miniMapBoxTop=d*parseInt(get("miniMapContainer").getBoundingClientRect().height,10)-d*top.ICEcoder.miniMapBoxHeight,get("miniMapContent").style.marginTop=0),top.ICEcoder.mouseDownMinimap||(get("miniMapBox").style.top=top.ICEcoder.miniMapBoxTop+"px"))},autocomplete:function(){var a,b;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1f.replace(/\d+/g,g)?e:f;if(0e&&("LI"!=b.childNodes[e].nodeName&&e++,d=b.childNodes[e].childNodes[0].childNodes[1],d.id==c&&(a=!0),1==a&&-1==top.ICEcoder.selectedFiles.indexOf(d.id)&&(ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(d.id)),d.id!=f);e+=2);else ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(e)}else top.ICEcoder.deselectAllFiles(),ICEcoder.selectDeselectFile("select",d),top.ICEcoder.selectedFiles.push(e); -top.ICEcoder.githubDiff&&(top.get("githubNavSelectedCount").innerHTML="Selected: "+top.ICEcoder.selectedFiles.length,top.get("githubNavCommit").style.color=0"+top.t["Creating Folder"]+"
"+b)},returnFileAndLine:function(a){var b=1,c=/^([^ ]*)\s+(on\s+)?(line\s+)?(\d+)/.exec(a);null!==c?(b=c[4],a=c[1]):0"+top.t["Opening File"]+"
"+top.ICEcoder.shortURL)):top.ICEcoder.createNewTab("new"),top.ICEcoder.fMIconVis("fMView",1)))},openFilesFromList:function(a){for(var b=0;b"+top.t.Getting+"
"+a)},getChangesToSave:function(){var a,b;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1];a=difflib.stringAsLines(a.getValue()); -b=difflib.stringAsLines(b);b=(new difflib.SequenceMatcher(b,a)).get_opcodes();for(var c=0;c"+top.t.Saving+"
"+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,""))},renameFile:function(a, -b){var c,d;a?c=a.replace(/\|/g,"/"):(c=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"));b||(b=top.ICEcoder.getInput(top.t["Please enter the..."],c));b&&(d=top.ICEcoder.openFiles.indexOf(c.replace(/\|/g,"/")),-1', -c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//,""),top.get("tab"+(d+1)).title=b),top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=rename&oldFileName="+a.replace(/\|/g,"/").replace(/\+/g,"%2B")+"&csrf="+top.ICEcoder.csrf,b.replace(/\+/g,"%2B")),top.ICEcoder.serverMessage(""+top.t["Renaming to"]+"
"+b),top.ICEcoder.setPreviousFiles())},moveFile:function(a,b){var c,d;b&&b!=a&&(d=top.ICEcoder.openFiles.indexOf(a.replace(/\|/g, -"/")),-1',c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//, -""),top.get("tab"+(d+1)).title=b),top.ICEcoder.ask("Are you sure you want to move file "+a+" to "+b+" ?")&&(top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=move&oldFileName="+a.replace(/\//g,"|").replace(/\+/g,"%2B")+"&csrf="+top.ICEcoder.csrf,b.replace(/\//g,"|").replace(/\+/g,"%2B")),top.ICEcoder.serverMessage(""+top.t["Moving to"]+"
"+b)),top.ICEcoder.setPreviousFiles())},deleteFiles:function(a){var b;a=a?a:top.ICEcoder.selectedFiles;b=a.toString().replace(/\|/g,"/").replace(/,/g, -"\n");0"+top.t["Deleting File"]+"
"+b))},copyFiles:function(a,b,c){top.ICEcoder.copiedFiles=[];for(var d=0;d"+top.t["Pasting File"]+"
"+top.ICEcoder.copiedFiles[b].toString().replace(/\|/g,"/").replace(/,/g,"\n"))):top.ICEcoder.message(top.t["Sorry cannot paste..."]);else top.ICEcoder.message(top.t["Nothing to paste..."])},duplicateFiles:function(a){var b; -top.ICEcoder.copiedFiles&&(b=top.ICEcoder.copiedFiles);top.ICEcoder.copyFiles(a,"dontShowPaste","dontHide");a=a[0].substr(0,a[0].lastIndexOf("|"));top.ICEcoder.pasteFiles(a);"undefined"!=typeof b&&(top.ICEcoder.copiedFiles=b)},uploadFilesSelect:function(a){top.get("uploadDir").value=a;top.get("fileInput").click()},uploadFilesSubmit:function(a){""!=top.get("fileInput").value&&(top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("uploadFilesForm").submit(),event.preventDefault())},showHideFileNav:function(a, -b){var c=["optionsFile","optionsEdit","optionsSource","optionsHelp"];if("hide"==a)fileNavInt=setTimeout(function(){for(var a=0;ac&&(b-=b+a-c),top.get("fileMenu").style.top=b+"px");return!1},showFileMenu:function(){top.get("fileMenu").style.display="inline-block";setTimeout(function(){top.get("fileMenu").style.opacity="1"},4)},hideFileMenu:function(){top.get("fileMenu").style.display="none";top.get("fileMenu").style.opacity="0"},updateFileManagerList:function(a,b,c,d,e,f,g){var k,h,l,p,n,m,r;if("add"==a&&!top.get("filesFrame").contentWindow.document.getElementById(b.replace(top.iceRoot,"").replace(/\/$/,"").replace(/\//g, -"|")+"|"+c)){k="file"==g?"pft-file ext-"+c.substr(c.indexOf(".")+1):"pft-directory";d="file"==g?top.ICEcoder.newFilePerms:top.ICEcoder.newDirPerms;b||(b="/");b=b.replace(top.iceRoot,"/");b=b.replace("//","/");h=top.get("filesFrame").contentWindow.document.getElementById(b.replace(/\//g,"|"));l=h.parentNode.parentNode.nextSibling;p=document.createTextNode("\n");n=777==d?"background: #800; color: #eee":"color: #888";n='        '+c+' '+d+"";if(!l||3>l.childNodes.length)m=document.createElement("ul"),l=h.parentNode.parentNode,l.parentNode.insertBefore(m,l.nextSibling),m=document.createElement("li"),m.className=k,m.draggable=!1,m.ondragstart=function(a){top.ICEcoder.addDefaultDragData(this,a)},m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&& -(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())},m.ondragover=function(a){top.ICEcoder.setDragCursor(a,"folder"==g?"folder":"file")},m.ondragend=function(){top.ICEcoder.dropFile(this)},m.innerHTML=n,l.nextSibling.appendChild(m),l.nextSibling.appendChild(p);else for(h=0;hc||"folder"==g&&"file"==m||h==l.childNodes.length-1)){m=document.createElement("li");m.className=k;m.draggable=!1;m.ondragstart=function(a){top.ICEcoder.addDefaultDragData(this,a)};m.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())};m.ondragover=function(a){top.ICEcoder.setDragCursor(a,"folder"==g?"folder":"file")};m.ondragend= -function(){top.ICEcoder.dropFile(this)};m.innerHTML=n;h==l.childNodes.length-1?(l.appendChild(m),l.appendChild(p)):(l.insertBefore(m,l.childNodes[h]),l.insertBefore(p,l.childNodes[h+1]));break}"file"!=g||f||(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]=b+c)}"rename"==a&&(f=e.replace(/\//g,"|"),h=top.get("filesFrame").contentWindow.document.getElementById(f),h.innerHTML=c,h.id=b.replace(/\//g,"|")+"|"+c,h.parentNode.title=h.id.replace(/\|/g,"/"),targetElemPerms=top.get("filesFrame").contentWindow.document.getElementById(f+ -"_perms"),targetElemPerms.id=b.replace(/\//g,"|")+"|"+c+"_perms",top.ICEcoder.renameInChildren(h,e,b,c));"move"==a&&(top.ICEcoder.updateFileManagerList("add",b,c,!1,!1,!1,g),top.ICEcoder.updateFileManagerList("delete",e.substr(0,e.lastIndexOf("/")),c));"chmod"==a&&(f=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),h=top.get("filesFrame").contentWindow.document.getElementById(f.replace(/\//g,"|")+"_perms"),h.style.background=777==d?"#800":"none",h.style.color=777== -d?"#eee":"#888",h.innerHTML=d);"delete"==a&&(b||(b=""),b=b.replace(top.iceRoot,"/"),b=b.replace("//","/"),b=b.replace(/\/$/,"").replace(/\//g,"|"),h=(b+"|"+c).replace("||","|"),h=top.get("filesFrame").contentWindow.document.getElementById(h).parentNode.parentNode,top.ICEcoder.openCloseDir(h.childNodes[0],!1),h.parentNode.removeChild(h))},renameInChildren:function(a,b,c,d){var e,f;if(a.parentNode.parentNode.nextSibling&&"UL"==a.parentNode.parentNode.nextSibling.nodeName){a=a.parentNode.parentNode.nextSibling; -for(var g=0;gd.indexFromPos({ch:d.getCursor().ch-1,line:d.getCursor().line})&&ICEcoder.findResult--;else for(f=ICEcoder.findResult=0;fICEcoder.results.length-1&&(ICEcoder.findResult=0);e&&1==ICEcoder.findResult&&(ICEcoder.findResult=ICEcoder.results.length+1);g.innerHTML="Highlighted result "+(ICEcoder.findResult+(e?-1:1))+" of "+ICEcoder.results.length+" results";e?(b=d.getSearchCursor(a,{ch:d.getCursor().ch-1,line:d.getCursor().line},!0),b.findPrevious(),b.from()||(b=d.getSearchCursor(a,{line:1E6,ch:1E6},!0),b.findPrevious())): -(b=d.getSearchCursor(a,{ch:d.getCursor().ch+1,line:d.getCursor().line},!0),b.findNext(),b.from()||(b=d.getSearchCursor(a,{line:0,ch:0},!0),b.findNext()));d.setSelection(b.from(),b.to());top.ICEcoder.focus();top.ICEcoder.findMode=!0}a=top.ICEcoder.scrollBarVisible?parseInt(top.ICEcoder.content.style.height,10)/d.lineCount():d.defaultTextHeight();b=top.ICEcoder.scrollBarVisible?0:d.heightAtLine(0);e="";for(f=1;f<=d.lineCount();f++)g=-1';top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML=e;top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="inline-block";return!0}g.innerHTML="No results";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display= -"none";return!1}""!=a&&c?(e=b=d="",document.findAndReplace.connector.value==top.t.and&&(d="&replace="+f),0<=document.findAndReplace.target.value.indexOf(top.t.file)&&(b="&target="+document.findAndReplace.target.value.replace(/ /g,"-")),document.findAndReplace.target.value==top.t["selected files"]&&(e="&selectedFiles="+top.ICEcoder.selectedFiles.join(":")),a=a.replace(/\'/g,"'"),a!=encodeURIComponent(a)?a="ICEcoder:"+encodeURIComponent(a):a,top.ICEcoder.showHide("show",top.get("loadingMask")), -top.get("mediaContainer").innerHTML=''):(g.innerHTML="No results",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none")}},replaceInFile:function(a,b,c){top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=replaceText&find="+ -b+"&replace="+c+"&csrf="+top.ICEcoder.csrf,a.replace(/\//g,"|").replace(/\+/g,"%2B"));top.ICEcoder.serverMessage(""+top.t["Replacing text in"]+"
"+a)},getCaretPosition:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();a=-1=a||10<=a)&&top.ICEcoder.mouseX>parseInt(top.ICEcoder.files.style.width,10)&&(top.ICEcoder.tabDragMouseX=top.ICEcoder.mouseX-parseInt(top.ICEcoder.files.style.width, -10)-top.ICEcoder.tabDragMouseXStart,top.ICEcoder.tabDragMove());if(top.ICEcoder.ready&&(top.ICEcoder.mouseDown||(top.ICEcoder.draggingFilesW=!1),a=!ICEcoder.draggingTab&&(top.ICEcoder.mouseX>top.ICEcoder.filesW-7&&top.ICEcoder.mouseX").replace(/\<\/b\>/g,"").replace(/\<br\>/g,"
"),b.style.left="0"):setTimeout(function(){b.style.left="2000px"},200);b.style.opacity=a?1:0},cssColorPreview:function(){var a,b,c,d;a=ICEcoder.getcMInstance();b=ICEcoder.getcMdiffInstance();if(a=-1d.index+d[0].length;);(b=top.get("content").contentWindow.document.getElementById("cssColor"))&&b.parentNode.removeChild(b);top.ICEcoder.codeAssist&&"CSS"==top.ICEcoder.caretLocType&&(b=top.document.createElement("div"),b.id="cssColor",b.style.position="absolute",b.style.display="block",b.style.width=b.style.height="20px",b.style.zIndex="1000",b.style.background=d?d[0]:"",b.style.cursor="pointer",b.onclick=function(){top.ICEcoder.showColorPicker(d[0])},""==b.style.backgroundColor&& -(b.style.display="none"),top.get("header").appendChild(b),a.addWidget(a.getCursor(),top.get("cssColor"),!0))}},showColorPicker:function(a){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='



'; -farbtastic("picker","color");a&&top.get("picker").farbtastic.setColor(a)},initCanvasImage:function(a){var b,c;b=top.get("canvasPicker").getContext("2d");c=new Image;c.crossOrigin="Anonymous";c.src=a.src;c.onerror=function(){get("floatingContainer").style.visibility="hidden";get("canvasPickerColorInfo").style.display="none";get("canvasPickerCORSInfo").style.display="block"};c.onload=function(){top.get("canvasPicker").width=a.width;top.get("canvasPicker").height=a.height;b.drawImage(c,0,0,a.width,a.height); -get("canvasPickerColorInfo").style.display="block";get("canvasPickerCORSInfo").style.display="none";top.get("canvasPicker").onmouseover=function(a){get("floatingContainer").style.visibility="visible"};top.get("canvasPicker").onmouseout=function(a){get("floatingContainer").style.visibility="hidden"}};top.document.getElementById("floatingContainer").style.backgroundSize=5*a.naturalWidth+"px "+5*a.naturalHeight+"px"},interactCanvasImage:function(a){var b,c,d,e,f,g,k,h,l,p,n,m,r;b=top.get("canvasPicker").getContext("2d"); -top.get("canvasPicker").onmousemove=function(t){c=t.pageX-this.offsetLeft;d=t.pageY-this.offsetTop;e=b.getImageData(c,d,1,1).data;f=e[0];g=e[1];k=e[2];h=f+","+g+","+k;l=top.ICEcoder.rgbToHex(f,g,k);top.get("rgbMouseXY").value=h;top.get("hexMouseXY").value="#"+l;top.get("hexMouseXY").style.backgroundColor=top.get("rgbMouseXY").style.backgroundColor="#"+l;p=128>f||128>g||128>k&&200>f&&200>g&&50")&&"undefined"!=typeof f&&"undo"!=c.origin&&"redo"!=c.origin&&"undefined"!=typeof f.open&&"undefined"!=typeof f.close){var g="open"==f.at?"close":"open";null!==f[g]&&(f=f[g].tag+";"+f[g].from.line+":"+f[g].from.ch,-1==top.ICEcoder.oppTagReplaceData.indexOf(f)&&top.ICEcoder.oppTagReplaceData.push(f))}}},cMonChange:function(a,b,c,d){var e;b=a.listSelections();top.ICEcoder.loadingFile?setTimeout(function(){a.replaceRange("X",{line:1,ch:1},{line:1,ch:1});a.undo();a.clearHistory(); +top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration();top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1]=a.getValue()},0):top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab);setTimeout(function(){top.ICEcoder.scrollBarVisible=a.getScrollInfo().height>a.getScrollInfo().clientHeight;top.ICEcoder.setLayout()},0);if("undefined"!=typeof top.ICEcoder.oppTagReplaceData[0])for(var f=0;fa.defaultTextHeight()&&(f+=b.getLineHandle(e).height-a.defaultTextHeight()); +f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",f+"px"]);for(e=0;ea.defaultTextHeight()&&(f+=a.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",f+"px"]);for(e=0;ec&e>c&a[d-1]==b[e-1];d--)e--;return[c,d-c,e-c]},updatePreviewWindow:function(a,b,c,d){top.ICEcoder.previewWindow.location.pathname==b?-1<["htm","html","txt"].indexOf(d)?top.ICEcoder.previewWindow.document.documentElement.innerHTML=a.getValue():-1<["md"].indexOf(d)&&(top.ICEcoder.previewWindow.document.documentElement.innerHTML= +mmd(a.getValue())):-1<["css"].indexOf(d)&&-1/g,"");a.setValue(b);a.clearHistory();top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration();top.ICEcoder.savedContents[top.ICEcoder.selectedTab- +1]=a.getValue()},undo:function(){var a=ICEcoder.getcMInstance();var b=ICEcoder.getcMdiffInstance();(-1=f.line;b--)e.replaceRange(e.getLine(b),{line:b+1,ch:0},{line:b+1,ch:1E6});e.replaceRange(m,{line:"up"==a?g.line:f.line,ch:0},{line:"up"==a?g.line:f.line,ch:1E6});e.setSelection({line:f.line+("up"==a?-1:1),ch:f.ch},{line:g.line+("up"==a?-1:1),ch:g.ch})})}},highlightLine:function(a){var b=top.ICEcoder.getcMInstance();var c=top.ICEcoder.getcMdiffInstance();b=-1\n"+d.getSelection()+"\n","around");for(var a=e+1;a<=f+1;a++)d.indentLine(a); +d.indentLine(f+2,"prev");d.indentLine(f+2,"subtract")})}else-1<["p","a","h1","h2","h3"].indexOf(a)&&d.getSelection().substr(0,a.length+1)=="<"+b&&d.getSelection().substr(-(a.length+3))==""?d.replaceSelection(d.getSelection().substr(d.getSelection().indexOf(">")+1,d.getSelection().length-d.getSelection().indexOf(">")-1-a.length-3),"around"):("a"==a&&(b='a href=""'),d.replaceSelection("<"+b+">"+d.getSelection()+"","around"),"a"==a&&d.setCursor({line:d.getCursor("start").line,ch:d.getCursor("start").ch+ +9}))},addLineBreakAtEnd:function(a){var b=ICEcoder.getcMInstance();var c=ICEcoder.getcMdiffInstance();b=-1",{line:a,ch:0},{line:a,ch:1E6})},insertLineBefore:function(a){var b=ICEcoder.getcMInstance();var c=ICEcoder.getcMdiffInstance();var d=-1'+top.ICEcoder.functionClassList[b].name+'
'+top.ICEcoder.functionClassList[b].params+"");get("functionClassList").innerHTML=a},0))},updateFunctionClassListItems:function(a){var b=ICEcoder.getcMInstance();var c="";-1< +a.text.indexOf("function ")&&-1'+get("miniMapContent").innerHTML+"";get("miniMapContent").innerHTML=get("miniMapContent").innerHTML.replace(/'; +var b=get("miniMapBox");b=new Draggabilly(b,{axis:"y",containment:!0});b.on("dragMove",function(b,d,e){yPos=this.position.y;maxHeight=parseInt(get("docExplorer").style.height,10)<=parseInt(get("miniMapContent").getBoundingClientRect().height,10)?parseInt(get("docExplorer").style.height,10):parseInt(get("miniMapContent").getBoundingClientRect().height,10);newPerc=this.position.y/(maxHeight-top.ICEcoder.miniMapBoxHeight);yPos=(a.getScrollInfo().height-a.getScrollInfo().clientHeight)*newPerc;a.scrollTo(0, +yPos)});b.on("pointerDown",function(a,b){top.ICEcoder.mouseDownMinimap=!0});b.on("pointerUp",function(a,b){top.ICEcoder.mouseDownMinimap=!1});top.ICEcoder.setMinimapLayout(a);get("docExplorer").style.right="-220px"}},setMinimapLayout:function(a,b){if(get("miniMapBox")&&a){var c=top.ICEcoder.getcMInstance();var d=a.getScrollInfo().top/(a.getScrollInfo().height-a.getScrollInfo().clientHeight);parseInt(get("miniMapContent").getBoundingClientRect().height,10)>parseInt(get("docExplorer").style.height, +10)?(get("miniMapContainer").style.height=parseInt(get("docExplorer").style.height,10)+"px",top.ICEcoder.miniMapBoxHeight=parseInt(get("docExplorer").style.height,10)/c.defaultTextHeight()*2,get("miniMapBox").style.height=top.ICEcoder.miniMapBoxHeight+"px",top.ICEcoder.miniMapBoxTop=d*parseInt(get("docExplorer").style.height,10)-d*top.ICEcoder.miniMapBoxHeight,get("miniMapContent").style.marginTop=-(parseInt(get("miniMapContent").getBoundingClientRect().height,10)-parseInt(get("docExplorer").style.height, +10))*d+"px"):(get("miniMapContainer").style.height=parseInt(get("miniMapContent").getBoundingClientRect().height,10)+"px",top.ICEcoder.miniMapBoxHeight=parseInt(get("docExplorer").style.height,10)/c.defaultTextHeight()*2,get("miniMapBox").style.height=top.ICEcoder.miniMapBoxHeight+"px",top.ICEcoder.miniMapBoxTop=d*parseInt(get("miniMapContainer").getBoundingClientRect().height,10)-d*top.ICEcoder.miniMapBoxHeight,get("miniMapContent").style.marginTop=0);top.ICEcoder.mouseDownMinimap||(get("miniMapBox").style.top= +top.ICEcoder.miniMapBoxTop+"px")}},autocomplete:function(){var a=ICEcoder.getcMInstance();var b=ICEcoder.getcMdiffInstance();a=-1g.replace(/\d+/g,f)?d:g;if(0d&&("LI"!=b.childNodes[d].nodeName&&d++,e=b.childNodes[d].childNodes[0].childNodes[1],e.id==c&&(a=!0),1==a&&-1==top.ICEcoder.selectedFiles.indexOf(e.id)&&(ICEcoder.selectDeselectFile("select",e),top.ICEcoder.selectedFiles.push(e.id)),e.id!=g);d+=2);else ICEcoder.selectDeselectFile("select", +e),top.ICEcoder.selectedFiles.push(d)}else top.ICEcoder.deselectAllFiles(),ICEcoder.selectDeselectFile("select",e),top.ICEcoder.selectedFiles.push(d)}top.ICEcoder.githubDiff&&(top.get("githubNavSelectedCount").innerHTML="Selected: "+top.ICEcoder.selectedFiles.length,top.get("githubNavCommit").style.color=0"+top.t["Creating Folder"]+ +"
"+a)},returnFileAndLine:function(a){var b=1,c=/^([^ ]*)\s+(on\s+)?(line\s+)?(\d+)/.exec(a);null!==c?(b=c[4],a=c[1]):0"+top.t["Opening File"]+"
"+top.ICEcoder.shortURL)):top.ICEcoder.createNewTab("new"),top.ICEcoder.fMIconVis("fMView",1))}},openFilesFromList:function(a){for(var b=0;b"+top.t.Getting+"
"+a)},getChangesToSave:function(){var a=top.ICEcoder.getcMInstance();var b=top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1];a=difflib.stringAsLines(a.getValue());b=difflib.stringAsLines(b);b=(new difflib.SequenceMatcher(b,a)).get_opcodes();for(var c=0;c"+top.t.Saving+"
"+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(top.iceRoot,""))},renameFile:function(a,b){if(a)var c=a.replace(/\|/g,"/");else c=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),a=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/");b||(b=top.ICEcoder.getInput(top.t["Please enter the..."],c));if(b){var d=top.ICEcoder.openFiles.indexOf(c.replace(/\|/g, +"/"));-1',c=top.ICEcoder.openFiles[d],top.get("tab"+(d+1)).innerHTML=closeTabLink+" "+c.slice(c.lastIndexOf("/")).replace(/\//, +""),top.get("tab"+(d+1)).title=b);top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=rename&oldFileName="+a.replace(/\|/g,"/").replace(/\+/g,"%2B")+"&csrf="+top.ICEcoder.csrf,b.replace(/\+/g,"%2B"));top.ICEcoder.serverMessage(""+top.t["Renaming to"]+"
"+b);top.ICEcoder.setPreviousFiles()}},moveFile:function(a,b){if(b&&b!=a){var c=top.ICEcoder.openFiles.indexOf(a.replace(/\|/g,"/"));if(-1'; +var d=top.ICEcoder.openFiles[c];top.get("tab"+(c+1)).innerHTML=closeTabLink+" "+d.slice(d.lastIndexOf("/")).replace(/\//,"");top.get("tab"+(c+1)).title=b}top.ICEcoder.ask("Are you sure you want to move file "+a+" to "+b+" ?")&&(top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=move&oldFileName="+a.replace(/\//g,"|").replace(/\+/g,"%2B")+"&csrf="+top.ICEcoder.csrf,b.replace(/\//g,"|").replace(/\+/g,"%2B")),top.ICEcoder.serverMessage(""+top.t["Moving to"]+"
"+b));top.ICEcoder.setPreviousFiles()}}, +deleteFiles:function(a){a=a?a:top.ICEcoder.selectedFiles;var b=a.toString().replace(/\|/g,"/").replace(/,/g,"\n");0"+top.t["Deleting File"]+"
"+b))},copyFiles:function(a,b,c){top.ICEcoder.copiedFiles=[];for(var d=0;d"+top.t["Pasting File"]+"
"+top.ICEcoder.copiedFiles[b].toString().replace(/\|/g,"/").replace(/,/g,"\n"))):top.ICEcoder.message(top.t["Sorry cannot paste..."]); +else top.ICEcoder.message(top.t["Nothing to paste..."])},duplicateFiles:function(a){if(top.ICEcoder.copiedFiles)var b=top.ICEcoder.copiedFiles;top.ICEcoder.copyFiles(a,"dontShowPaste","dontHide");a=a[0].substr(0,a[0].lastIndexOf("|"));top.ICEcoder.pasteFiles(a);"undefined"!=typeof b&&(top.ICEcoder.copiedFiles=b)},uploadFilesSelect:function(a){top.get("uploadDir").value=a;top.get("fileInput").click()},uploadFilesSubmit:function(a){""!=top.get("fileInput").value&&(top.ICEcoder.showHide("show",top.get("loadingMask")), +top.get("uploadFilesForm").submit(),event.preventDefault())},showHideFileNav:function(a,b){var c=["optionsFile","optionsEdit","optionsSource","optionsHelp"];if("hide"==a)fileNavInt=setTimeout(function(){for(var a=0;ab&&(c-=c+a-b);top.get("fileMenu").style.top=c+"px"}return!1},showFileMenu:function(){top.get("fileMenu").style.display="inline-block";setTimeout(function(){top.get("fileMenu").style.opacity="1"},4)},hideFileMenu:function(){top.get("fileMenu").style.display="none";top.get("fileMenu").style.opacity="0"},updateFileManagerList:function(a,b,c,d,e,f,g){if("add"==a&&!top.get("filesFrame").contentWindow.document.getElementById(b.replace(top.iceRoot, +"").replace(/\/$/,"").replace(/\//g,"|")+"|"+c)){var m="file"==g?"pft-file ext-"+c.substr(c.indexOf(".")+1):"pft-directory";d="file"==g?top.ICEcoder.newFilePerms:top.ICEcoder.newDirPerms;b||(b="/");b=b.replace(top.iceRoot,"/");b=b.replace("//","/");var h=top.get("filesFrame").contentWindow.document.getElementById(b.replace(/\//g,"|"));var l=h.parentNode.parentNode.nextSibling;var n=document.createTextNode("\n");var p=777==d?"background: #800; color: #eee":"color: #888";p='        '+c+' '+d+"";if(!l||3>l.childNodes.length){var k=document.createElement("ul");l=h.parentNode.parentNode; +l.parentNode.insertBefore(k,l.nextSibling);k=document.createElement("li");k.className=m;k.draggable=!1;k.ondragstart=function(a){top.ICEcoder.addDefaultDragData(this,a)};k.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a);top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())};k.ondragover=function(a){top.ICEcoder.setDragCursor(a,"folder"==g?"folder":"file")};k.ondragend=function(){top.ICEcoder.dropFile(this)}; +k.innerHTML=p;l.nextSibling.appendChild(k);l.nextSibling.appendChild(n)}else for(h=0;hc||"folder"==g&&"file"==k||h==l.childNodes.length-1){k=document.createElement("li");k.className=m;k.draggable=!1;k.ondragstart=function(a){top.ICEcoder.addDefaultDragData(this,a)};k.ondrag=function(a){top.ICEcoder.draggingWithKeyTest(a); +top.ICEcoder.getcMInstance()&&(-1==top.ICEcoder.editorFocusInstance.indexOf("diff")?top.ICEcoder.getcMInstance().focus():top.ICEcoder.getcMdiffInstance().focus())};k.ondragover=function(a){top.ICEcoder.setDragCursor(a,"folder"==g?"folder":"file")};k.ondragend=function(){top.ICEcoder.dropFile(this)};k.innerHTML=p;h==l.childNodes.length-1?(l.appendChild(k),l.appendChild(n)):(l.insertBefore(k,l.childNodes[h]),l.insertBefore(n,l.childNodes[h+1]));break}}"file"!=g||f||(top.ICEcoder.openFiles[top.ICEcoder.selectedTab- +1]=b+c)}"rename"==a&&(f=e.replace(/\//g,"|"),h=top.get("filesFrame").contentWindow.document.getElementById(f),h.innerHTML=c,h.id=b.replace(/\//g,"|")+"|"+c,h.parentNode.title=h.id.replace(/\|/g,"/"),targetElemPerms=top.get("filesFrame").contentWindow.document.getElementById(f+"_perms"),targetElemPerms.id=b.replace(/\//g,"|")+"|"+c+"_perms",top.ICEcoder.renameInChildren(h,e,b,c));"move"==a&&(top.ICEcoder.updateFileManagerList("add",b,c,!1,!1,!1,g),top.ICEcoder.updateFileManagerList("delete",e.substr(0, +e.lastIndexOf("/")),c));"chmod"==a&&(f=top.ICEcoder.selectedFiles[top.ICEcoder.selectedFiles.length-1].replace(/\|/g,"/"),h=top.get("filesFrame").contentWindow.document.getElementById(f.replace(/\//g,"|")+"_perms"),h.style.background=777==d?"#800":"none",h.style.color=777==d?"#eee":"#888",h.innerHTML=d);"delete"==a&&(b||(b=""),b=b.replace(top.iceRoot,"/"),b=b.replace("//","/"),b=b.replace(/\/$/,"").replace(/\//g,"|"),h=(b+"|"+c).replace("||","|"),h=top.get("filesFrame").contentWindow.document.getElementById(h).parentNode.parentNode, +top.ICEcoder.openCloseDir(h.childNodes[0],!1),h.parentNode.removeChild(h))},renameInChildren:function(a,b,c,d){if(a.parentNode.parentNode.nextSibling&&"UL"==a.parentNode.parentNode.nextSibling.nodeName){a=a.parentNode.parentNode.nextSibling;for(var e=0;ed.indexFromPos({ch:d.getCursor().ch- +1,line:d.getCursor().line})&&ICEcoder.findResult--;else for(f=ICEcoder.findResult=0;fICEcoder.results.length-1&&(ICEcoder.findResult=0);e&&1==ICEcoder.findResult&&(ICEcoder.findResult=ICEcoder.results.length+1);g.innerHTML="Highlighted result "+(ICEcoder.findResult+(e?-1:1))+" of "+ICEcoder.results.length+" results";e?(b=d.getSearchCursor(a, +{ch:d.getCursor().ch-1,line:d.getCursor().line},!0),b.findPrevious(),b.from()||(b=d.getSearchCursor(a,{line:1E6,ch:1E6},!0),b.findPrevious())):(b=d.getSearchCursor(a,{ch:d.getCursor().ch+1,line:d.getCursor().line},!0),b.findNext(),b.from()||(b=d.getSearchCursor(a,{line:0,ch:0},!0),b.findNext()));d.setSelection(b.from(),b.to());top.ICEcoder.focus();top.ICEcoder.findMode=!0}a=top.ICEcoder.scrollBarVisible?parseInt(top.ICEcoder.content.style.height,10)/d.lineCount():d.defaultTextHeight();b=top.ICEcoder.scrollBarVisible? +0:d.heightAtLine(0);e="";for(f=1;f<=d.lineCount();f++)g=-1';top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML=e;top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="inline-block";return!0}g.innerHTML="No results"; +top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="";top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display="none";return!1}""!=a&&c?(e=b=d="",document.findAndReplace.connector.value==top.t.and&&(d="&replace="+f),0<=document.findAndReplace.target.value.indexOf(top.t.file)&&(b="&target="+document.findAndReplace.target.value.replace(/ /g,"-")),document.findAndReplace.target.value==top.t["selected files"]&&(e="&selectedFiles="+top.ICEcoder.selectedFiles.join(":")), +a=a.replace(/'/g,"'"),a!=encodeURIComponent(a)?a="ICEcoder:"+encodeURIComponent(a):a,top.ICEcoder.showHide("show",top.get("loadingMask")),top.get("mediaContainer").innerHTML=''):(g.innerHTML="No results",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").innerHTML="",top.ICEcoder.content.contentWindow.document.getElementById("resultsBar").style.display= +"none")}},replaceInFile:function(a,b,c){top.ICEcoder.serverQueue("add","lib/file-control-xhr.php?action=replaceText&find="+b+"&replace="+c+"&csrf="+top.ICEcoder.csrf,a.replace(/\//g,"|").replace(/\+/g,"%2B"));top.ICEcoder.serverMessage(""+top.t["Replacing text in"]+"
"+a)},getCaretPosition:function(){var a;var b=ICEcoder.getcMInstance();var c=ICEcoder.getcMdiffInstance();b=-1=b||10<=b)&&top.ICEcoder.mouseX>parseInt(top.ICEcoder.files.style.width,10)&&(top.ICEcoder.tabDragMouseX=top.ICEcoder.mouseX-parseInt(top.ICEcoder.files.style.width,10)-top.ICEcoder.tabDragMouseXStart,top.ICEcoder.tabDragMove());if(top.ICEcoder.ready&&(top.ICEcoder.mouseDown||(top.ICEcoder.draggingFilesW=!1),b=!ICEcoder.draggingTab&&(top.ICEcoder.mouseX>top.ICEcoder.filesW-7&&top.ICEcoder.mouseX").replace(/<\/b>/g,"").replace(/<br>/g,"
"),b.style.left="0"):setTimeout(function(){b.style.left="2000px"},200);b.style.opacity=a?1:0},cssColorPreview:function(){var a, +b;var c=ICEcoder.getcMInstance();var d=ICEcoder.getcMdiffInstance();if(c=-1b.index+b[0].length;);(d=top.get("content").contentWindow.document.getElementById("cssColor"))&&d.parentNode.removeChild(d);top.ICEcoder.codeAssist&&"CSS"==top.ICEcoder.caretLocType&&(d=top.document.createElement("div"),d.id= +"cssColor",d.style.position="absolute",d.style.display="block",d.style.width=d.style.height="20px",d.style.zIndex="1000",d.style.background=b?b[0]:"",d.style.cursor="pointer",d.onclick=function(){top.ICEcoder.showColorPicker(b[0])},""==d.style.backgroundColor&&(d.style.display="none"),top.get("header").appendChild(d),c.addWidget(c.getCursor(),top.get("cssColor"),!0))}},showColorPicker:function(a){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='



'; +farbtastic("picker","color");a&&top.get("picker").farbtastic.setColor(a)},initCanvasImage:function(a){var b=top.get("canvasPicker").getContext("2d");var c=new Image;c.crossOrigin="Anonymous";c.src=a.src;c.onerror=function(){get("floatingContainer").style.visibility="hidden";get("canvasPickerColorInfo").style.display="none";get("canvasPickerCORSInfo").style.display="block"};c.onload=function(){top.get("canvasPicker").width=a.width;top.get("canvasPicker").height=a.height;b.drawImage(c,0,0,a.width,a.height); +get("canvasPickerColorInfo").style.display="block";get("canvasPickerCORSInfo").style.display="none";top.get("canvasPicker").onmouseover=function(a){get("floatingContainer").style.visibility="visible"};top.get("canvasPicker").onmouseout=function(a){get("floatingContainer").style.visibility="hidden"}};top.document.getElementById("floatingContainer").style.backgroundSize=5*a.naturalWidth+"px "+5*a.naturalHeight+"px"},interactCanvasImage:function(a){var b,c,d,e,f,g,m,h,l,n,p,k;var r=top.get("canvasPicker").getContext("2d"); +top.get("canvasPicker").onmousemove=function(t){b=t.pageX-this.offsetLeft;c=t.pageY-this.offsetTop;d=r.getImageData(b,c,1,1).data;e=d[0];f=d[1];g=d[2];m=e+","+f+","+g;h=top.ICEcoder.rgbToHex(e,f,g);top.get("rgbMouseXY").value=m;top.get("hexMouseXY").value="#"+h;top.get("hexMouseXY").style.backgroundColor=top.get("rgbMouseXY").style.backgroundColor="#"+h;l=128>e||128>f||128>g&&200>e&&200>f&&50'+top.t["Cancelled tasks"]+""); -setTimeout(function(){top.ICEcoder.serverMessage()},2E3)},setPreviousFiles:function(){var a;a=top.ICEcoder.openFiles.join(",").replace(/\//g,"|").replace(/(\|\[NEW\])|(,\|\[NEW\])/g,"").replace(/(^,)|(,$)/g,"");""==a&&(a="CLEAR");top.ICEcoder.serverQueue("add","lib/settings.php?saveFiles="+a+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.updateLast10List(a)},updateLast10List:function(a){var b,c,d;a=a.split(",");for(var e=0;e"+a[e].replace(/\|/g,"/")+"\n",c=top.ICEcoder.content.contentWindow.document.getElementById("last10Files"),-1==c.innerHTML.indexOf(b)&&(d=c.innerHTML.split("\n"),(10<=d.length||'
[none]


'==d[0]||""==d[d.length-1])&&d.pop(),c.innerHTML=b+d.join("\n")))},autoOpenFiles:function(){if(0< +b);top.ICEcoder.serverMessage(c.split(":")[1])},6E4*d):top.ICEcoder["plugTimer"+a]=setInterval("window.open('"+b+"','"+c+"')",6E4*d);top.ICEcoder.pluginIntervalRefs.push(a)},codeAssistToggle:function(){top.ICEcoder.codeAssist=!top.ICEcoder.codeAssist;top.get("codeAssistDisplay").style.backgroundPosition=top.ICEcoder.codeAssist?"0 0":"-16px 0";top.ICEcoder.cssColorPreview();top.ICEcoder.focus(-1'+top.t["Cancelled tasks"]+""); +setTimeout(function(){top.ICEcoder.serverMessage()},2E3)},setPreviousFiles:function(){var a=top.ICEcoder.openFiles.join(",").replace(/\//g,"|").replace(/(\|\[NEW\])|(,\|\[NEW\])/g,"").replace(/(^,)|(,$)/g,"");""==a&&(a="CLEAR");top.ICEcoder.serverQueue("add","lib/settings.php?saveFiles="+a+"&csrf="+top.ICEcoder.csrf);top.ICEcoder.updateLast10List(a)},updateLast10List:function(a){a=a.split(",");for(var b=0;b"+a[b].replace(/\|/g,"/")+"\n";var d=top.ICEcoder.content.contentWindow.document.getElementById("last10Files");if(-1==d.innerHTML.indexOf(c)){var e=d.innerHTML.split("\n");(10<=e.length||'
[none]


'==e[0]||""==e[e.length-1])&&e.pop();d.innerHTML=c+e.join("\n")}}},autoOpenFiles:function(){if(0< top.ICEcoder.previousFiles.length&&top.ICEcoder.ask(top.t["Open previous files"]+"\n\n"+top.ICEcoder.previousFiles.length+" files:\n"+top.ICEcoder.previousFiles.join("\n").replace(/\|/g,"/").replace(new RegExp(top.docRoot+top.iceRoot,"gi"),"")))for(var a=0;a';top.ICEcoder.showHide("show",top.get("blackMask"))},showManual:function(a,b){var c;c=b?"#"+b:"";top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},propertiesScreen:function(a){top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},autoLogoutWarningScreen:function(){top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},pluginsManager:function(){top.get("mediaContainer").innerHTML=''; +'" class="whiteGlow" style="width: 970px; height: 640px">';top.ICEcoder.showHide("show",top.get("blackMask"))},showManual:function(a,b){var c=b?"#"+b:"";top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},propertiesScreen:function(a){top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},autoLogoutWarningScreen:function(){top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},pluginsManager:function(){top.get("mediaContainer").innerHTML=''; top.ICEcoder.showHide("show",top.get("blackMask"))},goLocalhostRoot:function(){top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="https://github.com/lib/go-localhost-root.php"},githubAction:function(a){top.get("mediaContainer").innerHTML='';top.ICEcoder.showHide("show",top.get("blackMask"))},githubTokenAsk:function(a){if(githubAuthToken= top.ICEcoder.getInput(top.t["Please enter your..."],""))top.ICEcoder.filesFrame.contentWindow.frames.fileControl.location.href="https://github.com/lib/github.php?action=auth&token="+githubAuthToken+"&goNext="+a+"&csrf="+top.ICEcoder.csrf,githubAuthToken=""},showHideGithubNav:function(a){top.get("githubNav").style.display="show"==a?"block":"none";top.get("fileNav").style.display="show"==a?"none":"block"},githubManager:function(){top.ICEcoder.githubAuthTokenSet?(top.get("mediaContainer").innerHTML='', -top.ICEcoder.showHide("show",top.get("blackMask"))):top.ICEcoder.githubTokenAsk("showManager")},githubDiffToggle:function(){var a;if(!top.ICEcoder.githubAuthTokenSet)top.ICEcoder.githubTokenAsk("loadFiles");else if(top.ICEcoder.githubDiff||top.ICEcoder.ask(top.t["This will compare..."]))top.ICEcoder.githubDiff=!top.ICEcoder.githubDiff,a=top.ICEcoder.githubDiff?"true":"false",top.ICEcoder.filesFrame.src="https://github.com/files.php?githubDiff="+a+"&csrf="+top.ICEcoder.csrf},ftpManager:function(){top.get("mediaContainer").innerHTML= -'';top.ICEcoder.showHide("show",top.get("blackMask"))},useNewSettings:function(a,b,c,d,e,f,g,k,h,l,p,n,m,r,t,w,v,x,y,z,A,B,C,D){var q,u=a.slice(0,a.lastIndexOf("?")),u=u.slice(u.lastIndexOf("/")+1,u.lastIndexOf("."));top.ICEcoder.theme!==u&&(top.ICEcoder.theme=u,"editor"==top.ICEcoder.theme&&(top.ICEcoder.theme="icecoder"),q=document.createElement("link"),q.setAttribute("rel","stylesheet"),q.setAttribute("type", -"text/css"),q.setAttribute("href",a),top.ICEcoder.content.contentWindow.document.getElementsByTagName("head")[0].appendChild(q),q=document.createElement("link"),q.setAttribute("rel","stylesheet"),q.setAttribute("type","text/css"),q.setAttribute("href",a),top.document.getElementsByTagName("head")[0].appendChild(q),q=-1<"3024-day base16-light eclipse elegant mdn-like neat neo paraiso-light solarized the-matrix xq-light".split(" ").indexOf(top.ICEcoder.theme)?"#ccc":-1<"3024-night blackboard colorforth liquibyte night tomorrow-night-bright tomorrow-night-eighties vibrant-ink".split(" ").indexOf(top.ICEcoder.theme)? -"#888":"#000",top.ICEcoder.switchTab(top.ICEcoder.selectedTab));b!=top.ICEcoder.codeAssist&&(top.get("codeAssist").checked=b,top.ICEcoder.codeAssistToggle());c!=top.ICEcoder.lockedNav&&(top.ICEcoder.lockUnlockNav(),ICEcoder.changeFilesW(c?"expand":"contract"),top.ICEcoder.hideFileMenu());a=top.document.styleSheets[0];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.filesFrame.contentWindow.document.styleSheets[3];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.content.contentWindow.document.styleSheets[4]; -b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a[b][4].style["border-left-width"]=f?"1px":"0";a[b][4].style["margin-left"]=f?"-1px":"0";a[b][2].style.cssText="background-color: "+q+" !important";top.ICEcoder.lineWrapping=k;top.ICEcoder.lineNumbers=h;top.ICEcoder.showTrailingSpace=l;top.ICEcoder.matchBrackets=p;top.ICEcoder.autoCloseTags=n;top.ICEcoder.autoCloseBrackets=m;top.ICEcoder.indentWithTabs=r;top.ICEcoder.indentSize=w;top.ICEcoder.indentAuto=t;for(f=0;f';top.ICEcoder.showHide("show",top.get("blackMask"))},useNewSettings:function(a,b,c,d,e,f,g,m,h,l,n,p,k,r,t,w,v,x,y,z,A,B,C,D){var u=a.slice(0,a.lastIndexOf("?"));u=u.slice(u.lastIndexOf("/")+1,u.lastIndexOf("."));if(top.ICEcoder.theme!==u){top.ICEcoder.theme=u;"editor"==top.ICEcoder.theme&&(top.ICEcoder.theme="icecoder");var q=document.createElement("link");q.setAttribute("rel","stylesheet");q.setAttribute("type", +"text/css");q.setAttribute("href",a);top.ICEcoder.content.contentWindow.document.getElementsByTagName("head")[0].appendChild(q);q=document.createElement("link");q.setAttribute("rel","stylesheet");q.setAttribute("type","text/css");q.setAttribute("href",a);top.document.getElementsByTagName("head")[0].appendChild(q);q=-1<"3024-day base16-light eclipse elegant mdn-like neat neo paraiso-light solarized the-matrix xq-light".split(" ").indexOf(top.ICEcoder.theme)?"#ccc":-1<"3024-night blackboard colorforth liquibyte night tomorrow-night-bright tomorrow-night-eighties vibrant-ink".split(" ").indexOf(top.ICEcoder.theme)? +"#888":"#000";top.ICEcoder.switchTab(top.ICEcoder.selectedTab)}b!=top.ICEcoder.codeAssist&&(top.get("codeAssist").checked=b,top.ICEcoder.codeAssistToggle());c!=top.ICEcoder.lockedNav&&(top.ICEcoder.lockUnlockNav(),ICEcoder.changeFilesW(c?"expand":"contract"),top.ICEcoder.hideFileMenu());a=top.document.styleSheets[0];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.filesFrame.contentWindow.document.styleSheets[3];b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a=ICEcoder.content.contentWindow.document.styleSheets[4]; +b=a.rules?"rules":"cssRules";a[b][0].style.fontSize=g;a[b][4].style["border-left-width"]=f?"1px":"0";a[b][4].style["margin-left"]=f?"-1px":"0";a[b][2].style.cssText="background-color: "+q+" !important";top.ICEcoder.lineWrapping=m;top.ICEcoder.lineNumbers=h;top.ICEcoder.showTrailingSpace=l;top.ICEcoder.matchBrackets=n;top.ICEcoder.autoCloseTags=p;top.ICEcoder.autoCloseBrackets=k;top.ICEcoder.indentWithTabs=r;top.ICEcoder.indentSize=w;top.ICEcoder.indentAuto=t;for(f=0;fchMod "+ -b+" on
"+a.replace(/\|/g,"/"))},openPreviewWindow:function(){if(060*top.ICEcoder.autoLogoutMins-60&&ICEcoder.showHide("hide",get("blackMask")); -top.ICEcoder.autoLogoutTimer=0},logout:function(a){window.location=window.location+"?logout&"+(a?"type="+a+"&":"")+"csrf="+top.ICEcoder.csrf},message:function(a){alert(a)},ask:function(a){return confirm(a)},getInput:function(a,b){return prompt(a,b)},dataMessage:function(a){var b;b=top.ICEcoder.content.contentWindow.document.getElementById("dataMessage");b.style.display="block";b.innerHTML=a},update:function(){confirm(top.t["Please note for..."])?(top.ICEcoder.showHide("show",top.get("loadingMask")), +b+" on
"+a.replace(/\|/g,"/"))},openPreviewWindow:function(){if(060*top.ICEcoder.autoLogoutMins-60&&ICEcoder.showHide("hide",get("blackMask")); +top.ICEcoder.autoLogoutTimer=0},logout:function(a){window.location=window.location+"?logout&"+(a?"type="+a+"&":"")+"csrf="+top.ICEcoder.csrf},message:function(a){alert(a)},ask:function(a){return confirm(a)},getInput:function(a,b){return prompt(a,b)},dataMessage:function(a){var b=top.ICEcoder.content.contentWindow.document.getElementById("dataMessage");b.style.display="block";b.innerHTML=a},update:function(){confirm(top.t["Please note for..."])?(top.ICEcoder.showHide("show",top.get("loadingMask")), window.location="lib/updater.php"):window.open("https://icecoder.net/")},updated:function(){top.get("blackMask").style.visibility="visible";top.get("mediaContainer").innerHTML='

Thanks for updating to v'+top.ICEcoder.versionNo+'!

Click anywhere to continue using ICEcoder...

'},xhrObj:function(){try{return new XMLHttpRequest}catch(a){}try{return new ActiveXObject("Msxml3.XMLHTTP")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(a){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(a){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){}return null}, -openBugReport:function(){var a;"off"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["You can start..."]);"error"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["Error cannot find..."]);"ok"==top.ICEcoder.bugReportStatus&&top.ICEcoder.message(top.t["No new errors..."]);"bugs"==top.ICEcoder.bugReportStatus&&(a=top.ICEcoder.openFiles.indexOf(top.ICEcoder.bugReportPath.replace(/\|/g,"/")),-1/g,">").replace(/"/g, -""").replace(/'/g,"'")},printCode:function(){var a,b;a=top.ICEcoder.getcMInstance();b=top.ICEcoder.getcMdiffInstance();a=-1ICEcoder code output
'+top.ICEcoder.xssClean(a.getValue())+"
";b.focus();b.print();a.focus()},indicateChanges:function(){var a; -if(!top.ICEcoder.loadingFile){a="ICEcoder v "+top.ICEcoder.versionNo;for(var b=1;b<=top.ICEcoder.savedPoints.length;b++)if(top.ICEcoder.savedPoints[b-1]!=top.ICEcoder.getcMInstance(b).changeGeneration()){a+=" \u2744";break}top.document.title=a}},switchTab:function(a,b){var c,d;ICEcoder.selectedTab=a;c=ICEcoder.getcMInstance();d=ICEcoder.getcMdiffInstance();if(-1 '+ +""").replace(/'/g,"'")},printCode:function(){var a=top.ICEcoder.getcMInstance();var b=top.ICEcoder.getcMdiffInstance();a=-1ICEcoder code output
'+top.ICEcoder.xssClean(a.getValue())+"
";b.focus();b.print();a.focus()},indicateChanges:function(){if(!top.ICEcoder.loadingFile){var a= +"ICEcoder v "+top.ICEcoder.versionNo;for(var b=1;b<=top.ICEcoder.savedPoints.length;b++)if(top.ICEcoder.savedPoints[b-1]!=top.ICEcoder.getcMInstance(b).changeGeneration()){a+=" \u2744";break}top.document.title=a}},switchTab:function(a,b){ICEcoder.selectedTab=a;var c=ICEcoder.getcMInstance();var d=ICEcoder.getcMdiffInstance();if(-1 '+ b.slice(b.lastIndexOf("/")).replace(/\//,"");top.get("tab"+top.ICEcoder.openFiles.length).title="/"+top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1].replace(/\//,"");top.ICEcoder.setTabWidths();top.ICEcoder.redoTabHighlight(top.ICEcoder.openFiles.length);top.ICEcoder.selectedTab=top.ICEcoder.openFiles.length;top.ICEcoder.savedPoints.push(0);top.ICEcoder.savedContents.push("");a||top.ICEcoder.setPreviousFiles()},nextTab:function(){top.ICEcoder.switchTab(top.ICEcoder.selectedTab+1<=top.ICEcoder.openFiles.length? -top.ICEcoder.selectedTab+1:1,"noFocus")},previousTab:function(){top.ICEcoder.switchTab(1<=top.ICEcoder.selectedTab-1?top.ICEcoder.selectedTab-1:top.ICEcoder.openFiles.length,"noFocus")},renameTab:function(a,b){var c;top.ICEcoder.openFiles[a-1]=b;c=top.ICEcoder.openFiles[a-1];top.get("tab"+a).innerHTML=' '+ +top.ICEcoder.selectedTab+1:1,"noFocus")},previousTab:function(){top.ICEcoder.switchTab(1<=top.ICEcoder.selectedTab-1?top.ICEcoder.selectedTab-1:top.ICEcoder.openFiles.length,"noFocus")},renameTab:function(a,b){top.ICEcoder.openFiles[a-1]=b;var c=top.ICEcoder.openFiles[a-1];top.get("tab"+a).innerHTML=' '+ c.slice(c.lastIndexOf("/")).replace(/\//,"");top.get("tab"+a).title="/"+top.ICEcoder.openFiles[a-1].replace(/\//,"")},redoTabHighlight:function(a){for(var b,c,d=1;d<=ICEcoder.savedPoints.length;d++)top.get("tab"+d).childNodes[0]&&(top.get("tab"+d).childNodes[0].childNodes[0].style.backgroundColor=ICEcoder.savedPoints[d-1]!=top.ICEcoder.getcMInstance(d).changeGeneration()?"#b00":"transparent"),b=d==a?top.ICEcoder.tabFGselected:top.ICEcoder.tabFGnormalTab,"undefined"!=typeof top.ICEcoder.openFiles[d- -1]&&"/[NEW]"!=top.ICEcoder.openFiles[d-1]&&(c=top.ICEcoder.filesFrame.contentWindow.document.getElementById(top.ICEcoder.openFiles[d-1].replace(/\//g,"|")))&&(c.style.backgroundColor=d==a?top.ICEcoder.tabBGcurrent:top.ICEcoder.tabBGopen,c.style.color=d==a?top.ICEcoder.tabFGcurrent:top.ICEcoder.tabFGopenFile),top.get("tab"+d).style.color=b,top.get("tab"+d).style.background=d==a?top.ICEcoder.tabBGcurrent:top.ICEcoder.tabBGopen},closeTab:function(a,b,c){var d;a||(a=top.ICEcoder.selectedTab);ICEcoder.getcMInstance(); -ICEcoder.getcMdiffInstance();d=!0;c||ICEcoder.savedPoints[a-1]==top.ICEcoder.getcMInstance(a).changeGeneration()||(d=top.ICEcoder.ask(top.t["You have made..."]));if(d){c=top.ICEcoder.openFiles[a-1];for(d=a;db?parseInt(c*g,10)-parseInt(c*(g-1),10):150,e=0==g?53:parseInt(top.get("tab"+g).style.left,10),f=0==g?0:parseInt(top.get("tab"+g).style.width,10)+ -18,a?d=-18:(top.get("tab"+(g+1)).style.left=e+f+"px",top.get("tab"+(g+1)).style.width=d+"px"),top.ICEcoder.tabLeftPos.push(e+f);top.get("newTab").style.left=e+f+d+18+"px"}},tabDragStart:function(a){top.ICEcoder.draggingTab=a;top.ICEcoder.diffStartX=top.ICEcoder.mouseX;top.ICEcoder.tabDragMouseXStart=(top.ICEcoder.mouseX-(parseInt(top.ICEcoder.files.style.width,10)+53+18))%150;top.get("tab"+a).style.zIndex=2;for(var b=1;b<=top.ICEcoder.openFiles.length;b++)top.get("tab"+b).className=b!==a?"tab tabSlide": -"tab tabDrag"},tabDragMove:function(){var a,b;a=parseInt(top.get("tab"+top.ICEcoder.openFiles.length).style.width,10)+18;top.ICEcoder.thisLeft=a=53<=top.ICEcoder.tabDragMouseX?top.ICEcoder.tabDragMouseX<=parseInt(top.get("newTab").style.left,10)-a?top.ICEcoder.tabDragMouseX:parseInt(top.get("newTab").style.left,10)-a:53;top.get("tab"+top.ICEcoder.draggingTab).style.left=a+"px";top.ICEcoder.dragTabNo=top.ICEcoder.draggingTab;for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.get("tab"+c).style.opacity= -c==top.ICEcoder.draggingTab?1:.5,b=top.ICEcoder.tabLeftPos[c]?top.ICEcoder.tabLeftPos[c]-top.ICEcoder.tabLeftPos[c-1]:b,c!=top.ICEcoder.draggingTab&&(c=top.ICEcoder.tabLeftPos[c-1]?top.ICEcoder.tabLeftPos[c-1]-b:top.ICEcoder.tabLeftPos[c-1])},tabDragEnd:function(){var a,b;top.ICEcoder.setTabWidths();for(var c=1;c<=top.ICEcoder.openFiles.length;c++)top.ICEcoder.thisLeft>= -top.ICEcoder.tabLeftPos[c-1]&&(a=top.ICEcoder.thisLeft==top.ICEcoder.tabLeftPos[0]?1:top.ICEcoder.dragTabNo>c?c+1:c),top.get("tab"+c).className="tab",top.get("tab"+c).style.opacity=1,c!=top.ICEcoder.dragTabNo?top.get("tab"+c).style.zIndex=1:setTimeout(function(){top.get("tab"+c).style.zIndex=1},150);if(top.ICEcoder.thisLeft&&!1!==top.ICEcoder.thisLeft){b=[];for(c=1;c<=top.ICEcoder.openFiles.length;c++)b.push(c);b.splice(top.ICEcoder.dragTabNo-1,1);b.splice(a-1,0,top.ICEcoder.dragTabNo);ICEcoder.sortTabs(b)}top.ICEcoder.setTabWidths(); -top.ICEcoder.draggingTab=!1;top.ICEcoder.thisLeft=!1},sortTabs:function(a){var b,c,d;b=[ICEcoder.savedPoints,ICEcoder.savedContents,ICEcoder.openFiles,ICEcoder.openFileMDTs,ICEcoder.openFileVersions,ICEcoder.cMInstances];c=[[],[],[],[],[],[]];for(var e=0;eb-5;)d.undo(),a++;if(top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]==d.changeGeneration())top.ICEcoder.startSnake();else for(b=1;b<=a;b++)d.redo()},0);if(top.ICEcoder.snakePlaying)return 37==c&&(top.ICEcoder.snakeDir= -"left"),39==c&&(top.ICEcoder.snakeDir="right"),38==c&&(top.ICEcoder.snakeDir="up"),40==c&&(top.ICEcoder.snakeDir="down"),!1;if(224==c||91==c||93==c)top.ICEcoder.cmdKey=!0;if(46==c&&"files"==a)return top.ICEcoder.deleteFiles(),!1;if(b.altKey){var f=b.ctrlKey||top.ICEcoder.cmdKey?!0:!1;return"ctrl+alt"==top.ICEcoder.tagWrapperCommand&&f||"alt-left"==top.ICEcoder.tagWrapperCommand&&!f?"content"==a?68==c?(top.ICEcoder.tagWrapper("div"),!1):83==c?(top.ICEcoder.tagWrapper("span"),!1):80==c?(top.ICEcoder.tagWrapper("p"), +!1);top.ICEcoder.indicateChanges()},setTabWidths:function(a){if(top.ICEcoder.ready){var b=parseInt(top.ICEcoder.content.style.width,10)-53-22-10;var c=b/top.ICEcoder.openFiles.length-18;var d=-18;var e=53;var f=0;top.ICEcoder.tabLeftPos=[];for(var g=0;gb?parseInt(c*g,10)-parseInt(c*(g-1),10):150,e=0==g?53:parseInt(top.get("tab"+g).style.left,10),f=0==g?0:parseInt(top.get("tab"+g).style.width, +10)+18,a?d=-18:(top.get("tab"+(g+1)).style.left=e+f+"px",top.get("tab"+(g+1)).style.width=d+"px"),top.ICEcoder.tabLeftPos.push(e+f);top.get("newTab").style.left=e+f+d+18+"px"}},tabDragStart:function(a){top.ICEcoder.draggingTab=a;top.ICEcoder.diffStartX=top.ICEcoder.mouseX;top.ICEcoder.tabDragMouseXStart=(top.ICEcoder.mouseX-(parseInt(top.ICEcoder.files.style.width,10)+53+18))%150;top.get("tab"+a).style.zIndex=2;for(var b=1;b<=top.ICEcoder.openFiles.length;b++)top.get("tab"+b).className=b!==a?"tab tabSlide": +"tab tabDrag"},tabDragMove:function(){var a=parseInt(top.get("tab"+top.ICEcoder.openFiles.length).style.width,10)+18;top.ICEcoder.thisLeft=a=53<=top.ICEcoder.tabDragMouseX?top.ICEcoder.tabDragMouseX<=parseInt(top.get("newTab").style.left,10)-a?top.ICEcoder.tabDragMouseX:parseInt(top.get("newTab").style.left,10)-a:53;top.get("tab"+top.ICEcoder.draggingTab).style.left=a+"px";top.ICEcoder.dragTabNo=top.ICEcoder.draggingTab;for(var b=1;b<=top.ICEcoder.openFiles.length;b++){top.get("tab"+b).style.opacity= +b==top.ICEcoder.draggingTab?1:.5;var c=top.ICEcoder.tabLeftPos[b]?top.ICEcoder.tabLeftPos[b]-top.ICEcoder.tabLeftPos[b-1]:c;b!=top.ICEcoder.draggingTab&&(b=top.ICEcoder.tabLeftPos[b-1]?top.ICEcoder.tabLeftPos[b-1]-c:top.ICEcoder.tabLeftPos[b-1])}},tabDragEnd:function(){var a;top.ICEcoder.setTabWidths();for(var b=1;b<=top.ICEcoder.openFiles.length;b++)top.ICEcoder.thisLeft>= +top.ICEcoder.tabLeftPos[b-1]&&(a=top.ICEcoder.thisLeft==top.ICEcoder.tabLeftPos[0]?1:top.ICEcoder.dragTabNo>b?b+1:b),top.get("tab"+b).className="tab",top.get("tab"+b).style.opacity=1,b!=top.ICEcoder.dragTabNo?top.get("tab"+b).style.zIndex=1:setTimeout(function(){top.get("tab"+b).style.zIndex=1},150);if(top.ICEcoder.thisLeft&&!1!==top.ICEcoder.thisLeft){var c=[];for(b=1;b<=top.ICEcoder.openFiles.length;b++)c.push(b);c.splice(top.ICEcoder.dragTabNo-1,1);c.splice(a-1,0,top.ICEcoder.dragTabNo);ICEcoder.sortTabs(c)}top.ICEcoder.setTabWidths(); +top.ICEcoder.draggingTab=!1;top.ICEcoder.thisLeft=!1},sortTabs:function(a){var b;var c=[ICEcoder.savedPoints,ICEcoder.savedContents,ICEcoder.openFiles,ICEcoder.openFileMDTs,ICEcoder.openFileVersions,ICEcoder.cMInstances];var d=[[],[],[],[],[],[]];for(var e=0;eb-5;)e.undo(),a++;if(top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]==e.changeGeneration())top.ICEcoder.startSnake();else for(b=1;b<=a;b++)e.redo()},0);if(top.ICEcoder.snakePlaying)return 37==c&&(top.ICEcoder.snakeDir= +"left"),39==c&&(top.ICEcoder.snakeDir="right"),38==c&&(top.ICEcoder.snakeDir="up"),40==c&&(top.ICEcoder.snakeDir="down"),!1;if(224==c||91==c||93==c)top.ICEcoder.cmdKey=!0;if(46==c&&"files"==a)return top.ICEcoder.deleteFiles(),!1;if(b.altKey){var d=b.ctrlKey||top.ICEcoder.cmdKey?!0:!1;return"ctrl+alt"==top.ICEcoder.tagWrapperCommand&&d||"alt-left"==top.ICEcoder.tagWrapperCommand&&!d?"content"==a?68==c?(top.ICEcoder.tagWrapper("div"),!1):83==c?(top.ICEcoder.tagWrapper("span"),!1):80==c?(top.ICEcoder.tagWrapper("p"), !1):65==c?(top.ICEcoder.tagWrapper("a"),!1):49==c?(top.ICEcoder.tagWrapper("h1"),!1):50==c?(top.ICEcoder.tagWrapper("h2"),!1):51==c?(top.ICEcoder.tagWrapper("h3"),!1):13==c?(top.ICEcoder.addLineBreakAtEnd(),!1):37==c?(top.ICEcoder.filesFrame.contentWindow.focus(),!1):c:37==c?(top.ICEcoder.filesFrame.contentWindow.focus(),!1):39==c?(top.ICEcoder.focus(-1Let\'s play
snake


Use arrow keys to eat your code

(it returns afterwards of course) :-)
'; -setTimeout(function(){top.ICEcoder.showHide("hide",top.get("blackMask"));top.get("mediaContainer").innerHTML="";top.ICEcoder.playSnake()},2E3)},playSnake:function(){var a;a=ICEcoder.getcMInstance();a.setOption("readOnly","nocursor");a.focus();top.ICEcoder.snakePreHistory=a.getHistory();top.ICEcoder.snakePreContent=a.getValue();top.ICEcoder.snakePreCursor=a.getCursor();a=Math.floor(50*Math.random());top.ICEcoder.snakePos=[[a,0],[a,-1],[a,-2],[a,-3],[a,-4]];top.ICEcoder.content.contentWindow.document.getElementById("game").style.display= -"block";top.ICEcoder.snakeDir="down";top.ICEcoder.doSnake();top.ICEcoder.snakeInt=setInterval(function(){var a=[];a[0]=top.ICEcoder.snakePos[0][0]+("right"==top.ICEcoder.snakeDir?1:"left"==top.ICEcoder.snakeDir?-1:0);a[1]=top.ICEcoder.snakePos[0][1]+("down"==top.ICEcoder.snakeDir?1:"up"==top.ICEcoder.snakeDir?-1:0);top.ICEcoder.snakePos.unshift(a);top.ICEcoder.snakePos.pop();top.ICEcoder.doSnake()},100)},doSnake:function(){var a,b,c,d,e,f,g;a=ICEcoder.getcMInstance();b=a.defaultCharWidth();c=a.defaultTextHeight(); -d=top.ICEcoder.content.contentWindow.document.getElementById("game").innerHTML="";for(g=0;g';top.ICEcoder.content.contentWindow.document.getElementById("game").innerHTML=d;d=a.coordsChar({top:top.ICEcoder.snakePos[0][1]*c+4,left:top.ICEcoder.snakePos[0][0]*b+ -60});e=a.getLine(d.line);if(top.ICEcoder.snakePos[0][0]-1<=e.length-2){f="";if("\t"===e.substr(d.ch,1))for(g=0;gtop.ICEcoder.snakePos[0][0]||0>top.ICEcoder.snakePos[0][1]||top.ICEcoder.snakePos[0][0]*b+60>g.clientWidth||top.ICEcoder.snakePos[0][1]*c+4>g.clientHeight||d)clearInterval(top.ICEcoder.snakeInt),top.ICEcoder.content.contentWindow.document.getElementById("game").style.display= -"none",a.setValue(top.ICEcoder.snakePreContent),top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=a.changeGeneration(),top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1]=top.ICEcoder.snakePreContent,a.setHistory(top.ICEcoder.snakePreHistory),top.ICEcoder.indicateChanges(),top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab),a.setOption("readOnly",!1),a.setCursor(top.ICEcoder.snakePreCursor),a.focus(),top.ICEcoder.snakePlaying=!1}}; \ No newline at end of file +window.open(top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]),!1;if(13==c&&"files"==a)return b.ctrlKey||top.ICEcoder.cmdKey||(0==top.ICEcoder.selectedFiles.length&&(top.ICEcoder.overFileFolder("folder","|"),top.ICEcoder.selectFileFolder("init")),top.ICEcoder.fmAction(b,"enter")),!1;if(38!=c&&40!=c&&37!=c&&39!=c||"files"!=a){if(79==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return top.ICEcoder.openPrompt(),!1;if(32==c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.addSnippet(),!1;if(74== +c&&(b.ctrlKey||top.ICEcoder.cmdKey)&&"content"==a)return top.ICEcoder.jumpToDefinition(),!1;if(223==c&&(b.ctrlKey||top.ICEcoder.cmdKey))return top.ICEcoder.lockUnlockNav(),ICEcoder.changeFilesW(top.ICEcoder.lockedNav?"expand":"contract"),!1;if(190==c&&(b.ctrlKey||top.ICEcoder.cmdKey)){var e=ICEcoder.getcMInstance();var f=ICEcoder.getcMdiffInstance();f=-1Let\'s play
snake


Use arrow keys to eat your code

(it returns afterwards of course) :-)
'; +setTimeout(function(){top.ICEcoder.showHide("hide",top.get("blackMask"));top.get("mediaContainer").innerHTML="";top.ICEcoder.playSnake()},2E3)},playSnake:function(){var a=ICEcoder.getcMInstance();a.setOption("readOnly","nocursor");a.focus();top.ICEcoder.snakePreHistory=a.getHistory();top.ICEcoder.snakePreContent=a.getValue();top.ICEcoder.snakePreCursor=a.getCursor();a=Math.floor(50*Math.random());top.ICEcoder.snakePos=[[a,0],[a,-1],[a,-2],[a,-3],[a,-4]];top.ICEcoder.content.contentWindow.document.getElementById("game").style.display= +"block";top.ICEcoder.snakeDir="down";top.ICEcoder.doSnake();top.ICEcoder.snakeInt=setInterval(function(){var a=[];a[0]=top.ICEcoder.snakePos[0][0]+("right"==top.ICEcoder.snakeDir?1:"left"==top.ICEcoder.snakeDir?-1:0);a[1]=top.ICEcoder.snakePos[0][1]+("down"==top.ICEcoder.snakeDir?1:"up"==top.ICEcoder.snakeDir?-1:0);top.ICEcoder.snakePos.unshift(a);top.ICEcoder.snakePos.pop();top.ICEcoder.doSnake()},100)},doSnake:function(){var a;var b=ICEcoder.getcMInstance();var c=b.defaultCharWidth();var d=b.defaultTextHeight(); +var e=top.ICEcoder.content.contentWindow.document.getElementById("game").innerHTML="";for(a=0;a';top.ICEcoder.content.contentWindow.document.getElementById("game").innerHTML=e;e=b.coordsChar({top:top.ICEcoder.snakePos[0][1]*d+4,left:top.ICEcoder.snakePos[0][0]* +c+60});var f=b.getLine(e.line);if(top.ICEcoder.snakePos[0][0]-1<=f.length-2){var g="";if("\t"===f.substr(e.ch,1))for(a=0;atop.ICEcoder.snakePos[0][0]||0>top.ICEcoder.snakePos[0][1]||top.ICEcoder.snakePos[0][0]*c+60>a.clientWidth||top.ICEcoder.snakePos[0][1]*d+4>a.clientHeight||e)clearInterval(top.ICEcoder.snakeInt), +top.ICEcoder.content.contentWindow.document.getElementById("game").style.display="none",b.setValue(top.ICEcoder.snakePreContent),top.ICEcoder.savedPoints[top.ICEcoder.selectedTab-1]=b.changeGeneration(),top.ICEcoder.savedContents[top.ICEcoder.selectedTab-1]=top.ICEcoder.snakePreContent,b.setHistory(top.ICEcoder.snakePreHistory),top.ICEcoder.indicateChanges(),top.ICEcoder.redoTabHighlight(top.ICEcoder.selectedTab),b.setOption("readOnly",!1),b.setCursor(top.ICEcoder.snakePreCursor),b.focus(),top.ICEcoder.snakePlaying= +!1}}; From fda69a6d8c39aaf0876f18926bd6bc39cdaf9465 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Tue, 13 Aug 2019 00:02:27 +0100 Subject: [PATCH 024/704] Remove donation code system from login --- lib/login.php | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/lib/login.php b/lib/login.php index 2bd17957..af20c460 100644 --- a/lib/login.php +++ b/lib/login.php @@ -19,7 +19,7 @@ setTimeout(function(){document.getElementById('screenContainer').style.opacity=1},50)"> - +
@@ -27,24 +27,8 @@
v
- -

Thanks for trialling ICEcoder!

Please donate on the website to continue using it.

-

Step 1: Donate



- Donate now


-

Step 2: Enter email address & code


- Please check your emailed details and try again.

";};?> -

'.PHP_EOL;};?> -

-

-


- Future development relies on your donation, to keep making awesome new features.

- Many thanks.
- Thank you very much for your donation!

Your details have been accepted and
ICEcoder is now fully unlocked.


';}; - if ($ICEcoder["multiUser"]) {echo '

'.PHP_EOL;}; +

'.PHP_EOL;}; ?>

'.$t['auto-check for updates'].'
'; } if (!$ICEcoder["multiUser"]) { echo '';}; - } ?> "> @@ -81,4 +64,4 @@ - \ No newline at end of file + From 88b2108159119205b986412e94eec2d0602971e2 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Tue, 13 Aug 2019 00:06:19 +0100 Subject: [PATCH 025/704] Remove trial redir/time period, verifyHash added --- lib/settings.php | 49 +----------------------------------------------- 1 file changed, 1 insertion(+), 48 deletions(-) diff --git a/lib/settings.php b/lib/settings.php index a395630d..26494a7c 100644 --- a/lib/settings.php +++ b/lib/settings.php @@ -97,25 +97,6 @@ if ((!$ICEcoder['loginRequired'] || $ICEcoder['demoMode']) && $ICEcoder['password']!="") {$_SESSION['loggedIn']=true;}; $demoMode = $ICEcoder['demoMode']; -// Check if trial period has ended -$tPeriod = 1296000-1; - -if (isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && generateHash(strClean($ICEcoder['licenseEmail']),$ICEcoder['licenseCode'])!=$ICEcoder['licenseCode'] && $ICEcoder['configCreateDate'] > 0 && $ICEcoder['configCreateDate']+$tPeriod < time() && !isset($_GET['get']) && !isset($_POST['code'])) { - if (file_exists('lib/login.php')) { - // Go to get code screen in top level window - echo ""; - } else { - // Go to get code screen in top level window - echo ""; - } - die('Redirecting to donate screen...'); - exit; -} -$tRemaining = ($ICEcoder['configCreateDate']+$tPeriod)-time(); -if ($tRemaining > $tPeriod || $ICEcoder['configCreateDate'] == 0) {$tRemaining = $tPeriod;}; -$tRemainingPerc = number_format($tRemaining/$tPeriod,2); -$tDaysRemaining = intval($tRemaining/(60*60*24)); - // Update this config file? include(dirname(__FILE__)."/settings-update.php"); @@ -126,7 +107,7 @@ // Attempt a login with password if(isset($_POST['submit']) && $setPWorLogin=="login") { // On success, set username if multiUser, loggedIn to true and redirect - if (generateHash(strClean($_POST['password']),$ICEcoder["password"])==$ICEcoder["password"]) { + if (verifyHash(strClean($_POST['password']),$ICEcoder["password"])==$ICEcoder["password"]) { session_regenerate_id(); if ($ICEcoder["multiUser"]) { $_SESSION['username'] = $_POST['username']; @@ -200,34 +181,6 @@ } die('Redirecting to login...'); -// If we're unlocking ICEcoder after donating -} elseif (isset($_POST['submit']) && (strpos($_POST['submit'],"Unlock ICEcoder")>-1)) { - if (generateHash(strClean($_POST['email']),$_POST['code'])==$_POST['code']) { - $settingsContents = getData($settingsFile); - // Replace our empty email & code with the one submitted by user - $settingsContents = str_replace('"licenseEmail" => "",','"licenseEmail" => "'.$_POST['email'].'",',$settingsContents); - $settingsContents = str_replace('"licenseCode" => "",','"licenseCode" => "'.$_POST['code'].'",',$settingsContents); - // Now update the config file - $fh = fopen($settingsFile, 'w') or die("Can't update config file. Please set public write permissions on ".$settingsFile." and press refresh"); - fwrite($fh, $settingsContents); - fclose($fh); - if (file_exists('lib/login.php')) { - header('Location: lib/login.php?message=trialDonateThanks&csrf='.$_SESSION["csrf"]); - echo ""; - } else { - header('Location: login.php?message=trialDonateThanks&csrf='.$_SESSION["csrf"]); - echo ""; - } - } else { - if (file_exists('lib/login.php')) { - header('Location: lib/login.php?get=code&success=no&csrf='.$_SESSION["csrf"]); - echo ""; - } else { - header('Location: login.php?get=code&success=no&csrf='.$_SESSION["csrf"]); - echo ""; - } - } - // If we are on the login screen and not logged in } elseif (!$_SESSION['loggedIn']) { // If the password hasn't been set and we're setting it From bc67286bb6139c9c31ad0f33d5c795f9ebdfa9d0 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Tue, 13 Aug 2019 00:11:52 +0100 Subject: [PATCH 026/704] Migrate to Bcrypt hashing for new passwords Fall back to legacy sha1 password hashing --- lib/settings-common.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/settings-common.php b/lib/settings-common.php index 3168af70..95a852b8 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -110,15 +110,24 @@ function stripslashes_deep($value) { $_REQUEST = (isset($_REQUEST) && !empty($_REQUEST)) ? array_map('stripslashes_deep', $_REQUEST) : array(); } -// Function to handle salted hashing define('SALT_LENGTH',12); -function generateHash($plainText,$salt=null) { - if ($salt === null) { - $salt = substr(md5(uniqid(rand(), true)),0,SALT_LENGTH); - } else { - $salt = substr($salt,0,SALT_LENGTH); - } - return $salt.sha1($salt.$plainText); +// Generate hash +function generateHash($pw) { + // Generate Bcrypt hash + return str_replace("\$", "\\$", password_hash($pw, PASSWORD_BCRYPT, $options = ['cost' => 10])); +} + +// Verify hash +function verifyHash($pw, $orig) { + // Verify Bcrypt hash + if (substr($orig, 0, 4) === "$2y$") { + return password_verify($pw, $orig) + ? $orig + : "NO MATCH"; + } + // Verify legacy sha1 hash + $origSalt = substr($orig,0,SALT_LENGTH); + return $origSalt.sha1($origSalt.$pw); } // returns converted entities which have HTML entity equivalents From f49cfced9373a0693332c76f964869dc1472e632 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 14 Aug 2019 19:57:34 +0100 Subject: [PATCH 027/704] Indexer added --- lib/indexer.php | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 lib/indexer.php diff --git a/lib/indexer.php b/lib/indexer.php new file mode 100644 index 00000000..2bd15f50 --- /dev/null +++ b/lib/indexer.php @@ -0,0 +1,93 @@ +-1 ? "\\" : "/"; + while($f = readdir($fp)) { + // Ignore . and .. paths + if(preg_match("#^\.+$#", $f)) continue; + $fullPath = $path.$slash.$f; + + // Exclude the folder ICEcoder is running from + $rootPrefix = '/'.str_replace("/","\/",preg_quote(str_replace("\\","/",$docRoot))).'/'; + $localPath = preg_replace($rootPrefix, '', $fullPath, 1); + if (strpos($localPath, $ICEcoderDir)===0) { + continue; + } + if(is_dir($fullPath)) { + $ret .= phpGrep($q, $fullPath, $base); + } else { + $bFile = false; + // Exclude banned files + for ($i=0;$i $line) { + $functionText = ""; + $classText = ""; + // Get function declaration lines + if (strpos($line, "function ") !== false) { + $functionText = substr($line, strpos($line, "function ") + 9); + // Get just the name of the function/class + $functionText = explode("(", explode("{", trim($functionText))[0]); + } + // Get class declaration lines + if (strpos($line, "class ") !== false) { + $classText = substr($line, strpos($line, "class ") + 6); + // Get just the name of the function/class + $classText = explode("(", explode("{", trim($classText))[0]); + } + if (!empty($functionText)) { + $resultsArray['functions'][$functionText[0]] = [ + "name" => $functionText[0], + "range" => [ + "from" => [ + "line" => $lineNum, + "ch" => strpos($line, $functionText[0]) + ], + "to" => [ + "line" => $lineNum, + "ch" => (strpos($line, $functionText[0]) + strlen($functionText[0])) + ] + ], + "fullPath" => $fullPath, + "params" => trim("(".$functionText[1]) + ]; + } + if (!empty($classText)) { + $resultsArray['classes'][$classText[0]] = [ + "name" => $classText[0], + "range" => [ + "from" => [ + "line" => $lineNum, + "ch" => strpos($line, $classText[0]) + ], + "to" => [ + "line" => $lineNum, + "ch" => (strpos($line, $classText[0]) + strlen($classText[0])) + ] + ], + "fullPath" => $fullPath, + "params" => trim("(".$classText[1]) + ]; + } + } + } + } + } + return $ret; +} + +$results = phpGrep("function", $docRoot.$iceRoot, $docRoot.$iceRoot); +echo json_encode($resultsArray, JSON_PRETTY_PRINT); +?> From ca60a88a54148e0e069299eaee6cd89235b83e03 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 14 Aug 2019 20:02:57 +0100 Subject: [PATCH 028/704] Mouse move tooltip, no context menu, event tweaks --- editor.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/editor.php b/editor.php index 7700a1bd..55a23bd4 100644 --- a/editor.php +++ b/editor.php @@ -5,7 +5,7 @@ ?> - + ICEcoder v <?php echo $ICEcoder["versionNo"];?> editor @@ -92,7 +92,7 @@ - + @@ -282,8 +282,12 @@ function createNewCMInstance(num) { window['cM'+num+'diff'] .on("gutterClick", function(thisCM,line,gutter,evt) {top.ICEcoder.cMonGutterClick(thisCM,line,gutter,evt,'cM'+num+'diff')}); // Mouse Down - window['cM'+num] .on("mousedown", function(thisCM) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num)}); - window['cM'+num+'diff'] .on("mousedown", function(thisCM) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num+'diff')}); + window['cM'+num] .on("mousedown", function(thisCM,evt) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num,evt)}); + window['cM'+num+'diff'] .on("mousedown", function(thisCM,evt) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num+'diff',evt)}); + + // Context Menu + window['cM'+num] .on("contextmenu", function(thisCM,evt) {top.ICEcoder.cMonContextMenu(thisCM,'cM'+num,evt)}); + window['cM'+num+'diff'] .on("contextmenu", function(thisCM,evt) {top.ICEcoder.cMonContextMenu(thisCM,'cM'+num+'diff',evt)}); // Drag Over window['cM'+num] .on("dragover", function(thisCM) {top.ICEcoder.cMonDragOver(thisCM,event,'cM'+num)}); From 45d58d90c3e5380922f65b6caf5b60c597a2a07a Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 14 Aug 2019 21:25:38 +0100 Subject: [PATCH 029/704] Index every 1s, params: hover, jump: CTRL+r/click --- lib/ice-coder.js | 95 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/lib/ice-coder.js b/lib/ice-coder.js index c007d4a6..5ef83c8d 100644 --- a/lib/ice-coder.js +++ b/lib/ice-coder.js @@ -140,6 +140,16 @@ var ICEcoder = { if (top.ICEcoder.openSeconds % 300 == 0) { top.ICEcoder.filesFrame.contentWindow.frames['pingActive'].location.href = "lib/session-active-ping.php"; } + if (top.ICEcoder.openSeconds % 1 == 0) { + // Get new data + fetch('https://github.com/lib/indexer.php') + .then(function(response) { + // Convert to JSON + return response.json(); + }).then(function(data) { + top.ICEcoder.indexData = data; + }); + } },1000); // ICEcoder is ready to start using @@ -626,10 +636,56 @@ var ICEcoder = { }, // On mouse down - cMonMouseDown: function(thisCM,cMinstance) { + cMonMouseDown: function(thisCM,cMinstance,evt) { top.ICEcoder.mouseDownInCM = "editor"; }, + // On context menu + cMonContextMenu: function(thisCM,cMinstance,evt) { + // Set cursor + var currCoords = thisCM.coordsChar({left: evt.pageX, top: evt.pageY}); + thisCM.setCursor(currCoords); + + // If CTRL key down + if (evt.ctrlKey) { + setTimeout(function() { + // Get cM and word under mouse pointer + var cM = thisCM; + var word = (cM.getRange(cM.findWordAt(cM.getCursor()).anchor, cM.findWordAt(cM.getCursor()).head)); + + // Get result and number of results for word in functions and classes from index JSON object list + result = null; + numResults = 0; + for(i in top.ICEcoder.indexData.functions) { + if (i === word) { + result = top.ICEcoder.indexData.functions[i]; + numResults++; + } + }; + for(i in top.ICEcoder.indexData.classes) { + if (i === word) { + result = top.ICEcoder.indexData.classes[i]; + numResults++; + } + }; + + // If we have a single result, we can jump to where it's defined + if (numResults === 1) { + top.ICEcoder.openFile(result.fullPath.replace(top.docRoot,"")); + top.ICEcoder.goFindAfterOpenInt = setInterval(function(){ + if (top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1] == result.fullPath.replace(top.docRoot,"") && !top.ICEcoder.loadingFile) { + cM = top.ICEcoder.getcMInstance(); + cM.setSelection({line: result.range.from.line, ch: result.range.from.ch}, {line: result.range.to.line, ch: result.range.to.ch}); + clearInterval(top.ICEcoder.goFindAfterOpenInt); + } + },20); + } + + top.ICEcoder.mouseDownInCM = "editor"; + },0); + } + }, + // On drag over cMonDragOver: function(thisCM,evt,cMinstance) { top.ICEcoder.setDragCursor(evt,'editor'); @@ -660,6 +716,43 @@ var ICEcoder = { } }, + // Show Function & class params tooltip + functionClassParamsTooltip: function(e, area) { + if (top.ICEcoder.indexData) { + var i; + // Get cM instance, and the word under mouse pointer + var cM = top.ICEcoder.getcMInstance(); + var coordsChar = cM.coordsChar({left: top.ICEcoder.mouseX-top.ICEcoder.maxFilesW, top: top.ICEcoder.mouseY-72}); + var word = (cM.getRange(cM.findWordAt(coordsChar).anchor, cM.findWordAt(coordsChar).head)); + + // Get result and number of results for word in functions and classes from index JSON object list + var result = null; + var numResults = 0; + for(i in top.ICEcoder.indexData.functions) { + if (i === word) { + result = top.ICEcoder.indexData.functions[i]; + numResults++; + } + }; + for(i in top.ICEcoder.indexData.classes) { + if (i === word) { + result = top.ICEcoder.indexData.classes[i]; + numResults++; + } + }; + // If we have a single result, and that result is for another file we can display the tooltip + if (numResults === 1 && result.fullPath.replace(top.docRoot,"") !== top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]) { + get('tooltip').style.display = "block"; + get('tooltip').style.left = (top.ICEcoder.mouseX-top.ICEcoder.maxFilesW+10) + "px"; + get('tooltip').style.top = (top.ICEcoder.mouseY-30) + "px"; + get('tooltip').innerHTML = result.params; + // Else hide it + } else { + get('tooltip').style.display = "none"; + } + } + }, + // Update diffs shown to the user in each pane updateDiffs: function() { var cM, cMdiff, mainText, diffText, sm, opcodes, cMmarks, cMdiffMarks, amt, sDiffs; From 6c67116d53a9967b10b20575f8fe9eaaca2847b6 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Wed, 14 Aug 2019 21:28:12 +0100 Subject: [PATCH 030/704] Tooltip added --- index.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index e69333a9..2f946ba4 100644 --- a/index.php +++ b/index.php @@ -337,6 +337,8 @@
+ + \ No newline at end of file + From a4591ce949fc08b2df1a32840c7512ad3f40ec61 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 18 Aug 2019 18:22:51 +0100 Subject: [PATCH 038/704] Spaces changed to tab --- editor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor.php b/editor.php index 55a23bd4..1bad9c4e 100644 --- a/editor.php +++ b/editor.php @@ -285,7 +285,7 @@ function createNewCMInstance(num) { window['cM'+num] .on("mousedown", function(thisCM,evt) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num,evt)}); window['cM'+num+'diff'] .on("mousedown", function(thisCM,evt) {top.ICEcoder.cMonMouseDown(thisCM,'cM'+num+'diff',evt)}); - // Context Menu + // Context Menu window['cM'+num] .on("contextmenu", function(thisCM,evt) {top.ICEcoder.cMonContextMenu(thisCM,'cM'+num,evt)}); window['cM'+num+'diff'] .on("contextmenu", function(thisCM,evt) {top.ICEcoder.cMonContextMenu(thisCM,'cM'+num+'diff',evt)}); From f0f679c1fb35acba5291a083e088571ff74f8e63 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 18 Aug 2019 18:25:41 +0100 Subject: [PATCH 039/704] Data dir holds backup dir now --- lib/file-control-xhr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/file-control-xhr.php b/lib/file-control-xhr.php index 5ef26685..0b943e6e 100644 --- a/lib/file-control-xhr.php +++ b/lib/file-control-xhr.php @@ -359,7 +359,7 @@ function stitchChanges($fileLines) { $backupDirFormat = "Y-m-d"; // Establish the base, host and date dir parts... - $backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../backups/"; + $backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../data/backups/"; $backupDirHost = isset($ftpSite) ? parse_url(https://github.com/$ftpSite,PHP_URL_HOST) : "localhost"; $backupDirDate = date($backupDirFormat); From 85c9f6aed96db94451bd20359afaf78b14645ad0 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 18 Aug 2019 18:28:55 +0100 Subject: [PATCH 040/704] Create data/backups dir if not yet existing & use --- lib/settings-common.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/settings-common.php b/lib/settings-common.php index 95a852b8..eece1353 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -45,6 +45,11 @@ $t = $text['settings-common']; } +// Create a backups dir in the data dir if it doesn't exist yet +if (!file_exists(dirname(__FILE__)."/../data/backups")) { + mkdir(dirname(__FILE__)."/../data/backups"); +} + // Get data from a fopen or CURL connection function getData($url,$type='fopen',$dieMessage=false,$timeout=60) { global $context; @@ -263,7 +268,7 @@ function getVersionsCount($fileLoc,$fileName) { $dateCounts = array(); $backupDateDirs = array(); // Establish the base, host and date dirs within... - $backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../backups/"; + $backupDirBase = str_replace("\\","/",dirname(__FILE__))."/../data/backups/"; $backupDirHost = isset($ftpSite) ? parse_url(https://github.com/$ftpSite,PHP_URL_HOST) : "localhost"; // check if folder exists if local before enumerating contents if(!isset($ftpSite)) { From 9b374442860bab6cbd0641f427dc9c017794e4f9 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 18 Aug 2019 18:29:51 +0100 Subject: [PATCH 041/704] data/backups is dir now --- lib/settings-screen.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/settings-screen.php b/lib/settings-screen.php index 2c7fe469..17211432 100644 --- a/lib/settings-screen.php +++ b/lib/settings-screen.php @@ -163,7 +163,7 @@
Date: Sun, 18 Aug 2019 18:30:53 +0100 Subject: [PATCH 042/704] data/backups used in updater.php now too --- lib/updater.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/updater.php b/lib/updater.php index 0eb8a1ea..8a3b2549 100644 --- a/lib/updater.php +++ b/lib/updater.php @@ -23,7 +23,7 @@ function startUpdate() { // Don't move backups, plugins or .git away $testPath = $source.DIRECTORY_SEPARATOR.$iterator->getSubPathName(); $testPath = str_replace("\\","/",$testPath); - if (strpos($testPath,"/backups/")==false && strpos($testPath,"/plugins/")==false && strpos($testPath,"/.git/")==false) { + if (strpos($testPath,"/data/backups/")==false && strpos($testPath,"/plugins/")==false && strpos($testPath,"/.git/")==false) { if (!is_writeable($item)) { array_push($cantMoveArray,substr($item,count($source)+2)); } @@ -67,7 +67,7 @@ function copyOldVersion() { // Don't move backups, plugins or .git away $testPath = $source.DIRECTORY_SEPARATOR.$iterator->getSubPathName(); $testPath = str_replace("\\","/",$testPath); - if (strpos($testPath,"/backups/")==false && strpos($testPath,"/plugins/")==false && strpos($testPath,"/.git/")==false) { + if (strpos($testPath,"/data/backups/")==false && strpos($testPath,"/plugins/")==false && strpos($testPath,"/.git/")==false) { if ($item->isDir()) { mkdir($dest.DIRECTORY_SEPARATOR.$iterator->getSubPathName(), 0755); } else { From e051562dac9f1a3384003da3897390c10555497c Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 18 Aug 2019 18:32:42 +0100 Subject: [PATCH 043/704] /error-log.txt will now be /data/error.log --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 9d21181f..6a71a958 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -error-log.txt backups/* !backups/index.php data/* From a3f78f78d9b281020d3aa8de2e7a4b1bf72b5620 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Fri, 23 Aug 2019 14:59:47 -0400 Subject: [PATCH 044/704] Address icon alignment issues seen in the file tree. --- lib/file-types.css | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/file-types.css b/lib/file-types.css index 5ed3e9fb..efda3682 100644 --- a/lib/file-types.css +++ b/lib/file-types.css @@ -13,13 +13,7 @@ /* Default file */ .fileManager LI.pft-directory:before, .fileManager LI.pft-file:before { - position: absolute; display: block; width: 16px; height: 16px; content: ""; margin-top: -2px; margin-left: -20px; background:url(https://github.com/images/file-folder-icons.png) no-repeat 0 0; + position: absolute; width: 16px; height: 16px; content: ""; margin-top: -2px; margin-left: -20px; background:url(https://github.com/images/file-folder-icons.png) no-repeat 0 0; } .fileManager LI.dirOpen:before {background-position: -16px 0} - -@media all and (-webkit-min-device-pixel-ratio:0) and (min-resolution: .001dpcm) { /* hacked for chrome and safari */ - .fileManager LI.pft-directory:before, .fileManager LI.pft-file:before { - margin-top: -19px; - } -} .fileManager LI.pft-file:before {background-position: -32px 0} From a653be8e99ac16541216a028965548dd6e588687 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:00:37 +0100 Subject: [PATCH 045/704] backups now in data dir, config stored there too --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 6a71a958..ab4bf85f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,5 @@ -backups/* -!backups/index.php data/* !data/.gitkeep -lib/config-* plugins/* !plugins/index.php test/test-file1.txt From 2792b8503631824b9729a6e83ea46f8059dded9a Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:01:36 +0100 Subject: [PATCH 046/704] Fold code and fold gutter are within CodeMirror JS --- lib/backup-versions.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/backup-versions.php b/lib/backup-versions.php index f49beb86..55264c92 100644 --- a/lib/backup-versions.php +++ b/lib/backup-versions.php @@ -40,8 +40,6 @@ .CodeMirror-foldgutter-folded {background: #800; color: #ddd} .CodeMirror-foldgutter-folded:after {position: relative; top: -3px} - - /addon/fold/foldgutter.css?microtime="> - \ No newline at end of file + From 4dfe7e67110cb1bfe75633a54f5e16890e10c050 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:07:39 +0100 Subject: [PATCH 047/704] Bug reports stored in data dir now --- lib/bug-files-check.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/bug-files-check.php b/lib/bug-files-check.php index 7e892f38..950bab05 100644 --- a/lib/bug-files-check.php +++ b/lib/bug-files-check.php @@ -83,9 +83,9 @@ $output = $t['Found in']." ".$filename."...\n".implode("\n",$output); if ($filesWithNewBugs==1) { - file_put_contents("../tmp/bug-report.log", $output); + file_put_contents("../data/bug-report.log", $output); } else { - file_put_contents("../tmp/bug-report.log", "\n\n".$output, FILE_APPEND); + file_put_contents("../data/bug-report.log", "\n\n".$output, FILE_APPEND); } } @@ -93,16 +93,16 @@ } // Get dir name tmp dir's parent -$tmpLoc = dirname(__FILE__); -$tmpLoc = explode(DIRECTORY_SEPARATOR,$tmpLoc); -$tmpLoc = $tmpLoc[count($tmpLoc)-2]; +$dataLoc = dirname(__FILE__); +$dataLoc = explode(DIRECTORY_SEPARATOR,$dataLoc); +$dataLoc = $dataLoc[count($dataLoc)-2]; // Output result and status array $status = array( "files" => $files, "filesSizesSeen" => $filesSizesSeen, "maxLines" => $maxLines, - "bugReportPath" => "|".$tmpLoc."|tmp|bug-report.log", + "bugReportPath" => "|".$dataLoc."|data|bug-report.log", "result" => $result ); From 697d6f1ef66c59449036fb00575d629538f05afc Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:08:39 +0100 Subject: [PATCH 048/704] Delete config___users-template.php --- lib/config___users-template.php | 50 --------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 lib/config___users-template.php diff --git a/lib/config___users-template.php b/lib/config___users-template.php deleted file mode 100644 index a417aca7..00000000 --- a/lib/config___users-template.php +++ /dev/null @@ -1,50 +0,0 @@ - "6.0", -"licenseEmail" => "v6free@icecoder.net", -"licenseCode" => "93be18fba1dee0e186031907422a0f8df3462568bfd0161e1504", -"configCreateDate" => 0, -"root" => "", -"checkUpdates" => true, -"openLastFiles" => true, -"updateDiffOnSave" => true, -"languageUser" => "english.php", -"backupsKept" => true, -"backupsDays" => 14, -"deleteToTmp" => true, -"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"), -"codeAssist" => true, -"visibleTabs" => false, -"lockedNav" => true, -"tagWrapperCommand" => "ctrl+alt", -"autoComplete" => "keypress", -"password" => "", -"bannedFiles" => array(), -"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"), -"allowedIPs" => array("*"), -"autoLogoutMins" => 0, -"theme" => "default", -"fontSize" => "13px", -"lineWrapping" => false, -"lineNumbers" => true, -"showTrailingSpace" => true, -"matchBrackets" => true, -"autoCloseTags" => true, -"autoCloseBrackets" => true, -"indentWithTabs" => false, -"indentAuto" => true, -"indentSize" => 4, -"pluginPanelAligned" => "left", -"bugFilePaths" => array(), -"bugFileCheckTimer" => 0, -"bugFileMaxLines" => 0, -"githubAuthToken" => "", -"plugins" => array(), -"ftpSites" => array(), -"githubLocalPaths" => array(), -"githubRemotePaths" => array(), -"previousFiles" => "", -"last10Files" => "", -"favoritePaths" => array() -); - From 6ef86718e72791fbeb22c53416b80368bafb3f1e Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:09:13 +0100 Subject: [PATCH 049/704] Create template-users.php --- lib/template-users.php | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 lib/template-users.php diff --git a/lib/template-users.php b/lib/template-users.php new file mode 100644 index 00000000..8f96b93e --- /dev/null +++ b/lib/template-users.php @@ -0,0 +1,49 @@ + "6.0", +"licenseEmail" => "v6free@icecoder.net", +"licenseCode" => "93be18fba1dee0e186031907422a0f8df3462568bfd0161e1504", +"configCreateDate" => 0, +"root" => "", +"checkUpdates" => true, +"openLastFiles" => true, +"updateDiffOnSave" => true, +"languageUser" => "english.php", +"backupsKept" => true, +"backupsDays" => 14, +"deleteToTmp" => true, +"findFilesExclude" => array(".doc",".gif",".jpg",".jpeg",".pdf",".png",".swf",".xml",".zip"), +"codeAssist" => true, +"visibleTabs" => false, +"lockedNav" => true, +"tagWrapperCommand" => "ctrl+alt", +"autoComplete" => "keypress", +"password" => "", +"bannedFiles" => array(), +"bannedPaths" => array("/var/www/.git","/var/www/sites/all/modules","/var/www/sites/default/files"), +"allowedIPs" => array("*"), +"autoLogoutMins" => 0, +"theme" => "default", +"fontSize" => "13px", +"lineWrapping" => false, +"lineNumbers" => true, +"showTrailingSpace" => true, +"matchBrackets" => true, +"autoCloseTags" => true, +"autoCloseBrackets" => true, +"indentWithTabs" => false, +"indentAuto" => true, +"indentSize" => 4, +"pluginPanelAligned" => "left", +"bugFilePaths" => array(), +"bugFileCheckTimer" => 0, +"bugFileMaxLines" => 0, +"githubAuthToken" => "", +"plugins" => array(), +"ftpSites" => array(), +"githubLocalPaths" => array(), +"githubRemotePaths" => array(), +"previousFiles" => "", +"last10Files" => "", +"favoritePaths" => array() +); From 2574a1120325ac4f9516653cda681994d4867d1c Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:09:50 +0100 Subject: [PATCH 050/704] Rename settings-system-params.php to template-system.php --- lib/{settings-system-params.php => template-system.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/{settings-system-params.php => template-system.php} (100%) diff --git a/lib/settings-system-params.php b/lib/template-system.php similarity index 100% rename from lib/settings-system-params.php rename to lib/template-system.php From 37e7661729f55885127e57e6806a3b0ddf6fdee4 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:18:53 +0100 Subject: [PATCH 051/704] Settings file is in data dir now --- lib/ftp-manager.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/ftp-manager.php b/lib/ftp-manager.php index 5cd94215..28daa2ae 100644 --- a/lib/ftp-manager.php +++ b/lib/ftp-manager.php @@ -8,7 +8,7 @@ // Get our old FTP sites & user settings $oldFTPSites = $ICEcoder["ftpSites"]; - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // ======== // CHOOSING @@ -103,16 +103,16 @@ $settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); - fwrite($fh, $settingsContents); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); + fwrite($fh, "../data/".$settingsContents); fclose($fh); // Finally, reload the iFrame screen for the user header("Location: ftp-manager.php?updatedFTPSites&csrf=".$_SESSION["csrf"]); echo ""; die($t['Saving FTP sites']); } else { - echo ""; + echo ""; } } } @@ -209,4 +209,4 @@ - \ No newline at end of file + From 69c2e86d1b8c4edc59b46d97eecc6d3bbe841e27 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:20:29 +0100 Subject: [PATCH 052/704] Settings file now in data dir for GitHub Manager --- lib/github-manager.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/github-manager.php b/lib/github-manager.php index 761b831a..a75f2830 100644 --- a/lib/github-manager.php +++ b/lib/github-manager.php @@ -48,9 +48,9 @@ $settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); - fwrite($fh, $settingsContents); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); + fwrite($fh, "../data/".$settingsContents); fclose($fh); // Clear any FTP session we may have @@ -59,7 +59,7 @@ // Hide this popup and reload file manager echo ""; } else { - echo ""; + echo ""; } } @@ -151,16 +151,16 @@ $settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); - fwrite($fh, $settingsContents); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); + fwrite($fh, "../data/".$settingsContents); fclose($fh); // Finally, reload the iFrame screen for the user header("Location: github-manager.php?updatedGithubPaths&csrf=".$_SESSION["csrf"]); echo ""; die($t['saving github paths']); } else { - echo ""; + echo ""; } } } From 0f10702cf98f28251e272f808b40a3600a9f43c0 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:21:05 +0100 Subject: [PATCH 053/704] Settings file in data dir when going to root --- lib/go-localhost-root.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/go-localhost-root.php b/lib/go-localhost-root.php index 868aacec..a389a1b4 100644 --- a/lib/go-localhost-root.php +++ b/lib/go-localhost-root.php @@ -6,7 +6,7 @@ // Update our 'root' value to be blank // which resets the file manager to localhost root again if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn']) { - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // Replace our root var $repPosStart = strpos($settingsContents,'"root"'); $repPosEnd = strpos($settingsContents,'"checkUpdates"'); @@ -18,9 +18,9 @@ substr($settingsContents,($repPosEnd),strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); - fwrite($fh, $settingsContents); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); + fwrite($fh, "../data/".$settingsContents); fclose($fh); // Clear any FTP session we may have @@ -29,7 +29,7 @@ // Now we've reset the root path to localhost root, refresh the file manager to show it echo ""; } else { - echo ""; + echo ""; } ?> Date: Sun, 25 Aug 2019 13:23:42 +0100 Subject: [PATCH 054/704] Handle 0 files open for tooltip --- lib/ice-coder.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/ice-coder.js b/lib/ice-coder.js index 3b4cb35c..1b287781 100644 --- a/lib/ice-coder.js +++ b/lib/ice-coder.js @@ -728,6 +728,12 @@ var ICEcoder = { // Show Function & class params tooltip functionClassParamsTooltip: function(e, area) { if (top.ICEcoder.indexData) { + // If we have no files open, return early + if (top.ICEcoder.openFiles.length === 0) { + get('tooltip').style.display = "none"; + return true; + } + var i; // Get cM instance, and the word under mouse pointer var cM = top.ICEcoder.getcMInstance(); From db306857235c1e31e10f47b4e6f8e119a45f5a79 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:24:59 +0100 Subject: [PATCH 055/704] Update min.js to match main JS --- lib/ice-coder.min.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ice-coder.min.js b/lib/ice-coder.min.js index 88b82f41..6c7ec065 100644 --- a/lib/ice-coder.min.js +++ b/lib/ice-coder.min.js @@ -28,11 +28,11 @@ c.substr(c.lastIndexOf("/")+1);var t=r.substr(r.lastIndexOf(".")+1)}top.ICEcoder b,c,d,e){top.ICEcoder.mouseDownInCM="gutter"},cMonMouseDown:function(a,b,c){top.ICEcoder.mouseDownInCM="editor"},cMonContextMenu:function(a,b,c){b=a.coordsChar({left:c.pageX,top:c.pageY});a.setCursor(b);c.ctrlKey&&setTimeout(function(){var b=a,c=b.getRange(b.findWordAt(b.getCursor()).anchor,b.findWordAt(b.getCursor()).head);result=null;numResults=0;var f=top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1];f=f.substr(f.lastIndexOf(".")+1);for(i in top.ICEcoder.indexData.functions[f])i===c&&(result= top.ICEcoder.indexData.functions[f][i],numResults++);for(i in top.ICEcoder.indexData.classes[f])i===c&&(result=top.ICEcoder.indexData.classes[f][i],numResults++);1===numResults&&-1===[null,"def"].indexOf(b.getTokenTypeAt(b.getCursor()))&&(top.ICEcoder.openFile(result.filePath.replace(top.docRoot,"")),top.ICEcoder.goFindAfterOpenInt=setInterval(function(){top.ICEcoder.openFiles[top.ICEcoder.selectedTab-1]!=result.filePath.replace(top.docRoot,"")||top.ICEcoder.loadingFile||(b=top.ICEcoder.getcMInstance(), setTimeout(function(){top.ICEcoder.goToLine(result.range.from.line+1);b.setSelection({line:result.range.from.line,ch:result.range.from.ch},{line:result.range.to.line,ch:result.range.to.ch})},20),clearInterval(top.ICEcoder.goFindAfterOpenInt))},20));top.ICEcoder.mouseDownInCM="editor"},0)},cMonDragOver:function(a,b,c){top.ICEcoder.setDragCursor(b,"editor")},cMonRenderLine:function(a,b,c,d){for(var e,f=0;fa.defaultTextHeight()&&(f+=b.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main",c[d][2],"height",f+"px"]);for(e=0;e< -c[d][2]-c[d][1];e++)f=top.ICEcoder.findStringDiffs(a.getLine(c[d][1]+e),b.getLine(c[d][3]+e)),a.markText({line:c[d][1]+e,ch:0},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:f[0]},{className:"diffGreyLighter"}),a.markText({line:c[d][1]+e,ch:f[0]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:f[0]+f[1]},{className:"diffGrey"}),a.markText({line:c[d][1]+e,ch:f[0]+f[1]},{line:c[d][3]+e+top.ICEcoder.renderPaneShiftAmount,ch:1E6},{className:"diffGreyLighter"})}else a.markText({line:c[d][1], +-1==b.indexOf("diff")||"diff"==top.ICEcoder.renderLineStyle[f][0]&&-1a.defaultTextHeight()&&(f+=b.getLineHandle(e).height-a.defaultTextHeight());f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["main", +c[d][2],"height",f+"px"]);for(e=0;ea.defaultTextHeight()&&(f+=a.getLineHandle(e).height-a.defaultTextHeight()); f>a.defaultTextHeight()&&top.ICEcoder.renderLineStyle.push(["diff",c[d][4],"height",f+"px"]);for(e=0;e Date: Sun, 25 Aug 2019 13:28:02 +0100 Subject: [PATCH 056/704] Settings file moved to data dir --- lib/plugins-manager.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/plugins-manager.php b/lib/plugins-manager.php index c5aef66b..11db1089 100644 --- a/lib/plugins-manager.php +++ b/lib/plugins-manager.php @@ -15,7 +15,7 @@ // Get our old plugin & user settings $oldPlugins = $ICEcoder["plugins"]; - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // ========== // INSTALLING @@ -132,9 +132,9 @@ $settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,$repPosEnd,strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); - fwrite($fh, $settingsContents); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); + fwrite($fh, "../data/".$settingsContents); fclose($fh); // Finally, reload ICEcoder itself if plugin requires it or just the iFrame screen for the user if it doesn't if ($_GET['action']=="install" && $pluginsData[$_GET['plugin']]['reload'] == "true") { @@ -145,7 +145,7 @@ } die("".$t['saving plugins'].""); } else { - echo ""; + echo ""; } } From bfba1418fb69c6c9736c9a27187cf5a9cac5603d Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:39:31 +0100 Subject: [PATCH 057/704] Rename of config files, stored in data dir --- lib/settings.php | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/lib/settings.php b/lib/settings.php index 26494a7c..d1395b17 100644 --- a/lib/settings.php +++ b/lib/settings.php @@ -1,23 +1,23 @@ 0,','"configCreateDate" => '.$configfilemtime.',',$settingsContents); // Now update the config file - $fh = fopen(dirname(__FILE__)."/".$settingsFile, 'w') or die("Can't update config file. Please set public write permissions on ".$settingsFile." and press refresh"); + $fh = fopen(dirname(__FILE__)."/../data/".$settingsFile, 'w') or die("Can't update config file. Please set public write permissions on ".$settingsFile." and press refresh"); fwrite($fh, $settingsContents); fclose($fh); // Set the new value in array @@ -75,7 +75,7 @@ // On mismatch of settings file to system, rename to .old and reload If ($ICEcoderUserSettings["versionNo"] != $ICEcoderSettings["versionNo"]) { - rename(dirname(__FILE__)."/".$settingsFile,dirname(__FILE__)."/".str_replace(".php",".old",$settingsFile)); + rename(dirname(__FILE__)."/../data/".$settingsFile,dirname(__FILE__)."/../data/".str_replace(".php",".old",$settingsFile)); header("Location: settings.php"); echo ""; die('Found old settings file, reloading...'); @@ -181,12 +181,13 @@ } die('Redirecting to login...'); +// If we are on the login screen and not logged in // If we are on the login screen and not logged in } elseif (!$_SESSION['loggedIn']) { // If the password hasn't been set and we're setting it if ($ICEcoder["password"] == "" && isset($_POST['submit']) && (strpos($_POST['submit'],"set password")>-1)) { $password = generateHash(strClean($_POST['password'])); - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // Replace our empty password with the one submitted by user $settingsContents = str_replace('"password" => "",','"password" => "'.$password.'",',$settingsContents); // Also set the update checker preference @@ -195,7 +196,7 @@ $settingsContents = str_replace('"checkUpdates" => true,','"checkUpdates" => '.$checkUpdates.',',$settingsContents); $settingsContents = str_replace('"checkUpdates" => false,','"checkUpdates" => '.$checkUpdates.',',$settingsContents); // Now update the config file - $fh = fopen($settingsFile, 'w') or die("Can't update config file. Please set public write permissions on ".$settingsFile." and press refresh"); + $fh = fopen("../data/".$settingsFile, 'w') or die("Can't update config file. Please set public write permissions on data/".$settingsFile." and press refresh"); fwrite($fh, $settingsContents); fclose($fh); // Create a duplicate version for the IP address of the domain if it doesn't exist yet @@ -204,20 +205,20 @@ $serverAddr = "127.0.0.1"; } $settingsFileAddr = 'config-'.$username.str_replace(".","_",$serverAddr).'.php'; - if (!file_exists(dirname(__FILE__)."/".$settingsFileAddr)) { - if (!copy(dirname(__FILE__)."/".$settingsFile, dirname(__FILE__)."/".$settingsFileAddr)) { - die("Couldn't create $settingsFileAddr. Maybe you need write permissions on the lib folder?"); + if (!file_exists(dirname(__FILE__)."/../data/".$settingsFileAddr)) { + if (!copy(dirname(__FILE__)."/../data/".$settingsFile, dirname(__FILE__)."/../data/".$settingsFileAddr)) { + die("Couldn't create $settingsFileAddr. Maybe you need write permissions on the data folder?"); } } // Disable the enableRegistration config setting if the user had that option chosen if (isset($_POST['disableFurtherRegistration'])) { - $updatedConfigSettingsFile = getData(dirname(__FILE__)."/".$configSettings); - if ($fUConfigSettings = fopen(dirname(__FILE__)."/".$configSettings, 'w')) { + $updatedConfigSettingsFile = getData(dirname(__FILE__)."/../data/".$configSettings); + if ($fUConfigSettings = fopen(dirname(__FILE__)."/../data/".$configSettings, 'w')) { $updatedConfigSettingsFile = str_replace('"enableRegistration" => true','"enableRegistration" => false',$updatedConfigSettingsFile); fwrite($fUConfigSettings, $updatedConfigSettingsFile); fclose($fUConfigSettings); } else { - die("Cannot update config file lib/".$configSettings.". Please check write permissions on lib/ and try again"); + die("Cannot update config file data/".$configSettings.". Please check write permissions on data/ and try again"); } } // Set the session user level From 07055d97b62c1629188b43091bcfd1162204f09f Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:44:01 +0100 Subject: [PATCH 058/704] New name & loc for log, serializer function added --- lib/settings-common.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/settings-common.php b/lib/settings-common.php index eece1353..c8cea3c6 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -2,7 +2,7 @@ // Don't display, but log all errors ini_set('display_errors', 0); ini_set('log_errors', 1); -ini_set('error_log', dirname(__FILE__).'/../error-log.txt'); +ini_set('error_log', dirname(__FILE__).'/../data/error.log'); error_reporting(-1); // Set our default timezone and supress warning with @ @@ -315,3 +315,15 @@ function getVersionsCount($fileLoc,$fileName) { ); } +function serializedFileData($do, $path, $output=null) { + if ($do === "get") { + $data = file_get_contents($path); + $data = str_replace("<"."?php\n/*\n\n", "", $data); + $data = str_replace("\n\n*/\n?".">", "", $data); + $data = unserialize($data); + return $data; + } + if ($do === "set") { + file_put_contents($path, "<"."?php\n/*\n\n".serialize($output)."\n\n*/\n?".">"); + } +} From 0a7aea557055026019c5d891bd78132d108a6f82 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:45:13 +0100 Subject: [PATCH 059/704] Settings file stored in data dir when saving curr --- lib/settings-save-current-files.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/settings-save-current-files.php b/lib/settings-save-current-files.php index fac6e4fe..47f955cd 100644 --- a/lib/settings-save-current-files.php +++ b/lib/settings-save-current-files.php @@ -5,7 +5,7 @@ // Save the currently opened files for next time if ($_SESSION['loggedIn'] && isset($_GET["saveFiles"]) && $_GET['saveFiles']) { - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // Replace our previousFiles var with the the current $repPosStart = strpos($settingsContents,'previousFiles" => "')+20; @@ -26,12 +26,12 @@ } $settingsContents = substr($settingsContents,0,$repPosStart).$saveFiles.substr($settingsContents,($repPosStart+$repPosEnd),strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); fwrite($fh, $settingsContents); fclose($fh); } else { - echo ""; + echo ""; } // Update our last10Files var? @@ -45,12 +45,12 @@ if (count($last10FilesArray)>=10) {$ICEcoder["last10Files"]=substr($ICEcoder["last10Files"],0,strrpos($ICEcoder["last10Files"],','));}; $settingsContents = substr($settingsContents,0,$repPosStart).$saveFilesArray[$i].$commaExtra.$ICEcoder["last10Files"].substr($settingsContents,($repPosStart+$repPosEnd),strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); fwrite($fh, $settingsContents); fclose($fh); } else { - echo ""; + echo ""; } } } From ccd796e7f4d233f4b018d72991ff4406bfcea10c Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:50:09 +0100 Subject: [PATCH 060/704] Settings file in data dir when updating --- lib/settings-update.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/settings-update.php b/lib/settings-update.php index af21372f..54e5c1ac 100644 --- a/lib/settings-update.php +++ b/lib/settings-update.php @@ -5,7 +5,7 @@ // Update this config file? if (!$demoMode && isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] && isset($_POST["theme"]) && $_POST["theme"]) { - $settingsContents = getData($settingsFile); + $settingsContents = getData("../data/".$settingsFile); // Replace our settings vars $repPosStart = strpos($settingsContents,'"root"'); $repPosEnd = strpos($settingsContents,'"plugins"'); @@ -63,12 +63,12 @@ $settingsContents = substr($settingsContents,0,$repPosStart).$settingsNew.substr($settingsContents,($repPosEnd),strlen($settingsContents)); // Now update the config file - if (is_writeable($settingsFile)) { - $fh = fopen($settingsFile, 'w'); + if (is_writeable("../data/".$settingsFile)) { + $fh = fopen("../data/".$settingsFile, 'w'); fwrite($fh, $settingsContents); fclose($fh); } else { - echo ""; + echo ""; } // OK, now the config file has been updated, update our current session with new arrays @@ -85,7 +85,7 @@ $refreshFM = $_POST['changedFileSettings']=="true" ? "true" : "false"; // Change multiUser and enableRegistration in config___settings.php - $generalSettingsContents = getData($configSettings); + $generalSettingsContents = getData(dirname(__FILE__)."/../data/".$configSettings); $isMultiUser = isset($_POST['multiUser']) && $_POST['multiUser'] ? "true" : "false"; $generalSettingsContents = str_replace('"multiUser" => true,','"multiUser" => '.$isMultiUser.',',$generalSettingsContents); $generalSettingsContents = str_replace('"multiUser" => false,','"multiUser" => '.$isMultiUser.',',$generalSettingsContents); @@ -94,12 +94,12 @@ $generalSettingsContents = str_replace('"enableRegistration" => true','"enableRegistration" => '.$isEnableRegistration,$generalSettingsContents); $generalSettingsContents = str_replace('"enableRegistration" => false','"enableRegistration" => '.$isEnableRegistration,$generalSettingsContents); - if (is_writeable($configSettings)) { - $fConfigSettings = fopen($configSettings, 'w'); + if (is_writeable(dirname(__FILE__)."/../data/".$configSettings)) { + $fConfigSettings = fopen(dirname(__FILE__)."/../data/".$configSettings, 'w'); fwrite($fConfigSettings, $generalSettingsContents); fclose($fConfigSettings); } else { - echo ""; + echo ""; } $githubAuthTokenSet = $ICEcoder["githubAuthToken"] != "" ? "true" : "false"; From eba7364f45ae391b7b2b5b607074148f7bd55813 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:50:51 +0100 Subject: [PATCH 061/704] Test system using settings file in data dir --- test.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.php b/test.php index bc2ccf91..dc61a475 100644 --- a/test.php +++ b/test.php @@ -64,7 +64,7 @@ $configSettings = 'config___settings.php'; // Load config settings -include(dirname(__FILE__)."/lib/".$configSettings); +include(dirname(__FILE__)."/data/".$configSettings); echo "This version of ICEcoder is: ".$ICEcoderSettings['versionNo']."

"; echo 'TEST RESULT: '; From e300f0c46e7b205d76d5cf8b775119f310d9cb06 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 13:59:22 +0100 Subject: [PATCH 062/704] Dir and filename changes for updater --- lib/updater.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/updater.php b/lib/updater.php index 8a3b2549..20760db8 100644 --- a/lib/updater.php +++ b/lib/updater.php @@ -176,29 +176,29 @@ function copyOverSettings($icvInfo) { echo 'Transposing system settings...
'; // Create a new config file if it doesn't exist yet. // The reason we create it, is so it has PHP write permissions, meaning we can update it later - if (!file_exists(dirname(__FILE__)."/".$configSettings)) { + if (!file_exists(dirname(__FILE__)."/../data/".$configSettings)) { echo 'Creating new settings file...
'; // Include our params to make use of (as $newConfigSettingsFile) include(dirname(__FILE__)."/settings-system-params.php"); - if ($fConfigSettings = fopen(dirname(__FILE__)."/".$configSettings, 'w')) { + if ($fConfigSettings = fopen(dirname(__FILE__)."/../data/".$configSettings, 'w')) { fwrite($fConfigSettings, $newConfigSettingsFile); fclose($fConfigSettings); } else { - die("Cannot update config file lib/".$configSettings.". Please check write permissions on lib/ and try again"); + die("Cannot update config file data/".$configSettings.". Please check write permissions on data/ and try again"); } } - transposeSettings(PATH."lib/config___settings.php","config___settings.php","config___settings.php"); + transposeSettings(PATH."data/template-system.php","config-settings.php","config-settings.php"); // Users template settings echo 'Transposing users template settings...
'; - transposeSettings(PATH."lib/config___users-template.php","config___users-template.php","config___users-template.php"); + transposeSettings(PATH."data/template-users.php","template-users.php","template-users.php"); // Users settings files - $fileList = scanDir(PATH."lib/"); + $fileList = scanDir(PATH."data/"); for ($i=0; $i -1) { echo 'Transposing users settings file '.$fileList[$i].'...
'; - transposeSettings(PATH."lib/".$fileList[$i],"config___users-template.php",$fileList[$i]); + transposeSettings(PATH."data/".$fileList[$i],"template-users.php",$fileList[$i]); } } From 38bdbe0b3b96592e1e1671aa00e05e187fc900ef Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 14:03:22 +0100 Subject: [PATCH 063/704] Dup comment --- lib/settings.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/settings.php b/lib/settings.php index d1395b17..753687f7 100644 --- a/lib/settings.php +++ b/lib/settings.php @@ -181,7 +181,6 @@ } die('Redirecting to login...'); -// If we are on the login screen and not logged in // If we are on the login screen and not logged in } elseif (!$_SESSION['loggedIn']) { // If the password hasn't been set and we're setting it From 4b5a2ff8eed41372b9bd418a17437db4b4f87d09 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 14:43:57 +0100 Subject: [PATCH 064/704] No message for toUTF8noBOM in this case --- lib/file-control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/file-control.php b/lib/file-control.php index 50404421..99428156 100644 --- a/lib/file-control.php +++ b/lib/file-control.php @@ -101,7 +101,7 @@ exit; } // Get our file contents and close the FTP connection - $loadedFile = toUTF8noBOM(ftpGetContents($ftpConn, $ftpRoot.$fileLoc."/".$fileName, $ftpMode)); + $loadedFile = toUTF8noBOM(ftpGetContents($ftpConn, $ftpRoot.$fileLoc."/".$fileName, $ftpMode),false); ftpEnd(); // Get local file } else { From 81b7b2188511132ca14808d119c686452e818417 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 14:44:43 +0100 Subject: [PATCH 065/704] No messaging here --- lib/file-control-xhr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/file-control-xhr.php b/lib/file-control-xhr.php index 0b943e6e..0c2909d7 100644 --- a/lib/file-control-xhr.php +++ b/lib/file-control-xhr.php @@ -269,7 +269,7 @@ function stitchChanges($fileLines) { $ftpFilepath = ltrim($fileLoc."/".$fileName,"/"); if (isset($_POST['changes'])) { // Get existing file contents as lines - $loadedFile = toUTF8noBOM(ftpGetContents($ftpConn, $ftpRoot.$fileLoc."/".$fileName, $ftpMode)); + $loadedFile = toUTF8noBOM(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 From 523dbd682514dbdda041bbf8c45e00ffdd02846a Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 14:46:04 +0100 Subject: [PATCH 066/704] false param fallback added --- lib/settings-common.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/settings-common.php b/lib/settings-common.php index c8cea3c6..c5225625 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -193,7 +193,7 @@ function injClean($data) { } // returns a UTF8 based string with any UFT8 BOM removed -function toUTF8noBOM($string,$message) { +function toUTF8noBOM($string,$message=false) { global $text; $t = $text['settings-common']; From 393d0b55236c8dd0c9c063ceb5023e213ea61189 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sun, 25 Aug 2019 15:59:43 +0100 Subject: [PATCH 067/704] Enforce password rules on reg --- lib/login.php | 66 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/lib/login.php b/lib/login.php index af20c460..11833ae3 100644 --- a/lib/login.php +++ b/lib/login.php @@ -2,6 +2,8 @@ include("headers.php"); include("settings.php"); $t = $text['login']; + +$settingPW = $ICEcoderSettings["enableRegistration"] && ($ICEcoder["multiUser"] || $ICEcoder["password"] == ""); ?> @@ -26,11 +28,22 @@ ICEcoder
v
-
+ onsubmit="return checkCanSubmit();">

'.PHP_EOL;}; ?> -

+ onkeyup="pwStrength(this.value)" onchange="pwStrength(this.value)" onpaste="pwStrength(this.value)">
+ '. + '
10+
  '. + '
upper
  '. + '
lower
  '. + '
number
  '. + '
special
'. + '
'; + } + ?>
+ + From f8cfe1d2fc610f4336247ed47a046d04ef24a0ec Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 14 Sep 2019 17:20:11 +0100 Subject: [PATCH 068/704] Only index if docRoot mtime changed or diff to ts --- lib/indexer.php | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/lib/indexer.php b/lib/indexer.php index 2e3707cc..728d3348 100644 --- a/lib/indexer.php +++ b/lib/indexer.php @@ -9,9 +9,9 @@ $prevIndexData = []; // If we have a data/index.php file -if (file_exists("../data/index.php")) { +if (file_exists($docRoot.$ICEcoderDir."/data/index.php")) { // Get serialized array back out of PHP file inside a comment block as prevIndexData - $prevIndexData = file_get_contents("../data/index.php"); + $prevIndexData = file_get_contents($docRoot.$ICEcoderDir."/data/index.php"); if (strpos($prevIndexData, "", "", $prevIndexData); @@ -146,14 +146,25 @@ function phpGrep($path, $base) { return $ret; } -// Start running function to index data -$results = phpGrep($docRoot.$iceRoot, $docRoot.$iceRoot); +// If something in the doc root changed, we can do an index... +if (stat($docRoot)['mtime'] !== $prevIndexData["timestamps"]["indexed"]) { + // Start a new indexData for this run + $indexData["timestamps"] = [ + "indexed" => stat($docRoot)['mtime'] + ]; -// Overlay indexData ontop of prevIndexData -$output = array_replace_recursive($prevIndexData, $indexData); + // Start running function to index data + $results = phpGrep($docRoot.$iceRoot, $docRoot.$iceRoot); -// Store the serialized array in PHP comment block for next time -file_put_contents($docRoot.$ICEcoderDir."/data/index.php", ""); + // Overlay indexData ontop of prevIndexData + $output = array_replace_recursive($prevIndexData, $indexData); + + // Store the serialized array in PHP comment block for next time + file_put_contents($docRoot.$ICEcoderDir."/data/index.php", ""); +// Else it's the same as last time so do nothing... +} else { + $output = $prevIndexData; +} // Output the JSON echo json_encode($output, JSON_PRETTY_PRINT); From 841c68efb7c23195837728504cc1687e51ac5086 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 14 Sep 2019 17:21:31 +0100 Subject: [PATCH 069/704] Set indexed ts to epoch on demand --- lib/settings-common.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/settings-common.php b/lib/settings-common.php index c5225625..00f372de 100644 --- a/lib/settings-common.php +++ b/lib/settings-common.php @@ -93,6 +93,26 @@ function getData($url,$type='fopen',$dieMessage=false,$timeout=60) { } } +// Require a re-index dir/file data next time we index +function requireReIndexNextTime() { + // If we have a data/index.php file + global $docRoot, $ICEcoderDir; + if (file_exists($docRoot.$ICEcoderDir."/data/index.php")) { + // Get serialized array back out of PHP file inside a comment block as prevIndexData + $prevIndexData = file_get_contents($docRoot.$ICEcoderDir."/data/index.php"); + if (strpos($prevIndexData, "", "", $prevIndexData); + $prevIndexData = unserialize($prevIndexData); + + // Set timestamp back to epoch to force a re-index next time + $prevIndexData['timestamps']['indexed'] = 0; + + file_put_contents($docRoot.$ICEcoderDir."/data/index.php", ""); + } + } +} + // Logout if that's the action we're taking if (isset($_GET['logout'])) { include(dirname(__FILE__)."/../processes/on-user-logout.php"); From 8e4d94418eb33d4e749b559830196948ae866340 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 14 Sep 2019 17:22:22 +0100 Subject: [PATCH 070/704] Require a re-index next time after action --- lib/file-control-xhr.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/file-control-xhr.php b/lib/file-control-xhr.php index 0c2909d7..d88696c6 100644 --- a/lib/file-control-xhr.php +++ b/lib/file-control-xhr.php @@ -162,7 +162,6 @@ function stitchChanges($fileLines) { return $contents; } - // ============ // SAVING FILES // ============ @@ -1009,3 +1008,6 @@ function rrmdir($dir) { "errorMsg" : "'.$errorMsg.'" } }'; + +// Set timestamp of last index to 0 to force a re-index next time we index +requireReIndexNextTime(); From 8d9910d8d2ae64352faba14e8737832e76c47973 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 14 Sep 2019 17:40:47 +0100 Subject: [PATCH 071/704] Tools CSS added --- lib/ice-coder.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ice-coder.css b/lib/ice-coder.css index 416ac52e..39acd531 100644 --- a/lib/ice-coder.css +++ b/lib/ice-coder.css @@ -138,6 +138,10 @@ h2 {font-size: 18px; font-weight: normal; color: #fff} .findBar .terminalLink {position: fixed; display: inline-block; width: 16px; height: 16px; right: 112px; top: 48px; background: url('https://github.com/images/doc-explorer-icons.png') 0 0 no-repeat; cursor: pointer; background-position: -32px 0; cursor: pointer; z-index: 1} .editor .code {position: relative; display: inline-block; top: 28px; width: 600px; height: 600px; visibility: hidden} +.tools {position: fixed; display: inline-block; width: 250px; height: 30px; left: 0; bottom: 0; z-index: 3} +.tools div {display: inline-block; margin: 8px 0 8px 15px; color: #666; cursor: pointer} +.tools div:hover {color: #fff; cursor: pointer} + .footer {position: fixed; display: inline-block; width: 100%; height: 30px; bottom: 0; background-color: rgba(0,0,0,0.15); left: 0; z-index: 1} .footer .nesting {position: absolute; display: inline-block; padding: 5px; margin-top: 10px; left: 260px; border-radius: 5px; background-color: #0b0; cursor: default} .footer .versionsDisplay {position: absolute; display: inline-block; padding: 5px; margin-top: 3px; left: 275px; color: #fff; font-weight: bold; cursor: pointer} @@ -175,4 +179,4 @@ h2 {font-size: 18px; font-weight: normal; color: #fff} .screenCenter .text a {position: relative; display: block; margin-top: 15px; font-size: 10px; color: #888; text-decoration: none} .screenCenter .password {border: 0; background-color: #333; color: #fff; height: 20px} .screenCenter .button {border: 0; background: #444; color: #eee; height: 22px; cursor: pointer} -.screenCenter .button:hover {background: #2187e7; color: #eee} \ No newline at end of file +.screenCenter .button:hover {background: #2187e7; color: #eee} From 170bbafc123871bbc96b9896efbf5e0a1f786e09 Mon Sep 17 00:00:00 2001 From: Matt Pass Date: Sat, 14 Sep 2019 17:43:53 +0100 Subject: [PATCH 072/704] Adminer 4.7.3 added as DB --- lib/database.php | 2034 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2034 insertions(+) create mode 100644 lib/database.php diff --git a/lib/database.php b/lib/database.php new file mode 100644 index 00000000..2fa567b9 --- /dev/null +++ b/lib/database.php @@ -0,0 +1,2034 @@ +$W){unset($qg[$z][$de]);if(is_array($W)){$qg[$z][stripslashes($de)]=$W;$qg[]=&$qg[$z][stripslashes($de)];}else$qg[$z][stripslashes($de)]=($Vc?$W:stripslashes($W));}}}}function +bracket_escape($v,$Oa=false){static$ti=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return +strtr($v,($Oa?array_flip($ti):$ti));}function +min_version($Zi,$Be="",$h=null){global$g;if(!$h)$h=$g;$lh=$h->server_info;if($Be&&preg_match('~([\d.]+)-MariaDB~',$lh,$B)){$lh=$B[1];$Zi=$Be;}return(version_compare($lh,$Zi)>=0);}function +charset($g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function +script($wh,$si="\n"){return"$wh$si";}function +script_src($Mi){return"\n";}function +nonce(){return' nonce="'.get_nonce().'"';}function +target_blank(){return' target="_blank" rel="noreferrer noopener"';}function +h($P){return +str_replace("\0","�",htmlspecialchars($P,ENT_QUOTES,'utf-8'));}function +nl_br($P){return +str_replace("\n","
",$P);}function +checkbox($C,$Y,$fb,$ke="",$sf="",$kb="",$le=""){$I="".($sf?script("qsl('input').onclick = function () { $sf };",""):"");return($ke!=""||$kb?"$I".h($ke)."":$I);}function +optionlist($yf,$fh=null,$Ri=false){$I="";foreach($yf +as$de=>$W){$zf=array($de=>$W);if(is_array($W)){$I.='';$zf=$W;}foreach($zf +as$z=>$X)$I.=''.h($X);if(is_array($W))$I.='';}return$I;}function +html_select($C,$yf,$Y="",$rf=true,$le=""){if($rf)return"".(is_string($rf)?script("qsl('select').onchange = function () { $rf };",""):"");$I="";foreach($yf +as$z=>$X)$I.="";return$I;}function +select_input($Ja,$yf,$Y="",$rf="",$cg=""){$Xh=($yf?"select":"input");return"<$Xh$Ja".($yf?">