class CKEditor5 extends EditorBase implements ContainerFactoryPluginInterface (View source)

internal  Plugin classes are internal.
 

Defines a CKEditor 5-based text editor for Drupal.

Traits

Provides a trait for checking configuration schema.

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Provides a trait for the messenger service.

Constants

DERIVATIVE_SEPARATOR

A string which is used to separate base plugin IDs from the derivative ID.

Properties

protected string $pluginId

The plugin_id.

from  PluginBase
protected array $pluginDefinition

The plugin implementation definition.

from  PluginBase
protected array $configuration

Configuration information passed into the plugin.

from  PluginBase
protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected MessengerInterface $messenger

The messenger.

from  MessengerTrait
protected Element $schema

The config schema wrapper object for the configuration object under test.

from  SchemaCheckTrait
protected string $configName

The configuration object name under test.

from  SchemaCheckTrait
protected CKEditor5PluginManagerInterface $ckeditor5PluginManager

The CKEditor plugin manager.

protected LanguageManagerInterface $languageManager

The language manager.

protected ModuleHandlerInterface $moduleHandler

The module handler.

protected SmartDefaultSettings $smartDefaultSettings

Smart default settings utility.

protected CacheBackendInterface $cache

The cache.

Methods

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, CKEditor5PluginManagerInterface $ckeditor5_plugin_manager, LanguageManagerInterface $language_manager, ModuleHandlerInterface $module_handler, SmartDefaultSettings $smart_default_settings, CacheBackendInterface $cache)

Constructs a CKEditor5 editor plugin.

string
getPluginId()

Gets the plugin_id of the plugin instance.

string
getBaseId()

Gets the base_plugin_id of the plugin instance.

string|null
getDerivativeId()

Gets the derivative_id of the plugin instance.

array
getPluginDefinition()

Gets the definition of the plugin implementation.

bool
isConfigurable()

Determines if the plugin is configurable.

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

messenger()

Gets the messenger.

array
getDefaultSettings()

Returns the default settings for this configurable text editor.

array
buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

array|bool
checkConfigSchema(TypedConfigManagerInterface $typed_config, string $config_name, array $config_data)

Checks the TypedConfigManager has a valid schema for the configuration.

array
checkValue(string $key, mixed $value)

Helper method to check data type.

create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

static ConstraintViolationListInterface
validatePair(EditorInterface $text_editor, FilterFormatInterface $text_format, bool $all_compatibility_problems = TRUE)

Validates a Text Editor + Text Format pair.

static array
assessActiveTextEditorAfterBuild(array $element, FormStateInterface $form_state)

Form #after_build callback: provides text editor state changes.

static void
validateSwitchingToCKEditor5(array $form, FormStateInterface $form_state)

Validate callback to inform the user of CKEditor 5 compatibility problems.

static string
getGeneratedAllowedHtmlValue(array $element, mixed $input, FormStateInterface $form_state)

Value callback to set the CKEditor 5-generated "allowed_html" value.

getSubmittedFilterFormat(FormStateInterface $filter_format_form_state)

Gets the submitted text format config entity from form state.

getEventualEditorWithPrimedFilterFormat(SubformStateInterface $editor_form_state, EditorInterface $submitted_editor)

Gets the eventual text format config entity: from form state + editor.

static EditorInterface
createEphemeralPairedEditor(EditorInterface $editor, FilterFormatInterface $filter_format)

Creates an ephemeral pair of text editor + text format config entity.

static string
mapViolationPropertyPathsToFormNames(string $property_path, array $subform)

Maps Text Editor config object property paths to form names.

static string
mapPairViolationPropertyPathsToFormNames(string $property_path, array $form)

Maps Text Editor + Text Format pair property paths to form names.

array
getJSSettings(Editor $editor)

Returns JavaScript settings to be attached.

array
getLibraries(Editor $editor)

Returns libraries to be attached.

array
getLangcodes()

Returns a list of language codes supported by CKEditor 5.

Details

__construct(array $configuration, string $plugin_id, mixed $plugin_definition, CKEditor5PluginManagerInterface $ckeditor5_plugin_manager, LanguageManagerInterface $language_manager, ModuleHandlerInterface $module_handler, SmartDefaultSettings $smart_default_settings, CacheBackendInterface $cache)

Constructs a CKEditor5 editor plugin.

Parameters

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin_id for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

CKEditor5PluginManagerInterface $ckeditor5_plugin_manager

The CKEditor5 plugin manager.

LanguageManagerInterface $language_manager

The language manager

