function CKEditor5MediaAndFilterSettingsInSyncConstraintValidator::validate

Same name and namespace in other branches
  1. 9 core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5MediaAndFilterSettingsInSyncConstraintValidator.php \Drupal\ckeditor5\Plugin\Validation\Constraint\CKEditor5MediaAndFilterSettingsInSyncConstraintValidator::validate()
  2. 10 core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5MediaAndFilterSettingsInSyncConstraintValidator.php \Drupal\ckeditor5\Plugin\Validation\Constraint\CKEditor5MediaAndFilterSettingsInSyncConstraintValidator::validate()

Throws

\Symfony\Component\Validator\Exception\UnexpectedTypeException Thrown when the given constraint is not supported by this validator.

File

core/modules/ckeditor5/src/Plugin/Validation/Constraint/CKEditor5MediaAndFilterSettingsInSyncConstraintValidator.php, line 70

Class

CKEditor5MediaAndFilterSettingsInSyncConstraintValidator
CKEditor 5 Media plugin in sync with the filter settings validator.

Namespace

Drupal\ckeditor5\Plugin\Validation\Constraint

Code

public function validate($toolbar_item, Constraint $constraint) : void {
    if (!$constraint instanceof CKEditor5MediaAndFilterSettingsInSyncConstraint) {
        throw new UnexpectedTypeException($constraint, __NAMESPACE__ . '\\CKEditor5MediaAndFilterSettingsInSync');
    }
    $text_editor = $this->createTextEditorObjectFromContext();
    if (isset($text_editor->getSettings()['plugins']['media_media'])) {
        $cke5_plugin_overrides_allowed = $text_editor->getSettings()['plugins']['media_media']['allow_view_mode_override'];
        $filter_allowed_view_modes = $text_editor->getFilterFormat()
            ->filters('media_embed')
            ->getConfiguration()['settings']['allowed_view_modes'];
        $filter_media_plugin_label = $this->filterPluginManager
            ->getDefinition('media_embed')['title']
            ->render();
        $filter_media_allowed_view_modes_label = $this->typedConfigManager
            ->getDefinition('filter_settings.media_embed')['mapping']['allowed_view_modes']['label'];
        // Whenever the CKEditor 5 plugin is configured to allow overrides, the
        // filter must be configured to allow 2 or more view modes.
        if ($cke5_plugin_overrides_allowed && count($filter_allowed_view_modes) < 2) {
            $this->context
                ->addViolation($constraint->message, [
                '%cke5_media_plugin_label' => $this->t('Media'),
                '%cke5_allow_view_mode_override_label' => $this->t('Allow the user to override the default view mode'),
                '%filter_media_plugin_label' => $filter_media_plugin_label,
                '%filter_media_allowed_view_modes_label' => $filter_media_allowed_view_modes_label,
            ]);
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.