When we were using the TinyMCE it was possible to override the init for the editor in the template.php file. Ie)

function phptemplate_tinymce_theme($init, $textarea_name, $theme_name, $is_running) {
if ($textareaname == 'field_foo_bar') {
$init ['theme_advanced_buttons1'] = array('plug1', 'plug2');
}
}

I've browsed the source code but I do not find anything similiar. Is it a no can do?

Comments

TwoD’s picture

Status: Closed (fixed) » Fixed

You can use hook_wysiwyg_editor_settings_alter() in a similar way, but it has to be done in a custom module for D6 because it's no longer a theme hook.
There are various examples of its use here and there in the issue queue, but some if the first ones I put together are in #313497-52: Allow configuration of advanced editor settings.

Basically, to do the equivalent of the above, but per editor profile - as Wysiwyg module does not do any processing for individual fields:

function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
  if($context['profile']->editor == 'tinymce') {
    $settings['theme_advanced_buttons1'] = array('plug1', 'plug2');
  }
}

Note that this will override what Wysiwyg itself set as value for theme_advanced_buttons1 based on the selections under admin/settings/wysiwyg/#/profile -> "Buttons and plugins".

This is a pretty powerful hook, but due to limitations in drupal_add_js() ($settings is passed via it to become JSON data) it's currently not possible to create JavaScript Function/Object references, Regular Expressions or use JavaScript constants in this hook. Strings, Numbers, Bools and Arrays/Objects with those are safe as they can easily be converted from PHP to JS.

The alter hook is called from wysiwyg_get_editor_config() around line 550 in wysiwyg.module.

EDIT: Typo in function signature fixed, thanks etcetera9.

Status: Active » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.

Sinan Erdem’s picture

The code on #1 should be like:

<?php
function MYMODULE_wysiwyg_editor_settings_alter(&$settings, $context) {
  if($context['profile']->editor == 'tinymce') {
    $settings['theme_advanced_buttons1'] = array('plug1', 'plug2');
  }
}
?>

"$context" instead of "&$context"

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.