]> _ Git - cubist_cms-back.git/commitdiff
wip #6278 @0.25
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Oct 2023 12:11:20 +0000 (14:11 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 3 Oct 2023 12:11:20 +0000 (14:11 +0200)
src/app/Magic/Menu/Menu.php

index f692162c0b927bb3a4d3872f663782b376120809..5e0ede9be06d5a1fe95b3f878bf020ee67ce2883 100644 (file)
@@ -8,7 +8,8 @@ use Cubist\Backpack\Facades\App;
 use Lavary\Menu\Menu as BaseMenu;
 use Illuminate\Support\Facades\Cache;
 
-class Menu extends BaseMenu {
+class Menu extends BaseMenu
+{
     /**
      * @var Item[}
      */
@@ -25,12 +26,14 @@ class Menu extends BaseMenu {
     protected $_currentPage;
 
 
-    public function registerMenuMaker($name, $callback) {
+    public function registerMenuMaker($name, $callback)
+    {
         $this->_registeredMenuMakers[$name] = $callback;
     }
 
 
-    public function get($key, $name = self::_STANDARD_PREFIX, $locale = null) {
+    public function get($key, $name = self::_STANDARD_PREFIX, $locale = null)
+    {
         if (null === $locale) {
             $locale = App::getLocale();
         }
@@ -47,7 +50,8 @@ class Menu extends BaseMenu {
     /**
      * @return Item
      */
-    public static function getNavigation($locale = null, $variant = null) {
+    public static function getNavigation($locale = null, $variant = null)
+    {
         if (null === $locale) {
             $locale = App::getLocale();
         }
@@ -79,7 +83,8 @@ class Menu extends BaseMenu {
     /**
      * @return Cubist\Backpack\app\Magic\Menu\Item[]
      */
-    public static function getAllNavigablePages($locale = null, $variant = null) {
+    public static function getAllNavigablePages($locale = null, $variant = null)
+    {
         $pages = self::getNavigation($locale, $variant)->findAll();
 
         $res = [];
@@ -114,7 +119,8 @@ class Menu extends BaseMenu {
         return $res;
     }
 
-    public static function internalToHref($url) {
+    public static function internalToHref($url)
+    {
         if (stripos($url, 'internal:') !== false) {
             $e = explode(':', $url, 2);
             $url = $e[1];
@@ -133,7 +139,8 @@ class Menu extends BaseMenu {
         return '#internalnotfound';
     }
 
-    public function makeAllMenus($locale) {
+    public function makeAllMenus($locale)
+    {
         $nav = self::getNavigation($locale);
         foreach ($nav->getChildren() as $main) {
             $this->makeStandardMenus($main, $locale);
@@ -147,7 +154,8 @@ class Menu extends BaseMenu {
         });
     }
 
-    public function makeStandardMenus($item, $locale) {
+    public function makeStandardMenus($item, $locale)
+    {
         $this->make($locale . '_' . self::_STANDARD_PREFIX . '_' . $item->getName(), function ($menu) use ($item) {
             $this->makeStandardMenu($menu, $item);
         });
@@ -161,13 +169,15 @@ class Menu extends BaseMenu {
         }
     }
 
-    public function makeStandardMenu($menu, $item) {
+    public function makeStandardMenu($menu, $item)
+    {
         foreach ($item->getChildren() as $child) {
             $this->_addItem($menu, $child, 'isMenuDesktop');
         }
     }
 
-    protected function _addItem($menu, $item, $checkFunction) {
+    protected function _addItem($menu, $item, $checkFunction)
+    {
         $checkFunctionChildren = $checkFunction . 'Children';
         if (!$item->$checkFunction()) {
             return;
@@ -189,7 +199,8 @@ class Menu extends BaseMenu {
      * @param $menu Menu
      * @param $item Item
      */
-    public function makeMobileMenu($menu, $item) {
+    public function makeMobileMenu($menu, $item)
+    {
         foreach ($item->getChildren() as $child) {
             if (!$child->isMenuMobile()) {
                 continue;
@@ -209,7 +220,8 @@ class Menu extends BaseMenu {
      * @param $nav Item
      * @param $menu \Lavary\Menu\Item
      */
-    protected function _addToBreadcrumbs($nav, $menu) {
+    protected function _addToBreadcrumbs($nav, $menu)
+    {
         if ($nav->getTitle() && $nav->isBreadcrumbs()) {
             if (strpos($nav->getBreadcrumbHref(), '#') === 0) {
                 $parent = $menu->raw($nav->getTitle());
@@ -226,24 +238,40 @@ class Menu extends BaseMenu {
         }
     }
 
-    public function getSearchBreadcrumbs() {
-        $all = $this->get('breadcrumbs')->crumbMenu()->all();
-        $lastIndex = count($all) - 1;
-        $search_breadcrumbs = [];
-        foreach ($all as $i => $item) {
-            if ($i === 0 || $i === $lastIndex) {
-                continue;
+    public function getSearchBreadcrumbs()
+    {
+        try {
+            $all = $this->_getAllCrumbs();
+            $lastIndex = count($all) - 1;
+            $search_breadcrumbs = [];
+            foreach ($all as $i => $item) {
+                if ($i === 0 || $i === $lastIndex) {
+                    continue;
+                }
+                $search_breadcrumbs[] = ['title' => $item->title, 'url' => $item->url()];
             }
-            $search_breadcrumbs[] = ['title' => $item->title, 'url' => $item->url()];
+            return $search_breadcrumbs;
+        } catch (\Exception $e) {
+            return [];
+        }
+    }
+
+    protected function _getAllCrumbs()
+    {
+        $menu = $this->get('breadcrumbs');
+        if (null === $menu->active()) {
+            return [];
         }
-        return $search_breadcrumbs;
+        $all = $menu->crumbMenu()->all();
+        return $all;
     }
 
-    public function breadcrumbs() {
+    public function breadcrumbs()
+    {
         $res = '<div class="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList">';
         /** @var \Lavary\Menu\Item $item */
         $position = 0;
-        foreach ($this->get('breadcrumbs')->crumbMenu()->all() as $item) {
+        foreach ($this->_getAllCrumbs() as $item) {
             $active = "";
             if ($item->isActive) {
                 $active = ' active';
@@ -273,6 +301,7 @@ class Menu extends BaseMenu {
             $res .= '</a>';
             $res .= '</div>';
         }
+
         $res .= '</div>';
         return $res;
     }
@@ -280,14 +309,18 @@ class Menu extends BaseMenu {
     /**
      * @param Item $currentPage
      */
-    public function setCurrentPage(Item $currentPage): void {
+    public
+    function setCurrentPage(Item $currentPage): void
+    {
         $this->_currentPage = $currentPage;
     }
 
     /**
      * @return Item
      */
-    public function getCurrentPage(): Item {
+    public
+    function getCurrentPage(): Item
+    {
         return $this->_currentPage;
     }
 }