-
Notifications
You must be signed in to change notification settings - Fork 0
DynamicMenu
Category:Help::TipsAndTricks Image:DynamicMenu.gif
Updating my contributions on the wiki has become a nightmare. Please check my svn at google for the latest revisions: http://code.google.com/p/tamer/ [url=http://code.google.com/p/tamer/]CI_TaMeR SVN[/url]
Menu library. Will show/hide sub-menus depending on in which, uri->segment the user is browsing. Just add it in to autoload.
I call it from the view file like this: [code] $menu = $this->menu->mkmenu(); [/code] I use a header.php and footer.php so I have to do this only once in my header.php. In any case where ever in the view file you like to have your menu you would enter this: [i]Make sure you also load the html helper for ul[/i] [code] <?=ul($menu,array('class' => 'Navbar','id' => 'Navbar'));?> [/code] And here you create your menu [code] class Menu { function setVars() { $uid = $this->db_session->userdata('uid');
$this->menu = array(
'1' => anchor('news', 'News'),
'4' => anchor('ticket', 'Support'),
'5' => anchor('test', 'Test'),
);
if($this->uid > 0){
$this->['3'] = anchor('contact/person', 'Profile');
$this->sub['contact'] = array(
anchor('contact/person','User'),
anchor('contact/company','Comapny'),
anchor('contact/secquestion','Security'),
anchor('contact/password','Password')
);
}
$this->sub['news'] = array(anchor('news/post','Post'));
}
function Menu()
{
log_message('debug', 'Menu: initialized');
}
function mkMenu()
{
$CI =& get_instance();
$this->uid = $CI->db_session->userdata('uid');
$this->setVars();
ksort($this->menu);
$segment = $CI->uri->segment(1);
foreach($this->menu as $k => $v){
$menutmp[$k] = $v;
if (strripos($v, $segment) !== FALSE && isset($this->sub[$segment])){
$this->menu[$this->menu[$k]] = $this->sub[$segment];
unset($menutmp[$k]);
$menutmp[$this->menu[$k]] = $this->sub[$segment];
}
}
return $menutmp;
}
} [/code]
Here is the style code: [code] #HeaderNav { border: 1px solid #000000; background: #333333; color: #ffffff; }
#HeaderNav a { border: 1px solid #000000; background: #333333; color: #ffffff; }
#HeaderNav a:hover { border: 1px solid #000000; background: #333333; color: #ffffff; }
#Navbar {
}
#Navbar ul.menu { /* font-family: Verdana, Arial, Helvetica, sans-serif; / font-size: .8em; font-style: normal; line-height: 1.3em; font-weight: normal; font-variant: normal; text-transform: none; color: #00CC33; text-decoration: none; background-color: #CCCCCC; text-indent: 0em; / list-style-position: inside; */ list-style-position: outside; list-style-type: none; padding: 0 0 0 0; margin: 0 0 0 0; }
#Navbar li { margin: 0 0 0 0; list-style-type: none; } #Navbar a { display: block; padding: 2px 2px 2px 1em; border: 1px solid #000000; background: #dcdcdc; text-decoration: none; /remove the link underlines/ }
#Navbar a:link, #list-menu a:active, #list-menu a:visited { color: #000000; }
#Navbar a:hover { border: 1px solid #000000; background: #333333; color: #ffffff; } [/code]
If you make an improvement or have questions post them here:
[url=http://codeigniter.com/forums/viewthread/48152/]Dynamic Menu Forum[/url]