Add Horde::menu()
authorMichael M Slusarz <slusarz@curecanti.org>
Thu, 9 Sep 2010 17:59:33 +0000 (11:59 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 9 Sep 2010 20:54:30 +0000 (14:54 -0600)
Add Horde_Registry_Application#menu(), which replaces
Horde_Registry_Application#prefsMenu(), and can now be used by any
application call, not just prefs.

If an application does not extend the menubar, all that is needed for
menu creation is to define app-specific menu elements in menu() and then
call 'echo Horde::menu()' within the app.

192 files changed:
agora/ban.php
agora/deleteforum.php
agora/editforum.php
agora/forums.php
agora/lib/Agora.php
agora/lib/Application.php
agora/messages/abuse.php
agora/messages/delete.php
agora/messages/edit.php
agora/messages/index.php
agora/messages/lock.php
agora/messages/merge.php
agora/messages/move.php
agora/messages/split.php
agora/moderate.php
agora/moderators.php
agora/owner.php
agora/search.php
agora/templates/ban.html.php
agora/templates/forums.html.php
agora/templates/main.html.php
agora/templates/messages/edit.html.php
agora/templates/messages/form.html.php
agora/templates/messages/index.html.php
agora/templates/messages/message.html.php
agora/templates/moderate.html.php
agora/templates/moderators.html.php
agora/templates/search.html.php
agora/templates/threads.html.php
agora/threads.php
ansel/browse.php
ansel/browse_edit.php
ansel/disclamer.php
ansel/faces/claim.php
ansel/faces/custom.php
ansel/faces/face.php
ansel/faces/gallery.php
ansel/faces/report.php
ansel/faces/search/all.php
ansel/faces/search/image.php
ansel/faces/search/image_define.php
ansel/faces/search/image_search.php
ansel/faces/search/name.php
ansel/faces/search/named.php
ansel/faces/search/owner.php
ansel/gallery.php
ansel/gallery/captions.php
ansel/gallery/sort.php
ansel/group.php
ansel/image.php
ansel/img/upload.php
ansel/lib/Ansel.php
ansel/lib/Application.php
ansel/protect.php
ansel/report.php
ansel/templates/menu.inc [deleted file]
ansel/view.php
beatnik/lib/Application.php
chora/lib/Application.php
chora/lib/Chora.php
chora/templates/menu.inc
crumb/lib/Application.php
fima/lib/Application.php
folks/lib/Application.php
framework/Core/lib/Horde.php
framework/Core/lib/Horde/Core/Prefs/Ui.php
framework/Core/lib/Horde/Registry/Application.php
gollem/clipboard.php
gollem/lib/Application.php
gollem/lib/Gollem.php
gollem/manager.php
gollem/permissions.php
horde/services/portal/edit.php
horde/services/portal/index.php
horde/services/problem.php
horde/templates/menu/menu.inc
imp/compose.php
imp/folders.php
imp/lib/Application.php
imp/lib/IMP.php
imp/lib/Prefs/Ui.php
imp/mailbox.php
imp/message.php
imp/search-basic.php
imp/search.php
imp/thread.php
ingo/blacklist.php
ingo/filters.php
ingo/forward.php
ingo/lib/Application.php
ingo/lib/Ingo.php
ingo/rule.php
ingo/script.php
ingo/spam.php
ingo/vacation.php
ingo/whitelist.php
jeta/index.php
jeta/lib/Application.php
jeta/lib/Jeta.php [deleted file]
jeta/templates/main.html
jonah/channels/aggregate.php
jonah/channels/delete.php
jonah/channels/edit.php
jonah/channels/index.php
jonah/delivery/html.php
jonah/feed.php
jonah/lib/Application.php
jonah/lib/Jonah.php
jonah/stories/delete.php
jonah/stories/edit.php
jonah/stories/index.php
jonah/stories/results.php
jonah/stories/view.php
jonah/templates/channels/index.html
jonah/templates/delivery/html.html
jonah/templates/main/main.html
jonah/templates/stories/index.html
jonah/templates/stories/view.html
kastalia/lib/Application.php
kronolith/calendars/create.php
kronolith/calendars/delete.php
kronolith/calendars/edit.php
kronolith/calendars/index.php
kronolith/calendars/remote_edit.php
kronolith/calendars/remote_subscribe.php
kronolith/calendars/remote_unsubscribe.php
kronolith/data.php
kronolith/day.php
kronolith/event.php
kronolith/lib/Application.php
kronolith/lib/Kronolith.php
kronolith/month.php
kronolith/new.php
kronolith/resources/create.php
kronolith/resources/delete.php
kronolith/resources/edit.php
kronolith/resources/groups/create.php
kronolith/resources/groups/delete.php
kronolith/resources/groups/edit.php
kronolith/resources/groups/index.php
kronolith/resources/index.php
kronolith/search.php
kronolith/templates/menu.inc [deleted file]
kronolith/week.php
kronolith/workweek.php
kronolith/year.php
luxor/lib/Application.php
mnemo/data.php
mnemo/lib/Application.php
mnemo/lib/Mnemo.php
mnemo/list.php
mnemo/memo.php
mnemo/notepads/create.php
mnemo/notepads/delete.php
mnemo/notepads/edit.php
mnemo/notepads/index.php
mnemo/notes/index.php
mnemo/search.php
mnemo/templates/menu.inc [deleted file]
mnemo/view.php
nag/data.php
nag/lib/Application.php
nag/lib/Nag.php
nag/list.php
nag/search.php
nag/task.php
nag/tasklists/create.php
nag/tasklists/delete.php
nag/tasklists/edit.php
nag/tasklists/index.php
nag/tasks/index.php
nag/templates/menu.inc [deleted file]
nag/view.php
news/lib/Application.php
pastie/lib/Application.php
skeleton/lib/Application.php
skeleton/lib/Skeleton.php [deleted file]
skeleton/list.php
skeleton/templates/menu.inc [deleted file]
skoli/lib/Application.php
trean/add.php
trean/browse.php
trean/data.php
trean/edit.php
trean/lib/Application.php
trean/lib/Trean.php
trean/reports.php
trean/search.php
trean/templates/menu.inc [deleted file]
turba/lib/Application.php
turba/lib/Turba.php
turba/templates/menu.inc

index 006a55f..e8d057f 100644 (file)
@@ -58,7 +58,7 @@ $vars->set('action', 'add');
 $form->addVariable(_("User"), 'user', 'text', true);
 
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, null, 'ban.php', 'post');
index 81bacb9..cb429d6 100644 (file)
@@ -69,7 +69,7 @@ if ($form->validate()) {
 
 /* Set up template variables. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer()
 $form->renderActive(null, $vars, 'deleteforum.php', 'post');
index acc012a..7185cac 100644 (file)
@@ -57,7 +57,7 @@ if ($forum_id) {
 
 /* Set up template variables. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, null, 'editforum.php', 'post');
index 7fe577f..331ed54 100644 (file)
@@ -57,7 +57,7 @@ $col_headers = Agora::formatColumnHeaders($col_headers, $sort_by, $sort_dir, 'fo
 $view = new Agora_View();
 $view->col_headers = $col_headers;
 $view->forums_list = $forums_list;
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index 60e2a0d..174a12a 100644 (file)
@@ -233,48 +233,6 @@ class Agora {
         }
     }
 
-    function getMenu($returnType = 'object')
-    {
-        $menu = new Horde_Menu();
-        $img_dir = Horde_Themes::img();
-        $scope = Horde_Util::getGet('scope', 'agora');
-
-        /* Agora Home. */
-        $url = Horde_Util::addParameter(Horde::url('forums.php'), 'scope', $scope);
-        $menu->add($url, _("_Forums"), 'forums.png', $img_dir, null, null,
-                   dirname($_SERVER['PHP_SELF']) == $GLOBALS['registry']->get('webroot') && basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
-
-        /* Thread list, if applicable. */
-        if (isset($GLOBALS['forum_id'])) {
-            $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::url('threads.php')), _("_Threads"), 'threads.png', Horde_Themes::img());
-            if ($scope == 'agora' && $GLOBALS['registry']->getAuth()) {
-                $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::url('messages/edit.php')), _("New Thread"), 'newmessage.png', Horde_Themes::img());
-            }
-        }
-
-        if ($scope == 'agora' && Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) {
-            $menu->add(Horde::url('editforum.php'), _("_New Forum"), 'newforum.png', $img_dir, null, null, Horde_Util::getFormData('agora') ? '__noselection' : null);
-        }
-
-        if (Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) {
-            $url = Horde_Util::addParameter(Horde::url('moderate.php'), 'scope', $scope);
-            $menu->add($url, _("_Moderate"), 'moderate.png', $img_dir);
-        }
-
-        if ($GLOBALS['registry']->isAdmin()) {
-            $menu->add(Horde::url('moderators.php'), _("_Moderators"), 'hot.png', $img_dir);
-        }
-
-        $url = Horde_Util::addParameter(Horde::url('search.php'), 'scope', $scope);
-        $menu->add($url, _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
-
-        if ($returnType == 'object') {
-            return $menu;
-        } else {
-            return $menu->render();
-        }
-    }
-
     function validateAvatar($avatar_path)
     {
         if (!$GLOBALS['conf']['avatar']['allow_avatars'] || !$avatar_path) {
index ef0f8f4..f5b4747 100644 (file)
@@ -74,6 +74,47 @@ class Agora_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        $img_dir = Horde_Themes::img();
+        $scope = Horde_Util::getGet('scope', 'agora');
+
+        /* Agora Home. */
+        $url = Horde::url('forums.php')->add('scope', $scope);
+        $menu->add($url, _("_Forums"), 'forums.png', $img_dir, null, null,
+                   dirname($_SERVER['PHP_SELF']) == $GLOBALS['registry']->get('webroot') && basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+
+        /* Thread list, if applicable. */
+        if (isset($GLOBALS['forum_id'])) {
+            $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::url('threads.php')), _("_Threads"), 'threads.png', Horde_Themes::img());
+            if ($scope == 'agora' && $GLOBALS['registry']->getAuth()) {
+                $menu->add(Agora::setAgoraId($GLOBALS['forum_id'], null, Horde::url('messages/edit.php')), _("New Thread"), 'newmessage.png', Horde_Themes::img());
+            }
+        }
+
+        if ($scope == 'agora' &&
+            Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) {
+            $menu->add(Horde::url('editforum.php'), _("_New Forum"), 'newforum.png', $img_dir, null, null, Horde_Util::getFormData('agora') ? '__noselection' : null);
+        }
+
+        if (Agora_Messages::hasPermission(Horde_Perms::DELETE, 0, $scope)) {
+            $url = Horde::url('moderate.php')->add('scope', $scope);
+            $menu->add($url, _("_Moderate"), 'moderate.png', $img_dir);
+        }
+
+        if ($GLOBALS['registry']->isAdmin()) {
+            $menu->add(Horde::url('moderators.php'), _("_Moderators"), 'hot.png', $img_dir);
+        }
+
+        $url = Horde::url('search.php')->add('scope', $scope);
+        $menu->add($url, _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
+    }
+
+    /**
      * Code to run on init when viewing prefs for this application.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
@@ -117,14 +158,4 @@ class Agora_Application extends Horde_Registry_Application
         return '';
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Agora::getMenu();
-    }
-
 }
index 1ccd29b..d1e4f44 100644 (file)
@@ -83,7 +83,7 @@ if ($form->validate()) {
 
 /* Set up template data. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'abuse.php', 'post');
index 4d7b530..d5d6ca6 100644 (file)
@@ -73,7 +73,7 @@ $view->message_subject = $message['message_subject'];
 $view->message_author = $message['message_author'];
 $view->message_date = $messages->dateFormat($message['message_timestamp']);
 $view->message_body = Agora_Messages::formatBody($message['body']);
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index efce156..817489c 100644 (file)
@@ -112,7 +112,7 @@ if ($message_parent_id) {
 }
 
 $view->replying = $message_parent_id;
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index 23c3771..991c608 100644 (file)
@@ -180,7 +180,7 @@ default:
 }
 
 /* Set up the main template tags. */
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index b6ffb7b..c39eb31 100644 (file)
@@ -65,7 +65,7 @@ if ($form->validate()) {
 
 /* Set up template data. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'lock.php', 'post');
index 672e8e4..bff2949 100644 (file)
@@ -77,7 +77,7 @@ if ($form->validate()) {
 
 /* Template object. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'merge.php', 'post');
index a4d72c1..a90ed94 100644 (file)
@@ -63,7 +63,7 @@ if ($form->validate()) {
 
 /* Template object. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'move.php', 'post');
index 487c64a..7f78a63 100644 (file)
@@ -59,7 +59,7 @@ if ($form->validate()) {
 
 /* Template object. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'split.php', 'post');
index ac002a1..28f7778 100644 (file)
@@ -78,7 +78,7 @@ if (isset($api_call)) {
     return $view->render('moderate.html.php');
 } else {
     $title = _("Messages Awaiting Moderation");
-    $view->menu = Agora::getMenu('string');
+    $view->menu = Horde::menu();
     Horde::addScriptFile('stripe.js', 'horde', true);
     require AGORA_TEMPLATES . '/common-header.inc';
     echo $view->render('moderate.html.php');
index 3d431e7..903d69a 100644 (file)
@@ -75,7 +75,7 @@ if ($messages->countForums() > 50) {
 
 /* Set up template data. */
 $view = new Agora_View();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $form->renderActive(null, null, 'moderators.php', 'post');
index 9c4d5a5..02bafe3 100644 (file)
@@ -23,7 +23,7 @@ $sort_dir = Agora::getSortDir('threads');
 
 require AGORA_TEMPLATES . '/common-header.inc';
 
-echo '<div id="menu">' . Agora::getMenu('string') . '</div>';
+echo Horde::menu();
 $notification->notify(array('listeners' => 'status'));
 echo '<h1>' . sprintf(_("Last posts in forums owned by %s"), $owner) . '</h1>';
 
index 2a66372..18081b7 100644 (file)
@@ -60,7 +60,7 @@ if ($form->isSubmitted() || $thread_page != null) {
     $view->searchResults = $searchResults['results'];
 }
 
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index 0b85372..878be98 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <h1 class="header"><?php echo $this->_arrays['forum']['forum_name']; ?></h1>
index adf392b..22adfdf 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <h1 class="header">
index f46a0cb..b0a43fe 100644 (file)
@@ -1,3 +1,3 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 <?php echo $this->main; ?>
index 40f96fb..0b17aed 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <?php echo $this->formbox; ?>
index 945b5c7..06a2dfa 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <?php echo $this->formbox; ?>
index fa1ce73..88d08f8 100644 (file)
@@ -1,5 +1,5 @@
 <link rel="alternate" title="<?php echo _("Messages") ?>" href="<?php echo $this->rss ?>" type="application/rss+xml" />
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <div class="header">
@@ -19,4 +19,4 @@
 <?php echo $this->pager_link; ?>
 
 <br class="spacer" />
-<?php echo $this->form; ?>
\ No newline at end of file
+<?php echo $this->form; ?>
index 227b117..f671f48 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <div class="header">
index 05dadc2..d8e7eac 100644 (file)
@@ -1,5 +1,5 @@
 <?php if (!empty($this->menu)): ?>
-    <div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php endif; ?>
 <?php echo $this->notify; ?>
 
index 0994450..126d3ad 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <h1 class="header"><?php echo _('Moderators'); ?></h1>
index b77618e..cce4775 100644 (file)
@@ -1,4 +1,4 @@
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <?php if (!empty($this->searchResults)): ?>
index 9eea3d9..393da5c 100644 (file)
@@ -1,5 +1,5 @@
 <link rel="alternate" title="<?php echo _("Threads") ?>" href="<?php echo $this->rss ?>" type="application/rss+xml" />
-<div id="menu"><?php echo $this->menu; ?></div>
+<?php echo $this->menu; ?>
 <?php echo $this->notify; ?>
 
 <div class="header">
index 08e95a3..b80ca5a 100644 (file)
@@ -61,7 +61,7 @@ $view->threads = $threads_list;
 $view->forum_name = sprintf(_("Threads in %s"), $forum_array['forum_name']);
 $view->forum_description =  Agora_Messages::formatBody($forum_array['forum_description']);
 $view->actions = $threads->getThreadActions();
-$view->menu = Agora::getMenu('string');
+$view->menu = Horde::menu();
 
 Horde::startBuffer();
 $notification->notify(array('listeners' => 'status'));
index 9d67128..ae017ad 100644 (file)
@@ -19,7 +19,8 @@ $layout_html = $layout->toHtml();
 $title = _("Photo Galleries");
 Ansel_Search_Tag::clearSearch();
 require ANSEL_BASE . '/templates/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 echo '<div id="menuBottom"><a href="' . Horde::url('browse_edit.php') . '">' . _("Add Content") . '</a></div><div class="clear">&nbsp;</div>';
 echo $layout_html;
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 4fab2b5..4cfaa48 100644 (file)
@@ -24,7 +24,7 @@ if ($layout->updated()) {
 
 $title = _("My Photos :: Add Content");
 require ANSEL_TEMPLATES . '/common-header.inc';
-echo '<div id="menu">' . Ansel::getMenu()->render() . '</div>';
+echo Horde::menu();
 $notification->notify(array('listeners' => 'status'));
 require $registry->get('templates', 'horde') . '/portal/edit.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index ce35904..eb38eb2 100644 (file)
@@ -42,6 +42,7 @@ if ($form->isSubmitted()) {
 }
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 $form->renderActive(null, null, null, 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index b89a9e9..1660020 100644 (file)
@@ -63,6 +63,7 @@ if ($form->validate()) {
 }
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 $form->renderActive(null, null, null, 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 9d862d9..623a3ac 100644 (file)
@@ -74,6 +74,7 @@ Horde::addScriptFile('cropper.js');
 Horde::addScriptFile('stripe.js', 'horde');
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/faces/custom.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 9c6197f..4c4e534 100644 (file)
@@ -29,6 +29,7 @@ try {
 $title = _("Face") . ' :: ' . $face['face_name'];
 $facename = htmlspecialchars($face['face_name']);
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require_once ANSEL_TEMPLATES . '/faces/face.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index f3abe8a..044a3c4 100644 (file)
@@ -60,6 +60,7 @@ $title = sprintf(_("Searching for faces in %s"),Ansel::getUrlFor('view', array('
 Horde::addScriptFile('stripe.js', 'horde');
 Horde::addScriptFile('popup.js', 'horde');
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/faces/gallery.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 6d60fdd..c5ef49e 100644 (file)
@@ -66,8 +66,7 @@ if ($form->validate()) {
 }
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
-
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 $form->renderActive(null, null, null, 'post');
-
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 4bc49be..34df035 100644 (file)
@@ -34,6 +34,7 @@ $pager = new Horde_Core_Ui_Pager(
 );
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 include ANSEL_TEMPLATES . '/faces/faces.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 909ed2b..3fb3bdb 100644 (file)
@@ -60,8 +60,8 @@ if ($form->validate()) {
 
 $title = _("Upload face photo");
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
-
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 echo $tabs->render(Horde_Util::getGet('search_faces', 'image'));
 $form->renderActive(null, null, null, 'post');
 
index 7398c93..a6f5e78 100644 (file)
@@ -53,7 +53,8 @@ Horde::addScriptFile('cropper.js', 'ansel');
 Horde::addScriptFile('stripe.js', 'horde');
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/faces/define.inc';
 
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 3a59f0c..24a8a90 100644 (file)
@@ -52,6 +52,7 @@ $pager = new Horde_Core_Ui_Pager(
 );
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/faces/search.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 8176595..0e0387b 100644 (file)
@@ -42,8 +42,8 @@ $pager = new Horde_Core_Ui_Pager(
 
 $title = _("Search by name");
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
-
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 include ANSEL_TEMPLATES . '/faces/faces.inc';
 
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index c2b2528..f225a1f 100644 (file)
@@ -34,6 +34,7 @@ $pager = new Horde_Core_Ui_Pager(
 );
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 include ANSEL_TEMPLATES . '/faces/faces.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index ba4c4c1..d4788cd 100644 (file)
@@ -43,6 +43,7 @@ $pager = new Horde_Core_Ui_Pager(
 );
 $pager->preserve('owner', $owner);
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 include ANSEL_TEMPLATES . '/faces/faces.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 54e597b..6cc9a1c 100644 (file)
@@ -287,7 +287,8 @@ case 'empty':
         try {
             $gallery = $GLOBALS['injector']->getInstance('Ansel_Storage')->getScope()->getGallery($galleryId);
             require ANSEL_TEMPLATES . '/common-header.inc';
-            require ANSEL_TEMPLATES . '/menu.inc';
+            echo Horde::menu();
+            $notification->notify(array('listeners' => 'status'));
             require ANSEL_TEMPLATES . '/gallery/delete_confirmation.inc';
             require $registry->get('templates', 'horde') . '/common-footer.inc';
             exit;
@@ -359,6 +360,7 @@ $injector->getInstance('Horde_Ajax_Imple')->getImple(array('ansel', 'GallerySlug
     'slug' => $gallery_slug
 ));
 Horde::addScriptFile('popup.js', 'horde');
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/gallery/gallery.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 3657a3a..cbf2772 100644 (file)
@@ -58,6 +58,7 @@ case 'save':
 
 $title = _("Caption Editor");
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/captions/captions.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index e743d90..9d455ad 100644 (file)
@@ -66,7 +66,8 @@ Horde::addScriptFile('dragdrop.js', 'horde');
 
 $title = sprintf(_("%s :: Sort"), $gallery->get('name'));
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 ?>
 <h1 class="header"><?php echo htmlspecialchars($title, ENT_COMPAT, $GLOBALS['registry']->getCharset()) ?></h1>
 <div class="instructions">
index 673b492..30f7049 100644 (file)
@@ -83,7 +83,8 @@ if ($groupby !== 'none') {
 }
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/group/header.inc';
 foreach ($groups as $group) {
     require ANSEL_TEMPLATES . '/group/' . $groupby . '.inc';
index 178bbbc..b8bcfd7 100644 (file)
@@ -336,7 +336,8 @@ case 'resizeedit':
    }
 
     require ANSEL_TEMPLATES . '/common-header.inc';
-    require ANSEL_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
 
     if ($actionID == 'cropedit') {
         require ANSEL_TEMPLATES . '/image/crop_image.inc';
index 4a87ca2..ebb871c 100644 (file)
@@ -244,6 +244,7 @@ if ($gallery->countImages() && $browser->hasFeature('javascript')) {
 $breadcrumbs = Ansel::getBreadCrumbs($gallery);
 $title = _("Add Photo");
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require ANSEL_TEMPLATES . '/image/upload.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index cba141a..814f5be 100644 (file)
@@ -530,71 +530,6 @@ class Ansel
     }
 
     /**
-     * Build Ansel's list of menu items.
-     *
-     * @return Horde_Menu
-     */
-    static public function getMenu()
-    {
-        global $conf, $registry;
-
-        $menu = new Horde_Menu();
-
-        /* Browse/Search */
-        $menu->add(Horde::url('browse.php'), _("_Browse"),
-                   'browse.png', null, null, null,
-                   (($GLOBALS['prefs']->getValue('defaultview') == 'browse' &&
-                     basename($_SERVER['PHP_SELF']) == 'index.php') ||
-                    (basename($_SERVER['PHP_SELF']) == 'browse.php'))
-                   ? 'current'
-                   : '__noselection');
-
-        $menu->add(Ansel::getUrlFor('view', array('view' => 'List')), _("_Galleries"),
-                   'galleries.png', null, null, null,
-                   (($GLOBALS['prefs']->getValue('defaultview') == 'galleries' &&
-                     basename($_SERVER['PHP_SELF']) == 'index.php') ||
-                    ((basename($_SERVER['PHP_SELF']) == 'group.php') &&
-                     Horde_Util::getFormData('owner') !== $GLOBALS['registry']->getAuth())
-                    ? 'current'
-                    : '__noselection'));
-        if ($GLOBALS['registry']->getAuth()) {
-            $url = Ansel::getUrlFor('view', array('owner' => $GLOBALS['registry']->getAuth(),
-                                                  'groupby' => 'owner',
-                                                  'view' => 'List'));
-            $menu->add($url, _("_My Galleries"), 'mygalleries.png', null, null,
-                       null,
-                       (Horde_Util::getFormData('owner', false) == $GLOBALS['registry']->getAuth())
-                       ? 'current' :
-                       '__noselection');
-        }
-
-        /* Let authenticated users create new galleries. */
-        if ($GLOBALS['registry']->isAdmin() ||
-            (!$GLOBALS['injector']->getInstance('Horde_Perms')->exists('ansel') && $GLOBALS['registry']->getAuth()) ||
-            $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission('ansel', $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) {
-            $menu->add(Horde::url('gallery.php')->add('actionID', 'add'),
-                       _("_New Gallery"), 'add.png', null, null, null,
-                       (basename($_SERVER['PHP_SELF']) == 'gallery.php' &&
-                        Horde_Util::getFormData('actionID') == 'add')
-                       ? 'current'
-                       : '__noselection');
-        }
-
-        if ($conf['faces']['driver'] && $registry->isAuthenticated()) {
-            $menu->add(Horde::url('faces/search/all.php'), _("_Faces"), 'user.png', Horde_Themes::img(null, 'horde'));
-        }
-
-        /* Print. */
-        if ($conf['menu']['print'] && ($pl = Horde_Util::nonInputVar('print_link'))) {
-            $menu->add($pl, _("_Print"), 'print.png',
-                       Horde_Themes::img(null, 'horde'), '_blank',
-                       Horde::popupJs($pl, array('urlencode' => true)) . 'return false;');
-        }
-
-        return $menu;
-    }
-
-    /**
      * Generate a list of breadcrumbs showing where we are in the gallery
      * tree.
      *
index f3c0a39..c5baf8d 100644 (file)
@@ -99,6 +99,69 @@ class Ansel_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        global $conf, $registry;
+
+        /* Browse/Search */
+        $menu->add(Horde::url('browse.php'), _("_Browse"),
+                   'browse.png', null, null, null,
+                   (($GLOBALS['prefs']->getValue('defaultview') == 'browse' &&
+                    basename($_SERVER['PHP_SELF']) == 'index.php') ||
+                    (basename($_SERVER['PHP_SELF']) == 'browse.php'))
+                   ? 'current'
+                   : '__noselection');
+
+        $menu->add(Ansel::getUrlFor('view', array('view' => 'List')), _("_Galleries"),
+                   'galleries.png', null, null, null,
+                   (($GLOBALS['prefs']->getValue('defaultview') == 'galleries' &&
+                    basename($_SERVER['PHP_SELF']) == 'index.php') ||
+                    ((basename($_SERVER['PHP_SELF']) == 'group.php') &&
+                     Horde_Util::getFormData('owner') !== $GLOBALS['registry']->getAuth())
+                   ? 'current'
+                   : '__noselection'));
+
+        if ($GLOBALS['registry']->getAuth()) {
+            $url = Ansel::getUrlFor('view', array('owner' => $GLOBALS['registry']->getAuth(),
+                                    'groupby' => 'owner',
+                                    'view' => 'List'));
+            $menu->add($url, _("_My Galleries"), 'mygalleries.png', null, null,
+                       null,
+                       (Horde_Util::getFormData('owner', false) == $GLOBALS['registry']->getAuth())
+                       ? 'current' :
+                       '__noselection');
+        }
+
+        /* Let authenticated users create new galleries. */
+        if ($GLOBALS['registry']->isAdmin() ||
+            (!$GLOBALS['injector']->getInstance('Horde_Perms')->exists('ansel') && $GLOBALS['registry']->getAuth()) ||
+             $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission('ansel', $GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) {
+            $menu->add(Horde::url('gallery.php')->add('actionID', 'add'),
+                       _("_New Gallery"), 'add.png', null, null, null,
+                       (basename($_SERVER['PHP_SELF']) == 'gallery.php' &&
+                        Horde_Util::getFormData('actionID') == 'add')
+                       ? 'current'
+                       : '__noselection');
+        }
+
+        if ($conf['faces']['driver'] && $registry->isAuthenticated()) {
+            $menu->add(Horde::url('faces/search/all.php'), _("_Faces"), 'user.png', Horde_Themes::img(null, 'horde'));
+        }
+
+        /* Print. */
+        if ($conf['menu']['print'] &&
+            ($pl = Horde_Util::nonInputVar('print_link'))) {
+            $menu->add($pl, _("_Print"), 'print.png',
+                       Horde_Themes::img(null, 'horde'), '_blank',
+                       Horde::popupJs($pl, array('urlencode' => true)) . 'return false;');
+        }
+    }
+
+    /**
      * Populate dynamically-generated preference values.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
@@ -162,14 +225,4 @@ class Ansel_Application extends Horde_Registry_Application
         return false;
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Ansel::getMenu();
-    }
-
 }
index 875edde..09eab39 100644 (file)
@@ -39,7 +39,8 @@ if ($form->validate()) {
     }
 }
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 echo '<div class="header">' . Ansel::getBreadCrumbs() . '</div>';
 $form->renderActive(null, null, null, 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index f613cdf..2940d34 100644 (file)
@@ -83,6 +83,7 @@ if ($form->validate()) {
 }
 
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 $form->renderActive(null, null, null, 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ansel/templates/menu.inc b/ansel/templates/menu.inc
deleted file mode 100644 (file)
index 5a8f3ce..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div id="menu">
- <?php echo Ansel::getMenu()->render() ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
-
-<?php
-$GLOBALS['notification']->notify(array('listeners' => 'status'));
index 5c6b653..3f35d98 100644 (file)
@@ -38,7 +38,8 @@ try {
     $view = new $view($params);
 } catch (Horde_Exception $e) {
     require ANSEL_TEMPLATES . '/common-header.inc';
-    require ANSEL_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
     echo '<br /><em>' . htmlspecialchars($e->getMessage()) . '</em>';
     require $registry->get('templates', 'horde') . '/common-footer.inc';
     exit;
@@ -46,7 +47,8 @@ try {
 
 $title = $view->getTitle();
 require ANSEL_TEMPLATES . '/common-header.inc';
-require ANSEL_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 $view_html = $view->html();
 echo $view_html;
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 132fdcf..1b95cca 100644 (file)
@@ -97,12 +97,13 @@ class Beatnik_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Beatnik::getMenu();
     }
+
 }
index 4538474..1fbe936 100644 (file)
@@ -183,13 +183,13 @@ class Chora_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Chora::getMenu();
+        $menu->add(Chora::url('browsedir'), _("_Browse"), 'chora.png');
     }
 
     /* Sidebar method. */
index 76980aa..ded0390 100644 (file)
@@ -292,18 +292,6 @@ class Chora
     }
 
     /**
-     * Build Chora's list of menu items.
-     *
-     * @return string  The menu HTML code.
-     */
-    static public function getMenu()
-    {
-        $menu = new Horde_Menu();
-        $menu->add(self::url('browsedir'), _("_Browse"), 'chora.png');
-        return $menu;
-    }
-
-    /**
      * Generate the link used for various file-based views.
      *
      * @param string $where    The current file path.
index 4e77849..258866f 100644 (file)
@@ -2,7 +2,7 @@
  <div class="rightFloat">
   <?php echo Chora::repositories() ?>
  </div>
- <?php echo Chora::getMenu()->render() ?>
+ <?php echo Horde::menu(array('menu_ob' => true))->render() ?>
 </div>
 <?php require HORDE_BASE . '/services/sidebar.php'; ?>
 <?php $GLOBALS['notification']->notify(array('listeners' => 'status')) ?>
index 0904046..d9510ec 100644 (file)
@@ -4,11 +4,11 @@ class Crumb_Application extends Horde_Registry_Application
     public $version = 'H4 (0.1-git)';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Crumb::getMenu();
     }
index d969fce..8182bc5 100644 (file)
@@ -4,6 +4,16 @@ class Fima_Application extends Horde_Regsitry_Application
     public $version = '1.0.1';
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        return Fima::getMenu();
+    }
+
+    /**
      * Populate dynamically-generated preference values.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
@@ -61,14 +71,4 @@ class Fima_Application extends Horde_Regsitry_Application
         }
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Fima::getMenu();
-    }
-
 }
index d9bca58..afedc33 100644 (file)
@@ -12,11 +12,11 @@ class Folks_Application extends Horde_Registry_Application
     public $version = 'H4 (0.1-git)';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Folks::getMenu();
     }
index 6cadbac..e0fcc2d 100644 (file)
@@ -2040,4 +2040,52 @@ HTML;
             (!$browser->hasFeature('issafari') || $browser->getMajor() >= 2);
     }
 
+    /**
+     * Generates the menu output.
+     *
+     * @param array $opts  Additional options:
+     * <pre>
+     * 'app' - (string) The application to generate the menu for.
+     *         DEFAULT: current application
+     * 'mask' - (integer) The Horde_Menu mask to use.
+     *          DEFAULT: Horde_Menu::MASK_ALL
+     * 'menu_ob' - (boolean) If true, returns the menu object
+     *               DEFAULT: false (renders menu)
+     * </pre>
+     * @param string $app  The application to generate the menu for. Defaults
+     *                     to the current app.
+     *
+     * @return string|Horde_Menu  The menu output, or the menu object if
+     *                            'menu_ob' is true.
+     */
+    static public function menu(array $opts = array())
+    {
+        global $injector, $registry;
+
+        if (empty($opts['app'])) {
+            $opts['app'] = $registry->getApp();
+        }
+        if (!isset($opts['mask'])) {
+            $opts['mask'] = Horde_Menu::MASK_ALL;
+        }
+
+        $menu = new Horde_Menu(isset($opts['mask']) ? $opts['mask'] : Horde_Menu::MASK_ALL);
+
+        if (!in_array($registry->get('status', 'horde'), array('notoolbar', 'hidden', 'inactive'))) {
+            $menu->add(Horde::url('services/portal/', false, array('app' => 'horde')), _("_Home"), 'horde.png');
+        }
+
+        $registry->callAppMethod($opts['app'], 'menu', array(
+            'args' => array($menu)
+        ));
+
+        if (!empty($opts['menu_ob'])) {
+            return $menu;
+        }
+
+        self::startBuffer();
+        require $registry->get('templates', 'horde') . '/menu/menu.inc';
+        return self::endBuffer();
+    }
+
 }
index 01a5966..5c22625 100644 (file)
@@ -529,19 +529,12 @@ class Horde_Core_Prefs_Ui
 
         /* Get the menu output before we start to output the page.
          * Again, this will catch any javascript inserted into the page. */
-        if ($this->vars->ajaxui) {
-            $menu_out = '';
-        } else {
-            if ($registry->hasAppMethod($this->app, 'prefsMenu')) {
-                $menu = $registry->callAppMethod($this->app, 'prefsMenu', array('args' => array($this)));
-            }
-
-            /* Buffer this, as it may add javascript/stylesheets/meta tags to
-             * the document HEAD. */
-            Horde::startBuffer();
-            require $h_templates . '/menu/menu.inc';
-            $menu_out = Horde::endBuffer();
-        }
+        $menu_out = $this->vars->ajaxui
+            ? ''
+            : Horde::menu(array(
+                  'app' => $this->app,
+                  'mask' => Horde_Menu::MASK_HELP | Horde_Menu::MASK_LOGIN | Horde_Menu::MASK_PROBLEM
+              ));
 
         /* Get list of accessible applications. */
         $apps = array();
index 73162a9..197eb5e 100644 (file)
@@ -96,6 +96,15 @@ class Horde_Registry_Application
     {
     }
 
+    /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+    }
+
 
     // Functions called from Horde's API.
 
@@ -224,15 +233,6 @@ class Horde_Registry_Application
     // public function prefsCallback($ui) {}
 
     /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @param Horde_Core_Prefs_Ui $ui  The UI object.
-     *
-     * @return Horde_Menu  The Horde_Menu object to display.
-     */
-    // public function prefsMenu($ui) {}
-
-    /**
      * Generate code used to display a special preference.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
index b0fdf4d..405dc1b 100644 (file)
@@ -43,9 +43,9 @@ $template->set('entry', $entry, true);
 
 $title = _("Clipboard");
 Horde::addScriptFile('tables.js', 'horde');
-Gollem::prepareMenu();
+$menu = Gollem::menu();
 require GOLLEM_TEMPLATES . '/common-header.inc';
-Gollem::menu();
+echo $menu;
 Gollem::status();
 echo $template->fetch(GOLLEM_TEMPLATES . '/clipboard/clipboard.html');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index b1c6483..0032bdb 100644 (file)
@@ -159,13 +159,29 @@ class Gollem_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Gollem::getMenu();
+        $menu->add(Horde::url('manager.php')->add('dir', Gollem::getHome()), _("_My Home"), 'folder_home.png');
+
+        if (!empty($_SESSION['gollem'])) {
+            $backend_key = $_SESSION['gollem']['backend_key'];
+            if ($GLOBALS['registry']->isAdmin()) {
+                $menu->add(Horde::url('permissions.php')->add('backend', $backend_key), _("_Permissions"), 'perms.png');
+            }
+
+            if ($_SESSION['gollem']['backends'][$backend_key]['quota_val'] != -1) {
+                if ($GLOBALS['browser']->hasFeature('javascript')) {
+                    $quota_url = 'javascript:' . Horde::popupJs(Horde::url('quota.php'), array('params' => array('backend' => $backend_key), 'height' => 300, 'width' => 300, 'urlencode' => true));
+                } else {
+                    $quota_url = Horde::url('quota.php')->add('backend', $backend_key);
+                }
+                $menu->add($quota_url, _("Check Quota"), 'info_icon.png');
+            }
+        }
     }
 
     /* Sidebar method. */
index e054245..ea01bd7 100644 (file)
@@ -26,13 +26,6 @@ class Gollem
     const SORT_DESCEND = 1;
 
     /**
-     * prepareMenu() cache.
-     *
-     * @var array
-     */
-    static private $_menu = null;
-
-    /**
      * Changes the current directory of the Gollem session to the supplied
      * value.
      *
@@ -646,44 +639,12 @@ class Gollem
     }
 
     /**
-     * Build Gollem's list of menu items.
+     * Build Gollem's menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @return string  Menu.
      */
-    static public function getMenu()
-    {
-        $menu = new Horde_Menu();
-
-        $menu->add(Horde::url('manager.php')->add('dir', Gollem::getHome()), _("_My Home"), 'folder_home.png');
-
-        if (!empty($_SESSION['gollem'])) {
-            $backend_key = $_SESSION['gollem']['backend_key'];
-            if ($GLOBALS['registry']->isAdmin()) {
-                $menu->add(Horde::url('permissions.php')->add('backend', $backend_key), _("_Permissions"), 'perms.png');
-            }
-
-            if ($_SESSION['gollem']['backends'][$backend_key]['quota_val'] != -1) {
-                if ($GLOBALS['browser']->hasFeature('javascript')) {
-                    $quota_url = 'javascript:' . Horde::popupJs(Horde::url('quota.php'), array('params' => array('backend' => $backend_key), 'height' => 300, 'width' => 300, 'urlencode' => true));
-                } else {
-                    $quota_url = Horde::url('quota.php')->add('backend', $backend_key);
-                }
-                $menu->add($quota_url, _("Check Quota"), 'info_icon.png');
-            }
-        }
-
-        return $menu;
-    }
-
-    /**
-     * Build Gollem's list of menu items.
-     */
-    static public function prepareMenu()
+    static public function menu()
     {
-        if (isset(self::$_menu)) {
-            return;
-        }
-
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
 
         $t->set('forminput', Horde_Util::formInput());
@@ -694,24 +655,15 @@ class Gollem
             $link = Horde::link('#', _("Change Server"), '', '', 'serverSubmit(true);return false;');
             $t->set('slink', sprintf('<ul><li>%s%s<br />%s</a></li></ul>', $link, ($menu_view != 'text') ? Horde::img('gollem.png') : '', ($menu_view != 'icon') ? Horde::highlightAccessKey(_("_Change Server"), $t->get('accesskey')) : ''));
         }
-        $t->set('menu_string', self::getMenu()->render());
+        $t->set('menu_string', Horde::menu(array('menu_ob' => true))->render());
 
-        self::$_menu = $t->fetch(GOLLEM_TEMPLATES . '/menu/menu.html');
+        $menu = $t->fetch(GOLLEM_TEMPLATES . '/menu/menu.html');
 
         /* Need to buffer sidebar output here, because it may add things like
          * cookies which need to be sent before output begins. */
         Horde::startBuffer();
         require HORDE_BASE . '/services/sidebar.php';
-        self::$_menu .= Horde::endBuffer();
-    }
-
-    /**
-     * Outputs Gollem's menu to the current output stream.
-     */
-    static public function menu()
-    {
-        self::prepareMenu();
-        echo self::$_menu;
+        return $menu .= Horde::endBuffer();
     }
 
     /**
index 8fb6ba7..478768e 100644 (file)
@@ -584,9 +584,9 @@ Horde::addInlineJsVars(array(
     '-warn_recursive' => intval($prefs->getValue('recursive_deletes') == 'warn')
 ));
 
-Gollem::prepareMenu();
+$menu = Gollem::menu();
 require GOLLEM_TEMPLATES . '/common-header.inc';
-Gollem::menu();
+echo $menu;
 Gollem::status();
 echo $template->fetch(GOLLEM_TEMPLATES . '/manager/manager.html');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index ba629e4..0021031 100644 (file)
@@ -20,9 +20,9 @@ if (!Gollem::getBackends('all')) {
     $notification->push(_("You need at least one backend defined to set permissions."), 'horde.error');
 
     $title = _("Gollem Backend Permissions Administration");
-    Gollem::prepareMenu();
+    $menu = Gollem::menu();
     require GOLLEM_TEMPLATES . '/common-header.inc';
-    Gollem::menu();
+    echo $menu;
     Gollem::status();
     require $registry->get('templates', 'horde') . '/common-footer.inc';
     exit;
index 95c6e52..2de9abf 100644 (file)
@@ -35,7 +35,7 @@ if ($layout->updated()) {
 
 $title = _("My Portal Layout");
 require HORDE_TEMPLATES . '/common-header.inc';
-require HORDE_TEMPLATES . '/menu/menu.inc';
+echo Horde::menu();
 $notification->notify(array('listeners' => 'status'));
 require HORDE_TEMPLATES . '/portal/edit.inc';
 require HORDE_TEMPLATES . '/common-footer.inc';
index 78c15cf..e2eb0c7 100644 (file)
@@ -61,7 +61,7 @@ $linkTags = $view->getLinkTags();
 Horde::addScriptFile('prototype.js', 'horde');
 $title = _("My Portal");
 require HORDE_TEMPLATES . '/common-header.inc';
-require HORDE_TEMPLATES . '/menu/menu.inc';
+echo Horde::menu();
 echo '<div id="menuBottom">';
 echo htmlspecialchars($injector->getInstance('Horde_Prefs_Identity')->getIdentity()->getName());
 if (!$prefs->isLocked('portal_layout')) {
index 73f5cf3..2a822fd 100644 (file)
@@ -144,7 +144,7 @@ case 'cancel_problem_report':
 
 $title = _("Problem Description");
 require HORDE_TEMPLATES . '/common-header.inc';
-require HORDE_TEMPLATES . '/menu/menu.inc';
+echo Horde::menu();
 $notification->notify(array('listeners' => 'status'));
 require HORDE_TEMPLATES . '/problem/problem.inc';
 require HORDE_TEMPLATES . '/common-footer.inc';
index 25eb8a6..bd11d1d 100644 (file)
@@ -1,12 +1,3 @@
-<?php
-    if (!(isset($menu) && ($menu instanceof Horde_Menu))) {
-        $menu = new Horde_Menu();
-        if (($GLOBALS['registry']->getApp() == 'horde') &&
-            !in_array($GLOBALS['registry']->get('status', 'horde'), array('notoolbar', 'hidden', 'inactive'))) {
-            $menu->add(Horde::url('services/portal/'), _("_Home"), 'horde.png', Horde_Themes::img(null, 'horde'));
-        }
-    }
-?>
 <div id="menu">
  <div class="leftFloat"><?php echo $menu->render(); ?></div>
 </div>
index 93af2b8..11c3ab2 100644 (file)
@@ -1057,7 +1057,7 @@ if ($rtemode && !$redirect) {
 }
 
 if ($showmenu) {
-    IMP::prepareMenu();
+    $menu = IMP::menu();
 }
 Horde::addScriptFile('compose-base.js', 'imp');
 Horde::addScriptFile('compose.js', 'imp');
@@ -1065,7 +1065,7 @@ Horde::addScriptFile('md5.js', 'horde');
 require IMP_TEMPLATES . '/common-header.inc';
 Horde::addInlineScript($js_code);
 if ($showmenu) {
-    IMP::menu();
+    echo $menu;
 }
 echo $template_output;
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 0ba83ca..f60d45e 100644 (file)
@@ -273,9 +273,9 @@ case 'folders_empty_mailbox_confirm':
         }
 
         $title = _("Folder Actions - Confirmation");
-        IMP::prepareMenu();
+        $menu = IMP::menu();
         require IMP_TEMPLATES . '/common-header.inc';
-        IMP::menu();
+        echo $menu;
 
         $template = $injector->createInstance('Horde_Template');
         $template->setOption('gettext', true);
@@ -296,9 +296,9 @@ case 'mbox_size':
         Horde::addScriptFile('tables.js', 'horde');
 
         $title = _("Folder Sizes");
-        IMP::prepareMenu();
+        $menu = IMP::menu();
         require IMP_TEMPLATES . '/common-header.inc';
-        IMP::menu();
+        echo $menu;
         IMP::status();
         IMP::quota();
 
@@ -340,9 +340,9 @@ $folders_url_ob->add('folders_token', $folders_token);
 
 if ($_SESSION['imp']['file_upload'] && ($vars->actionID == 'import_mbox')) {
     $title = _("Folder Navigator");
-    IMP::prepareMenu();
+    $menu = IMP::menu();
     require IMP_TEMPLATES . '/common-header.inc';
-    IMP::menu();
+    echo $menu;
     IMP::status();
     IMP::quota();
 
@@ -438,10 +438,10 @@ Horde::addInlineJsVars(array(
 ));
 
 $title = _("Folder Navigator");
-IMP::prepareMenu();
+$menu = IMP::menu();
 Horde::metaRefresh($refresh_time, Horde::url('folders.php', true));
 require IMP_TEMPLATES . '/common-header.inc';
-IMP::menu();
+echo $menu;
 IMP::status();
 IMP::quota();
 
index 9324c22..aca8cdb 100644 (file)
@@ -206,6 +206,68 @@ class IMP_Application extends Horde_Registry_Application
             : $allowed;
     }
 
+    /* Menu methods. */
+
+    /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        global $conf, $prefs, $registry;
+
+        $menu_search_url = Horde::url('search.php');
+        $menu_mailbox_url = Horde::url('mailbox.php');
+
+        $spam_folder = IMP::folderPref($prefs->getValue('spam_folder'), true);
+
+        $menu->add(IMP::generateIMPUrl($menu_mailbox_url, 'INBOX'), _("_Inbox"), 'folders/inbox.png');
+
+        if ($_SESSION['imp']['protocol'] != 'pop') {
+            if ($prefs->getValue('use_trash') &&
+                $prefs->getValue('empty_trash_menu')) {
+                $mailbox = null;
+                if ($prefs->getValue('use_vtrash')) {
+                    $mailbox = $GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($prefs->getValue('vtrash_id'));
+                } else {
+                    $trash_folder = IMP::folderPref($prefs->getValue('trash_folder'), true);
+                    if (!is_null($trash_folder)) {
+                        $mailbox = $trash_folder;
+                    }
+                }
+
+                if (!empty($mailbox) &&
+                    !$GLOBALS['injector']->getInstance('IMP_Imap')->getOb()->isReadOnly($mailbox)) {
+                    $menu_trash_url = IMP::generateIMPUrl($menu_mailbox_url, $mailbox)->add(array('actionID' => 'empty_mailbox', 'mailbox_token' => Horde::getRequestToken('imp.mailbox')));
+                    $menu->add($menu_trash_url, _("Empty _Trash"), 'empty_trash.png', null, null, 'return window.confirm(' . Horde_Serialize::serialize(_("Are you sure you wish to empty your trash folder?"), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()) . ')', '__noselection');
+                }
+            }
+
+            if (!empty($spam_folder) &&
+                $prefs->getValue('empty_spam_menu')) {
+                $menu_spam_url = IMP::generateIMPUrl($menu_mailbox_url, $spam_folder)->add(array('actionID' => 'empty_mailbox', 'mailbox_token' => Horde::getRequestToken('imp.mailbox')));
+                $menu->add($menu_spam_url, _("Empty _Spam"), 'empty_spam.png', null, null, 'return window.confirm(' . Horde_Serialize::serialize(_("Are you sure you wish to empty your trash folder?"), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()) . ')', '__noselection');
+            }
+        }
+
+        if (IMP::canCompose()) {
+            $menu->add(IMP::composeLink(array('mailbox' => IMP::$mailbox)), _("_New Message"), 'compose.png');
+        }
+
+        if ($conf['user']['allow_folders']) {
+            $menu->add(Horde::url('folders.php')->unique(), _("_Folders"), 'folders/folder.png');
+        }
+
+        if ($_SESSION['imp']['protocol'] != 'pop') {
+            $menu->add($menu_search_url, _("_Search"), 'search.png');
+        }
+
+        if ($prefs->getValue('filter_menuitem')) {
+            $menu->add(Horde::url('filterprefs.php'), _("Fi_lters"), 'filters.png');
+        }
+    }
+
     /* Horde_Core_Auth_Application methods. */
 
     /**
@@ -446,18 +508,6 @@ class IMP_Application extends Horde_Registry_Application
         $GLOBALS['injector']->getInstance('IMP_Prefs_Ui')->prefsCallback($ui);
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @param Horde_Core_Prefs_Ui $ui  The UI object.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu($ui)
-    {
-        return $GLOBALS['injector']->getInstance('IMP_Prefs_Ui')->prefsMenu($ui);
-    }
-
     /* Sidebar method. */
 
     /**
index 19d474b..03c3f82 100644 (file)
@@ -83,13 +83,6 @@ class IMP
     static private $_delhide = null;
 
     /**
-     * prepareMenu() cache.
-     *
-     * @var string
-     */
-    static private $_menu = null;
-
-    /**
      * Returns the current view mode for IMP.
      *
      * @return string  Either 'dimp', 'imp', or 'mimp'.
@@ -423,78 +416,12 @@ class IMP
     }
 
     /**
-     * Build IMP's list of menu items.
+     * Build IMP's menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @return string  The menu output.
      */
-    static public function getMenu()
-    {
-        global $conf, $prefs, $registry;
-
-        $menu_search_url = Horde::url('search.php');
-        $menu_mailbox_url = Horde::url('mailbox.php');
-
-        $spam_folder = self::folderPref($prefs->getValue('spam_folder'), true);
-
-        $menu = new Horde_Menu();
-
-        $menu->add(self::generateIMPUrl($menu_mailbox_url, 'INBOX'), _("_Inbox"), 'folders/inbox.png');
-
-        if ($_SESSION['imp']['protocol'] != 'pop') {
-            if ($prefs->getValue('use_trash') &&
-                $prefs->getValue('empty_trash_menu')) {
-                $mailbox = null;
-                if ($prefs->getValue('use_vtrash')) {
-                    $mailbox = $GLOBALS['injector']->getInstance('IMP_Search')->createSearchID($prefs->getValue('vtrash_id'));
-                } else {
-                    $trash_folder = self::folderPref($prefs->getValue('trash_folder'), true);
-                    if (!is_null($trash_folder)) {
-                        $mailbox = $trash_folder;
-                    }
-                }
-
-                if (!empty($mailbox) &&
-                    !$GLOBALS['injector']->getInstance('IMP_Imap')->getOb()->isReadOnly($mailbox)) {
-                    $menu_trash_url = self::generateIMPUrl($menu_mailbox_url, $mailbox)->add(array('actionID' => 'empty_mailbox', 'mailbox_token' => Horde::getRequestToken('imp.mailbox')));
-                    $menu->add($menu_trash_url, _("Empty _Trash"), 'empty_trash.png', null, null, 'return window.confirm(' . Horde_Serialize::serialize(_("Are you sure you wish to empty your trash folder?"), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()) . ')', '__noselection');
-                }
-            }
-
-            if (!empty($spam_folder) &&
-                $prefs->getValue('empty_spam_menu')) {
-                $menu_spam_url = self::generateIMPUrl($menu_mailbox_url, $spam_folder)->add(array('actionID' => 'empty_mailbox', 'mailbox_token' => Horde::getRequestToken('imp.mailbox')));
-                $menu->add($menu_spam_url, _("Empty _Spam"), 'empty_spam.png', null, null, 'return window.confirm(' . Horde_Serialize::serialize(_("Are you sure you wish to empty your trash folder?"), Horde_Serialize::JSON, $GLOBALS['registry']->getCharset()) . ')', '__noselection');
-            }
-        }
-
-        if (self::canCompose()) {
-            $menu->add(self::composeLink(array('mailbox' => self::$mailbox)), _("_New Message"), 'compose.png');
-        }
-
-        if ($conf['user']['allow_folders']) {
-            $menu->add(Horde::url('folders.php')->unique(), _("_Folders"), 'folders/folder.png');
-        }
-
-        if ($_SESSION['imp']['protocol'] != 'pop') {
-            $menu->add($menu_search_url, _("_Search"), 'search.png');
-        }
-
-        if ($prefs->getValue('filter_menuitem')) {
-            $menu->add(Horde::url('filterprefs.php'), _("Fi_lters"), 'filters.png');
-        }
-
-        return $menu;
-    }
-
-    /**
-     * Build IMP's list of menu items.
-     */
-    static public function prepareMenu()
+    static public function menu()
     {
-        if (isset(self::$_menu)) {
-            return;
-        }
-
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
         $t->set('forminput', Horde_Util::formInput());
         $t->set('use_folders', ($_SESSION['imp']['protocol'] != 'pop') && $GLOBALS['conf']['user']['allow_folders'], true);
@@ -509,24 +436,15 @@ class IMP
             $t->set('flist', self::flistSelect(array('selected' => self::$mailbox, 'inc_vfolder' => true)));
             $t->set('flink', sprintf('%s%s<br />%s</a>', Horde::link('#'), ($menu_view != 'text') ? Horde::img('folders/open.png', _("Open Folder"), ($menu_view == 'icon') ? array('title' => _("Open Folder")) : array()) : '', ($menu_view != 'icon') ? Horde::highlightAccessKey(_("Open Fo_lder"), $ak) : ''));
         }
-        $t->set('menu_string', self::getMenu()->render());
+        $t->set('menu_string', Horde::menu(array('app' => 'imp', 'menu_ob' => true))->render());
 
-        self::$_menu = $t->fetch(IMP_TEMPLATES . '/imp/menu/menu.html');
+        $menu = $t->fetch(IMP_TEMPLATES . '/imp/menu/menu.html');
 
         /* Need to buffer sidebar output here, because it may add things like
          * cookies which need to be sent before output begins. */
         Horde::startBuffer();
         require HORDE_BASE . '/services/sidebar.php';
-        self::$_menu .= Horde::endBuffer();
-    }
-
-    /**
-     * Outputs IMP's menu to the current output stream.
-     */
-    static public function menu()
-    {
-        self::prepareMenu();
-        echo self::$_menu;
+        return $menu . Horde::endBuffer();
     }
 
     /**
index d9428fe..90f4d26 100644 (file)
@@ -566,18 +566,6 @@ class IMP_Prefs_Ui
         }
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @param Horde_Core_Prefs_Ui $ui  The UI object.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu($ui)
-    {
-        return IMP::getMenu();
-    }
-
     /* Accounts management handling. */
 
     /**
index 07041f7..e725100 100644 (file)
@@ -364,10 +364,10 @@ if (!empty($newmsgs)) {
     }
 }
 
-IMP::prepareMenu();
+$menu = IMP::menu();
 Horde::metaRefresh($prefs->getValue('refresh_time'), $refresh_url);
 require IMP_TEMPLATES . '/common-header.inc';
-IMP::menu();
+echo $menu;
 IMP::status();
 IMP::quota();
 
index 80990f8..54998c2 100644 (file)
@@ -674,7 +674,7 @@ if (!empty($conf['tasklist']['use_notepad']) || !empty($conf['tasklist']['use_ta
     Horde::addScriptFile('redbox.js', 'horde');
 }
 
-IMP::prepareMenu();
+$menu = IMP::menu();
 Horde::noDnsPrefetch();
 
 require IMP_TEMPLATES . '/common-header.inc';
@@ -682,7 +682,7 @@ require IMP_TEMPLATES . '/common-header.inc';
 if (!empty($conf['maillog']['use_maillog'])) {
     IMP_Maillog::displayLog($envelope['message-id']);
 }
-IMP::menu();
+echo $menu;
 IMP::status();
 IMP::quota();
 
index 8d92de8..343c375 100644 (file)
@@ -70,9 +70,9 @@ $t->set('s_fields', $s_fields);
 $t->set('f_fields', $f_fields);
 
 $title = _("Search");
-IMP::prepareMenu();
+$menu = IMP::menu();
 require IMP_TEMPLATES . '/common-header.inc';
-IMP::menu();
+echo $menu;
 IMP::status();
 
 if ($browser->hasFeature('javascript')) {
index 9a59f04..3cb7038 100644 (file)
@@ -187,11 +187,11 @@ Horde::addScriptFile('search.js', 'imp');
 if ($dimp_view) {
     $t->set('return_mailbox_val', sprintf(_("Return to %s"), htmlspecialchars($search_mailbox)));
 } else {
-    IMP::prepareMenu();
+    $menu = IMP::menu();
 }
 require IMP_TEMPLATES . '/common-header.inc';
 if (!$dimp_view) {
-    IMP::menu();
+    echo $menu;
 }
 IMP::status();
 
index ce37dea..1f5ccf5 100644 (file)
@@ -168,9 +168,9 @@ $template->set('tree', $tree);
 $title = ($mode == 'thread') ? _("Thread View") : _("Multiple Message View");
 Horde::addScriptFile('stripe.js', 'horde');
 Horde::noDnsPrefetch();
-IMP::prepareMenu();
+$menu = IMP::menu();
 require IMP_TEMPLATES . '/common-header.inc';
-IMP::menu();
+echo $menu;
 IMP::status();
 echo $template->fetch(IMP_TEMPLATES . '/imp/thread/thread.html');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 3de9f46..d83835e 100644 (file)
@@ -97,11 +97,11 @@ $folder_list = Ingo::flistSelect($blacklist_folder, 'filters', 'actionvalue',
 $filters = $ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
 $bl_rule = $filters->findRule(Ingo_Storage::ACTION_BLACKLIST);
 
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 Ingo::addNewFolderJs();
 $title = _("Blacklist Edit");
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 require INGO_TEMPLATES . '/blacklist/blacklist.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index ac9dd7f..b1b9c01 100644 (file)
@@ -135,10 +135,10 @@ $filter_list = $filters->getFilterList();
 
 Horde::addScriptFile('stripe.js', 'horde');
 Horde::addScriptFile('filters.js', 'ingo');
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 $title = _("Filter Rules");
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 require INGO_TEMPLATES . '/filters/header.inc';
 
index 7ad4ab6..ed98814 100644 (file)
@@ -91,9 +91,9 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'forward');
 $form->setTitle($form_title);
 
 $title = _("Forwards Edit");
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 $form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'forward.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index ba91e0b..89aa379 100644 (file)
@@ -119,6 +119,44 @@ class Ingo_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        try {
+            $menu->add(Horde::url('filters.php'), _("Filter _Rules"), 'ingo.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+            $menu->add(Horde::url($GLOBALS['injector']->getInstance('Horde_Registry')->link('mail/showWhitelist')), _("_Whitelist"), 'whitelist.png');
+            $menu->add(Horde::url($GLOBALS['injector']->getInstance('Horde_Registry')->link('mail/showBlacklist')), _("_Blacklist"), 'blacklist.png');
+        } catch (Horde_Exception $e) {
+            Horde::logMessage($e->getMessage(), 'ERR');
+        }
+
+        if (in_array(Ingo_Storage::ACTION_VACATION, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::url('vacation.php'), _("_Vacation"), 'vacation.png');
+        }
+
+        if (in_array(Ingo_Storage::ACTION_FORWARD, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::url('forward.php'), _("_Forward"), 'forward.png');
+        }
+
+        if (in_array(Ingo_Storage::ACTION_SPAM, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::url('spam.php'), _("S_pam"), 'spam.png');
+        }
+
+        if ($_SESSION['ingo']['script_generate'] &&
+            (!$GLOBALS['prefs']->isLocked('auto_update') ||
+             !$GLOBALS['prefs']->getValue('auto_update'))) {
+            $menu->add(Horde::url('script.php'), _("_Script"), 'script.png');
+        }
+
+        if (!empty($GLOBALS['ingo_shares']) && empty($GLOBALS['conf']['share']['no_sharing'])) {
+            $menu->add('#', _("_Permissions"), 'perms.png', Horde_Themes::img(null, 'horde'), '', Horde::popupJs(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/shares/edit.php', true), array('params' => array('app' => 'ingo', 'share' => $_SESSION['ingo']['backend']['id'] . ':' . $GLOBALS['registry']->getAuth()), 'urlencode' => true)) . 'return false;');
+        }
+    }
+
+    /**
      * Returns the specified permission for the given app permission.
      *
      * @param string $permission  The permission to check.
@@ -143,16 +181,6 @@ class Ingo_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Ingo::getMenu();
-    }
-
-    /**
      * Removes user data.
      *
      * @param string $user  Name of user to remove data for.
index f4045db..6c6e223 100644 (file)
@@ -23,13 +23,6 @@ class Ingo
     const USER_HEADER = '++USER_HEADER++';
 
     /**
-     * prepareMenu() cache.
-     *
-     * @var Horde_Template
-     */
-    static private $_menuTemplate = null;
-
-    /**
      * hasSharePermission() cache.
      *
      * @var integer
@@ -415,52 +408,12 @@ class Ingo
     }
 
     /**
-     * Build Ingo's list of menu items.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    static public function getMenu()
-    {
-        $menu = new Horde_Menu();
-        try {
-            $menu->add(Horde::url('filters.php'), _("Filter _Rules"), 'ingo.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
-            $menu->add(Horde::url($GLOBALS['injector']->getInstance('Horde_Registry')->link('mail/showWhitelist')), _("_Whitelist"), 'whitelist.png');
-            $menu->add(Horde::url($GLOBALS['injector']->getInstance('Horde_Registry')->link('mail/showBlacklist')), _("_Blacklist"), 'blacklist.png');
-        } catch (Horde_Exception $e) {
-            Horde::logMessage($e->getMessage(), 'ERR');
-        }
-        if (in_array(Ingo_Storage::ACTION_VACATION, $_SESSION['ingo']['script_categories'])) {
-            $menu->add(Horde::url('vacation.php'), _("_Vacation"), 'vacation.png');
-        }
-        if (in_array(Ingo_Storage::ACTION_FORWARD, $_SESSION['ingo']['script_categories'])) {
-            $menu->add(Horde::url('forward.php'), _("_Forward"), 'forward.png');
-        }
-        if (in_array(Ingo_Storage::ACTION_SPAM, $_SESSION['ingo']['script_categories'])) {
-            $menu->add(Horde::url('spam.php'), _("S_pam"), 'spam.png');
-        }
-        if ($_SESSION['ingo']['script_generate'] &&
-            (!$GLOBALS['prefs']->isLocked('auto_update') ||
-             !$GLOBALS['prefs']->getValue('auto_update'))) {
-            $menu->add(Horde::url('script.php'), _("_Script"), 'script.png');
-        }
-        if (!empty($GLOBALS['ingo_shares']) && empty($GLOBALS['conf']['share']['no_sharing'])) {
-            $menu->add('#', _("_Permissions"), 'perms.png', Horde_Themes::img(null, 'horde'), '', Horde::popupJs(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/shares/edit.php', true), array('params' => array('app' => 'ingo', 'share' => $_SESSION['ingo']['backend']['id'] . ':' . $GLOBALS['registry']->getAuth()), 'urlencode' => true)) . 'return false;');
-        }
-
-        return $menu;
-    }
-
-    /**
-     * Prepares and caches Ingo's list of menu items.
+     * Create ingo's menu.
      *
      * @return string  The menu text.
      */
-    static public function prepareMenu()
+    static public function menu()
     {
-        if (isset(self::$_menuTemplate)) {
-            return;
-        }
-
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
         $t->set('forminput', Horde_Util::formInput());
 
@@ -477,19 +430,15 @@ class Ingo
             $t->set('options', $options);
         }
 
-        $t->set('menu_string', self::getMenu()->render());
+        $t->set('menu_string', Horde::menu(array('menu_ob' => true))->render());
 
-        self::$_menuTemplate = $t;
-    }
+        $menu = $t->fetch(INGO_TEMPLATES . '/menu/menu.html');
 
-    /**
-     * Outputs IMP's menu to the current output stream.
-     */
-    static public function menu()
-    {
-        self::prepareMenu();
-        echo self::$_menuTemplate->fetch(INGO_TEMPLATES . '/menu/menu.html');
+        /* Need to buffer sidebar output here, because it may add things like
+         * cookies which need to be sent before output begins. */
+        Horde::startBuffer();
         require HORDE_BASE . '/services/sidebar.php';
+        return $menu . Horde::endBuffer();
     }
 
     /**
index 674a07e..b2347fe 100644 (file)
@@ -192,10 +192,10 @@ if (!$rule) {
 
 $title = $rule['name'];
 Horde::addScriptFile('rule.js', 'ingo');
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 Ingo::addNewFolderJs();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 require INGO_TEMPLATES . '/rule/header.inc';
 
index 7dcf157..14b1d15 100644 (file)
@@ -49,9 +49,9 @@ case 'show_active':
 }
 
 $title = _("Filter Script Display");
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 require INGO_TEMPLATES . '/script/header.inc';
 if (!empty($script)) {
index d29677f..14cdfdd 100644 (file)
@@ -147,10 +147,10 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'spam');
 $form->setTitle($form_title);
 
 $title = _("Spam Filtering");
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 Ingo::addNewFolderJs();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 $form->renderActive($renderer, $vars, 'spam.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index e731000..71a8f74 100644 (file)
@@ -140,9 +140,9 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'vacation');
 $form->setTitle($form_title);
 
 $title = _("Vacation Edit");
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 $form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'vacation.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 4ee6f83..0e4e5ae 100644 (file)
@@ -52,9 +52,9 @@ $filters = $ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
 $wl_rule = $filters->findRule(Ingo_Storage::ACTION_WHITELIST);
 
 $title = _("Whitelist Edit");
-Ingo::prepareMenu();
+$menu = Ingo::menu();
 require INGO_TEMPLATES . '/common-header.inc';
-Ingo::menu();
+echo $menu;
 Ingo::status();
 require INGO_TEMPLATES . '/whitelist/whitelist.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index deb7417..d0e31dd 100644 (file)
@@ -14,7 +14,7 @@ Horde_Registry::appInit('jeta');
 $applet = Jeta_Applet::factory($prefs->getValue('sshdriver'));
 
 $template = $injector->createInstance('Horde_Template');
-$template->set('menu', Jeta::getMenu()->render());
+$template->set('menu', Horde::menu());
 $template->set('notification', $notification->notify(array('listeners' => 'status')));
 $template->set('applet', $applet->generateAppletCode());
 
index 0044598..8ea1585 100644 (file)
@@ -42,13 +42,18 @@ class Jeta_Application extends Horde_Registry_Application
     public $version = 'H4 (2.0-git)';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Jeta::getMenu();
+        $menu->addArray(array(
+            'class' => ((basename($_SERVER['PHP_SELF']) == 'index.php') ? 'current' : ''),
+            'icon' => 'jeta.png',
+            'text' => _("_Shell"),
+            'url' => Horde::url('index.php')
+        ));
     }
 
 }
diff --git a/jeta/lib/Jeta.php b/jeta/lib/Jeta.php
deleted file mode 100644 (file)
index b85bdf8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Copyright 2006-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file LICENSE for license information (GPL).  If you
- * did not receive this file, see http://www.horde.org/licenses/gpl.php.
- *
- * @author  Michael Slusarz <slusarz@horde.org>
- * @package Jeta
- */
-class Jeta
-{
-    /**
-     * Build Jeta's list of menu items.
-     */
-    public function getMenu()
-    {
-        $menu = new Horde_Menu();
-
-        /* Jeta Home. */
-        $menu->addArray(array('url' => Horde::url('index.php'), 'text' => _("_Shell"), 'icon' => 'jeta.png', 'class' => (basename($_SERVER['PHP_SELF']) == 'index.php') ? 'current' : ''));
-
-        return $menu;
-    }
-
-}
index 80d38a7..4daa618 100644 (file)
@@ -1,7 +1,4 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notification />
 
 <p>
index c8b7ee9..38d9c36 100644 (file)
@@ -138,7 +138,7 @@ $main = Horde::endBuffer();
 
 $template = new Horde_Template();
 $template->set('main', $main);
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index b5d6c1b..670cc2d 100644 (file)
@@ -77,8 +77,7 @@ $template = new Horde_Template();
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'delete.php', 'post');
 $template->set('main', Horde::endBuffer());
-
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index b1731d7..b7c198d 100644 (file)
@@ -82,7 +82,7 @@ $main = Horde::endBuffer();
 
 $template = new Horde_Template();
 $template->set('main', $main);
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 7e573ce..cb252f3 100644 (file)
@@ -83,7 +83,7 @@ $template->set('listheaders', array(array('attrs' => ' class="sortdown"', 'label
                                     array('attrs' => '', 'label' => _("Type")),
                                     array('attrs' => '', 'label' => _("Last Update"))));
 $template->set('channels', $channels, true);
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 $template->set('search_img', Horde::img('search.png'));
 
 // Buffer the notifications and send to the template
index f904b3f..06cecdf 100644 (file)
@@ -58,7 +58,7 @@ $template->set('channel_name', $channel['channel_name']);
 $template->set('format', $criteria['channel_format']);
 $template->set('options', $options);
 $template->set('stories', $news->renderChannel($criteria['channel_id'], $criteria['channel_format']));
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 254f048..17c9b67 100644 (file)
@@ -54,7 +54,7 @@ $template->set('channel_name', $channel['channel_name']);
 $template->set('format', $criteria['channel_format']);
 $template->set('options', $options);
 $template->set('stories', $news->renderChannel($criteria['channel_id'], $criteria['channel_format']));
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index aebfb80..d810f3a 100644 (file)
@@ -84,13 +84,42 @@ class Jonah_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Jonah::getMenu();
+        /* If authorized, show admin links. */
+        if (Jonah::checkPermissions('jonah:news', Horde_Perms::EDIT)) {
+            $menu->addArray(array(
+                'icon' => 'jonah.png',
+                'text' => _("_Feeds"),
+                'url' => Horde::url('channels/index.php')
+            ));
+        }
+        foreach ($GLOBALS['conf']['news']['enable'] as $channel_type) {
+            if (Jonah::checkPermissions($channel_type, Horde_Perms::EDIT)) {
+                $menu->addArray(array(
+                    'icon' => 'new.png',
+                    'text' => _("New Feed"),
+                    'url' => Horde::url('channels/edit.php')
+                ));
+                break;
+            }
+        }
+        if ($channel_id = Horde_Util::getFormData('channel_id')) {
+            $news = $GLOBALS['injector']->getInstance('Jonah_Driver');
+            $channel = $news->getChannel($channel_id);
+            if ($channel['channel_type'] == Jonah::INTERNAL_CHANNEL &&
+                Jonah::checkPermissions(Jonah::typeToPermName($channel['channel_type']), Horde_Perms::EDIT, $channel_id)) {
+                $menu->addArray(array(
+                    'icon' => 'new.png',
+                    'text' => _("_New Story"),
+                    'url' => Horde::url('stories/edit.php')->add('channel_id', (int)$channel_id)
+                ));
+            }
+        }
     }
 
     /* Sidebar method. */
index ce83133..20506e7 100644 (file)
@@ -231,39 +231,4 @@ class Jonah
         return array_shift(array_keys($types));
     }
 
-    /**
-     * Build Jonah's list of menu items.
-     */
-    static public function getMenu($returnType = 'object')
-    {
-        global $registry, $conf;
-
-        $menu = new Horde_Menu();
-
-        /* If authorized, show admin links. */
-        if (Jonah::checkPermissions('jonah:news', Horde_Perms::EDIT)) {
-            $menu->addArray(array('url' => Horde::url('channels/index.php'), 'text' => _("_Feeds"), 'icon' => 'jonah.png'));
-        }
-        foreach ($conf['news']['enable'] as $channel_type) {
-            if (Jonah::checkPermissions($channel_type, Horde_Perms::EDIT)) {
-                $menu->addArray(array('url' => Horde::url('channels/edit.php'), 'text' => _("New Feed"), 'icon' => 'new.png'));
-                break;
-            }
-        }
-        if ($channel_id = Horde_Util::getFormData('channel_id')) {
-            $news = $GLOBALS['injector']->getInstance('Jonah_Driver');
-            $channel = $news->getChannel($channel_id);
-            if ($channel['channel_type'] == Jonah::INTERNAL_CHANNEL &&
-                Jonah::checkPermissions(Jonah::typeToPermName($channel['channel_type']), Horde_Perms::EDIT, $channel_id)) {
-                $menu->addArray(array('url' => Horde::url('stories/edit.php')->add('channel_id', (int)$channel_id), 'text' => _("_New Story"), 'icon' => 'new.png'));
-            }
-        }
-
-        if ($returnType == 'object') {
-            return $menu;
-        } else {
-            return $menu->render();
-        }
-    }
-
 }
index d21c391..69a9ad3 100644 (file)
@@ -82,8 +82,7 @@ $template = new Horde_Template();
 Horde::startBuffer();
 $form->renderActive(null, $vars, 'delete.php', 'post');
 $template->set('main', Horde::endBuffer());
-
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 0e26e61..6ca6f97 100644 (file)
@@ -68,8 +68,7 @@ $template = new Horde_Template();
 Horde::startBuffer();
 $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 $template->set('main', Horde::endBuffer());
-
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 8f03967..39bbbfe 100644 (file)
@@ -117,7 +117,7 @@ $template->set('listheaders', array(_("Story"), _("Date")));
 $template->set('stories', $stories, true);
 $template->set('read', $channel['channel_type'] == Jonah::INTERNAL_CHANNEL || $channel['channel_type'] == Jonah::COMPOSITE_CHANNEL, true);
 $template->set('comments', $conf['comments']['allow'] && $registry->hasMethod('forums/numMessages') && $channel['channel_type'] == Jonah::INTERNAL_CHANNEL, true);
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index f9911b7..72c3a3e 100644 (file)
@@ -110,7 +110,7 @@ $template->set('listheaders', array(_("Story"), _("Date")));
 $template->set('stories', $stories, true);
 $template->set('read', true, true);
 $template->set('comments', $conf['comments']['allow'] && $registry->hasMethod('forums/numMessages'), true);
-$template->set('menu', Jonah::getMenu('string'));
+$template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 962e53c..c1cc8f9 100644 (file)
@@ -102,7 +102,7 @@ if ($conf['comments']['allow']) {
     $view_template->set('comments', false, true);
 }
 
-$view_template->set('menu', Jonah::getMenu('string'));
+$view_template->set('menu', Horde::menu());
 
 // Buffer the notifications and send to the template
 Horde::startBuffer();
index 601f92d..faa15a7 100644 (file)
@@ -1,7 +1,4 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notify />
 
 <div class="header">
index 56be0b8..fea0c1d 100644 (file)
@@ -1,7 +1,4 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notify />
 
 <table width="100%" cellspacing="0">
index 46a0d7c..6342c18 100644 (file)
@@ -1,7 +1,4 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notify />
 
 <tag:main />
index 5948bac..7e8fc47 100644 (file)
@@ -1,7 +1,4 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notify />
 
 <div class="header">
index 12cae02..97801f6 100644 (file)
@@ -1,8 +1,6 @@
-<div id="menu">
- <tag:menu />
-</div>
-
+<tag:menu />
 <tag:notify />
+
 <if:cloud>
  <div style="float:right;"><tag:cloud /></div>
  <div style="margin-right:170px;">
index 7c85d4f..d994c42 100644 (file)
@@ -4,11 +4,11 @@ class Kastalia_Application extends Horde_Registry_Application
     public $version = '1.0.1';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Kastalia::getMenu();
     }
index f07214d..cf70e17 100644 (file)
@@ -38,7 +38,9 @@ if ($form->validate($vars)) {
 }
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'create.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 0b4e6c4..2885282 100644 (file)
@@ -54,7 +54,9 @@ if ($form->validate(new Horde_Variables($_POST))) {
 }
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'delete.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index faba3b7..0919308 100644 (file)
@@ -65,7 +65,9 @@ $injector->getInstance('Horde_Ajax_Imple')->getImple(array('kronolith', 'TagAuto
     'triggerId' => 'tags'
 ));
 
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 63f8916..4c29f5e 100644 (file)
@@ -74,7 +74,9 @@ $delete_img = Horde::img('delete.png', _("Delete"));
 
 Horde::addScriptFile('tables.js', 'horde');
 $title = _("Manage Calendars");
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 require KRONOLITH_TEMPLATES . '/calendar_list.php';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index c8a7655..aaefbb1 100644 (file)
@@ -72,7 +72,9 @@ if (isset($calendar['color'])) {
 $vars->set('user', $username);
 $vars->set('password', $password);
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'remote_edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 140eca4..ec9bc3f 100644 (file)
@@ -40,7 +40,9 @@ if ($form->validate($vars)) {
 }
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'remote_subscribe.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index d041eba..40dbc1c 100644 (file)
@@ -54,7 +54,9 @@ if ($form->validate(new Horde_Variables($_POST))) {
 
 $vars->set('url', $calendar['url']);
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'remote_unsubscribe.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 186749d..17a083f 100644 (file)
@@ -354,8 +354,10 @@ if ($GLOBALS['registry']->getAuth()) {
 $export_calendars = Kronolith::listCalendars(Horde_Perms::READ, true);
 
 $title = _("Import/Export Calendar");
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 foreach ($templates[$next_step] as $template) {
index f4afbc9..507c651 100644 (file)
@@ -20,8 +20,10 @@ $view = Kronolith::getView('Day');
 $title = $view->getTime($prefs->getValue('date_format'));
 
 Horde::addScriptFile('tooltips.js', 'horde');
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::tabs();
index 516279d..7eabe65 100644 (file)
@@ -48,8 +48,10 @@ case 'EditEvent':
 }
 
 $title = $view->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::eventTabs($viewName, $view->event);
index 4ef7dbf..539542f 100644 (file)
@@ -89,6 +89,53 @@ class Kronolith_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        global $browser, $conf, $injector, $notification, $prefs, $registry;
+
+        /* Check here for guest calendars so that we don't get multiple
+         * messages after redirects, etc. */
+        if (!$registry->getAuth() && !count(Kronolith::listCalendars())) {
+            $notification->push(_("No calendars are available to guests."));
+        }
+
+        $menu->add(Horde::url($prefs->getValue('defaultview') . '.php'), _("_Today"), 'today.png', null, null, null, '__noselection');
+        if (Kronolith::getDefaultCalendar(Horde_Perms::EDIT) &&
+            (!empty($conf['hooks']['permsdenied']) ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_events') === true ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_events') > self::countEvents())) {
+            $menu->add(Horde::url('new.php')->add('url', Horde::selfUrl(true, false, true)), _("_New Event"), 'new.png');
+        }
+
+        if ($browser->hasFeature('dom')) {
+            Horde_Core_Ui_JsCalendar::init(array(
+                'click_month' => true,
+                'click_week' => true,
+                'click_year' => true,
+                'full_weekdays' => true
+            ));
+            Horde::addScriptFile('goto.js', 'kronolith');
+            Horde::addInlineJsVars(array(
+                'KronolithGoto.dayurl' => strval(Horde::url('day.php')),
+                'KronolithGoto.monthurl' => strval(Horde::url('month.php')),
+                'KronolithGoto.weekurl' => strval(Horde::url('week.php')),
+                'KronolithGoto.yearurl' => strval(Horde::url('year.php'))
+            ));
+            $menu->add(new Horde_Url(''), _("_Goto"), 'goto.png', null, '', null, 'kgotomenu');
+        }
+        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
+
+        /* Import/Export. */
+        if ($conf['menu']['import_export']) {
+            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
+        }
+    }
+
+    /**
      * Returns the specified permission for the given app permission.
      *
      * @param string $permission  The permission to check.
@@ -289,18 +336,6 @@ class Kronolith_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @param Horde_Core_Prefs_Ui $ui  The UI object.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu($ui)
-    {
-        return Kronolith::getMenu();
-    }
-
-    /**
      * Create code for default alarm management.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
index ce2919e..e1348ce 100644 (file)
@@ -2925,55 +2925,6 @@ class Kronolith
     }
 
     /**
-     * Builds Kronolith's list of menu items.
-     */
-    public static function getMenu()
-    {
-        global $conf, $registry, $browser, $prefs;
-
-        /* Check here for guest calendars so that we don't get multiple
-         * messages after redirects, etc. */
-        if (!$GLOBALS['registry']->getAuth() &&
-            !count(Kronolith::listCalendars())) {
-            $GLOBALS['notification']->push(_("No calendars are available to guests."));
-        }
-
-        $menu = new Horde_Menu();
-
-        $menu->add(Horde::url($prefs->getValue('defaultview') . '.php'), _("_Today"), 'today.png', null, null, null, '__noselection');
-        if (self::getDefaultCalendar(Horde_Perms::EDIT) &&
-            (!empty($conf['hooks']['permsdenied']) ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_events') === true ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_events') > self::countEvents())) {
-            $menu->add(Horde::url('new.php')->add('url', Horde::selfUrl(true, false, true)), _("_New Event"), 'new.png');
-        }
-        if ($browser->hasFeature('dom')) {
-            Horde_Core_Ui_JsCalendar::init(array(
-                'click_month' => true,
-                'click_week' => true,
-                'click_year' => true,
-                'full_weekdays' => true
-            ));
-            Horde::addScriptFile('goto.js', 'kronolith');
-            Horde::addInlineJsVars(array(
-                'KronolithGoto.dayurl' => strval(Horde::url('day.php')),
-                'KronolithGoto.monthurl' => strval(Horde::url('month.php')),
-                'KronolithGoto.weekurl' => strval(Horde::url('week.php')),
-                'KronolithGoto.yearurl' => strval(Horde::url('year.php'))
-            ));
-            $menu->add(new Horde_Url(''), _("_Goto"), 'goto.png', null, '', null, 'kgotomenu');
-        }
-        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
-
-        /* Import/Export. */
-        if ($conf['menu']['import_export']) {
-            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
-        }
-
-        return $menu;
-    }
-
-    /**
      * Returns whether to display the ajax view.
      *
      * return boolean  True if the ajax view should be displayed.
index b5cf477..a8b43a1 100644 (file)
@@ -19,8 +19,10 @@ $view = Kronolith::getView('Month');
 $title = $view->date->strftime('%B %Y');
 
 Horde::addScriptFile('tooltips.js', 'horde');
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::tabs();
index 3470d4c..e1ebd52 100644 (file)
@@ -74,10 +74,13 @@ Horde_Core_Ui_JsCalendar::init(array(
 ));
 
 $title = _("Add a new event");
+$menu = Horde::menu();
 Horde::addScriptFile('edit.js', 'kronolith');
 Horde::addScriptFile('popup.js', 'horde');
+
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 require KRONOLITH_TEMPLATES . '/edit/edit.inc';
 
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index b716f18..c340bc3 100644 (file)
@@ -38,8 +38,10 @@ if ($form->validate($vars)) {
     exit;
 }
 
+$menu = Horde::menu();
 $title = $form->getTitle();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'create.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 7a0627a..b62e84d 100644 (file)
@@ -48,8 +48,10 @@ if ($form->validate(new Horde_Variables($_POST))) {
     Horde::url('resources/', true)->redirect();
 }
 
+$menu = Horde::menu();
 $title = $form->getTitle();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'delete.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 0dc90f4..2fb0163 100644 (file)
@@ -58,8 +58,10 @@ $vars->set('description', $resource->get('description'));
 $vars->set('category', Kronolith::getDriver('Resource')->getGroupMemberships($resource->getId()));
 $vars->set('responsetype', $resource->get('response_type'));
 
+$menu = Horde::menu();
 $title = $form->getTitle();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index a235966..2029f9b 100644 (file)
@@ -34,7 +34,9 @@ if ($form->validate($vars)) {
 }
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'create.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 2f252be..e3f4b5f 100644 (file)
@@ -45,7 +45,9 @@ if ($form->validate(new Horde_Variables($_POST))) {
 }
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'delete.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 7ad2caa..ec7f81d 100644 (file)
@@ -53,7 +53,9 @@ $vars->set('description', $group->get('description'));
 $vars->set('members', $group->get('members'));
 
 $title = $form->getTitle();
+$menu = Horde::menu();
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 echo $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index cc435c9..5c7af29 100644 (file)
@@ -7,15 +7,18 @@
 require_once dirname(__FILE__) . '/../../lib/Application.php';
 Horde_Registry::appInit('kronolith');
 
-$title = _("Resource Groups");
-
-require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
-
 // Exit if this isn't an authenticated user.
 if (!$GLOBALS['registry']->getAuth()) {
     Horde::url($prefs->getValue('defaultview') . '.php')->redirect();
 }
+
+$menu = Horde::menu();
+$title = _("Resource Groups");
+
+require KRONOLITH_TEMPLATES . '/common-header.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
+
 $edit_url_base = Horde::url('resources/groups/edit.php');
 $edit_img = Horde::img('edit.png', _("Edit"));
 
index 3e7177d..bf26e57 100644 (file)
@@ -11,15 +11,18 @@ if (Kronolith::showAjaxView()) {
     Horde::url('', true)->redirect();
 }
 
-$title = _("Edit resources");
-
-require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
-
 // Exit if this isn't an authenticated user.
 if (!$GLOBALS['registry']->getAuth()) {
     Horde::url($prefs->getValue('defaultview') . '.php')->redirect();
 }
+
+$menu = Horde::menu();
+$title = _("Edit resources");
+
+require KRONOLITH_TEMPLATES . '/common-header.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
+
 $edit_url_base = Horde::url('resources/edit.php');
 $edit_img = Horde::img('edit.png', _("Edit"));
 $resources = Kronolith::getDriver('Resource')->listResources(Horde_Perms::READ, array('type' => Kronolith_Resource::TYPE_SINGLE));
index 4c7b237..e41db8c 100644 (file)
@@ -110,10 +110,12 @@ if ($search_mode == 'basic') {
     Horde::addScriptFile('edit.js', 'kronolith');
 }
 
+$menu = Horde::menu();
 $title = _("Search");
 Horde::addScriptFile('tooltips.js', 'horde');
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 
diff --git a/kronolith/templates/menu.inc b/kronolith/templates/menu.inc
deleted file mode 100644 (file)
index dad37e6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="menu">
- <?php echo Kronolith::getMenu()->render() ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
-<?php $GLOBALS['notification']->notify(array('listeners' => 'status')) ?>
index 2eb5077..b8e1553 100644 (file)
@@ -18,10 +18,12 @@ if (Kronolith::showAjaxView()) {
 
 $view = Kronolith::getView('Week');
 $title = sprintf(_("Week %d"), $view->week);
+$menu = Horde::menu();
 
 Horde::addScriptFile('tooltips.js', 'horde');
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::tabs();
index 196e202..eb7b700 100644 (file)
@@ -19,10 +19,12 @@ if (Kronolith::showAjaxView()) {
 
 $view = Kronolith::getView('WorkWeek');
 $title = sprintf(_("Week %d"), $view->week);
+$menu = Horde::menu();
 
 Horde::addScriptFile('tooltips.js', 'horde');
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::tabs();
index a1fc159..ae595e9 100644 (file)
@@ -19,9 +19,11 @@ if (Kronolith::showAjaxView()) {
 
 $view = Kronolith::getView('Year');
 $title = $view->year;
+$menu = Horde::menu();
 
 require KRONOLITH_TEMPLATES . '/common-header.inc';
-require KRONOLITH_TEMPLATES . '/menu.inc';
+echo $menu;
+$notification->notify(array('listeners' => 'status'));
 
 echo '<div id="page">';
 Kronolith::tabs();
index ca165f3..c1fd7ec 100644 (file)
@@ -51,12 +51,13 @@ class Luxor_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu()
     {
         return Luxor::getMenu();
     }
+
 }
index 000b3d9..93239ec 100644 (file)
@@ -200,7 +200,7 @@ if (is_array($next_step)) {
 
 $title = _("Import/Export Notes");
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 
 if (isset($templates[$next_step])) {
index 69d666a..37f400c 100644 (file)
@@ -68,6 +68,38 @@ class Mnemo_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        global $conf, $injector, $print_link;
+
+        $menu->add(Horde::url('list.php'), _("_List Notes"), 'mnemo.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+
+        if (Mnemo::getDefaultNotepad(Horde_Perms::EDIT) &&
+            (!empty($conf['hooks']['permsdenied']) ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_notes') === true ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_notes') > Mnemo::countMemos())) {
+            $menu->add(Horde::url(Horde_Util::addParameter('memo.php', 'actionID', 'add_memo')), _("_New Note"), 'add.png', null, null, null, Horde_Util::getFormData('memo') ? '__noselection' : null);
+        }
+
+        /* Search. */
+        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
+
+        /* Import/Export */
+        if ($conf['menu']['import_export']) {
+            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
+        }
+
+        /* Print */
+        if ($conf['menu']['print'] && isset($print_link)) {
+            $menu->add(Horde::url($print_link), _("_Print"), 'print.png', Horde_Themes::img(null, 'horde'), '_blank', 'popup(this.href); return false;');
+        }
+    }
+
+    /**
      * Returns the specified permission for the given app permission.
      *
      * @param string $permission  The permission to check.
@@ -107,16 +139,6 @@ class Mnemo_Application extends Horde_Registry_Application
         }
     }
 
-    /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Mnemo::getMenu();
-    }
-
     /* Sidebar method. */
 
     /**
index 686f4db..cee292c 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * $Horde: mnemo/lib/Mnemo.php,v 1.86 2009/12/03 00:01:11 jan Exp $
- *
  * Copyright 2001-2009 The Horde Project (http://www.horde.org/)
  *
  * See the enclosed file LICENSE for license information (ASL). If you
@@ -14,7 +12,6 @@
  * Mnemo Base Class.
  *
  * @author  Jon Parise <jon@horde.org>
- * @since   Mnemo 1.0
  * @package Mnemo
  */
 class Mnemo {
@@ -466,37 +463,4 @@ class Mnemo {
         $GLOBALS['prefs']->setValue('display_notepads', serialize($GLOBALS['display_notepads']));
     }
 
-    /**
-     * Builds Mnemo's list of menu items.
-     */
-    public static function getMenu()
-    {
-        global $conf, $registry, $print_link;
-
-        $menu = new Horde_Menu();
-        $menu->add(Horde::url('list.php'), _("_List Notes"), 'mnemo.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
-
-        if (Mnemo::getDefaultNotepad(Horde_Perms::EDIT) &&
-            (!empty($conf['hooks']['permsdenied']) ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_notes') === true ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_notes') > Mnemo::countMemos())) {
-            $menu->add(Horde::url(Horde_Util::addParameter('memo.php', 'actionID', 'add_memo')), _("_New Note"), 'add.png', null, null, null, Horde_Util::getFormData('memo') ? '__noselection' : null);
-        }
-
-        /* Search. */
-        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
-
-        /* Import/Export */
-        if ($conf['menu']['import_export']) {
-            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
-        }
-
-        /* Print */
-        if ($conf['menu']['print'] && isset($print_link)) {
-            $menu->add(Horde::url($print_link), _("_Print"), 'print.png', Horde_Themes::img(null, 'horde'), '_blank', 'popup(this.href); return false;');
-        }
-
-            return $menu;
-    }
-
 }
index 084b55c..d42ecbd 100644 (file)
@@ -57,7 +57,7 @@ case 'search_memos':
 Horde::addScriptFile('tables.js', 'horde', true);
 Horde::addScriptFile('quickfinder.js', 'horde', true);
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 require MNEMO_TEMPLATES . '/list/header.inc';
 
index 410f453..3a5b47d 100644 (file)
@@ -253,7 +253,7 @@ default:
 
 $notepads = Mnemo::listNotepads(false, Horde_Perms::EDIT);
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 require MNEMO_TEMPLATES . '/memo/memo.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 346048d..c8efe54 100644 (file)
@@ -37,7 +37,7 @@ if ($form->validate($vars)) {
 
 $title = $form->getTitle();
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 echo $form->renderActive($form->getRenderer(), $vars, 'create.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 73909a5..350f03a 100644 (file)
@@ -52,7 +52,7 @@ if ($form->validate(new Horde_Variables($_POST))) {
 
 $title = $form->getTitle();
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 echo $form->renderActive($form->getRenderer(), $vars, 'delete.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 39ee2e9..936fa70 100644 (file)
@@ -55,7 +55,7 @@ $vars->set('name', $notepad->get('name'));
 $vars->set('description', $notepad->get('desc'));
 $title = $form->getTitle();
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 echo $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index d53ac5e..3bdd905 100644 (file)
@@ -38,7 +38,7 @@ Horde::addScriptFile('popup.js', 'horde', true);
 Horde::addScriptFile('tables.js', 'horde', true);
 $title = _("Manage Notepads");
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 require MNEMO_TEMPLATES . '/notepad_list.php';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 7e0721e..cf581e5 100644 (file)
@@ -42,7 +42,7 @@ Horde::addScriptFile('tables.js', 'horde', true);
 Horde::addScriptFile('quickfinder.js', 'horde', true);
 
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 require MNEMO_TEMPLATES . '/list/header.inc';
 
 if (count($memos)) {
index 0308b14..51e13ee 100644 (file)
@@ -20,7 +20,7 @@ Horde::addInlineScript(array(
 
 $title = _("Search");
 require MNEMO_TEMPLATES . '/common-header.inc';
-require MNEMO_TEMPLATES . '/menu.inc';
+echo Horde::menu();
 $notification->notify();
 require MNEMO_TEMPLATES . '/search/search.inc';
 require MNEMO_TEMPLATES . '/panel.inc';
diff --git a/mnemo/templates/menu.inc b/mnemo/templates/menu.inc
deleted file mode 100644 (file)
index 30e96f3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<div id="menu">
- <?php echo Mnemo::getMenu()->render() ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
index 343168d..9c9dcd9 100644 (file)
@@ -127,7 +127,7 @@ if ($print_view) {
                                                        'print' => 'true'));
     $print_link = Horde::url($print_link);
     Horde::addScriptFile('stripe.js', 'horde', true);
-    require MNEMO_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
 }
 
 require MNEMO_TEMPLATES . '/view/memo.inc';
index 08469d7..e75eb60 100644 (file)
@@ -247,7 +247,8 @@ foreach ($tasklists as $id => $tasklist) {
 
 $title = _("Import/Export Tasks");
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 
 foreach ($templates[$next_step] as $template) {
     require $template;
index c8bf53d..5e23d4c 100644 (file)
@@ -72,6 +72,36 @@ class Nag_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        global $conf, $injector;
+
+        $menu->add(Horde::url('list.php'), _("_List Tasks"), 'nag.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+
+        if (Nag::getDefaultTasklist(Horde_Perms::EDIT) &&
+            (!empty($conf['hooks']['permsdenied']) ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_tasks') === true ||
+             $injector->getInstance('Horde_Perms')->hasAppPermission('max_tasks') > Nag::countTasks())) {
+            $menu->add(Horde::url('task.php')->add('actionID', 'add_task'), _("_New Task"), 'add.png', null, null, null, Horde_Util::getFormData('task') ? '__noselection' : null);
+            if ($GLOBALS['browser']->hasFeature('dom')) {
+                $menu->add(new Horde_Url(''), _("_Quick Add"), 'add.png', null, null, 'Nag.quickAddPanel.show(); $(\'quickText\').focus(); return false;', Horde_Util::getFormData('task') ? 'quickAdd __noselection' : 'quickAdd');
+            }
+        }
+
+        /* Search. */
+        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
+
+        /* Import/Export. */
+        if ($conf['menu']['import_export']) {
+            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
+        }
+    }
+
+    /**
      * Returns the specified permission for the given app permission.
      *
      * @param string $permission  The permission to check.
@@ -216,16 +246,6 @@ class Nag_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu()
-    {
-        return Nag::getMenu();
-    }
-
-    /**
      * Removes user data.
      *
      * @param string $user  Name of user to remove data for.
index 2821cb3..654aa52 100644 (file)
@@ -755,35 +755,8 @@ class Nag
     }
 
     /**
-     * Build Nag's list of menu items.
+     * Trigger notifications.
      */
-    public static function getMenu()
-    {
-        global $conf, $registry;
-
-        $menu = new Horde_Menu();
-        $menu->add(Horde::url('list.php'), _("_List Tasks"), 'nag.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
-        if (Nag::getDefaultTasklist(Horde_Perms::EDIT) &&
-            (!empty($conf['hooks']['permsdenied']) ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_tasks') === true ||
-             $GLOBALS['injector']->getInstance('Horde_Perms')->hasAppPermission('max_tasks') > Nag::countTasks())) {
-            $menu->add(Horde::url('task.php')->add('actionID', 'add_task'), _("_New Task"), 'add.png', null, null, null, Horde_Util::getFormData('task') ? '__noselection' : null);
-            if ($GLOBALS['browser']->hasFeature('dom')) {
-                $menu->add(new Horde_Url(''), _("_Quick Add"), 'add.png', null, null, 'Nag.quickAddPanel.show(); $(\'quickText\').focus(); return false;', Horde_Util::getFormData('task') ? 'quickAdd __noselection' : 'quickAdd');
-            }
-        }
-
-        /* Search. */
-        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'));
-
-        /* Import/Export. */
-        if ($conf['menu']['import_export']) {
-            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
-        }
-
-        return $menu;
-    }
-
     public static function status()
     {
         global $notification;
index ed09bc7..389097e 100644 (file)
@@ -90,7 +90,8 @@ Horde::addScriptFile('effects.js', 'horde');
 Horde::addScriptFile('quickfinder.js', 'horde');
 
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 echo '<div id="page">';
 
 if (!$prefs->isLocked('show_completed')) {
index 14cc374..c584e54 100644 (file)
@@ -15,7 +15,8 @@ Horde::addInlineScript(array(
 
 $title = _("Search");
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 require NAG_TEMPLATES . '/search/search.inc';
 require NAG_TEMPLATES . '/panel.inc';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 250dd9c..d5d9d3c 100644 (file)
@@ -243,6 +243,7 @@ default:
 
 $title = $form->getTitle();
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 $form->renderActive();
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index e4df3f9..7ba2588 100644 (file)
@@ -34,6 +34,7 @@ if ($form->validate($vars)) {
 
 $title = $form->getTitle();
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 echo $form->renderActive($form->getRenderer(), $vars, 'create.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 3776b06..884c80c 100644 (file)
@@ -50,6 +50,7 @@ if ($form->validate(new Horde_Variables($_POST))) {
 
 $title = $form->getTitle();
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 echo $form->renderActive($form->getRenderer(), $vars, 'delete.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index f7aac3c..de0bbd4 100644 (file)
@@ -52,6 +52,7 @@ $vars->set('description', $tasklist->get('desc'));
 $vars->set('system', is_null($tasklist->get('owner')));
 $title = $form->getTitle();
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 echo $form->renderActive($form->getRenderer(), $vars, 'edit.php', 'post');
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index a0a081d..461f905 100644 (file)
@@ -63,6 +63,7 @@ $delete_img = Horde::img('delete.png', _("Delete"));
 Horde::addScriptFile('tables.js', 'horde');
 $title = _("Manage Task Lists");
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 require NAG_TEMPLATES . '/tasklist_list.php';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index eb3cef4..99585cb 100644 (file)
@@ -49,7 +49,8 @@ Horde::addScriptFile('effects.js', 'horde');
 Horde::addScriptFile('quickfinder.js', 'horde');
 
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 echo '<div id="page">';
 require NAG_TEMPLATES . '/list.html.php';
 require NAG_TEMPLATES . '/panel.inc';
diff --git a/nag/templates/menu.inc b/nag/templates/menu.inc
deleted file mode 100644 (file)
index 1b865dc..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="menu">
- <?php echo Nag::getMenu()->render() ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
-<?php Nag::status();
index 57fb907..22d0cab 100644 (file)
@@ -114,7 +114,8 @@ if ($share->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::DELETE))
 }
 
 require NAG_TEMPLATES . '/common-header.inc';
-require NAG_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+Nag::status();
 
 /* Set up alarm units and value. */
 $task_alarm = $task->alarm;
index 2fe2efb..b0e6e43 100644 (file)
@@ -40,11 +40,11 @@ class News_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return News::getMenu();
     }
index 7cc9ba9..3aefb05 100644 (file)
@@ -51,11 +51,11 @@ class Pastie_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Pastie::getMenu();
     }
index 57e6537..6c12de7 100644 (file)
@@ -42,13 +42,13 @@ class Skeleton_Application extends Horde_Registry_Application
     public $version = 'H4 (0.1-git)';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Skeleton::getMenu();
+        $menu->add(Horde::url('list.php'), _("List"), 'user.png');
     }
 
 }
diff --git a/skeleton/lib/Skeleton.php b/skeleton/lib/Skeleton.php
deleted file mode 100644 (file)
index fe888dc..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Skeleton Base Class.
- *
- * Copyright 2007-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (GPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
- *
- * @author  Your Name <you@example.com>
- * @package Skeleton
- */
-class Skeleton
-{
-    /**
-     * Build Skeleton's list of menu items.
-     */
-    static public function getMenu()
-    {
-        $menu = new Horde_Menu(Horde_Menu::MASK_ALL);
-        $menu->add(Horde::url('list.php'), _("List"), 'user.png', Horde_Themes::img(null, 'horde'));
-
-        return $menu;
-    }
-
-}
index 518cea4..6d68c1c 100644 (file)
@@ -16,5 +16,6 @@ Horde_Registry::appInit('skeleton');
 $title = _("List");
 
 require SKELETON_TEMPLATES . '/common-header.inc';
-require SKELETON_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/skeleton/templates/menu.inc b/skeleton/templates/menu.inc
deleted file mode 100644 (file)
index 57d26de..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="menu">
- <?php echo Skeleton::getMenu()->render() ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
-<?php $GLOBALS['notification']->notify(array('listeners' => 'status')) ?>
index 132db9f..d21b77b 100644 (file)
@@ -4,11 +4,11 @@ class Skoli_Application extends Horde_Registry_Application
     public $version = 'H4 (0.1-git)';
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
         return Skoli::getMenu();
     }
index 9b93621..787c32b 100644 (file)
@@ -118,7 +118,8 @@ if (Horde_Util::getFormData('popup')) {
 $title = _("New Bookmark");
 require TREAN_TEMPLATES . '/common-header.inc';
 if (!Horde_Util::getFormData('popup') && !Horde_Util::getFormData('iframe')) {
-    require TREAN_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
 }
 require TREAN_TEMPLATES . '/add.html.php';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 7503536..95b5e01 100644 (file)
@@ -59,7 +59,8 @@ Horde::addScriptFile('redbox.js', 'horde', true);
 $title = _("Browse");
 require TREAN_TEMPLATES . '/common-header.inc';
 if (!Horde_Util::getFormData('popup')) {
-    require TREAN_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
 }
 require TREAN_TEMPLATES . '/browse.php';
 require $registry->get('templates', 'horde') . '/common-footer.inc';
index 9258d3d..c2d27a7 100644 (file)
@@ -183,7 +183,8 @@ EOH;
 
 $title = _("Import Bookmarks");
 require TREAN_TEMPLATES . '/common-header.inc';
-require TREAN_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 if (!$folders_exceeded || !$bookmarks_exceeded) {
     require TREAN_TEMPLATES . '/data/import.inc';
 }
index 7ee6453..2e0ad5c 100644 (file)
@@ -239,7 +239,8 @@ case 'del_folder':
     $folder = &$trean_shares->getFolder($folderId);
     $title = _("Confirm Deletion");
     require TREAN_TEMPLATES . '/common-header.inc';
-    require TREAN_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
     require TREAN_TEMPLATES . '/edit/delete_folder_confirmation.inc';
     require $registry->get('templates', 'horde') . '/common-footer.inc';
     exit;
@@ -279,7 +280,8 @@ if (!count($bookmarks) && !count($folder)) {
 $title = _("Edit Bookmark");
 require TREAN_TEMPLATES . '/common-header.inc';
 if (!Horde_Util::getFormData('popup')) {
-    require TREAN_TEMPLATES . '/menu.inc';
+    echo Horde::menu();
+    $notification->notify(array('listeners' => 'status'));
 }
 require TREAN_TEMPLATES . '/edit/header.inc';
 
index e21f7e2..7b7f691 100644 (file)
@@ -80,13 +80,20 @@ class Trean_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
+     * Add additional items to the menu.
      *
-     * @return Horde_Menu  A Horde_Menu object.
+     * @param Horde_Menu $menu  The menu object.
      */
-    public function prefsMenu()
+    public function menu($menu)
     {
-        return Trean::getMenu();
+        $menu->add(Horde::url('browse.php'), _("_Browse"), 'trean.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png');
+        $menu->add(Horde::url('reports.php'), _("_Reports"), 'reports.png');
+
+        /* Import/Export. */
+        if ($GLOBALS['conf']['menu']['import_export']) {
+            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png');
+        }
     }
 
     /* Sidebar method. */
index fc85c9b..4d7b021 100644 (file)
@@ -151,30 +151,6 @@ class Trean
     }
 
     /**
-     * Builds Trean's list of menu items.
-     */
-    function getMenu($returnType = 'object')
-    {
-        global $conf, $registry;
-
-        $menu = new Horde_Menu();
-        $menu->add(Horde::url('browse.php'), _("_Browse"), 'trean.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
-        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png');
-        $menu->add(Horde::url('reports.php'), _("_Reports"), 'reports.png');
-
-        /* Import/Export. */
-        if ($conf['menu']['import_export']) {
-            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png');
-        }
-
-        if ($returnType == 'object') {
-            return $menu;
-        } else {
-            return $menu->render();
-        }
-    }
-
-    /**
      * Returns the "Reason Phrase" associated with the given HTTP status code
      * according to rfc2616.
      */
index 6091f04..73d8339 100644 (file)
@@ -19,7 +19,8 @@ $drilldown = Horde_Util::getFormData('drilldown');
 $title = _("Reports");
 Horde::addScriptFile('stripe.js', 'horde', true);
 require TREAN_TEMPLATES . '/common-header.inc';
-require TREAN_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 
 if ($drilldown) {
     $bookmarks = $trean_shares->searchBookmarks(array(array('http_status', 'LIKE', substr($drilldown, 0, 1), array('begin' => true))));
index ef02aba..71fed2b 100644 (file)
@@ -18,7 +18,8 @@ require_once TREAN_BASE . '/lib/Views/BookmarkList.php';
 
 $title = _("Search");
 require TREAN_TEMPLATES . '/common-header.inc';
-require TREAN_TEMPLATES . '/menu.inc';
+echo Horde::menu();
+$notification->notify(array('listeners' => 'status'));
 
 // Set up the search form.
 $vars = Horde_Variables::getDefaultVariables();
diff --git a/trean/templates/menu.inc b/trean/templates/menu.inc
deleted file mode 100644 (file)
index e4334fb..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div id="menu">
- <?php echo Trean::getMenu('string') ?>
-</div>
-<?php require HORDE_BASE . '/services/sidebar.php'; ?>
-<?php $GLOBALS['notification']->notify(array('listeners' => 'status')) ?>
index 1b4d9ed..f160851 100644 (file)
@@ -165,6 +165,33 @@ class Turba_Application extends Horde_Registry_Application
     }
 
     /**
+     * Add additional items to the menu.
+     *
+     * @param Horde_Menu $menu  The menu object.
+     */
+    public function menu($menu)
+    {
+        if (!empty($_SESSION['turba']['has_share'])) {
+            $menu->add(Horde::url('addressbooks/index.php'), _("_My Address Books"), 'turba.png');
+        }
+
+        if ($GLOBALS['browse_source_count']) {
+            $menu->add(Horde::url('browse.php'), _("_Browse"), 'menu/browse.png', null, null, null, (($GLOBALS['prefs']->getValue('initial_page') == 'browse.php' && basename($_SERVER['PHP_SELF']) == 'index.php' && basename(dirname($_SERVER['PHP_SELF'])) != 'addressbooks') || (basename($_SERVER['PHP_SELF']) == 'browse.php' && Horde_Util::getFormData('key') != '**search')) ? 'current' : '__noselection');
+        }
+
+        if (count($GLOBALS['addSources'])) {
+            $menu->add(Horde::url('add.php'), _("_New Contact"), 'menu/new.png');
+        }
+
+        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'), null, null, (($GLOBALS['prefs']->getValue('initial_page') == 'search.php' && basename($_SERVER['PHP_SELF']) == 'index.php' && strpos($_SERVER['PHP_SELF'], 'addressbooks/index.php') === false) || (basename($_SERVER['PHP_SELF']) == 'browse.php' && Horde_Util::getFormData('key') == '**search')) ? 'current' : null);
+
+        /* Import/Export */
+        if ($GLOBALS['conf']['menu']['import_export']) {
+            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
+        }
+    }
+
+    /**
      * Populate dynamically-generated preference values.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
@@ -366,18 +393,6 @@ class Turba_Application extends Horde_Registry_Application
     }
 
     /**
-     * Generate the menu to use on the prefs page.
-     *
-     * @param Horde_Core_Prefs_Ui $ui  The UI object.
-     *
-     * @return Horde_Menu  A Horde_Menu object.
-     */
-    public function prefsMenu($ui)
-    {
-        return Turba::getMenu();
-    }
-
-    /**
      * Removes user data.
      *
      * @param string $user  Name of user to remove data for.
index bcf5310..1437acb 100644 (file)
@@ -608,32 +608,6 @@ class Turba {
     }
 
     /**
-     * Build Turba's list of menu items.
-     */
-    function getMenu()
-    {
-        $menu = new Horde_Menu();
-
-        if (!empty($_SESSION['turba']['has_share'])) {
-            $menu->add(Horde::url('addressbooks/index.php'), _("_My Address Books"), 'turba.png');
-        }
-        if ($GLOBALS['browse_source_count']) {
-            $menu->add(Horde::url('browse.php'), _("_Browse"), 'menu/browse.png', null, null, null, (($GLOBALS['prefs']->getValue('initial_page') == 'browse.php' && basename($_SERVER['PHP_SELF']) == 'index.php' && basename(dirname($_SERVER['PHP_SELF'])) != 'addressbooks') || (basename($_SERVER['PHP_SELF']) == 'browse.php' && Horde_Util::getFormData('key') != '**search')) ? 'current' : '__noselection');
-        }
-        if (count($GLOBALS['addSources'])) {
-            $menu->add(Horde::url('add.php'), _("_New Contact"), 'menu/new.png');
-        }
-        $menu->add(Horde::url('search.php'), _("_Search"), 'search.png', Horde_Themes::img(null, 'horde'), null, null, (($GLOBALS['prefs']->getValue('initial_page') == 'search.php' && basename($_SERVER['PHP_SELF']) == 'index.php' && strpos($_SERVER['PHP_SELF'], 'addressbooks/index.php') === false) || (basename($_SERVER['PHP_SELF']) == 'browse.php' && Horde_Util::getFormData('key') == '**search')) ? 'current' : null);
-
-        /* Import/Export */
-        if ($GLOBALS['conf']['menu']['import_export']) {
-            $menu->add(Horde::url('data.php'), _("_Import/Export"), 'data.png', Horde_Themes::img(null, 'horde'));
-        }
-
-        return $menu;
-    }
-
-    /**
      * Add browse.js javascript to page.
      */
     public function addBrowseJs()
index a51574a..b03bd76 100644 (file)
@@ -9,7 +9,7 @@
  </div>
 <?php endif; ?>
  <div class="leftFloat">
-  <?php echo Turba::getMenu()->render() ?>
+  <?php echo Horde::menu(array('menu_ob' => true))->render() ?>
  </div>
 </div>
 </form>