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;
}
}