| 
							- <?php
 - 
 - namespace dokuwiki\Ui;
 - 
 - /**
 -  * DokuWiki Index Interface
 -  *
 -  * @package dokuwiki\Ui
 -  */
 - class Index extends Ui
 - {
 -     protected $ns;
 - 
 -     /**
 -      * Index Ui constructor
 -      *
 -      * @param string $ns namespace
 -      */
 -     public function __construct($ns = '')
 -     {
 -         $this->ns = $ns;
 -     }
 - 
 - 
 -     /**
 -      * Display page index
 -      *
 -      * @return void
 -      * @author   Andreas Gohr <andi@splitbrain.org>
 -      *
 -      */
 -     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 '<div id="index__tree" class="index__tree">'
 -             . html_buildlist($data, 'idx', [$this, 'formatListItem'], [$this, 'tagListItem'])
 -             . '</div>';
 -     }
 - 
 -     /**
 -      * Index item formatter
 -      *
 -      * User function for html_buildlist()
 -      *
 -      * @param array $item
 -      * @return string
 -      * @author Andreas Gohr <andi@splitbrain.org>
 -      *
 -      */
 -     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 .= '<a href="' . $link . '" title="' . $item['id'] . '" class="idx_dir"' . $nofollow . '><strong>';
 -             $html .= $base;
 -             $html .= '</strong></a>';
 -         } 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
 -      * <li> 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 <andi@splitbrain.org>
 -      *
 -      */
 -     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 '<li class="level' . $item['level'] . $class . '" ' . $id . '>';
 -         } elseif ($item['open']) {
 -             return '<li class="open">';
 -         } else {
 -             return '<li class="closed">';
 -         }
 -     }
 - }
 
 
  |