<?php
/**
* get the top-navi for the bootstrap-framework (HTML)
*
* @param $naviArray
* @param $tmpArrayChildOf
*
* @return string
*/
function getHTMLNaviBootstrap($naviArray, $tmpArrayChildOf)
{
$naviString = '';
$depth = 0;
foreach ($naviArray as $index => $item) {
$hasDropDown = false;
$newDepth = (int)$item['level'];
// is the navi-element "active"?
if (in_array($item['id'], $tmpArrayChildOf, true)) { $tmpClass = ' active ';
} else {
$tmpClass = '';
}
// add template-class
$tmpClass .= ' menu_' . $item['template'] . ' ' . ' menu_pageid_' . $item['id'] . ' ';
// check for sub-"ul"
foreach ($naviArray as $item_tmp) {
if ($item['id'] == $item_tmp['root_id']) {
$tmpClass .= ' dropdown ';
$hasDropDown = true;
break;
}
}
if ($newDepth > $depth) {
while ($newDepth > $depth) {
if ($depth > 0) {
$ul_extra = 'mainnavSub dropdown-menu';
$li_extra = '';
} else {
$ul_extra = 'nav navbar-nav';
$li_extra = 'mainnav';
}
$naviString .= '
<ul class="' . $ul_extra . '">
<li class="' . $li_extra . ' ' . $tmpClass . '">';
$depth++;
}
} else if ($newDepth < $depth) {
while ($newDepth < $depth) {
$naviString .= '
</li>
</ul>';
$depth--;
}
$naviString .= '
</li>
<li class="mainnav ' . $tmpClass . '">';
} else if ($newDepth === $depth) {
if ($index === 0) {
$naviString .= '
<ul>
<li class="mainnav ' . $tmpClass . '">';
} else if ($newDepth == 1) {
$naviString .= '
</li>
<li class="mainnav ' . $tmpClass . '">';
} else {
$naviString .= '
</li>
<li class="' . $tmpClass . '">';
}
}
if ($hasDropDown === true) {
$extrasForLink = 'class="dropdown-toggle" data-toggle="dropdown"';
$extraIconForLink = '<b class="caret"></b>';
} else {
$extrasForLink = '';
$extraIconForLink = '';
}
$naviString .= '<a ' . $extrasForLink . ' href="' . $item['url'] . '">' . $item['name'] . ' ' . $extraIconForLink . '</a>';
$depth = $newDepth;
}
if (count($naviArray) > 0) { do {
$naviString .= '
</li>
</ul>';
$depth--;
}
while ($depth > 0);
}
return $naviString;
}
'id' => 1,
'root_id' => 0,
'priority' => 0,
'title' => 'story-title',
'name' => 'Home',
'level' => 1,
'offline' => 0,
'template' => 'index',
'url' => 'http://f...content-available-to-author-only...r.com/index1'
),
'id' => 13,
'root_id' => 1,
'priority' => 0,
'title' => 'story-title',
'name' => 'Sub_Home',
'level' => 2,
'offline' => 0,
'template' => 'sub_index',
'url' => 'http://f...content-available-to-author-only...r.com/sub_index13',
),
'id' => 5,
'root_id' => 0,
'priority' => 0,
'title' => 'story-title',
'name' => 'Sub_Home',
'level' => 1,
'offline' => 0,
'template' => 'blog',
'url' => 'http://f...content-available-to-author-only...r.com/blog5'
)
);
echo getHTMLNaviBootstrap
($naviArray, array());
PD9waHAKCi8qKgogKiBnZXQgdGhlIHRvcC1uYXZpIGZvciB0aGUgYm9vdHN0cmFwLWZyYW1ld29yayAoSFRNTCkKICoKICogQHBhcmFtICRuYXZpQXJyYXkKICogQHBhcmFtICR0bXBBcnJheUNoaWxkT2YKICoKICogQHJldHVybiBzdHJpbmcKICovCmZ1bmN0aW9uIGdldEhUTUxOYXZpQm9vdHN0cmFwKCRuYXZpQXJyYXksICR0bXBBcnJheUNoaWxkT2YpCnsKICAkbmF2aVN0cmluZyA9ICcnOwogICRkZXB0aCA9IDA7CiAgZm9yZWFjaCAoJG5hdmlBcnJheSBhcyAkaW5kZXggPT4gJGl0ZW0pIHsKCiAgICAkaGFzRHJvcERvd24gPSBmYWxzZTsKICAgICRuZXdEZXB0aCA9IChpbnQpJGl0ZW1bJ2xldmVsJ107CgogICAgLy8gaXMgdGhlIG5hdmktZWxlbWVudCAiYWN0aXZlIj8KICAgIGlmIChpbl9hcnJheSgkaXRlbVsnaWQnXSwgJHRtcEFycmF5Q2hpbGRPZiwgdHJ1ZSkpIHsKICAgICAgJHRtcENsYXNzID0gJyBhY3RpdmUgJzsKICAgIH0gZWxzZSB7CiAgICAgICR0bXBDbGFzcyA9ICcnOwogICAgfQoKICAgIC8vIGFkZCB0ZW1wbGF0ZS1jbGFzcwogICAgJHRtcENsYXNzIC49ICcgbWVudV8nIC4gJGl0ZW1bJ3RlbXBsYXRlJ10gLiAnICcgLiAnIG1lbnVfcGFnZWlkXycgLiAkaXRlbVsnaWQnXSAuICcgJzsKCiAgICAvLyBjaGVjayBmb3Igc3ViLSJ1bCIKICAgIGZvcmVhY2ggKCRuYXZpQXJyYXkgYXMgJGl0ZW1fdG1wKSB7CiAgICAgIGlmICgkaXRlbVsnaWQnXSA9PSAkaXRlbV90bXBbJ3Jvb3RfaWQnXSkgewogICAgICAgICR0bXBDbGFzcyAuPSAnIGRyb3Bkb3duICc7CiAgICAgICAgJGhhc0Ryb3BEb3duID0gdHJ1ZTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmICgkbmV3RGVwdGggPiAkZGVwdGgpIHsKCiAgICAgIHdoaWxlICgkbmV3RGVwdGggPiAkZGVwdGgpIHsKCiAgICAgICAgaWYgKCRkZXB0aCA+IDApIHsKICAgICAgICAgICR1bF9leHRyYSA9ICdtYWlubmF2U3ViIGRyb3Bkb3duLW1lbnUnOwogICAgICAgICAgJGxpX2V4dHJhID0gJyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICR1bF9leHRyYSA9ICduYXYgbmF2YmFyLW5hdic7CiAgICAgICAgICAkbGlfZXh0cmEgPSAnbWFpbm5hdic7CiAgICAgICAgfQoKICAgICAgICAkbmF2aVN0cmluZyAuPSAnCiAgICAgICAgPHVsIGNsYXNzPSInIC4gJHVsX2V4dHJhIC4gJyI+CiAgICAgICAgICA8bGkgY2xhc3M9IicgLiAkbGlfZXh0cmEgLiAnICcgLiAkdG1wQ2xhc3MgLiAnIj4nOwogICAgICAgICRkZXB0aCsrOwogICAgICB9CgogICAgfSBlbHNlIGlmICgkbmV3RGVwdGggPCAkZGVwdGgpIHsKCiAgICAgIHdoaWxlICgkbmV3RGVwdGggPCAkZGVwdGgpIHsKICAgICAgICAkbmF2aVN0cmluZyAuPSAnCiAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+JzsKICAgICAgICAkZGVwdGgtLTsKICAgICAgfQogICAgICAkbmF2aVN0cmluZyAuPSAnCiAgICAgIDwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibWFpbm5hdiAnIC4gJHRtcENsYXNzIC4gJyI+JzsKCiAgICB9IGVsc2UgaWYgKCRuZXdEZXB0aCA9PT0gJGRlcHRoKSB7CgogICAgICBpZiAoJGluZGV4ID09PSAwKSB7CiAgICAgICAgJG5hdmlTdHJpbmcgLj0gJwogICAgICAgIDx1bD4KICAgICAgICAgIDxsaSBjbGFzcz0ibWFpbm5hdiAnIC4gJHRtcENsYXNzIC4gJyI+JzsKICAgICAgfSBlbHNlIGlmICgkbmV3RGVwdGggPT0gMSkgewogICAgICAgICRuYXZpU3RyaW5nIC49ICcKICAgICAgICA8L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibWFpbm5hdiAnIC4gJHRtcENsYXNzIC4gJyI+JzsKICAgICAgfSBlbHNlIHsKICAgICAgICAkbmF2aVN0cmluZyAuPSAnCiAgICAgICAgPC9saT4KICAgICAgICA8bGkgY2xhc3M9IicgLiAkdG1wQ2xhc3MgLiAnIj4nOwogICAgICB9CgogICAgfQoKICAgIGlmICgkaGFzRHJvcERvd24gPT09IHRydWUpIHsKICAgICAgJGV4dHJhc0ZvckxpbmsgPSAnY2xhc3M9ImRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIic7CiAgICAgICRleHRyYUljb25Gb3JMaW5rID0gJzxiIGNsYXNzPSJjYXJldCI+PC9iPic7CiAgICB9IGVsc2UgewogICAgICAkZXh0cmFzRm9yTGluayA9ICcnOwogICAgICAkZXh0cmFJY29uRm9yTGluayA9ICcnOwogICAgfQoKICAgICRuYXZpU3RyaW5nIC49ICc8YSAnIC4gJGV4dHJhc0ZvckxpbmsgLiAnIGhyZWY9IicgLiAkaXRlbVsndXJsJ10gLiAnIj4nIC4gJGl0ZW1bJ25hbWUnXSAuICcgJyAuICRleHRyYUljb25Gb3JMaW5rIC4gJzwvYT4nOwogICAgJGRlcHRoID0gJG5ld0RlcHRoOwogIH0KCiAgaWYgKGNvdW50KCRuYXZpQXJyYXkpID4gMCkgewogICAgZG8gewogICAgICAkbmF2aVN0cmluZyAuPSAnCiAgICAgICAgPC9saT4KICAgICAgPC91bD4nOwogICAgICAkZGVwdGgtLTsKICAgIH0KICAgIHdoaWxlICgkZGVwdGggPiAwKTsKICB9CgogIHJldHVybiAkbmF2aVN0cmluZzsKfQoKJG5hdmlBcnJheSA9IGFycmF5ICgKICBhcnJheSAoCiAgICAnaWQnID0+IDEsCiAgICAncm9vdF9pZCcgPT4gMCwKICAgICdwcmlvcml0eScgPT4gMCwKICAgICd0aXRsZScgPT4gJ3N0b3J5LXRpdGxlJywKICAgICduYW1lJyA9PiAnSG9tZScsCiAgICAnbGV2ZWwnID0+IDEsCiAgICAnb2ZmbGluZScgPT4gMCwKICAgICd0ZW1wbGF0ZScgPT4gJ2luZGV4JywKICAgICd1cmwnID0+ICdodHRwOi8vZi4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5jb20vaW5kZXgxJwogICksCiAgYXJyYXkgKAogICAgJ2lkJyA9PiAxMywKICAgICdyb290X2lkJyA9PiAxLAogICAgJ3ByaW9yaXR5JyA9PiAwLAogICAgJ3RpdGxlJyA9PiAnc3RvcnktdGl0bGUnLAogICAgJ25hbWUnID0+ICdTdWJfSG9tZScsCiAgICAnbGV2ZWwnID0+IDIsCiAgICAnb2ZmbGluZScgPT4gMCwKICAgICd0ZW1wbGF0ZScgPT4gJ3N1Yl9pbmRleCcsCiAgICAndXJsJyA9PiAnaHR0cDovL2YuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIuY29tL3N1Yl9pbmRleDEzJywKICApLAogIGFycmF5ICgKICAgICAgJ2lkJyA9PiA1LAogICAgICAncm9vdF9pZCcgPT4gMCwKICAgICAgJ3ByaW9yaXR5JyA9PiAwLAogICAgICAndGl0bGUnID0+ICdzdG9yeS10aXRsZScsCiAgICAgICduYW1lJyA9PiAnU3ViX0hvbWUnLAogICAgICAnbGV2ZWwnID0+IDEsCiAgICAgICdvZmZsaW5lJyA9PiAwLAogICAgICAndGVtcGxhdGUnID0+ICdibG9nJywKICAgICAgJ3VybCcgPT4gJ2h0dHA6Ly9mLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5yLmNvbS9ibG9nNScKICApCik7CgplY2hvIGdldEhUTUxOYXZpQm9vdHN0cmFwKCRuYXZpQXJyYXksIGFycmF5KCkpOw==