HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers14/coeveringmatrijzen.nl/app/Coevering/Menus/Menu.php
<?php


namespace Coevering\Menus;


use Coevering\Routes\RouteService;

class Menu
{
    protected $items;
    /**
     * @var
     */
    private $routeService;

    /**
     * @param RouteService $routeService
     */
    public function __construct(RouteService $routeService)
    {
        $this->routeService = $routeService;
    }

    public function getRouteByController($controller)
    {
        return $this->routeService->getByController($controller);
    }
    /**
     * @param $slug
     * @param $controller
     * @return bool
     */
    public function add($slug, $controller)
    {
        if( ! $route = $this->getRouteByController($controller))
            return false;

        $key = count($this->items);
        $this->items[$key]['slug'] = $slug;
        $this->items[$key]['label'] = \Lang::get('app/menus.' . $slug);
        $this->items[$key]['route'] = $route;

        return true;
    }

    /*
     * Create Main Menu
     */
    public function createMain()
    {
        $output = '';

        foreach($this->items as $item)
        {

            $checkActive = $item['route'];
            if($item['slug'] == 'gallery') $checkActive = 'nl/fotogalerie';
            if($item['slug'] == 'services') $checkActive = 'nl/diensten';
            if($item['slug'] == 'machinery') $checkActive = 'nl/machinepark';
            if($item['slug'] == 'products') $checkActive = 'nl/producten';

            // Check for active
            $active = false;
            if(\Str::startsWith( \Request::path(), $checkActive))
            {
                $active = ' class="active"';
            }

            // Add slash to route
            if($item['slug'] != 'home') $item['route'] = '/' . $item['route'];

            // Output list item
            $output .= '<li' . $active . '>';
            $output .= '<a href="' . $item['route'] . '" title="' . $item['label'] . '">' . $item['label'] . '</a>';
            if($active)
                $output .= '<div class="arrowHider"><div class="arrow"></div></div>';
            $output .= '</li>';
        }

        $this->items = [];

        return $output;
    }

    /*
     * Create submenu
     */
    public function createSub()
    {
        $output = '';
        foreach($this->items as $key => $item)
        {
            $active = false;
            $last = false;
            $classes = [];

            // Check for active
            if(\Request::path() == $item['route'])
            {
                $classes[] = 'active';
                $active = true;
            }

            // Check if first item
            if($key == 0)
                $classes[] = 'first';

            // Check if last item
            if($key == count($this->items)-1)
            {
                $classes[] = 'last';
                $last = true;
            }

            // Start output
            $output .= '<li';

            // Add classes
            if(count($classes) > 0)
            {
                $output .= ' class="';
                foreach($classes as $i => $class)
                {
                    if($i != 0) $output .= ' ';
                    $output .= $class;
                }
                $output .= '"';
            }


            $output .= '>';
            $output .= '<a href="/' . $item['route'] . '" title="' . $item['label'] . '" class="saveViewport">' . $item['label'] . '</a>';

            if( ! $last ) $output .= '<span class="line"></span>';
            if( $active ) $output .= '<span class="arrow"></span>';

            $output .= '</li>';
        }

        $this->items = [];

        return $output;
    }
}