diff --git editors/whizzywig.inc editors/whizzywig.inc index d82cc0f..c1abc7f 100644 --- editors/whizzywig.inc +++ editors/whizzywig.inc @@ -22,6 +22,7 @@ function wysiwyg_whizzywig_editor() { 'version callback' => 'wysiwyg_whizzywig_version', 'settings callback' => 'wysiwyg_whizzywig_settings', 'plugin callback' => 'wysiwyg_whizzywig_plugins', + 'toolbar separator' => TRUE, 'versions' => array( '55' => array( 'js files' => array('whizzywig.js'), @@ -93,12 +94,20 @@ function wysiwyg_whizzywig_settings($editor, $config, $theme) { // Add configured buttons or all available. $settings['buttons'] = array(); - if (!empty($config['buttons'])) { + if (!empty($config['toolbar'])) { + // Whizzywig supports only one button group/row. + $group_config = $config['toolbar'][0][0]; $buttons = array(); - foreach ($config['buttons'] as $plugin) { - $buttons = array_merge($buttons, $plugin); + foreach ($group_config as $button_config) { + $button = $button_config['button']; + if ($button == 'separator') { + $buttons[] = '|'; + } + else { + $buttons[] = $button; + } } - $settings['buttons'] = implode(' ', array_keys($buttons)); + $settings['buttons'] = implode(' ', $buttons); } // Add editor content stylesheet. diff --git editors/wymeditor.inc editors/wymeditor.inc index 3e8ffd2..92d4b7b 100644 --- editors/wymeditor.inc +++ editors/wymeditor.inc @@ -113,34 +113,30 @@ function wysiwyg_wymeditor_settings($editor, $config, $theme) { // Add configured buttons. $settings['toolsItems'] = array(); - if (!empty($config['buttons'])) { + if (!empty($config['toolbar'])) { + // WYMeditor only supports one group/row of buttons. + $group_config = $config['toolbar'][0][0]; $buttoninfo = _wysiwyg_wymeditor_button_info(); $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') { - // Merge meta-data for internal default buttons. - if (isset($buttoninfo[$button])) { - $buttoninfo[$button] += array('name' => $button); - $settings['toolsItems'][] = $buttoninfo[$button]; - } - // For custom buttons, try to provide a valid button definition. - else { - $settings['toolsItems'][] = array( - 'name' => $button, - 'title' => $plugins[$plugin][$type][$button], - 'css' => 'wym_tools_' . $button, - ); - } - } - } + foreach ($group_config as $button_config) { + $button = $button_config['button']; + $plugin = $button_config['plugin']; + // Skip unavailable plugins. + if (!isset($plugins[$plugin]['buttons'][$button])) { + continue; + } + // Merge meta-data for internal default buttons. + if (isset($buttoninfo[$button])) { + $buttoninfo[$button] += array('name' => $button); + $settings['toolsItems'][] = $buttoninfo[$button]; + } + // For custom buttons, try to provide a valid button definition. + else { + $settings['toolsItems'][] = array( + 'name' => $button, + 'title' => $plugins[$plugin][$type][$button], + 'css' => 'wym_tools_' . $button, + ); } } } diff --git editors/yui.inc editors/yui.inc index 7e3c697..389bc26 100644 --- editors/yui.inc +++ editors/yui.inc @@ -45,6 +45,8 @@ function wysiwyg_yui_editor() { 'load callback' => 'wysiwyg_yui_load', 'settings callback' => 'wysiwyg_yui_settings', 'plugin callback' => 'wysiwyg_yui_plugins', + 'toolbar groups' => TRUE, + 'toolbar separator' => TRUE, 'versions' => array( '2.7.0' => array( 'js files' => array('yui.js'), @@ -151,10 +153,15 @@ function wysiwyg_yui_settings($editor, $config, $theme) { 'buttons' => array(), ), ); - if (!empty($config['buttons'])) { + if (!empty($config['toolbar'])) { $buttons = array(); - foreach ($config['buttons'] as $plugin => $enabled_buttons) { - foreach ($enabled_buttons as $button => $enabled) { + // YUI Editor can only use one toolbar row. + $row = $config['toolbar'][0]; + foreach ($row as $group_index => $group_config) { + $group = array('group' => 'group' . $group_index, 'label' => '', 'buttons' => array()); + foreach ($group_config as $button_config) { + $button = $button_config['button']; + $plugin = $button_config['plugin']; $extra = array(); if ($button == 'heading') { $extra = array('menu' => array( @@ -190,12 +197,11 @@ function wysiwyg_yui_settings($editor, $config, $theme) { array('text' => 'Verdana'), )); } - $buttons[] = wysiwyg_yui_button_setting($editor, $plugin, $button, $extra); + $group['buttons'][] = wysiwyg_yui_button_setting($editor, $plugin, $button, $extra); } + $buttons[] = $group; } - // Group buttons in a dummy group. - $buttons = array('group' => 'default', 'label' => '', 'buttons' => $buttons); - $settings['toolbar']['buttons'] = array($buttons); + $settings['toolbar']['buttons'] = $buttons; } if (isset($config['css_setting'])) {