MDL-37565 fixed PDW plugin to calculate number of button rows
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user