107 lines
2.6 KiB
PHP
Executable File
107 lines
2.6 KiB
PHP
Executable File
<?php
|
|
|
|
/**/
|
|
|
|
namespace Olegnax\MegaMenu\Block\Widget;
|
|
|
|
use Magento\Customer\Model\Context;
|
|
use Magento\Framework\Serialize\Serializer\Json;
|
|
use Magento\Store\Model\ScopeInterface;
|
|
use Magento\Widget\Block\BlockInterface;
|
|
use Olegnax\Core\Block\SimpleTemplate as coreTemplate;
|
|
|
|
class Megamenu extends coreTemplate implements BlockInterface
|
|
{
|
|
|
|
protected $_topMenu;
|
|
|
|
/**
|
|
* @var \Magento\Framework\App\Http\Context
|
|
*/
|
|
protected $httpContext;
|
|
|
|
/**
|
|
* Json Serializer Instance
|
|
*
|
|
* @var Json
|
|
*/
|
|
private $json;
|
|
|
|
public function __construct(
|
|
\Magento\Backend\Block\Template\Context $context, \Olegnax\MegaMenu\Block\Html\Megamenu $topMenu,
|
|
\Magento\Framework\App\Http\Context $httpContext, Json $json = null,
|
|
array $data = []
|
|
)
|
|
{
|
|
$this->_topMenu = $topMenu;
|
|
|
|
$this->httpContext = $httpContext;
|
|
$this->json = $json ?: $this->_loadObject(Json::class);
|
|
parent::__construct($context, $data);
|
|
}
|
|
|
|
public function getValueOption($path, $default = '')
|
|
{
|
|
if ($this->hasData($path)) {
|
|
$value = $this->getData($path);
|
|
if (is_null($value)) {
|
|
$value = '';
|
|
}
|
|
return $value;
|
|
}
|
|
$value = $this->getConfig($path);
|
|
if (is_null($value)) {
|
|
$value = $default;
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
public function getConfig($path, $storeCode = null)
|
|
{
|
|
$value = $this->_scopeConfig->getValue('ox_megamenu_settings/general/' . $path, ScopeInterface::SCOPE_STORE, $storeCode);
|
|
return $value;
|
|
}
|
|
|
|
public function getCacheKeyInfo($newval = [])
|
|
{
|
|
return array_merge([
|
|
'OLEGNAX_MEGAMENU_WIDGET',
|
|
$this->_storeManager->getStore()->getId(),
|
|
$this->_design->getDesignTheme()->getId(),
|
|
$this->httpContext->getValue(Context::CONTEXT_GROUP),
|
|
$this->json->serialize($this->getRequest()->getParams()),
|
|
$this->json->serialize($this->getData()),
|
|
$this->getUrl('*/*/*', ['_current' => true, '_query' => '']),
|
|
], parent::getCacheKeyInfo(), $newval);
|
|
}
|
|
|
|
public function getHtml($outermostClass = '', $childrenWrapClass = '', $limit = 0)
|
|
{
|
|
$this->_topMenu->setData('enable_megamenu', true);
|
|
$data = array_diff_key($this->getData(), ['type' => '', 'module_name' => '', 'cache_lifetime' => '', 'type_name' => '']);
|
|
foreach ($data as $key => $value) {
|
|
$this->_topMenu->setData($key, $value);
|
|
}
|
|
|
|
return $this->_topMenu->getHtml($outermostClass, $childrenWrapClass, $limit);
|
|
}
|
|
|
|
protected function _construct()
|
|
{
|
|
$this->addData([
|
|
'cache_lifetime' => 86400,
|
|
]);
|
|
if (!$this->hasData('template') && !$this->getTemplate()) {
|
|
$this->setTemplate('Olegnax_MegaMenu::widgetmenu.phtml');
|
|
}
|
|
parent::_construct();
|
|
}
|
|
|
|
protected function isEnabled()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
}
|