applyEditorPreferences(); if ($this->formField->disabled) { $this->readOnly = true; } $this->fillFromConfig([ 'language', 'showGutter', 'wordWrap', 'codeFolding', 'autoClosing', 'useSoftTabs', 'tabSize', 'fontSize', 'margin', 'scrollPastEnd', 'theme', 'showInvisibles', 'highlightActiveLine', 'readOnly', 'displayIndentGuides', 'showPrintMargin', 'showMinimap', 'bracketColors', 'showColors', ]); } /** * @inheritDoc */ public function render() { $this->prepareVars(); return $this->makePartial('codeeditor'); } /** * Prepares the widget data */ public function prepareVars() { $this->vars['fontSize'] = $this->fontSize; $this->vars['wordWrap'] = $this->wordWrap; $this->vars['codeFolding'] = $this->codeFolding; $this->vars['autoClosing'] = $this->autoClosing; $this->vars['tabSize'] = $this->tabSize; $this->vars['theme'] = $this->theme; $this->vars['showInvisibles'] = $this->showInvisibles; $this->vars['highlightActiveLine'] = $this->highlightActiveLine; $this->vars['useSoftTabs'] = $this->useSoftTabs; $this->vars['showGutter'] = $this->showGutter; $this->vars['language'] = $this->language; $this->vars['margin'] = $this->margin; $this->vars['scrollPastEnd'] = $this->scrollPastEnd; $this->vars['stretch'] = $this->formField->stretch; $this->vars['size'] = $this->formField->size; $this->vars['readOnly'] = $this->readOnly; $this->vars['displayIndentGuides'] = $this->displayIndentGuides; $this->vars['showPrintMargin'] = $this->showPrintMargin; $this->vars['showMinimap'] = $this->showMinimap; $this->vars['bracketColors'] = $this->bracketColors; $this->vars['showColors'] = $this->showColors; // Double encode when escaping $this->vars['value'] = htmlentities($this->getLoadValue(), ENT_QUOTES, 'UTF-8', true); $this->vars['name'] = $this->getFieldName(); } /** * @inheritDoc */ protected function loadAssets() { $this->addCss('css/codeeditor.css', 'core'); $this->addJs('js/build/codeeditor.bundle.js', 'core'); } /** * Looks at the user preferences and overrides any set values. * @return void */ protected function applyEditorPreferences() { // Load the editor system settings $preferences = BackendPreference::instance(); $this->fontSize = $preferences->editor_font_size; $this->wordWrap = $preferences->editor_word_wrap; $this->codeFolding = $preferences->editor_enable_folding ?? ($preferences->editor_code_folding !== 'manual'); $this->autoClosing = $preferences->editor_auto_closing; $this->tabSize = $preferences->editor_tab_size; $this->theme = $preferences->editor_theme; $this->showInvisibles = $preferences->editor_show_invisibles; $this->highlightActiveLine = $preferences->editor_highlight_active_line; $this->useSoftTabs = !$preferences->editor_use_hard_tabs; $this->showGutter = $preferences->editor_show_gutter; $this->displayIndentGuides = $preferences->editor_display_indent_guides; $this->showPrintMargin = $preferences->editor_show_print_margin; $this->showMinimap = $preferences->editor_show_minimap; $this->bracketColors = $preferences->editor_bracket_colors; $this->showColors = $preferences->editor_show_colors; } }