public function compile(array $list = [], $classAttr = '') { if (empty($list)) { $list = $this->list; } $out = '<ul' . ($classAttr ? ' class="' . $classAttr . '"' : '') . '>'; foreach ($list as $link => $label) { if (is_int($link) and $label == '-') { $out .= '<li class="menu-devider"></li>'; } else { $class = ''; $link = ltrim($link, '/'); if ($this->isCurrent($link)) { $class = ' class="active"'; } if (is_string($label)) { $out .= '<li' . $class . '>' . anchor($link, $label) . '</li>'; } else { $attrs = array_set_defaults($label, ['label' => '', 'subs' => []]); $out .= '<li' . $class . '>'; $out .= anchor($link, $attrs['label']); $out .= $this->compile($attrs['subs'], 'submenu'); $out .= '</li>'; } } } $out .= '</ul>'; return $out; }
/** * Twitter Bootstrap Dropdown Button(s) * * @param array $menu_list List of dropdown menu * @param string $base_link Based link to work with * @param array $attributes Button attributes * * @return string */ function twbs_button_dropdown(array $menu_list, $base_link = '', $attributes = array()) { $attributes = array_set_defaults($attributes, array('group-class' => '', 'btn-type' => '', 'btn-text' => '')); $base_link || ($base_link = base_url()); if (substr($base_link, -1) != '/') { $base_link .= '/'; } $output = '<div class="btn-group ' . $attributes['group-class'] . '">' . '<button type="button" class="btn btn-' . $attributes['btn-type'] . ' dropdown-toggle" data-toggle="dropdown">' . $attributes['btn-text'] . ' <span class="caret"></span>' . '</button>' . '<ul class="dropdown-menu dropdown-menu-right" role="menu">'; foreach ($menu_list as $link => $title) { $output .= twbs_text(anchor($base_link . $link, $title), 'left', 'li'); } $output .= '</ul>' . '</div>'; return $output; }