applyEditorPreferences(); if ($this->formField->disabled) { $this->readOnly = true; } $this->fillFromConfig([ 'language', 'showGutter', 'wordWrap', 'codeFolding', 'autoClosing', 'useSoftTabs', 'tabSize', 'fontSize', 'margin', 'theme', 'showInvisibles', 'highlightActiveLine', 'readOnly', 'autocompletion', 'enableSnippets', 'displayIndentGuides', 'showPrintMargin' ]); } /** * @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['stretch'] = $this->formField->stretch; $this->vars['size'] = $this->formField->size; $this->vars['readOnly'] = $this->readOnly; $this->vars['autocompletion'] = $this->autocompletion; $this->vars['enableSnippets'] = $this->enableSnippets; $this->vars['displayIndentGuides'] = $this->displayIndentGuides; $this->vars['showPrintMargin'] = $this->showPrintMargin; // 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-min.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_code_folding; $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->autocompletion = $preferences->editor_autocompletion; $this->enableSnippets = $preferences->editor_enable_snippets; $this->displayIndentGuides = $preferences->editor_display_indent_guides; $this->showPrintMargin = $preferences->editor_show_print_margin; } }