MDL-34955 add full TinyMCE subplugin management

This commit is contained in:
Petr Škoda
2012-08-24 16:11:00 +02:00
parent caaccae5da
commit 0b7858221c
12 changed files with 273 additions and 8 deletions
+26
View File
@@ -40,6 +40,9 @@ abstract class editor_tinymce_plugin {
/** @var array Plugin settings */
protected $config = null;
/** @var array list of buttons defined by this plugin */
protected $buttons = array();
/**
* @param string $plugin Name of folder
*/
@@ -47,6 +50,15 @@ abstract class editor_tinymce_plugin {
$this->plugin = $plugin;
}
/**
* Returns list of buttons defined by this plugin.
* useful mostly as information when setting custom toolbar.
*
* @return array
*/
public function get_buttons() {
return $this->buttons;
}
/**
* Makes sure config is loaded and cached.
* @return void
@@ -326,9 +338,23 @@ abstract class editor_tinymce_plugin {
// Get list of plugin directories.
$plugins = get_plugin_list('tinymce');
// Get list of disabled subplugins.
$disabled = array();
if ($params['moodle_config']->disabledsubplugins) {
foreach (explode(',', $params['moodle_config']->disabledsubplugins) as $sp) {
$sp = trim($sp);
if ($sp !== '') {
$disabled[$sp] = $sp;
}
}
}
// Construct all the plugins.
$pluginobjects = array();
foreach ($plugins as $plugin => $dir) {
if (isset($disabled[$plugin])) {
continue;
}
require_once($dir . '/lib.php');
$classname = 'tinymce_' . $plugin;
$pluginobjects[] = new $classname($plugin);