1, 'one-page' => false, 'section' => null, 'clean-url' => false, 'base-url' => ''); private $_lang = array(); public function __construct($filename) { $this->_toc = new Sensei_Doc_Toc($filename); $this->_wiki = Text_Wiki::singleton('Doc'); $this->_wiki->setParseConf('Doclink', 'toc', $this->_toc); $this->_wiki->setRenderConf('xhtml', 'Doclink', 'url_callback', array(&$this, 'makeUrl')); } public function getOption($option) { return $this->_options[$option]; } public function setOption($option, $value) { switch ($option) { case 'max-level': $value = (int) $value; break; case 'one-page': case 'clean-url': $value = (bool) $value; break; case 'base-url': $value = (string) $value; break; case 'section': if (! $value instanceof Sensei_Doc_Section) { throw new Exception('Value must be an instance of Sensei_Doc_Section.'); } break; default: throw new Exception('Unknown option.'); } $this->_wiki->setRenderConf('xhtml', 'Doclink', 'view_url', $this->getUrlPrefix()); $this->_options[$option] = $value; } public function renderToc($toc = null) { if (!$toc) { $toc = $this->_toc; } $classes = array(); if ($toc instanceof Sensei_Doc_Toc) { $class = ''; if ($this->getOption('one-page')) { $class = ' class="one-page"'; } $classes[] = 'tree'; } else { $isParent = false; $section = $this->getOption('section'); if ($section !== null) { $current = $section; do { if ($current === $toc) { $isParent = true; break; } } while (($current = $current->getParent()) !== null); } if (! $isParent) { $classes[] = 'closed'; } } $classes = implode(' ', $classes); if ($classes === '') { echo "