Filter-Funktion für vmail-Accounts
Bernd Wurst

Bernd Wurst commited on 2018-02-20 11:35:39
Zeige 5 geänderte Dateien mit 51 Einfügungen und 4 Löschungen.

... ...
@@ -75,7 +75,7 @@ if ($is_current_user) {
75 75
         $used = true;
76 76
     }
77 77
     if (have_module('email') && mail_in_use($dom->id)) {
78
-        output("<p>Es gibt E-Mail-Postfächer unter dieser Domain ".internal_link('../email/vmail', '&#x2192; Bearbeiten', 'domain='.$dom->fqdn)."</p>");
78
+        output("<p>Es gibt E-Mail-Postfächer unter dieser Domain ".internal_link('../email/vmail', '&#x2192; Bearbeiten', 'filter='.$dom->fqdn)."</p>");
79 79
         $used = true;
80 80
     }
81 81
     if (have_module('mailman') && mailman_subdomains($dom->id)) {
... ...
@@ -0,0 +1,12 @@
1
+
2
+input#filter {
3
+    padding-right: 25px;
4
+}
5
+button#clear {
6
+    width: 20px;
7
+    margin-left: -22px;
8
+    margin-right: 1em;
9
+    padding: 0 5px;
10
+    background-color: #fff;
11
+    border: 0;
12
+}
... ...
@@ -0,0 +1,6 @@
1
+$(function() {
2
+    $('#clear').click( function() { 
3
+        $('#filter').val('');
4
+        $('#vmail_filter').submit();
5
+    });
6
+});
... ...
@@ -18,6 +18,8 @@ require_once('inc/base.php');
18 18
 require_once('inc/icons.php');
19 19
 require_once('inc/security.php');
20 20
 require_role(ROLE_SYSTEMUSER);
21
+require_once('inc/jquery.php');
22
+javascript();
21 23
 
22 24
 require_once('hasdomain.php');
23 25
 
... ...
@@ -44,6 +46,10 @@ Subdomains können grundsätzlich nur durch Administratoren eingerichtet und ver
44 46
 else
45 47
 {
46 48
 
49
+$filter = NULL;
50
+if (isset($_REQUEST['filter']) && $_REQUEST['filter'] != '') {
51
+    $filter = $_REQUEST['filter'];
52
+}
47 53
 
48 54
 require_once('vmail.php');
49 55
 
... ...
@@ -67,11 +73,32 @@ addnew("edit", "Neue E-Mail-Adresse anlegen");
67 73
 
68 74
 if (count($domains) > 0)
69 75
 {
76
+    // Filter-Funktion
77
+    if (count($all_accounts) > 10 || $filter) {
78
+        $form = '<p><label for="filter">Filter für die Anzeige:</label> <input type="text" name="filter" id="filter" value="'.$filter.'"><button type="button" id="clear" title="Filter leeren">&times;</button><input type="submit" value="Filtern!"></p>';
79
+        output(html_form('vmail_filter', 'vmail', '', $form));
80
+    }
81
+
70 82
     output('
71 83
             <p>Folgende E-Mail-Konten sind aktuell eingerichtet:</p>
72 84
             ');
73 85
     foreach ($domains as $dom) 
74 86
     {
87
+        if ($filter && strpos($dom['domainname'], $filter) === false) {
88
+            // Die Domain entspricht nicht dem Filter, schau die Postfächer an
89
+            $account_found = false;
90
+            if (array_key_exists($dom['id'], $sorted_by_domains)) {
91
+                $accounts_on_domain = $sorted_by_domains[$dom['id']];
92
+                foreach ($accounts_on_domain AS $this_account) {
93
+                    if (strpos($this_account['local'], $filter) !== false) {
94
+                        $account_found = true;
95
+                    }
96
+                }
97
+            }
98
+            if (! $account_found) {
99
+                continue;
100
+            }
101
+        }
75 102
         output('
76 103
                 <h4>'.$dom['domainname'].' <small>('.other_icon('information.png', 'Zugangsdaten anzeigen').' '.internal_link('logindata', 'Zugangsdaten für E-Mail-Abruf anzeigen', 'server='.get_server_by_id($dom['server']).'&type=vmail').')</small></h4>
77 104
                 <div style="margin-left: 2em; margin-top: 0.5em; padding: 0.1em 0.5em;">');
... ...
@@ -80,6 +107,11 @@ if (count($domains) > 0)
80 107
 
81 108
             foreach ($accounts_on_domain AS $this_account)
82 109
             {
110
+                if ($filter && 
111
+                    (strpos($dom['domainname'], $filter) === false && 
112
+                     strpos($this_account['local'], $filter) === false)) {
113
+                    continue;
114
+                }
83 115
                 $acc = get_account_details($this_account['id']);
84 116
                 $actions = array();
85 117
                 DEBUG($acc);
... ...
@@ -39,9 +39,6 @@ $filter = "";
39 39
 if (isset($_REQUEST['filter']) && $_REQUEST['filter'] != '') {
40 40
   $filter = $_REQUEST['filter'];
41 41
 }
42
-if (isset($_REQUEST['clear']) && $_REQUEST['clear'] == 'X') {
43
-    $filter = "";
44
-}
45 42
 $vhosts = list_vhosts($filter);
46 43
 
47 44
 
48 45