You are here

public function Internal::getConfig in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php \Drupal\ckeditor\Plugin\CKEditorPlugin\Internal::getConfig()

Returns the additions to CKEDITOR.config for a specific CKEditor instance.

The editor's settings can be retrieved via $editor->getSettings(), but be aware that it may not yet contain plugin-specific settings, because the user may not yet have configured the form. If there are plugin-specific settings (verify with isset()), they can be found at

$settings = $editor
  ->getSettings();
$plugin_specific_settings = $settings['plugins'][$plugin_id];

Parameters

\Drupal\editor\Entity\Editor $editor: A configured text editor object.

Return value

array A keyed array, whose keys will end up as keys under CKEDITOR.config.

Overrides CKEditorPluginInterface::getConfig

File

core/modules/ckeditor/src/Plugin/CKEditorPlugin/Internal.php, line 95
Contains \Drupal\ckeditor\Plugin\CKEditorPlugin\Internal.

Class

Internal
Defines the "internal" plugin (i.e. core plugins part of our CKEditor build).

Namespace

Drupal\ckeditor\Plugin\CKEditorPlugin

Code

public function getConfig(Editor $editor) {

  // Reasonable defaults that provide expected basic behavior.
  $config = array(
    'customConfig' => '',
    // Don't load CKEditor's config.js file.
    'pasteFromWordPromptCleanup' => TRUE,
    'resize_dir' => 'vertical',
    'justifyClasses' => array(
      'text-align-left',
      'text-align-center',
      'text-align-right',
      'text-align-justify',
    ),
    'entities' => FALSE,
  );

  // Add the allowedContent setting, which ensures CKEditor only allows tags
  // and attributes that are allowed by the text format for this text editor.
  list($config['allowedContent'], $config['disallowedContent']) = $this
    ->generateACFSettings($editor);

  // Add the format_tags setting, if its button is enabled.
  $toolbar_rows = array();
  $settings = $editor
    ->getSettings();
  foreach ($settings['toolbar']['rows'] as $row_number => $row) {
    $toolbar_rows[] = array_reduce($settings['toolbar']['rows'][$row_number], function (&$result, $button_group) {
      return array_merge($result, $button_group['items']);
    }, array());
  }
  $toolbar_buttons = array_unique(NestedArray::mergeDeepArray($toolbar_rows));
  if (in_array('Format', $toolbar_buttons)) {
    $config['format_tags'] = $this
      ->generateFormatTagsSetting($editor);
  }
  return $config;
}