diff --git a/apps/common/main/lib/component/SideMenu.js b/apps/common/main/lib/component/SideMenu.js index 0b43588c02..f2415dd3ec 100644 --- a/apps/common/main/lib/component/SideMenu.js +++ b/apps/common/main/lib/component/SideMenu.js @@ -90,6 +90,8 @@ define([ }, setMoreButton: function () { + if (!this.buttons.length) return; + var $more = this.btnMoreContainer; var btnHeight = this.buttons[0].cmpEl.outerHeight(true), diff --git a/apps/documenteditor/main/app/template/LeftMenu.template b/apps/documenteditor/main/app/template/LeftMenu.template index 846a7d173f..1a2675be9d 100644 --- a/apps/documenteditor/main/app/template/LeftMenu.template +++ b/apps/documenteditor/main/app/template/LeftMenu.template @@ -19,6 +19,5 @@ - \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/LeftMenu.js b/apps/documenteditor/main/app/view/LeftMenu.js index b824356a18..5aac0d9f6a 100644 --- a/apps/documenteditor/main/app/view/LeftMenu.js +++ b/apps/documenteditor/main/app/view/LeftMenu.js @@ -265,9 +265,6 @@ define([ if (name == 'history') { this.panelHistory = panel.render('#left-panel-history'); } else - if (name == 'plugins' && !this.panelPlugins) { - this.panelPlugins = panel.render(/*'#left-panel-plugins'*/); - } else if (name == 'navigation' && !this.panelNavigation) { this.panelNavigation = panel.render('#left-panel-navigation'); } else diff --git a/apps/pdfeditor/main/app/controller/LeftMenu.js b/apps/pdfeditor/main/app/controller/LeftMenu.js index 80088eab23..8de066868d 100644 --- a/apps/pdfeditor/main/app/controller/LeftMenu.js +++ b/apps/pdfeditor/main/app/controller/LeftMenu.js @@ -72,12 +72,15 @@ define([ 'hide': _.bind(this.aboutShowHide, this, true) }, 'Common.Views.Plugins': { - 'plugin:open': _.bind(this.onPluginOpen, this), - 'hide': _.bind(this.onHidePlugins, this) + 'plugins:addtoleft': _.bind(this.addNewPlugin, this), + 'plugins:open': _.bind(this.openPlugin, this), + 'plugins:close': _.bind(this.closePlugin, this), + 'hide': _.bind(this.onHidePlugins, this) }, 'LeftMenu': { 'comments:show': _.bind(this.commentsShowHide, this, 'show'), - 'comments:hide': _.bind(this.commentsShowHide, this, 'hide') + 'comments:hide': _.bind(this.commentsShowHide, this, 'hide'), + 'button:click': _.bind(this.onBtnCategoryClick, this) }, 'FileMenu': { 'menu:hide': _.bind(this.menuFilesShowHide, this, 'hide'), @@ -207,6 +210,7 @@ define([ (this.mode.trialMode || this.mode.isBeta) && this.leftMenu.setDeveloperMode(this.mode.trialMode, this.mode.isBeta, this.mode.buildVersion); Common.util.Shortcuts.resumeEvents(); + this.leftMenu.setMoreButton(); return this; }, @@ -509,11 +513,36 @@ define([ $(this.leftMenu.btnChat.el).blur(); Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); }, + /** coauthoring end **/ onHidePlugins: function() { Common.NotificationCenter.trigger('layout:changed', 'leftmenu'); }, - /** coauthoring end **/ + + addNewPlugin: function (button, $button, $panel) { + this.leftMenu.insertButton(button, $button); + this.leftMenu.insertPanel($panel); + }, + + onBtnCategoryClick: function (btn) { + if (btn.options.type === 'plugin' && !btn.isDisabled()) { + if (btn.pressed) { + this.tryToShowLeftMenu(); + this.leftMenu.fireEvent('plugins:showpanel', [btn.options.value]); // show plugin panel + } else { + this.leftMenu.fireEvent('plugins:hidepanel', [btn.options.value]); + } + this.leftMenu.onBtnMenuClick(btn); + } + }, + + openPlugin: function (guid) { + this.leftMenu.openPlugin(guid); + }, + + closePlugin: function (guid) { + this.leftMenu.closePlugin(guid); + }, onApiServerDisconnect: function(enableDownload) { this.mode.isEdit = false; @@ -523,8 +552,8 @@ define([ this.leftMenu.btnComments.setDisabled(true); this.leftMenu.btnChat.setDisabled(true); /** coauthoring end **/ - this.leftMenu.btnPlugins.setDisabled(true); this.leftMenu.btnNavigation.setDisabled(true); + this.leftMenu.setDisabledPluginButtons(true); this.leftMenu.getMenu('file').setMode({isDisconnected: true, enableDownload: !!enableDownload}); }, @@ -562,7 +591,7 @@ define([ if (!options || options.navigation && options.navigation.disable) this.leftMenu.btnNavigation.setDisabled(disable); - this.leftMenu.btnPlugins.setDisabled(disable); + this.leftMenu.setDisabledPluginButtons(disable); }, /** coauthoring begin **/ diff --git a/apps/pdfeditor/main/app/template/LeftMenu.template b/apps/pdfeditor/main/app/template/LeftMenu.template index 8ed01bd766..ecbff7e294 100644 --- a/apps/pdfeditor/main/app/template/LeftMenu.template +++ b/apps/pdfeditor/main/app/template/LeftMenu.template @@ -5,13 +5,13 @@ - +
-
+
@@ -19,6 +19,5 @@ -
\ No newline at end of file diff --git a/apps/pdfeditor/main/app/view/LeftMenu.js b/apps/pdfeditor/main/app/view/LeftMenu.js index 6b7c1a8430..11d9bed1de 100644 --- a/apps/pdfeditor/main/app/view/LeftMenu.js +++ b/apps/pdfeditor/main/app/view/LeftMenu.js @@ -42,6 +42,7 @@ define([ 'jquery', 'underscore', 'backbone', + 'common/main/lib/component/SideMenu', 'common/main/lib/component/Button', 'common/main/lib/view/About', /** coauthoring begin **/ @@ -59,23 +60,11 @@ define([ var SCALE_MIN = 40; var MENU_SCALE_PART = 300; - PDFE.Views.LeftMenu = Backbone.View.extend(_.extend({ + PDFE.Views.LeftMenu = Common.UI.SideMenu.extend(_.extend({ el: '#left-menu', template: _.template(menuTemplate), - // Delegated events for creating new items, and clearing completed ones. - events: function() { - return { - 'click #left-btn-support': function() { - var config = this.mode.customization; - config && !!config.feedback && !!config.feedback.url ? - window.open(config.feedback.url) : - window.open('{{SUPPORT_URL}}'); - } - } - }, - initialize: function () { this.minimizedMode = true; this._state = {disabled: false}; @@ -84,6 +73,10 @@ define([ render: function () { var $markup = $(this.template({})); + this.btnMoreContainer = $markup.find('#slot-left-menu-more'); + Common.UI.SideMenu.prototype.render.call(this); + this.btnMore.menu.menuAlign = 'tl-tr'; + this.btnSearchBar = new Common.UI.Button({ action: 'advancedsearch', el: $markup.elementById('#left-btn-searchbar'), @@ -113,6 +106,12 @@ define([ iconCls: 'btn-menu-support', disabled: true }); + this.btnSupport.on('click', _.bind(function() { + var config = this.mode.customization; + config && !!config.feedback && !!config.feedback.url ? + window.open(config.feedback.url) : + window.open('{{SUPPORT_URL}}'); + }, this)); /** coauthoring begin **/ this.btnComments = new Common.UI.Button({ @@ -141,17 +140,6 @@ define([ /** coauthoring end **/ - this.btnPlugins = new Common.UI.Button({ - el: $markup.elementById('#left-btn-plugins'), - hint: this.tipPlugins, - enableToggle: true, - disabled: true, - iconCls: 'btn-menu-plugin', - toggleGroup: 'leftMenuGroup' - }); - this.btnPlugins.hide(); - this.btnPlugins.on('click', this.onBtnMenuClick.bind(this)); - this.btnNavigation = new Common.UI.Button({ el: $markup.elementById('#left-btn-navigation'), hint: this.tipOutline, @@ -176,6 +164,8 @@ define([ this.btnThumbnails.hide(); this.btnThumbnails.on('click', this.onBtnMenuClick.bind(this)); + this.setButtons([this.btnSearchBar, this.btnComments, this.btnChat, this.btnNavigation, this.btnThumbnails, this.btnSupport, this.btnAbout]); + this.$el.html($markup); return this; @@ -262,12 +252,6 @@ define([ } } /** coauthoring end **/ - // if (this.mode.canPlugins && this.panelPlugins) { - // if (this.btnPlugins.pressed) { - // this.panelPlugins.show(); - // } else - // this.panelPlugins['hide'](); - // } }, setOptionsPanel: function(name, panel) { @@ -277,9 +261,6 @@ define([ } else if (name == 'comment') { this.panelComments = panel; } else /** coauthoring end **/ - if (name == 'plugins' && !this.panelPlugins) { - this.panelPlugins = panel.render(/*'#left-panel-plugins'*/); - } else if (name == 'navigation' && !this.panelNavigation) { this.panelNavigation = panel.render('#left-panel-navigation'); } else @@ -325,10 +306,6 @@ define([ } } /** coauthoring end **/ - if (this.mode.canPlugins && this.panelPlugins && !this._state.pluginIsRunning) { - this.panelPlugins['hide'](); - this.btnPlugins.toggle(false, true); - } if (this.panelNavigation) { this.panelNavigation['hide'](); this.btnNavigation.toggle(false); @@ -360,9 +337,9 @@ define([ this.btnComments.setDisabled(false); this.btnChat.setDisabled(false); /** coauthoring end **/ - this.btnPlugins.setDisabled(false); this.btnNavigation.setDisabled(false); this.btnThumbnails.setDisabled(false); + this.setDisabledAllMoreMenuItems(false); }, showMenu: function(menu, opts, suspendAfter) { diff --git a/apps/presentationeditor/main/app/template/LeftMenu.template b/apps/presentationeditor/main/app/template/LeftMenu.template index 32f6552717..7f58a0c0fd 100644 --- a/apps/presentationeditor/main/app/template/LeftMenu.template +++ b/apps/presentationeditor/main/app/template/LeftMenu.template @@ -17,6 +17,5 @@ - \ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/LeftMenu.js b/apps/presentationeditor/main/app/view/LeftMenu.js index 6b3fbc6548..5b1fd7fb36 100644 --- a/apps/presentationeditor/main/app/view/LeftMenu.js +++ b/apps/presentationeditor/main/app/view/LeftMenu.js @@ -246,9 +246,7 @@ define([ } else if (name == 'comment') { this.panelComments = panel; } else /** coauthoring end **/ - if (name == 'plugins' && !this.panelPlugins) { - this.panelPlugins = panel.render('#left-panel-plugins'); - } else if (name == 'history') { + if (name == 'history') { this.panelHistory = panel.render('#left-panel-history'); } else if (name == 'advancedsearch') { diff --git a/apps/spreadsheeteditor/main/app/template/LeftMenu.template b/apps/spreadsheeteditor/main/app/template/LeftMenu.template index 7bfc2de86b..de59f905af 100644 --- a/apps/spreadsheeteditor/main/app/template/LeftMenu.template +++ b/apps/spreadsheeteditor/main/app/template/LeftMenu.template @@ -18,6 +18,5 @@ - \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/LeftMenu.js b/apps/spreadsheeteditor/main/app/view/LeftMenu.js index 9b918886a4..e2e4a2ae76 100644 --- a/apps/spreadsheeteditor/main/app/view/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/view/LeftMenu.js @@ -227,9 +227,6 @@ define([ } else if (name == 'comment') { this.panelComments = panel; } else - if (name == 'plugins' && !this.panelPlugins) { - this.panelPlugins = panel.render('#left-panel-plugins'); - } else if (name == 'spellcheck' && !this.panelSpellcheck) { this.panelSpellcheck = panel.render('#left-panel-spellcheck'); } else if (name == 'history') {