diff --git a/lib/editor/tinymce/plugins/pdw/lib.php b/lib/editor/tinymce/plugins/pdw/lib.php index dbac6cc117f..ad1eee3c530 100644 --- a/lib/editor/tinymce/plugins/pdw/lib.php +++ b/lib/editor/tinymce/plugins/pdw/lib.php @@ -24,16 +24,43 @@ defined('MOODLE_INTERNAL') || die(); * @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; } }