### Eclipse Workspace Patch 1.0 #P wysiwyg Index: editors/tinymce.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/tinymce.inc,v retrieving revision 1.15 diff -u -r1.15 tinymce.inc --- editors/tinymce.inc 17 Nov 2008 00:15:29 -0000 1.15 +++ editors/tinymce.inc 4 Dec 2008 19:00:05 -0000 @@ -247,13 +247,67 @@ 'theme_advanced_buttons2' => array(), 'theme_advanced_buttons3' => array(), ); - for ($i = 0; $i < count($init['buttons']); $i++) { - $init['theme_advanced_buttons1'][] = $init['buttons'][$i]; - } + + $buttons = $init['buttons']; + + $row[] = array( array('newdocument', 'save'), array('bold', 'italic', 'underline'), array('undo', 'redo'), array('cut', 'copy', 'paste', 'pasteword'), array('link', 'unlink'), array('image', 'charmap'), array('code') ); + $row[] = array( array('formatselect', 'fontselect', 'fontsizeselect'), array('justifyleft', 'justifycenter', 'justifyright', 'justifyfull'), array('numlist', 'bullist', 'indent', 'outdent') ); + + foreach ($row as $r_index=>$r) { + $row_buttons = array(); + foreach ($r as $rg_index=>$rowgroup) { + + $selected = array_intersect($rowgroup, $buttons); + + if (count($selected)>0) { + if (count($row_buttons)>0) { + $row_buttons[] = "separator"; + } + $row_buttons = array_merge($row_buttons, $selected); + } + + $buttons = array_diff($buttons, $selected); + } + $init['theme_advanced_buttons' . ($r_index+1)] = $row_buttons; + } + + if (count($buttons)>0) { + // some buttons are left -> append them to row 3 + $init['theme_advanced_buttons3'] = array_merge($init['theme_advanced_buttons3'], $buttons); + } + + $min_btns = 5; // Minimum number of buttons per row. + $num1 = count($init['theme_advanced_buttons1']); + $num2 = count($init['theme_advanced_buttons2']); + $num3 = count($init['theme_advanced_buttons3']); + + if ($num3 < $min_btns) { + $init['theme_advanced_buttons2'][] = 'separator'; + $init['theme_advanced_buttons2'] = array_merge($init['theme_advanced_buttons2'], $init['theme_advanced_buttons3']); + $init['theme_advanced_buttons3'] = array(); + $num2 = count($init['theme_advanced_buttons2']); + } + if ($num2 < $min_btns) { + $init['theme_advanced_buttons1'][] = 'separator'; + $init['theme_advanced_buttons1'] = array_merge($init['theme_advanced_buttons1'], $init['theme_advanced_buttons2']); + // Squish the rows together, since row 2 is empty + $init['theme_advanced_buttons2'] = $init['theme_advanced_buttons3']; + $init['theme_advanced_buttons3'] = array(); + $num1 = count($init['theme_advanced_buttons1']); + } + if ($num1 < $min_btns) { + $init['theme_advanced_buttons1'] = array_merge($init['theme_advanced_buttons1'], $init['theme_advanced_buttons2']); + // Squish the rows together, since row 2 is empty + $init['theme_advanced_buttons2'] = $init['theme_advanced_buttons3']; + $init['theme_advanced_buttons3'] = array(); + } + + } break; } unset($init['buttons']); + unset($buttons); // Convert the config values into the form expected by TinyMCE. foreach ($init as $key => $value) {