ModuleHandlerInterface $module_handler

The module handler.

SmartDefaultSettings $smart_default_settings

The smart default settings utility.

CacheBackendInterface $cache

The cache.

string getPluginId()

Gets the plugin_id of the plugin instance.

Return Value

string

The plugin_id of the plugin instance.

string getBaseId()

Gets the base_plugin_id of the plugin instance.

Return Value

string

The base_plugin_id of the plugin instance.

string|null getDerivativeId()

Gets the derivative_id of the plugin instance.

Return Value

string|null

The derivative_id of the plugin instance NULL otherwise.

array getPluginDefinition()

Gets the definition of the plugin implementation.

Return Value

array

The plugin definition, as returned by the discovery object used by the plugin manager.

bool isConfigurable()

Determines if the plugin is configurable.

Return Value

bool

A boolean indicating whether the plugin is configurable.

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

Parameters

MessengerInterface $messenger

The messenger.

MessengerInterface messenger()

Gets the messenger.

Return Value

MessengerInterface

The messenger.

array getDefaultSettings()

Returns the default settings for this configurable text editor.

Return Value

array

An array of settings as they would be stored by a configured text editor entity (\Drupal\editor\Entity\Editor).

array buildConfigurationForm(array $form, FormStateInterface $form_state)

Form constructor.

Plugin forms are embedded in other forms. In order to know where the plugin form is located in the parent form, #parents and #array_parents must be known, but these are not available during the initial build phase. In order to have these properties available when building the plugin form's elements, let this method return a form element that has a #process callback and build the rest of the form in the callback. By the time the callback is executed, the element's #parents and #array_parents properties will have been set by the form API. For more documentation on #parents and

array_parents, see \Drupal\Core\Render\Element\FormElement.

Parameters

array $form

An associative array containing the initial structure of the plugin form.

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

Return Value

array

The form structure.

validateConfigurationForm(array $form, FormStateInterface $form_state)

Form validation handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

submitConfigurationForm(array $form, FormStateInterface $form_state)

Form submission handler.

Parameters

array $form

An associative array containing the structure of the plugin form as built by static::buildConfigurationForm().

FormStateInterface $form_state

The current state of the form. Calling code should pass on a subform state created through \Drupal\Core\Form\SubformState::createForSubform().

array|bool checkConfigSchema(TypedConfigManagerInterface $typed_config, string $config_name, array $config_data)

Checks the TypedConfigManager has a valid schema for the configuration.

Parameters

TypedConfigManagerInterface $typed_config

The TypedConfigManager.

string $config_name

The configuration name.

array $config_data

The configuration data, assumed to be data for a top-level config object.

Return Value

array|bool

FALSE if no schema found. List of errors if any found. TRUE if fully valid.

protected array checkValue(string $key, mixed $value)

Helper method to check data type.

Parameters

string $key

A string of configuration key.

mixed $value

Value of given key.

Return Value

array

List of errors found while checking with the corresponding schema.

static ContainerFactoryPluginInterface create(ContainerInterface $container, array $configuration, string $plugin_id, mixed $plugin_definition)

Creates an instance of the plugin.

Parameters

ContainerInterface $container

The container to pull out services used in the plugin.

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin ID for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

Return Value

ContainerFactoryPluginInterface

Returns an instance of this plugin.

static ConstraintViolationListInterface validatePair(EditorInterface $text_editor, FilterFormatInterface $text_format, bool $all_compatibility_problems = TRUE)

Validates a Text Editor + Text Format pair.

Drupal is designed to only verify schema conformity (and validation) of individual config entities. The Text Editor module layers a tightly coupled Editor entity on top of the Filter module's FilterFormat config entity. This inextricable coupling is clearly visible in EditorInterface: \Drupal\editor\EditorInterface::getFilterFormat(). They are always paired. Because not every text editor is guaranteed to be compatible with every text format, the pair must be validated.

Parameters

EditorInterface $text_editor

The paired text editor to validate.

FilterFormatInterface $text_format

The paired text format to validate.

bool $all_compatibility_problems

Get all compatibility problems (default) or only fundamental ones.

Return Value

ConstraintViolationListInterface

The validation constraint violations.

Exceptions

InvalidArgumentException

See also

EditorInterface::getFilterFormat
ckeditor5.pair.schema.yml

static array assessActiveTextEditorAfterBuild(array $element, FormStateInterface $form_state)

Form #after_build callback: provides text editor state changes.

Updates the internal $this->entity object with submitted values when the form is being rebuilt (e.g. submitted via AJAX), so that subsequent processing (e.g. AJAX callbacks) can rely on it.

