'Menu Manager', 'version' => '0.5', 'url' => 'http://www.andrewdasilva.com/', 'author' => 'Andrew da Silva', 'authorurl' => 'http://www.andrewdasilva.com/', 'license' => 'Apache License 2.0', 'desccription' => 'Adds a template variable containing the menu tabs.', 'copyright' => '2007' ); } public function action_add_template_vars( $handler_vars ) { $menu= array(); /* Add your custom tabs here */ $menu[]= new MenuTab( 'Habari Project', 'http://habariproject.org/', array( 'priority' => 0 ) ); if ( isset( $handler_vars->template_engine->user ) ) { $menu[]= new MenuTab( 'Admin', Site::get_url( 'admin' ), array( 'class' => 'admintab', 'priority' => 666 ) ); } foreach ( $handler_vars->template_engine->pages as $page ) { $menu[]= new MenuTab( $page->title_out, $page->permalink ); } $menu= Plugins::filter( 'menu_tabs', $menu ); usort( $menu, array("self", "compare_priority") ); $html= new DOMDocument(); $html_ul= $html->createElement('ul'); $html_ul->setAttribute('class', 'menu'); $html->appendChild($html_ul); foreach ( $menu as $tab ) { $menu_tab= $html->createElement('li'); if ( isset( $tab->class ) ) { $menu_tab->setAttribute('class', $tab->class); } $html_ul->appendChild($menu_tab); $menu_tab_link= $html->createElement('a', $tab->title); $menu_tab_link->setAttribute('href', $tab->url); $menu_tab_link->setAttribute('alt', $tab->title); $menu_tab->appendChild($menu_tab_link); } $handler_vars->template_engine->menu= $html->saveHTML(); } public function compare_priority( $a, $b ) { if ( $a->priority == $b->priority ) { return 0; } return ( $a->priority < $b->priority ) ? -1 : 1; } } class MenuTab { public function __construct( $title, $url, $params = array() ) { $this->title= $title; $this->url= $url; foreach ( $params as $key => $value ) { if ( strlen( trim( $value ) ) > 0 ) { $this->$key= $value; } } } } ?>