From e499a14e13f37aa2031fe7443e5dcd04018aac58 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 28 Apr 2016 06:28:20 -0400
Subject: [PATCH] - Support 'duplicate' extension [RFC 7352] - Improve errors handling in filter form

---
 plugins/managesieve/managesieve.js |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js
index 117f01a..1316a5a 100644
--- a/plugins/managesieve/managesieve.js
+++ b/plugins/managesieve/managesieve.js
@@ -599,6 +599,7 @@
 {
   var obj = document.getElementById('header' + id),
     size = document.getElementById('rule_size' + id),
+    msg = document.getElementById('rule_message' + id),
     op = document.getElementById('rule_op' + id),
     header = document.getElementById('custom_header' + id + '_list'),
     mod = document.getElementById('rule_mod' + id),
@@ -610,7 +611,11 @@
 
   if (h == 'size') {
     size.style.display = 'inline';
-    $.each([op, header, mod, trans, comp], function() { this.style.display = 'none'; });
+    $.each([op, header, mod, trans, comp, msg], function() { this.style.display = 'none'; });
+  }
+  else if (h == 'message') {
+    msg.style.display = 'inline';
+    $.each([op, header, mod, trans, comp, size], function() { this.style.display = 'none'; });
   }
   else {
     header.style.display = h != '...' ? 'none' : 'inline-block';
@@ -619,6 +624,7 @@
     comp.style.display = '';
     mod.style.display = h == 'body' || h == 'currentdate' || h == 'date' ? 'none' : 'block';
     trans.style.display = h == 'body' ? 'block' : 'none';
+    msg.style.display = h == 'message' ? 'block' : 'none';
   }
 
   if (datepart)
@@ -638,7 +644,7 @@
   if (!header)
     header = document.getElementById('header' + id).value;
 
-  target.style.display = obj.value == 'exists' || obj.value == 'notexists' || header == 'size' ? 'none' : 'inline-block';
+  target.style.display = obj.value.match(/^(exists|notexists)$/) || header.match(/^(size|message)$/) ? 'none' : 'inline-block';
 };
 
 function rule_trans_select(id)
@@ -653,6 +659,7 @@
 {
   var obj = document.getElementById('rule_mod_op' + id),
     target = document.getElementById('rule_mod_type' + id),
+    duplicate = document.getElementById('rule_duplicate_div' + id),
     index = document.getElementById('rule_index_div' + id);
 
   if (!header)
@@ -661,7 +668,10 @@
   target.style.display = obj.value != 'address' && obj.value != 'envelope' ? 'none' : 'inline';
 
   if (index)
-    index.style.display = header != 'body' && header != 'currentdate' && header != 'size' && obj.value != 'envelope'  ? '' : 'none';
+    index.style.display = !header.match(/^(body|currentdate|size|message)$/) && obj.value != 'envelope'  ? '' : 'none';
+
+  if (duplicate)
+    duplicate.style.display = header == 'message' ? '' : 'none';
 };
 
 function rule_join_radio(value)
@@ -954,6 +964,13 @@
     .click(function() {  // show drop-down upon clicks
       $(this).autocomplete('search', $(this).val() || ' ');
     })
+
+  // display advanced controls when contain errors
+  $('input.error').each(function() {
+    if (String(this.id).match(/([0-9]+)$/)) {
+      $('#ruleadv' + RegExp.$1 + '.show').click();
+    }
+  });
 }
 
 

--
Gitblit v1.9.1