]> _ Git - cubist_cms-back.git/commitdiff
wip #2974
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 30 Aug 2019 18:02:39 +0000 (20:02 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 30 Aug 2019 18:02:39 +0000 (20:02 +0200)
src/app/Magic/Menu/Item.php
src/app/Magic/Menu/Menu.php
src/app/Magic/Menu/PageItem.php
src/app/Magic/Menu/VirtualItem.php
src/app/Middleware/EmailObfuscate.php

index a9e090c3c46678437ac4c78bf402fa799756378e..de029a2914f0562a3b8551ee669bd38eee37119e 100644 (file)
@@ -365,6 +365,11 @@ class Item
         $this->_href = $href;
     }
 
+    public function isNavigable()
+    {
+        return $this->_href != '#';
+    }
+
     /**
      * @return Item[]
      */
index eb0b0fa8e3d739143b570e841aa2a579bfdc3cb2..417375df017cec66ac2694148fcdb8bbf1b8f689 100644 (file)
@@ -130,6 +130,9 @@ class Menu extends BaseMenu
         $this->make(self::_STANDARD_PREFIX . '_' . $item->getName(), function ($menu) use ($item) {
             $this->makeStandardMenu($menu, $item);
         });
+        $this->make('mobile_' . $item->getName(), function ($menu) use ($item) {
+            $this->makeMobileMenu($menu, $item);
+        });
         foreach ($this->_registeredMenuMakers as $name => $registeredMenuMaker) {
             $this->make($name . '_' . $item->getName(), function ($menu) use ($item, $registeredMenuMaker) {
                 call_user_func($registeredMenuMaker, $menu, $item);
@@ -150,6 +153,25 @@ class Menu extends BaseMenu
         }
     }
 
+    /**
+     * @param $menu Menu
+     * @param $item Item
+     */
+    public function makeMobileMenu($menu, $item, $depth = 3)
+    {
+        if ($depth == 0) {
+            return;
+        }
+        foreach ($item->getChildren() as $child) {
+            if ($child->isNavigable()) {
+                $parent = $menu->add($child->getTitle(), $child->getHref());
+            } else {
+                $parent = $menu->raw('<span>'.$child->getTitle().'</span>');
+            }
+            $this->makeMobileMenu($parent, $child, $depth - 1);
+        }
+    }
+
     /**
      * @param $nav Item
      * @param $menu \Lavary\Menu\Item
index 7fe67d3a71fc6445bf2d31e53f6acb278e27d66d..dcebaa9ad14fe358b7aafe25d598cae1f1828f61 100644 (file)
@@ -73,6 +73,18 @@ class PageItem extends Item
         return $this->_template;
     }
 
+    public function isNavigable()
+    {
+        $template = $this->getTemplate();
+        if (!$template) {
+            return true;
+        }
+        if ($template == 'first_redirection' || $template == 'internal_redirection' || $template == 'redirection' || $this->isVirtual()) {
+            return false;
+        }
+        return parent::isNavigable();
+    }
+
     public function getHref()
     {
         $template = $this->getTemplate();
index e558982e1dbeccda8f6f3a87174ed4c71313406b..70960325e1df895ef9a97eedaf991cdada1be4d9 100644 (file)
@@ -8,4 +8,9 @@ class VirtualItem extends Item
 {
     protected $_href = '#';
     protected $_classes=['nav-virtual'];
+
+    public function isNavigable()
+    {
+        return false;
+    }
 }
index 905202ee511224fbdca34f16e0a5afadc38cb721..fa74db5ee8cf0b39fe81eb087384226c63edecc7 100644 (file)
@@ -14,9 +14,6 @@ class EmailObfuscate
     {
 
         $response = $next($request);
-        if (strpos($request->getPathInfo(), '/admin/') === 0) {
-            return $response;
-        }
 
         // Apply logic differently based on the nature of $response.
         if ($response instanceof Renderable) {