Skip to content

Commit 349d29b

Browse files
committed
Merge branch 'pu/ccheng/empty_preferred_email' into '2024.11'
fix(Addressbook/js): resolve recipient token with empty contact email See merge request tine20/tine20!5367
2 parents 3dcaa38 + f842063 commit 349d29b

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

tine20/Addressbook/js/ContactPropertiesGrid.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export default (config) => {
2525
_,
2626
Tine.widgets.form.FieldManager.CATEGORY_PROPERTYGRID
2727
);
28-
28+
2929
config.propertyNames = {};
3030
config.customEditors = {};
3131
config.customRenderers = {};
@@ -121,7 +121,7 @@ export default (config) => {
121121
const recordGrants = _.get(record, record.constructor.getMeta('grantsPath'));
122122
propertyGrid.setSource(config.fields.reduce((source, field, idx) => {
123123
const requiredGrants = field.requiredGrants; // NOTE: at the moment this means rw!
124-
if (! requiredGrants || recordGrants.adminGrant || requiredGrants?.some((requiredGrant) => { return recordGrants[requiredGrant] })) {
124+
if (! requiredGrants || recordGrants?.adminGrant || requiredGrants?.some((requiredGrant) => { return recordGrants?.[requiredGrant] })) {
125125
const name = `${_.padStart(String(idx), 3, '0')}_${field.fieldName}`;
126126
source[name] = record.get(field.fieldName);
127127
}

tine20/Addressbook/js/Model.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,15 @@ Tine.Addressbook.Model.ContactMixin = {
3030
* @return {String}
3131
*/
3232
getPreferredEmail: function() {
33-
let preferredType = this.get('preferred_email');
33+
let preferredType = this.get('preferred_email') ?? 'email';
3434
const email = this.get(preferredType);
35-
if (!email || email === '') preferredType = 'email';
35+
if (!email || email === '') {
36+
_.each(this.modelConfiguration.fields, (field) => {
37+
if (field?.specialType === 'Addressbook_Model_ContactProperties_Email' && this.get(field.fieldName)) {
38+
preferredType = field.fieldName;
39+
}
40+
});
41+
}
3642

3743
return {
3844
email: this.get(preferredType),

tine20/Felamimail/js/ContactGrid.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ Tine.Felamimail.ContactGridPanel = Ext.extend(Tine.Addressbook.ContactGridPanel,
152152
*/
153153
preferredEmailRenderer: function(field, cell, contact) {
154154
const token = this.getSelectedToken(contact).token;
155+
if (!token) return '';
155156
const block = document.createElement('span');
156157
block.className = 'tinebase-contact-link';
157158
block.innerHTML = Tine.Felamimail.ContactSearchCombo.prototype.renderEmailAddressAndIcon(token);
@@ -252,6 +253,7 @@ Tine.Felamimail.ContactGridPanel = Ext.extend(Tine.Addressbook.ContactGridPanel,
252253
const fieldName = field.fieldName;
253254
if (!contact.data[fieldName]) return;
254255
const token = Tine.Felamimail.GridPanelHook.prototype.getRecipientTokenFromContact(contact, fieldName);
256+
if (!token) return;
255257
items.push(new Ext.Action({
256258
text: Tine.Felamimail.ContactSearchCombo.prototype.renderEmailAddressAndIcon(token),
257259
iconCls: target.textContent.includes(token.email) ? 'action_enable' : '',

0 commit comments

Comments
 (0)