Contrib.php

Same filename in other branches
  1. 9 core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Contrib.php
  2. 11.x core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Contrib.php

Namespace

Drupal\ckeditor5\Plugin\CKEditor4To5Upgrade

File

core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Contrib.php

View source
<?php

declare (strict_types=1);
namespace Drupal\ckeditor5\Plugin\CKEditor4To5Upgrade;

// cspell:ignore codesnippet
use Drupal\ckeditor5\HTMLRestrictions;
use Drupal\ckeditor5\Plugin\CKEditor4To5UpgradePluginInterface;
use Drupal\Core\Plugin\PluginBase;
use Drupal\filter\FilterFormatInterface;

/**
 * Provides the CKEditor 4 to 5 upgrade path for contrib plugins now in core.
 *
 * @CKEditor4To5Upgrade(
 *   id = "contrib",
 *   cke4_buttons = {
 *     "Code",
 *     "CodeSnippet",
 *   },
 *   cke4_plugin_settings = {
 *     "codesnippet",
 *   },
 *   cke5_plugin_elements_subset_configuration = {
 *   }
 * )
 *
 * @internal
 *   Plugin classes are internal.
 */
class Contrib extends PluginBase implements CKEditor4To5UpgradePluginInterface {
    
    /**
     * {@inheritdoc}
     */
    public function mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem(string $cke4_button, HTMLRestrictions $text_format_html_restrictions) : ?array {
        switch ($cke4_button) {
            // @see https://www.drupal.org/project/codetag
            case 'Code':
                return [
                    'code',
                ];
            // @see https://www.drupal.org/project/codesnippet
            case 'CodeSnippet':
                return [
                    'codeBlock',
                ];
            default:
                throw new \OutOfBoundsException();
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function mapCKEditor4SettingsToCKEditor5Configuration(string $cke4_plugin_id, array $cke4_plugin_settings) : ?array {
        switch ($cke4_plugin_id) {
            case 'codesnippet':
                $languages = [];
                $enabled_cke4_languages = array_filter($cke4_plugin_settings['highlight_languages']);
                foreach ($enabled_cke4_languages as $language) {
                    $languages[] = [
                        'language' => $language,
                        'label' => $language,
                    ];
                }
                return [
                    'ckeditor5_codeBlock' => [
                        'languages' => $languages,
                    ],
                ];
            default:
                throw new \OutOfBoundsException();
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function computeCKEditor5PluginSubsetConfiguration(string $cke5_plugin_id, FilterFormatInterface $text_format) : ?array {
        throw new \OutOfBoundsException();
    }

}

Classes

Title Deprecated Summary
Contrib Provides the CKEditor 4 to 5 upgrade path for contrib plugins now in core.

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