From e347b92a0f575bb3b2c0fc89d9385d82b7b0e813 Mon Sep 17 00:00:00 2001
From: Julia Radzhabova <Julia.Radzhabova@onlyoffice.com>
Date: Tue, 11 Jun 2019 10:52:13 +0300
Subject: [PATCH] Use ButtonsArray for group of buttons

---
 apps/common/main/lib/util/utils.js            | 24 ++++++
 .../main/app/controller/Toolbar.js            | 17 +---
 apps/documenteditor/main/app/view/Toolbar.js  | 26 +-----
 .../main/app/controller/Toolbar.js            |  2 +-
 .../main/app/view/Toolbar.js                  | 80 +++----------------
 .../main/app/controller/Toolbar.js            |  2 +-
 6 files changed, 40 insertions(+), 111 deletions(-)

diff --git a/apps/common/main/lib/util/utils.js b/apps/common/main/lib/util/utils.js
index cb43d2b98..8d3dd460a 100644
--- a/apps/common/main/lib/util/utils.js
+++ b/apps/common/main/lib/util/utils.js
@@ -822,6 +822,30 @@ Common.Utils.lockControls = function(causes, lock, opts, defControls) {
     });
 };
 
+Common.Utils.injectButtons = function($slots, id, iconCls, caption, lock, split, menu, toggle) {
+    var btnsArr = createButtonSet();
+    id = id || ("id-toolbar-" + iconCls);
+    $slots.each(function(index, el) {
+        var _cls = 'btn-toolbar';
+        /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');
+
+        var button = new Common.UI.Button({
+            id: id + index,
+            cls: _cls,
+            iconCls: iconCls,
+            caption: caption,
+            split: split || false,
+            menu: menu || false,
+            enableToggle: toggle || false,
+            lock: lock,
+            disabled: true
+        }).render( $slots.eq(index) );
+
+        btnsArr.add(button);
+    });
+    return btnsArr;
+};
+
 Common.Utils.injectComponents = function ($slots, id, iconCls, caption, lock, split, menu, toggle) {
     var btnsArr = [];
     id = id || ("id-toolbar-" + iconCls);
diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js
index 3300ce1e3..7a6dea2ba 100644
--- a/apps/documenteditor/main/app/controller/Toolbar.js
+++ b/apps/documenteditor/main/app/controller/Toolbar.js
@@ -2832,22 +2832,7 @@ define([
             me.appOptions = config;
 
             if ( config.canCoAuthoring && config.canComments ) {
-                this.btnsComment = createButtonSet();
-                var slots = me.toolbar.$el.find('.slot-comment');
-                slots.each(function(index, el) {
-                    var _cls = 'btn-toolbar';
-                    /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');
-
-                    var button = new Common.UI.Button({
-                        id: 'tlbtn-addcomment-' + index,
-                        cls: _cls,
-                        iconCls: 'btn-menu-comments',
-                        caption: me.toolbar.capBtnComment
-                    }).render( slots.eq(index) );
-
-                    me.btnsComment.add(button);
-                });
-
+                this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', this.toolbar.capBtnComment);
                 if ( this.btnsComment.length ) {
                     var _comments = DE.getController('Common.Controllers.Comments').getView();
                     this.btnsComment.forEach(function (btn) {
diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js
index 237dcfbee..441865be0 100644
--- a/apps/documenteditor/main/app/view/Toolbar.js
+++ b/apps/documenteditor/main/app/view/Toolbar.js
@@ -1319,30 +1319,8 @@ define([
                 _injectComponent('#slot-img-movebkwd', this.btnImgBackward);
                 _injectComponent('#slot-img-wrapping', this.btnImgWrapping);
 
-                +function injectBreakButtons() {
-                    var me = this;
-
-                    me.btnsPageBreak = createButtonSet();
-
-                    var $slots = $host.find('.btn-slot.btn-pagebreak');
-                    $slots.each(function(index, el) {
-                        var _cls = 'btn-toolbar';
-                        /x-huge/.test(el.className) && (_cls += ' x-huge icon-top');
-
-                        var button = new Common.UI.Button({
-                            cls: _cls,
-                            iconCls: 'btn-pagebreak',
-                            caption: me.capBtnInsPagebreak,
-                            split: true,
-                            menu: true
-                        }).render( $slots.eq(index) );
-
-                        me.btnsPageBreak.add(button);
-                    });
-                    me.btnsPageBreak.setDisabled(true);
-
-                    Array.prototype.push.apply(me.paragraphControls, me.btnsPageBreak);
-                }.call(this);
+                this.btnsPageBreak = Common.Utils.injectButtons($host.find('.btn-slot.btn-pagebreak'), '', 'btn-pagebreak', this.capBtnInsPagebreak, undefined, true, true);
+                Array.prototype.push.apply(this.paragraphControls, this.btnsPageBreak);
 
                 return $host;
             },
diff --git a/apps/presentationeditor/main/app/controller/Toolbar.js b/apps/presentationeditor/main/app/controller/Toolbar.js
index a0583e043..00504db9f 100644
--- a/apps/presentationeditor/main/app/controller/Toolbar.js
+++ b/apps/presentationeditor/main/app/controller/Toolbar.js
@@ -2052,7 +2052,7 @@ define([
             this.btnsComment = [];
             if ( config.canCoAuthoring && config.canComments ) {
                 var _set = PE.enumLock;
-                me.btnsComment = Common.Utils.injectComponents(me.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', me.toolbar.capBtnComment, [_set.lostConnect, _set.noSlides]);
+                this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', me.toolbar.capBtnComment, [_set.lostConnect, _set.noSlides]);
 
                 if ( this.btnsComment.length ) {
                     var _comments = PE.getController('Common.Controllers.Comments').getView();
diff --git a/apps/presentationeditor/main/app/view/Toolbar.js b/apps/presentationeditor/main/app/view/Toolbar.js
index 8d8e5f850..85648a5a6 100644
--- a/apps/presentationeditor/main/app/view/Toolbar.js
+++ b/apps/presentationeditor/main/app/view/Toolbar.js
@@ -926,78 +926,20 @@ define([
                 _injectComponent('#slot-btn-slidesize', this.btnSlideSize);
                 _injectComponent('#slot-field-styles', this.listTheme);
 
-                function _injectBtns(opts) {
-                    var array = createButtonSet();
-                    var $slots = $host.find(opts.slot);
-                    var id = opts.btnconfig.id;
-                    $slots.each(function(index, el) {
-                        if ( !!id ) opts.btnconfig.id = id + index;
+                this.btnsInsertImage = Common.Utils.injectButtons($host.find('.slot-insertimg'), 'tlbtn-insertimage-', 'btn-insertimage', this.capInsertImage,
+                    [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, true);
+                this.btnsInsertText = Common.Utils.injectButtons($host.find('.slot-instext'), 'tlbtn-inserttext-', 'btn-text', this.capInsertText,
+                    [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, false, true);
+                this.btnsInsertShape = Common.Utils.injectButtons($host.find('.slot-insertshape'), 'tlbtn-insertshape-', 'btn-insertshape', this.capInsertShape,
+                    [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart], false, true, true);
+                this.btnsAddSlide = Common.Utils.injectButtons($host.find('.slot-addslide'), 'tlbtn-addslide-', 'btn-addslide', this.capAddSlide,
+                    [PE.enumLock.menuFileOpen, PE.enumLock.lostConnect, PE.enumLock.disableOnStart], true, true);
 
-                        var button = new Common.UI.Button(opts.btnconfig);
-                        button.render( $slots.eq(index) );
-
-                        array.add(button);
-                    });
-
-                    return array;
-                }
-
-                var me = this;
-                me.btnsInsertImage = _injectBtns({
-                    slot: '.slot-insertimg',
-                    btnconfig: {
-                        id          : 'tlbtn-insertimage-',
-                        cls         : 'btn-toolbar x-huge icon-top',
-                        iconCls     : 'btn-insertimage',
-                        caption     : me.capInsertImage,
-                        lock        : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart],
-                        menu        : true
-                    }
-                });
-
-                me.btnsInsertText = _injectBtns({
-                    slot: '.slot-instext',
-                    btnconfig: {
-                        id          : 'tlbtn-inserttext-',
-                        cls         : 'btn-toolbar x-huge icon-top',
-                        iconCls     : 'btn-text',
-                        caption     : me.capInsertText,
-                        lock        : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart],
-                        enableToggle: true
-                    }
-                });
-
-                me.btnsInsertShape = _injectBtns({
-                    slot: '.slot-insertshape',
-                    btnconfig: {
-                        id          : 'tlbtn-insertshape-',
-                        cls         : 'btn-toolbar x-huge icon-top',
-                        iconCls     : 'btn-insertshape',
-                        caption     : me.capInsertShape,
-                        lock        : [PE.enumLock.slideDeleted, PE.enumLock.lostConnect, PE.enumLock.noSlides, PE.enumLock.disableOnStart],
-                        enableToggle: true,
-                        menu        : true
-                    }
-                });
-
-                me.btnsAddSlide = _injectBtns({
-                    slot: '.slot-addslide',
-                    btnconfig: {
-                        id          : 'tlbtn-addslide-',
-                        cls         : 'btn-toolbar x-huge icon-top',
-                        iconCls     : 'btn-addslide',
-                        split       : true,
-                        caption     : me.capAddSlide,
-                        lock        : [PE.enumLock.menuFileOpen, PE.enumLock.lostConnect, PE.enumLock.disableOnStart],
-                        menu        : true
-                    }
-                });
-
-                var created = me.btnsInsertImage.concat(me.btnsInsertText, me.btnsInsertShape, me.btnsAddSlide);
+                var created = this.btnsInsertImage.concat(this.btnsInsertText, this.btnsInsertShape, this.btnsAddSlide);
                 this.lockToolbar(PE.enumLock.disableOnStart, true, {array: created});
 
-                Array.prototype.push.apply(me.slideOnlyControls, created);
-                Array.prototype.push.apply(me.lockControls, created);
+                Array.prototype.push.apply(this.slideOnlyControls, created);
+                Array.prototype.push.apply(this.lockControls, created);
 
                 return $host;
             },
diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js
index ae86c1cbe..0381898ca 100644
--- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js
+++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js
@@ -3147,7 +3147,7 @@ define([
             this.btnsComment = [];
             if ( config.canCoAuthoring && config.canComments ) {
                 var _set = SSE.enumLock;
-                me.btnsComment = Common.Utils.injectComponents(me.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', me.toolbar.capBtnComment, [_set.lostConnect, _set.commentLock]);
+                this.btnsComment = Common.Utils.injectButtons(this.toolbar.$el.find('.slot-comment'), 'tlbtn-addcomment-', 'btn-menu-comments', this.toolbar.capBtnComment, [_set.lostConnect, _set.commentLock]);
 
                 if ( this.btnsComment.length ) {
                     var _comments = SSE.getController('Common.Controllers.Comments').getView();