From e9ecd49f7460f571e2bf13161038371e2d5f8bfb Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 11 Aug 2014 07:11:10 -0400
Subject: [PATCH] Added namespace filter in Folder Manager

---
 program/steps/settings/folders.inc |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 061cd88..14e41d6 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -181,8 +181,9 @@
 
 // register UI objects
 $OUTPUT->add_handlers(array(
-    'foldersubscription' => 'rcube_subscription_form',
+    'foldersubscription' => 'rcmail_subscription_form',
     'folderframe'        => 'rcmail_folder_frame',
+    'folderfilter'       => 'rcmail_folder_filter',
     'quotadisplay'       => array($RCMAIL, 'quota_display'),
 ));
 
@@ -190,7 +191,7 @@
 
 
 // build table with all folders listed by server
-function rcube_subscription_form($attrib)
+function rcmail_subscription_form($attrib)
 {
     global $RCMAIL, $OUTPUT;
 
@@ -424,6 +425,50 @@
     return $OUTPUT->frame($attrib, true);
 }
 
+function rcmail_folder_filter($attrib)
+{
+    global $RCMAIL;
+
+    $storage   = $RCMAIL->get_storage();
+    $namespace = $storage->get_namespace();
+
+    if (empty($namespace['personal']) && empty($namespace['shared']) && empty($namespace['other'])) {
+        return '';
+    }
+
+    if (!$attrib['id']) {
+        $attrib['id'] = 'rcmfolderfilter';
+    }
+
+    $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . '.folder_filter(this.value)';
+
+    $roots  = array();
+    $select = new html_select($attrib);
+    $select->add($RCMAIL->gettext('all'), '---');
+
+    foreach (array_keys($namespace) as $type) {
+        foreach ((array)$namespace[$type] as $ns) {
+            $root  = rtrim($ns[0], $ns[1]);
+            $label = $RCMAIL->gettext('namespace.' . $type);
+
+            if (count($namespace[$type]) > 1) {
+                $label .= ' (' . rcube_charset::convert($root, 'UTF7-IMAP', RCUBE_CHARSET) . ')';
+            }
+
+            $select->add($label, $root);
+
+            if (strlen($root)) {
+                $roots[] = $root;
+            }
+        }
+    }
+
+    $RCMAIL->output->add_gui_object('foldersfilter', $attrib['id']);
+    $RCMAIL->output->set_env('ns_roots', $roots);
+
+    return $select->show();
+}
+
 function rcmail_rename_folder($oldname, $newname)
 {
     global $RCMAIL;

--
Gitblit v1.9.1