You are here

function wysiwyg_fckeditor_settings in Wysiwyg 6

Same name and namespace in other branches
  1. 5.2 editors/fckeditor.inc \wysiwyg_fckeditor_settings()
  2. 5 editors/fckeditor.inc \wysiwyg_fckeditor_settings()
  3. 6.2 editors/fckeditor.inc \wysiwyg_fckeditor_settings()
  4. 7.2 editors/fckeditor.inc \wysiwyg_fckeditor_settings()

Return runtime editor settings for a given wysiwyg profile.

Parameters

$editor: A processed hook_editor() array of editor properties.

$config: An array containing wysiwyg editor profile settings.

$theme: The name of a theme/GUI/skin to use.

Return value

A settings array to be populated in Drupal.settings.wysiwyg.configs.{editor}

1 string reference to 'wysiwyg_fckeditor_settings'
wysiwyg_fckeditor_editor in editors/fckeditor.inc
Plugin implementation of hook_editor().

File

editors/fckeditor.inc, line 75
Editor integration functions for FCKeditor.

Code

function wysiwyg_fckeditor_settings($editor, $config, $theme) {
  $settings = array(
    'EditorPath' => base_path() . $editor['library path'] . '/',
    'SkinPath' => base_path() . $editor['library path'] . '/editor/skins/' . $theme . '/',
    'Width' => '100%',
    'Height' => 420,
    'LinkBrowser' => FALSE,
    'LinkUpload' => FALSE,
    'ImageBrowser' => FALSE,
    'ImageUpload' => FALSE,
    'FlashBrowser' => FALSE,
    'FlashUpload' => FALSE,
    // By default, FCKeditor converts most characters into HTML entities. Since
    // it does not support a custom definition, but Drupal supports Unicode, we
    // disable at least the additional character sets. FCKeditor always converts
    // XML default characters '&', '<', '>'.
    // @todo Check whether completely disabling ProcessHTMLEntities is an option.
    'IncludeLatinEntities' => FALSE,
    'IncludeGreekEntities' => FALSE,
  );
  if (isset($config['block_formats'])) {
    $settings['FontFormats'] = strtr($config['block_formats'], array(
      ',' => ';',
    ));
  }
  if (isset($config['apply_source_formatting'])) {
    $settings['FormatSource'] = $config['apply_source_formatting'];
  }
  if (isset($config['preformatted'])) {
    $settings['FormatOutput'] = $config['preformatted'];
  }
  if (isset($config['css_setting'])) {
    if ($config['css_setting'] == 'theme') {
      $settings['EditorAreaCSS'] = implode(',', wysiwyg_get_css());
    }
    else {
      if ($config['css_setting'] == 'self' && isset($config['css_path'])) {
        $settings['EditorAreaCSS'] = strtr($config['css_path'], array(
          '%b' => base_path(),
          '%t' => path_to_theme(),
        ));
      }
    }
  }
  if (!empty($config['buttons'])) {

    // Use our custom toolbar set.
    $settings['CustomConfigurationsPath'] = wysiwyg_get_path('editors/js/fckeditor.config.js', TRUE);
    $settings['ToolbarSet'] = 'Wysiwyg';

    // Populate our custom toolbar set for fckeditor.config.js.
    $settings['buttons'] = array();
    $plugins = wysiwyg_get_plugins($editor['name']);
    foreach ($config['buttons'] as $plugin => $buttons) {
      foreach ($buttons as $button => $enabled) {

        // Iterate separately over buttons and extensions properties.
        foreach (array(
          'buttons',
          'extensions',
        ) as $type) {

          // Skip unavailable plugins.
          if (!isset($plugins[$plugin][$type][$button])) {
            continue;
          }

          // Add buttons.
          if ($type == 'buttons') {
            $settings['buttons'][] = $button;
          }

          // Allow plugins to add or override global configuration settings.
          if (!empty($plugins[$plugin]['options'])) {
            $settings = array_merge($settings, $plugins[$plugin]['options']);
          }
        }
      }
    }

    // For now, all buttons are placed into one row.
    if (!empty($settings['buttons'])) {
      $settings['buttons'] = array(
        $settings['buttons'],
      );
    }
  }
  return $settings;
}