From e9a53c5b2501ee236a9900a3b60f7e5597956ab3 Mon Sep 17 00:00:00 2001 From: yuri Date: Wed, 7 Feb 2018 12:54:58 +0200 Subject: [PATCH] list view acl delete check --- .../views/call/record/row-actions/dashlet.js | 20 +++++------ .../views/call/record/row-actions/default.js | 24 +++++++++---- .../meeting/record/row-actions/dashlet.js | 2 +- .../meeting/record/row-actions/default.js | 35 ++++++++++++++----- .../views/record/row-actions/activities.js | 3 +- .../src/views/record/row-actions/history.js | 17 ++++----- .../crm/src/views/record/row-actions/tasks.js | 6 ++-- .../views/task/record/row-actions/dashlet.js | 2 +- .../views/task/record/row-actions/default.js | 18 +++++++--- .../views/email/record/row-actions/default.js | 2 +- client/src/views/record/list.js | 9 +++-- .../src/views/record/row-actions/default.js | 32 ++++++++--------- .../record/row-actions/edit-and-remove.js | 32 ++++++++--------- .../relationship-edit-and-remove.js | 35 ++++++++++--------- .../row-actions/relationship-no-unlink.js | 18 +++++----- .../row-actions/relationship-remove-only.js | 2 +- .../row-actions/relationship-unlink-only.js | 3 +- .../views/record/row-actions/relationship.js | 21 +++++------ .../views/record/row-actions/remove-only.js | 8 ++--- .../record/row-actions/view-and-remove.js | 4 +-- 20 files changed, 162 insertions(+), 131 deletions(-) diff --git a/client/modules/crm/src/views/call/record/row-actions/dashlet.js b/client/modules/crm/src/views/call/record/row-actions/dashlet.js index 0c7f948fed..e1a4aa98c4 100644 --- a/client/modules/crm/src/views/call/record/row-actions/dashlet.js +++ b/client/modules/crm/src/views/call/record/row-actions/dashlet.js @@ -48,16 +48,16 @@ Espo.define('crm:views/call/record/row-actions/dashlet', ['views/record/row-acti id: this.model.id } }); - if (this.options.acl.edit) { - actionList.push({ - action: 'quickRemove', - label: 'Remove', - data: { - id: this.model.id, - scope: this.model.name - } - }); - } + if (this.options.acl.delete) { + actionList.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id, + scope: this.model.name + } + }); + } } return actionList; diff --git a/client/modules/crm/src/views/call/record/row-actions/default.js b/client/modules/crm/src/views/call/record/row-actions/default.js index 2754c6d0f7..a119bb830f 100644 --- a/client/modules/crm/src/views/call/record/row-actions/default.js +++ b/client/modules/crm/src/views/call/record/row-actions/default.js @@ -26,32 +26,42 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('crm:views/call/record/row-actions/default', 'views/record/row-actions/default', function (Dep) { +Espo.define('crm:views/call/record/row-actions/default', ['views/record/row-actions/view-and-edit'], function (Dep) { return Dep.extend({ getActionList: function () { - var actions = Dep.prototype.getActionList.call(this); + var actionList = Dep.prototype.getActionList.call(this); if (this.options.acl.edit && !~['Held', 'Not Held'].indexOf(this.model.get('status'))) { - actions.push({ + actionList.push({ action: 'setHeld', label: 'Set Held', data: { id: this.model.id } }); - actions.push({ + actionList.push({ action: 'setNotHeld', label: 'Set Not Held', data: { id: this.model.id } }); + if (this.options.acl.delete) { + actionList.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id, + scope: this.model.name + } + }); + } } - return actions; - }, + return actionList; + } }); -}); +}); \ No newline at end of file diff --git a/client/modules/crm/src/views/meeting/record/row-actions/dashlet.js b/client/modules/crm/src/views/meeting/record/row-actions/dashlet.js index 623dc60c0c..4c949b62c6 100644 --- a/client/modules/crm/src/views/meeting/record/row-actions/dashlet.js +++ b/client/modules/crm/src/views/meeting/record/row-actions/dashlet.js @@ -56,7 +56,7 @@ Espo.define('crm:views/meeting/record/row-actions/dashlet', ['views/record/row-a } }); } - if (this.options.acl.edit) { + if (this.options.acl.delete) { actionList.push({ action: 'quickRemove', label: 'Remove', diff --git a/client/modules/crm/src/views/meeting/record/row-actions/default.js b/client/modules/crm/src/views/meeting/record/row-actions/default.js index 2d7d72970d..8e0a896689 100644 --- a/client/modules/crm/src/views/meeting/record/row-actions/default.js +++ b/client/modules/crm/src/views/meeting/record/row-actions/default.js @@ -26,32 +26,49 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('Crm:Views.Meeting.Record.RowActions.Default', 'Views.Record.RowActions.Default', function (Dep) { +Espo.define('crm:views/meeting/record/row-actions/default', ['views/record/row-actions/view-and-edit'], function (Dep) { return Dep.extend({ getActionList: function () { - var actions = Dep.prototype.getActionList.call(this); + var actionList = Dep.prototype.getActionList.call(this); + + actionList.forEach(function (item) { + item.data = item.data || {}; + item.data.scope = this.model.name + }, this); if (this.options.acl.edit && !~['Held', 'Not Held'].indexOf(this.model.get('status'))) { - actions.push({ + actionList.push({ action: 'setHeld', label: 'Set Held', data: { - id: this.model.id + id: this.model.id, + scope: this.model.name } }); - actions.push({ + actionList.push({ action: 'setNotHeld', label: 'Set Not Held', data: { - id: this.model.id + id: this.model.id, + scope: this.model.name + } + }); + } + if (this.options.acl.delete) { + actionList.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id, + scope: this.model.name } }); } - return actions; - }, + return actionList; + } }); -}); +}); \ No newline at end of file diff --git a/client/modules/crm/src/views/record/row-actions/activities.js b/client/modules/crm/src/views/record/row-actions/activities.js index 45c0d16d67..c58a3eb00a 100644 --- a/client/modules/crm/src/views/record/row-actions/activities.js +++ b/client/modules/crm/src/views/record/row-actions/activities.js @@ -62,6 +62,8 @@ Espo.define('crm:views/record/row-actions/activities', 'views/record/row-actions } }); } + } + if (this.options.acl.delete) { list.push({ action: 'removeRelated', label: 'Remove', @@ -69,7 +71,6 @@ Espo.define('crm:views/record/row-actions/activities', 'views/record/row-actions id: this.model.id } }); - } return list; } diff --git a/client/modules/crm/src/views/record/row-actions/history.js b/client/modules/crm/src/views/record/row-actions/history.js index 5ae09e2c1f..465f4e0729 100644 --- a/client/modules/crm/src/views/record/row-actions/history.js +++ b/client/modules/crm/src/views/record/row-actions/history.js @@ -55,20 +55,21 @@ Espo.define('crm:views/record/row-actions/history', 'views/record/row-actions/re data: { id: this.model.id } - }, - { - action: 'removeRelated', - label: 'Remove', - data: { - id: this.model.id - } } ]); } + if (this.options.acl.delete) { + list.push({ + action: 'removeRelated', + label: 'Remove', + data: { + id: this.model.id + } + }); + } return list; } }); }); - diff --git a/client/modules/crm/src/views/record/row-actions/tasks.js b/client/modules/crm/src/views/record/row-actions/tasks.js index 7c4582dd82..9c4132dce1 100644 --- a/client/modules/crm/src/views/record/row-actions/tasks.js +++ b/client/modules/crm/src/views/record/row-actions/tasks.js @@ -56,8 +56,8 @@ Espo.define('crm:views/record/row-actions/tasks', 'views/record/row-actions/rela } }); } - - + } + if (this.options.acl.delete) { list.push({ action: 'removeRelated', label: 'Remove', @@ -65,7 +65,6 @@ Espo.define('crm:views/record/row-actions/tasks', 'views/record/row-actions/rela id: this.model.id } }); - } return list; } @@ -73,4 +72,3 @@ Espo.define('crm:views/record/row-actions/tasks', 'views/record/row-actions/rela }); }); - diff --git a/client/modules/crm/src/views/task/record/row-actions/dashlet.js b/client/modules/crm/src/views/task/record/row-actions/dashlet.js index 2c3b752819..e152da5a1b 100644 --- a/client/modules/crm/src/views/task/record/row-actions/dashlet.js +++ b/client/modules/crm/src/views/task/record/row-actions/dashlet.js @@ -42,7 +42,7 @@ Espo.define('crm:views/task/record/row-actions/dashlet', 'views/record/row-actio } }); } - if (this.options.acl.edit) { + if (this.options.acl.delete) { actionList.push({ action: 'quickRemove', label: 'Remove', diff --git a/client/modules/crm/src/views/task/record/row-actions/default.js b/client/modules/crm/src/views/task/record/row-actions/default.js index 599870a568..080141a81c 100644 --- a/client/modules/crm/src/views/task/record/row-actions/default.js +++ b/client/modules/crm/src/views/task/record/row-actions/default.js @@ -26,15 +26,15 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -Espo.define('Crm:Views.Task.Record.RowActions.Default', 'Views.Record.RowActions.Default', function (Dep) { +Espo.define('crm:views/task/record/row-actions/default', 'views/record/row-actions/view-and-edit', function (Dep) { return Dep.extend({ getActionList: function () { - var actions = Dep.prototype.getActionList.call(this); + var actionList = Dep.prototype.getActionList.call(this); if (this.options.acl.edit && !~['Completed', 'Canceled'].indexOf(this.model.get('status'))) { - actions.push({ + actionList.push({ action: 'setCompleted', label: 'Complete', data: { @@ -42,8 +42,18 @@ Espo.define('Crm:Views.Task.Record.RowActions.Default', 'Views.Record.RowActions } }); } + if (this.options.acl.delete) { + actionList.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id, + scope: this.model.name + } + }); + } - return actions; + return actionList; } }); diff --git a/client/src/views/email/record/row-actions/default.js b/client/src/views/email/record/row-actions/default.js index a22b270cc8..19bde12d49 100644 --- a/client/src/views/email/record/row-actions/default.js +++ b/client/src/views/email/record/row-actions/default.js @@ -79,7 +79,7 @@ Espo.define('views/email/record/row-actions/default', 'views/record/row-actions/ } - if (this.getAcl().checkModel(this.model, 'delete')) { + if (this.options.acl.delete) { list.push({ action: 'quickRemove', label: 'Remove', diff --git a/client/src/views/record/list.js b/client/src/views/record/list.js index 1a714d0eec..7e4fd3ffcd 100644 --- a/client/src/views/record/list.js +++ b/client/src/views/record/list.js @@ -1078,11 +1078,14 @@ Espo.define('views/record/list', 'view', function (Dep) { internalLayout = Espo.Utils.cloneDeep(internalLayout); this.prepareInternalLayout(internalLayout, model); + var acl = { + edit: this.getAcl().checkModel(model, 'edit'), + delete: this.getAcl().checkModel(model, 'delete') + }; + this.createView(key, 'views/base', { model: model, - acl: { - edit: this.getAcl().checkModel(model, 'edit') - }, + acl: acl, el: this.options.el + ' .list-row[data-id="'+key+'"]', optionsToPass: ['acl'], noCache: true, diff --git a/client/src/views/record/row-actions/default.js b/client/src/views/record/row-actions/default.js index b48ebbf229..8e8cbab2ff 100644 --- a/client/src/views/record/row-actions/default.js +++ b/client/src/views/record/row-actions/default.js @@ -65,23 +65,23 @@ Espo.define('views/record/row-actions/default', 'view', function (Dep) { link: '#' + this.model.name + '/view/' + this.model.id }]; if (this.options.acl.edit) { - list = list.concat([ - { - action: 'quickEdit', - label: 'Edit', - data: { - id: this.model.id - }, - link: '#' + this.model.name + '/edit/' + this.model.id + list.push({ + action: 'quickEdit', + label: 'Edit', + data: { + id: this.model.id }, - { - action: 'quickRemove', - label: 'Remove', - data: { - id: this.model.id - } + link: '#' + this.model.name + '/edit/' + this.model.id + }); + } + if (this.options.acl.delete) { + list.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id } - ]); + }); } return list; }, @@ -96,5 +96,3 @@ Espo.define('views/record/row-actions/default', 'view', function (Dep) { }); }); - - diff --git a/client/src/views/record/row-actions/edit-and-remove.js b/client/src/views/record/row-actions/edit-and-remove.js index e3b501503f..8dc2f64807 100644 --- a/client/src/views/record/row-actions/edit-and-remove.js +++ b/client/src/views/record/row-actions/edit-and-remove.js @@ -33,23 +33,23 @@ Espo.define('views/record/row-actions/edit-and-remove', 'views/record/row-action getActionList: function () { var list = []; if (this.options.acl.edit) { - list = list.concat([ - { - action: 'quickEdit', - label: 'Edit', - data: { - id: this.model.id - }, - link: '#' + this.model.name + '/edit/' + this.model.id + list.push({ + action: 'quickEdit', + label: 'Edit', + data: { + id: this.model.id }, - { - action: 'quickRemove', - label: 'Remove', - data: { - id: this.model.id - } + link: '#' + this.model.name + '/edit/' + this.model.id + }); + } + if (this.options.acl.delete) { + list.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id } - ]); + }); } return list; } @@ -57,5 +57,3 @@ Espo.define('views/record/row-actions/edit-and-remove', 'views/record/row-action }); }); - - diff --git a/client/src/views/record/row-actions/relationship-edit-and-remove.js b/client/src/views/record/row-actions/relationship-edit-and-remove.js index 1f0c8cb120..804e855df1 100644 --- a/client/src/views/record/row-actions/relationship-edit-and-remove.js +++ b/client/src/views/record/row-actions/relationship-edit-and-remove.js @@ -31,27 +31,28 @@ Espo.define('views/record/row-actions/relationship-edit-and-remove', 'views/reco return Dep.extend({ getActionList: function () { + var list = []; if (this.options.acl.edit) { - return [ - { - action: 'quickEdit', - label: 'Edit', - data: { - id: this.model.id - } - }, - { - action: 'removeRelated', - label: 'Remove', - data: { - id: this.model.id - } + list.push({ + action: 'quickEdit', + label: 'Edit', + data: { + id: this.model.id } - ]; + }); } - }, + if (this.options.acl.delete) { + list.push({ + action: 'quickRemove', + label: 'Remove', + data: { + id: this.model.id + } + }); + } + return list; + } }); }); - diff --git a/client/src/views/record/row-actions/relationship-no-unlink.js b/client/src/views/record/row-actions/relationship-no-unlink.js index 00633a445a..92f32ff72d 100644 --- a/client/src/views/record/row-actions/relationship-no-unlink.js +++ b/client/src/views/record/row-actions/relationship-no-unlink.js @@ -48,20 +48,20 @@ Espo.define('views/record/row-actions/relationship-no-unlink', 'views/record/row id: this.model.id }, link: '#' + this.model.name + '/edit/' + this.model.id - }, - { - action: 'removeRelated', - label: 'Remove', - data: { - id: this.model.id - } } ]); } + if (this.options.acl.delete) { + list.push({ + action: 'removeRelated', + label: 'Remove', + data: { + id: this.model.id + } + }); + } return list; } }); - }); - diff --git a/client/src/views/record/row-actions/relationship-remove-only.js b/client/src/views/record/row-actions/relationship-remove-only.js index b518b60602..14af738912 100644 --- a/client/src/views/record/row-actions/relationship-remove-only.js +++ b/client/src/views/record/row-actions/relationship-remove-only.js @@ -31,7 +31,7 @@ Espo.define('views/record/row-actions/relationship-remove-only', 'views/record/r return Dep.extend({ getActionList: function () { - if (this.options.acl.edit) { + if (this.options.acl.delete) { return [ { action: 'removeRelated', diff --git a/client/src/views/record/row-actions/relationship-unlink-only.js b/client/src/views/record/row-actions/relationship-unlink-only.js index c426383c6d..47adfdf800 100644 --- a/client/src/views/record/row-actions/relationship-unlink-only.js +++ b/client/src/views/record/row-actions/relationship-unlink-only.js @@ -42,8 +42,7 @@ Espo.define('views/record/row-actions/relationship-unlink-only', 'views/record/r } ]; } - }, + } }); }); - diff --git a/client/src/views/record/row-actions/relationship.js b/client/src/views/record/row-actions/relationship.js index 21980e9f24..2ba3b76391 100644 --- a/client/src/views/record/row-actions/relationship.js +++ b/client/src/views/record/row-actions/relationship.js @@ -55,21 +55,22 @@ Espo.define('views/record/row-actions/relationship', 'views/record/row-actions/d data: { id: this.model.id } - }, - { - action: 'removeRelated', - label: 'Remove', - data: { - id: this.model.id - } } ]); } + + if (this.options.acl.delete) { + list.push({ + action: 'removeRelated', + label: 'Remove', + data: { + id: this.model.id + } + }); + } return list; - }, + } }); }); - - diff --git a/client/src/views/record/row-actions/remove-only.js b/client/src/views/record/row-actions/remove-only.js index 74f5cb7061..6c37a99071 100644 --- a/client/src/views/record/row-actions/remove-only.js +++ b/client/src/views/record/row-actions/remove-only.js @@ -31,7 +31,7 @@ Espo.define('views/record/row-actions/remove-only', 'views/record/row-actions/de return Dep.extend({ getActionList: function () { - if (this.options.acl.edit) { + if (this.options.acl.delete) { return [ { action: 'quickRemove', @@ -42,10 +42,6 @@ Espo.define('views/record/row-actions/remove-only', 'views/record/row-actions/de } ]; } - }, - + } }); - }); - - diff --git a/client/src/views/record/row-actions/view-and-remove.js b/client/src/views/record/row-actions/view-and-remove.js index 5f730e1046..fc536ffbf0 100644 --- a/client/src/views/record/row-actions/view-and-remove.js +++ b/client/src/views/record/row-actions/view-and-remove.js @@ -39,7 +39,7 @@ Espo.define('views/record/row-actions/view-and-remove', 'views/record/row-action }, link: '#' + this.model.name + '/view/' + this.model.id }]; - if (this.options.acl.edit) { + if (this.options.acl.delete) { actionList.push({ action: 'quickRemove', label: 'Remove', @@ -54,5 +54,3 @@ Espo.define('views/record/row-actions/view-and-remove', 'views/record/row-action }); }); - -