ns = $ns; } /** * Display page index * * @return void * @author Andreas Gohr * */ public function show() { // print intro echo p_locale_xhtml('index'); echo $this->sitemap(); } /** * Build html of sitemap, unordered list of pages under the namespace * * @return string */ public function sitemap() { global $conf; global $ID; $ns = cleanID($this->ns); if (empty($ns)) { $ns = getNS($ID); if ($ns === false) $ns = ''; } $ns = utf8_encodeFN(str_replace(':', '/', $ns)); $data = []; search($data, $conf['datadir'], 'search_index', ['ns' => $ns]); return '
' . html_buildlist($data, 'idx', [$this, 'formatListItem'], [$this, 'tagListItem']) . '
'; } /** * Index item formatter * * User function for html_buildlist() * * @param array $item * @return string * @author Andreas Gohr * */ public function formatListItem($item) // RENAMED from html_list_index() { global $ID, $conf; // prevent searchbots needlessly following links $nofollow = ($ID != $conf['start'] || $conf['sitemap']) ? 'rel="nofollow"' : ''; $html = ''; $base = ':' . $item['id']; $base = substr($base, strrpos($base, ':') + 1); if ($item['type'] == 'd') { // FS#2766, no need for search bots to follow namespace links in the index $link = wl($ID, 'idx=' . rawurlencode($item['id'])); $html .= ''; $html .= $base; $html .= ''; } else { // default is noNSorNS($id), but we want noNS($id) when useheading is off FS#2605 $html .= html_wikilink(':' . $item['id'], useHeading('navigation') ? null : noNS($item['id'])); } return $html; } /** * Index List item * * This user function is used in html_buildlist to build the *
  • tags for namespaces when displaying the page index * it gives different classes to opened or closed "folders" * * @param array $item * @return string html * @author Andreas Gohr * */ public function tagListItem($item) // RENAMED from html_li_index() { global $INFO; global $ACT; $class = ''; $id = ''; if ($item['type'] == 'f') { // scroll to the current item if (isset($INFO) && $item['id'] == $INFO['id'] && $ACT == 'index') { $id = ' id="scroll__here"'; $class = ' bounce'; } return '
  • '; } elseif ($item['open']) { return '
  • '; } else { return '
  • '; } } }