Add simple search function to MIMP
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 28 Jul 2009 22:50:16 +0000 (16:50 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 28 Jul 2009 22:50:16 +0000 (16:50 -0600)
imp/docs/CHANGES
imp/mailbox-mimp.php
imp/message-mimp.php
imp/templates/mailbox/search-mimp.inc [new file with mode: 0644]

index 29a9f94..789a1cf 100644 (file)
@@ -2,6 +2,7 @@
 v5.0-git
 --------
 
+[mms] Add simple search function to MIMP.
 [mms] DIMP now honors the 'mailbox_start' preference.
 [mms] Logins now handled by Horde login handler.
 [mms] When generating and sending compressed ZIP data, use server-side temp
index 675ab8b..f5b87df 100644 (file)
@@ -8,6 +8,7 @@
  *   's' = (integer) start
  *   'sb' = (integer) change sort: by
  *   'sd' = (integer) change sort: dir
+ *   'search' = (sring) The search string
  *
  * Copyright 1999-2009 The Horde Project (http://www.horde.org/)
  *
@@ -47,6 +48,28 @@ case 'e':
 case 'c':
     IMP::setSort(Horde_Util::getFormData('sb'), Horde_Util::getFormData('sd'));
     break;
+
+// 's' = search
+case 's':
+    require IMP_TEMPLATES . '/mailbox/search-mimp.inc';
+    exit;
+
+// 'rs' = run search
+case 'rs':
+    $search_query = Horde_Util::getFormData('search');
+    if (!empty($search_query) &&
+        ($_SESSION['imp']['protocol'] == 'imap')) {
+        $query = new Horde_Imap_Client_Search_Query();
+        $query->text($search_query, false);
+
+        /* Create the search query and reset the global $imp_mbox variable. */
+        $sq = $imp_search->createSearchQuery($query, array(Horde_Util::getFormData('mailbox')), array(), _("Search Results"));
+        IMP::setCurrentMailboxInfo($imp_search->createSearchID($sq));
+
+        /* Need to re-calculate the read-only value. */
+        $readonly = $imp_imap->isReadOnly($imp_mbox['mailbox']);
+    }
+    break;
 }
 
 /* Get the base URL for this page. */
@@ -145,6 +168,7 @@ while (list(,$ob) = each($mbox_info['overview'])) {
 
 $mailbox = Horde_Util::addParameter($mailbox_url, 'p', $pageOb['page']);
 $items = array($mailbox => _("Refresh"));
+$search_mbox = $imp_search->isSearchMbox($imp_mbox['mailbox']);
 
 /* Determine if we are going to show the Purge Deleted link. */
 if (!$readonly &&
@@ -167,7 +191,8 @@ foreach ($sort_list as $key => $val) {
         $sortdir = $sortpref['dir'];
         $sortkey = $key;
         if (($key == Horde_Imap_Client::SORT_SUBJECT) &&
-            IMP::threadSortAvailable($mailbox)) {
+            IMP::threadSortAvailable($mailbox) &&
+            !$search_mbox) {
             if (is_null($threadob)) {
                 $items[Horde_Util::addParameter($mailbox, array('a' => 'c', 'sb' => Horde_Imap_Client::SORT_THREAD, 'sd' => $sortdir))] = _("Sort by Thread");
             } else {
@@ -183,6 +208,12 @@ foreach ($sort_list as $key => $val) {
     }
 }
 
+/* Add search link. */
+if (!$search_mbox &&
+    ($_SESSION['imp']['protocol'] == 'imap')) {
+    $items[Horde_Util::addParameter($mailbox_url, array('a' => 's'))] = _("Search");
+}
+
 /* Create mailbox menu. */
 $menu = new Horde_Mobile_card('o', _("Menu"));
 $mset = &$menu->add(new Horde_Mobile_linkset());
index c47e4fb..f512ea9 100644 (file)
@@ -342,7 +342,7 @@ if (isset($prev_link)) {
     $mset->add(new Horde_Mobile_link(_("Prev"), $prev_link));
 }
 
-$mset->add(new Horde_Mobile_link(sprintf(_("To %s"), IMP::getLabel($mailbox_name)), $mailbox_link));
+$mset->add(new Horde_Mobile_link(sprintf(_("To %s"), IMP::getLabel($imp_mbox['mailbox'])), $mailbox_link));
 
 MIMP::addMIMPMenu($mset, 'message');
 
diff --git a/imp/templates/mailbox/search-mimp.inc b/imp/templates/mailbox/search-mimp.inc
new file mode 100644 (file)
index 0000000..4ab5d49
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+$mimp_render = new Horde_Mobile();
+$c = $mimp_render->add(new Horde_Mobile_card('m', sprintf(_("Search %s"), $imp_mbox['mailbox'])));
+
+$f = $c->add(new Horde_Mobile_form('mailbox-mimp.php'));
+
+$f->add(new Horde_Mobile_hidden('a', 'rs'));
+$f->add(new Horde_Mobile_hidden('mailbox', $imp_mbox['mailbox']));
+
+$f->add(new Horde_Mobile_input('search', '', _("Search String: ")));
+
+$f->add(new Horde_Mobile_submit(_("Run Search"), 'submit'));
+
+$imp_notify->setMobileObject($c);
+$notification->notify(array('listeners' => 'status'));
+
+$mimp_render->display();