From 3c99599794948686960ee4e340374b0c3a1527b2 Mon Sep 17 00:00:00 2001
From: Paweł Słowik <pawel.slowik@iq.pl>
Date: Fri, 14 Sep 2012 08:27:58 -0400
Subject: [PATCH] Sieve enotify/notify: - GUI for importance setting - make tests usable for checking the GUI

---
 plugins/managesieve/localization/pl_PL.inc    |    4 ++++
 plugins/managesieve/localization/en_GB.inc    |    4 ++++
 plugins/managesieve/localization/en_US.inc    |    4 ++++
 plugins/managesieve/tests/src/parser_notify_a |    5 ++++-
 plugins/managesieve/managesieve.php           |   16 ++++++++++++++++
 plugins/managesieve/tests/src/parser_notify_b |    5 ++++-
 6 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/plugins/managesieve/localization/en_GB.inc b/plugins/managesieve/localization/en_GB.inc
index 7b02c82..f9075b8 100644
--- a/plugins/managesieve/localization/en_GB.inc
+++ b/plugins/managesieve/localization/en_GB.inc
@@ -102,6 +102,10 @@
 $labels['notifybody'] = 'Notification body:';
 $labels['notifysubject'] = 'Notification subject:';
 $labels['notifyfrom'] = 'Notification sender:';
+$labels['notifyimportance'] = 'Importance:';
+$labels['notifyimportancelow'] = 'low';
+$labels['notifyimportancenormal'] = 'normal';
+$labels['notifyimportancehigh'] = 'high';
 $labels['filtercreate'] = 'Create filter';
 $labels['usedata'] = 'Use following data in the filter:';
 $labels['nextstep'] = 'Next Step';
diff --git a/plugins/managesieve/localization/en_US.inc b/plugins/managesieve/localization/en_US.inc
index bcef913..cb223c1 100644
--- a/plugins/managesieve/localization/en_US.inc
+++ b/plugins/managesieve/localization/en_US.inc
@@ -93,6 +93,10 @@
 $labels['notifybody'] = 'Notification body:';
 $labels['notifysubject'] = 'Notification subject:';
 $labels['notifyfrom'] = 'Notification sender:';
+$labels['notifyimportance'] = 'Importance:';
+$labels['notifyimportancelow'] = 'low';
+$labels['notifyimportancenormal'] = 'normal';
+$labels['notifyimportancehigh'] = 'high';
 $labels['filtercreate'] = 'Create filter';
 $labels['usedata'] = 'Use following data in the filter:';
 $labels['nextstep'] = 'Next Step';
diff --git a/plugins/managesieve/localization/pl_PL.inc b/plugins/managesieve/localization/pl_PL.inc
index 5b51900..734a4eb 100644
--- a/plugins/managesieve/localization/pl_PL.inc
+++ b/plugins/managesieve/localization/pl_PL.inc
@@ -108,6 +108,10 @@
 $labels['notifybody'] = 'Treść powiadomienia:';
 $labels['notifysubject'] = 'Temat powiadomienia:';
 $labels['notifyfrom'] = 'Nadawca powiadomienia:';
+$labels['notifyimportance'] = 'Priorytet:';
+$labels['notifyimportancelow'] = 'niski';
+$labels['notifyimportancenormal'] = 'normalny';
+$labels['notifyimportancehigh'] = 'wysoki';
 $labels['filtercreate'] = 'Utwórz filtr';
 $labels['usedata'] = 'Użyj następujących danych do utworzenia filtra:';
 $labels['nextstep'] = 'Następny krok';
diff --git a/plugins/managesieve/managesieve.php b/plugins/managesieve/managesieve.php
index 16c4518..e303301 100644
--- a/plugins/managesieve/managesieve.php
+++ b/plugins/managesieve/managesieve.php
@@ -629,6 +629,7 @@
             $notifybodies   = get_input_value('_action_notifybody', RCUBE_INPUT_POST);
             $notifymessages = get_input_value('_action_notifymessage', RCUBE_INPUT_POST);
             $notifyfrom     = get_input_value('_action_notifyfrom', RCUBE_INPUT_POST);
+            $notifyimp      = get_input_value('_action_notifyimportance', RCUBE_INPUT_POST);
 
             // we need a "hack" for radiobuttons
             foreach ($sizeitems as $item)
@@ -897,6 +898,7 @@
                     $this->form['actions'][$i]['body'] = $notifybodies[$idx];
                     $this->form['actions'][$i]['message'] = $notifymessages[$idx];
                     $this->form['actions'][$i]['from'] = $notifyfrom[$idx];
+                    $this->form['actions'][$i]['importance'] = $notifyimp[$idx];
                     break;
                 }
 
@@ -1613,6 +1615,20 @@
             .'<input type="text" name="_action_notifyfrom['.$id.']" id="action_notifyfrom'.$id.'" '
             .'value="' . Q($action['from']) . '" size="35" '
             . $this->error_class($id, 'action', 'from', 'action_notifyfrom') .' />';
+        $importance_options = array(
+            3 => 'notifyimportancelow',
+            2 => 'notifyimportancenormal',
+            1 => 'notifyimportancehigh'
+        );
+        $select_importance = new html_select(array(
+            'name' => '_action_notifyimportance[' . $id . ']',
+            'id' => '_action_notifyimportance' . $id,
+            'class' => $this->error_class($id, 'action', 'importance', 'action_notifyimportance')));
+        foreach ($importance_options as $io_v => $io_n) {
+            $select_importance->add(Q($this->gettext($io_n)), $io_v);
+        }
+        $out .= '<br /><span class="label">' . Q($this->gettext('notifyimportance')) . '</span><br />';
+        $out .= $select_importance->show(array(intval($action['importance'])));
         $out .= '</div>';
 
         // mailbox select
diff --git a/plugins/managesieve/tests/src/parser_notify_a b/plugins/managesieve/tests/src/parser_notify_a
index 324805a..68a9ef5 100644
--- a/plugins/managesieve/tests/src/parser_notify_a
+++ b/plugins/managesieve/tests/src/parser_notify_a
@@ -1,16 +1,19 @@
 require ["enotify","variables"];
+# rule:[notify1]
 if header :contains "from" "boss@example.org"
 {
 	notify :importance "1" :message "This is probably very important" "mailto:alm@example.com";
 	stop;
 }
+# rule:[subject]
 if header :matches "Subject" "*"
 {
 	set "subject" "${1}";
 }
+# rule:[from notify2]
 if header :matches "From" "*"
 {
 	set "from" "${1}";
+	notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com";
 }
-notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com";
 
diff --git a/plugins/managesieve/tests/src/parser_notify_b b/plugins/managesieve/tests/src/parser_notify_b
index 5378985..8854658 100644
--- a/plugins/managesieve/tests/src/parser_notify_b
+++ b/plugins/managesieve/tests/src/parser_notify_b
@@ -1,15 +1,18 @@
 require ["envelope","variables","enotify"];
+# rule:[from]
 if envelope :all :matches "from" "*"
 {
 	set "env_from" " [really: ${1}]";
 }
+# rule:[subject]
 if header :matches "Subject" "*"
 {
 	set "subject" "${1}";
 }
+# rule:[from notify]
 if address :all :matches "from" "*"
 {
 	set "from_addr" "${1}";
+	notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com";
 }
-notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com";
 

--
Gitblit v1.9.1