From: Michael M Slusarz Date: Tue, 28 Jul 2009 22:50:16 +0000 (-0600) Subject: Add simple search function to MIMP X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=eb111c16dfcd43695715156bf81272212816b998;p=horde.git Add simple search function to MIMP --- diff --git a/imp/docs/CHANGES b/imp/docs/CHANGES index 29a9f9444..789a1cf09 100644 --- a/imp/docs/CHANGES +++ b/imp/docs/CHANGES @@ -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 diff --git a/imp/mailbox-mimp.php b/imp/mailbox-mimp.php index 675ab8b8e..f5b87df75 100644 --- a/imp/mailbox-mimp.php +++ b/imp/mailbox-mimp.php @@ -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()); diff --git a/imp/message-mimp.php b/imp/message-mimp.php index c47e4fbe3..f512ea954 100644 --- a/imp/message-mimp.php +++ b/imp/message-mimp.php @@ -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 index 000000000..4ab5d497c --- /dev/null +++ b/imp/templates/mailbox/search-mimp.inc @@ -0,0 +1,18 @@ +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();