From 5a8fbb93731a20ef3dbe90da1fa124476e44c98e Mon Sep 17 00:00:00 2001 From: ccheng Date: Wed, 26 Feb 2025 04:27:14 +0100 Subject: [PATCH 1/2] fix(Felamimail/js): search all contacts from mass mail action --- tine20/Felamimail/css/Felamimail.css | 6 +++- tine20/Felamimail/js/GridPanelHook.js | 32 ++++++------------- tine20/Felamimail/js/MessageEditDialog.js | 32 ++++++++----------- .../js/Felamimail/MessageEditDialogPlugin.js | 1 + 4 files changed, 29 insertions(+), 42 deletions(-) diff --git a/tine20/Felamimail/css/Felamimail.css b/tine20/Felamimail/css/Felamimail.css index ea34aa0aaeb..b6c3b4b68e4 100644 --- a/tine20/Felamimail/css/Felamimail.css +++ b/tine20/Felamimail/css/Felamimail.css @@ -403,7 +403,11 @@ .preview-panel-felamimail-filelocations, .felamimail-compose-info .x-panel-body { background-color: #ffffaa; - padding: 3px 5px 3px 5px; +} + +.felamimail-compose-info .x-form-item { + padding: 5px; + display: block; } .felamimail-location { diff --git a/tine20/Felamimail/js/GridPanelHook.js b/tine20/Felamimail/js/GridPanelHook.js index a78605a683c..cb7140c72db 100644 --- a/tine20/Felamimail/js/GridPanelHook.js +++ b/tine20/Felamimail/js/GridPanelHook.js @@ -302,8 +302,10 @@ Ext.apply(Tine.Felamimail.GridPanelHook.prototype, { */ onComposeEmail: async function (btn, to) { const sm = this.getGridPanel().grid ? this.getGridPanel().grid.getSelectionModel() : null; - const records = (sm && sm.isFilterSelect) ? sm.getSelections(): this.records; - + const records = sm?.isFilterSelect ? sm.getSelections(): this.records; + this.massMailingFlag = to === 'mass'; + if (this.massMailingFlag) to = 'BCC'; + var popupWindow = Tine.Felamimail.MessageEditDialog.openWindow({ massMailingPlugins: records?.[0]?.data?.poll_id ? ['poll'] : ['all'], contentPanelConstructorInterceptor: async (config) => { @@ -311,29 +313,13 @@ Ext.apply(Tine.Felamimail.GridPanelHook.prototype, { const mask = await config.setWaitText(waitingText); const mailAddresses = await this.getMailAddresses(records); - const record = new Tine.Felamimail.Model.Message({ + config.record = new Tine.Felamimail.Model.Message({ subject: (this.subject) ? this.subject : '', body: this.body, - massMailingFlag: this.massMailingFlag + massMailingFlag: this.massMailingFlag, + [to.toLowerCase()]: mailAddresses }, 0); - - switch (to) { - case "TO": - record.set('to', mailAddresses); - break; - case "CC": - record.set('cc', mailAddresses); - break; - case "BCC": - record.set('bcc', mailAddresses); - break; - case "mass": - to = 'bcc'; - record.set('massMailingFlag', true); - record.set('bcc', mailAddresses); - break; - } - config.record = record; + config.listeners = { single: true, load: function() { @@ -341,7 +327,7 @@ Ext.apply(Tine.Felamimail.GridPanelHook.prototype, { } }; }, - selectionFilter: sm && sm.isFilterSelect ? Ext.encode({ + selectionFilter: sm?.isFilterSelect ? Ext.encode({ to: to, filter: sm.getSelectionFilter() }) : null, diff --git a/tine20/Felamimail/js/MessageEditDialog.js b/tine20/Felamimail/js/MessageEditDialog.js index 08f35d67bde..af3847a97a0 100644 --- a/tine20/Felamimail/js/MessageEditDialog.js +++ b/tine20/Felamimail/js/MessageEditDialog.js @@ -336,7 +336,7 @@ Tine.Felamimail.MessageEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { this.recordDefaults.to = Ext.decode(this.mailAddresses); } else if (this.selectionFilter) { // put filter into to, cc or bcc of record and the loading be handled by resolveRecipientFilter - var filterAndTo = Ext.decode(this.selectionFilter); + const filterAndTo = Ext.decode(this.selectionFilter); this.record.set(filterAndTo.to.toLowerCase(), filterAndTo.filter); } @@ -860,7 +860,6 @@ Tine.Felamimail.MessageEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { delete this[field]; this.resolveRecipientFilter(field); - }, this); }, @@ -1732,20 +1731,6 @@ Tine.Felamimail.MessageEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { return ''; } }); - - const infoItems = [ - { - // message file info text - ref: '../../messageFileInfoText', - style: 'display: block;', - }, - { - // mass mailing info text - html: this.app.i18n._('NOTE: This is mail will be sent as a mass mail, i.e. each recipient will get his or her own copy.'), - ref: '../../massMailingInfoText', - style: 'padding: 5px 0px; display: block;', - } - ] const activeAccount = Tine.Tinebase.appMgr.get('Felamimail').getActiveAccount(); return { @@ -1757,7 +1742,6 @@ Tine.Felamimail.MessageEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { ref: '../messageInfoFormPanel', layout: 'form', region: 'north', - padding: '5px', border: false, autoHeight: true, align: 'left', @@ -1768,7 +1752,19 @@ Tine.Felamimail.MessageEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { hidden: true, xtype: 'label', }, - items: infoItems + items: [ + { + // message file info text + ref: '../../messageFileInfoText', + style: 'padding: 5px; display: block;', + }, + { + // mass mailing info text + html: this.app.i18n._('NOTE: This is mail will be sent as a mass mail, i.e. each recipient will get his or her own copy.'), + ref: '../../massMailingInfoText', + style: 'padding: 5px; display: block;', + } + ] }, { region: 'center', diff --git a/tine20/GDPR/js/Felamimail/MessageEditDialogPlugin.js b/tine20/GDPR/js/Felamimail/MessageEditDialogPlugin.js index d925c323c52..783e220e1eb 100644 --- a/tine20/GDPR/js/Felamimail/MessageEditDialogPlugin.js +++ b/tine20/GDPR/js/Felamimail/MessageEditDialogPlugin.js @@ -20,6 +20,7 @@ Tine.GDPR.Felamimail.MessageEditDialogPlugin.prototype = { name: 'dataIntendedPurposes', width: 300, allowBlank: true, + cls: 'felamimail-compose-info', recordClass: Tine.GDPR.Model.DataIntendedPurpose, recordProxy: Tine.GDPR.dataintendedpurposeBackend, listeners: { From 6fedd7bd2c9a4e986b47e0c11e7d9206c009d05d Mon Sep 17 00:00:00 2001 From: ccheng Date: Wed, 26 Feb 2025 04:38:47 +0100 Subject: [PATCH 2/2] tweak(Course/js): hide add new member action --- tine20/Courses/js/CourseEditDialog.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tine20/Courses/js/CourseEditDialog.js b/tine20/Courses/js/CourseEditDialog.js index 726db2f2ae3..1ba7c6063c7 100644 --- a/tine20/Courses/js/CourseEditDialog.js +++ b/tine20/Courses/js/CourseEditDialog.js @@ -50,7 +50,8 @@ Tine.Courses.CourseEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { disabled: true, text: this.app.i18n._('Add new member'), scope: this, - handler: this.onAddNewMember + handler: this.onAddNewMember, + hidden: true }); this.tbarItems = [