initialize($config);
}
public static function create($config = array())
{
return new static($config);
}
public function initialize($config = array())
{
$this->_clear();
$this->ul_attributes = $config;
return $this;
}
private function _clear()
{
$this->ul_attributes = array();
$this->links = array();
}
public function add($label, $url = null, $icon = null, Menu $submenu = null, $li_class = null)
{
$link = array();
$link['label'] = $label;
if (!is_null($url))
$link['url'] = $url;
if (!is_null($icon))
$link['icon'] = $icon;
if (!is_null($submenu))
$link['submenu'] = $submenu;
if (!is_null($li_class)) {
$link['li_class'] = $li_class;
}
array_push($this->links, $link);
return $this;
}
public function render()
{
// render ul
$output = $this->_generate_tag_open('ul', $this->ul_attributes);
foreach ($this->links as $link) {
// '
'
$li_attributes = array();
if (isset($link['li_class'])) {
$li_attributes['class'] = $link['li_class'];
}
$output .= $this->_generate_tag_open('li', $li_attributes);
// ''
if (isset($link['url']) && !empty($link['url'])) {
$a_attributes['href'] = $link['url'];
$output .= $this->_generate_tag_open('a', $a_attributes);
// ''
if (isset($link['icon'])) {
$i_attributes['class'] = $link['icon'];
$output .= $this->_generate_tag_open('i', $i_attributes) . '';
}
}
$output .= $link['label'];
//
if (isset($link['submenu']) && !is_null($link['submenu'])) {
$output .= $this->_generate_tag_open('i', array(
'class' => 'fa fa-angle-left pull-right'
)) . '';
}
// ''
if (isset($link['url']))
$output .= '';
if (isset($link['submenu']) && !is_null($link['submenu']))
$output .= $link['submenu']->render();
$output .= '';
}
$output .= '';
return $output;
}
private function _generate_tag_open($tag, $attributes)
{
$tag_open = "<$tag";
foreach ($attributes as $attr => $value) {
$tag_open .= " $attr=\"$value\"";
}
$tag_open .= '>';
return $tag_open;
}
}