File: D:/HostingSpaces/SBogers10/rentman2019.komma.pro/app/Komma/Kms/Composers/SidebarMenuComposer.php
<?php
namespace App\Komma\Kms\Composers;
/**
* @author Komma <info@komma.pro>
* @copyright (c) 2012-2016, Komma
*/
use App\Komma\Kms\ActionLog\ActionLog;
use App\Komma\Shop\Bridges\SideBarShopMenuComposerBridge;
use App\Komma\SiteConfig\Models\SiteConfig;
use App\Komma\Sites\Models\Site;
use App\Komma\Sites\SiteServiceInterface;
use App\Komma\Users\Models\User;
class SidebarMenuComposer
{
/** @var SiteServiceInterface */
protected $siteService;
public function __construct()
{
$this->siteService = \App::make(SiteServiceInterface::class);
}
public function compose($view)
{
$viewData = $view->getData();
//$currentSectionSlug = $this->getCurrentSectionSlug();
$currentSectionSlug = isset($viewData['section']) ? $viewData['section']->getSlug() : $this->getCurrentSectionSlug();
$currentSectionSubSlug = $this->getCurrentSectionSubSlug();
//Generate the base menu structure
// $menuStructure = $this->getBaseItems($currentSectionSlug, $currentSectionSubSlug);
//Load all the available sites and the current
$sites = $this->siteService->getSites();
$site = $sites->first();
$currentSiteSlug = $this->siteService->getCurrentSite()->slug;
// $siteMenus = [];
//If there is only one, merge the siteSub items, so it is not a sub menu
// if ($sites->count() == 1) {
// $menuStructure = array_merge($menuStructure, $this->getSiteSubItems($sites->first(), $currentSiteSlug, $currentSectionSlug));
// } //If there are multiple sites, loop and ad these as an sub menu
// else {
// foreach ($sites as $site) {
// //We put all site items in a submenu for a site except for the default site.
// if($site->exists) {
// $siteMenus[] = [
// 'name' => $site->name,
// 'subItems' => $this->getSiteSubItems($site, $currentSiteSlug, $currentSectionSlug),
// 'active' => ($site->slug == $currentSiteSlug)
// ];
// }
// }
// }
// $menuStructure = array_merge($menuStructure, $siteMenus);
$menuStructure = [];
if (\Auth::user()->can('isSuperAdmin', User::class)) {
$menuStructure = array_merge([
[
'name' => trans('kms/sidebarMenu.users'),
'url' => route('users.index'),
'active' => ('users' == $currentSectionSlug),
],
[
'name' => trans('kms/sidebarMenu.sites'),
'url' => route('sites.index'),
'active' => ('sites' == $currentSectionSlug),
],
]);
}
$menuStructure = array_merge($menuStructure, [
[
'name' => trans('kms/sidebarMenu.announcements'),
'url' => route('announcements.index'),
'active' => ('announcements' == $currentSectionSlug),
],
[
'name' => trans('kms/sidebarMenu.pages'),
'url' => route('pages.index', ['siteSlug' => $site->slug]),
'active' => ('pages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.employees'),
'url' => route('employees.index'),
'active' => ('employees' == $currentSectionSlug),
],
[
'name' => trans('kms/sidebarMenu.pricing'),
'active' => in_array($currentSectionSlug, ['packages', 'pricinglabels', 'inventories', 'crews', 'pricingproducts']),
'subItems' => [
[
'name' => trans('kms/sidebarMenu.packages'),
'url' => route('packages.index', ['siteSlug' => $site->slug]),
'active' => ('packages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.inventory'),
'url' => route('inventories.index', ['siteSlug' => $site->slug]),
'active' => ('inventories' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.crew'),
'url' => route('crews.index', ['siteSlug' => $site->slug]),
'active' => ('crews' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.pricing_product'),
'url' => route('pricingproducts.index', ['siteSlug' => $site->slug]),
'active' => ('pricingproducts' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.pricinglabels'),
'url' => route('pricinglabels.index'),
'active' => ('pricinglabels' == $currentSectionSlug),
],
],
],
[
'name' => trans('kms/sidebarMenu.posts'),
'url' => route('posts.index'),
'active' => ('posts' == $currentSectionSlug),
],
[
'name' => trans('kms/sidebarMenu.trainings'),
'url' => route('trainings.index'),
'active' => ('trainings' == $currentSectionSlug),
],
[
'name' => trans('kms/sidebarMenu.updates'),
'url' => route('updates.index', ['siteSlug' => $site->slug]),
'active' => ('updates' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.integrations'),
'url' => route('integrations.index', ['siteSlug' => $site->slug]),
'active' => ('integrations' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.webinars'),
'active' => in_array($currentSectionSlug, ['webinars', 'webinarTabs']),
'subItems' => [
[
'name' => trans('kms/sidebarMenu.webinars'),
'url' => route('webinars.index', ['siteSlug' => $site->slug]),
'active' => ('webinars' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.webinar_tags'),
'url' => route('webinartags.index', ['siteSlug' => $site->slug]),
'active' => ('webinarTags' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
],
],
[
'name' => trans('kms/sidebarMenu.careersjobs'),
'url' => route('careersjobs.index', ['siteSlug' => $site->slug]),
'active' => ('careersjobs' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
// [
// 'name' => trans('kms/sidebarMenu.jobs'),
// 'url' => route('jobs.index', ['siteSlug' => $site->slug]),
// 'active' => ('jobs' == $currentSectionSlug && $site->slug == $currentSiteSlug),
// ],
[
'name' => trans('kms/sidebarMenu.customers'),
'active' => in_array($currentSectionSlug, ['customerstories', 'customerlogos']),
'subItems' => [
[
'name' => trans('kms/sidebarMenu.customerstories'),
'url' => route('customerstories.index', ['siteSlug' => $site->slug]),
'active' => ('customerstories' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.customerlogos'),
'url' => route('customerlogos.index', ['siteSlug' => $site->slug]),
'active' => ('customerlogos' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
],
],
[
'name' => trans('kms/sidebarMenu.products'),
'active' => in_array($currentSectionSlug, ['productgroups', 'products']),
'subItems' => [
[
'name' => trans('kms/sidebarMenu.products'),
'url' => route('products.index', ['siteSlug' => $site->slug]),
'active' => ('products' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.productGroups'),
'url' => route('productgroups.index'),
'active' => ('productgroups' == $currentSectionSlug),
],
],
],
[
'name' => trans('kms/sidebarMenu.solutions'),
'active' => in_array($currentSectionSlug, ['solutiongroups', 'solutions']),
'subItems' => [
[
'name' => trans('kms/sidebarMenu.solutions'),
'url' => route('solutions.index', ['siteSlug' => $site->slug]),
'active' => ('solutions' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
[
'name' => trans('kms/sidebarMenu.solutionGroups'),
'url' => route('solutiongroups.index'),
'active' => ('solutiongroups' == $currentSectionSlug),
],
],
],
[
'name' => 'Files',
'url' => route('files.index'),
'active' => ('file' == $currentSectionSlug),
],
]);
if (\Auth::user()->can('index', SiteConfig::class)) {
$menuStructure = array_merge($menuStructure, [
[
'name' => trans('kms/sidebarMenu.siteConfig'),
'url' => route('siteconfig.index'),
'active' => ('siteconfig' == $currentSectionSlug),
],
]);
}
$view->with('menuStructure', $menuStructure);
}
protected function getCurrentSectionSlug()
{
$route = explode('/', \Route::current()->uri());
if (\Route::current()->parameter('site')) {
return $route[2];
}
return isset($route[1]) ? $route[1] : null;
}
protected function getCurrentSectionSubSlug()
{
$route = explode('/', \Route::current()->uri());
if (\Route::current()->parameter('site')) {
if (isset($route[3])) {
return $route[3];
}
}
return isset($route[2]) ? $route[2] : null;
}
// =============================================== To keep it simple we created the getMenuStructure
// =============================================== So the ones below shouldn't be used...
/**
* This functions will return the basic menu items
*
* @param $currentSectionSlug
* @param $currentSectionSubSlug
* @return array
*/
protected function getBaseItems($currentSectionSlug, $currentSectionSubSlug)
{
$items = [];
// $items[] = [
// 'name' => \Lang::get('kms/SidebarMenu.dashboard'),
//// 'url' => route('kms.dashboard.index'),
// 'url' => route('dashboard.index'),
// 'active' => ('' == $currentSectionSlug)
// ];
$items[] = [
'name' => trans('kms/sidebarMenu.users'),
'url' => route('users.index'),
'active' => ('users' == $currentSectionSlug),
];
$items[] = [
'name' => trans('kms/sidebarMenu.posts'),
'url' => route('posts.index'),
'active' => ('posts' == $currentSectionSlug),
];
$items[] = [
'name' => trans('kms/sidebarMenu.productGroups'),
'url' => route('productgroups.index'),
'active' => ('productgroups' == $currentSectionSlug),
];
// $items[] = [
// 'name' => __('kms/transfer.transfer'),
// 'url' => route('transfer.index'),
// 'active' => ('transfer' == $currentSectionSlug)
// ];
// if (\Auth::user()->can('viewLogs', ActionLog::class)) {
// $items[] = [
// 'name' => __('kms/actionlog.section.title'),
// 'url' => route('actionlog.index'),
// 'active' => ('actionlog' == $currentSectionSlug)
// ];
// }
// Allow site(s) editing only for SuperAdmin
// if (\Auth::user()->can('editSites', User::class)) {
// $items[] = [
// 'name' => trans('kms/sidebarMenu.sites'),
// 'url' => route('sites.index'),
// 'active' => ('sites' == $currentSectionSlug)
// ];
// }
/**
* Doesn't mean that if the environment setting shop is true the shop is installed
* To install the shop, go to:
* app / Komma / Shop / Readme.txt
*/
// if(\Config::get('app.isShop')){
// $items = array_merge($items, SideBarShopMenuComposerBridge::get($currentSectionSlug));
// }
return $items;
}
/**
* This will return the site specific items
*
* @param $site
* @param $currentSiteSlug
* @param $currentSectionSlug
* @return array
*/
protected function getSiteSubItems(Site $site, $currentSiteSlug, $currentSectionSlug)
{
$items = [
[
'name' => trans('kms/sidebarMenu.pages'),
'url' => route('pages.index', ['siteSlug' => $site->slug]),
'active' => ('pages' == $currentSectionSlug && $site->slug == $currentSiteSlug),
],
];
return $items;
}
}