Parameters

array $element
FormStateInterface $form_state

Return Value

array

See also

EntityForm::afterBuild

static void validateSwitchingToCKEditor5(array $form, FormStateInterface $form_state)

Validate callback to inform the user of CKEditor 5 compatibility problems.

Parameters

array $form
FormStateInterface $form_state

Return Value

void

static string getGeneratedAllowedHtmlValue(array $element, mixed $input, FormStateInterface $form_state)

Value callback to set the CKEditor 5-generated "allowed_html" value.

Used to set the value of filter_html's "allowed_html" form item if the form has been validated and hence ckeditor5_validated_pair is available in form state. This allows setting a guaranteed to be valid value.

ckeditor5_validated_pair can be set from two places:

  • When switching to CKEditor 5, this is populated by CKEditor5::buildConfigurationForm().
  • When making filter or editor settings changes, it is populated by CKEditor5::validateConfigurationForm().

Parameters

array $element

An associative array containing the properties of the element.

mixed $input

The incoming input to populate the form element. If this is FALSE, the element's default value should be returned.

FormStateInterface $form_state

The current state of the form.

Return Value

string

The value to assign to the element.

static protected FilterFormatInterface getSubmittedFilterFormat(FormStateInterface $filter_format_form_state)

Gets the submitted text format config entity from form state.

Needed for validation.

Parameters

FormStateInterface $filter_format_form_state

The text format configuration form's form state.

Return Value

FilterFormatInterface

A FilterFormat config entity representing the current filter form state.

protected EditorInterface getEventualEditorWithPrimedFilterFormat(SubformStateInterface $editor_form_state, EditorInterface $submitted_editor)

Gets the eventual text format config entity: from form state + editor.

Needed for validation.

Parameters

SubformStateInterface $editor_form_state

The text editor configuration form's form state.

EditorInterface $submitted_editor

The current text editor config entity.

Return Value

EditorInterface

A clone of the received Editor config entity , with a primed associated FilterFormat that corresponds to the current form state, to avoid the stored FilterFormat config entity being loaded.

static protected EditorInterface createEphemeralPairedEditor(EditorInterface $editor, FilterFormatInterface $filter_format)

Creates an ephemeral pair of text editor + text format config entity.

Clones the given text editor config entity object and then overwrites its $filterFormat property, to prevent loading the text format config entity from entity storage in calls to Editor::hasAssociatedFilterFormat() and Editor::getFilterFormat(). This is necessary to be able to evaluate unsaved text editor and format config entities:

  • for assessing which CKEditor 5 plugins are enabled and whose settings forms to show
  • for validating them.

Remove this in https://www.drupal.org/project/drupal/issues/3231347

Parameters

EditorInterface $editor

The submitted text editor config entity, constructed from form values.

FilterFormatInterface $filter_format

The submitted text format config entity, constructed from form values.

Return Value

EditorInterface

A clone of the given text editor config entity, with its $filterFormat property set to a clone of the given text format config entity.

Exceptions

ReflectionException

See also

CKEditor5PluginManager::isPluginDisabled

static protected string mapViolationPropertyPathsToFormNames(string $property_path, array $subform)

Maps Text Editor config object property paths to form names.

Parameters

string $property_path

A config object property path.

array $subform

The subform being checked.

Return Value

string

The corresponding form name in the subform.

static protected string mapPairViolationPropertyPathsToFormNames(string $property_path, array $form)

Maps Text Editor + Text Format pair property paths to form names.

Parameters

string $property_path

A config object property path.

array $form

The form being checked.

Return Value

string

The corresponding form name in the complete form.

array getJSSettings(Editor $editor)

Returns JavaScript settings to be attached.

Most text editors use JavaScript to provide a WYSIWYG or toolbar on the client-side interface. This method can be used to convert internal settings of the text editor into JavaScript variables that will be accessible when the text editor is loaded.

Parameters

Editor $editor

A configured text editor object.

Return Value

array

An array of settings that will be added to the page for use by this text editor's JavaScript integration.

array getLibraries(Editor $editor)

Returns libraries to be attached.

Because this is a method, plugins can dynamically choose to attach a different library for different configurations, instead of being forced to always use the same method.

Parameters

Editor $editor

A configured text editor object.

Return Value

array

An array of libraries that will be added to the page for use by this text editor.

protected array getLangcodes()

Returns a list of language codes supported by CKEditor 5.

Return Value

array

An associative array keyed by language codes.