Normalised page nav header inset when only small headers are used
Showing
2 changed files
with
14 additions
and
5 deletions
| ... | @@ -836,7 +836,7 @@ class EntityRepo | ... | @@ -836,7 +836,7 @@ class EntityRepo |
| 836 | /** | 836 | /** |
| 837 | * Parse the headers on the page to get a navigation menu | 837 | * Parse the headers on the page to get a navigation menu |
| 838 | * @param Page $page | 838 | * @param Page $page |
| 839 | - * @return array | 839 | + * @return Collection |
| 840 | */ | 840 | */ |
| 841 | public function getPageNav(Page $page) | 841 | public function getPageNav(Page $page) |
| 842 | { | 842 | { |
| ... | @@ -849,15 +849,24 @@ class EntityRepo | ... | @@ -849,15 +849,24 @@ class EntityRepo |
| 849 | 849 | ||
| 850 | if (is_null($headers)) return null; | 850 | if (is_null($headers)) return null; |
| 851 | 851 | ||
| 852 | - $tree = []; | 852 | + $tree = collect([]); |
| 853 | foreach ($headers as $header) { | 853 | foreach ($headers as $header) { |
| 854 | $text = $header->nodeValue; | 854 | $text = $header->nodeValue; |
| 855 | - $tree[] = [ | 855 | + $tree->push([ |
| 856 | 'nodeName' => strtolower($header->nodeName), | 856 | 'nodeName' => strtolower($header->nodeName), |
| 857 | 'level' => intval(str_replace('h', '', $header->nodeName)), | 857 | 'level' => intval(str_replace('h', '', $header->nodeName)), |
| 858 | 'link' => '#' . $header->getAttribute('id'), | 858 | 'link' => '#' . $header->getAttribute('id'), |
| 859 | 'text' => strlen($text) > 30 ? substr($text, 0, 27) . '...' : $text | 859 | 'text' => strlen($text) > 30 ? substr($text, 0, 27) . '...' : $text |
| 860 | - ]; | 860 | + ]); |
| 861 | + } | ||
| 862 | + | ||
| 863 | + // Normalise headers if only smaller headers have been used | ||
| 864 | + if (count($tree) > 0) { | ||
| 865 | + $minLevel = $tree->pluck('level')->min(); | ||
| 866 | + $tree = $tree->map(function($header) use ($minLevel) { | ||
| 867 | + $header['level'] -= ($minLevel - 2); | ||
| 868 | + return $header; | ||
| 869 | + }); | ||
| 861 | } | 870 | } |
| 862 | return $tree; | 871 | return $tree; |
| 863 | } | 872 | } | ... | ... |
| ... | @@ -30,7 +30,7 @@ | ... | @@ -30,7 +30,7 @@ |
| 30 | <h6 class="text-muted">{{ trans('entities.pages_navigation') }}</h6> | 30 | <h6 class="text-muted">{{ trans('entities.pages_navigation') }}</h6> |
| 31 | <div class="sidebar-page-nav menu"> | 31 | <div class="sidebar-page-nav menu"> |
| 32 | @foreach($pageNav as $navItem) | 32 | @foreach($pageNav as $navItem) |
| 33 | - <li class="page-nav-item {{ $navItem['nodeName'] }}"> | 33 | + <li class="page-nav-item h{{ $navItem['level'] }}"> |
| 34 | <a href="{{ $navItem['link'] }}">{{ $navItem['text'] }}</a> | 34 | <a href="{{ $navItem['link'] }}">{{ $navItem['text'] }}</a> |
| 35 | </li> | 35 | </li> |
| 36 | @endforeach | 36 | @endforeach | ... | ... |
-
Please register or sign in to post a comment