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 @@
-
+
-
\ 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') {