From 71f389703d5fec4dbbe77f3771e3784f5166b973 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 19 Jun 2024 21:36:35 +0300 Subject: [PATCH 1/4] remove action fix --- client/src/views/record/detail.js | 22 ++++++++++++++++++++-- client/src/views/stream/notes/create.js | 14 +++++++++----- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/client/src/views/record/detail.js b/client/src/views/record/detail.js index 95b76c009c..d11346fd91 100644 --- a/client/src/views/record/detail.js +++ b/client/src/views/record/detail.js @@ -2962,8 +2962,26 @@ class DetailRecordView extends BaseRecordView { } } - if (this.isRendered()) { - this.$el.find('.detail-button-container .action[data-action="'+name+'"]').remove(); + if (!this.isRendered()) { + return; + } + + const $container = this.$el.find('.detail-button-container'); + + const $action = $container.find(`ul > li > a.action[data-action="${name}"]`); + + if ($action.length) { + $action.parent().remove(); + + $container.find(`ul > .divider:last-child`).remove(); + + return; + } + + const $button = $container.find(`button.action[data-action="${name}"]`); + + if ($button.length) { + $button.remove(); } } diff --git a/client/src/views/stream/notes/create.js b/client/src/views/stream/notes/create.js index 4ccac6d2f4..b630858aca 100644 --- a/client/src/views/stream/notes/create.js +++ b/client/src/views/stream/notes/create.js @@ -59,11 +59,15 @@ class CreateNoteStreamView extends NoteStreamView { this.assignedUserName = data.assignedUserName || data.assignedUserId || null; this.messageData['assignee'] = - $('') - .attr('href', `#User/view/${this.assignedUserId}`) - .text(this.assignedUserName) - .attr('data-scope', 'User') - .attr('data-id', this.assignedUserId); + $('') + .append( + this.getHelper().getAvatarHtml(data.assignedUserId, 'small', 16, 'avatar-link'), + $('') + .attr('href', `#User/view/${this.assignedUserId}`) + .text(this.assignedUserName) + .attr('data-scope', 'User') + .attr('data-id', this.assignedUserId) + ); let isYou = false; From 64736349f0563bb59daa7bfda5672fa48fa1418b Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 19 Jun 2024 21:44:15 +0300 Subject: [PATCH 2/4] ref --- .../crm/src/views/meeting/record/detail.js | 104 +++++++++--------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/client/modules/crm/src/views/meeting/record/detail.js b/client/modules/crm/src/views/meeting/record/detail.js index adb9db9550..6a8cdd2660 100644 --- a/client/modules/crm/src/views/meeting/record/detail.js +++ b/client/modules/crm/src/views/meeting/record/detail.js @@ -26,66 +26,68 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('crm:views/meeting/record/detail', ['views/record/detail'], function (Dep) { +import DetailRecordView from 'views/record/detail'; - return Dep.extend({ +class MeetingDetailRecordView extends DetailRecordView { - duplicateAction: true, + duplicateAction = true - setup: function () { - Dep.prototype.setup.call(this); - }, + setupActionItems() { + super.setupActionItems(); - setupActionItems: function () { - Dep.prototype.setupActionItems.call(this); - if (this.getAcl().checkModel(this.model, 'edit')) { - if ( - ['Held', 'Not Held'].indexOf(this.model.get('status')) === -1 && - this.getAcl().checkField(this.entityType, 'status', 'edit') - ) { - this.dropdownItemList.push({ - 'label': 'Set Held', - 'name': 'setHeld' - }); + if (!this.getAcl().checkModel(this.model, 'edit')) { + return; + } - this.dropdownItemList.push({ - 'label': 'Set Not Held', - 'name': 'setNotHeld' - }); - } - } - }, + if ( + ['Held', 'Not Held'].includes(this.model.get('status')) || + !this.getAcl().checkField(this.entityType, 'status', 'edit') + ) { + return; + } - manageAccessEdit: function (second) { - Dep.prototype.manageAccessEdit.call(this, second); + this.dropdownItemList.push({ + 'label': 'Set Held', + 'name': 'setHeld', + onClick: () => this.actionSetHeld(), + }); - if (second) { - if (!this.getAcl().checkModel(this.model, 'edit', true)) { - this.hideActionItem('setHeld'); - this.hideActionItem('setNotHeld'); - } - } - }, + this.dropdownItemList.push({ + 'label': 'Set Not Held', + 'name': 'setNotHeld', + onClick: () => this.actionSetNotHeld(), + }); + } - actionSetHeld: function () { - this.model.save({status: 'Held'}, {patch: true}) - .then(() => { - Espo.Ui.success(this.translate('Saved')); + manageAccessEdit(second) { + super.manageAccessEdit(); - this.removeButton('setHeld'); - this.removeButton('setNotHeld'); - }); - }, + if (second && !this.getAcl().checkModel(this.model, 'edit', true)) { + this.hideActionItem('setHeld'); + this.hideActionItem('setNotHeld'); + } + } - actionSetNotHeld: function () { - this.model.save({status: 'Not Held'}, {patch: true}) - .then(() => { - Espo.Ui.success(this.translate('Saved')); + actionSetHeld() { + this.model.save({status: 'Held'}, {patch: true}) + .then(() => { + Espo.Ui.success(this.translate('Saved')); - this.removeButton('setHeld'); - this.removeButton('setNotHeld'); - }); - }, - }); -}); + this.removeActionItem('setHeld'); + this.removeActionItem('setNotHeld'); + }); + } + + actionSetNotHeld() { + this.model.save({status: 'Not Held'}, {patch: true}) + .then(() => { + Espo.Ui.success(this.translate('Saved')); + + this.removeActionItem('setHeld'); + this.removeActionItem('setNotHeld'); + }); + } +} + +export default MeetingDetailRecordView; From 9e8df41174f1f49bfe4bb25cfa9687fbdb6572f8 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 19 Jun 2024 21:46:36 +0300 Subject: [PATCH 3/4] check set held --- client/modules/crm/src/views/meeting/record/detail.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/modules/crm/src/views/meeting/record/detail.js b/client/modules/crm/src/views/meeting/record/detail.js index 6a8cdd2660..322f36022c 100644 --- a/client/modules/crm/src/views/meeting/record/detail.js +++ b/client/modules/crm/src/views/meeting/record/detail.js @@ -46,6 +46,15 @@ class MeetingDetailRecordView extends DetailRecordView { return; } + const historyStatusList = this.getMetadata().get(`scopes.${this.entityType}.historyStatusList`) || []; + + if ( + !historyStatusList.includes('Held') || + !historyStatusList.includes('Not Held') + ) { + return; + } + this.dropdownItemList.push({ 'label': 'Set Held', 'name': 'setHeld', From 07035bf8bf26e974917bf6929856c275380dff04 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 20 Jun 2024 08:19:34 +0300 Subject: [PATCH 4/4] undo avatar --- client/src/views/stream/notes/create.js | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/views/stream/notes/create.js b/client/src/views/stream/notes/create.js index b630858aca..4bc3646bf1 100644 --- a/client/src/views/stream/notes/create.js +++ b/client/src/views/stream/notes/create.js @@ -61,7 +61,6 @@ class CreateNoteStreamView extends NoteStreamView { this.messageData['assignee'] = $('') .append( - this.getHelper().getAvatarHtml(data.assignedUserId, 'small', 16, 'avatar-link'), $('') .attr('href', `#User/view/${this.assignedUserId}`) .text(this.assignedUserName)