Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 2
0
/**
 * 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);
}