public function CKEditor::settingsForm

Implements \Drupal\editor\Plugin\EditPluginInterface::settingsForm().

Overrides EditorBase::settingsForm

File

drupal/core/modules/ckeditor/lib/Drupal/ckeditor/Plugin/Editor/CKEditor.php, line 50
Contains \Drupal\ckeditor\Plugin\Editor\CKEditor.

Class

CKEditor
Defines a CKEditor-based text editor for Drupal.

Namespace

Drupal\ckeditor\Plugin\Editor

Code

public function settingsForm(array $form, array &$form_state, EditorEntity $editor) {
  $module_path = drupal_get_path('module', 'ckeditor');
  $manager = drupal_container()
    ->get('plugin.manager.ckeditor.plugin');
  $ckeditor_settings_toolbar = array(
    '#theme' => 'ckeditor_settings_toolbar',
    '#editor' => $editor,
    '#plugins' => $manager
      ->getButtonsPlugins($editor),
  );
  $form['toolbar'] = array(
    '#type' => 'container',
    '#attached' => array(
      'library' => array(
        array(
          'ckeditor',
          'drupal.ckeditor.admin',
        ),
      ),
      'js' => array(
        array(
          'type' => 'setting',
          'data' => array(
            'ckeditor' => array(
              'toolbarAdmin' => drupal_render($ckeditor_settings_toolbar),
            ),
          ),
        ),
      ),
    ),
    '#attributes' => array(
      'class' => array(
        'ckeditor-toolbar-configuration',
      ),
    ),
  );
  $form['toolbar']['buttons'] = array(
    '#type' => 'textarea',
    '#title' => t('Toolbar buttons'),
    '#default_value' => json_encode($editor->settings['toolbar']['buttons']),
    '#attributes' => array(
      'class' => array(
        'ckeditor-toolbar-textarea',
      ),
    ),
  );

  // CKEditor plugin settings, if any.
  $form['plugin_settings'] = array(
    '#type' => 'vertical_tabs',
  );
  $manager
    ->injectPluginSettingsForm($form, $form_state, $editor);
  if (count(element_children($form['plugins'])) === 0) {
    unset($form['plugins']);
    unset($form['plugin_settings']);
  }
  return $form;
}