1: <?php
2: 3: 4:
5: class Text_Wiki_Render_Xhtml_Toc2 extends Text_Wiki_Render
6: {
7: public $conf = array(
8: 'css_list' => null,
9: 'css_item' => null,
10: 'title' => '<strong>Table of Contents</strong>',
11: 'div_id' => 'toc',
12: );
13:
14: protected $_last_level = null;
15:
16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26: public function token($options)
27: {
28:
29: extract($options);
30:
31: switch ($type) {
32: case 'list_start':
33: Horde::addScriptFile('toc.js', 'wicked', true);
34:
35:
36: $html = '<div';
37: $css = $this->getConf('css_list');
38: if ($css) {
39: $html .= " class=\"$css\"";
40: }
41:
42: $div_id = $this->getConf('div_id');
43: if ($div_id) {
44: $html .= " id=\"$div_id\"";
45: }
46:
47:
48: return $html . '>' . $this->getConf('title') . '<ol>';
49:
50: case 'list_end':
51: $html = '';
52: while ($this->_last_level > 1) {
53: $html .= '</ol>';
54: --$this->_last_level;
55: }
56: return $html . "\n</li></ol></div>\n\n";
57:
58: case 'item_start':
59: $html = '';
60: if ($this->_last_level !== null) {
61: if ($level > $this->_last_level) {
62: while ($level > $this->_last_level) {
63: $html .= '<ol>';
64: ++$this->_last_level;
65: }
66: $html .= '<li';
67: } elseif ($level < $this->_last_level) {
68: while ($level < $this->_last_level) {
69: $html .= '</ol>';
70: --$this->_last_level;
71: }
72: $html .= '</li><li';
73: } else {
74: $html = '</li><li';
75: }
76: } else {
77: $html = '<li';
78: }
79: $this->_last_level = $level;
80:
81: $css = $this->getConf('css_item');
82: if ($css) {
83: $html .= " class=\"$css\"";
84: }
85:
86: return $html . "><a href=\"#$id\">";
87:
88: case 'item_end':
89: return '</a>';
90: }
91: }
92: }
93: