From c8d6a77d8ae64d527838ed6691e6eabff4aa12e2 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 1 Mar 2011 05:45:38 -0500 Subject: [PATCH] common superclass for menu widgets --- lib/menu.php | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/menu.php diff --git a/lib/menu.php b/lib/menu.php new file mode 100644 index 0000000000..b9791d2359 --- /dev/null +++ b/lib/menu.php @@ -0,0 +1,84 @@ +. + * + * @category Widget + * @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); +} + +/** + * Superclass for menus + * + * @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 Menu extends Widget +{ + var $action = null; + var $actionName = null; + /** + * Construction + * + * @param Action $action current action, used for output + */ + function __construct($action=null) + { + parent::__construct($action); + + $this->action = $action; + $this->actionName = $action->trimmed('action'); + } + + function item($actionName, $args, $label, $description, $id=null) + { + if (empty($id)) { + $id = $this->menuItemID($actionName); + } + + $url = common_local_url($actionName, $args); + + $this->out->menuItem($url, + $label, + $description, + $actionName == $this->actionName, + $id); + } + + function menuItemID($actionName) + { + return sprintf('nav_%s', $actionName); + } +}