From afc5122afafe8ad3c97c4f1b5e263161a325fbca Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 3 Oct 2023 14:11:20 +0200 Subject: [PATCH] wip #6278 @0.25 --- src/app/Magic/Menu/Menu.php | 83 ++++++++++++++++++++++++++----------- 1 file changed, 58 insertions(+), 25 deletions(-) diff --git a/src/app/Magic/Menu/Menu.php b/src/app/Magic/Menu/Menu.php index f692162..5e0ede9 100644 --- a/src/app/Magic/Menu/Menu.php +++ b/src/app/Magic/Menu/Menu.php @@ -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 = ''; } + $res .= ''; 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; } } -- 2.39.5