From a4a66a65541d696b369f089bccae52f13a27af84 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Tue, 24 Aug 2010 23:47:43 -0600 Subject: [PATCH] Use Horde_Tree to render folder tree in MIMP --- imp/folders-mimp.php | 31 +++++++++++-------------------- imp/lib/Imap/Tree.php | 27 +++++++++++++++++++++------ imp/templates/mimp/folders/folders.html | 4 +--- 3 files changed, 33 insertions(+), 29 deletions(-) diff --git a/imp/folders-mimp.php b/imp/folders-mimp.php index fa9812b26..c8dc0d4b8 100644 --- a/imp/folders-mimp.php +++ b/imp/folders-mimp.php @@ -33,6 +33,7 @@ $showAll = (!$subscribe || $_SESSION['imp']['showunsub']); /* Initialize the IMP_Imap_Tree object. */ $imptree = $injector->getInstance('IMP_Imap_Tree'); +$mask = IMP_Imap_Tree::FLIST_CONTAINER; /* Toggle subscribed view, if necessary. */ if ($subscribe && Horde_Util::getFormData('ts')) { @@ -40,27 +41,15 @@ if ($subscribe && Horde_Util::getFormData('ts')) { $_SESSION['imp']['showunsub'] = $showAll; $imptree->showUnsubscribed($showAll); if ($showAll) { - $imptree->setIteratorFilter(IMP_Imap_Tree::FLIST_UNSUB); + $mask |= IMP_Imap_Tree::FLIST_UNSUB; } } -/* Initialize Horde_Template. */ -$t = $injector->createInstance('Horde_Template'); - -/* Start iterating through the list of mailboxes, displaying them. */ -$rows = array(); -foreach ($imptree as $val) { - $poll_info = $val->polled - ? $val->poll_info - : null; - $rows[] = array( - 'level' => str_repeat(' ', $val->level * 2), - 'label' => htmlspecialchars(Horde_String::abbreviate($val->label, 30 - ($val->level * 2))), - 'link' => ($val->container ? null : IMP::generateIMPUrl('mailbox-mimp.php', $val->value)), - 'msgs' => ($poll_info ? ($poll_info->unseen . '/' . $poll_info->msgs) : null) - ); -} -$t->set('rows', $rows); +$imptree->setIteratorFilter($mask); +$tree = $imptree->createTree('mimp_folders', array( + 'poll_info' => true, + 'render_type' => 'Simplehtml' +)); $selfurl = Horde::applicationUrl('folders-mimp.php'); $menu = array(array(_("Refresh"), $selfurl)); @@ -71,10 +60,12 @@ if ($subscribe) { ); } -$t->set('menu', $injector->getInstance('IMP_Ui_Mimp')->getMenu('folders', $menu)); - $title = _("Folders"); + +$t = $injector->createInstance('Horde_Template'); +$t->set('menu', $injector->getInstance('IMP_Ui_Mimp')->getMenu('folders', $menu)); $t->set('title', $title); +$t->set('tree', $tree->getTree(true)); require_once IMP_TEMPLATES . '/common-header.inc'; IMP::status(); diff --git a/imp/lib/Imap/Tree.php b/imp/lib/Imap/Tree.php index b8d166ca7..79d824535 100644 --- a/imp/lib/Imap/Tree.php +++ b/imp/lib/Imap/Tree.php @@ -1473,12 +1473,18 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator * DEFAULT: null (add to base level) * 'poll_info' - (boolean) Include poll information? * DEFAULT: false + * 'render_type' - (string) The renderer name. + * DEFAULT: Javascript * * * @return Horde_Tree The tree object. */ public function createTree($name, array $opts = array()) { + $opts = array_merge(array( + 'render_type' => 'Javascript' + ), $opts); + $this->recent = array(); $this->unseen = 0; @@ -1487,7 +1493,7 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator $indent = $opts['indent']; $parent = $opts['parent']; } else { - $tree = $GLOBALS['injector']->getInstance('Horde_Tree')->getTree($name, 'Javascript', array( + $tree = $GLOBALS['injector']->getInstance('Horde_Tree')->getTree($name, $opts['render_type'], array( 'alternate' => true, 'lines' => true, 'lines_base' => true @@ -1495,13 +1501,23 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator $indent = 0; $parent = null; } - $mailbox_url = Horde::applicationUrl('mailbox.php'); + + $mailbox_url = (IMP::getViewMode() == 'mimp') + ? Horde::applicationUrl('mailbox-mimp.php') + : Horde::applicationUrl('mailbox.php'); foreach ($this as $val) { $after = $class = ''; - $label = $val->name; $url = null; + if ($opts['render_type'] == 'Simplehtml') { + $label = htmlspecialchars(Horde_String::abbreviate($val->label, 30 - ($val->level * 2))); + $icon = null; + } else { + $label = $val->name; + $icon = $val->icon; + } + if (!empty($opts['poll_info']) && $val->polled) { $poll_info = $val->poll_info; @@ -1541,7 +1557,6 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator } } - $icon = $val->icon; $tree->addNode( strval($parent) . $val->value, ($val->level) ? strval($parent) . $val->parent : $parent, @@ -1550,8 +1565,8 @@ class IMP_Imap_Tree implements ArrayAccess, Iterator $val->is_open, array( 'class' => $class, - 'icon' => $icon->icon, - 'iconopen' => $icon->iconopen, + 'icon' => $icon ? $icon->icon : null, + 'iconopen' => $icon ? $icon->iconopen : null, 'url' => $url ), $after, diff --git a/imp/templates/mimp/folders/folders.html b/imp/templates/mimp/folders/folders.html index 4a99017d1..0c3c96bee 100644 --- a/imp/templates/mimp/folders/folders.html +++ b/imp/templates/mimp/folders/folders.html @@ -1,8 +1,6 @@

- -
()
-
+
Menu
-- 2.11.0