You are here

public function CustomConfig::getConfig in CKEditor custom config 8

Same name and namespace in other branches
  1. 8.3 src/Plugin/CKEditorPlugin/CustomConfig.php \Drupal\ckeditor_config\Plugin\CKEditorPlugin\CustomConfig::getConfig()
  2. 8.2 src/Plugin/CKEditorPlugin/CustomConfig.php \Drupal\ckeditor_config\Plugin\CKEditorPlugin\CustomConfig::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 Internal::getConfig

File

src/Plugin/CKEditorPlugin/CustomConfig.php, line 21

Class

CustomConfig
Allow custom config settings.

Namespace

Drupal\ckeditor_config\Plugin\CKEditorPlugin

Code

public function getConfig(Editor $editor) {

  // Get default config.
  $config = parent::getConfig($editor);

  // Parse and implement the custom config.

  /** @var \Drupal\Core\Config\ConfigFactory $configFactory */
  $configFactory = \Drupal::service('config.factory');
  $configForm = $configFactory
    ->get('ckeditor_config.config_form');
  $customConfig = $configForm
    ->get('config');
  if (!empty($customConfig)) {

    // Separate custom config textarea to each row.
    $configArray = explode("\r\n", $customConfig);
    if (is_array($configArray)) {
      foreach ($configArray as $configRow) {
        $configParts = explode('=', $configRow);
        if (count($configParts) == 2) {

          // Prepare value (remove " and ').
          $value = trim($configParts[1]);
          $value = str_replace('"', '', $value);
          $value = str_replace("'", '', $value);

          // Convert boolean values to real boolean.
          if (strtolower($value) == 'true' || $value == 'false') {
            $value = (bool) $value;
          }

          // Append or override the default config.
          $config[trim($configParts[0])] = $value;
        }
      }
    }
  }

  // Return modified config.
  return $config;
}