From de0b44f5dc8a63f8cd317dfd1e02c105d731a002 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 19 Oct 2017 13:14:12 +0300 Subject: [PATCH] [SSE] Added modifyFilter permission to config: when = false, disable add/remove filters,sort, change formatted table style. --- apps/api/documents/api.js | 3 ++- .../main/app/controller/DocumentHolder.js | 7 ++++--- .../main/app/controller/Main.js | 6 +++++- .../main/app/controller/RightMenu.js | 2 +- .../main/app/controller/Toolbar.js | 14 ++++++++++---- .../main/app/view/RightMenu.js | 1 + .../spreadsheeteditor/main/app/view/Toolbar.js | 18 ++++++++++-------- 7 files changed, 33 insertions(+), 18 deletions(-) diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 2b0f80187..62788172d 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -43,7 +43,8 @@ print: , // default = true rename: , // default = false changeHistory: , // default = false - comment: // default = edit + comment: // default = edit, + modifyFilter: // default = true } }, editorConfig: { diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index 72fc3c8b0..ee6360665 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -1425,8 +1425,9 @@ define([ documentHolder.setMenuItemCommentCaptionMode(documentHolder.pmiAddComment, cellinfo.asc_getComments().length < 1, this.permissions.canEditComments); commentsController && commentsController.blockPopover(true); + documentHolder.pmiClear.menu.items[0].setDisabled(!this.permissions.canModifyFilter); documentHolder.pmiClear.menu.items[1].setDisabled(iscelledit); - documentHolder.pmiClear.menu.items[2].setDisabled(iscelledit); + documentHolder.pmiClear.menu.items[2].setDisabled(iscelledit || !this.permissions.canModifyFilter); documentHolder.pmiClear.menu.items[3].setDisabled(iscelledit); documentHolder.pmiClear.menu.items[4].setDisabled(iscelledit); @@ -1455,8 +1456,8 @@ define([ documentHolder.pmiDeleteEntire.setDisabled(isCellLocked || isTableLocked); documentHolder.pmiDeleteCells.setDisabled(isCellLocked || isTableLocked); documentHolder.pmiDeleteTable.setDisabled(isCellLocked || isTableLocked); - documentHolder.pmiFilterCells.setDisabled(isCellLocked || isTableLocked|| (filterInfo==null) || inPivot); - documentHolder.pmiSortCells.setDisabled(isCellLocked || isTableLocked|| (filterInfo==null) || inPivot); + documentHolder.pmiFilterCells.setDisabled(isCellLocked || isTableLocked|| (filterInfo==null) || inPivot || !filterInfo && !this.permissions.canModifyFilter); + documentHolder.pmiSortCells.setDisabled(isCellLocked || isTableLocked|| (filterInfo==null) || inPivot || !this.permissions.canModifyFilter); documentHolder.pmiReapply.setDisabled(isCellLocked || isTableLocked|| (isApplyAutoFilter!==true)); documentHolder.menuHyperlink.setDisabled(isCellLocked || inPivot); documentHolder.menuAddHyperlink.setDisabled(isCellLocked || inPivot); diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 2e3f144ae..bdc72a8fc 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -819,6 +819,7 @@ define([ this.appOptions.canRename = !!this.permissions.rename; this.appOptions.isTrial = params.asc_getTrial(); this.appOptions.canProtect = this.appOptions.isDesktopApp && this.api.asc_isSignaturesSupport(); + this.appOptions.canModifyFilter = (this.permissions.modifyFilter!==false); this.appOptions.canBranding = (licType === Asc.c_oLicenseResult.Success) && (typeof this.editorConfig.customization == 'object'); if (this.appOptions.canBranding) @@ -829,7 +830,8 @@ define([ this.updatePlugins(this.plugins, true); this.appOptions.canRename && this.headerView.setCanRename(true); - } + } else + this.appOptions.canModifyFilter = true; this.appOptions.canRequestEditRights = this.editorConfig.canRequestEditRights; this.appOptions.canEdit = this.permissions.edit !== false && // can edit @@ -972,6 +974,8 @@ define([ if (me.appOptions.isEditDiagram) me.api.asc_registerCallback('asc_onSelectionChanged', _.bind(me.onSelectionChanged, me)); + me.api.asc_setFilteringMode(me.appOptions.canModifyFilter); + if (me.stackLongActions.exist({id: ApplyEditRights, type: Asc.c_oAscAsyncActionType['BlockInteraction']})) { me.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], ApplyEditRights); } else if (!this._isDocReady) { diff --git a/apps/spreadsheeteditor/main/app/controller/RightMenu.js b/apps/spreadsheeteditor/main/app/controller/RightMenu.js index e9703af11..fc2505df7 100644 --- a/apps/spreadsheeteditor/main/app/controller/RightMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/RightMenu.js @@ -130,7 +130,7 @@ define([ } var need_disable = info.asc_getLocked(), - need_disable_table = (info.asc_getLockedTable()===true), + need_disable_table = (info.asc_getLockedTable()===true || !this.rightmenu.mode.canModifyFilter), need_disable_spark = (info.asc_getLockedSparkline()===true); this.onFocusObject(SelectedObjects, formatTableInfo, sparkLineInfo, pivotInfo, need_disable, need_disable_table, need_disable_spark); diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 7515da26d..a58b55878 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -1392,7 +1392,7 @@ define([ Common.util.Shortcuts.delegateShortcuts({ shortcuts: { 'command+l,ctrl+l': function(e) { - if ( me.editMode && !me._state.multiselect ) { + if ( me.editMode && !me._state.multiselect && me.appConfig.canModifyFilter) { var cellinfo = me.api.asc_getCellInfo(), filterinfo = cellinfo.asc_getAutoFilterInfo(), formattableinfo = cellinfo.asc_getFormatTableInfo(); @@ -1408,9 +1408,10 @@ define([ return false; }, 'command+shift+l,ctrl+shift+l': function(e) { - var state = me._state.filter; - me._state.filter = undefined; - if (me.editMode && me.api && !me._state.multiselect) { + if (me.editMode && me.api && !me._state.multiselect && me.appConfig.canModifyFilter) { + var state = me._state.filter; + me._state.filter = undefined; + if (me._state.tablename || state) me.api.asc_changeAutoFilter(me._state.tablename, Asc.c_oAscChangeFilterOptions.filter, !state); else @@ -2046,6 +2047,11 @@ define([ need_disable = !!info.asc_getPivotTableInfo(); toolbar.lockToolbar(SSE.enumLock.editPivot, need_disable, { array: [toolbar.btnMerge, toolbar.btnInsertHyperlink, toolbar.btnSetAutofilter, toolbar.btnClearAutofilter, toolbar.btnSortDown, toolbar.btnSortUp, toolbar.btnAutofilter]}); + + need_disable = !this.appConfig.canModifyFilter; + toolbar.lockToolbar(SSE.enumLock.cantModifyFilter, need_disable, { array: [toolbar.btnSortDown, toolbar.btnSortUp, toolbar.mnuitemSortAZ, toolbar.mnuitemSortZA, toolbar.btnSetAutofilter, + toolbar.btnAutofilter, toolbar.btnTableTemplate, toolbar.btnClearStyle.menu.items[0], toolbar.btnClearStyle.menu.items[2] ]}); + } val = info.asc_getNumFormatInfo(); diff --git a/apps/spreadsheeteditor/main/app/view/RightMenu.js b/apps/spreadsheeteditor/main/app/view/RightMenu.js index d21e71c16..c9855b6cb 100644 --- a/apps/spreadsheeteditor/main/app/view/RightMenu.js +++ b/apps/spreadsheeteditor/main/app/view/RightMenu.js @@ -223,6 +223,7 @@ define([ }, setMode: function(mode) { + this.mode = mode; return this; }, diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index fec8aa831..078143e7f 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -78,7 +78,8 @@ define([ cantPrint: 'cant-print', multiselect: 'is-multiselect', cantHyperlink: 'cant-hyperlink', - commentLock: 'can-comment' + commentLock: 'can-comment', + cantModifyFilter: 'cant-filter' }; SSE.Views.Toolbar = Common.UI.Mixtbar.extend(_.extend({ @@ -684,21 +685,21 @@ define([ id : 'id-toolbar-btn-sort-down', cls : 'btn-toolbar', iconCls : 'btn-sort-down', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot] + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter] }); me.btnSortUp = new Common.UI.Button({ id : 'id-toolbar-btn-sort-up', cls : 'btn-toolbar', iconCls : 'btn-sort-up', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot] + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter] }); me.btnSetAutofilter = new Common.UI.Button({ id : 'id-toolbar-btn-setautofilter', cls : 'btn-toolbar', iconCls : 'btn-autofilter', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot], + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.editPivot, _set.cantModifyFilter], enableToggle: true }); @@ -713,7 +714,7 @@ define([ id : 'id-toolbar-btn-ttempl', cls : 'btn-toolbar', iconCls : 'btn-ttempl', - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.multiselect], + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.lostConnect, _set.coAuth, _set.ruleFilter, _set.multiselect, _set.cantModifyFilter], menu : new Common.UI.Menu({ items: [ { template: _.template('
') } @@ -894,6 +895,7 @@ define([ items : [ { caption : me.txtClearAll, + lock : [ _set.cantModifyFilter], value : Asc.c_oAscCleanOptions.All }, { @@ -903,7 +905,7 @@ define([ }, { caption : me.txtClearFormat, - lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth], + lock : [_set.editCell, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.cantModifyFilter], value : Asc.c_oAscCleanOptions.Format }, { @@ -1139,13 +1141,13 @@ define([ me.mnuitemSortAZ = new Common.UI.MenuItem({ caption : me.txtSortAZ, iconCls : 'mnu-sort-asc', - lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter], + lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter, _set.cantModifyFilter], value : Asc.c_oAscSortOptions.Ascending }), me.mnuitemSortZA = new Common.UI.MenuItem({ caption : me.txtSortZA, iconCls : 'mnu-sort-desc', - lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter], + lock : [_set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.coAuth, _set.ruleFilter, _set.cantModifyFilter], value : Asc.c_oAscSortOptions.Descending }), me.mnuitemAutoFilter = new Common.UI.MenuItem({