]> BookStack Code Mirror - bookstack/commitdiff
Normalised page nav header inset when only small headers are used
authorDan Brown <redacted>
Mon, 2 Jan 2017 12:13:03 +0000 (12:13 +0000)
committerDan Brown <redacted>
Mon, 2 Jan 2017 12:13:03 +0000 (12:13 +0000)
app/Repos/EntityRepo.php
resources/views/pages/sidebar-tree-list.blade.php

index 95666a66a6ce36bdb5f69dfb30cb9099ac16b9d1..0515a4cd47c06d6ff88f136211241a56a76281d7 100644 (file)
@@ -836,7 +836,7 @@ class EntityRepo
     /**
      * Parse the headers on the page to get a navigation menu
      * @param Page $page
-     * @return array
+     * @return Collection
      */
     public function getPageNav(Page $page)
     {
@@ -849,15 +849,24 @@ class EntityRepo
 
         if (is_null($headers)) return null;
 
-        $tree = [];
+        $tree = collect([]);
         foreach ($headers as $header) {
             $text = $header->nodeValue;
-            $tree[] = [
+            $tree->push([
                 'nodeName' => strtolower($header->nodeName),
                 'level' => intval(str_replace('h', '', $header->nodeName)),
                 'link' => '#' . $header->getAttribute('id'),
                 'text' => strlen($text) > 30 ? substr($text, 0, 27) . '...' : $text
-            ];
+            ]);
+        }
+
+        // Normalise headers if only smaller headers have been used
+        if (count($tree) > 0) {
+            $minLevel = $tree->pluck('level')->min();
+            $tree = $tree->map(function($header) use ($minLevel) {
+                $header['level'] -= ($minLevel - 2);
+                return $header;
+            });
         }
         return $tree;
     }
index 87eebed493a038b35dfe67f2be9f97ccf2c7d0f7..0fb97369e94480d9eb6e25d3fbcc4034547e2679 100644 (file)
@@ -30,7 +30,7 @@
         <h6 class="text-muted">{{ trans('entities.pages_navigation') }}</h6>
         <div class="sidebar-page-nav menu">
             @foreach($pageNav as $navItem)
-                <li class="page-nav-item {{ $navItem['nodeName'] }}">
+                <li class="page-nav-item h{{ $navItem['level'] }}">
                     <a href="{{ $navItem['link'] }}">{{ $navItem['text'] }}</a>
                 </li>
             @endforeach