display as text box when > 50 recipients

This commit is contained in:
Roland Gruber 2014-01-27 19:40:50 +00:00
parent c62a5693af
commit 6a8f3e5c4e
1 changed files with 81 additions and 43 deletions

View File

@ -38,6 +38,8 @@ class nisMailAlias extends baseModule {
private $cachedMailList = null; private $cachedMailList = null;
/** user cache */ /** user cache */
private $cachedUserList = null; private $cachedUserList = null;
/** display limit */
const DISPLAY_LIMIT = 50;
/** /**
* Returns meta data that is interpreted by parent class * Returns meta data that is interpreted by parent class
@ -73,8 +75,8 @@ class nisMailAlias extends baseModule {
"Text" => _("Mails to this name are forwarded to the recipients.") "Text" => _("Mails to this name are forwarded to the recipients.")
), ),
'recipient' => array( 'recipient' => array(
"Headline" => _("Recipient"), 'attr' => 'rfc822MailMember', "Headline" => _("Recipients"), 'attr' => 'rfc822MailMember',
"Text" => _("This is one recipient for this alias.") "Text" => _("Please enter the recipients for this alias.")
), ),
'recipientList' => array( 'recipientList' => array(
"Headline" => _("Recipient list"), 'attr' => 'rfc822MailMember', "Headline" => _("Recipient list"), 'attr' => 'rfc822MailMember',
@ -166,32 +168,49 @@ class nisMailAlias extends baseModule {
natcasesort($this->attributes['rfc822MailMember']); natcasesort($this->attributes['rfc822MailMember']);
$this->attributes['rfc822MailMember'] = array_values($this->attributes['rfc822MailMember']); $this->attributes['rfc822MailMember'] = array_values($this->attributes['rfc822MailMember']);
$recipientCount = sizeof($this->attributes['rfc822MailMember']); $recipientCount = sizeof($this->attributes['rfc822MailMember']);
for ($i = 0; $i < $recipientCount; $i++) { if ($recipientCount < nisMailAlias::DISPLAY_LIMIT) {
$return->addElement(new htmlOutputText(_('Recipient'))); for ($i = 0; $i < $recipientCount; $i++) {
$mailField = new htmlInputField('rfc822MailMember' . $i, $this->attributes['rfc822MailMember'][$i]); if (($i == 0) && ($recipientCount == 1)) {
if (sizeof($autoList) > 0) { $return->addElement(new htmlOutputText(_('Recipient')));
$mailField->enableAutocompletion($autoList); }
elseif (($i == 0) && ($recipientCount > 1)) {
$return->addElement(new htmlOutputText(_('Recipients')));
}
else {
$return->addElement(new htmlOutputText(''));
}
$mailField = new htmlInputField('rfc822MailMember' . $i, $this->attributes['rfc822MailMember'][$i]);
if (sizeof($autoList) > 0) {
$mailField->enableAutocompletion($autoList);
}
$return->addElement($mailField);
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectMail', 'recipient' . $i, 'mailAlias.png', true, _('Select mail')));
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectUser', 'recipient' . $i, 'user.png', true, _('Select user')));
$return->addElement(new htmlButton('delRec' . $i, 'del.png', true));
$return->addElement(new htmlHelpLink('recipient'), true);
} }
$return->addElement($mailField); }
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectMail', 'recipient' . $i, 'mailAlias.png', true, _('Select mail'))); else {
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectUser', 'recipient' . $i, 'user.png', true, _('Select user'))); $memberText = implode("\r\n", $this->attributes['rfc822MailMember']);
$return->addElement(new htmlButton('delRec' . $i, 'del.png', true)); $return->addElement(new htmlTableExtendedInputTextarea('rfc822MailMember', $memberText, 50, 30, _('Recipients'), 'recipient'), true);
$return->addElement(new htmlHelpLink('recipient'), true); $return->addElement(new htmlEqualWidth(array('cn', 'rfc822MailMember')), true);
} }
} }
// input box for new recipient if ($recipientCount < nisMailAlias::DISPLAY_LIMIT) {
$return->addElement(new htmlOutputText(_('New recipient'))); // input box for new recipient
$newMailField = new htmlInputField('rfc822MailMember'); $return->addElement(new htmlOutputText(_('New recipient')));
$newMailField->setOnKeyPress('SubmitForm(\'addRec\', event);'); $newMailField = new htmlInputField('rfc822MailMember');
if (sizeof($autoList) > 0) { $newMailField->setOnKeyPress('SubmitForm(\'addRec\', event);');
$newMailField->enableAutocompletion($autoList); if (sizeof($autoList) > 0) {
$newMailField->enableAutocompletion($autoList);
}
$return->addElement($newMailField);
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectMail', 'recipient' . 'New', 'mailAlias.png', true, _('Select mail')));
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectUser', 'recipient' . 'New', 'user.png', true, _('Select user')));
$return->addElement(new htmlButton('addRec', 'add.png', true));
$return->addElement(new htmlHelpLink('recipient'));
$return->addElement(new htmlHiddenInput('rec_number', $recipientCount));
} }
$return->addElement($newMailField);
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectMail', 'recipient' . 'New', 'mailAlias.png', true, _('Select mail')));
$return->addElement(new htmlAccountPageButton(get_class($this), 'selectUser', 'recipient' . 'New', 'user.png', true, _('Select user')));
$return->addElement(new htmlButton('addRec', 'add.png', true));
$return->addElement(new htmlHelpLink('recipient'));
$return->addElement(new htmlHiddenInput('rec_number', $recipientCount));
return $return; return $return;
} }
@ -204,6 +223,7 @@ class nisMailAlias extends baseModule {
function process_attributes() { function process_attributes() {
$errors = array(); $errors = array();
$this->attributes['cn'] = array(); $this->attributes['cn'] = array();
$recipientCount = !empty($this->attributes['rfc822MailMember']) ? sizeof($this->attributes['rfc822MailMember']) : 0;
$this->attributes['rfc822MailMember'] = array(); $this->attributes['rfc822MailMember'] = array();
// check alias name // check alias name
if (isset($_POST['cn']) && ($_POST['cn'] != "") && get_preg($_POST['cn'], 'nis_alias')) { if (isset($_POST['cn']) && ($_POST['cn'] != "") && get_preg($_POST['cn'], 'nis_alias')) {
@ -215,31 +235,49 @@ class nisMailAlias extends baseModule {
$message[] = $_POST['cn']; $message[] = $_POST['cn'];
$errors[] = $message; $errors[] = $message;
} }
// check old recipients if ($recipientCount < nisMailAlias::DISPLAY_LIMIT) {
if (isset($_POST['rec_number'])) { // check old recipients
for ($i = 0; $i < $_POST['rec_number']; $i++) { if (isset($_POST['rec_number'])) {
if (isset($_POST['delRec' . $i])) continue; for ($i = 0; $i < $_POST['rec_number']; $i++) {
if (isset($_POST['rfc822MailMember' . $i]) && ($_POST['rfc822MailMember' . $i] != "")) { if (isset($_POST['delRec' . $i])) continue;
// check if address has correct format if (isset($_POST['rfc822MailMember' . $i]) && ($_POST['rfc822MailMember' . $i] != "")) {
if (!get_preg($_POST['rfc822MailMember' . $i], 'nis_recipient') && !get_preg($_POST['rfc822MailMember' . $i], 'email')) { // check if address has correct format
$message = $this->messages['recipient'][0]; if (!get_preg($_POST['rfc822MailMember' . $i], 'nis_recipient') && !get_preg($_POST['rfc822MailMember' . $i], 'email')) {
$message[] = $_POST['rfc822MailMember' . $i]; $message = $this->messages['recipient'][0];
$errors[] = $message; $message[] = $_POST['rfc822MailMember' . $i];
$errors[] = $message;
}
$this->attributes['rfc822MailMember'][] = $_POST['rfc822MailMember' . $i];
} }
$this->attributes['rfc822MailMember'][] = $_POST['rfc822MailMember' . $i]; }
}
// check new recipient
if (isset($_POST['rfc822MailMember']) && ($_POST['rfc822MailMember'] != "")) {
// check if recipient has correct format
if (get_preg($_POST['rfc822MailMember'], 'nis_recipient') || get_preg($_POST['rfc822MailMember'], 'email')) {
$this->attributes['rfc822MailMember'][] = $_POST['rfc822MailMember'];
}
else {
$message = $this->messages['recipient'][0];
$message[] = $_POST['rfc822MailMember'];
$errors[] = $message;
} }
} }
} }
// check new recipient else {
if (isset($_POST['rfc822MailMember']) && ($_POST['rfc822MailMember'] != "")) { $recipients = explode("\r\n", $_POST['rfc822MailMember']);
// check if address has correct format foreach ($recipients as $recipient) {
if (get_preg($_POST['rfc822MailMember'], 'nis_recipient') || get_preg($_POST['rfc822MailMember'], 'email')) { $recipient = trim($recipient);
$this->attributes['rfc822MailMember'][] = $_POST['rfc822MailMember']; if (empty($recipient)) {
} continue;
else { }
$this->attributes['rfc822MailMember'][] = $recipient;
// check if recipient has correct format
if (!get_preg($recipient, 'nis_recipient') && !get_preg($recipient, 'email')) {
$message = $this->messages['recipient'][0]; $message = $this->messages['recipient'][0];
$message[] = $_POST['rfc822MailMember']; $message[] = htmlspecialchars($recipient);
$errors[] = $message; $errors[] = $message;
}
} }
} }
$this->attributes['rfc822MailMember'] = array_unique($this->attributes['rfc822MailMember']); $this->attributes['rfc822MailMember'] = array_unique($this->attributes['rfc822MailMember']);