/** * Submenu generator * Funkce předpokládá správnou strukturu nadpisů. * Zdroj: http://forum.texy.info/cs/862-generovani-obsahu-z-nadpisu * @param type $texy * @return type * */ public function generateTocOriginal($texy) { $mainNode = \TexyHTML::el('ul'); $mainNode->class = 'media-list'; $lastLevel = 2; foreach ($texy->headingModule->TOC as $heading) { $level = $heading['level']; if ($level == 2) { // If first header, write to main node. $node[$level] = $mainNode->create('li'); } elseif ($level > $lastLevel) { // If child, make a new node $node[$level] = $node[$lastLevel]->create('ul')->create('li'); } elseif ($level <= $lastLevel) { // If child, make add a node into parent $node[$level] = $node[$level - 1]->create('ul')->create('li'); } $a = $node[$level]->create('a')->href('#' . $heading['el']->attrs['id'])->setText(\Nette\Utils\Strings::truncate($heading['title'], 25)); $lastLevel = $level; } return $mainNode->toHtml($texy); }
/** * Generate table of contents HTML blockz. * @global Texy $texy * @return TexyHtml */ function generateToc() { global $texy; if (!$texy->headingModule->TOC) { return ''; } $block = TexyHTML::el('div'); $block->id = 'toc'; $block->create('h3', 'Contents'); $toc = TexyHTML::el('ul'); $block->add($toc); $lists[0] = $toc; $aList = 0; $level = 2; foreach ($texy->headingModule->TOC as $heading) { if ($heading['level'] > $level) { for ($level; $heading['level'] > $level; ++$level) { if ($lists[$aList]->count() != 0) { $ul = $lists[$aList][$lists[$aList]->count() - 1]->create('ul'); } else { $li = $lists[$aList]->create('li'); $ul = $li->create('ul'); } $lists[] = $ul; } $aList = count($lists) - 1; } elseif ($heading['level'] < $level) { $diff = $level - $heading['level']; $lists = array_slice($lists, 0, -$diff); $level = $heading['level']; } $aList = count($lists) - 1; $li = $lists[$aList]->create('li'); $a = $li->create('a')->href('#' . $heading['el']->attrs['id'])->setText($heading['title']); } return $block->toHtml($texy); }