function render_menu($menu_disabled = false, $items = null, $baseurl = null, $currurlpath = null, $liststart = '<ul>', $listend = '</ul>')
{
if ($items === null) {
$items = self::$menu;
}
if ($baseurl === null) {
$baseurl = gb_admin::$url;
}
if ($currurlpath === null) {
$currurlpath = gb::url()->path;
}
$accesskey_prefix = '';
$is_osx = isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Mac OS X') !== false;
if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') !== false) {
if ($is_osx) {
$accesskey_prefix = '⌃⌥';
}
}
$s = $liststart;
foreach ($items as $k => $item) {
$uri = $url = '';
$is_curr = $is_todo = false;
$accesskey = is_string($k) ? strtoupper($k) : '';
if (isset($item[1]) && is_string($item[1])) {
$uri = $item[1];
$url = $uri && ($uri[0] === '/' || strpos($uri, '://') !== false) ? $uri : $baseurl . $uri;
$url_st = GBURL::parse($url);
$actual_currpath = $url_st->path;
$is_todo = strpos($url_st->fragment, 'todo:') === 0;
$is_curr = !$is_todo && $actual_currpath === substr($currurlpath, 0, strlen($actual_currpath));
if ($uri === '') {
$is_curr = gb::url()->path === GBURL::parse(gb_admin::$url)->path;
}
}
$dom_id = $uri ? gb_strtodomid(gb_filenoext($item[1])) : $k;
$s .= '<li id="menu-item-' . $dom_id . '"';
$css_class = '';
if ($is_curr) {
$css_class .= 'selected';
self::$current_domid = $dom_id;
}
if ($is_todo) {
$css_class .= ' todo';
}
if ($css_class) {
$s .= ' class="' . $css_class . '"';
}
$s .= '><a';
if ($url && !$is_todo && !$menu_disabled) {
$s .= ' href="' . h($url) . '"';
}
if ($accesskey && !$menu_disabled) {
$s .= ' accesskey="' . $accesskey . '"';
}
$s .= '><span class="title">' . h($item[0]) . '</span>';
if ($accesskey && !$menu_disabled) {
$s .= '<span class="accesskey-hint">' . $accesskey_prefix . $accesskey . '</span>';
}
$s .= '</a>';
if (isset($item[2]) && $item[2]) {
$s .= self::render_menu($menu_disabled, $item[2], $baseurl, $currurlpath, $liststart, $listend);
}
$s .= '</li>';
}
$s .= $listend;
return $s;
}