diff options
Diffstat (limited to 'plugins/managesieve/lib')
-rw-r--r-- | plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php | 33 | ||||
-rw-r--r-- | plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php | 13 |
2 files changed, 41 insertions, 5 deletions
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php index b8af0373d..46237340d 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php @@ -441,6 +441,11 @@ class rcube_sieve_engine $this->rc->output->command('managesieve_actionfill', $content, $id, $aid); } + else if ($action == 'addresses') { + $aid = rcube_utils::get_input_value('_aid', rcube_utils::INPUT_POST); + + $this->rc->output->command('managesieve_vacation_addresses_update', $aid, $this->user_emails()); + } $this->rc->output->send(); } @@ -1769,7 +1774,10 @@ class rcube_sieve_engine . "</textarea>\n"; // vacation - $vsec = in_array('vacation-seconds', $this->exts); + $vsec = in_array('vacation-seconds', $this->exts); + $auto_addr = $this->rc->config->get('managesieve_vacation_addresses_init'); + $addresses = isset($action['addresses']) || !$auto_addr ? (array) $action['addresses'] : $this->user_emails(); + $out .= '<div id="action_vacation' .$id.'" style="display:' .($action['type']=='vacation' ? 'inline' : 'none') .'">'; $out .= '<span class="label">'. rcube::Q($this->plugin->gettext('vacationreason')) .'</span><br />' .'<textarea name="_action_reason['.$id.']" id="action_reason' .$id. '" ' @@ -1780,8 +1788,10 @@ class rcube_sieve_engine .'value="' . (is_array($action['subject']) ? rcube::Q(implode(', ', $action['subject']), 'strict', false) : $action['subject']) . '" size="35" ' . $this->error_class($id, 'action', 'subject', 'action_subject') .' />'; $out .= '<br /><span class="label">' .rcube::Q($this->plugin->gettext('vacationaddr')) . '</span><br />' - . $this->list_input($id, 'action_addresses', $action['addresses'], true, - $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30); + . $this->list_input($id, 'action_addresses', $addresses, true, + $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30) + . html::a(array('href' => '#', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".managesieve_vacation_addresses($id)"), + rcube::Q($this->plugin->gettext('filladdresses'))); $out .= '<br /><span class="label">' . rcube::Q($this->plugin->gettext($vsec ? 'vacationinterval' : 'vacationdays')) . '</span><br />' .'<input type="text" name="_action_interval['.$id.']" id="action_interval'.$id.'" ' .'value="' .rcube::Q(rcube_sieve_vacation::vacation_interval($action), 'strict', false) . '" size="2" ' @@ -2389,4 +2399,21 @@ class rcube_sieve_engine $this->headers += $headers; } + + /** + * Get all e-mail addresses of the user + */ + protected function user_emails() + { + $addresses = $this->rc->user->list_emails(); + + foreach ($addresses as $idx => $email) { + $addresses[$idx] = $email['email']; + } + + $addresses = array_unique($addresses); + sort($addresses); + + return $addresses; + } } diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php index 419989e53..2779d2f1b 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php @@ -329,14 +329,23 @@ class rcube_sieve_vacation extends rcube_sieve_engine 'noclose' => true ) + $attrib); + $auto_addr = $this->rc->config->get('managesieve_vacation_addresses_init'); + $addresses = !$auto_addr || count($this->vacation) > 1 ? (array) $this->vacation['addresses'] : $this->user_emails(); + // form elements $subject = new html_inputfield(array('name' => 'vacation_subject', 'id' => 'vacation_subject', 'size' => 50)); $reason = new html_textarea(array('name' => 'vacation_reason', 'id' => 'vacation_reason', 'cols' => 60, 'rows' => 8)); $interval = new html_inputfield(array('name' => 'vacation_interval', 'id' => 'vacation_interval', 'size' => 5)); $addresses = '<textarea name="vacation_addresses" id="vacation_addresses" data-type="list" data-size="30" style="display: none">' - . rcube::Q(implode("\n", (array) $this->vacation['addresses']), 'strict', false) . '</textarea>'; + . rcube::Q(implode("\n", $addresses), 'strict', false) . '</textarea>'; $status = new html_select(array('name' => 'vacation_status', 'id' => 'vacation_status')); $action = new html_select(array('name' => 'vacation_action', 'id' => 'vacation_action', 'onchange' => 'vacation_action_select()')); + $addresses_link = new html_inputfield(array( + 'type' => 'button', + 'href' => '#', + 'class' => 'button', + 'onclick' => rcmail_output::JS_OBJECT_NAME . '.managesieve_vacation_addresses()' + )); $status->add($this->plugin->gettext('vacation.on'), 'on'); $status->add($this->plugin->gettext('vacation.off'), 'off'); @@ -461,7 +470,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine $table = new html_table(array('cols' => 2)); $table->add('title', html::label('vacation_addresses', $this->plugin->gettext('vacation.addresses'))); - $table->add(null, $addresses); + $table->add(null, $addresses . $addresses_link->show($this->plugin->gettext('filladdresses'))); $table->add('title', html::label('vacation_interval', $this->plugin->gettext('vacation.interval'))); $table->add(null, $interval_txt); |