* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class tinymce_pdw extends editor_tinymce_plugin {
+ /**
+ * Adds pdw toggle button if there are more than one row of buttons in TinyMCE
+ *
+ * @param array $params TinyMCE init parameters array
+ * @param context $context Context where editor is being shown
+ * @param array $options Options for this editor
+ */
protected function update_init_params(array &$params, context $context,
array $options = null) {
- // Add button before 'undo' in advancedbuttons1.
- $this->add_button_before($params, 1, ' | ', '');
- $this->add_button_before($params, 1, 'pdw_toggle', '');
- $params['pdw_toggle_on'] = 1;
- $params['pdw_toggle_toolbars'] = '2,3';
+ $rowsnumber = $this->count_rows($params);
+ if ($rowsnumber > 1) {
+ // Add button before 'undo' in advancedbuttons1.
+ $this->add_button_before($params, 1, ' | ', '');
+ $this->add_button_before($params, 1, 'pdw_toggle', '');
+ $params['pdw_toggle_on'] = 1;
+ $params['pdw_toggle_toolbars'] = join(',', range(2, $rowsnumber));
- // Add JS file, which uses default name.
- $this->add_js_plugin($params);
+ // Add JS file, which uses default name.
+ $this->add_js_plugin($params);
+ }
+ }
+
+ /**
+ * Counts the number of rows in TinyMCE editor
+ *
+ * @param array $params TinyMCE init parameters array
+ * @return int the maximum existing row number
+ */
+ private function count_rows(array &$params) {
+ for($i = 10; $i >= 1; $i--) {
+ $field = 'theme_advanced_buttons' . $i;
+ if (isset($params[$field])) {
+ return $i;
+ }
+ }
+ // This should not happen.
+ return 1;
}
}