tag in a same page static private $builtSectionIds = array(); function __construct($plugin, $mode, $renderer, $data){ $this->plugin = $plugin; $this->renderer =& $renderer; $this->mode = $mode; $this->pos = $data['pos']; $this->natOrder = $data['natOrder']; $this->actualTitleLevel = $data['actualTitleLevel']; $this->nbItemsMax = $data['nbItemsMax']; $this->dictOrder = $data['dictOrder']; $this->_displayModificationDate = $data['displayModificationDate'] || $data['modificationDateOnPictures']; // This is a deprecated option. We should kill it after checking no users are still using it $this->_sorter = $this->_getSorter($data['reverse']); $this->includeItemsInTOC = $data['includeItemsInTOC'] && $mode === 'xhtml'; } function printTOC($tab, $type, $text, $hideno){ $this->_printHeader($tab, $type, $text, $hideno); if(empty($tab)) { return; } $this->_print($tab, $type); } abstract function _print($tab, $type); function printUnusableNamespace($wantedNS){ $this->renderer->section_open(1); $this->renderer->cdata($this->plugin->getLang('doesntexist').$wantedNS); $this->renderer->section_close(); } private function _printHeader(&$tab, $type, $text, $hideno) { if(empty($tab) && $hideno) return; $this->_sorter->sort($tab); $this->_keepOnlyNMaxItems($tab); if($text != '') { if($this->actualTitleLevel){ $this->renderer->header($text, $this->actualTitleLevel, $this->pos); } else if($this->mode == 'xhtml') { $this->renderer->doc .= '
'; $this->renderer->cdata($text); $this->renderer->doc .= '
'; } else { $this->renderer->linebreak(); $this->renderer->p_open(); $this->renderer->cdata($text); $this->renderer->p_close(); } } if(empty($tab)) { $this->renderer->p_open(); $this->renderer->cdata($this->plugin->getLang(($type == 'page') ? 'nopages' : 'nosubns')); $this->renderer->p_close(); } } private function _getSorter($reverse) { if ( $this->natOrder ){ return new nspages_naturalOrder_sorter($reverse); } else if ($this->dictOrder) { return new nspages_dictOrder_sorter($reverse, $this->dictOrder); } else { return new nspages_default_sorter($reverse); } } private function _keepOnlyNMaxItems(&$tab){ if ($this->nbItemsMax){ $tab = array_slice($tab, 0, $this->nbItemsMax); } } /** * @param Array $item Represents the file */ protected function _printElement($item, $level=1, $node=false) { $this->_printElementOpen($level, $node); $this->_printElementContent($item, $level); $this->_printElementClose(); } protected function _printElementOpen($level=1, $node=false) { if($item['type'] !== 'd') { $this->renderer->listitem_open($level, $node); } else { //Case of a subnamespace if($this->mode == 'xhtml') { $this->renderer->doc .= '