private function FundamentalCompatibilityConstraintValidator::checkHtmlRestrictionsMatch in Drupal 10
Checks the HTML restrictions match the enabled CKEditor 5 plugins' output.
Parameters
\Drupal\editor\EditorInterface $text_editor: The text editor to validate.
\Drupal\ckeditor5\Plugin\Validation\Constraint\FundamentalCompatibilityConstraint $constraint: The constraint to validate.
1 call to FundamentalCompatibilityConstraintValidator::checkHtmlRestrictionsMatch()
- FundamentalCompatibilityConstraintValidator::validate in core/
modules/ ckeditor5/ src/ Plugin/ Validation/ Constraint/ FundamentalCompatibilityConstraintValidator.php
File
- core/
modules/ ckeditor5/ src/ Plugin/ Validation/ Constraint/ FundamentalCompatibilityConstraintValidator.php, line 144
Class
- FundamentalCompatibilityConstraintValidator
- Validates fundamental compatibility of CKEditor 5 with the given text format.
Namespace
Drupal\ckeditor5\Plugin\Validation\ConstraintCode
private function checkHtmlRestrictionsMatch(EditorInterface $text_editor, FundamentalCompatibilityConstraint $constraint) : void {
$html_restrictor_filters = static::getFiltersInFormatOfType($text_editor
->getFilterFormat(), FilterInterface::TYPE_HTML_RESTRICTOR);
$enabled_plugins = array_keys($this->pluginManager
->getEnabledDefinitions($text_editor));
$provided = $this->pluginManager
->getProvidedElements($enabled_plugins, $text_editor);
foreach ($html_restrictor_filters as $filter_plugin_id => $filter) {
$allowed = HTMLRestrictions::fromFilterPluginInstance($filter);
$provided = new HTMLRestrictions($provided);
$diff_allowed = $allowed
->diff($provided);
$diff_elements = $provided
->diff($allowed);
if (!$diff_allowed
->allowsNothing()) {
$this->context
->buildViolation($constraint->notSupportedElementsMessage)
->setParameter('@list', implode(' ', $provided
->toCKEditor5ElementsArray()))
->setParameter('@diff', implode(' ', $diff_allowed
->toCKEditor5ElementsArray()))
->atPath("filters.{$filter_plugin_id}")
->addViolation();
}
if (!$diff_elements
->allowsNothing()) {
$this->context
->buildViolation($constraint->missingElementsMessage)
->setParameter('@list', implode(' ', $provided
->toCKEditor5ElementsArray()))
->setParameter('@diff', implode(' ', $diff_elements
->toCKEditor5ElementsArray()))
->atPath("filters.{$filter_plugin_id}")
->addViolation();
}
}
}