From 6527af50056deca519107c26b3bf617f5546eff7 Mon Sep 17 00:00:00 2001 From: alexey Date: Sat, 22 Feb 2025 00:11:05 +0300 Subject: [PATCH] Receipt create. Part 1 --- app.rb | 7 + classes/db.rb | 9 + classes/gitinfo.rb | 1 + public/js/edit_area_full.js | 134 +++++++ public/js/images/autocompletion.gif | Bin 0 -> 359 bytes public/js/images/close.gif | Bin 0 -> 102 bytes public/js/images/fullscreen.gif | Bin 0 -> 198 bytes public/js/images/go_to_line.gif | Bin 0 -> 1053 bytes public/js/images/help.gif | Bin 0 -> 295 bytes public/js/images/highlight.gif | Bin 0 -> 256 bytes public/js/images/load.gif | Bin 0 -> 1041 bytes public/js/images/move.gif | Bin 0 -> 257 bytes public/js/images/newdocument.gif | Bin 0 -> 170 bytes public/js/images/opacity.png | Bin 0 -> 147 bytes public/js/images/processing.gif | Bin 0 -> 825 bytes public/js/images/redo.gif | Bin 0 -> 169 bytes public/js/images/reset_highlight.gif | Bin 0 -> 168 bytes public/js/images/save.gif | Bin 0 -> 285 bytes public/js/images/search.gif | Bin 0 -> 191 bytes public/js/images/smooth_selection.gif | Bin 0 -> 174 bytes public/js/images/spacer.gif | Bin 0 -> 43 bytes public/js/images/statusbar_resize.gif | Bin 0 -> 79 bytes public/js/images/undo.gif | Bin 0 -> 175 bytes public/js/images/word_wrap.gif | Bin 0 -> 951 bytes public/js/langs/ru.js | 48 +++ public/js/plugins/charmap/charmap.js | 90 +++++ public/js/plugins/charmap/css/charmap.css | 64 ++++ public/js/plugins/charmap/images/charmap.gif | Bin 0 -> 245 bytes public/js/plugins/charmap/jscripts/map.js | 373 +++++++++++++++++++ public/js/plugins/charmap/langs/bg.js | 12 + public/js/plugins/charmap/langs/cs.js | 6 + public/js/plugins/charmap/langs/de.js | 6 + public/js/plugins/charmap/langs/dk.js | 6 + public/js/plugins/charmap/langs/en.js | 6 + public/js/plugins/charmap/langs/eo.js | 6 + public/js/plugins/charmap/langs/es.js | 6 + public/js/plugins/charmap/langs/fr.js | 6 + public/js/plugins/charmap/langs/hr.js | 6 + public/js/plugins/charmap/langs/it.js | 6 + public/js/plugins/charmap/langs/ja.js | 6 + public/js/plugins/charmap/langs/mk.js | 6 + public/js/plugins/charmap/langs/nl.js | 6 + public/js/plugins/charmap/langs/pl.js | 6 + public/js/plugins/charmap/langs/pt.js | 6 + public/js/plugins/charmap/langs/ru.js | 6 + public/js/plugins/charmap/langs/sk.js | 6 + public/js/plugins/charmap/langs/zh.js | 6 + public/js/plugins/charmap/popup.html | 24 ++ public/js/plugins/test/css/test.css | 3 + public/js/plugins/test/images/Thumbs.db | Bin 0 -> 3584 bytes public/js/plugins/test/images/test.gif | Bin 0 -> 87 bytes public/js/plugins/test/langs/bg.js | 10 + public/js/plugins/test/langs/cs.js | 4 + public/js/plugins/test/langs/de.js | 4 + public/js/plugins/test/langs/dk.js | 4 + public/js/plugins/test/langs/en.js | 4 + public/js/plugins/test/langs/eo.js | 4 + public/js/plugins/test/langs/es.js | 4 + public/js/plugins/test/langs/fr.js | 4 + public/js/plugins/test/langs/hr.js | 4 + public/js/plugins/test/langs/it.js | 4 + public/js/plugins/test/langs/ja.js | 4 + public/js/plugins/test/langs/mk.js | 4 + public/js/plugins/test/langs/nl.js | 4 + public/js/plugins/test/langs/pl.js | 4 + public/js/plugins/test/langs/pt.js | 4 + public/js/plugins/test/langs/ru.js | 4 + public/js/plugins/test/langs/sk.js | 4 + public/js/plugins/test/langs/zh.js | 4 + public/js/plugins/test/test.js | 110 ++++++ public/js/plugins/test/test2.js | 1 + public/js/reg_syntax/bash.js | 66 ++++ public/js/reg_syntax/basic.js | 70 ++++ public/js/reg_syntax/brainfuck.js | 45 +++ public/js/reg_syntax/c.js | 63 ++++ public/js/reg_syntax/coldfusion.js | 120 ++++++ public/js/reg_syntax/cpp.js | 66 ++++ public/js/reg_syntax/css.js | 85 +++++ public/js/reg_syntax/html.js | 51 +++ public/js/reg_syntax/java.js | 57 +++ public/js/reg_syntax/js.js | 94 +++++ public/js/reg_syntax/pas.js | 83 +++++ public/js/reg_syntax/perl.js | 88 +++++ public/js/reg_syntax/php.js | 157 ++++++++ public/js/reg_syntax/python.js | 145 +++++++ public/js/reg_syntax/robotstxt.js | 25 ++ public/js/reg_syntax/ruby.js | 68 ++++ public/js/reg_syntax/sql.js | 56 +++ public/js/reg_syntax/tsql.js | 88 +++++ public/js/reg_syntax/vb.js | 53 +++ public/js/reg_syntax/xml.js | 57 +++ views/rcpcrt.erb | 36 ++ 92 files changed, 2629 insertions(+) create mode 100755 public/js/edit_area_full.js create mode 100755 public/js/images/autocompletion.gif create mode 100755 public/js/images/close.gif create mode 100755 public/js/images/fullscreen.gif create mode 100755 public/js/images/go_to_line.gif create mode 100755 public/js/images/help.gif create mode 100755 public/js/images/highlight.gif create mode 100755 public/js/images/load.gif create mode 100755 public/js/images/move.gif create mode 100755 public/js/images/newdocument.gif create mode 100755 public/js/images/opacity.png create mode 100755 public/js/images/processing.gif create mode 100755 public/js/images/redo.gif create mode 100755 public/js/images/reset_highlight.gif create mode 100755 public/js/images/save.gif create mode 100755 public/js/images/search.gif create mode 100755 public/js/images/smooth_selection.gif create mode 100755 public/js/images/spacer.gif create mode 100755 public/js/images/statusbar_resize.gif create mode 100755 public/js/images/undo.gif create mode 100755 public/js/images/word_wrap.gif create mode 100755 public/js/langs/ru.js create mode 100755 public/js/plugins/charmap/charmap.js create mode 100755 public/js/plugins/charmap/css/charmap.css create mode 100755 public/js/plugins/charmap/images/charmap.gif create mode 100755 public/js/plugins/charmap/jscripts/map.js create mode 100755 public/js/plugins/charmap/langs/bg.js create mode 100755 public/js/plugins/charmap/langs/cs.js create mode 100755 public/js/plugins/charmap/langs/de.js create mode 100755 public/js/plugins/charmap/langs/dk.js create mode 100755 public/js/plugins/charmap/langs/en.js create mode 100755 public/js/plugins/charmap/langs/eo.js create mode 100755 public/js/plugins/charmap/langs/es.js create mode 100755 public/js/plugins/charmap/langs/fr.js create mode 100755 public/js/plugins/charmap/langs/hr.js create mode 100755 public/js/plugins/charmap/langs/it.js create mode 100755 public/js/plugins/charmap/langs/ja.js create mode 100755 public/js/plugins/charmap/langs/mk.js create mode 100755 public/js/plugins/charmap/langs/nl.js create mode 100755 public/js/plugins/charmap/langs/pl.js create mode 100755 public/js/plugins/charmap/langs/pt.js create mode 100755 public/js/plugins/charmap/langs/ru.js create mode 100755 public/js/plugins/charmap/langs/sk.js create mode 100755 public/js/plugins/charmap/langs/zh.js create mode 100755 public/js/plugins/charmap/popup.html create mode 100755 public/js/plugins/test/css/test.css create mode 100755 public/js/plugins/test/images/Thumbs.db create mode 100755 public/js/plugins/test/images/test.gif create mode 100755 public/js/plugins/test/langs/bg.js create mode 100755 public/js/plugins/test/langs/cs.js create mode 100755 public/js/plugins/test/langs/de.js create mode 100755 public/js/plugins/test/langs/dk.js create mode 100755 public/js/plugins/test/langs/en.js create mode 100755 public/js/plugins/test/langs/eo.js create mode 100755 public/js/plugins/test/langs/es.js create mode 100755 public/js/plugins/test/langs/fr.js create mode 100755 public/js/plugins/test/langs/hr.js create mode 100755 public/js/plugins/test/langs/it.js create mode 100755 public/js/plugins/test/langs/ja.js create mode 100755 public/js/plugins/test/langs/mk.js create mode 100755 public/js/plugins/test/langs/nl.js create mode 100755 public/js/plugins/test/langs/pl.js create mode 100755 public/js/plugins/test/langs/pt.js create mode 100755 public/js/plugins/test/langs/ru.js create mode 100755 public/js/plugins/test/langs/sk.js create mode 100755 public/js/plugins/test/langs/zh.js create mode 100755 public/js/plugins/test/test.js create mode 100755 public/js/plugins/test/test2.js create mode 100755 public/js/reg_syntax/bash.js create mode 100755 public/js/reg_syntax/basic.js create mode 100755 public/js/reg_syntax/brainfuck.js create mode 100755 public/js/reg_syntax/c.js create mode 100755 public/js/reg_syntax/coldfusion.js create mode 100755 public/js/reg_syntax/cpp.js create mode 100755 public/js/reg_syntax/css.js create mode 100755 public/js/reg_syntax/html.js create mode 100755 public/js/reg_syntax/java.js create mode 100755 public/js/reg_syntax/js.js create mode 100755 public/js/reg_syntax/pas.js create mode 100755 public/js/reg_syntax/perl.js create mode 100755 public/js/reg_syntax/php.js create mode 100755 public/js/reg_syntax/python.js create mode 100755 public/js/reg_syntax/robotstxt.js create mode 100755 public/js/reg_syntax/ruby.js create mode 100755 public/js/reg_syntax/sql.js create mode 100755 public/js/reg_syntax/tsql.js create mode 100755 public/js/reg_syntax/vb.js create mode 100755 public/js/reg_syntax/xml.js create mode 100644 views/rcpcrt.erb diff --git a/app.rb b/app.rb index 17b9b16..1e568eb 100644 --- a/app.rb +++ b/app.rb @@ -155,6 +155,13 @@ get "/recips" do erb :receips end +get "/rcpcreate" do + @page_name = "Создать новый рецепт" + @error_data = session[:rcpcreate_error] + session[:gitcreate_error] = nil + erb :rcpcrt +end + not_found do status 404 @page_name = "Кто-то потерялся" diff --git a/classes/db.rb b/classes/db.rb index ee1bab5..c57ac48 100644 --- a/classes/db.rb +++ b/classes/db.rb @@ -37,4 +37,13 @@ class DBase { :fname => item[:filepath], :descr => item[:descr], :id => item[:id] } end end + + def delete_repo_by_name(repo_name) + rep_id = Repos.where(reponame: repo_name).first + unless rep_id[:id].nil? + id = rep_id[:id] + RepocRecips.where(repo_id: id).delete + Repos.where(id: id).delete + end + end end diff --git a/classes/gitinfo.rb b/classes/gitinfo.rb index c99a559..91f0f86 100644 --- a/classes/gitinfo.rb +++ b/classes/gitinfo.rb @@ -145,6 +145,7 @@ class GitRepo f.flock(File::LOCK_EX) if File.exist?(git_path) FileUtils.rm_rf(git_path, secure: true) + @db.delete_repo_by_name(reponame) end end end diff --git a/public/js/edit_area_full.js b/public/js/edit_area_full.js new file mode 100755 index 0000000..1b5bf0f --- /dev/null +++ b/public/js/edit_area_full.js @@ -0,0 +1,134 @@ +function EAL() { + var t = this; t.version = "0.8.2"; date = new Date(); t.start_time = date.getTime(); t.win = "loading"; t.error = false; t.baseURL = ""; t.template = ""; t.lang = {}; t.load_syntax = {}; t.syntax = {}; t.loadedFiles = []; t.waiting_loading = {}; t.scripts_to_load = []; t.sub_scripts_to_load = []; t.syntax_display_name = { 'basic': 'Basic', 'brainfuck': 'Brainfuck', 'c': 'C', 'coldfusion': 'Coldfusion', 'cpp': 'CPP', 'css': 'CSS', 'html': 'HTML', 'java': 'Java', 'js': 'Javascript', 'pas': 'Pascal', 'perl': 'Perl', 'php': 'Php', 'python': 'Python', 'robotstxt': 'Robots txt', 'ruby': 'Ruby', 'sql': 'SQL', 'tsql': 'T-SQL', 'vb': 'Visual Basic', 'xml': 'XML', 'bash': 'Bash' }; t.resize = []; t.hidden = {}; t.default_settings = { debug: false, smooth_selection: true, font_size: "10", font_family: "monospace", start_highlight: false, toolbar: "search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,word_wrap,|,help", begin_toolbar: "", end_toolbar: "", is_multi_files: false, allow_resize: "both", show_line_colors: false, min_width: 400, min_height: 125, replace_tab_by_spaces: false, allow_toggle: true, language: "en", syntax: "", syntax_selection_allow: "basic,brainfuck,c,coldfusion,cpp,css,html,java,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml,bash", display: "onload", max_undo: 30, browsers: "known", plugins: "", gecko_spellcheck: false, fullscreen: false, is_editable: true, cursor_position: "begin", word_wrap: false, autocompletion: false, load_callback: "", save_callback: "", change_callback: "", submit_callback: "", EA_init_callback: "", EA_delete_callback: "", EA_load_callback: "", EA_unload_callback: "", EA_toggle_on_callback: "", EA_toggle_off_callback: "", EA_file_switch_on_callback: "", EA_file_switch_off_callback: "", EA_file_close_callback: "" }; t.advanced_buttons = [['new_document', 'newdocument.gif', 'new_document', false], ['search', 'search.gif', 'show_search', false], ['go_to_line', 'go_to_line.gif', 'go_to_line', false], ['undo', 'undo.gif', 'undo', true], ['redo', 'redo.gif', 'redo', true], ['change_smooth_selection', 'smooth_selection.gif', 'change_smooth_selection_mode', true], ['reset_highlight', 'reset_highlight.gif', 'resync_highlight', true], ['highlight', 'highlight.gif', 'change_highlight', true], ['help', 'help.gif', 'show_help', false], ['save', 'save.gif', 'save', false], ['load', 'load.gif', 'load', false], ['fullscreen', 'fullscreen.gif', 'toggle_full_screen', false], ['word_wrap', 'word_wrap.gif', 'toggle_word_wrap', true], ['autocompletion', 'autocompletion.gif', 'toggle_autocompletion', true]]; t.set_browser_infos(t); if (t.isIE >= 6 || t.isGecko || (t.isWebKit && !t.isSafari < 3) || t.isOpera >= 9 || t.isCamino) t.isValidBrowser = true; + else t.isValidBrowser = false; t.set_base_url(); for (var i = 0; i < t.scripts_to_load.length; i++) { setTimeout("eAL.load_script('" + t.baseURL + t.scripts_to_load[i] + ".js');", 1); t.waiting_loading[t.scripts_to_load[i] + ".js"] = false; } t.add_event(window, "load", EAL.prototype.window_loaded); +}; EAL.prototype = { + has_error: function () { this.error = true; for (var i in EAL.prototype) { EAL.prototype[i] = function () { }; } }, set_browser_infos: function (o) { ua = navigator.userAgent; o.isWebKit = /WebKit/.test(ua); o.isGecko = !o.isWebKit && /Gecko/.test(ua); o.isMac = /Mac/.test(ua); o.isIE = (navigator.appName == "Microsoft Internet Explorer"); if (o.isIE) { o.isIE = ua.replace(/^.*?MSIE\s+([0-9\.]+).*$/, "$1"); if (o.isIE < 6) o.has_error(); } if (o.isOpera = (ua.indexOf('Opera') != -1)) { o.isOpera = ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1"); if (o.isOpera < 9) o.has_error(); o.isIE = false; } if (o.isFirefox = (ua.indexOf('Firefox') != -1)) o.isFirefox = ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('Iceweasel') != -1) o.isFirefox = ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('GranParadiso') != -1) o.isFirefox = ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('BonEcho') != -1) o.isFirefox = ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('SeaMonkey') != -1) o.isFirefox = (ua.replace(/^.*?SeaMonkey.*?([0-9\.]+).*$/i, "$1")) + 1; if (o.isCamino = (ua.indexOf('Camino') != -1)) o.isCamino = ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1"); if (o.isSafari = (ua.indexOf('Safari') != -1)) o.isSafari = ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i, "$1"); if (o.isChrome = (ua.indexOf('Chrome') != -1)) { o.isChrome = ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i, "$1"); o.isSafari = false; } }, window_loaded: function () { eAL.win = "loaded"; if (document.forms) { for (var i = 0; i < document.forms.length; i++) { var form = document.forms[i]; form.edit_area_replaced_submit = null; try { form.edit_area_replaced_submit = form.onsubmit; form.onsubmit = ""; } catch (e) { } eAL.add_event(form, "submit", EAL.prototype.submit); eAL.add_event(form, "reset", EAL.prototype.reset); } } eAL.add_event(window, "unload", function () { for (var i in eAs) { eAL.delete_instance(i); } }); }, init_ie_textarea: function (id) { var a = document.getElementById(id); try { if (a && typeof (a.focused) == "undefined") { a.focus(); a.focused = true; a.selectionStart = a.selectionEnd = 0; get_IE_selection(a); eAL.add_event(a, "focus", IE_textarea_focus); eAL.add_event(a, "blur", IE_textarea_blur); } } catch (ex) { } }, init: function (settings) { var t = this, s = settings, i; if (!s["id"]) t.has_error(); if (t.error) return; if (eAs[s["id"]]) t.delete_instance(s["id"]); for (i in t.default_settings) { if (typeof (s[i]) == "undefined") s[i] = t.default_settings[i]; } if (s["browsers"] == "known" && t.isValidBrowser == false) { return; } if (s["begin_toolbar"].length > 0) s["toolbar"] = s["begin_toolbar"] + "," + s["toolbar"]; if (s["end_toolbar"].length > 0) s["toolbar"] = s["toolbar"] + "," + s["end_toolbar"]; s["tab_toolbar"] = s["toolbar"].replace(/ /g, "").split(","); s["plugins"] = s["plugins"].replace(/ /g, "").split(","); for (i = 0; i < s["plugins"].length; i++) { if (s["plugins"][i].length == 0) s["plugins"].splice(i, 1); } t.get_template(); t.load_script(t.baseURL + "langs/" + s["language"] + ".js"); if (s["syntax"].length > 0) { s["syntax"] = s["syntax"].toLowerCase(); t.load_script(t.baseURL + "reg_syntax/" + s["syntax"] + ".js"); } eAs[s["id"]] = { "settings": s }; eAs[s["id"]]["displayed"] = false; eAs[s["id"]]["hidden"] = false; t.start(s["id"]); }, delete_instance: function (id) { var d = document, fs = window.frames, span, iframe; eAL.execCommand(id, "EA_delete"); if (fs["frame_" + id] && fs["frame_" + id].editArea) { if (eAs[id]["displayed"]) eAL.toggle(id, "off"); fs["frame_" + id].editArea.execCommand("EA_unload"); } span = d.getElementById("EditAreaArroundInfos_" + id); if (span) span.parentNode.removeChild(span); iframe = d.getElementById("frame_" + id); if (iframe) { iframe.parentNode.removeChild(iframe); try { delete fs["frame_" + id]; } catch (e) { } } delete eAs[id]; }, start: function (id) { + var t = this, d = document, f, span, father, next, html = '', html_toolbar_content = '', template, content, i; if (t.win != "loaded") { setTimeout("eAL.start('" + id + "');", 50); return; } for (i in t.waiting_loading) { if (t.waiting_loading[i] != "loaded" && typeof (t.waiting_loading[i]) != "function") { setTimeout("eAL.start('" + id + "');", 50); return; } } if (!t.lang[eAs[id]["settings"]["language"]] || (eAs[id]["settings"]["syntax"].length > 0 && !t.load_syntax[eAs[id]["settings"]["syntax"]])) { setTimeout("eAL.start('" + id + "');", 50); return; } if (eAs[id]["settings"]["syntax"].length > 0) t.init_syntax_regexp(); if (!d.getElementById("EditAreaArroundInfos_" + id) && (eAs[id]["settings"]["debug"] || eAs[id]["settings"]["allow_toggle"])) { + span = d.createElement("span"); span.id = "EditAreaArroundInfos_" + id; if (eAs[id]["settings"]["allow_toggle"]) { checked = (eAs[id]["settings"]["display"] == "onload") ? "checked='checked'" : ""; html += "
"; html += ""; html += "
"; } if (eAs[id]["settings"]["debug"]) html += "
"; html = t.translate(html, eAs[id]["settings"]["language"]); span.innerHTML = html; father = d.getElementById(id).parentNode; next = d.getElementById(id).nextSibling; if (next == null) father.appendChild(span); + else father.insertBefore(span, next); + } if (!eAs[id]["initialized"]) { t.execCommand(id, "EA_init"); if (eAs[id]["settings"]["display"] == "later") { eAs[id]["initialized"] = true; return; } } if (t.isIE) { t.init_ie_textarea(id); } var area = eAs[id]; for (i = 0; i < area["settings"]["tab_toolbar"].length; i++) { html_toolbar_content += t.get_control_html(area["settings"]["tab_toolbar"][i], area["settings"]["language"]); } html_toolbar_content = t.translate(html_toolbar_content, area["settings"]["language"], "template"); if (!t.iframe_script) { t.iframe_script = ""; for (i = 0; i < t.sub_scripts_to_load.length; i++)t.iframe_script += ''; } for (i = 0; i < area["settings"]["plugins"].length; i++) { if (!t.all_plugins_loaded) t.iframe_script += ''; t.iframe_script += ''; } if (!t.iframe_css) { t.iframe_css = ""; } template = t.template.replace(/\[__BASEURL__\]/g, t.baseURL); template = template.replace("[__TOOLBAR__]", html_toolbar_content); template = t.translate(template, area["settings"]["language"], "template"); template = template.replace("[__CSSRULES__]", t.iframe_css); template = template.replace("[__JSCODE__]", t.iframe_script); template = template.replace("[__EA_VERSION__]", t.version); area.textarea = d.getElementById(area["settings"]["id"]); eAs[area["settings"]["id"]]["textarea"] = area.textarea; if (typeof (window.frames["frame_" + area["settings"]["id"]]) != 'undefined') delete window.frames["frame_" + area["settings"]["id"]]; father = area.textarea.parentNode; content = d.createElement("iframe"); content.name = "frame_" + area["settings"]["id"]; content.id = "frame_" + area["settings"]["id"]; content.style.borderWidth = "0px"; setAttribute(content, "frameBorder", "0"); content.style.overflow = "hidden"; content.style.display = "none"; next = area.textarea.nextSibling; if (next == null) father.appendChild(content); + else father.insertBefore(content, next); f = window.frames["frame_" + area["settings"]["id"]]; f.document.open(); f.eAs = eAs; f.area_id = area["settings"]["id"]; f.document.area_id = area["settings"]["id"]; f.document.write(template); f.document.close(); + }, toggle: function (id, toggle_to) { + if (!toggle_to) toggle_to = (eAs[id]["displayed"] == true) ? "off" : "on"; if (eAs[id]["displayed"] == true && toggle_to == "off") { this.toggle_off(id); } + else if (eAs[id]["displayed"] == false && toggle_to == "on") { this.toggle_on(id); } return false; + }, toggle_off: function (id) { + var fs = window.frames, f, t, parNod, nxtSib, selStart, selEnd, scrollTop, scrollLeft; if (fs["frame_" + id]) { + f = fs["frame_" + id]; t = eAs[id]["textarea"]; if (f.editArea.fullscreen['isFull']) f.editArea.toggle_full_screen(false); eAs[id]["displayed"] = false; t.wrap = "off"; setAttribute(t, "wrap", "off"); parNod = t.parentNode; nxtSib = t.nextSibling; parNod.removeChild(t); parNod.insertBefore(t, nxtSib); t.value = f.editArea.textarea.value; selStart = f.editArea.last_selection["selectionStart"]; selEnd = f.editArea.last_selection["selectionEnd"]; scrollTop = f.document.getElementById("result").scrollTop; scrollLeft = f.document.getElementById("result").scrollLeft; document.getElementById("frame_" + id).style.display = 'none'; t.style.display = "inline"; try { t.focus(); } catch (e) { }; if (this.isIE) { t.selectionStart = selStart; t.selectionEnd = selEnd; t.focused = true; set_IE_selection(t); } + else { if (this.isOpera && this.isOpera < 9.6) { t.setSelectionRange(0, 0); } try { t.setSelectionRange(selStart, selEnd); } catch (e) { }; } t.scrollTop = scrollTop; t.scrollLeft = scrollLeft; f.editArea.execCommand("toggle_off"); + } + }, toggle_on: function (id) { + var fs = window.frames, f, t, selStart = 0, selEnd = 0, scrollTop = 0, scrollLeft = 0, curPos, elem; if (fs["frame_" + id]) { + f = fs["frame_" + id]; t = eAs[id]["textarea"]; area = f.editArea; area.textarea.value = t.value; curPos = eAs[id]["settings"]["cursor_position"]; if (t.use_last == true) { selStart = t.last_selectionStart; selEnd = t.last_selectionEnd; scrollTop = t.last_scrollTop; scrollLeft = t.last_scrollLeft; t.use_last = false; } + else if (curPos == "auto") { try { selStart = t.selectionStart; selEnd = t.selectionEnd; scrollTop = t.scrollTop; scrollLeft = t.scrollLeft; } catch (ex) { } } this.set_editarea_size_from_textarea(id, document.getElementById("frame_" + id)); t.style.display = "none"; document.getElementById("frame_" + id).style.display = "inline"; area.execCommand("focus"); eAs[id]["displayed"] = true; area.execCommand("update_size"); f.document.getElementById("result").scrollTop = scrollTop; f.document.getElementById("result").scrollLeft = scrollLeft; area.area_select(selStart, selEnd - selStart); area.execCommand("toggle_on"); + } + else { elem = document.getElementById(id); elem.last_selectionStart = elem.selectionStart; elem.last_selectionEnd = elem.selectionEnd; elem.last_scrollTop = elem.scrollTop; elem.last_scrollLeft = elem.scrollLeft; elem.use_last = true; eAL.start(id); } + }, set_editarea_size_from_textarea: function (id, frame) { var elem, width, height; elem = document.getElementById(id); width = Math.max(eAs[id]["settings"]["min_width"], elem.offsetWidth) + "px"; height = Math.max(eAs[id]["settings"]["min_height"], elem.offsetHeight) + "px"; if (elem.style.width.indexOf("%") != -1) width = elem.style.width; if (elem.style.height.indexOf("%") != -1) height = elem.style.height; frame.style.width = width; frame.style.height = height; }, set_base_url: function () { var t = this, elems, i, docBasePath; if (!this.baseURL) { elems = document.getElementsByTagName('script'); for (i = 0; i < elems.length; i++) { if (elems[i].src && elems[i].src.match(/edit_area_[^\\\/]*$/i)) { var src = unescape(elems[i].src); src = src.substring(0, src.lastIndexOf('/')); this.baseURL = src; this.file_name = elems[i].src.substr(elems[i].src.lastIndexOf("/") + 1); break; } } } docBasePath = document.location.href; if (docBasePath.indexOf('?') != -1) docBasePath = docBasePath.substring(0, docBasePath.indexOf('?')); docBasePath = docBasePath.substring(0, docBasePath.lastIndexOf('/')); if (t.baseURL.indexOf('://') == -1 && t.baseURL.charAt(0) != '/') { t.baseURL = docBasePath + "/" + t.baseURL; } t.baseURL += "/"; }, get_button_html: function (id, img, exec, isFileSpecific, baseURL) { var cmd, html; if (!baseURL) baseURL = this.baseURL; cmd = 'editArea.execCommand(\'' + exec + '\')'; html = ''; html += ''; return html; }, get_control_html: function (button_name, lang) { var t = this, i, but, html, si; for (i = 0; i < t.advanced_buttons.length; i++) { but = t.advanced_buttons[i]; if (but[0] == button_name) { return t.get_button_html(but[0], but[1], but[2], but[3]); } } switch (button_name) { case "*": case "return": return "
"; case "|": case "separator": return ''; case "select_font": html = ""; return html; case "syntax_selection": html = ""; return html; }return "[" + button_name + "]"; }, get_template: function () { + if (this.template == "") { + var xhr_object = null; if (window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); + else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); + else { alert("XMLHTTPRequest not supported. EditArea not loaded"); return; } xhr_object.open("GET", this.baseURL + "template.html", false); xhr_object.send(null); if (xhr_object.readyState == 4) this.template = xhr_object.responseText; + else this.has_error(); + } + }, translate: function (text, lang, mode) { + if (mode == "word") text = eAL.get_word_translation(text, lang); + else if (mode = "template") { eAL.current_language = lang; text = text.replace(/\{\$([^\}]+)\}/gm, eAL.translate_template); } return text; + }, translate_template: function () { return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1], eAL.current_language); }, get_word_translation: function (val, lang) { var i; for (i in eAL.lang[lang]) { if (i == val) return eAL.lang[lang][i]; } return "_" + val; }, load_script: function (url) { var t = this, d = document, script, head; if (t.loadedFiles[url]) return; try { script = d.createElement("script"); script.type = "text/javascript"; script.src = url; script.charset = "UTF-8"; d.getElementsByTagName("head")[0].appendChild(script); } catch (e) { d.write(''); } t.loadedFiles[url] = true; }, add_event: function (obj, name, handler) { + try { + if (obj.attachEvent) { obj.attachEvent("on" + name, handler); } + else { obj.addEventListener(name, handler, false); } + } catch (e) { } + }, remove_event: function (obj, name, handler) { + try { + if (obj.detachEvent) obj.detachEvent("on" + name, handler); + else obj.removeEventListener(name, handler, false); + } catch (e) { } + }, reset: function (e) { var formObj, is_child, i, x; formObj = eAL.isIE ? window.event.srcElement : e.target; if (formObj.tagName != 'FORM') formObj = formObj.form; for (i in eAs) { is_child = false; for (x = 0; x < formObj.elements.length; x++) { if (formObj.elements[x].id == i) is_child = true; } if (window.frames["frame_" + i] && is_child && eAs[i]["displayed"] == true) { var exec = 'window.frames["frame_' + i + '"].editArea.textarea.value=document.getElementById("' + i + '").value;'; exec += 'window.frames["frame_' + i + '"].editArea.execCommand("focus");'; exec += 'window.frames["frame_' + i + '"].editArea.check_line_selection();'; exec += 'window.frames["frame_' + i + '"].editArea.execCommand("reset");'; window.setTimeout(exec, 10); } } return; }, submit: function (e) { + var formObj, is_child, fs = window.frames, i, x; formObj = eAL.isIE ? window.event.srcElement : e.target; if (formObj.tagName != 'FORM') formObj = formObj.form; for (i in eAs) { is_child = false; for (x = 0; x < formObj.elements.length; x++) { if (formObj.elements[x].id == i) is_child = true; } if (is_child) { if (fs["frame_" + i] && eAs[i]["displayed"] == true) document.getElementById(i).value = fs["frame_" + i].editArea.textarea.value; eAL.execCommand(i, "EA_submit"); } } if (typeof (formObj.edit_area_replaced_submit) == "function") { + res = formObj.edit_area_replaced_submit(); if (res == false) { + if (eAL.isIE) return false; + else e.preventDefault(); + } + } return; + }, getValue: function (id) { + if (window.frames["frame_" + id] && eAs[id]["displayed"] == true) { return window.frames["frame_" + id].editArea.textarea.value; } + else if (elem = document.getElementById(id)) { return elem.value; } return false; + }, setValue: function (id, new_val) { + var fs = window.frames; if ((f = fs["frame_" + id]) && eAs[id]["displayed"] == true) { f.editArea.textarea.value = new_val; f.editArea.execCommand("focus"); f.editArea.check_line_selection(false); f.editArea.execCommand("onchange"); } + else if (elem = document.getElementById(id)) { elem.value = new_val; } + }, getSelectionRange: function (id) { + var sel, eA, fs = window.frames; sel = { "start": 0, "end": 0 }; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { eA = fs["frame_" + id].editArea; sel["start"] = eA.textarea.selectionStart; sel["end"] = eA.textarea.selectionEnd; } + else if (elem = document.getElementById(id)) { sel = getSelectionRange(elem); } return sel; + }, setSelectionRange: function (id, new_start, new_end) { + var fs = window.frames; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].editArea.area_select(new_start, new_end - new_start); if (!this.isIE) { fs["frame_" + id].editArea.check_line_selection(false); fs["frame_" + id].editArea.scroll_to_view(); } } + else if (elem = document.getElementById(id)) { setSelectionRange(elem, new_start, new_end); } + }, getSelectedText: function (id) { var sel = this.getSelectionRange(id); return this.getValue(id).substring(sel["start"], sel["end"]); }, setSelectedText: function (id, new_val) { + var fs = window.frames, d = document, sel, text, scrollTop, scrollLeft, new_sel_end; new_val = new_val.replace(/\r/g, ""); sel = this.getSelectionRange(id); text = this.getValue(id); if (fs["frame_" + id] && eAs[id]["displayed"] == true) { scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; } + else { scrollTop = d.getElementById(id).scrollTop; scrollLeft = d.getElementById(id).scrollLeft; } text = text.substring(0, sel["start"]) + new_val + text.substring(sel["end"]); this.setValue(id, text); new_sel_end = sel["start"] + new_val.length; this.setSelectionRange(id, sel["start"], new_sel_end); if (new_val != this.getSelectedText(id).replace(/\r/g, "")) { this.setSelectionRange(id, sel["start"], new_sel_end + new_val.split("\n").length - 1); } if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; fs["frame_" + id].editArea.execCommand("onchange"); } + else { d.getElementById(id).scrollTop = scrollTop; d.getElementById(id).scrollLeft = scrollLeft; } + }, insertTags: function (id, open_tag, close_tag) { + var old_sel, new_sel; old_sel = this.getSelectionRange(id); text = open_tag + this.getSelectedText(id) + close_tag; eAL.setSelectedText(id, text); new_sel = this.getSelectionRange(id); if (old_sel["end"] > old_sel["start"]) this.setSelectionRange(id, new_sel["end"], new_sel["end"]); + else this.setSelectionRange(id, old_sel["start"] + open_tag.length, old_sel["start"] + open_tag.length); + }, hide: function (id) { + var fs = window.frames, d = document, t = this, scrollTop, scrollLeft, span; if (d.getElementById(id) && !t.hidden[id]) { + t.hidden[id] = {}; t.hidden[id]["selectionRange"] = t.getSelectionRange(id); if (d.getElementById(id).style.display != "none") { t.hidden[id]["scrollTop"] = d.getElementById(id).scrollTop; t.hidden[id]["scrollLeft"] = d.getElementById(id).scrollLeft; } if (fs["frame_" + id]) { + t.hidden[id]["toggle"] = eAs[id]["displayed"]; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; } + else { scrollTop = d.getElementById(id).scrollTop; scrollLeft = d.getElementById(id).scrollLeft; } t.hidden[id]["scrollTop"] = scrollTop; t.hidden[id]["scrollLeft"] = scrollLeft; if (eAs[id]["displayed"] == true) eAL.toggle_off(id); + } span = d.getElementById("EditAreaArroundInfos_" + id); if (span) { span.style.display = 'none'; } d.getElementById(id).style.display = "none"; + } + }, show: function (id) { + var fs = window.frames, d = document, t = this, span; if ((elem = d.getElementById(id)) && t.hidden[id]) { + elem.style.display = "inline"; elem.scrollTop = t.hidden[id]["scrollTop"]; elem.scrollLeft = t.hidden[id]["scrollLeft"]; span = d.getElementById("EditAreaArroundInfos_" + id); if (span) { span.style.display = 'inline'; } if (fs["frame_" + id]) { + elem.style.display = "inline"; if (t.hidden[id]["toggle"] == true) eAL.toggle_on(id); scrollTop = t.hidden[id]["scrollTop"]; scrollLeft = t.hidden[id]["scrollLeft"]; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; } + else { elem.scrollTop = scrollTop; elem.scrollLeft = scrollLeft; } + } sel = t.hidden[id]["selectionRange"]; t.setSelectionRange(id, sel["start"], sel["end"]); delete t.hidden[id]; + } + }, getCurrentFile: function (id) { return this.execCommand(id, 'get_file', this.execCommand(id, 'curr_file')); }, getFile: function (id, file_id) { return this.execCommand(id, 'get_file', file_id); }, getAllFiles: function (id) { return this.execCommand(id, 'get_all_files()'); }, openFile: function (id, file_infos) { return this.execCommand(id, 'open_file', file_infos); }, closeFile: function (id, file_id) { return this.execCommand(id, 'close_file', file_id); }, setFileEditedMode: function (id, file_id, to) { var reg1, reg2; reg1 = new RegExp('\\\\', 'g'); reg2 = new RegExp('"', 'g'); return this.execCommand(id, 'set_file_edited_mode("' + file_id.replace(reg1, '\\\\').replace(reg2, '\\"') + '",' + to + ')'); }, execCommand: function (id, cmd, fct_param) { + switch (cmd) { case "EA_init": if (eAs[id]['settings']["EA_init_callback"].length > 0) eval(eAs[id]['settings']["EA_init_callback"] + "('" + id + "');"); break; case "EA_delete": if (eAs[id]['settings']["EA_delete_callback"].length > 0) eval(eAs[id]['settings']["EA_delete_callback"] + "('" + id + "');"); break; case "EA_submit": if (eAs[id]['settings']["submit_callback"].length > 0) eval(eAs[id]['settings']["submit_callback"] + "('" + id + "');"); break; }if (window.frames["frame_" + id] && window.frames["frame_" + id].editArea) { + if (fct_param != undefined) return eval('window.frames["frame_' + id + '"].editArea.' + cmd + '(fct_param);'); + else return eval('window.frames["frame_' + id + '"].editArea.' + cmd + ';'); + } return false; + } +}; var eAL = new EAL(); var eAs = {}; function getAttribute(elm, aName) { var aValue, taName, i; try { aValue = elm.getAttribute(aName); } catch (exept) { } if (!aValue) { for (i = 0; i < elm.attributes.length; i++) { taName = elm.attributes[i].name.toLowerCase(); if (taName == aName) { aValue = elm.attributes[i].value; return aValue; } } } return aValue; }; function setAttribute(elm, attr, val) { + if (attr == "class") { elm.setAttribute("className", val); elm.setAttribute("class", val); } + else { elm.setAttribute(attr, val); } +}; function getChildren(elem, elem_type, elem_attribute, elem_attribute_match, option, depth) { + if (!option) var option = "single"; if (!depth) var depth = -1; if (elem) { + var children = elem.childNodes; var result = null; var results = []; for (var x = 0; x < children.length; x++) { + strTagName = new String(children[x].tagName); children_class = "?"; if (strTagName != "undefined") { + child_attribute = getAttribute(children[x], elem_attribute); if ((strTagName.toLowerCase() == elem_type.toLowerCase() || elem_type == "") && (elem_attribute == "" || child_attribute == elem_attribute_match)) { + if (option == "all") { results.push(children[x]); } + else { return children[x]; } + } if (depth != 0) { + result = getChildren(children[x], elem_type, elem_attribute, elem_attribute_match, option, depth - 1); if (option == "all") { if (result.length > 0) { results = results.concat(result); } } + else if (result != null) { return result; } + } + } + } if (option == "all") return results; + } return null; +}; function isChildOf(elem, parent) { if (elem) { if (elem == parent) return true; while (elem.parentNode != 'undefined') { return isChildOf(elem.parentNode, parent); } } return false; }; function getMouseX(e) { + if (e != null && typeof (e.pageX) != "undefined") { return e.pageX; } + else { return (e != null ? e.x : event.x) + document.documentElement.scrollLeft; } +}; function getMouseY(e) { + if (e != null && typeof (e.pageY) != "undefined") { return e.pageY; } + else { return (e != null ? e.y : event.y) + document.documentElement.scrollTop; } +}; function calculeOffsetLeft(r) { return calculeOffset(r, "offsetLeft") }; function calculeOffsetTop(r) { return calculeOffset(r, "offsetTop") }; function calculeOffset(element, attr) { var offset = 0; while (element) { offset += element[attr]; element = element.offsetParent } return offset; }; function get_css_property(elem, prop) { + if (document.defaultView) { return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop); } + else if (elem.currentStyle) { var prop = prop.replace(/-\D/gi, function (sMatch) { return sMatch.charAt(sMatch.length - 1).toUpperCase(); }); return elem.currentStyle[prop]; } + else return null; +} var _mCE; function start_move_element(e, id, frame) { var elem_id = (e.target || e.srcElement).id; if (id) elem_id = id; if (!frame) frame = window; if (frame.event) e = frame.event; _mCE = frame.document.getElementById(elem_id); _mCE.frame = frame; frame.document.onmousemove = move_element; frame.document.onmouseup = end_move_element; mouse_x = getMouseX(e); mouse_y = getMouseY(e); _mCE.start_pos_x = mouse_x - (_mCE.style.left.replace("px", "") || calculeOffsetLeft(_mCE)); _mCE.start_pos_y = mouse_y - (_mCE.style.top.replace("px", "") || calculeOffsetTop(_mCE)); return false; }; function end_move_element(e) { _mCE.frame.document.onmousemove = ""; _mCE.frame.document.onmouseup = ""; _mCE = null; }; function move_element(e) { var newTop, newLeft, maxLeft; if (_mCE.frame && _mCE.frame.event) e = _mCE.frame.event; newTop = getMouseY(e) - _mCE.start_pos_y; newLeft = getMouseX(e) - _mCE.start_pos_x; maxLeft = _mCE.frame.document.body.offsetWidth - _mCE.offsetWidth; max_top = _mCE.frame.document.body.offsetHeight - _mCE.offsetHeight; newTop = Math.min(Math.max(0, newTop), max_top); newLeft = Math.min(Math.max(0, newLeft), maxLeft); _mCE.style.top = newTop + "px"; _mCE.style.left = newLeft + "px"; return false; }; var nav = eAL.nav; function getSelectionRange(textarea) { return { "start": textarea.selectionStart, "end": textarea.selectionEnd }; }; function setSelectionRange(t, start, end) { t.focus(); start = Math.max(0, Math.min(t.value.length, start)); end = Math.max(start, Math.min(t.value.length, end)); if (nav.isOpera && nav.isOpera < 9.6) { t.selectionEnd = 1; t.selectionStart = 0; t.selectionEnd = 1; t.selectionStart = 0; } t.selectionStart = start; t.selectionEnd = end; if (nav.isIE) set_IE_selection(t); }; function get_IE_selection(t) { var d = document, div, range, stored_range, elem, scrollTop, relative_top, line_start, line_nb, range_start, range_end, tab; if (t && t.focused) { if (!t.ea_line_height) { div = d.createElement("div"); div.style.fontFamily = get_css_property(t, "font-family"); div.style.fontSize = get_css_property(t, "font-size"); div.style.visibility = "hidden"; div.innerHTML = "0"; d.body.appendChild(div); t.ea_line_height = div.offsetHeight; d.body.removeChild(div); } range = d.selection.createRange(); try { stored_range = range.duplicate(); stored_range.moveToElementText(t); stored_range.setEndPoint('EndToEnd', range); if (stored_range.parentElement() == t) { elem = t; scrollTop = 0; while (elem.parentNode) { scrollTop += elem.scrollTop; elem = elem.parentNode; } relative_top = range.offsetTop - calculeOffsetTop(t) + scrollTop; line_start = Math.round((relative_top / t.ea_line_height) + 1); line_nb = Math.round(range.boundingHeight / t.ea_line_height); range_start = stored_range.text.length - range.text.length; tab = t.value.substr(0, range_start).split("\n"); range_start += (line_start - tab.length) * 2; t.selectionStart = range_start; range_end = t.selectionStart + range.text.length; tab = t.value.substr(0, range_start + range.text.length).split("\n"); range_end += (line_start + line_nb - 1 - tab.length) * 2; t.selectionEnd = range_end; } } catch (e) { } } if (t && t.id) { setTimeout("get_IE_selection(document.getElementById('" + t.id + "'));", 50); } }; function IE_textarea_focus() { event.srcElement.focused = true; } function IE_textarea_blur() { event.srcElement.focused = false; } function set_IE_selection(t) { var nbLineStart, nbLineStart, nbLineEnd, range; if (!window.closed) { nbLineStart = t.value.substr(0, t.selectionStart).split("\n").length - 1; nbLineEnd = t.value.substr(0, t.selectionEnd).split("\n").length - 1; try { range = document.selection.createRange(); range.moveToElementText(t); range.setEndPoint('EndToStart', range); range.moveStart('character', t.selectionStart - nbLineStart); range.moveEnd('character', t.selectionEnd - nbLineEnd - (t.selectionStart - nbLineStart)); range.select(); } catch (e) { } } }; eAL.waiting_loading["elements_functions.js"] = "loaded"; +EAL.prototype.start_resize_area = function () { var d = document, a, div, width, height, father; d.onmouseup = eAL.end_resize_area; d.onmousemove = eAL.resize_area; eAL.toggle(eAL.resize["id"]); a = eAs[eAL.resize["id"]]["textarea"]; div = d.getElementById("edit_area_resize"); if (!div) { div = d.createElement("div"); div.id = "edit_area_resize"; div.style.border = "dashed #888888 1px"; } width = a.offsetWidth - 2; height = a.offsetHeight - 2; div.style.display = "block"; div.style.width = width + "px"; div.style.height = height + "px"; father = a.parentNode; father.insertBefore(div, a); a.style.display = "none"; eAL.resize["start_top"] = calculeOffsetTop(div); eAL.resize["start_left"] = calculeOffsetLeft(div); }; EAL.prototype.end_resize_area = function (e) { var d = document, div, a, width, height; d.onmouseup = ""; d.onmousemove = ""; div = d.getElementById("edit_area_resize"); a = eAs[eAL.resize["id"]]["textarea"]; width = Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"], div.offsetWidth - 4); height = Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"], div.offsetHeight - 4); if (eAL.isIE == 6) { width -= 2; height -= 2; } a.style.width = width + "px"; a.style.height = height + "px"; div.style.display = "none"; a.style.display = "inline"; a.selectionStart = eAL.resize["selectionStart"]; a.selectionEnd = eAL.resize["selectionEnd"]; eAL.toggle(eAL.resize["id"]); return false; }; EAL.prototype.resize_area = function (e) { var allow, newHeight, newWidth; allow = eAs[eAL.resize["id"]]["settings"]["allow_resize"]; if (allow == "both" || allow == "y") { newHeight = Math.max(20, getMouseY(e) - eAL.resize["start_top"]); document.getElementById("edit_area_resize").style.height = newHeight + "px"; } if (allow == "both" || allow == "x") { newWidth = Math.max(20, getMouseX(e) - eAL.resize["start_left"]); document.getElementById("edit_area_resize").style.width = newWidth + "px"; } return false; }; eAL.waiting_loading["resize_area.js"] = "loaded"; +EAL.prototype.get_regexp = function (text_array) { res = "(\\b)("; for (i = 0; i < text_array.length; i++) { if (i > 0) res += "|"; res += this.get_escaped_regexp(text_array[i]); } res += ")(\\b)"; reg = new RegExp(res); return res; }; EAL.prototype.get_escaped_regexp = function (str) { return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1"); }; EAL.prototype.init_syntax_regexp = function () { + var lang_style = {}; for (var lang in this.load_syntax) { + if (!this.syntax[lang]) { + this.syntax[lang] = {}; this.syntax[lang]["keywords_reg_exp"] = {}; this.keywords_reg_exp_nb = 0; if (this.load_syntax[lang]['KEYWORDS']) { param = "g"; if (this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE'] === false) param += "i"; for (var i in this.load_syntax[lang]['KEYWORDS']) { if (typeof (this.load_syntax[lang]['KEYWORDS'][i]) == "function") continue; this.syntax[lang]["keywords_reg_exp"][i] = new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i]), param); this.keywords_reg_exp_nb++; } } if (this.load_syntax[lang]['OPERATORS']) { var str = ""; var nb = 0; for (var i in this.load_syntax[lang]['OPERATORS']) { if (typeof (this.load_syntax[lang]['OPERATORS'][i]) == "function") continue; if (nb > 0) str += "|"; str += this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]); nb++; } if (str.length > 0) this.syntax[lang]["operators_reg_exp"] = new RegExp("(" + str + ")", "g"); } if (this.load_syntax[lang]['DELIMITERS']) { var str = ""; var nb = 0; for (var i in this.load_syntax[lang]['DELIMITERS']) { if (typeof (this.load_syntax[lang]['DELIMITERS'][i]) == "function") continue; if (nb > 0) str += "|"; str += this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]); nb++; } if (str.length > 0) this.syntax[lang]["delimiters_reg_exp"] = new RegExp("(" + str + ")", "g"); } var syntax_trace = []; this.syntax[lang]["quotes"] = {}; var quote_tab = []; if (this.load_syntax[lang]['QUOTEMARKS']) { for (var i in this.load_syntax[lang]['QUOTEMARKS']) { if (typeof (this.load_syntax[lang]['QUOTEMARKS'][i]) == "function") continue; var x = this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]); this.syntax[lang]["quotes"][x] = x; quote_tab[quote_tab.length] = "(" + x + "(\\\\.|[^" + x + "])*(?:" + x + "|$))"; syntax_trace.push(x); } } this.syntax[lang]["comments"] = {}; if (this.load_syntax[lang]['COMMENT_SINGLE']) { for (var i in this.load_syntax[lang]['COMMENT_SINGLE']) { if (typeof (this.load_syntax[lang]['COMMENT_SINGLE'][i]) == "function") continue; var x = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]); quote_tab[quote_tab.length] = "(" + x + "(.|\\r|\\t)*(\\n|$))"; syntax_trace.push(x); this.syntax[lang]["comments"][x] = "\n"; } } if (this.load_syntax[lang]['COMMENT_MULTI']) { for (var i in this.load_syntax[lang]['COMMENT_MULTI']) { if (typeof (this.load_syntax[lang]['COMMENT_MULTI'][i]) == "function") continue; var start = this.get_escaped_regexp(i); var end = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]); quote_tab[quote_tab.length] = "(" + start + "(.|\\n|\\r)*?(" + end + "|$))"; syntax_trace.push(start); syntax_trace.push(end); this.syntax[lang]["comments"][i] = this.load_syntax[lang]['COMMENT_MULTI'][i]; } } if (quote_tab.length > 0) this.syntax[lang]["comment_or_quote_reg_exp"] = new RegExp("(" + quote_tab.join("|") + ")", "gi"); if (syntax_trace.length > 0) this.syntax[lang]["syntax_trace_regexp"] = new RegExp("((.|\n)*?)(\\\\*(" + syntax_trace.join("|") + "|$))", "gmi"); if (this.load_syntax[lang]['SCRIPT_DELIMITERS']) { this.syntax[lang]["script_delimiters"] = {}; for (var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']) { if (typeof (this.load_syntax[lang]['SCRIPT_DELIMITERS'][i]) == "function") continue; this.syntax[lang]["script_delimiters"][i] = this.load_syntax[lang]['SCRIPT_DELIMITERS']; } } this.syntax[lang]["custom_regexp"] = {}; if (this.load_syntax[lang]['REGEXPS']) { for (var i in this.load_syntax[lang]['REGEXPS']) { if (typeof (this.load_syntax[lang]['REGEXPS'][i]) == "function") continue; var val = this.load_syntax[lang]['REGEXPS'][i]; if (!this.syntax[lang]["custom_regexp"][val['execute']]) this.syntax[lang]["custom_regexp"][val['execute']] = {}; this.syntax[lang]["custom_regexp"][val['execute']][i] = { 'regexp': new RegExp(val['search'], val['modifiers']), 'class': val['class'] }; } } if (this.load_syntax[lang]['STYLES']) { + lang_style[lang] = {}; for (var i in this.load_syntax[lang]['STYLES']) { + if (typeof (this.load_syntax[lang]['STYLES'][i]) == "function") continue; if (typeof (this.load_syntax[lang]['STYLES'][i]) != "string") { for (var j in this.load_syntax[lang]['STYLES'][i]) { lang_style[lang][j] = this.load_syntax[lang]['STYLES'][i][j]; } } + else { lang_style[lang][i] = this.load_syntax[lang]['STYLES'][i]; } + } + } var style = ""; for (var i in lang_style[lang]) { if (lang_style[lang][i].length > 0) { style += "." + lang + " ." + i.toLowerCase() + " span{" + lang_style[lang][i] + "}\n"; style += "." + lang + " ." + i.toLowerCase() + "{" + lang_style[lang][i] + "}\n"; } } this.syntax[lang]["styles"] = style; + } + } +}; eAL.waiting_loading["reg_syntax.js"] = "loaded"; +var editAreaLoader = eAL; var editAreas = eAs; EditAreaLoader = EAL; editAreaLoader.iframe_script = "".replace(/Á/g, 'this').replace(/Â/g, 'textarea').replace(/Ã/g, 'function').replace(/Ä/g, 'prototype').replace(/Å/g, 'settings').replace(/Æ/g, 'length').replace(/Ç/g, 'style').replace(/È/g, 'parent').replace(/É/g, 'last_selection').replace(/Ê/g, 'value').replace(/Ë/g, 'true').replace(/Ì/g, 'false'); +editAreaLoader.template = " EditArea [__CSSRULES__] [__JSCODE__]
[__TOOLBAR__]
 
 
{$position}: {$line_abbr} 0, {$char_abbr} 0 {$total}: {$line_abbr} 0, {$char_abbr} 0 resize
{$processing}
{$search} {$close_popup}
{$replace} {$move_popup}

{$find_next} {$replace} {$replace_all}
{$close_popup}

Editarea [__EA_VERSION__]


{$shortcuts}:

{$tab}: {$add_tab}
{$shift}+{$tab}: {$remove_tab}
{$ctrl}+f: {$search_command}
{$ctrl}+r: {$replace_command}
{$ctrl}+h: {$highlight}
{$ctrl}+g: {$go_to_line}
{$ctrl}+z: {$undo}
{$ctrl}+y: {$redo}
{$ctrl}+e: {$help}
{$ctrl}+q, {$esc}: {$close_popup}
{$accesskey} E: {$toggle}

{$about_notice}
"; +editAreaLoader.iframe_css = ""; diff --git a/public/js/images/autocompletion.gif b/public/js/images/autocompletion.gif new file mode 100755 index 0000000000000000000000000000000000000000..f3dfc2e3a9098846711136f051eef77653916032 GIT binary patch literal 359 zcmZ?wbhEHb6k!lyxXQpFA|mo}EA!@Q4nOYHgolT(Sh3>UDThDr4mvqG+1lE6cXyvT zbEdhu`ST&IJNwfAetYoaa@wzFON@<;j~+dGc75dc@83V|k@#`5`0Fu`@8^QOy}f_l zoA&F)_Ivm4iHV8*|NnpA0K$->Ca zV8NgRk_7pQfvv@1PJxGxRR4)5AD8ItQrh9n_PxQZP?AGs^G?I{vqiEPHk)`(kj_zC zY{6sdQ9OBKsGUg2J2J%5W!T*=ehGSSWLA@7<@xDYx&$NiRnRYXF=ypOpXr literal 0 HcmV?d00001 diff --git a/public/js/images/close.gif b/public/js/images/close.gif new file mode 100755 index 0000000000000000000000000000000000000000..679ca2aa47644793fc7096142233af6d18cfc9ac GIT binary patch literal 102 zcmZ?wbhEHb6ky2ivBykw!ot@6bd$)Ew*2Dq{%MuzLU-VNrt;$I z{;0?PSAE;|`To-4{r~^~A^8LW000jFEC2ui02BZe000DY@X1N5y*O(ey8oUPG-PQu zh5=L~;SvlX%mSjURO>jy;xC1Q4L8xD48CAu$Z8M;}RUJf0>sOc_ z4h#giNmy{Z(DeG+E>qDAdHB(q-q8pM40A&O(_`XwX{XYr&z?PRr~gK;d)>WX|G+!v(`@O7 z#gQbEOxp+vsv_Jf61NO&~~uOm_QM5vt=)9^-2GdKQc?)(;>#1N8f<|iMC zmfD0;+g#c2!gPCdc7LqAKSnW@pd1qCo=N!3p0wI2Uh9Zk=lo!cD>>j-uGI1o**BAk z+nGfbcNcGeD*Jw7fy$G-la=mZQupAaAFx7wCr5K@**^bL3Q~$qtHmc2WOevhi_fWl z(sfv=`%6)ajg-4YJ5{Q^m(#*3no)Srli%PkY(#z&y{Z+f+pwX9E^Yd+_%OYx&Ar(` z=b4djMwtQYk78Xr3Od-lZnm`j;kQO??xYJWs4$_>f=Uxp*o#UtRAz5wJ9c-WrBlt9O#3t52`azorU%kROg@@ z^zE{v@mJLUhW&Q0+TqtY**eGbY8Q-WL0yJ%2*zQUhhcE~^jDa6JM<&|E(h8!`+6?G zauKFcruQPOmtb}IdR;i-!l|q1zlPIe7`*NuypEwiaDEc5N!oD}u3H$rjgdPTzwMiF zW73U3-MIHR?mx!VBe)-7`Y}8GFP?hv%!?T>JTLH^W@!ct!!mxbeim#%0DiolK>dFZ zzu?Szn}8&d0Ixnlcr-z9tlW0gQOy(ZIijL;LUHC4jE8fT{5fxlGUc6R6Y~{@_~J%= ziZgCiQ%F{M*H(S!QUO0gbU~ZjkzrMe*Qfr{5E{fyU6VLfTYp$-lRvr9@jypuf+~_C zDj$qCCpH(=w|2(Q4(4zKVf!L10!gkpb3pTD`L)o<*}R1hzkBo0vAn*uM>IjYsOYG9 zv0-1Q$7SopSqDij=l!TwL4r~y5zZS4c_*b{JYyhnO!uxVTX;N-(&|NuHN*7jINqW6 zg#4dMC#VB0%WI7CoA*nyGUuv1R~CH1U1>^NB9Y7#b@4?RyG&}ev|@Q}Xsl)1T~msP Gq`d@2%&Q{+ literal 0 HcmV?d00001 diff --git a/public/js/images/help.gif b/public/js/images/help.gif new file mode 100755 index 0000000000000000000000000000000000000000..51a1ee42073402ce787b60d151219ef7ce367615 GIT binary patch literal 295 zcmV+?0oeXWNk%w1VH5xq0Mrfu6i>3FyW3udp6K!Ub&;kbTH+f8tqUysbN$lQ^w;v!hW z!pq(wXY{hj_W%F@A^8LW0018VEC2ui02BZe000G~;3tk`X`X1Ru1KI+h83(|W>rq^ zR7RF&f!#zRnN$X{6T;$HBo?`WVllvQOo2)zp>TL49!J8HVVDe#NumhpbS0R9z=Ux~ zAoz}Cx7j!jCJ$n5dR`j(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/public/js/images/load.gif b/public/js/images/load.gif new file mode 100755 index 0000000000000000000000000000000000000000..461698f56b1e5822f49ed10227b2e57e683c8a03 GIT binary patch literal 1041 zcmdtPjZ>0$007{hgDIQsG-j@L*>tB)b60+}iD?OrA>k>g{a2QP=fy)QrO@924oIV@UURUC)| z_Hh8BRUmo->{0^i0Eit2)L}rq58_9_9yQoI0ru(0?>qtr=0Nh3sMI;iK}AgZ2uL@P zv!?cB{7K50jm$K~=L}H_^$ABuCzq*wkDptnZcdR`%IPfr6%FD zE9uMWOe#-mc0 zdbNSOGybW`IN~b2xCP6L&iUIvl!Pgr0!^ zgyGf}G~(fT2)$k$^Fj=R+dg6)!q7Gz2ta%rhJ%nGAPmD7c3yT#A#%j)UNN`xjj9kk>WZd!xmETTBh{YXI^b{t9!jGiW~Qp#VbtkipU(u58V$>o<`ED_LfQ)yM&!tudZ zO6ZtkL-u2)?nak`4w3~)2OMlB%CquCMW`EC1=ut*Geik9*l2SqO#J~;-aN z((?HJ(%tf+t-`|0-T(jqA^8LW000jFEC2ui02BZe000D6@X1N5y*TTfdRNNeY>8o> z4KQZPc^-wzx@G{}*+AEJzAuCxrm-U+gcqV~fj9y(hozB$v;>w-LA7!<0TB$xmeMs$ Y1>z^>8fd%Q>Wl40uW#=7ygmW|J7pwMu>b%7 literal 0 HcmV?d00001 diff --git a/public/js/images/opacity.png b/public/js/images/opacity.png new file mode 100755 index 0000000000000000000000000000000000000000..b4217cb212926ce7abfde5e045380e3f6a5d54b7 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl_jZKS5jZLdL qklCGA#U1zK0aw_X$=hxGiT1+v}x0S96<3ux1VcBu(M-; ztC5}oGb2#H;!hSvE(Q(;9gtxlV;NXH1WtA`ESM2BJDuZdn+*H6+J_#~?s=}wnLTle zLdoPrg>AjBcimgdeCKBYhit0B2@x&{waK4q^pXsNww0L>hh!WVpKG)o&b3NQQ?5mIMo+7=AS21Oo%i<%fwhoMRy< z%r&om<6%ZJd`e=;WCaw%pB9{8VS>4w;Q?{M;sr8%x#87s0xU>|UnwlPY=B}oE5iv6 z7MRN&h%~$hWcYK-tKURekqj4MC=qrd`<&8udehy@~I>Xg(5^P9@hX|Ae U2cj76s&GPp1LpFB=!RPZ0F}Z{aR2}S literal 0 HcmV?d00001 diff --git a/public/js/images/redo.gif b/public/js/images/redo.gif new file mode 100755 index 0000000000000000000000000000000000000000..3af90697f0b74d0b6b07b585614a6dc67ff87f1d GIT binary patch literal 169 zcmV;a09OA;Nk%w1VH5xq0K*FaEl-kjqwqa)*O$8QUUsNeit)O{)H!9gj;!cSf8=SD z@4U+CH(H=qeZQ%{>Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/public/js/images/reset_highlight.gif b/public/js/images/reset_highlight.gif new file mode 100755 index 0000000000000000000000000000000000000000..0fa3cb79734b6ddadaded7a30dbbab4cdf7ee11a GIT binary patch literal 168 zcmV;Z09XG3d^!9RvqL!@E;^*>mjy!E|{0<7#0>aHWEL6BndDU8;y+&e4jmm66%_}QC6xvn4h#bW3={_x jpoxPV4gmok9t#w=ts@#{Ko1AM7r_@1E5*jg#vuSZ^a*OP literal 0 HcmV?d00001 diff --git a/public/js/images/search.gif b/public/js/images/search.gif new file mode 100755 index 0000000000000000000000000000000000000000..cfe76b5d5b06afde765a8f9559c7b2c3fb0d2bf0 GIT binary patch literal 191 zcmV;w06_moNk%w1VH5xq0K*6XAwYSPrOj1uq2J{2d5^L-QjNRF;a`BY`TG5IgsOa& z#YJeCAx49!wa3EN@&Et;A^8LW000jFEC2ui02BZe000DR@X1N5y*TU5Zy?LmfLnqv zlZj@dP!!MS!kB^>3Thj{dMSt5;y`fuDmH}Uz$g$9N~Xo|3t6qtjy*E#3&d$!w&zD+OKB~ULl7eEw((m;2 z^kQ<7@$qtYhNk=Uwg3PCA^8LW000jFEC2ui02BZe000DA@X1N5y*TU5`(_{rgp5Wq zV<-tiQw0DJpz-{)hcHm#IKm8pA~9I(Ca@SvR8S0cm6VSWFgTt^N>UaxG!szEiFzP_ cvz1f8Q5b|bYX=qJK_CnUx@XVt`!Nv!J5VM>-~a#s literal 0 HcmV?d00001 diff --git a/public/js/images/spacer.gif b/public/js/images/spacer.gif new file mode 100755 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/public/js/images/statusbar_resize.gif b/public/js/images/statusbar_resize.gif new file mode 100755 index 0000000000000000000000000000000000000000..af89d803f8f0eeb965d9443473d5be009641cacf GIT binary patch literal 79 zcmZ?wbhEHbX*~6o0ZXGB7YP=m6OaAbAERg(>|jPrv0~%%#ha d_MXKm)lqT2YSDtso)?w9Z@gz^T^C`n1_07v8bkm9 literal 0 HcmV?d00001 diff --git a/public/js/images/undo.gif b/public/js/images/undo.gif new file mode 100755 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk*#vbLC%?J3FW@M$~JQa5Ev-;z1A z)~s2z{lkZ^zkdG#>lh_QLtvPMfZ|UUMh1re3_2kHfbs+b#}tPDoH8C8794Em5Y}?B zaA-K(E+EgRq4A)Rxm!#>Yl}w1qh>Z9F%5@?1_$SMJ}V)S2Md;-o~{?lx8_Dd}92xuMm{~Hst~OlmcK9DUrR(EC#?}7vDR-^5 rW;U&7J=9lwVCt*zRY{Adt>r4$y|X)H^SquD<&O^SZ{TKQVXy`OIJ8`? literal 0 HcmV?d00001 diff --git a/public/js/langs/ru.js b/public/js/langs/ru.js new file mode 100755 index 0000000..fcd381d --- /dev/null +++ b/public/js/langs/ru.js @@ -0,0 +1,48 @@ +editAreaLoader.lang["ru"]={ +new_document: "новый пустой документ", +search_button: "поиск и замена", +search_command: "искать следующий / открыть панель поиска", +search: "поиск", +replace: "замена", +replace_command: "заменить / открыть панель поиска", +find_next: "найти следующее", +replace_all: "заменить все", +reg_exp: "регулярное выражение", +match_case: "учитывать регистр", +not_found: "не найдено.", +occurrence_replaced: "вхождение заменено.", +search_field_empty: "Поле поиска пустое", +restart_search_at_begin: "Достигнут конец документа. Начинаю с начала.", +move_popup: "переместить окно поиска", +font_size: "--Размер шрифта--", +go_to_line: "перейти к строке", +go_to_line_prompt: "перейти к строке номер:", +undo: "отменить", +redo: "вернуть", +change_smooth_selection: "включить/отключить некоторые функции просмотра (более красиво, но больше использует процессор)", +highlight: "переключить подсветку синтаксиса включена/выключена", +reset_highlight: "восстановить подсветку (если разсинхронизирована от текста)", +word_wrap: "toggle word wrapping mode", +help: "о программе", +save: "сохранить", +load: "загрузить", +line_abbr: "Стр", +char_abbr: "Стлб", +position: "Позиция", +total: "Всего", +close_popup: "закрыть всплывающее окно", +shortcuts: "Горячие клавиши", +add_tab: "добавить табуляцию в текст", +remove_tab: "убрать табуляцию из текста", +about_notice: "Внимание: функция подсветки синтаксиса только для небольших текстов", +toggle: "Переключить редактор", +accesskey: "Горячая клавиша", +tab: "Tab", +shift: "Shift", +ctrl: "Ctrl", +esc: "Esc", +processing: "Обработка...", +fullscreen: "полный экран", +syntax_selection: "--Синтакс--", +close_tab: "Закрыть файл" +}; diff --git a/public/js/plugins/charmap/charmap.js b/public/js/plugins/charmap/charmap.js new file mode 100755 index 0000000..df42822 --- /dev/null +++ b/public/js/plugins/charmap/charmap.js @@ -0,0 +1,90 @@ +/** + * Charmap plugin + * by Christophe Dolivet + * v0.1 (2006/09/22) + * + * + * This plugin allow to use a visual keyboard allowing to insert any UTF-8 characters in the text. + * + * - plugin name to add to the plugin list: "charmap" + * - plugin name to add to the toolbar list: "charmap" + * - possible parameters to add to EditAreaLoader.init(): + * "charmap_default": (String) define the name of the default character range displayed on popup display + * (default: "arrows") + * + * + */ + +var EditArea_charmap= { + /** + * Get called once this file is loaded (editArea still not initialized) + * + * @return nothing + */ + init: function(){ + this.default_language="Arrows"; + } + + /** + * Returns the HTML code for a specific control string or false if this plugin doesn't have that control. + * A control can be a button, select list or any other HTML item to present in the EditArea user interface. + * Language variables such as {$lang_somekey} will also be replaced with contents from + * the language packs. + * + * @param {string} ctrl_name: the name of the control to add + * @return HTML code for a specific control or false. + * @type string or boolean + */ + ,get_control_html: function(ctrl_name){ + switch(ctrl_name){ + case "charmap": + // Control id, button img, command + return parent.editAreaLoader.get_button_html('charmap_but', 'charmap.gif', 'charmap_press', false, this.baseURL); + } + return false; + } + /** + * Get called once EditArea is fully loaded and initialised + * + * @return nothing + */ + ,onload: function(){ + if(editArea.settings["charmap_default"] && editArea.settings["charmap_default"].length>0) + this.default_language= editArea.settings["charmap_default"]; + } + + /** + * Is called each time the user touch a keyboard key. + * + * @param (event) e: the keydown event + * @return true - pass to next handler in chain, false - stop chain execution + * @type boolean + */ + ,onkeydown: function(e){ + + } + + /** + * Executes a specific command, this function handles plugin commands. + * + * @param {string} cmd: the name of the command being executed + * @param {unknown} param: the parameter of the command + * @return true - pass to next handler in chain, false - stop chain execution + * @type boolean + */ + ,execCommand: function(cmd, param){ + // Handle commands + switch(cmd){ + case "charmap_press": + win= window.open(this.baseURL+"popup.html", "charmap", "width=500,height=270,scrollbars=yes,resizable=yes"); + win.focus(); + return false; + } + // Pass to next handler in chain + return true; + } + +}; + +// Adds the plugin class to the list of available EditArea plugins +editArea.add_plugin("charmap", EditArea_charmap); diff --git a/public/js/plugins/charmap/css/charmap.css b/public/js/plugins/charmap/css/charmap.css new file mode 100755 index 0000000..fc8d666 --- /dev/null +++ b/public/js/plugins/charmap/css/charmap.css @@ -0,0 +1,64 @@ +body{ + background-color: #F0F0EE; + font: 12px monospace, sans-serif; +} + +select{ + background-color: #F9F9F9; + border: solid 1px #888888; +} + +h1, h2, h3, h4, h5, h6{ + margin: 0; + padding: 0; + color: #2B6FB6; +} + +h1{ + font-size: 1.5em; +} + +div#char_list{ + height: 200px; + overflow: auto; + padding: 1px; + border: 1px solid #0A246A; + background-color: #F9F9F9; + clear: both; + margin-top: 5px; +} + +a.char{ + display: block; + float: left; + width: 20px; + height: 20px; + line-height: 20px; + margin: 1px; + border: solid 1px #888888; + text-align: center; + cursor: pointer; +} + +a.char:hover{ + background-color: #CCCCCC; +} + +.preview{ + border: solid 1px #888888; + width: 50px; + padding: 2px 5px; + height: 35px; + line-height: 35px; + text-align:center; + background-color: #CCCCCC; + font-size: 2em; + float: right; + font-weight: bold; + margin: 0 0 5px 5px; +} + +#preview_code{ + font-size: 1.1em; + width: 70px; +} diff --git a/public/js/plugins/charmap/images/charmap.gif b/public/js/plugins/charmap/images/charmap.gif new file mode 100755 index 0000000000000000000000000000000000000000..3cdc4ac9134258a9a1a83b6afd5c7055bebbcbf9 GIT binary patch literal 245 zcmVJ7UM8qsvB8x<;Dr zSg7=Nn%Hi7)&KwiA^8LW0018VEC2ui02BZe000GY;3tk`X`X1RuI#x~)x&X5LaDKL zBuP+gmjjC8P!LL;h9PruTqdW2VQ_jhm?kOJM8RlI0sywOkQfrBgdlP}Q6Q310n$b# v>y*a!grF>@BLxiv8314c77P(14Hy;xh9(V(3=AWV77>droSmMZC?Nnljc8>f literal 0 HcmV?d00001 diff --git a/public/js/plugins/charmap/jscripts/map.js b/public/js/plugins/charmap/jscripts/map.js new file mode 100755 index 0000000..6c194a4 --- /dev/null +++ b/public/js/plugins/charmap/jscripts/map.js @@ -0,0 +1,373 @@ +var editArea; + + +/** + * UTF-8 list taken from http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec + */ + + +/* +var char_range_list={ +"Basic Latin":"0021,007F", +"Latin-1 Supplement":"0080,00FF", +"Latin Extended-A":"0100,017F", +"Latin Extended-B":"0180,024F", +"IPA Extensions":"0250,02AF", +"Spacing Modifier Letters":"02B0,02FF", + +"Combining Diacritical Marks":"0300,036F", +"Greek and Coptic":"0370,03FF", +"Cyrillic":"0400,04FF", +"Cyrillic Supplement":"0500,052F", +"Armenian":"0530,058F", +"Hebrew":"0590,05FF", +"Arabic":"0600,06FF", +"Syriac":"0700,074F", +"Arabic Supplement":"0750,077F", + +"Thaana":"0780,07BF", +"Devanagari":"0900,097F", +"Bengali":"0980,09FF", +"Gurmukhi":"0A00,0A7F", +"Gujarati":"0A80,0AFF", +"Oriya":"0B00,0B7F", +"Tamil":"0B80,0BFF", +"Telugu":"0C00,0C7F", +"Kannada":"0C80,0CFF", + +"Malayalam":"0D00,0D7F", +"Sinhala":"0D80,0DFF", +"Thai":"0E00,0E7F", +"Lao":"0E80,0EFF", +"Tibetan":"0F00,0FFF", +"Myanmar":"1000,109F", +"Georgian":"10A0,10FF", +"Hangul Jamo":"1100,11FF", +"Ethiopic":"1200,137F", + +"Ethiopic Supplement":"1380,139F", +"Cherokee":"13A0,13FF", +"Unified Canadian Aboriginal Syllabics":"1400,167F", +"Ogham":"1680,169F", +"Runic":"16A0,16FF", +"Tagalog":"1700,171F", +"Hanunoo":"1720,173F", +"Buhid":"1740,175F", +"Tagbanwa":"1760,177F", + +"Khmer":"1780,17FF", +"Mongolian":"1800,18AF", +"Limbu":"1900,194F", +"Tai Le":"1950,197F", +"New Tai Lue":"1980,19DF", +"Khmer Symbols":"19E0,19FF", +"Buginese":"1A00,1A1F", +"Phonetic Extensions":"1D00,1D7F", +"Phonetic Extensions Supplement":"1D80,1DBF", + +"Combining Diacritical Marks Supplement":"1DC0,1DFF", +"Latin Extended Additional":"1E00,1EFF", +"Greek Extended":"1F00,1FFF", +"General Punctuation":"2000,206F", +"Superscripts and Subscripts":"2070,209F", +"Currency Symbols":"20A0,20CF", +"Combining Diacritical Marks for Symbols":"20D0,20FF", +"Letterlike Symbols":"2100,214F", +"Number Forms":"2150,218F", + +"Arrows":"2190,21FF", +"Mathematical Operators":"2200,22FF", +"Miscellaneous Technical":"2300,23FF", +"Control Pictures":"2400,243F", +"Optical Character Recognition":"2440,245F", +"Enclosed Alphanumerics":"2460,24FF", +"Box Drawing":"2500,257F", +"Block Elements":"2580,259F", +"Geometric Shapes":"25A0,25FF", + +"Miscellaneous Symbols":"2600,26FF", +"Dingbats":"2700,27BF", +"Miscellaneous Mathematical Symbols-A":"27C0,27EF", +"Supplemental Arrows-A":"27F0,27FF", +"Braille Patterns":"2800,28FF", +"Supplemental Arrows-B":"2900,297F", +"Miscellaneous Mathematical Symbols-B":"2980,29FF", +"Supplemental Mathematical Operators":"2A00,2AFF", +"Miscellaneous Symbols and Arrows":"2B00,2BFF", + +"Glagolitic":"2C00,2C5F", +"Coptic":"2C80,2CFF", +"Georgian Supplement":"2D00,2D2F", +"Tifinagh":"2D30,2D7F", +"Ethiopic Extended":"2D80,2DDF", +"Supplemental Punctuation":"2E00,2E7F", +"CJK Radicals Supplement":"2E80,2EFF", +"Kangxi Radicals":"2F00,2FDF", +"Ideographic Description Characters":"2FF0,2FFF", + +"CJK Symbols and Punctuation":"3000,303F", +"Hiragana":"3040,309F", +"Katakana":"30A0,30FF", +"Bopomofo":"3100,312F", +"Hangul Compatibility Jamo":"3130,318F", +"Kanbun":"3190,319F", +"Bopomofo Extended":"31A0,31BF", +"CJK Strokes":"31C0,31EF", +"Katakana Phonetic Extensions":"31F0,31FF", + +"Enclosed CJK Letters and Months":"3200,32FF", +"CJK Compatibility":"3300,33FF", +"CJK Unified Ideographs Extension A":"3400,4DBF", +"Yijing Hexagram Symbols":"4DC0,4DFF", +"CJK Unified Ideographs":"4E00,9FFF", +"Yi Syllables":"A000,A48F", +"Yi Radicals":"A490,A4CF", +"Modifier Tone Letters":"A700,A71F", +"Syloti Nagri":"A800,A82F", + +"Hangul Syllables":"AC00,D7AF", +"High Surrogates":"D800,DB7F", +"High Private Use Surrogates":"DB80,DBFF", +"Low Surrogates":"DC00,DFFF", +"Private Use Area":"E000,F8FF", +"CJK Compatibility Ideographs":"F900,FAFF", +"Alphabetic Presentation Forms":"FB00,FB4F", +"Arabic Presentation Forms-A":"FB50,FDFF", +"Variation Selectors":"FE00,FE0F", + +"Vertical Forms":"FE10,FE1F", +"Combining Half Marks":"FE20,FE2F", +"CJK Compatibility Forms":"FE30,FE4F", +"Small Form Variants":"FE50,FE6F", +"Arabic Presentation Forms-B":"FE70,FEFF", +"Halfwidth and Fullwidth Forms":"FF00,FFEF", +"Specials":"FFF0,FFFF", +"Linear B Syllabary":"10000,1007F", +"Linear B Ideograms":"10080,100FF", + +"Aegean Numbers":"10100,1013F", +"Ancient Greek Numbers":"10140,1018F", +"Old Italic":"10300,1032F", +"Gothic":"10330,1034F", +"Ugaritic":"10380,1039F", +"Old Persian":"103A0,103DF", +"Deseret":"10400,1044F", +"Shavian":"10450,1047F", +"Osmanya":"10480,104AF", + +"Cypriot Syllabary":"10800,1083F", +"Kharoshthi":"10A00,10A5F", +"Byzantine Musical Symbols":"1D000,1D0FF", +"Musical Symbols":"1D100,1D1FF", +"Ancient Greek Musical Notation":"1D200,1D24F", +"Tai Xuan Jing Symbols":"1D300,1D35F", +"Mathematical Alphanumeric Symbols":"1D400,1D7FF", +"CJK Unified Ideographs Extension B":"20000,2A6DF", +"CJK Compatibility Ideographs Supplement":"2F800,2FA1F", +"Tags":"E0000,E007F", +"Variation Selectors Supplement":"E0100,E01EF" +}; +*/ +var char_range_list={ +"Aegean Numbers":"10100,1013F", +"Alphabetic Presentation Forms":"FB00,FB4F", +"Ancient Greek Musical Notation":"1D200,1D24F", +"Ancient Greek Numbers":"10140,1018F", +"Arabic":"0600,06FF", +"Arabic Presentation Forms-A":"FB50,FDFF", +"Arabic Presentation Forms-B":"FE70,FEFF", +"Arabic Supplement":"0750,077F", +"Armenian":"0530,058F", +"Arrows":"2190,21FF", +"Basic Latin":"0020,007F", +"Bengali":"0980,09FF", +"Block Elements":"2580,259F", +"Bopomofo Extended":"31A0,31BF", +"Bopomofo":"3100,312F", +"Box Drawing":"2500,257F", +"Braille Patterns":"2800,28FF", +"Buginese":"1A00,1A1F", +"Buhid":"1740,175F", +"Byzantine Musical Symbols":"1D000,1D0FF", +"CJK Compatibility Forms":"FE30,FE4F", +"CJK Compatibility Ideographs Supplement":"2F800,2FA1F", +"CJK Compatibility Ideographs":"F900,FAFF", +"CJK Compatibility":"3300,33FF", +"CJK Radicals Supplement":"2E80,2EFF", +"CJK Strokes":"31C0,31EF", +"CJK Symbols and Punctuation":"3000,303F", +"CJK Unified Ideographs Extension A":"3400,4DBF", +"CJK Unified Ideographs Extension B":"20000,2A6DF", +"CJK Unified Ideographs":"4E00,9FFF", +"Cherokee":"13A0,13FF", +"Combining Diacritical Marks Supplement":"1DC0,1DFF", +"Combining Diacritical Marks for Symbols":"20D0,20FF", +"Combining Diacritical Marks":"0300,036F", +"Combining Half Marks":"FE20,FE2F", +"Control Pictures":"2400,243F", +"Coptic":"2C80,2CFF", +"Currency Symbols":"20A0,20CF", +"Cypriot Syllabary":"10800,1083F", +"Cyrillic Supplement":"0500,052F", +"Cyrillic":"0400,04FF", +"Deseret":"10400,1044F", +"Devanagari":"0900,097F", +"Dingbats":"2700,27BF", +"Enclosed Alphanumerics":"2460,24FF", +"Enclosed CJK Letters and Months":"3200,32FF", +"Ethiopic Extended":"2D80,2DDF", +"Ethiopic Supplement":"1380,139F", +"Ethiopic":"1200,137F", +"General Punctuation":"2000,206F", +"Geometric Shapes":"25A0,25FF", +"Georgian Supplement":"2D00,2D2F", +"Georgian":"10A0,10FF", +"Glagolitic":"2C00,2C5F", +"Gothic":"10330,1034F", +"Greek Extended":"1F00,1FFF", +"Greek and Coptic":"0370,03FF", +"Gujarati":"0A80,0AFF", +"Gurmukhi":"0A00,0A7F", +"Halfwidth and Fullwidth Forms":"FF00,FFEF", +"Hangul Compatibility Jamo":"3130,318F", +"Hangul Jamo":"1100,11FF", +"Hangul Syllables":"AC00,D7AF", +"Hanunoo":"1720,173F", +"Hebrew":"0590,05FF", +"High Private Use Surrogates":"DB80,DBFF", +"High Surrogates":"D800,DB7F", +"Hiragana":"3040,309F", +"IPA Extensions":"0250,02AF", +"Ideographic Description Characters":"2FF0,2FFF", +"Kanbun":"3190,319F", +"Kangxi Radicals":"2F00,2FDF", +"Kannada":"0C80,0CFF", +"Katakana Phonetic Extensions":"31F0,31FF", +"Katakana":"30A0,30FF", +"Kharoshthi":"10A00,10A5F", +"Khmer Symbols":"19E0,19FF", +"Khmer":"1780,17FF", +"Lao":"0E80,0EFF", +"Latin Extended Additional":"1E00,1EFF", +"Latin Extended-A":"0100,017F", +"Latin Extended-B":"0180,024F", +"Latin-1 Supplement":"0080,00FF", +"Letterlike Symbols":"2100,214F", +"Limbu":"1900,194F", +"Linear B Ideograms":"10080,100FF", +"Linear B Syllabary":"10000,1007F", +"Low Surrogates":"DC00,DFFF", +"Malayalam":"0D00,0D7F", +"Mathematical Alphanumeric Symbols":"1D400,1D7FF", +"Mathematical Operators":"2200,22FF", +"Miscellaneous Mathematical Symbols-A":"27C0,27EF", +"Miscellaneous Mathematical Symbols-B":"2980,29FF", +"Miscellaneous Symbols and Arrows":"2B00,2BFF", +"Miscellaneous Symbols":"2600,26FF", +"Miscellaneous Technical":"2300,23FF", +"Modifier Tone Letters":"A700,A71F", +"Mongolian":"1800,18AF", +"Musical Symbols":"1D100,1D1FF", +"Myanmar":"1000,109F", +"New Tai Lue":"1980,19DF", +"Number Forms":"2150,218F", +"Ogham":"1680,169F", +"Old Italic":"10300,1032F", +"Old Persian":"103A0,103DF", +"Optical Character Recognition":"2440,245F", +"Oriya":"0B00,0B7F", +"Osmanya":"10480,104AF", +"Phonetic Extensions Supplement":"1D80,1DBF", +"Phonetic Extensions":"1D00,1D7F", +"Private Use Area":"E000,F8FF", +"Runic":"16A0,16FF", +"Shavian":"10450,1047F", +"Sinhala":"0D80,0DFF", +"Small Form Variants":"FE50,FE6F", +"Spacing Modifier Letters":"02B0,02FF", +"Specials":"FFF0,FFFF", +"Superscripts and Subscripts":"2070,209F", +"Supplemental Arrows-A":"27F0,27FF", +"Supplemental Arrows-B":"2900,297F", +"Supplemental Mathematical Operators":"2A00,2AFF", +"Supplemental Punctuation":"2E00,2E7F", +"Syloti Nagri":"A800,A82F", +"Syriac":"0700,074F", +"Tagalog":"1700,171F", +"Tagbanwa":"1760,177F", +"Tags":"E0000,E007F", +"Tai Le":"1950,197F", +"Tai Xuan Jing Symbols":"1D300,1D35F", +"Tamil":"0B80,0BFF", +"Telugu":"0C00,0C7F", +"Thaana":"0780,07BF", +"Thai":"0E00,0E7F", +"Tibetan":"0F00,0FFF", +"Tifinagh":"2D30,2D7F", +"Ugaritic":"10380,1039F", +"Unified Canadian Aboriginal Syllabics":"1400,167F", +"Variation Selectors Supplement":"E0100,E01EF", +"Variation Selectors":"FE00,FE0F", +"Vertical Forms":"FE10,FE1F", +"Yi Radicals":"A490,A4CF", +"Yi Syllables":"A000,A48F", +"Yijing Hexagram Symbols":"4DC0,4DFF" +}; + +var insert="charmap_insert"; + +function map_load(){ + editArea=opener.editArea; + // translate the document + insert= editArea.get_translation(insert, "word"); + //alert(document.title); + document.title= editArea.get_translation(document.title, "template"); + document.body.innerHTML= editArea.get_translation(document.body.innerHTML, "template"); + //document.title= editArea.get_translation(document.getElementBytitle, "template"); + + var selected_lang=opener.EditArea_charmap.default_language.toLowerCase(); + var selected=0; + + var select= document.getElementById("select_range") + for(var i in char_range_list){ + if(i.toLowerCase()==selected_lang) + selected=select.options.length; + select.options[select.options.length]=new Option(i, char_range_list[i]); + } + select.options[selected].selected=true; +/* start=0; + end=127; + content=""; + for(var i=start; i"+ String.fromCharCode(i) +""; + } + document.getElementById("char_list").innerHTML= html; + document.getElementById("preview_char").innerHTML=""; +} + +function previewChar(i){ + document.getElementById("preview_char").innerHTML= String.fromCharCode(i); + document.getElementById("preview_code").innerHTML= "&#"+ i +";"; +} + +function insertChar(i){ + opener.parent.editAreaLoader.setSelectedText(editArea.id, String.fromCharCode( i)); + range= opener.parent.editAreaLoader.getSelectionRange(editArea.id); + opener.parent.editAreaLoader.setSelectionRange(editArea.id, range["end"], range["end"]); + window.focus(); +} diff --git a/public/js/plugins/charmap/langs/bg.js b/public/js/plugins/charmap/langs/bg.js new file mode 100755 index 0000000..eaba0f9 --- /dev/null +++ b/public/js/plugins/charmap/langs/bg.js @@ -0,0 +1,12 @@ +/* + * Bulgarian translation + * Author: Valentin Hristov + * Company: SOFTKIT Bulgarian + * Site: http://www.softkit-bg.com + */ +editArea.add_lang("bg",{ +charmap_but: "Виртуална клавиатура", +charmap_title: "Виртуална клавиатура", +charmap_choose_block: "избери езиков блок", +charmap_insert:"постави този символ" +}); diff --git a/public/js/plugins/charmap/langs/cs.js b/public/js/plugins/charmap/langs/cs.js new file mode 100755 index 0000000..6b1c907 --- /dev/null +++ b/public/js/plugins/charmap/langs/cs.js @@ -0,0 +1,6 @@ +editArea.add_lang("cs",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/de.js b/public/js/plugins/charmap/langs/de.js new file mode 100755 index 0000000..6dfe69c --- /dev/null +++ b/public/js/plugins/charmap/langs/de.js @@ -0,0 +1,6 @@ +editArea.add_lang("de",{ +charmap_but: "Sonderzeichen", +charmap_title: "Sonderzeichen", +charmap_choose_block: "Bereich auswählen", +charmap_insert: "dieses Zeichen einfügen" +}); diff --git a/public/js/plugins/charmap/langs/dk.js b/public/js/plugins/charmap/langs/dk.js new file mode 100755 index 0000000..ebcde25 --- /dev/null +++ b/public/js/plugins/charmap/langs/dk.js @@ -0,0 +1,6 @@ +editArea.add_lang("dk",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/en.js b/public/js/plugins/charmap/langs/en.js new file mode 100755 index 0000000..335ec28 --- /dev/null +++ b/public/js/plugins/charmap/langs/en.js @@ -0,0 +1,6 @@ +editArea.add_lang("en",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/eo.js b/public/js/plugins/charmap/langs/eo.js new file mode 100755 index 0000000..9a30841 --- /dev/null +++ b/public/js/plugins/charmap/langs/eo.js @@ -0,0 +1,6 @@ +editArea.add_lang("eo",{ +charmap_but: "Ekranklavaro", +charmap_title: "Ekranklavaro", +charmap_choose_block: "Elekto de lingvo", +charmap_insert:"enmeti tiun signaron" +}); diff --git a/public/js/plugins/charmap/langs/es.js b/public/js/plugins/charmap/langs/es.js new file mode 100755 index 0000000..be04b4b --- /dev/null +++ b/public/js/plugins/charmap/langs/es.js @@ -0,0 +1,6 @@ +editArea.add_lang("es",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/fr.js b/public/js/plugins/charmap/langs/fr.js new file mode 100755 index 0000000..8131e30 --- /dev/null +++ b/public/js/plugins/charmap/langs/fr.js @@ -0,0 +1,6 @@ +editArea.add_lang("fr",{ +charmap_but: "Clavier visuel", +charmap_title: "Clavier visuel", +charmap_choose_block: "choix du language", +charmap_insert:"insérer ce caractère" +}); diff --git a/public/js/plugins/charmap/langs/hr.js b/public/js/plugins/charmap/langs/hr.js new file mode 100755 index 0000000..4d74354 --- /dev/null +++ b/public/js/plugins/charmap/langs/hr.js @@ -0,0 +1,6 @@ +editArea.add_lang("hr",{ +charmap_but: "Virtualna tipkovnica", +charmap_title: "Virtualna tipkovnica", +charmap_choose_block: "Odaberi blok s jezikom", +charmap_insert:"Ubaci taj znak" +}); diff --git a/public/js/plugins/charmap/langs/it.js b/public/js/plugins/charmap/langs/it.js new file mode 100755 index 0000000..b05abb9 --- /dev/null +++ b/public/js/plugins/charmap/langs/it.js @@ -0,0 +1,6 @@ +editArea.add_lang("it",{ +charmap_but: "Tastiera visuale", +charmap_title: "Tastiera visuale", +charmap_choose_block: "seleziona blocco", +charmap_insert:"inserisci questo carattere" +}); diff --git a/public/js/plugins/charmap/langs/ja.js b/public/js/plugins/charmap/langs/ja.js new file mode 100755 index 0000000..efe060e --- /dev/null +++ b/public/js/plugins/charmap/langs/ja.js @@ -0,0 +1,6 @@ +editArea.add_lang("ja",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/mk.js b/public/js/plugins/charmap/langs/mk.js new file mode 100755 index 0000000..f533116 --- /dev/null +++ b/public/js/plugins/charmap/langs/mk.js @@ -0,0 +1,6 @@ +editArea.add_lang("mkn",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/nl.js b/public/js/plugins/charmap/langs/nl.js new file mode 100755 index 0000000..70d7968 --- /dev/null +++ b/public/js/plugins/charmap/langs/nl.js @@ -0,0 +1,6 @@ +editArea.add_lang("nl",{ +charmap_but: "Visueel toetsenbord", +charmap_title: "Visueel toetsenbord", +charmap_choose_block: "Kies een taal blok", +charmap_insert:"Voeg dit symbool in" +}); diff --git a/public/js/plugins/charmap/langs/pl.js b/public/js/plugins/charmap/langs/pl.js new file mode 100755 index 0000000..9feabbb --- /dev/null +++ b/public/js/plugins/charmap/langs/pl.js @@ -0,0 +1,6 @@ +editArea.add_lang("pl",{ +charmap_but: "Klawiatura ekranowa", +charmap_title: "Klawiatura ekranowa", +charmap_choose_block: "wybierz grupę znaków", +charmap_insert:"wstaw ten znak" +}); diff --git a/public/js/plugins/charmap/langs/pt.js b/public/js/plugins/charmap/langs/pt.js new file mode 100755 index 0000000..5d3eaa3 --- /dev/null +++ b/public/js/plugins/charmap/langs/pt.js @@ -0,0 +1,6 @@ +editArea.add_lang("pt",{ +charmap_but: "Visual keyboard", +charmap_title: "Visual keyboard", +charmap_choose_block: "select language block", +charmap_insert:"insert this character" +}); diff --git a/public/js/plugins/charmap/langs/ru.js b/public/js/plugins/charmap/langs/ru.js new file mode 100755 index 0000000..3163f36 --- /dev/null +++ b/public/js/plugins/charmap/langs/ru.js @@ -0,0 +1,6 @@ +editArea.add_lang("ru",{ +charmap_but: "Визуальная клавиатура", +charmap_title: "Визуальная клавиатура", +charmap_choose_block: "выбрать языковой блок", +charmap_insert:"вставить этот символ" +}); diff --git a/public/js/plugins/charmap/langs/sk.js b/public/js/plugins/charmap/langs/sk.js new file mode 100755 index 0000000..8513641 --- /dev/null +++ b/public/js/plugins/charmap/langs/sk.js @@ -0,0 +1,6 @@ +editArea.add_lang("sk",{ +charmap_but: "Vizuálna klávesnica", +charmap_title: "Vizuálna klávesnica", +charmap_choose_block: "vyber jazykový blok", +charmap_insert: "vlož tento znak" +}); diff --git a/public/js/plugins/charmap/langs/zh.js b/public/js/plugins/charmap/langs/zh.js new file mode 100755 index 0000000..2a20233 --- /dev/null +++ b/public/js/plugins/charmap/langs/zh.js @@ -0,0 +1,6 @@ +editArea.add_lang("zh",{ +charmap_but: "软键盘", +charmap_title: "软键盘", +charmap_choose_block: "选择一个语言块", +charmap_insert:"插入此字符" +}); diff --git a/public/js/plugins/charmap/popup.html b/public/js/plugins/charmap/popup.html new file mode 100755 index 0000000..4b549db --- /dev/null +++ b/public/js/plugins/charmap/popup.html @@ -0,0 +1,24 @@ + + + + +{$charmap_title} + + + + + +
+
+

{$charmap_title}:

+ +
+ +
+ + + + + diff --git a/public/js/plugins/test/css/test.css b/public/js/plugins/test/css/test.css new file mode 100755 index 0000000..01245eb --- /dev/null +++ b/public/js/plugins/test/css/test.css @@ -0,0 +1,3 @@ +select#test_select{ + background-color: #FF0000; +} diff --git a/public/js/plugins/test/images/Thumbs.db b/public/js/plugins/test/images/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..863ae4136373453becc31bbf4c9ba8b353a59985 GIT binary patch literal 3584 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3Bx2!nwD0|OI~0pkDr|NlQkkbwcn90fxt z1pWfu3W`4vW&uVbD>OcbkQYXsN;Sr0E8 zaOhkxxl#G`%M*;uKzRpHVgmw02t_u@!ob7`vL93yfoNh4dI)j^5I8d=0)3sxkOK^b zbchg1qyVrK1lbD%#ApTu+ez{tqRkN|`X z|8E1c2s0BC2mt{L5V3Nwva+zSa@^NzuhzSS^i-?Mf z^6-mGh>1uDiHM4T3}Ivj>S1B!WM$8aRU`>1?EsjW@aW9W{|6as%wGr3@n1ILW+itY{G$w z>`H|qMvW5}awt1(JSZA;@q>zSQc)8pmzcPOq?D?fx`w8fiK&^ng{76Vi>sTvho@I? zNN8AiL}XNQN@`kqMrKxVNoiSmMP*fUOKV$uM`zch$y26In?7UatVN5LEM2yI#mZHi zHgDOwZTpU$yAB;ba`f2o6DLnyx_ss8wd*%--g@}x@sp>|p1*kc>f@)+U%r0({^RE_ zkiQrim?7SR`wY!rf#!>{Gvs{YQ~ z$5DS+r^e)?edj-^8vFkY6ODbYZ1qhJyO2}={FtTMj(M5N{~0Q8-uN{sd%=hB!}o9M zKMGr|H}fGs&mZxRVM|5So_X5}9roNaQ;BC)il)>?F3Agd$BYh?i{AQo^8Tl6dA9!y zZ+tH9|I#LP^6!j)T-ozk_dm?3&%K-ZJ^sVA8i%WU!ju2bSKdE8yYy*grrwtrFPqIf z^qxveBs<7YvHuXB-@Z@uNA_>eihQ3B?QJFXTrW5M@VW)E^N_YhTySN@GN*~FnvMpt zy-DX{PjoGj{}8qRr&T?7{f(K~{~4BEzY@T1|Ka;TuD2iCAFgk(F@4Bue7KH%zV8K- z)45vLqIYv2oB60owNvuc-4!~aj4BMqa~Ln};{Q<_f9yZQFVTJS{}~?a`u(3_vc{qY zyZFB=?6deq>#o(=U;Y#S=&!x|<*nMfMz&fOTRc*`goV6y7IsXEMB;+(?)nNpQS zT@3$k!g2);S^!wmgK|y+6srJfa8AnA?#sP;jIo3vm7y3|L+Sx*$4rJapzJ6ZP9XpQ D30)$f literal 0 HcmV?d00001 diff --git a/public/js/plugins/test/images/test.gif b/public/js/plugins/test/images/test.gif new file mode 100755 index 0000000000000000000000000000000000000000..1ab5da4461113d2af579898528246fdbe52ecd00 GIT binary patch literal 87 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*pGzw+SQ`#f{}FJ-?!v#V)e mtsGNfpJeCKSAiOz**>0`XR2{OVa>-G_df0vaY" + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +" "; + return html; + } + return false; + } + /** + * Get called once EditArea is fully loaded and initialised + * + * @return nothing + */ + ,onload: function(){ + alert("test load"); + } + + /** + * Is called each time the user touch a keyboard key. + * + * @param (event) e: the keydown event + * @return true - pass to next handler in chain, false - stop chain execution + * @type boolean + */ + ,onkeydown: function(e){ + var str= String.fromCharCode(e.keyCode); + // desactivate the "f" character + if(str.toLowerCase()=="f"){ + return true; + } + return false; + } + + /** + * Executes a specific command, this function handles plugin commands. + * + * @param {string} cmd: the name of the command being executed + * @param {unknown} param: the parameter of the command + * @return true - pass to next handler in chain, false - stop chain execution + * @type boolean + */ + ,execCommand: function(cmd, param){ + // Handle commands + switch(cmd){ + case "test_select_change": + var val= document.getElementById("test_select").value; + if(val!=-1) + parent.editAreaLoader.insertTags(editArea.id, "<"+val+">", ""); + document.getElementById("test_select").options[0].selected=true; + return false; + case "test_cmd": + alert("user clicked on test_cmd"); + return false; + } + // Pass to next handler in chain + return true; + } + + /** + * This is just an internal plugin method, prefix all internal methods with a _ character. + * The prefix is needed so they doesn't collide with future EditArea callback functions. + * + * @param {string} a Some arg1. + * @param {string} b Some arg2. + * @return Some return. + * @type unknown + */ + ,_someInternalFunction : function(a, b) { + return a+b; + } +}; + +// Adds the plugin class to the list of available EditArea plugins +editArea.add_plugin("test", EditArea_test); diff --git a/public/js/plugins/test/test2.js b/public/js/plugins/test/test2.js new file mode 100755 index 0000000..9a1ce51 --- /dev/null +++ b/public/js/plugins/test/test2.js @@ -0,0 +1 @@ +alert("test2.js is loaded from test plugin"); diff --git a/public/js/reg_syntax/bash.js b/public/js/reg_syntax/bash.js new file mode 100755 index 0000000..2c54eb8 --- /dev/null +++ b/public/js/reg_syntax/bash.js @@ -0,0 +1,66 @@ +/** + * Bash syntax v 1.0 + * +**/ +editAreaLoader.load_syntax["bash"] = { + 'DISPLAY_NAME': 'Bash' + , 'COMMENT_SINGLE': { 1: '#' } + , 'COMMENT_MULTI': {} + , 'QUOTEMARKS': { 1: "'", 2: '"' } + , 'KEYWORD_CASE_SENSITIVE': true + , 'KEYWORDS': { + 'reserved': [ + 'case', 'easc', 'if', 'fi', 'function', 'else', 'elif', 'for', 'while', 'until', 'let', + 'expr', 'echo', 'export', 'true', 'false', 'done', 'declare', + '-a', '-i', '-l', '-u', '-r', 'exit', 'read', 'printf', + 'return', 'grep', 'ps', 'do', 'kill', 'cat', 'cut', 'tr' + ] + } + , 'OPERATORS': [ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' + ] + , 'DELIMITERS': [ + '(', ')', '[', ']', '{', '}' + ] + , 'REGEXPS': { + 'constants': { + 'search': '()([A-Z]\\w*)()' + , 'class': 'constants' + , 'modifiers': 'g' + , 'execute': 'before' + } + , 'variables': { + 'search': '()([\$\@\%]+\\w+)()' + , 'class': 'variables' + , 'modifiers': 'g' + , 'execute': 'before' + } + , 'numbers': { + 'search': '()(-?[0-9]+)()' + , 'class': 'numbers' + , 'modifiers': 'g' + , 'execute': 'before' + } + , 'symbols': { + 'search': '()(:\\w+)()' + , 'class': 'symbols' + , 'modifiers': 'g' + , 'execute': 'before' + } + } + , 'STYLES': { + 'COMMENTS': 'color: #AAAAAA;' + , 'QUOTESMARKS': 'color: #660066;' + , 'KEYWORDS': { + 'reserved': 'font-weight: bold; color: #0000FF;' + } + , 'OPERATORS': 'color: #993300;' + , 'DELIMITERS': 'color: #993300;' + , 'REGEXPS': { + 'variables': 'color: #E0BD54;' + , 'numbers': 'color: green;' + , 'constants': 'color: #00AA00;' + , 'symbols': 'color: #879EFA;' + } + } +}; diff --git a/public/js/reg_syntax/basic.js b/public/js/reg_syntax/basic.js new file mode 100755 index 0000000..d8082f7 --- /dev/null +++ b/public/js/reg_syntax/basic.js @@ -0,0 +1,70 @@ +editAreaLoader.load_syntax["basic"] = { + 'DISPLAY_NAME' : 'Basic' + ,'COMMENT_SINGLE' : {1 : "'", 2 : 'rem'} + ,'COMMENT_MULTI' : { } + ,'QUOTEMARKS' : {1: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'if','then','for','wend','while', + 'else','elseif','select','case','end select', + 'until','next','step','to','end if', 'call' + ] + ,'keywords' : [ + 'sub', 'end sub', 'function', 'end function', 'exit', + 'exit function', 'dim', 'redim', 'shared', 'const', + 'is', 'absolute', 'access', 'any', 'append', 'as', + 'base', 'beep', 'binary', 'bload', 'bsave', 'chain', + 'chdir', 'circle', 'clear', 'close', 'cls', 'color', + 'com', 'common', 'data', 'date', 'declare', 'def', + 'defdbl', 'defint', 'deflng', 'defsng', 'defstr', + 'double', 'draw', 'environ', 'erase', 'error', 'field', + 'files', 'fn', 'get', 'gosub', 'goto', 'integer', 'key', + 'kill', 'let', 'line', 'list', 'locate', 'lock', 'long', + 'lprint', 'lset', 'mkdir', 'name', 'off', 'on', 'open', + 'option', 'out', 'output', 'paint', 'palette', 'pcopy', + 'poke', 'preset', 'print', 'pset', 'put', 'random', + 'randomize', 'read', 'reset', 'restore', 'resume', + 'return', 'rmdir', 'rset', 'run', 'screen', 'seg', + 'shell', 'single', 'sleep', 'sound', 'static', 'stop', + 'strig', 'string', 'swap', 'system', 'time', 'timer', + 'troff', 'tron', 'type', 'unlock', 'using', 'view', + 'wait', 'width', 'window', 'write' + ] + ,'functions' : [ + 'abs', 'asc', 'atn', 'cdbl', 'chr', 'cint', 'clng', + 'cos', 'csng', 'csrlin', 'cvd', 'cvdmbf', 'cvi', 'cvl', + 'cvs', 'cvsmbf', 'eof', 'erdev', 'erl', 'err', 'exp', + 'fileattr', 'fix', 'fre', 'freefile', 'hex', 'inkey', + 'inp', 'input', 'instr', 'int', 'ioctl', 'lbound', + 'lcase', 'left', 'len', 'loc', 'lof', 'log', 'lpos', + 'ltrim', 'mid', 'mkd', 'mkdmbf', 'mki', 'mkl', 'mks', + 'mksmbf', 'oct', 'peek', 'pen', 'play', 'pmap', 'point', + 'pos', 'right', 'rnd', 'rtrim', 'seek', 'sgn', 'sin', + 'space', 'spc', 'sqr', 'stick', 'str', 'tab', 'tan', + 'ubound', 'ucase', 'val', 'varptr', 'varseg' + ] + ,'operators' : [ + 'and', 'eqv', 'imp', 'mod', 'not', 'or', 'xor' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '!', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #99CC00;' + ,'QUOTESMARKS': 'color: #333399;' + ,'KEYWORDS' : { + 'keywords' : 'color: #3366FF;' + ,'functions' : 'color: #0000FF;' + ,'statements' : 'color: #3366FF;' + ,'operators' : 'color: #FF0000;' + } + ,'OPERATORS' : 'color: #FF0000;' + ,'DELIMITERS' : 'color: #0000FF;' + + } +}; diff --git a/public/js/reg_syntax/brainfuck.js b/public/js/reg_syntax/brainfuck.js new file mode 100755 index 0000000..6f8f063 --- /dev/null +++ b/public/js/reg_syntax/brainfuck.js @@ -0,0 +1,45 @@ +editAreaLoader.load_syntax["brainfuck"] = { + 'DISPLAY_NAME' : 'Brainfuck' + ,'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {} + ,'QUOTEMARKS' : {} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'OPERATORS' :[ + '+', '-' + ] + ,'DELIMITERS' :[ + '[', ']' + ] + ,'REGEXPS' : { + 'bfispis' : { + 'search' : '()(\\.)()' + ,'class' : 'bfispis' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'bfupis' : { + 'search' : '()(\\,)()' + ,'class' : 'bfupis' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'bfmemory' : { + 'search' : '()([<>])()' + ,'class' : 'bfmemory' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'OPERATORS' : 'color: #88AA00;' + ,'DELIMITERS' : 'color: #00C138;' + ,'REGEXPS' : { + 'bfispis' : 'color: #EE0000;' + ,'bfupis' : 'color: #4455ee;' + ,'bfmemory' : 'color: #DD00DD;' + } + } +}; + diff --git a/public/js/reg_syntax/c.js b/public/js/reg_syntax/c.js new file mode 100755 index 0000000..0e0f843 --- /dev/null +++ b/public/js/reg_syntax/c.js @@ -0,0 +1,63 @@ +editAreaLoader.load_syntax["c"] = { + 'DISPLAY_NAME' : 'C' + ,'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'constants' : [ + 'NULL', 'false', 'stdin', 'stdout', 'stderr', 'true' + ] + ,'types' : [ + 'FILE', 'auto', 'char', 'const', 'double', + 'extern', 'float', 'inline', 'int', 'long', 'register', + 'short', 'signed', 'size_t', 'static', 'struct', + 'time_t', 'typedef', 'union', 'unsigned', 'void', + 'volatile' + ] + ,'statements' : [ + 'do', 'else', 'enum', 'for', 'goto', 'if', 'sizeof', + 'switch', 'while' + ] + ,'keywords' : [ + 'break', 'case', 'continue', 'default', 'delete', + 'return' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'precompiler' : { + 'search' : '()(#[^\r\n]*)()' + ,'class' : 'precompiler' + ,'modifiers' : 'g' + ,'execute' : 'before' + } +/* ,'precompilerstring' : { + 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' + ,'class' : 'precompilerstring' + ,'modifiers' : 'g' + ,'execute' : 'before' + }*/ + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'constants' : 'color: #EE0000;' + ,'types' : 'color: #0000EE;' + ,'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + ,'REGEXPS' : { + 'precompiler' : 'color: #009900;' + ,'precompilerstring' : 'color: #994400;' + } + } +}; diff --git a/public/js/reg_syntax/coldfusion.js b/public/js/reg_syntax/coldfusion.js new file mode 100755 index 0000000..792f10b --- /dev/null +++ b/public/js/reg_syntax/coldfusion.js @@ -0,0 +1,120 @@ +editAreaLoader.load_syntax["coldfusion"] = { + 'DISPLAY_NAME' : 'Coldfusion' + ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'} + ,'COMMENT_MULTI' : {''} + ,'COMMENT_MULTI2' : {''} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'include', 'require', 'include_once', 'require_once', + 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', + 'endif', 'switch', 'case', 'endswitch', + 'return', 'break', 'continue' + ] + ,'reserved' : [ + 'AND', 'break', 'case', 'CONTAIN', 'CONTAINS', 'continue', 'default', 'do', + 'DOES', 'else', 'EQ', 'EQUAL', 'EQUALTO', 'EQV', 'FALSE', 'for', 'GE', + 'GREATER', 'GT', 'GTE', 'if', 'IMP', 'in', 'IS', 'LE', 'LESS', 'LT', 'LTE', + 'MOD', 'NEQ', 'NOT', 'OR', 'return', 'switch', 'THAN', 'TO', 'TRUE', 'var', + 'while', 'XOR' + ] + ,'functions' : [ + 'Abs', 'ACos', 'ArrayAppend', 'ArrayAvg', 'ArrayClear', 'ArrayDeleteAt', 'ArrayInsertAt', + 'ArrayIsEmpty', 'ArrayLen', 'ArrayMax', 'ArrayMin', 'ArrayNew', 'ArrayPrepend', 'ArrayResize', + 'ArraySet', 'ArraySort', 'ArraySum', 'ArraySwap', 'ArrayToList', 'Asc', 'ASin', 'Atn', 'AuthenticatedContext', + 'AuthenticatedUser', 'BitAnd', 'BitMaskClear', 'BitMaskRead', 'BitMaskSet', 'BitNot', 'BitOr', + 'BitSHLN', 'BitSHRN', 'BitXor', 'Ceiling', 'Chr', 'CJustify', 'Compare', 'CompareNoCase', 'Cos', + 'CreateDate', 'CreateDateTime', 'CreateODBCDate', 'CreateODBCDateTime', 'CreateODBCTime', + 'CreateTime', 'CreateTimeSpan', 'DateAdd', 'DateCompare', 'DateConvert', 'DateDiff', + 'DateFormat', 'DatePart', 'Day', 'DayOfWeek', 'DayOfWeekAsString', 'DayOfYear', 'DaysInMonth', + 'DaysInYear', 'DE', 'DecimalFormat', 'DecrementValue', 'Decrypt', 'DeleteClientVariable', + 'DirectoryExists', 'DollarFormat', 'Duplicate', 'Encrypt', 'Evaluate', 'Exp', 'ExpandPath', + 'FileExists', 'Find', 'FindNoCase', 'FindOneOf', 'FirstDayOfMonth', 'Fix', 'FormatBaseN', + 'GetBaseTagData', 'GetBaseTagList', 'GetBaseTemplatePath', 'GetClientVariablesList', + 'GetCurrentTemplatePath', 'GetDirectoryFromPath', 'GetException', 'GetFileFromPath', + 'GetFunctionList', 'GetHttpTimeString', 'GetHttpRequestData', 'GetLocale', 'GetMetricData', + 'GetProfileString', 'GetTempDirectory', 'GetTempFile', 'GetTemplatePath', 'GetTickCount', + 'GetTimeZoneInfo', 'GetToken', 'Hash', 'Hour', 'HTMLCodeFormat', 'HTMLEditFormat', 'IIf', + 'IncrementValue', 'InputBaseN', 'Insert', 'Int', 'IsArray', 'IsAuthenticated', 'IsAuthorized', + 'IsBoolean', 'IsBinary', 'IsCustomFunction', 'IsDate', 'IsDebugMode', 'IsDefined', 'IsLeapYear', + 'IsNumeric', 'IsNumericDate', 'IsProtected', 'IsQuery', 'IsSimpleValue', 'IsStruct', 'IsWDDX', + 'JavaCast', 'JSStringFormat', 'LCase', 'Left', 'Len', 'ListAppend', 'ListChangeDelims', + 'ListContains', 'ListContainsNoCase', 'ListDeleteAt', 'ListFind', 'ListFindNoCase', 'ListFirst', + 'ListGetAt', 'ListInsertAt', 'ListLast', 'ListLen', 'ListPrepend', 'ListQualify', 'ListRest', + 'ListSetAt', 'ListSort', 'ListToArray', 'ListValueCount', 'ListValueCountNoCase', 'LJustify', + 'Log', 'Log10', 'LSCurrencyFormat', 'LSDateFormat', 'LSEuroCurrencyFormat', 'LSIsCurrency', + 'LSIsDate', 'LSIsNumeric', 'LSNumberFormat', 'LSParseCurrency', 'LSParseDateTime', 'LSParseNumber', + 'LSTimeFormat', 'LTrim', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'MonthAsString', 'Now', 'NumberFormat', + 'ParagraphFormat', 'ParameterExists', 'ParseDateTime', 'Pi', 'PreserveSingleQuotes', 'Quarter', + 'QueryAddRow', 'QueryNew', 'QuerySetCell', 'QuotedValueList', 'Rand', 'Randomize', 'RandRange', + 'REFind', 'REFindNoCase', 'RemoveChars', 'RepeatString', 'Replace', 'ReplaceList', 'ReplaceNoCase', + 'REReplace', 'REReplaceNoCase', 'Reverse', 'Right', 'RJustify', 'Round', 'RTrim', 'Second', 'SetLocale', + 'SetProfileString', 'SetVariable', 'Sgn', 'Sin', 'SpanExcluding', 'SpanIncluding', 'Sqr', 'StripCR', + 'StructAppend', 'StructClear', 'StructCopy', 'StructCount', 'StructDelete', 'StructFind', 'StructFindKey', + 'StructFindValue', 'StructGet', 'StructInsert', 'StructIsEmpty', 'StructKeyArray', 'StructKeyExists', + 'StructKeyList', 'StructNew', 'StructSort', 'StructUpdate', 'Tan', 'TimeFormat', 'ToBase64', 'ToBinary', + 'ToString', 'Trim', 'UCase', 'URLDecode', 'URLEncodedFormat', 'Val', 'ValueList', 'Week', 'WriteOutput', + 'XMLFormat', 'Year', 'YesNoFormat' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '%', '!', '&&', '||' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'doctype' : { + 'search' : '()(]*>)()' + ,'class' : 'doctype' + ,'modifiers' : '' + ,'execute' : 'before' // before or after + } + ,'cftags' : { + 'search' : '(<)(/cf[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'cftags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'cftags2' : { + 'search' : '(<)(cf[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'cftags2' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'tags' : { + 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'tags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'attributes' : { + 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' + ,'class' : 'attributes' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'reserved' : 'color: #48BDDF;' + ,'functions' : 'color: #0000FF;' + ,'statements' : 'color: #60CA00;' + } + ,'OPERATORS' : 'color: #E775F0;' + ,'DELIMITERS' : '' + ,'REGEXPS' : { + 'attributes': 'color: #990033;' + ,'cftags': 'color: #990033;' + ,'cftags2': 'color: #990033;' + ,'tags': 'color: #000099;' + ,'doctype': 'color: #8DCFB5;' + ,'test': 'color: #00FF00;' + } + } +}; + + diff --git a/public/js/reg_syntax/cpp.js b/public/js/reg_syntax/cpp.js new file mode 100755 index 0000000..6b176e8 --- /dev/null +++ b/public/js/reg_syntax/cpp.js @@ -0,0 +1,66 @@ +editAreaLoader.load_syntax["cpp"] = { + 'DISPLAY_NAME' : 'CPP' + ,'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'constants' : [ + 'NULL', 'false', 'std', 'stdin', 'stdout', 'stderr', + 'true' + ] + ,'types' : [ + 'FILE', 'auto', 'char', 'class', 'const', 'double', + 'extern', 'float', 'friend', 'inline', 'int', + 'iterator', 'long', 'map', 'operator', 'queue', + 'register', 'short', 'signed', 'size_t', 'stack', + 'static', 'string', 'struct', 'time_t', 'typedef', + 'union', 'unsigned', 'vector', 'void', 'volatile' + ] + ,'statements' : [ + 'catch', 'do', 'else', 'enum', 'for', 'goto', 'if', + 'sizeof', 'switch', 'this', 'throw', 'try', 'while' + ] + ,'keywords' : [ + 'break', 'case', 'continue', 'default', 'delete', + 'namespace', 'new', 'private', 'protected', 'public', + 'return', 'using' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'precompiler' : { + 'search' : '()(#[^\r\n]*)()' + ,'class' : 'precompiler' + ,'modifiers' : 'g' + ,'execute' : 'before' + } +/* ,'precompilerstring' : { + 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' + ,'class' : 'precompilerstring' + ,'modifiers' : 'g' + ,'execute' : 'before' + }*/ + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'constants' : 'color: #EE0000;' + ,'types' : 'color: #0000EE;' + ,'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + ,'REGEXPS' : { + 'precompiler' : 'color: #009900;' + ,'precompilerstring' : 'color: #994400;' + } + } +}; diff --git a/public/js/reg_syntax/css.js b/public/js/reg_syntax/css.js new file mode 100755 index 0000000..087186b --- /dev/null +++ b/public/js/reg_syntax/css.js @@ -0,0 +1,85 @@ +editAreaLoader.load_syntax["css"] = { + 'DISPLAY_NAME' : 'CSS' + ,'COMMENT_SINGLE' : {1 : '@'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : ['"', "'"] + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'attributes' : [ + 'aqua', 'azimuth', 'background-attachment', 'background-color', + 'background-image', 'background-position', 'background-repeat', + 'background', 'border-bottom-color', 'border-bottom-style', + 'border-bottom-width', 'border-left-color', 'border-left-style', + 'border-left-width', 'border-right', 'border-right-color', + 'border-right-style', 'border-right-width', 'border-top-color', + 'border-top-style', 'border-top-width','border-bottom', 'border-collapse', + 'border-left', 'border-width', 'border-color', 'border-spacing', + 'border-style', 'border-top', 'border', 'caption-side', + 'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset', + 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display', + 'elevation', 'empty-cells', 'float', 'font-family', 'font-size', + 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', + 'font-weight', 'font', 'height', 'letter-spacing', 'line-height', + 'list-style', 'list-style-image', 'list-style-position', 'list-style-type', + 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin', + 'marker-offset', 'marks', 'max-height', 'max-width', 'min-height', + 'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style', + 'outline-width', 'overflow', 'padding-bottom', 'padding-left', + 'padding-right', 'padding-top', 'padding', 'page', 'page-break-after', + 'page-break-before', 'page-break-inside', 'pause-after', 'pause-before', + 'pause', 'pitch', 'pitch-range', 'play-during', 'position', 'quotes', + 'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation', + 'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration', + 'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi', + 'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows', + 'width', 'word-spacing', 'z-index', 'bottom', 'left' + ] + ,'values' : [ + 'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid', + 'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both', + 'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', + 'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive', + 'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double', + 'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded', + 'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia', + 'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher', + 'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline', + 'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana', + 'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low', + 'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace', + 'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize', + 'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline', + 'pointer', 'portrait', 'purple', 'px', + 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards', + 's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square', + 'static', 'status-bar', 'super', 'sw-resize', + 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent', + 'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url', + 'visible', + 'w-resize', 'wait', 'white', 'wider', + 'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small', + 'yellow', 'yes' + ] + ,'specials' : [ + 'important' + ] + } + ,'OPERATORS' :[ + ':', ';', '!', '.', '#' + ] + ,'DELIMITERS' :[ + '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'attributes' : 'color: #48BDDF;' + ,'values' : 'color: #2B60FF;' + ,'specials' : 'color: #FF0000;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #60CA00;' + + } +}; diff --git a/public/js/reg_syntax/html.js b/public/js/reg_syntax/html.js new file mode 100755 index 0000000..defab6b --- /dev/null +++ b/public/js/reg_syntax/html.js @@ -0,0 +1,51 @@ +/* +* last update: 2006-08-24 +*/ + +editAreaLoader.load_syntax["html"] = { + 'DISPLAY_NAME' : 'HTML' + ,'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {''} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + } + ,'OPERATORS' :[ + ] + ,'DELIMITERS' :[ + ] + ,'REGEXPS' : { + 'doctype' : { + 'search' : '()(]*>)()' + ,'class' : 'doctype' + ,'modifiers' : '' + ,'execute' : 'before' // before or after + } + ,'tags' : { + 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'tags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'attributes' : { + 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' + ,'class' : 'attributes' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + } + ,'OPERATORS' : 'color: #E775F0;' + ,'DELIMITERS' : '' + ,'REGEXPS' : { + 'attributes': 'color: #B1AC41;' + ,'tags': 'color: #E62253;' + ,'doctype': 'color: #8DCFB5;' + ,'test': 'color: #00FF00;' + } + } +}; diff --git a/public/js/reg_syntax/java.js b/public/js/reg_syntax/java.js new file mode 100755 index 0000000..2c01928 --- /dev/null +++ b/public/js/reg_syntax/java.js @@ -0,0 +1,57 @@ +editAreaLoader.load_syntax["java"] = { + 'DISPLAY_NAME' : 'Java' + ,'COMMENT_SINGLE': { 1: '//', 2: '@' } + , 'COMMENT_MULTI': { '/*': '*/' } + , 'QUOTEMARKS': { 1: "'", 2: '"' } + , 'KEYWORD_CASE_SENSITIVE': true + , 'KEYWORDS': { + 'constants': [ + 'null', 'false', 'true' + ] + , 'types': [ + 'String', 'int', 'short', 'long', 'char', 'double', 'byte', + 'float', 'static', 'void', 'private', 'boolean', 'protected', + 'public', 'const', 'class', 'final', 'abstract', 'volatile', + 'enum', 'transient', 'interface' + ] + , 'statements': [ + 'this', 'extends', 'if', 'do', 'while', 'try', 'catch', 'finally', + 'throw', 'throws', 'else', 'for', 'switch', 'continue', 'implements', + 'break', 'case', 'default', 'goto' + ] + , 'keywords': [ + 'new', 'return', 'import', 'native', 'super', 'package', 'assert', 'synchronized', + 'instanceof', 'strictfp' + ] + } + , 'OPERATORS': [ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' + ] + , 'DELIMITERS': [ + '(', ')', '[', ']', '{', '}' + ] + , 'REGEXPS': { + 'precompiler': { + 'search': '()(#[^\r\n]*)()' + , 'class': 'precompiler' + , 'modifiers': 'g' + , 'execute': 'before' + } + } + , 'STYLES': { + 'COMMENTS': 'color: #AAAAAA;' + , 'QUOTESMARKS': 'color: #6381F8;' + , 'KEYWORDS': { + 'constants': 'color: #EE0000;' + , 'types': 'color: #0000EE;' + , 'statements': 'color: #60CA00;' + , 'keywords': 'color: #48BDDF;' + } + , 'OPERATORS': 'color: #FF00FF;' + , 'DELIMITERS': 'color: #0038E1;' + , 'REGEXPS': { + 'precompiler': 'color: #009900;' + , 'precompilerstring': 'color: #994400;' + } + } +}; diff --git a/public/js/reg_syntax/js.js b/public/js/reg_syntax/js.js new file mode 100755 index 0000000..cf7533a --- /dev/null +++ b/public/js/reg_syntax/js.js @@ -0,0 +1,94 @@ +editAreaLoader.load_syntax["js"] = { + 'DISPLAY_NAME' : 'Javascript' + ,'COMMENT_SINGLE' : {1 : '//'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do', + 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item', + 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void', + 'while', 'write', 'with' + ] + ,'keywords' : [ + 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false', + 'function', 'import', 'namespace', 'new', 'null', 'package', 'private', + 'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document', + // the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice + 'Link ', 'outerHeight ', 'Anchor', 'FileUpload', + 'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self', + 'arguments', 'locationbar', 'pageXoffset', 'Form', + 'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status', + 'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy', + 'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden', + 'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents', + 'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text', + 'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity', + 'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed', + 'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents', + 'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus', + 'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document', + 'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window', + 'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy' + ] + ,'functions' : [ + // common functions for Window object + 'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home', + 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove', + 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status', + 'stop' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'statements' : 'color: #60CA00;' + ,'keywords' : 'color: #48BDDF;' + ,'functions' : 'color: #2B60FF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #0038E1;' + + } + ,'AUTO_COMPLETION' : { + "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file + "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| + ,"possible_words_letters": "[a-zA-Z0-9_]+" + ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" + ,"prefix_separator": "\\." + } + ,"CASE_SENSITIVE": true + ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position + ,"KEYWORDS": { + '': [ // the prefix of thoses items + /** + * 0 : the keyword the user is typing + * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous ) + * If empty the keyword will be displayed + * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed) + */ + ['Array', '§()', ''] + ,['alert', '§({@})', 'alert(String message)'] + ,['document'] + ,['window'] + ] + ,'window' : [ + ['location'] + ,['document'] + ,['scrollTo', 'scrollTo({@})', 'scrollTo(Int x,Int y)'] + ] + ,'location' : [ + ['href'] + ] + } + } + } +}; diff --git a/public/js/reg_syntax/pas.js b/public/js/reg_syntax/pas.js new file mode 100755 index 0000000..0efaed9 --- /dev/null +++ b/public/js/reg_syntax/pas.js @@ -0,0 +1,83 @@ +editAreaLoader.load_syntax["pas"] = { + 'DISPLAY_NAME' : 'Pascal' + ,'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {'{' : '}', '(*':'*)'} + ,'QUOTEMARKS' : {1: '"', 2: "'"} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'constants' : [ + 'Blink', 'Black', 'Blue', 'Green', 'Cyan', 'Red', + 'Magenta', 'Brown', 'LightGray', 'DarkGray', + 'LightBlue', 'LightGreen', 'LightCyan', 'LightRed', + 'LightMagenta', 'Yellow', 'White', 'MaxSIntValue', + 'MaxUIntValue', 'maxint', 'maxLongint', 'maxSmallint', + 'erroraddr', 'errorcode', 'LineEnding' + ] + ,'keywords' : [ + 'in', 'or', 'div', 'mod', 'and', 'shl', 'shr', 'xor', + 'pow', 'is', 'not','Absolute', 'And_then', 'Array', + 'Begin', 'Bindable', 'Case', 'Const', 'Do', 'Downto', + 'Else', 'End', 'Export', 'File', 'For', 'Function', + 'Goto', 'If', 'Import', 'Implementation', 'Inherited', + 'Inline', 'Interface', 'Label', 'Module', 'Nil', + 'Object', 'Of', 'Only', 'Operator', 'Or_else', + 'Otherwise', 'Packed', 'Procedure', 'Program', + 'Protected', 'Qualified', 'Record', 'Repeat', + 'Restricted', 'Set', 'Then', 'To', 'Type', 'Unit', + 'Until', 'Uses', 'Value', 'Var', 'Virtual', 'While', + 'With' + ] + ,'functions' : [ + 'Abs', 'Addr', 'Append', 'Arctan', 'Assert', 'Assign', + 'Assigned', 'BinStr', 'Blockread', 'Blockwrite', + 'Break', 'Chdir', 'Chr', 'Close', 'CompareByte', + 'CompareChar', 'CompareDWord', 'CompareWord', 'Concat', + 'Continue', 'Copy', 'Cos', 'CSeg', 'Dec', 'Delete', + 'Dispose', 'DSeg', 'Eof', 'Eoln', 'Erase', 'Exclude', + 'Exit', 'Exp', 'Filepos', 'Filesize', 'FillByte', + 'Fillchar', 'FillDWord', 'Fillword', 'Flush', 'Frac', + 'Freemem', 'Getdir', 'Getmem', 'GetMemoryManager', + 'Halt', 'HexStr', 'Hi', 'High', 'Inc', 'Include', + 'IndexByte', 'IndexChar', 'IndexDWord', 'IndexWord', + 'Insert', 'IsMemoryManagerSet', 'Int', 'IOresult', + 'Length', 'Ln', 'Lo', 'LongJmp', 'Low', 'Lowercase', + 'Mark', 'Maxavail', 'Memavail', 'Mkdir', 'Move', + 'MoveChar0', 'New', 'Odd', 'OctStr', 'Ofs', 'Ord', + 'Paramcount', 'Paramstr', 'Pi', 'Pos', 'Power', 'Pred', + 'Ptr', 'Random', 'Randomize', 'Read', 'Readln', + 'Real2Double', 'Release', 'Rename', 'Reset', 'Rewrite', + 'Rmdir', 'Round', 'Runerror', 'Seek', 'SeekEof', + 'SeekEoln', 'Seg', 'SetMemoryManager', 'SetJmp', + 'SetLength', 'SetString', 'SetTextBuf', 'Sin', 'SizeOf', + 'Sptr', 'Sqr', 'Sqrt', 'SSeg', 'Str', 'StringOfChar', + 'Succ', 'Swap', 'Trunc', 'Truncate', 'Upcase', 'Val', + 'Write', 'WriteLn' + ] + ,'types' : [ + 'Integer', 'Shortint', 'SmallInt', 'Longint', + 'Longword', 'Int64', 'Byte', 'Word', 'Cardinal', + 'QWord', 'Boolean', 'ByteBool', 'LongBool', 'Char', + 'Real', 'Single', 'Double', 'Extended', 'Comp', + 'String', 'ShortString', 'AnsiString', 'PChar' + ] + } + ,'OPERATORS' :[ + '@', '*', '+', '-', '/', '^', ':=', '<', '=', '>' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + 'specials' : 'color: #EE0000;' + ,'constants' : 'color: #654321;' + ,'keywords' : 'color: #48BDDF;' + ,'functions' : 'color: #449922;' + ,'types' : 'color: #2B60FF;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #60CA00;' + } +}; diff --git a/public/js/reg_syntax/perl.js b/public/js/reg_syntax/perl.js new file mode 100755 index 0000000..d9cc0b6 --- /dev/null +++ b/public/js/reg_syntax/perl.js @@ -0,0 +1,88 @@ +/*************************************************************************** + * (c) 2008 - file created by Christoph Pinkel, MTC Infomedia OHG. + * + * You may choose any license of the current release or any future release + * of editarea to use, modify and/or redistribute this file. + * + * This language specification file supports for syntax checking on + * a large subset of Perl 5.x. + * The basic common syntax of Perl is fully supported, but as for + * the highlighting of built-in operations, it's mainly designed + * to support for hightlighting Perl code in a Safe environment (compartment) + * as used by CoMaNet for evaluation of administrative scripts. This Safe + * compartment basically allows for all of Opcode's :default operations, + * but little others. See http://perldoc.perl.org/Opcode.html to learn + * more. + ***************************************************************************/ + +editAreaLoader.load_syntax["perl"] = { + 'DISPLAY_NAME' : 'Perl', + 'COMMENT_SINGLE' : {1 : '#'}, + 'QUOTEMARKS' : {1: "'", 2: '"'}, + 'KEYWORD_CASE_SENSITIVE' : true, + 'KEYWORDS' : + { + 'core' : + [ "if", "else", "elsif", "while", "for", "each", "foreach", + "next", "last", "goto", "exists", "delete", "undef", + "my", "our", "local", "use", "require", "package", "keys", "values", + "sub", "bless", "ref", "return" ], + 'functions' : + [ + //from :base_core + "int", "hex", "oct", "abs", "substr", "vec", "study", "pos", + "length", "index", "rindex", "ord", "chr", "ucfirst", "lcfirst", + "uc", "lc", "quotemeta", "chop", "chomp", "split", "list", "splice", + "push", "pop", "shift", "unshift", "reverse", "and", "or", "dor", + "xor", "warn", "die", "prototype", + //from :base_mem + "concat", "repeat", "join", "range", + //none from :base_loop, as we'll see them as basic statements... + //from :base_orig + "sprintf", "crypt", "tie", "untie", "select", "localtime", "gmtime", + //others + "print", "open", "close" + ] + }, + 'OPERATORS' : + [ '+', '-', '/', '*', '=', '<', '>', '!', '||', '.', '&&', + ' eq ', ' ne ', '=~' ], + 'DELIMITERS' : + [ '(', ')', '[', ']', '{', '}' ], + 'REGEXPS' : + { + 'packagedecl' : { 'search': '(package )([^ \r\n\t#;]*)()', + 'class' : 'scopingnames', + 'modifiers' : 'g', 'execute' : 'before' }, + 'subdecl' : { 'search': '(sub )([^ \r\n\t#]*)()', + 'class' : 'scopingnames', + 'modifiers' : 'g', 'execute' : 'before' }, + 'scalars' : { 'search': '()(\\\$[a-zA-Z0-9_:]*)()', + 'class' : 'vars', + 'modifiers' : 'g', 'execute' : 'after' }, + 'arrays' : { 'search': '()(@[a-zA-Z0-9_:]*)()', + 'class' : 'vars', + 'modifiers' : 'g', 'execute' : 'after' }, + 'hashs' : { 'search': '()(%[a-zA-Z0-9_:]*)()', + 'class' : 'vars', + 'modifiers' : 'g', 'execute' : 'after' }, + }, + + 'STYLES' : + { + 'COMMENTS': 'color: #AAAAAA;', + 'QUOTESMARKS': 'color: #DC0000;', + 'KEYWORDS' : + { + 'core' : 'color: #8aca00;', + 'functions' : 'color: #2B60FF;' + }, + 'OPERATORS' : 'color: #8aca00;', + 'DELIMITERS' : 'color: #0038E1;', + 'REGEXPS': + { + 'scopingnames' : 'color: #ff0000;', + 'vars' : 'color: #00aaaa;', + } + } //'STYLES' +}; diff --git a/public/js/reg_syntax/php.js b/public/js/reg_syntax/php.js new file mode 100755 index 0000000..1d35ddb --- /dev/null +++ b/public/js/reg_syntax/php.js @@ -0,0 +1,157 @@ +editAreaLoader.load_syntax["php"] = { + 'DISPLAY_NAME' : 'Php' + ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'include', 'require', 'include_once', 'require_once', + 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', + 'endif', 'switch', 'case', 'endswitch', + 'return', 'break', 'continue' + ] + ,'reserved' : [ + '_GET', '_POST', '_SESSION', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST', + 'null', '__LINE__', '__FILE__', + 'false', '<?php', '?>', '<?', + '<script language', '</script>', + 'true', 'var', 'default', + 'function', 'class', 'new', '&new', 'this', + '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION', + 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR', + 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR', + 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT', + 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE', + 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR', + 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL' + + ] + ,'functions' : [ + 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined', + 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions', + 'extension_loaded', 'get_extension_funcs', 'debug_backtrace', + 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv', + 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime', + 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar', + 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown', + 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate', + 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode', + 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat', + 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from', + 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport', + 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die' + + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + // highlight all variables ($...) + 'variables' : { + 'search' : '()(\\$\\w+)()' + ,'class' : 'variables' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #879EFA;' + ,'KEYWORDS' : { + 'reserved' : 'color: #48BDDF;' + ,'functions' : 'color: #0040FD;' + ,'statements' : 'color: #60CA00;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #2B60FF;' + ,'REGEXPS' : { + 'variables' : 'color: #E0BD54;' + } + } + ,'AUTO_COMPLETION' : { + "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file + "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| + ,"possible_words_letters": "[a-zA-Z0-9_\$]+" + ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" + ,"prefix_separator": "\\-\\>|\\:\\:" + } + ,"CASE_SENSITIVE": true + ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position + ,"KEYWORDS": { + '': [ // the prefix of thoses items + /** + * 0 : the keyword the user is typing + * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous ) + * If empty the keyword will be displayed + * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed) + */ + ['$_POST'] + ,['$_GET'] + ,['$_SESSION'] + ,['$_SERVER'] + ,['$_FILES'] + ,['$_ENV'] + ,['$_COOKIE'] + ,['$_REQUEST'] + // magic methods + ,['__construct', '§( {@} )'] + ,['__destruct', '§( {@} )'] + ,['__sleep', '§( {@} )'] + ,['__wakeup', '§( {@} )'] + ,['__toString', '§( {@} )'] + // include + ,['include', '§ "{@}";'] + ,['include_once', '§ "{@}";'] + ,['require', '§ "{@}";'] + ,['require_once', '§ "{@}";'] + // statements + ,['for', '§( {@} )'] + ,['foreach', '§( {@} )'] + ,['if', '§( {@} )'] + ,['elseif', '§( {@} )'] + ,['while', '§( {@} )'] + ,['switch', '§( {@} )'] + ,['break'] + ,['case'] + ,['continue'] + ,['do'] + ,['else'] + ,['endif'] + ,['endswitch'] + ,['endwhile'] + ,['return'] + // function + ,['unset', '§( {@} )'] + ] + } + } + ,"live": { + + // class NAME: /class\W+([a-z]+)\W+/gi + // method: /^(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi + // static: /^(public|private|protected)?\s+static\s+(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi + // attributes: /(\$this\-\>|(?:var|public|protected|private)\W+\$)([a-z0-9\_]+)(?!\()\b/gi + // v1 : /(\$this\-\>|var\W+|public\W+|protected\W+|private\W+)([a-z0-9\_]+)\W*(=|;)/gi + // var type: /(\$(this\-\>)?[a-z0-9\_]+)\s*\=\s*new\s+([a-z0-9\_])+/gi + + + "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| + ,"possible_words_letters": "[a-zA-Z0-9_\$]+" + ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" + ,"prefix_separator": "\\-\\>" + } + ,"CASE_SENSITIVE": true + ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position + ,"KEYWORDS": { + '$this': [ // the prefix of thoses items + ['test'] + ] + } + } + } +}; diff --git a/public/js/reg_syntax/python.js b/public/js/reg_syntax/python.js new file mode 100755 index 0000000..1a5e7fb --- /dev/null +++ b/public/js/reg_syntax/python.js @@ -0,0 +1,145 @@ +/** + * Python syntax v 1.1 + * + * v1.1 by Andre Roberge (2006/12/27) + * +**/ +editAreaLoader.load_syntax["python"] = { + 'DISPLAY_NAME' : 'Python' + ,'COMMENT_SINGLE' : {1 : '#'} + ,'COMMENT_MULTI' : {} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + /* + ** Set 1: reserved words + ** http://python.org/doc/current/ref/keywords.html + ** Note: 'as' and 'with' have been added starting with Python 2.5 + */ + 'reserved' : [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', + 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', + 'import', 'is', 'in', 'lambda', 'not', 'or', 'pass', 'print', 'raise', + 'return', 'try', 'while', 'with', 'yield' + //the following are *almost* reserved; we'll treat them as such + , 'False', 'True', 'None' + ] + /* + ** Set 2: builtins + ** http://python.org/doc/current/lib/built-in-funcs.html + */ + ,'builtins' : [ + '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp', + 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', + 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', + 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals', + 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', + 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', + 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', + 'vars', 'xrange', 'zip', + // Built-in constants: http://www.python.org/doc/2.4.1/lib/node35.html + //'False', 'True', 'None' have been included in 'reserved' + 'NotImplemented', 'Ellipsis', + // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html + 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError', + 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError', + 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError', + 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError', + 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', + 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError', + 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning', + 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning', + 'RuntimeWarning', 'FutureWarning', + // we will include the string methods as well + // http://python.org/doc/current/lib/string-methods.html + 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', + 'find', 'index', 'isalnum', 'isaplpha', 'isdigit', 'islower', 'isspace', 'istitle', + 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', + 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', + 'translate', 'upper', 'zfill' + ] + /* + ** Set 3: standard library + ** http://python.org/doc/current/lib/modindex.html + */ + ,'stdlib' : [ + '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm', + 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer', + 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi', + 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop', + 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler', + 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt', + 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE', + 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm', + 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl', + 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl', + 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob', + 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib', + 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect', + 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap', + 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify', + 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator', + 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes', + 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile', + 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random', + 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter', + 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve', + 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd', + 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string', + 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev', + 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios', + 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token', + 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2', + 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings', + 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml', + 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib' + + ] + /* + ** Set 4: special methods + ** http://python.org/doc/current/ref/specialnames.html + */ + ,'special' : [ + // Basic customization: http://python.org/doc/current/ref/customization.html + '__new__', '__init__', '__del__', '__repr__', '__str__', + '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__', + '__hash__', '__nonzero__', '__unicode__', '__dict__', + // Attribute access: http://python.org/doc/current/ref/attribute-access.html + '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__', + '__delete__', '__slots__', + // Class creation, callable objects + '__metaclass__', '__call__', + // Container types: http://python.org/doc/current/ref/sequence-types.html + '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__', + '__getslice__', '__setslice__', '__delslice__', + // Numeric types: http://python.org/doc/current/ref/numeric-types.html + '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__', + '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__', + '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__', + '__long__','__lshift__', + '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__', + '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__', + '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__', + '__sub__','__xor__' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #660066;' + ,'KEYWORDS' : { + 'reserved' : 'color: #0000FF;' + ,'builtins' : 'color: #009900;' + ,'stdlib' : 'color: #009900;' + ,'special': 'color: #006666;' + } + ,'OPERATORS' : 'color: #993300;' + ,'DELIMITERS' : 'color: #993300;' + + } +}; diff --git a/public/js/reg_syntax/robotstxt.js b/public/js/reg_syntax/robotstxt.js new file mode 100755 index 0000000..9b141f0 --- /dev/null +++ b/public/js/reg_syntax/robotstxt.js @@ -0,0 +1,25 @@ +editAreaLoader.load_syntax["robotstxt"] = { + 'DISPLAY_NAME' : 'Robots txt', + 'COMMENT_SINGLE' : {1 : '#'}, + 'COMMENT_MULTI' : {}, + 'QUOTEMARKS' : [], + 'KEYWORD_CASE_SENSITIVE' : false, + 'KEYWORDS' : { + 'attributes' : ['User-agent', 'Disallow', 'Allow', 'Crawl-delay'], + 'values' : ['*'], + 'specials' : ['*'] + }, + 'OPERATORS' :[':'], + 'DELIMITERS' :[], + 'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;', + 'QUOTESMARKS': 'color: #6381F8;', + 'KEYWORDS' : { + 'attributes' : 'color: #48BDDF;', + 'values' : 'color: #2B60FF;', + 'specials' : 'color: #FF0000;' + }, + 'OPERATORS' : 'color: #FF00FF;', + 'DELIMITERS' : 'color: #60CA00;' + } +}; diff --git a/public/js/reg_syntax/ruby.js b/public/js/reg_syntax/ruby.js new file mode 100755 index 0000000..bca0140 --- /dev/null +++ b/public/js/reg_syntax/ruby.js @@ -0,0 +1,68 @@ +/** + * Ruby syntax v 1.0 + * + * v1.0 by Patrice De Saint Steban (2007/01/03) + * +**/ +editAreaLoader.load_syntax["ruby"] = { + 'DISPLAY_NAME' : 'Ruby' + ,'COMMENT_SINGLE' : {1 : '#'} + ,'COMMENT_MULTI' : {} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : true + ,'KEYWORDS' : { + 'reserved' : [ + 'alias', 'and', 'BEGIN', 'begin', 'break', 'case', 'class', 'def', 'defined', 'do', 'else', + 'elsif', 'END', 'end', 'ensure', 'false', 'for', 'if', + 'in', 'module', 'next', 'not', 'or', 'redo', 'rescue', 'retry', + 'return', 'self', 'super', 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + 'constants' : { + 'search' : '()([A-Z]\\w*)()' + ,'class' : 'constants' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'variables' : { + 'search' : '()([\$\@\%]+\\w+)()' + ,'class' : 'variables' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'numbers' : { + 'search' : '()(-?[0-9]+)()' + ,'class' : 'numbers' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + ,'symbols' : { + 'search' : '()(:\\w+)()' + ,'class' : 'symbols' + ,'modifiers' : 'g' + ,'execute' : 'before' + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #660066;' + ,'KEYWORDS' : { + 'reserved' : 'font-weight: bold; color: #0000FF;' + } + ,'OPERATORS' : 'color: #993300;' + ,'DELIMITERS' : 'color: #993300;' + ,'REGEXPS' : { + 'variables' : 'color: #E0BD54;' + ,'numbers' : 'color: green;' + ,'constants' : 'color: #00AA00;' + ,'symbols' : 'color: #879EFA;' + } + } +}; diff --git a/public/js/reg_syntax/sql.js b/public/js/reg_syntax/sql.js new file mode 100755 index 0000000..118ad5b --- /dev/null +++ b/public/js/reg_syntax/sql.js @@ -0,0 +1,56 @@ +editAreaLoader.load_syntax["sql"] = { + 'DISPLAY_NAME' : 'SQL' + ,'COMMENT_SINGLE' : {1 : '--'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'", 2: '"', 3: '`'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'select', 'SELECT', 'where', 'order', 'by', + 'insert', 'from', 'update', 'grant', 'left join', 'right join', + 'union', 'group', 'having', 'limit', 'alter', 'LIKE','IN','CASE' + ] + ,'reserved' : [ + 'null', 'enum', 'int', 'boolean', 'add', 'varchar' + + ] + ,'functions' : [ + 'ABS','ACOS','ADDDATE','ADDTIME','AES_DECRYPT','AES_ENCRYPT','ASCII','ASIN','ATAN2 ATAN','ATAN','AVG','BENCHMARK','DISTINCT','BIN','BIT_AND','BIT_COUNT','BIT_LENGTH','BIT_OR','BIT_XOR','CAST','CEILING CEIL','CHAR_LENGTH','CHAR', +'CHARACTER_LENGTH','CHARSET','COALESCE','COERCIBILITY','COLLATION','COMPRESS','CONCAT_WS','CONCAT','CONNECTION_ID','CONV','CONVERT_TZ','COS','COT','COUNT','CRC32','CURDATE','CURRENT_DATE','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER','CURTIME','DATABASE','DATE_ADD','DATE_FORMAT','DATE_SUB','DATE','DATEDIFF','DAY','DAYNAME','DAYOFMONTH', +'DAYOFWEEK','DAYOFYEAR','DECODE','DEFAULT','DEGREES','DES_DECRYPT','DES_ENCRYPT','ELT','ENCODE','ENCRYPT','EXP','EXPORT_SET','EXTRACT','FIELD','FIND_IN_SET','FLOOR','FORMAT','FOUND_ROWS','FROM_DAYS','FROM_UNIXTIME','GET_FORMAT','GET_LOCK','GREATEST','GROUP_CONCAT','HEX','HOUR','IF','IFNULL','INET_ATON','INET_NTOA', +'INSERT','INSTR','INTERVAL','IS_FREE_LOCK','IS_USED_LOCK','ISNULL','LAST_DAY','LAST_INSERT_ID','LCASE','LEAST','LEFT','LENGTH','LN','LOAD_FILE','LOCALTIME','LOCALTIMESTAMP','LOCATE','LOG10','LOG2','LOG','LOWER','LPAD','LTRIM','MAKE_SET','MAKEDATE','MAKETIME','MASTER_POS_WAIT','MAX','MD5','MICROSECOND', +'MID','MIN','MINUTE','MOD','MONTH','MONTHNAME','NOW','NULLIF','OCT','OCTET_LENGTH','OLD_PASSWORD','ORD','PASSWORD','PERIOD_ADD','PERIOD_DIFF','PI','POSITION','POW','POWER','PROCEDURE ANALYSE','QUARTER','QUOTE','RADIANS','RAND','RELEASE_LOCK','REPEAT','REPLACE','REVERSE','RIGHT','ROUND', +'RPAD','RTRIM','SEC_TO_TIME','SECOND','SESSION_USER','SHA1','SHA','SIGN','SIN','SOUNDEX','SOUNDS LIKE','SPACE','SQRT','STD','STDDEV','STR_TO_DATE','STRCMP','SUBDATE','SUBSTRING_INDEX','SUBSTRING','SUBSTR','SUBTIME','SUM','SYSDATE','SYSTEM_USER','TAN','TIME_FORMAT','TIME_TO_SEC','TIME','TIMEDIFF', +'TIMESTAMP','TO_DAYS','TRIM','TRUNCATE','UCASE','UNCOMPRESS','UNCOMPRESSED_LENGTH','UNHEX','UNIX_TIMESTAMP','UPPER','USER','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','UUID','VALUES','VARIANCE','WEEK','WEEKDAY','WEEKOFYEAR','YEAR','YEARWEEK' + ] + } + ,'OPERATORS' :[ + 'AND','&&','BETWEEN','BINARY','&','|','^','/','DIV','<=>','=','>=','>','<<','>>','IS','NULL','<=','<','-','%','!=','<>','!','||','OR','+','REGEXP','RLIKE','XOR','~','*' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + // highlight all variables (@...) + 'variables' : { + 'search' : '()(\\@\\w+)()' + ,'class' : 'variables' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #879EFA;' + ,'KEYWORDS' : { + 'reserved' : 'color: #48BDDF;' + ,'functions' : 'color: #0040FD;' + ,'statements' : 'color: #60CA00;' + } + ,'OPERATORS' : 'color: #FF00FF;' + ,'DELIMITERS' : 'color: #2B60FF;' + ,'REGEXPS' : { + 'variables' : 'color: #E0BD54;' + } + } +}; diff --git a/public/js/reg_syntax/tsql.js b/public/js/reg_syntax/tsql.js new file mode 100755 index 0000000..868567d --- /dev/null +++ b/public/js/reg_syntax/tsql.js @@ -0,0 +1,88 @@ +editAreaLoader.load_syntax["tsql"] = { + 'DISPLAY_NAME' : 'T-SQL' + ,'COMMENT_SINGLE' : {1 : '--'} + ,'COMMENT_MULTI' : {'/*' : '*/'} + ,'QUOTEMARKS' : {1: "'" } + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements': [ + 'ADD', 'EXCEPT', 'PERCENT', 'EXEC', 'PLAN', 'ALTER', 'EXECUTE', 'PRECISION', + 'PRIMARY', 'EXIT', 'PRINT', 'AS', 'FETCH', 'PROC', 'ASC', + 'FILE', 'PROCEDURE', 'AUTHORIZATION', 'FILLFACTOR', 'PUBLIC', 'BACKUP', 'FOR', 'RAISERROR', + 'BEGIN', 'FOREIGN', 'READ', 'FREETEXT', 'READTEXT', 'BREAK', 'FREETEXTTABLE', + 'RECONFIGURE', 'BROWSE', 'FROM', 'REFERENCES', 'BULK', 'FULL', 'REPLICATION', 'BY', + 'FUNCTION', 'RESTORE', 'CASCADE', 'GOTO', 'RESTRICT', 'CASE', 'GRANT', 'RETURN', + 'CHECK', 'GROUP', 'REVOKE', 'CHECKPOINT', 'HAVING', 'RIGHT', 'CLOSE', 'HOLDLOCK', 'ROLLBACK', + 'CLUSTERED', 'IDENTITY', 'ROWCOUNT', 'IDENTITY_INSERT', 'ROWGUIDCOL', 'COLLATE', + 'IDENTITYCOL', 'RULE', 'COLUMN', 'IF', 'SAVE', 'COMMIT', 'SCHEMA', 'COMPUTE', 'INDEX', + 'SELECT', 'CONSTRAINT', 'CONTAINS', 'INSERT', 'SET', + 'CONTAINSTABLE', 'INTERSECT', 'SETUSER', 'CONTINUE', 'INTO', 'SHUTDOWN', 'SOME', + 'CREATE', 'STATISTICS', 'KEY', 'CURRENT', 'KILL', 'TABLE', + 'CURRENT_DATE', 'TEXTSIZE', 'CURRENT_TIME', 'THEN', 'LINENO', + 'TO', 'LOAD', 'TOP', 'CURSOR', 'NATIONAL', 'TRAN', 'DATABASE', 'NOCHECK', + 'TRANSACTION', 'DBCC', 'NONCLUSTERED', 'TRIGGER', 'DEALLOCATE', 'TRUNCATE', + 'DECLARE', 'TSEQUAL', 'DEFAULT', 'UNION', 'DELETE', 'OF', 'UNIQUE', + 'DENY', 'OFF', 'UPDATE', 'DESC', 'OFFSETS', 'UPDATETEXT', 'DISK', 'ON', 'USE', 'DISTINCT', 'OPEN', + 'DISTRIBUTED', 'OPENDATASOURCE', 'VALUES', 'DOUBLE', 'OPENQUERY', 'VARYING', 'DROP', + 'OPENROWSET', 'VIEW', 'DUMMY', 'OPENXML', 'WAITFOR', 'DUMP', 'OPTION', 'WHEN', 'ELSE', 'WHERE', + 'END', 'ORDER', 'WHILE', 'ERRLVL', 'WITH', 'ESCAPE', 'OVER', 'WRITETEXT' + ], + 'functions': [ + 'COALESCE', 'SESSION_USER', 'CONVERT', 'SYSTEM_USER', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'NULLIF', 'USER', + 'AVG', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG', 'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'GROUPING', 'VARP', 'MAX', + '@@DATEFIRST', '@@OPTIONS', '@@DBTS', '@@REMSERVER', '@@LANGID', '@@SERVERNAME', '@@LANGUAGE', '@@SERVICENAME', '@@LOCK_TIMEOUT', + '@@SPID', '@@MAX_CONNECTIONS', '@@TEXTSIZE', '@@MAX_PRECISION', '@@VERSION', '@@NESTLEVEL', + '@@CURSOR_ROWS', 'CURSOR_STATUS', '@@FETCH_STATUS', + 'DATEADD', 'DATEDIFF', 'DATENAME', 'DATEPART', 'DAY', 'GETDATE', 'GETUTCDATE', 'MONTH', 'YEAR', + 'ABS', 'DEGREES', 'RAND', 'ACOS', 'EXP', 'ROUND', 'ASIN', 'FLOOR', 'SIGN', 'ATAN', 'LOG', 'SIN', 'ATN2', 'LOG10', 'SQRT', + 'CEILING', 'PI ', 'SQUARE', 'COS', 'POWER', 'TAN', 'COT', 'RADIANS', + '@@PROCID', 'COL_LENGTH', 'FULLTEXTCATALOGPROPERTY', 'COL_NAME', 'FULLTEXTSERVICEPROPERTY', 'COLUMNPROPERTY', 'INDEX_COL', + 'DATABASEPROPERTY', 'INDEXKEY_PROPERTY', 'DATABASEPROPERTYEX', 'INDEXPROPERTY', 'DB_ID', 'OBJECT_ID', 'DB_NAME', 'OBJECT_NAME', + 'FILE_ID', 'OBJECTPROPERTY', 'OBJECTPROPERTYEX', 'FILE_NAME', 'SQL_VARIANT_PROPERTY', 'FILEGROUP_ID', 'FILEGROUP_NAME', + 'FILEGROUPPROPERTY', 'TYPEPROPERTY', 'FILEPROPERTY', + 'CURRENT_USER', 'SUSER_ID', 'SUSER_SID', 'IS_MEMBER', 'SUSER_SNAME', 'IS_SRVROLEMEMBER', 'PERMISSIONS', 'SYSTEM_USER', + 'SUSER_NAME', 'USER_ID', 'SESSION_USER', 'USER_NAME', 'ASCII', 'SOUNDEX', 'PATINDEX', 'SPACE', 'CHARINDEX', 'QUOTENAME', + 'STR', 'DIFFERENCE', 'REPLACE', 'STUFF', 'REPLICATE', 'SUBSTRING', 'LEN', 'REVERSE', 'UNICODE', 'LOWER', + 'UPPER', 'LTRIM', 'RTRIM', 'APP_NAME', 'CAST', 'CONVERT', 'COALESCE', 'COLLATIONPROPERTY', 'COLUMNS_UPDATED', 'CURRENT_TIMESTAMP', + 'CURRENT_USER', 'DATALENGTH', '@@ERROR', 'FORMATMESSAGE', 'GETANSINULL', 'HOST_ID', 'HOST_NAME', 'IDENT_CURRENT', 'IDENT_INCR', + 'IDENT_SEED', '@@IDENTITY', 'ISDATE', 'ISNULL', 'ISNUMERIC', 'NEWID', 'NULLIF', 'PARSENAME', '@@ROWCOUNT', + 'SCOPE_IDENTITY', 'SERVERPROPERTY', 'SESSIONPROPERTY', 'SESSION_USER', 'STATS_DATE', 'SYSTEM_USER', '@@TRANCOUNT', 'USER_NAME', + '@@CONNECTIONS', '@@PACK_RECEIVED', '@@CPU_BUSY', '@@PACK_SENT', '@@TIMETICKS', '@@IDLE', '@@TOTAL_ERRORS', '@@IO_BUSY', '@@TOTAL_READ', + '@@PACKET_ERRORS', '@@TOTAL_WRITE', 'PATINDEX', 'TEXTVALID', 'TEXTPTR' + ], + 'reserved': [ + 'RIGHT', 'INNER', 'IS', 'JOIN', 'CROSS', 'LEFT', 'NULL', 'OUTER' + ] + } + ,'OPERATORS' :[ + '+', '-', '*', '/', '%', '=', '&' ,'|', '^', '>', '<', '>=', '<=', '<>', '!=', '!<', '!>', 'ALL', 'AND', 'ANY', 'BETWEEN', 'EXISTS', 'IN', 'LIKE', 'NOT', 'OR', '~' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'REGEXPS' : { + // highlight all variables (@...) + 'variables' : { + 'search' : '()(\\@\\w+)()' + ,'class' : 'variables' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #008000;' + ,'QUOTESMARKS': 'color: #FF0000;' + ,'KEYWORDS' : { + 'reserved' : 'color: #808080;' + ,'functions' : 'color: #FF00FF;' + ,'statements' : 'color: #0000FF;' + } + ,'OPERATORS' : 'color: #808080;' + ,'DELIMITERS' : 'color: #FF8000;' + ,'REGEXPS' : { + 'variables' : 'color: #E0BD54;' + } + } +}; + + diff --git a/public/js/reg_syntax/vb.js b/public/js/reg_syntax/vb.js new file mode 100755 index 0000000..c831300 --- /dev/null +++ b/public/js/reg_syntax/vb.js @@ -0,0 +1,53 @@ +editAreaLoader.load_syntax["vb"] = { + 'DISPLAY_NAME' : 'Visual Basic' + ,'COMMENT_SINGLE' : {1 : "'"} + ,'COMMENT_MULTI' : { } + ,'QUOTEMARKS' : {1: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + 'statements' : [ + 'if','then','for','each','while','do','loop', + 'else','elseif','select','case','end select', + 'until','next','step','to','in','end if' + ] + ,'keywords' : [ + 'empty','isempty','nothing','null','isnull','true','false', + 'set','call', + 'sub','end sub','function','end function','exit','exit function', + 'dim','Mod','In','private','public','shared','const' + ] + + ,'functions' : [ + 'CDate','Date','DateAdd','DateDiff','DatePart','DateSerial','DateValue','Day','FormatDateTime', + 'Hour','IsDate','Minute','Month', + 'MonthName','Now','Second','Time','Timer','TimeSerial','TimeValue','Weekday','WeekdayName ','Year', + 'Asc','CBool','CByte','CCur','CDate','CDbl','Chr','CInt','CLng','CSng','CStr','Hex','Oct','FormatCurrency', + 'FormatDateTime','FormatNumber','FormatPercent','Abs','Atn','Cos','Exp','Hex','Int','Fix','Log','Oct', + 'Rnd','Sgn','Sin','Sqr','Tan', + 'Array','Filter','IsArray','Join','LBound','Split','UBound', + 'InStr','InStrRev','LCase','Left','Len','LTrim','RTrim','Trim','Mid','Replace','Right','Space','StrComp', + 'String','StrReverse','UCase', + 'CreateObject','Eval','GetLocale','GetObject','GetRef','InputBox','IsEmpty','IsNull','IsNumeric', + 'IsObject','LoadPicture','MsgBox','RGB','Round','ScriptEngine','ScriptEngineBuildVersion','ScriptEngineMajorVersion', + 'ScriptEngineMinorVersion','SetLocale','TypeName','VarType' + ] + } + ,'OPERATORS' :[ + '+', '-', '/', '*', '=', '<', '>', '!', '&' + ] + ,'DELIMITERS' :[ + '(', ')', '[', ']', '{', '}' + ] + ,'STYLES' : { + 'COMMENTS': 'color: #99CC00;' + ,'QUOTESMARKS': 'color: #333399;' + ,'KEYWORDS' : { + 'keywords' : 'color: #3366FF;' + ,'functions' : 'color: #0000FF;' + ,'statements' : 'color: #3366FF;' + } + ,'OPERATORS' : 'color: #FF0000;' + ,'DELIMITERS' : 'color: #0000FF;' + + } +}; diff --git a/public/js/reg_syntax/xml.js b/public/js/reg_syntax/xml.js new file mode 100755 index 0000000..03f6076 --- /dev/null +++ b/public/js/reg_syntax/xml.js @@ -0,0 +1,57 @@ +/* +* last update: 2006-08-24 +*/ + +editAreaLoader.load_syntax["xml"] = { + 'DISPLAY_NAME' : 'XML' + ,'COMMENT_SINGLE' : {} + ,'COMMENT_MULTI' : {''} + ,'QUOTEMARKS' : {1: "'", 2: '"'} + ,'KEYWORD_CASE_SENSITIVE' : false + ,'KEYWORDS' : { + } + ,'OPERATORS' :[ + ] + ,'DELIMITERS' :[ + ] + ,'REGEXPS' : { + 'xml' : { + 'search' : '()(<\\?[^>]*?\\?>)()' + ,'class' : 'xml' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + ,'cdatas' : { + 'search' : '()()()' + ,'class' : 'cdata' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + ,'tags' : { + 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' + ,'class' : 'tags' + ,'modifiers' : 'gi' + ,'execute' : 'before' // before or after + } + ,'attributes' : { + 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' + ,'class' : 'attributes' + ,'modifiers' : 'g' + ,'execute' : 'before' // before or after + } + } + ,'STYLES' : { + 'COMMENTS': 'color: #AAAAAA;' + ,'QUOTESMARKS': 'color: #6381F8;' + ,'KEYWORDS' : { + } + ,'OPERATORS' : 'color: #E775F0;' + ,'DELIMITERS' : '' + ,'REGEXPS' : { + 'attributes': 'color: #B1AC41;' + ,'tags': 'color: #E62253;' + ,'xml': 'color: #8DCFB5;' + ,'cdata': 'color: #50B020;' + } + } +}; diff --git a/views/rcpcrt.erb b/views/rcpcrt.erb new file mode 100644 index 0000000..4240a5d --- /dev/null +++ b/views/rcpcrt.erb @@ -0,0 +1,36 @@ +<%= erb :header %> + + + <% unless @error_data.nil? %> +
+ +
+ <% end %> +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+<%= erb :footer %> \ No newline at end of file