From 9ad87e7900e0454c77c9b45455149328c242e659 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Tue, 25 Mar 2014 12:25:16 +0800 Subject: [PATCH] MDL-44749 atto_collapse: Skip button inclusion if it will impact UX Do not show the collapse button if: * it's specified after the cut-off and would therefore be unusable; or * the total number of groups matches the number of groups to display anyway. --- .../moodle-atto_collapse-button-debug.js | 13 +++++++++++++ .../moodle-atto_collapse-button-min.js | 2 +- .../moodle-atto_collapse-button.js | 9 +++++++++ .../plugins/collapse/yui/src/button/js/button.js | 13 +++++++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-debug.js b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-debug.js index 0e112b81d00..8e960bcdb92 100644 --- a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-debug.js +++ b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-debug.js @@ -41,6 +41,19 @@ var PLUGINNAME = 'atto_collapse', Y.namespace('M.atto_collapse').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], { initializer: function() { + var toolbarGroupCount = Y.Object.size(this.get('host').get('plugins')); + if (toolbarGroupCount <= 1 + parseInt(this.get(ATTRSHOWGROUPS), 10)) { + Y.log("There are not enough groups to require toggling - not adding the button", + 'debug','moodle-atto_collapse'); + return; + } + + if (this.toolbar.all(GROUPS).size() > this.get(ATTRSHOWGROUPS)) { + Y.log("The collapse plugin is shown after it's cut-off - not adding the button", + 'debug','moodle-atto_collapse'); + return; + } + var button = this.addButton({ icon: M.util.image_url('icon', PLUGINNAME), callback: this._toggle diff --git a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-min.js b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-min.js index b1db4f6373c..17b95ce8eb2 100644 --- a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-min.js +++ b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button-min.js @@ -1 +1 @@ -YUI.add("moodle-atto_collapse-button",function(e,t){var n="atto_collapse",r="showgroups",i="collapse",s="collapsed",o=".atto_group";e.namespace("M.atto_collapse").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var e=this.addButton({icon:M.util.image_url("icon",n),callback:this._toggle});this.get("host").on("pluginsloaded",function(e,t){this._setVisibility(t);var n=this.toolbar.all(o).item(this.get(r));n.insert('
',"before")},this,e)},_toggle:function(e){e.preventDefault();var t=this.buttons[i];t.getData(s)?this._setVisibility(t,!0):this._setVisibility(t)},_setVisibility:function(e,t){var i=this.toolbar.all(o).slice(this.get(r));t?(e.set("title",M.util.get_string("showfewer",n)),i.show(),e.setData(s,!1)):(e.set("title",M.util.get_string("showmore",n)),i.hide(),e.setData(s,!0))}},{ATTRS:{showgroups:{value:3}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); +YUI.add("moodle-atto_collapse-button",function(e,t){var n="atto_collapse",r="showgroups",i="collapse",s="collapsed",o=".atto_group";e.namespace("M.atto_collapse").Button=e.Base.create("button",e.M.editor_atto.EditorPlugin,[],{initializer:function(){var t=e.Object.size(this.get("host").get("plugins"));if(t<=1+parseInt(this.get(r),10))return;if(this.toolbar.all(o).size()>this.get(r))return;var i=this.addButton({icon:M.util.image_url("icon",n),callback:this._toggle});this.get("host").on("pluginsloaded",function(e,t){this._setVisibility(t);var n=this.toolbar.all(o).item(this.get(r));n.insert('
',"before")},this,i)},_toggle:function(e){e.preventDefault();var t=this.buttons[i];t.getData(s)?this._setVisibility(t,!0):this._setVisibility(t)},_setVisibility:function(e,t){var i=this.toolbar.all(o).slice(this.get(r));t?(e.set("title",M.util.get_string("showfewer",n)),i.show(),e.setData(s,!1)):(e.set("title",M.util.get_string("showmore",n)),i.hide(),e.setData(s,!0))}},{ATTRS:{showgroups:{value:3}}})},"@VERSION@",{requires:["moodle-editor_atto-plugin"]}); diff --git a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button.js b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button.js index 0e112b81d00..b678848e930 100644 --- a/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button.js +++ b/lib/editor/atto/plugins/collapse/yui/build/moodle-atto_collapse-button/moodle-atto_collapse-button.js @@ -41,6 +41,15 @@ var PLUGINNAME = 'atto_collapse', Y.namespace('M.atto_collapse').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], { initializer: function() { + var toolbarGroupCount = Y.Object.size(this.get('host').get('plugins')); + if (toolbarGroupCount <= 1 + parseInt(this.get(ATTRSHOWGROUPS), 10)) { + return; + } + + if (this.toolbar.all(GROUPS).size() > this.get(ATTRSHOWGROUPS)) { + return; + } + var button = this.addButton({ icon: M.util.image_url('icon', PLUGINNAME), callback: this._toggle diff --git a/lib/editor/atto/plugins/collapse/yui/src/button/js/button.js b/lib/editor/atto/plugins/collapse/yui/src/button/js/button.js index 96007ce29b3..8bc61138608 100644 --- a/lib/editor/atto/plugins/collapse/yui/src/button/js/button.js +++ b/lib/editor/atto/plugins/collapse/yui/src/button/js/button.js @@ -39,6 +39,19 @@ var PLUGINNAME = 'atto_collapse', Y.namespace('M.atto_collapse').Button = Y.Base.create('button', Y.M.editor_atto.EditorPlugin, [], { initializer: function() { + var toolbarGroupCount = Y.Object.size(this.get('host').get('plugins')); + if (toolbarGroupCount <= 1 + parseInt(this.get(ATTRSHOWGROUPS), 10)) { + Y.log("There are not enough groups to require toggling - not adding the button", + 'debug','moodle-atto_collapse'); + return; + } + + if (this.toolbar.all(GROUPS).size() > this.get(ATTRSHOWGROUPS)) { + Y.log("The collapse plugin is shown after it's cut-off - not adding the button", + 'debug','moodle-atto_collapse'); + return; + } + var button = this.addButton({ icon: M.util.image_url('icon', PLUGINNAME), callback: this._toggle