File: D:/HostingSpaces/SBogers10/reiskick.komma.nl/app/Composers/SidebarMenuComposer.php
<?php namespace App\Composers;
use App\Buttons\Models\Button;
use App\WebsiteConfig\Model\WebsiteConfig;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Komma\KMS\ActionLog\Models\ActionLog;
use Komma\KMS\Menu\KmsMenuItem;
use Komma\KMS\Sites\Models\Site;
use Komma\KMS\Sites\SiteServiceInterface;
use Komma\KMS\Users\Models\KmsUser;
use Komma\KMS\Users\Models\KmsUserRole;
class SidebarMenuComposer
{
private SiteServiceInterface $siteService;
public function __construct()
{
$this->siteService = app(SiteServiceInterface::class);
}
public function compose($view)
{
$kmsMenu = collect();
$kmsMenu->push((new KmsMenuItem())
->setName(__('KMS::sidebarMenu.welcome'))
->setUrl(route('dashboard.index'))
->setModelSlug('dashboard'));
// If we have multiple site load get the siteMenus, else add the items directly
if(config('app.multipleSites')) $kmsMenu = $kmsMenu->merge($this->getSiteMenus());
else $kmsMenu = $kmsMenu->merge($this->getSiteSubItems($this->siteService->getSite()));
//Create regular menu items.
// $kmsMenu->push((new KmsMenuItem())
// ->setModelSlug('posts')
// ->setUrl(route('posts.index'))
// ->setName(__('KMS::sidebarMenu.posts')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('countries')
->setUrl(route('countries.index'))
->setName(__('KMS::sidebarMenu.countries')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('journeys')
->setUrl(route('journeys.index'))
->setName(__('KMS::sidebarMenu.journeys')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('must_dos')
->setUrl(route('must_dos.index'))
->setName(__('KMS::sidebarMenu.must_dos')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('to_dos')
->setUrl(route('to_dos.index'))
->setName(__('KMS::sidebarMenu.to_dos')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('overnights')
->setUrl(route('overnights.index'))
->setName(__('KMS::sidebarMenu.overnights')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('hotels')
->setUrl(route('hotels.index'))
->setName(__('KMS::sidebarMenu.hotels')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('articles')
->setUrl(route('articles.index'))
->setName(__('KMS::sidebarMenu.articles')));
// $kmsMenu->push((new KmsMenuItem())
// ->setModelSlug('instagram_highlights')
// ->setUrl(route('instagram_highlights.index'))
// ->setName(__('KMS::sidebarMenu.instagram_highlights')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('websiteconfig')
->setUrl(route('websiteconfig.index'))
->setName(__('KMS::sidebarMenu.websiteconfig')));
$kmsMenu->push((new KmsMenuItem())
->setModelSlug('sidebars')
->setUrl(route('sidebars.index'))
->setName(__('KMS::sidebarMenu.sidebars')));
$kmsMenu->push((new KmsMenuItem())
->setIsSeparator(true));
if(\auth()->user()->role == KmsUserRole::SuperAdmin) {
$kmsMenu->push(((new KmsMenuItem))
->setName(__('KMS::sidebarMenu.kms_users'))
->setUrl(route('kms_users.index'))
->setModelSlug('kms_users'));
}
// if (Auth::user() && Auth::user('kms')->can('editSites', KmsUser::class)) {
// $kmsMenu->push((new KmsMenuItem())->setName(__('KMS::sidebarMenu.sites'))
// ->setUrl(route('sites.index'))
// ->setModelSlug('sites'));
// }
// if (Auth::user() && Auth::user('kms')->can('viewLogs', ActionLog::class)) {
// $kmsMenu->push((new KmsMenuItem())->setName(__('KMS::actionlog.section.title'))
// ->setUrl(route('actionlog.index'))
// ->setModelSlug('actionlog'));
// }
$view->with('kmsMenu', $kmsMenu);
}
/**
* Get the site menus
*
* @return Collection
*/
private function getSiteMenus(): Collection
{
$sites = $this->siteService->getSites();
// Else we create a site menu for each site
$siteMenus = collect();
/** @var Site $site */
foreach ($sites as $site) {
if(!$site->exists) continue;
$siteMenus->push((new KmsMenuItem())
->setName($site->name)
->setSubItems($this->getSiteSubItems($site)));
}
return $siteMenus;
}
/**
* This will return the site specific items
*
* @param Site $site
* @return Collection
*/
private function getSiteSubItems(Site $site): Collection
{
$siteMenuItems = collect();
$siteMenuItems->push((new KmsMenuItem())
->setName(__('KMS::sidebarMenu.pages'))
->setUrl(route('pages.index', ['siteSlug' => $site->slug]))
->setModelSlug('pages')
->setSiteSlug($site->slug));
return $siteMenuItems;
}
}