Browse code

JavaScript-Erweiterungen: User kann Weiterleitungen direkt löschen

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@2218 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on05/03/2012 14:58:37
Showing3 changed files
... ...
@@ -2,6 +2,7 @@
2 2
 
3 3
 require_once('inc/debug.php');
4 4
 require_once('inc/security.php');
5
+require_once('inc/icons.php');
5 6
 
6 7
 require_once('vmail.php');
7 8
 
... ...
@@ -44,10 +45,16 @@ $numforwards = max(count($account['forwards']), 1);
44 45
 output("<script type=\"text/javascript\">
45 46
   
46 47
   var numForwards = {$numforwards};
48
+  var forwardsCounter = {$numforwards};
47 49
 
48 50
   function moreForward()
49 51
   {
50 52
     numForwards += 1;
53
+    forwardsCounter += 1;
54
+
55
+    if ( document.getElementById('vmail_forward_' + forwardsCounter) ) {
56
+      document.getElementById('vmail_forward_' + forwardsCounter).style.display = ''
57
+    }
51 58
 
52 59
     P1 = document.createElement('p');
53 60
 
... ...
@@ -55,7 +62,8 @@ output("<script type=\"text/javascript\">
55 62
 
56 63
     INPUT = document.createElement('input');
57 64
     INPUT.type = 'text';
58
-    INPUT.name = 'forward_to_' + numForwards;
65
+    INPUT.name = 'forward_to_' + forwardsCounter;
66
+    INPUT.id = 'forward_to_' + forwardsCounter;
59 67
     INPUT.value = '';
60 68
 
61 69
     P1.appendChild(TXT1);
... ...
@@ -66,7 +74,8 @@ output("<script type=\"text/javascript\">
66 74
     TXT2 = document.createTextNode('Spam-Mails an diese Adresse ');
67 75
 
68 76
     SELECT = document.createElement('select');
69
-    SELECT.name = 'spamfilter_action_' + numForwards;
77
+    SELECT.id = 'spamfilter_action_' + forwardsCounter;
78
+    SELECT.name = 'spamfilter_action_' + forwardsCounter;
70 79
 
71 80
     SELECT.options[0] = new Option('nicht filtern', 'none', 1);
72 81
     SELECT.options[1] = new Option('markieren und zustellen', 'tag', 0);
... ...
@@ -77,14 +86,35 @@ output("<script type=\"text/javascript\">
77 86
 
78 87
     DIV = document.createElement('div');
79 88
     DIV.className = 'vmail-forward';
89
+    DIV.id = 'vmail_forward_' + forwardsCounter;
90
+
91
+    DELETE = document.getElementById('vmail_forward_1').getElementsByTagName('div')[0].cloneNode(true);
80 92
 
93
+    DIV.appendChild(DELETE);
81 94
     DIV.appendChild(P1);
82 95
     DIV.appendChild(P2);
83 96
 
84
-    parent = document.getElementById('forward_config');
97
+    parent = document.getElementById('forward_entries');
85 98
     parent.appendChild(DIV);
86 99
   }
87 100
 
101
+  function removeForward(elem) 
102
+  {
103
+    div_id = elem.parentNode.parentNode.id;
104
+    div = document.getElementById(div_id);
105
+    input = div.getElementsByTagName('input')[0];
106
+    input.value = '';
107
+    select = div.getElementsByTagName('select')[0];
108
+    select.options[0].selected = 'selected';
109
+    if (numForwards >= 1) {
110
+      numForwards -= 1;
111
+    }
112
+    if (numForwards >= 1) {
113
+      div.style.display = 'none';
114
+      document.getElementById('forward_entries').removeChild(div);
115
+    }
116
+  }
117
+
88 118
   function toggleDisplay(checkbox_id, item_id) 
89 119
   {
90 120
     if (document.getElementById(checkbox_id).checked == true) {
... ...
@@ -216,26 +246,23 @@ $form .= "<p><input onchange=\"toggleDisplay('forward', 'forward_config')\" type
216 246
 
217 247
 $form .= "<div style=\"margin-left: 2em;".($is_forward ? '' : ' display: none;')."\" id=\"forward_config\">";
218 248
 
219
-if ($is_forward)
220
-{
221
-  for ($i = 0 ; $i < $numforwards ; $i++)
222
-  {
223
-    $num = $i+1;
224
-    $form .= "<div class=\"vmail-forward\">
225
-    <p>Weiterleiten an <input type=\"text\" id=\"forward_to_{$num}\" name=\"forward_to_{$num}\" value=\"{$account['forwards'][$i]['destination']}\" /></p>
226
-    <p>Spam-Mails an diese Adresse ".html_select('spamfilter_action_'.$num, array("none" => 'nicht filtern', "tag" => 'markieren und zustellen', "delete" => 'nicht zustellen'), $account['forwards'][$i]['spamfilter'])."</p>
227
-    </div>\n";
228
-  }
249
+$form .= '<div id="forward_entries">
250
+';
251
+if (! isset($account['forwards'][0])) {
252
+  $account['forwards'][0] = array('destination' => '', 'spamfilter' => 'none');
229 253
 }
230
-else
254
+for ($i = 0 ; $i < $numforwards ; $i++)
231 255
 {
232
-    $form .= "<div class=\"vmail-forward\">
233
-    <p>Weiterleiten an <input type=\"text\" id=\"forward_to_1\" name=\"forward_to_1\" value=\"\" /></p>
234
-    <p>Spam-Mails an diese Adresse ".html_select('spamfilter_action_1', array("none" => 'nicht filtern', "tag" => 'markieren und zustellen', "delete" => 'nicht zustellen'), "none")."</p>
235
-    </div>\n";
256
+  $num = $i+1;
257
+  $form .= "<div class=\"vmail-forward\" id=\"vmail_forward_{$num}\">
258
+  <div style=\"float: right;\"><a href=\"#\" onclick=\"removeForward(this);\">".icon_delete("Diese Weiterleitung entfernen")."</a></div>
259
+  <p>Weiterleiten an <input type=\"text\" id=\"forward_to_{$num}\" name=\"forward_to_{$num}\" value=\"{$account['forwards'][$i]['destination']}\" /></p>
260
+  <p>Spam-Mails an diese Adresse ".html_select('spamfilter_action_'.$num, array("none" => 'nicht filtern', "tag" => 'markieren und zustellen', "delete" => 'nicht zustellen'), $account['forwards'][$i]['spamfilter'])."</p>
261
+  </div>\n";
236 262
 }
263
+$form .= '</div>';
237 264
 
238
-$form .= '<p>[ <a href="#" onclick="moreForward();">mehr Empfänger</a> ]</p>
265
+$form .= '<p><a href="#" onclick="moreForward();">'.icon_add().' Weiteren Empfänger hinzufügen</a></p>
239 266
 </div>';
240 267
 
241 268
 $form .= '<p><input type="submit" value="Speichern" />&#160;&#160;&#160;&#160;'.internal_link('vmail', 'Abbrechen').'</p>';
... ...
@@ -136,15 +136,16 @@ if ($_GET['action'] == 'edit')
136 136
     $num = 1;
137 137
     while (true)
138 138
     {
139
-      if (! isset($_POST['forward_to_'.$num]))
139
+      // Die ersten 50 Einträge in jedem Fall prüfen, danach nur so lange zusätzliche Einträge vorhanden
140
+      if (! isset($_POST['forward_to_'.$num]) && ! isset($_POST['spamfilter_action_'.$num]) && $num > 50)
140 141
         break;
141
-      if ($_POST['forward_to_'.$num] == '')
142
-        break;
143
-      $fwd = array("spamfilter" => $_POST['spamfilter_action_'.$num], "destination" => chop($_POST['forward_to_'.$num]));
144
-      array_push($account['forwards'], $fwd);
142
+      if (isset($_POST['forward_to_'.$num]) && chop($_POST['forward_to_'.$num]) != '') {
143
+        $fwd = array("spamfilter" => $_POST['spamfilter_action_'.$num], "destination" => chop($_POST['forward_to_'.$num]));
144
+        array_push($account['forwards'], $fwd);
145
+      }
145 146
       $num++;
146 147
     }
147
-    if ($num == 1) system_failure("Bitte mindestens eine Weiterleitungsadresse angeben.");
148
+    if (count($account['forwards']) == 0) system_failure("Bitte mindestens eine Weiterleitungsadresse angeben.");
148 149
   }
149 150
 
150 151
   if ((isset($_POST['forward']) && $_POST['forward']!='yes') && ($_POST['mailbox']!='yes'))
... ...
@@ -205,6 +205,7 @@ div#beta h3 {
205 205
 }
206 206
 
207 207
 div.vmail-forward {
208
+  width: 40em;
208 209
   border: 1px solid black;
209 210
   padding: 0.5em;
210 211
   margin-bottom: 0.5em;