72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php namespace Lovata\Shopaholic\Classes\Event;
|
|
|
|
use Lovata\Shopaholic\Classes\Helper\AllCategoriesMenuType;
|
|
use Lovata\Shopaholic\Classes\Helper\CatalogMenuType;
|
|
use Lovata\Shopaholic\Classes\Helper\CategoryMenuType;
|
|
|
|
/**
|
|
* Class ExtendMenuHandler
|
|
* @package Lovata\Shopaholic\Classes\Event
|
|
*
|
|
* @author Andrey Kharanenka, a.khoronenko@lovata.com, LOVATA Group
|
|
* @author Alvaro Cánepa, https://github.com/alvaro-canepa
|
|
*/
|
|
class ExtendMenuHandler
|
|
{
|
|
/**
|
|
* Add listeners
|
|
* @param \Illuminate\Events\Dispatcher $obEvent
|
|
*/
|
|
public function subscribe($obEvent)
|
|
{
|
|
/*
|
|
* Register menu items for the RainLab.Pages plugin
|
|
*/
|
|
$obEvent->listen('pages.menuitem.listTypes', function () {
|
|
|
|
$arResult = [
|
|
CatalogMenuType::MENU_TYPE => 'lovata.shopaholic::lang.menu.shop_catalog',
|
|
CategoryMenuType::MENU_TYPE => 'lovata.shopaholic::lang.menu.shop_category',
|
|
AllCategoriesMenuType::MENU_TYPE => 'lovata.shopaholic::lang.menu.all_shop_categories',
|
|
];
|
|
|
|
return $arResult;
|
|
});
|
|
|
|
$obEvent->listen('pages.menuitem.getTypeInfo', function ($sType) {
|
|
|
|
$obMenuType = $this->getMenuTypeObject($sType);
|
|
if (!empty($obMenuType)) {
|
|
return $obMenuType->getMenuTypeInfo();
|
|
}
|
|
});
|
|
|
|
$obEvent->listen('pages.menuitem.resolveItem', function ($sType, $obItem, $sURL) {
|
|
|
|
$obMenuType = $this->getMenuTypeObject($sType);
|
|
if (!empty($obMenuType)) {
|
|
return $obMenuType->resolveMenuItem($obItem, $sURL);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get new menu object by type value
|
|
* @param string $sType
|
|
* @return \Lovata\Shopaholic\Classes\Helper\CommonMenuType
|
|
*/
|
|
protected function getMenuTypeObject($sType)
|
|
{
|
|
switch ($sType) {
|
|
case CategoryMenuType::MENU_TYPE:
|
|
return new CategoryMenuType();
|
|
case CatalogMenuType::MENU_TYPE:
|
|
return new CatalogMenuType();
|
|
case AllCategoriesMenuType::MENU_TYPE:
|
|
return new AllCategoriesMenuType();
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
}
|