diff --git a/src/Forms/HTMLEditor/HTMLEditorConfig.php b/src/Forms/HTMLEditor/HTMLEditorConfig.php index 24b4c8e9a..27a1527aa 100644 --- a/src/Forms/HTMLEditor/HTMLEditorConfig.php +++ b/src/Forms/HTMLEditor/HTMLEditorConfig.php @@ -224,4 +224,17 @@ abstract class HTMLEditorConfig * Initialise the editor on the client side */ abstract public function init(); + + /** + * Provide additional schema data for the field this object configures + * + * @return array + */ + public function getConfigSchemaData() + { + return [ + 'attributes' => $this->getAttributes(), + 'editorjs' => null, + ]; + } } diff --git a/src/Forms/HTMLEditor/HTMLEditorField.php b/src/Forms/HTMLEditor/HTMLEditorField.php index 2d5c23ccc..9bf6096ef 100644 --- a/src/Forms/HTMLEditor/HTMLEditorField.php +++ b/src/Forms/HTMLEditor/HTMLEditorField.php @@ -3,6 +3,7 @@ namespace SilverStripe\Forms\HTMLEditor; use SilverStripe\Assets\Shortcodes\ImageShortcodeProvider; +use SilverStripe\Forms\FormField; use SilverStripe\Forms\TextareaField; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\DataObjectInterface; @@ -23,6 +24,10 @@ class HTMLEditorField extends TextareaField 'Value' => 'HTMLText', ]; + protected $schemaDataType = FormField::SCHEMA_DATA_TYPE_HTML; + + protected $schemaComponent = 'HtmlEditorField'; + /** * Use TinyMCE's GZIP compressor * @@ -185,4 +190,12 @@ class HTMLEditorField extends TextareaField $this->getEditorConfig()->init(); return parent::Field($properties); } + + public function getSchemaStateDefaults() + { + $stateDefaults = parent::getSchemaStateDefaults(); + $config = $this->getEditorConfig(); + $stateDefaults['data'] = $config->getConfigSchemaData(); + return $stateDefaults; + } } diff --git a/src/Forms/HTMLEditor/TinyMCEConfig.php b/src/Forms/HTMLEditor/TinyMCEConfig.php index c1d7d95a7..43788179d 100644 --- a/src/Forms/HTMLEditor/TinyMCEConfig.php +++ b/src/Forms/HTMLEditor/TinyMCEConfig.php @@ -713,6 +713,12 @@ class TinyMCEConfig extends HTMLEditorConfig Requirements::javascript($this->getScriptURL()); } + public function getConfigSchemaData() + { + $data = parent::getConfigSchemaData(); + $data['editorjs'] = $this->getScriptURL(); + return $data; + } /** * Get the current tinyMCE language