23.06.2020
Редактор PHP кода для Битрикс24
Начинается эта история от моего знакомства с Битрикс24. Как впрочем и все самые странные истории, берут тут свое начало. Есть у него такой модуль как «Бизнес процессы», в котором офигеть сколько всего настроить можно, в том числе можно вставить свой PHP код.
Вот так выглядит крайне удобный редактор кода в самом битриксе. Не правда ли, очень удобно редактировать большие вставки кода в поле из 2 полосок?.. Ладно, оставим это другим, сами займемся решением проблемы.
Версия у нас не коробочная, облачная. Вмешиваться в код нельзя, в следствие облачной системы, получается спасет нас только UserJS. В качестве редактора остановился на codemirror, подтянул с CDN его.
И стало выглядеть вот так:
Привожу код скрипт, что бы вы могли то же пользоваться им, в коде заменить надо http://example.ru/* на адрес вашего сайта (5 срочка). Можно использовать не только для Битрикс24, но и для любых других сайтов, где нужна подсветка синтаксиса и нельзя редактировать исходный код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
// ==UserScript== // @name CodeMirror HTML Textareas On Sites // @description Instanciate a CodeMirror HTML editor for every textarea... // @author Misterzym // @match https://example.ru/* // @homepage https://net-bit.ru/redaktor-php-koda-dlya-bitriks24/ // @require http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/codemirror.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/addon/lint/lint.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/xml/xml.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/javascript/javascript.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/css/css.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/htmlmixed/htmlmixed.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/clike/clike.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/mode/php/php.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/addon/selection/active-line.js // @require https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/addon/edit/matchbrackets.js // @require https://rawgit.com/glayzzle/php-parser/master/dist/php-parser.min.js // @require https://rawgit.com/glayzzle/codemirror-linter/master/addon/lint/php-lint.js // @resource cm_css https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/codemirror.css // @resource cm_css2 https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.30.0/addon/lint/lint.css // @version 1.1 // @grant GM_addStyle // @grant GM_getResourceText // ==/UserScript== var identificatorTextarea='textarea[name="execute_code"]'; this.$ = this.jQuery = jQuery.noConflict(true); GM_addStyle(GM_getResourceText("cm_css")); GM_addStyle(GM_getResourceText("cm_css2")); GM_addStyle(".CodeMirror { border: 1px solid #eee; }"); $(function () { var timerID = setInterval(function() { $(identificatorTextarea).each(function() { if ($(this).attr("end")=="Y") return; var myEditor = CodeMirror.fromTextArea($(this)[0], { mode: "application/x-httpd-php-open", lineWrapping: true, lineNumbers: true, lint: { disableEval: true, disableExit: true, disablePHP7: true, disabledFunctions: ['proc_open', 'system'], deprecatedFunctions: ['wp_list_cats'] }, gutters: ["CodeMirror-lint-markers"], styleActiveLine: true, matchBrackets: true, indentUnit: 4 }); $(this).attr("end","Y"); myEditor.on('change', function(){ myEditor.save(); }); }); },1000); }); |