From 2aa9ee56fd8f4e36c9d5c65cf1b7dc15def11f82 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 27 Oct 2015 17:18:23 +0100 Subject: [PATCH] Fix so disabling emoticons plugin really removes emoticons button from HTML editor --- plugins/emoticons/emoticons.php | 6 +++--- program/include/rcmail.php | 6 ++++++ program/js/editor.js | 17 ++++++++++++++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php index cb90b6fbf..d5f0e9a16 100644 --- a/plugins/emoticons/emoticons.php +++ b/plugins/emoticons/emoticons.php @@ -122,9 +122,9 @@ class emoticons extends rcube_plugin $this->load_config(); - if (!$rcube->config->get('emoticons_compose', true)) { - $args['disabled_plugins'][] = 'emoticons'; - $args['disabled_buttons'][] = 'emoticons'; + if ($rcube->config->get('emoticons_compose', true)) { + $args['extra_plugins'][] = 'emoticons'; + $args['extra_buttons'][] = 'emoticons'; } return $args; diff --git a/program/include/rcmail.php b/program/include/rcmail.php index d74b70534..d64ba2d93 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1884,6 +1884,8 @@ class rcmail extends rcube $spelldict = intval($this->config->get('spellcheck_dictionary')); $disabled_plugins = array(); $disabled_buttons = array(); + $extra_plugins = array(); + $extra_buttons = array(); if (!$spellcheck) { $disabled_plugins[] = 'spellchecker'; @@ -1893,6 +1895,8 @@ class rcmail extends rcube 'mode' => $mode, 'disabled_plugins' => $disabled_plugins, 'disabled_buttons' => $disabled_buttons, + 'extra_plugins' => $extra_plugins, + 'extra_buttons' => $extra_buttons, )); if ($hook['abort']) { @@ -1924,6 +1928,8 @@ class rcmail extends rcube 'spelldict' => $spelldict, 'disabled_plugins' => $hook['disabled_plugins'], 'disabled_buttons' => $hook['disabled_buttons'], + 'extra_plugins' => $hook['extra_plugins'], + 'extra_buttons' => $hook['extra_buttons'], ); $this->output->add_label('selectimage', 'addimage', 'selectmedia', 'addmedia'); diff --git a/program/js/editor.js b/program/js/editor.js index 3a76ad0b0..50ba03da6 100644 --- a/program/js/editor.js +++ b/program/js/editor.js @@ -88,11 +88,11 @@ function rcube_text_editor(config, id) // full-featured editor else { $.extend(conf, { - plugins: 'autolink charmap code colorpicker directionality emoticons link image media nonbreaking' + plugins: 'autolink charmap code colorpicker directionality link image media nonbreaking' + ' paste table tabfocus textcolor searchreplace spellchecker', toolbar: 'bold italic underline | alignleft aligncenter alignright alignjustify' + ' | bullist numlist outdent indent ltr rtl blockquote | forecolor backcolor | fontselect fontsizeselect' - + ' | link unlink table | emoticons charmap image media | code searchreplace undo redo', + + ' | link unlink table | $extra charmap image media | code searchreplace undo redo', spellchecker_rpc_url: abs_url + '/?_task=utils&_action=spell_html&_remote=1', spellchecker_language: rcmail.env.spell_lang, accessibility_focus: false, @@ -102,6 +102,16 @@ function rcube_text_editor(config, id) }); } + // add TinyMCE plugins/buttons from Roundcube plugin + $.each(config.extra_plugins || [], function() { + if (conf.plugins.indexOf(this) < 0) + conf.plugins = conf.plugins + ' ' + this; + }); + $.each(config.extra_buttons || [], function() { + if (conf.toolbar.indexOf(this) < 0) + conf.toolbar = conf.toolbar.replace('$extra', '$extra ' + this); + }); + // disable TinyMCE plugins/buttons from Roundcube plugin $.each(config.disabled_plugins || [], function() { conf.plugins = conf.plugins.replace(this, ''); @@ -109,7 +119,8 @@ function rcube_text_editor(config, id) $.each(config.disabled_buttons || [], function() { conf.toolbar = conf.toolbar.replace(this, ''); }); - conf.toolbar = conf.toolbar.replace(/\|\s+\|/g, '|'); + + conf.toolbar = conf.toolbar.replace('$extra', '').replace(/\|\s+\|/g, '|'); // support external configuration settings e.g. from skin if (window.rcmail_editor_settings)