MDL-37565 fixed PDW plugin to calculate number of button rows

This commit is contained in:
Marina Glancy
2013-07-11 14:47:58 +10:00
parent 51230ba88e
commit bf50508f06
+34 -7
View File
@@ -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;
}
}