From 9568d17cb9499d859445ee5c541f4610236b0f9f Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 5 Apr 2011 17:02:48 -0400 Subject: [PATCH] Add streams to left nav --- lib/defaultlocalnav.php | 5 +++ lib/streamsnav.php | 83 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 lib/streamsnav.php diff --git a/lib/defaultlocalnav.php b/lib/defaultlocalnav.php index b9b45c8e01..f150407621 100644 --- a/lib/defaultlocalnav.php +++ b/lib/defaultlocalnav.php @@ -62,6 +62,11 @@ class DefaultLocalNav extends Menu // TRANS: Menu item in default local navigation panel. $this->submenu(_m('MENU','Public'), $bn); + if (!empty($user)) { + $sn = new StreamsNav($this->action); + $this->submenu(_m('MENU', 'Streams'), $sn); + } + $this->action->elementEnd('ul'); } } diff --git a/lib/streamsnav.php b/lib/streamsnav.php new file mode 100644 index 0000000000..2051cc3484 --- /dev/null +++ b/lib/streamsnav.php @@ -0,0 +1,83 @@ +. + * + * @category Cache + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Menu for streams you follow + * + * @category General + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class StreamsNav extends Menu +{ + /** + * Show the menu + * + * @return void + */ + function show() + { + $user = common_current_user(); + + if (empty($user)) { + throw new ServerException('Cannot show personal group navigation without a current user.'); + } + + $action = $this->actionName; + + $this->out->elementStart('ul', array('class' => 'nav')); + + if (Event::handle('StartStreamsNav', array($this))) { + $group = $user->getGroups(); + + while ($group->fetch()) { + $this->out->menuItem(($group->mainpage) ? $group->mainpage : common_local_url('showgroup', + array('nickname' => $group->nickname)), + $group->getBestName(), + '', + $action == 'showgroup' && $this->action->arg('nickname') == $group->nickname, + 'nav_timeline_group_'.$group->nickname); + } + Event::handle('EndStreamsNav', array($this)); + } + + $this->out->elementEnd('ul'); + } +}