class Alignment

Same name in other branches
  1. 10 core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Alignment.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Alignment
  2. 11.x core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Alignment.php \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Alignment

CKEditor 5 Alignment plugin.

@internal Plugin classes are internal.

Hierarchy

Expanded class hierarchy of Alignment

1 file declares its use of Alignment
AlignmentPluginTest.php in core/modules/ckeditor5/tests/src/Unit/AlignmentPluginTest.php
13 string references to 'Alignment'
ckeditor5.ckeditor5.yml in core/modules/ckeditor5/ckeditor5.ckeditor5.yml
core/modules/ckeditor5/ckeditor5.ckeditor5.yml
ckeditor5.ckeditor5.yml in core/modules/ckeditor5/ckeditor5.ckeditor5.yml
core/modules/ckeditor5/ckeditor5.ckeditor5.yml
CKEditor5PluginManagerTest::testEnabledPlugins in core/modules/ckeditor5/tests/src/Kernel/CKEditor5PluginManagerTest.php
Tests the enabling of plugins.
CKEditor5UpdateAlignmentTest::testUpdateAlignmentButtons in core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateAlignmentTest.php
Tests update of individual button that are alignment configuration.
ckeditor5_post_update_alignment_buttons in core/modules/ckeditor5/ckeditor5.post_update.php
Updates text formats that has alignment shown as individual buttons.

... See full list

File

core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Alignment.php, line 21

Namespace

Drupal\ckeditor5\Plugin\CKEditor5Plugin
View source
class Alignment extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface, CKEditor5PluginElementsSubsetInterface {
    use CKEditor5PluginConfigurableTrait;
    
    /**
     * The default configuration for this plugin.
     *
     * @var string[][]
     */
    const DEFAULT_CONFIGURATION = [
        'enabled_alignments' => [
            'left',
            'center',
            'right',
            'justify',
        ],
    ];
    
    /**
     * {@inheritdoc}
     */
    public function defaultConfiguration() {
        return static::DEFAULT_CONFIGURATION;
    }
    
    /**
     * {@inheritdoc}
     *
     * Form for choosing which alignment types are available.
     */
    public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
        $form['enabled_alignments'] = [
            '#type' => 'fieldset',
            '#title' => $this->t('Enabled Alignments'),
            '#description' => $this->t('These are the alignment types that will appear in the alignment dropdown.'),
        ];
        foreach ($this->getPluginDefinition()
            ->getCKEditor5Config()['alignment']['options'] as $alignment_option) {
            $name = $alignment_option['name'];
            $form['enabled_alignments'][$name] = [
                '#type' => 'checkbox',
                '#title' => $this->t($name),
                '#return_value' => $name,
                '#default_value' => in_array($name, $this->configuration['enabled_alignments'], TRUE) ? $name : NULL,
            ];
        }
        return $form;
    }
    
    /**
     * {@inheritdoc}
     */
    public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
        // Match the config schema structure at ckeditor5.plugin.ckeditor5_alignment.
        $form_value = $form_state->getValue('enabled_alignments');
        $config_value = array_values(array_filter($form_value));
        $form_state->setValue('enabled_alignments', $config_value);
    }
    
    /**
     * {@inheritdoc}
     */
    public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
        $this->configuration['enabled_alignments'] = $form_state->getValue('enabled_alignments');
    }
    
    /**
     * {@inheritdoc}
     *
     * Filters the alignment options to those chosen in editor config.
     */
    public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor) : array {
        $enabled_alignments = $this->configuration['enabled_alignments'];
        $all_alignment_options = $static_plugin_config['alignment']['options'];
        $configured_alignment_options = array_filter($all_alignment_options, function ($option) use ($enabled_alignments) {
            return in_array($option['name'], $enabled_alignments, TRUE);
        });
        return [
            'alignment' => [
                'options' => array_values($configured_alignment_options),
            ],
        ];
    }
    
    /**
     * {@inheritdoc}
     */
    public function getElementsSubset() : array {
        $enabled_alignments = $this->configuration['enabled_alignments'];
        $plugin_definition = $this->getPluginDefinition();
        $all_elements = $plugin_definition->getElements();
        $subset = HTMLRestrictions::fromString(implode($all_elements));
        foreach ($plugin_definition->getCKEditor5Config()['alignment']['options'] as $configured_alignment) {
            if (!in_array($configured_alignment['name'], $enabled_alignments, TRUE)) {
                $element_string = '<$text-container class=' . '"' . $configured_alignment["className"] . '"' . '>';
                $subset = $subset->diff(HTMLRestrictions::fromString($element_string));
            }
        }
        return $subset->toCKEditor5ElementsArray();
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
Alignment::buildConfigurationForm public function Form for choosing which alignment types are available.
Alignment::defaultConfiguration public function
Alignment::DEFAULT_CONFIGURATION constant The default configuration for this plugin.
Alignment::getDynamicPluginConfig public function Filters the alignment options to those chosen in editor config. Overrides CKEditor5PluginDefault::getDynamicPluginConfig
Alignment::getElementsSubset public function Returns a configured subset of the elements supported by this plugin. Overrides CKEditor5PluginElementsSubsetInterface::getElementsSubset
Alignment::submitConfigurationForm public function
Alignment::validateConfigurationForm public function
CKEditor5PluginConfigurableTrait::getConfiguration public function
CKEditor5PluginConfigurableTrait::setConfiguration public function
CKEditor5PluginDefault::__construct public function 2
PluginInspectionInterface::getPluginDefinition public function Gets the definition of the plugin implementation. 6
PluginInspectionInterface::getPluginId public function Gets the plugin_id of the plugin instance. 2

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