diff --git a/apps/common/main/lib/controller/Desktop.js b/apps/common/main/lib/controller/Desktop.js index 5c0295d90..a064822b7 100644 --- a/apps/common/main/lib/controller/Desktop.js +++ b/apps/common/main/lib/controller/Desktop.js @@ -374,6 +374,7 @@ define([ Common.NotificationCenter.on({ 'modal:show': _onModalDialog.bind(this, 'open'), 'modal:close': _onModalDialog.bind(this, 'close'), + 'modal:hide': _onModalDialog.bind(this, 'hide'), 'uitheme:changed' : function (name) { if (Common.localStorage.getBool('ui-theme-use-system', false)) { native.execCommand("uitheme:changed", JSON.stringify({name:'theme-system'})); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 24a19bea1..f6b100557 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -1510,8 +1510,7 @@ define([ this.appOptions.canEditStyles = this.appOptions.canLicense && this.appOptions.canEdit; this.appOptions.canPrint = (this.permissions.print !== false); this.appOptions.canPreviewPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp; - this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp && - !(this.editorConfig.customization && this.editorConfig.customization.compactHeader); + this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp; this.appOptions.canRename = this.editorConfig.canRename; this.appOptions.buildVersion = params.asc_getBuildVersion(); this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave); diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index f6af81f09..c7d827b5e 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -377,6 +377,7 @@ define([ Common.Gateway.on('setmailmergerecipients', _.bind(this.setMailMergeRecipients, this)); $('#id-toolbar-menu-new-control-color').on('click', _.bind(this.onNewControlsColor, this)); toolbar.listStylesAdditionalMenuItem.on('click', this.onMenuSaveStyle.bind(this)); + toolbar.btnPrint.menu && toolbar.btnPrint.menu.on('item:click', _.bind(this.onPrintMenu, this)); this.onSetupCopyStyleButton(); this.onBtnChangeState('undo:disabled', toolbar.btnUndo, toolbar.btnUndo.isDisabled()); @@ -1070,11 +1071,31 @@ define([ }, onPrint: function(e) { - Common.NotificationCenter.trigger('file:print', this.toolbar); - Common.NotificationCenter.trigger('edit:complete', this.toolbar); - + if (this.toolbar.btnPrint.options.printType == 'print') { + Common.NotificationCenter.trigger('file:print', this.toolbar); + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + } else { + var _main = this.getApplication().getController('Main'); + _main.onPrintQuick(); + } Common.component.Analytics.trackEvent('Print'); Common.component.Analytics.trackEvent('ToolBar', 'Print'); + + }, + + onPrintMenu: function (btn, e){ + var oldType = this.toolbar.btnPrint.options.printType; + var newType = e.value; + + if(newType != oldType) { + this.toolbar.btnPrint.changeIcon({ + next: e.options.iconClsForMainBtn, + curr: this.toolbar.btnPrint.menu.items.filter(function(item){return item.value == oldType;})[0].options.iconClsForMainBtn + }); + this.toolbar.btnPrint.updateHint([e.caption + e.options.platformKey]); + this.toolbar.btnPrint.options.printType = newType; + } + this.onPrint(e); }, onSave: function(e) { diff --git a/apps/documenteditor/main/app/view/FileMenuPanels.js b/apps/documenteditor/main/app/view/FileMenuPanels.js index b6174012b..45b458d75 100644 --- a/apps/documenteditor/main/app/view/FileMenuPanels.js +++ b/apps/documenteditor/main/app/view/FileMenuPanels.js @@ -782,7 +782,7 @@ define([ $('tr.comments', this.el)[mode.canCoAuthoring ? 'show' : 'hide'](); /** coauthoring end **/ - $('tr.quick-print', this.el)[mode.canQuickPrint ? 'show' : 'hide'](); + $('tr.quick-print', this.el)[mode.canQuickPrint && !(mode.customization && mode.customization.compactHeader && mode.isEdit) ? 'show' : 'hide'](); $('tr.macros', this.el)[(mode.customization && mode.customization.macros===false) ? 'hide' : 'show'](); if ( !Common.UI.Themes.available() ) { $('tr.themes, tr.themes + tr.divider', this.el).hide(); diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 6a1efa4f3..b5126912f 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -191,9 +191,12 @@ define([ iconCls: 'toolbar__icon btn-print no-mask', lock: [_set.cantPrint, _set.disableOnStart], signals: ['disabled'], + split: config.canQuickPrint, + menu: config.canQuickPrint, dataHint: '1', dataHintDirection: 'bottom', - dataHintTitle: 'P' + dataHintTitle: 'P', + printType: 'print' }); this.toolbarControls.push(this.btnPrint); @@ -1751,7 +1754,7 @@ define([ true, true, undefined, '1', 'bottom', 'small'); Array.prototype.push.apply(this.paragraphControls, this.btnsPageBreak); Array.prototype.push.apply(this.lockControls, this.btnsPageBreak); - + this.btnPrint.menu && this.btnPrint.$el.addClass('split'); return $host; }, @@ -1762,6 +1765,30 @@ define([ })).then(function () { if ( !config.isEdit ) return; + if(me.btnPrint.menu){ + me.btnPrint.setMenu( + new Common.UI.Menu({ + items:[ + { + caption: me.tipPrint, + iconCls: 'menu__icon btn-print', + toggleGroup: 'viewPrint', + value: 'print', + iconClsForMainBtn: 'btn-print', + platformKey: Common.Utils.String.platformKey('Ctrl+P') + }, + { + caption: me.tipPrintQuick, + iconCls: 'menu__icon btn-quick-print', + toggleGroup: 'viewPrint', + value: 'print-quick', + iconClsForMainBtn: 'btn-quick-print', + platformKey: '' + } + ] + })); + } + me.btnsPageBreak.forEach( function(btn) { btn.updateHint( [me.textInsPageBreak, me.tipPageBreak] ); @@ -2049,6 +2076,7 @@ define([ ids.push('id-toolbar-menu-markers-level-' + i); items.push({template: levelTemplate, previewId: ids[i], level: i, checkable: true }); } + this.btnMarkers.setMenu( new Common.UI.Menu({ cls: 'shifted-left', @@ -2768,6 +2796,7 @@ define([ tipUndo: 'Undo', tipRedo: 'Redo', tipPrint: 'Print', + tipPrintQuick: 'Quick print', tipSave: 'Save', tipIncFont: 'Increment font size', tipDecFont: 'Decrement font size', diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index bc00ce9f4..933521890 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -3153,6 +3153,7 @@ "DE.Views.Toolbar.tipPaste": "Paste", "DE.Views.Toolbar.tipPrColor": "Shading", "DE.Views.Toolbar.tipPrint": "Print", + "DE.Views.Toolbar.tipPrintQuick": "Quick print", "DE.Views.Toolbar.tipRedo": "Redo", "DE.Views.Toolbar.tipSave": "Save", "DE.Views.Toolbar.tipSaveCoauth": "Save your changes for the other users to see them.", diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index 246bbb588..3b34cf287 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -1191,8 +1191,7 @@ define([ } this.appOptions.canPrint = (this.permissions.print !== false); this.appOptions.canPreviewPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp; - this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp && - !(this.editorConfig.customization && this.editorConfig.customization.compactHeader); + this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp; this.appOptions.canRename = this.editorConfig.canRename; this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave); this.appOptions.forcesave = this.appOptions.canForcesave; diff --git a/apps/presentationeditor/main/app/controller/Toolbar.js b/apps/presentationeditor/main/app/controller/Toolbar.js index 37c7f482b..b7ca61bbf 100644 --- a/apps/presentationeditor/main/app/controller/Toolbar.js +++ b/apps/presentationeditor/main/app/controller/Toolbar.js @@ -293,6 +293,7 @@ define([ toolbar.btnPreview.menu.on('item:click', _.bind(this.onPreviewItemClick, this)); toolbar.btnPrint.on('click', _.bind(this.onPrint, this)); toolbar.btnPrint.on('disabled', _.bind(this.onBtnChangeState, this, 'print:disabled')); + toolbar.btnPrint.menu && toolbar.btnPrint.menu.on('item:click', _.bind(this.onPrintMenu, this)); toolbar.btnSave.on('click', _.bind(this.onSave, this)); toolbar.btnUndo.on('click', _.bind(this.onUndo, this)); toolbar.btnUndo.on('disabled', _.bind(this.onBtnChangeState, this, 'undo:disabled')); @@ -1083,13 +1084,33 @@ define([ }, onPrint: function(e) { - Common.NotificationCenter.trigger('file:print', this.toolbar); - Common.NotificationCenter.trigger('edit:complete', this.toolbar); + if (this.toolbar.btnPrint.options.printType == 'print') { + Common.NotificationCenter.trigger('file:print', this.toolbar); + Common.NotificationCenter.trigger('edit:complete', this.toolbar); + } else { + var _main = this.getApplication().getController('Main'); + _main.onPrintQuick(); + } Common.component.Analytics.trackEvent('Print'); Common.component.Analytics.trackEvent('ToolBar', 'Print'); }, + onPrintMenu: function (btn, e){ + var oldType = this.toolbar.btnPrint.options.printType; + var newType = e.value; + + if(newType != oldType) { + this.toolbar.btnPrint.changeIcon({ + next: e.options.iconClsForMainBtn, + curr: this.toolbar.btnPrint.menu.items.filter(function(item){return item.value == oldType;})[0].options.iconClsForMainBtn + }); + this.toolbar.btnPrint.updateHint([e.caption + e.options.platformKey]); + this.toolbar.btnPrint.options.printType = newType; + } + this.onPrint(e); + }, + onSave: function(e) { var toolbar = this.toolbar; if (this.api && this.api.asc_isDocumentCanSave) { diff --git a/apps/presentationeditor/main/app/view/FileMenuPanels.js b/apps/presentationeditor/main/app/view/FileMenuPanels.js index 523cdff75..13301004e 100644 --- a/apps/presentationeditor/main/app/view/FileMenuPanels.js +++ b/apps/presentationeditor/main/app/view/FileMenuPanels.js @@ -613,7 +613,7 @@ define([ $('tr.live-viewer', this.el)[mode.canLiveView && !mode.isOffline && mode.canChangeCoAuthoring ? 'show' : 'hide'](); $('tr.macros', this.el)[(mode.customization && mode.customization.macros===false) ? 'hide' : 'show'](); $('tr.spellcheck', this.el)[mode.isEdit && Common.UI.FeaturesManager.canChange('spellcheck') ? 'show' : 'hide'](); - $('tr.quick-print', this.el)[mode.canQuickPrint ? 'show' : 'hide'](); + $('tr.quick-print', this.el)[mode.canQuickPrint && !(mode.customization && mode.customization.compactHeader && mode.isEdit) ? 'show' : 'hide'](); if ( !Common.UI.Themes.available() ) { $('tr.themes, tr.themes + tr.divider', this.el).hide(); diff --git a/apps/presentationeditor/main/app/view/Toolbar.js b/apps/presentationeditor/main/app/view/Toolbar.js index 4aa5eac3d..e3f6d8a3a 100644 --- a/apps/presentationeditor/main/app/view/Toolbar.js +++ b/apps/presentationeditor/main/app/view/Toolbar.js @@ -211,9 +211,12 @@ define([ iconCls: 'toolbar__icon btn-print no-mask', lock: [_set.slideDeleted, _set.noSlides, _set.cantPrint, _set.disableOnStart], signals: ['disabled'], + split: config.canQuickPrint, + menu: config.canQuickPrint, dataHint: '1', dataHintDirection: 'bottom', - dataHintTitle: 'P' + dataHintTitle: 'P', + printType: 'print' }); me.slideOnlyControls.push(me.btnPrint); @@ -1309,6 +1312,7 @@ define([ Array.prototype.push.apply(this.slideOnlyControls, created); Array.prototype.push.apply(this.lockControls, created); + this.btnPrint.menu && this.btnPrint.$el.addClass('split'); return $host; }, @@ -1316,6 +1320,30 @@ define([ var me = this; if (!config.isEdit) return; + if(me.btnPrint.menu) { + me.btnPrint.setMenu( + new Common.UI.Menu({ + items:[ + { + caption: me.tipPrint, + iconCls: 'menu__icon btn-print', + toggleGroup: 'viewPrint', + value: 'print', + iconClsForMainBtn: 'btn-print', + platformKey: Common.Utils.String.platformKey('Ctrl+P') + }, + { + caption: me.tipPrintQuick, + iconCls: 'menu__icon btn-quick-print', + toggleGroup: 'viewPrint', + value: 'print-quick', + iconClsForMainBtn: 'btn-quick-print', + platformKey: '' + } + ] + })); + } + me.btnsInsertImage.forEach(function (btn) { btn.updateHint(me.tipInsertImage); btn.setMenu( @@ -2006,6 +2034,7 @@ define([ tipUndo: 'Undo', tipRedo: 'Redo', tipPrint: 'Print', + tipPrintQuick: 'Quick print', tipSave: 'Save', tipFontColor: 'Font color', tipMarkers: 'Bullets', diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index 166b3d3e4..30e4dd87a 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -2540,6 +2540,7 @@ "PE.Views.Toolbar.tipPaste": "Paste", "PE.Views.Toolbar.tipPreview": "Start slideshow", "PE.Views.Toolbar.tipPrint": "Print", + "PE.Views.Toolbar.tipPrintQuick": "Quick print", "PE.Views.Toolbar.tipRedo": "Redo", "PE.Views.Toolbar.tipSave": "Save", "PE.Views.Toolbar.tipSaveCoauth": "Save your changes for the other users to see them.", diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 0dab37b05..946af7870 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -1309,8 +1309,7 @@ define([ this.appOptions.isEdit = (this.appOptions.canLicense || this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge || this.appOptions.isEditOle) && this.permissions.edit !== false && this.editorConfig.mode !== 'view'; this.appOptions.canDownload = (this.permissions.download !== false); this.appOptions.canPrint = (this.permissions.print !== false) && !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge || this.appOptions.isEditOle); - this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp && - !(this.editorConfig.customization && this.editorConfig.customization.compactHeader); + this.appOptions.canQuickPrint = this.appOptions.canPrint && !Common.Utils.isMac && this.appOptions.isDesktopApp; this.appOptions.canForcesave = this.appOptions.isEdit && !this.appOptions.isOffline && !(this.appOptions.isEditDiagram || this.appOptions.isEditMailMerge || this.appOptions.isEditOle) && (typeof (this.editorConfig.customization) == 'object' && !!this.editorConfig.customization.forcesave); this.appOptions.forcesave = this.appOptions.canForcesave; diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index e36540bab..6c137fb54 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -365,6 +365,7 @@ define([ } else { toolbar.btnPrint.on('click', _.bind(this.onPrint, this)); toolbar.btnPrint.on('disabled', _.bind(this.onBtnChangeState, this, 'print:disabled')); + toolbar.btnPrint.menu && toolbar.btnPrint.menu.on('item:click', _.bind(this.onPrintMenu, this)); toolbar.btnSave.on('click', _.bind(this.onSave, this)); toolbar.btnSave.on('disabled', _.bind(this.onBtnChangeState, this, 'save:disabled')); toolbar.btnUndo.on('click', _.bind(this.onUndo, this)); @@ -533,7 +534,27 @@ define([ }, onPrint: function(e) { - Common.NotificationCenter.trigger('print', this.toolbar); + if (this.toolbar.btnPrint.options.printType == 'print') { + Common.NotificationCenter.trigger('print', this.toolbar); + } else { + var _main = this.getApplication().getController('Main'); + _main.onPrintQuick(); + } + }, + + onPrintMenu: function (btn, e){ + var oldType = this.toolbar.btnPrint.options.printType; + var newType = e.value; + + if(newType != oldType) { + this.toolbar.btnPrint.changeIcon({ + next: e.options.iconClsForMainBtn, + curr: this.toolbar.btnPrint.menu.items.filter(function(item){return item.value == oldType;})[0].options.iconClsForMainBtn + }); + this.toolbar.btnPrint.updateHint([e.caption + e.options.platformKey]); + this.toolbar.btnPrint.options.printType = newType; + } + this.onPrint(e); }, onSave: function(e) { diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index b92088838..76c2ca4b6 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -800,7 +800,7 @@ define([ $('tr.coauth.changes', this.el)[mode.isEdit && !mode.isOffline && mode.canCoAuthoring && mode.canChangeCoAuthoring ? 'show' : 'hide'](); $('tr.live-viewer', this.el)[mode.canLiveView && !mode.isOffline && mode.canChangeCoAuthoring ? 'show' : 'hide'](); $('tr.macros', this.el)[(mode.customization && mode.customization.macros===false) ? 'hide' : 'show'](); - $('tr.quick-print', this.el)[mode.canQuickPrint ? 'show' : 'hide'](); + $('tr.quick-print', this.el)[mode.canQuickPrint && !(mode.customization && mode.customization.compactHeader && mode.isEdit) ? 'show' : 'hide'](); if ( !Common.UI.Themes.available() ) { $('tr.themes, tr.themes + tr.divider', this.el).hide(); diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index 6de1eed28..e9dd2cc14 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -814,10 +814,13 @@ define([ cls : 'btn-toolbar', iconCls : 'toolbar__icon btn-print no-mask', lock : [_set.editCell, _set.cantPrint, _set.disableOnStart], - signals: ['disabled'], + signals : ['disabled'], + split : config.canQuickPrint, + menu : config.canQuickPrint, dataHint : '1', dataHintDirection: 'bottom', - dataHintTitle: 'P' + dataHintTitle: 'P', + printType: 'print' }); me.btnSave = new Common.UI.Button({ @@ -2314,6 +2317,7 @@ define([ [Common.enumLock.editCell, Common.enumLock.selRangeEdit, Common.enumLock.headerLock, Common.enumLock.lostConnect, Common.enumLock.coAuth], undefined, undefined, undefined, '1', 'bottom', 'small'); Array.prototype.push.apply(this.lockControls, this.btnsEditHeader); + this.btnPrint && this.btnPrint.menu && this.btnPrint.$el.addClass('split'); return $host; }, @@ -2932,7 +2936,7 @@ define([ this.lockToolbar(Common.enumLock.cantPrint, true, {array: [this.btnPrint]}); } else { this.mode = mode; - !mode.canPrint && this.btnPrint.hide(); + !mode.canPrint && this.btnPrint && this.btnPrint.hide(); this.lockToolbar(Common.enumLock.cantPrint, !mode.canPrint, {array: [this.btnPrint]}); } @@ -3075,6 +3079,31 @@ define([ if (!this.mode.isEdit || this.mode.isEditMailMerge || this.mode.isEditDiagram || this.mode.isEditOle) return; var me = this; + + if(me.btnPrint.menu) { + me.btnPrint.setMenu( + new Common.UI.Menu({ + items:[ + { + caption: me.tipPrint, + iconCls: 'menu__icon btn-print', + toggleGroup: 'viewPrint', + value: 'print', + iconClsForMainBtn: 'btn-print', + platformKey: Common.Utils.String.platformKey('Ctrl+P') + }, + { + caption: me.tipPrintQuick, + iconCls: 'menu__icon btn-quick-print', + toggleGroup: 'viewPrint', + value: 'print-quick', + iconClsForMainBtn: 'btn-quick-print', + platformKey: '' + } + ] + })); + } + var _holder_view = SSE.getController('DocumentHolder').getView('DocumentHolder'); me.btnImgForward.updateHint(me.tipSendForward); me.btnImgForward.setMenu(new Common.UI.Menu({ @@ -3173,6 +3202,7 @@ define([ tipUndo: 'Undo', tipRedo: 'Redo', tipPrint: 'Print', + tipPrintQuick: 'Quick print', tipSave: 'Save', tipFontColor: 'Font color', tipPrColor: 'Background color', diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 7ebdd7b81..43f107581 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -3781,6 +3781,7 @@ "SSE.Views.Toolbar.tipPrColor": "Fill color", "SSE.Views.Toolbar.tipPrint": "Print", "SSE.Views.Toolbar.tipPrintArea": "Print area", + "SSE.Views.Toolbar.tipPrintQuick": "Quick print", "SSE.Views.Toolbar.tipPrintTitles": "Print titles", "SSE.Views.Toolbar.tipRedo": "Redo", "SSE.Views.Toolbar.tipSave": "Save",