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; }
function domID() { return 'post-' . $this->published->utcformat('%Y-%m-%d-') . gb_strtodomid($this->slug); }