diff --git a/tine20/Addressbook/js/ListEditDialog.js b/tine20/Addressbook/js/ListEditDialog.js index 64941c36c2..75fa3a3ea2 100644 --- a/tine20/Addressbook/js/ListEditDialog.js +++ b/tine20/Addressbook/js/ListEditDialog.js @@ -97,16 +97,18 @@ Tine.Addressbook.ListEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { if (editDialog?.mailingListPanel) { const checked = editDialog.mailingListPanel.isMailinglistCheckbox.checked; const field = editDialog.getForm().findField('email'); - field.setVisible(checked); - field.validate(); + field[checked ? 'show' : 'hide'](); editDialog.doLayout(); + field.validate(); } }, validator: function (value) { - if(!value) { - return false; + const editDialog = this.findParentBy((c) => {return c instanceof Tine.widgets.dialog.EditDialog}) + if (editDialog?.mailingListPanel?.isMailinglistCheckbox?.checked) { + if (!value) return false; + return Tine.Tinebase.common.checkEmailDomain(value); } - return Tine.Tinebase.common.checkEmailDomain(value); + return true; }, disabled: ! Tine.Tinebase.common.hasRight('manage_list_email_options', 'Addressbook'), }], [new Tine.Tinebase.widgets.keyfield.ComboBox({ diff --git a/tine20/Addressbook/js/MailinglistPanel.js b/tine20/Addressbook/js/MailinglistPanel.js index 6f1c82643a..b2098ea5dd 100644 --- a/tine20/Addressbook/js/MailinglistPanel.js +++ b/tine20/Addressbook/js/MailinglistPanel.js @@ -51,6 +51,7 @@ Tine.Addressbook.MailinglistPanel = Ext.extend(Ext.Panel, { maxLength: 128, disabled: ! Tine.Tinebase.common.hasRight('manage_list_email_options', 'Addressbook'), allowBlank: false, + hidden: true, checkState: function (editDialog, record) { this.validate(); }, diff --git a/tine20/Admin/js/GroupEditDialog.js b/tine20/Admin/js/GroupEditDialog.js index b0d47da8cc..63bcba3f10 100644 --- a/tine20/Admin/js/GroupEditDialog.js +++ b/tine20/Admin/js/GroupEditDialog.js @@ -109,7 +109,7 @@ Tine.Admin.Groups.EditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { disabled: this.record.get('visibility') === 'hidden' }], [{ columnWidth: 0.5, - xtype: 'textfield', + xtype: 'mirrortextfield', fieldLabel: this.app.i18n._('E-mail'), name: 'email', anchor: '100%', @@ -117,10 +117,19 @@ Tine.Admin.Groups.EditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { maxLength: 255, allowBlank: true, checkState: function (editDialog, field) { - const checked = editDialog.record.data.xprops?.useAsMailinglist; - field = editDialog.getForm().findField('email'); - field.setVisible(checked); - editDialog.doLayout(); + const checked = editDialog.record.data.xprops?.useAsMailinglist; + field = editDialog.getForm().findField('email'); + field[checked ? 'show' : 'hide'](); + editDialog.doLayout(); + field.validate(); + }, + validator: function (value) { + const editDialog = this.findParentBy((c) => {return c instanceof Tine.widgets.dialog.EditDialog}) + if (editDialog?.record?.data?.xprops?.useAsMailinglist) { + if (!value) return false; + return Tine.Tinebase.common.checkEmailDomain(value); + } + return true; }, }, { columnWidth: 0.5, @@ -151,10 +160,10 @@ Tine.Admin.Groups.EditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, { Tine.Tinebase.registry.get('manageSmtpEmailUser') && adb.featureEnabled('featureMailinglist') ) { - var mailingListPanel = new Tine.Addressbook.MailinglistPanel({ + this.mailingListPanel = new Tine.Addressbook.MailinglistPanel({ editDialog: this }); - tabpanelItems.push(mailingListPanel); + tabpanelItems.push(this.mailingListPanel); } if (this.app.featureEnabled('xpropsEditor')) {