5304 lines
236 KiB
PHP
5304 lines
236 KiB
PHP
<?php
|
|
/**
|
|
* 2007-2016 IQIT-COMMERCE.COM
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* @author IQIT-COMMERCE.COM <support@iqit-commerce.com>
|
|
* @copyright 2007-2016 IQIT-COMMERCE.COM
|
|
* @license GNU General Public License version 2
|
|
*
|
|
* You can not resell or redistribute this software.
|
|
*/
|
|
|
|
if (!defined('_PS_VERSION_')) {
|
|
exit;
|
|
}
|
|
|
|
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
|
|
use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever;
|
|
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
|
|
use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter;
|
|
use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever;
|
|
|
|
include_once _PS_MODULE_DIR_ . 'iqitmegamenu/models/IqitMenuTab.php';
|
|
include_once _PS_MODULE_DIR_ . 'iqitmegamenu/models/IqitMenuHtml.php';
|
|
include_once _PS_MODULE_DIR_ . 'iqitmegamenu/models/IqitMenuLinks.php';
|
|
|
|
|
|
class IqitMegaMenu extends Module implements WidgetInterface
|
|
{
|
|
protected $config_form = false;
|
|
private $_html = '';
|
|
private $user_groups;
|
|
private $hor_sm_order;
|
|
|
|
private $pattern = '/^([A-Z_]*)[0-9]+/';
|
|
private $spacer_size = '5';
|
|
|
|
public function __construct()
|
|
{
|
|
$this->name = 'iqitmegamenu';
|
|
$this->tab = 'front_office_features';
|
|
$this->version = '1.2.2';
|
|
$this->author = 'IQIT-COMMERCE.COM';
|
|
$this->need_instance = 0;
|
|
$this->module_key = '54999588debd277b5118f60eead75dfe';
|
|
$this->author_address = '0xE5604A55C613E7b54C5Ef0C758ea80CDdA6F15Ce';
|
|
$this->iqitdevmode = false;
|
|
$this->iqitTheme = false;
|
|
$this->bootstrap = true;
|
|
|
|
parent::__construct();
|
|
|
|
$this->displayName = $this->l('IQITMEGAMENU - most powerfull navigation for Prestashop');
|
|
$this->description = $this->l('With drag and drop submenu creator');
|
|
|
|
$this->ps_versions_compliancy = array('min' => '1.7', 'max' => _PS_VERSION_);
|
|
|
|
$this->config_name = 'iqitmegamenu';
|
|
$this->defaults_mobile = array(
|
|
'mobile_menu' => 'HOME0,CAT3,CAT26',
|
|
'mobile_menu_style' => 0,
|
|
'mobile_menu_depth' => 3,
|
|
'hor_mb_bg' => '#000000',
|
|
'hor_mb_txt' => '#ffffff',
|
|
'hor_mb_border' => '1;1;#cecece',
|
|
'hor_mb_c_bg' => '#ffffff',
|
|
'hor_mb_csl_bg' => '#f8f8f8',
|
|
'hor_mb_c_border' => '1;1;#cecece',
|
|
'hor_mb_c_borderi' => '1;1;#cecece',
|
|
'hor_mb_c_txt' => '#777777',
|
|
'hor_mb_c_txth' => '#777777',
|
|
'hor_mb_c_lhbg' => '#e5e5e5',
|
|
'hor_mb_c_plus' => '#777777',
|
|
);
|
|
$this->defaults_horizontal = array(
|
|
'hor_hook' => 0,
|
|
'hor_width' => 1,
|
|
'hor_sw_width' => 1,
|
|
'hor_s_width' => 1,
|
|
'hor_sticky' => 1,
|
|
'hor_bootstrap' => 0,
|
|
'hor_s_transparent' => 1,
|
|
'hor_animation' => 2,
|
|
'hor_center' => 0,
|
|
'hor_arrow' => 1,
|
|
'hor_icon_position' => 0,
|
|
'hor_maxwidth' => 400,
|
|
'hor_s_arrow' => 1,
|
|
'hor_bg_color' => '#000000',
|
|
'hor_bg_image' => '',
|
|
'hor_bg_repeat' => 0,
|
|
'hor_border_top' => '1;0;#cecece',
|
|
'hor_border_bottom' => '1;0;#cecece',
|
|
'hor_border_sides' => '1;0;#cecece',
|
|
'hor_border_inner' => '1;0;#cecece',
|
|
'hor_link_txt_color' => '#ffffff',
|
|
'hor_link_htxt_color' => '#000000',
|
|
'hor_link_hbg_color' => '#fafafa',
|
|
'hor_legend_txt_color' => '#ffffff',
|
|
'hor_legend_bg_color' => '#CA5058',
|
|
'hor_lineheight' => 45,
|
|
'hor_link_padding' => 14,
|
|
'hor_link_paddingb' => 20,
|
|
'hor_link_bold' => 0,
|
|
'hor_link_italics' => 0,
|
|
'hor_link_uppercase' => 1,
|
|
'hor_link_fontsize' => 14,
|
|
'hor_link_fontsizeb' => 14,
|
|
'hor_icon_fontsize' => 14,
|
|
|
|
'hor_sm_order' => 0,
|
|
'hor_sm_bg_color' => '#ffffff',
|
|
'hor_sm_bg_image' => '',
|
|
'hor_sm_bg_repeat' => 0,
|
|
'hor_sm_boxshadow' => 1,
|
|
'hor_sm_border_top' => '1;1;#cecece',
|
|
'hor_sm_border_bottom' => '1;1;#cecece',
|
|
'hor_sm_border_sides' => '1;1;#cecece',
|
|
'hor_sm_border_inner' => '1;1;#cecece',
|
|
'hor_sm_tab_txt_color' => '#777777',
|
|
'hor_sm_tab_bg_color' => '#F9F9F9',
|
|
'hor_sm_tab_htxt_color' => '#777777',
|
|
'hor_sm_tab_hbg_color' => '#ffffff',
|
|
'hor_titlep_fontsize' => 13,
|
|
'hor_titlep_color' => '#777777',
|
|
'hor_titlep_colorh' => '#333333',
|
|
'hor_titlep_uppercase' => 1,
|
|
'hor_titlep_bold' => 1,
|
|
'hor_titlep_border' => 1,
|
|
'hor_titlep_borders' => '1;1;#cecece',
|
|
'hor_subtxt_fontsize' => 12,
|
|
'hor_subtxt_color' => '#777777',
|
|
'hor_subtxt_colorh' => '#333333',
|
|
'hor_subtxt_arrow' => 1,
|
|
'hor_subtxt_level' => 1,
|
|
'hor_custom_css' => '',
|
|
);
|
|
$this->defaults_vertical = array(
|
|
'ver_position' => 0,
|
|
'ver_animation' => 2,
|
|
'ver_arrow' => 1,
|
|
'ver_s_arrow' => 1,
|
|
'ver_boxshadow' => 1,
|
|
'ver_title_bg' => '#000000',
|
|
'ver_title_bgh' => '#282828',
|
|
'ver_title_txt' => '#ffffff',
|
|
'ver_title_txth' => '#ffffff',
|
|
|
|
'ver_title_size' => 14,
|
|
'ver_title_height' => 45,
|
|
'ver_title_bold' => 0,
|
|
'ver_title_uppercase' => 1,
|
|
|
|
'ver_bg_color' => 'transparent',
|
|
'ver_bg_image' => '',
|
|
'ver_bg_repeat' => 0,
|
|
'ver_border_top' => '1;0;#cecece',
|
|
'ver_border_bottom' => '1;1;#cecece',
|
|
'ver_border_sides' => '1;1;#cecece',
|
|
'ver_border_inner' => '1;1;#cecece',
|
|
'ver_link_txt_color' => '#777777',
|
|
'ver_link_htxt_color' => '#000000',
|
|
'ver_link_hbg_color' => '#fafafa',
|
|
'ver_legend_txt_color' => '#ffffff',
|
|
'ver_legend_bg_color' => '#CA5058',
|
|
'ver_link_padding' => 20,
|
|
'ver_link_bold' => 0,
|
|
'ver_link_italics' => 0,
|
|
'ver_link_uppercase' => 1,
|
|
'ver_link_fontsize' => 14,
|
|
'ver_icon_fontsize' => 14,
|
|
);
|
|
}
|
|
|
|
public function install()
|
|
{
|
|
if (parent::install() &&
|
|
$this->registerHook('header') &&
|
|
$this->registerHook('displayNavFullWidth') &&
|
|
$this->registerHook('displayIqitMenu') &&
|
|
$this->registerHook('displayLeftColumn') &&
|
|
$this->registerHook('displayLeftColumnProduct') &&
|
|
$this->registerHook('actionObjectCategoryUpdateAfter') &&
|
|
$this->registerHook('actionObjectCategoryDeleteAfter') &&
|
|
$this->registerHook('actionObjectCategoryAddAfter') &&
|
|
$this->registerHook('actionObjectCmsUpdateAfter') &&
|
|
$this->registerHook('actionObjectCmsDeleteAfter') &&
|
|
$this->registerHook('actionObjectCmsAddAfter') &&
|
|
$this->registerHook('actionObjectSupplierUpdateAfter') &&
|
|
$this->registerHook('actionObjectSupplierDeleteAfter') &&
|
|
$this->registerHook('actionObjectSupplierAddAfter') &&
|
|
$this->registerHook('actionObjectManufacturerUpdateAfter') &&
|
|
$this->registerHook('actionObjectManufacturerDeleteAfter') &&
|
|
$this->registerHook('actionObjectManufacturerAddAfter') &&
|
|
$this->registerHook('actionObjectProductUpdateAfter') &&
|
|
$this->registerHook('actionObjectProductDeleteAfter') &&
|
|
$this->registerHook('actionObjectProductAddAfter') &&
|
|
$this->registerHook('categoryUpdate') &&
|
|
$this->registerHook('actionShopDataDuplication') &&
|
|
$this->createTables()) {
|
|
$this->installSamples();
|
|
$this->setDefaults();
|
|
$this->generateCss();
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function uninstall()
|
|
{
|
|
foreach ($this->defaults_mobile as $default => $value) {
|
|
Configuration::deleteByName($this->config_name . '_' . $default);
|
|
}
|
|
foreach ($this->defaults_horizontal as $default => $value) {
|
|
Configuration::deleteByName($this->config_name . '_' . $default);
|
|
}
|
|
foreach ($this->defaults_vertical as $default => $value) {
|
|
Configuration::deleteByName($this->config_name . '_' . $default);
|
|
}
|
|
return parent::uninstall() && $this->deleteTables();
|
|
}
|
|
|
|
protected function createTables()
|
|
{
|
|
/* tabs */
|
|
$res = (bool) Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_tabs_shop` (
|
|
`id_tab` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`id_shop` int(10) unsigned NOT NULL,
|
|
PRIMARY KEY (`id_tab`, `id_shop`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* tabs configuration */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_tabs` (
|
|
`id_tab` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`menu_type` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`active` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`active_label` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`position` int(10) unsigned NOT NULL DEFAULT \'0\',
|
|
`url_type` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`id_url` varchar(64) NULL,
|
|
`icon_type` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`icon_class` varchar(64) NULL,
|
|
`icon` varchar(255) NULL,
|
|
`legend_icon` varchar(64) NULL,
|
|
`new_window` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`float` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`bg_color` varchar(64) NULL,
|
|
`txt_color` varchar(64) NULL,
|
|
`h_bg_color` varchar(64) NULL,
|
|
`h_txt_color` varchar(64) NULL,
|
|
`labelbg_color` varchar(64) NULL,
|
|
`labeltxt_color` varchar(64) NULL,
|
|
`submenu_content` text NULL,
|
|
`submenu_type` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`submenu_width` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
|
|
`submenu_bg_color` varchar(64) NULL,
|
|
`submenu_image` varchar(255) NULL,
|
|
`submenu_repeat` tinyint(1) unsigned NULL DEFAULT \'0\',
|
|
`submenu_bg_position` tinyint(1) unsigned NULL DEFAULT \'0\',
|
|
`submenu_link_color` varchar(64) NULL,
|
|
`submenu_hover_color` varchar(64) NULL,
|
|
`submenu_title_color` varchar(64) NULL,
|
|
`submenu_title_colorh` varchar(64) NULL,
|
|
`submenu_titleb_color` varchar(64) NULL,
|
|
`submenu_border_t` varchar(64) NULL,
|
|
`submenu_border_r` varchar(64) NULL,
|
|
`submenu_border_b` varchar(64) NULL,
|
|
`submenu_border_l` varchar(64) NULL,
|
|
`submenu_border_i` varchar(64) NULL,
|
|
`group_access` TEXT NOT NULL,
|
|
PRIMARY KEY (`id_tab`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* tabs lang configuration */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_tabs_lang` (
|
|
`id_tab` int(10) unsigned NOT NULL,
|
|
`id_lang` int(10) unsigned NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`label` varchar(255) NULL,
|
|
`url` varchar(255) NULL,
|
|
PRIMARY KEY (`id_tab`,`id_lang`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* custom links */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmenulinks` (
|
|
`id_iqitmenulinks` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`id_shop` INT(11) UNSIGNED NOT NULL,
|
|
`new_window` TINYINT( 1 ) NOT NULL,
|
|
INDEX (`id_shop`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* custom links lang */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmenulinks_lang` (
|
|
`id_iqitmenulinks` INT(11) UNSIGNED NOT NULL,
|
|
`id_lang` INT(11) UNSIGNED NOT NULL,
|
|
`id_shop` INT(11) UNSIGNED NOT NULL,
|
|
`label` VARCHAR( 128 ) NOT NULL ,
|
|
`link` VARCHAR( 128 ) NOT NULL ,
|
|
INDEX ( `id_iqitmenulinks` , `id_lang`, `id_shop`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* custom html */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_html` (
|
|
`id_html` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
`id_shop` INT(11) UNSIGNED NOT NULL,
|
|
INDEX (`id_html`, `id_shop`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_htmlc` (
|
|
`id_html` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
|
`title` varchar(255) NOT NULL ,
|
|
PRIMARY KEY (`id_html`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
/* custom html lang */
|
|
$res &= Db::getInstance()->execute('
|
|
CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_htmlc_lang` (
|
|
`id_html` INT(11) UNSIGNED NOT NULL,
|
|
`id_lang` INT(11) UNSIGNED NOT NULL,
|
|
`id_shop` INT(11) UNSIGNED NOT NULL,
|
|
`html` text NULL,
|
|
INDEX ( `id_html` , `id_lang`, `id_shop`)
|
|
) ENGINE=' . _MYSQL_ENGINE_ . ' DEFAULT CHARSET=UTF8;
|
|
');
|
|
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* deletes tables
|
|
*/
|
|
protected function deleteTables()
|
|
{
|
|
return Db::getInstance()->execute('
|
|
DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'iqitmegamenu_tabs_shop`, `' . _DB_PREFIX_ . 'iqitmegamenu_tabs`, `' . _DB_PREFIX_ . 'iqitmegamenu_tabs_lang`, `' . _DB_PREFIX_ . 'iqitmenulinks`, `' . _DB_PREFIX_ . 'iqitmenulinks_lang`, `' . _DB_PREFIX_ . 'iqitmegamenu_html`, `' . _DB_PREFIX_ . 'iqitmegamenu_htmlc`, `' . _DB_PREFIX_ . 'iqitmegamenu_htmlc_lang`;
|
|
');
|
|
}
|
|
|
|
public function setDefaults()
|
|
{
|
|
foreach ($this->defaults_mobile as $default => $value) {
|
|
Configuration::updateValue($this->config_name . '_' . $default, $value);
|
|
}
|
|
foreach ($this->defaults_horizontal as $default => $value) {
|
|
Configuration::updateValue($this->config_name . '_' . $default, $value);
|
|
}
|
|
foreach ($this->defaults_vertical as $default => $value) {
|
|
Configuration::updateValue($this->config_name . '_' . $default, $value);
|
|
}
|
|
}
|
|
|
|
public function getContent()
|
|
{
|
|
if (Tools::getValue('controller') != 'AdminModules' && Tools::getValue('configure') != $this->name) {
|
|
return;
|
|
}
|
|
if (Shop::getContext() == Shop::CONTEXT_GROUP || Shop::getContext() == Shop::CONTEXT_ALL) {
|
|
return $this->getWarningMultishopHtml();
|
|
}
|
|
$this->context->controller->addJqueryUI('ui.sortable');
|
|
$this->context->controller->addJS($this->_path . 'views/js/jquery.auto-complete.js');
|
|
$this->context->controller->addJS($this->_path . 'views/js/back.js');
|
|
$this->context->controller->addCSS($this->_path . 'views/css/back.css');
|
|
$this->context->controller->addCSS($this->_path .'/views/css/font-awesome.min.css');
|
|
$this->context->controller->addJS($this->_path . 'views/js/fontawesome-iconpicker.min.js');
|
|
$this->context->controller->addCSS($this->_path . 'views/css/fontawesome-iconpicker.min.css');
|
|
|
|
Media::addJsDef(array('iqitsearch_url' => $this->context->link->getAdminLink('AdminModules', true) . '&configure=' . $this->name));
|
|
|
|
$languages = $this->context->controller->getLanguages();
|
|
$default_language = (int) Configuration::get('PS_LANG_DEFAULT');
|
|
|
|
$labels = Tools::getValue('label') ? array_filter(Tools::getValue('label'), 'strlen') : array();
|
|
$links_label = Tools::getValue('link') ? array_filter(Tools::getValue('link'), 'strlen') : array();
|
|
|
|
if (Tools::isSubmit('addTab') || (Tools::isSubmit('id_tab') && !Tools::isSubmit('submitAddTab') && IqitMenuTab::tabExists((int) Tools::getValue('id_tab')))) {
|
|
return $this->_html .= $this->renderAddForm();
|
|
} elseif (Tools::isSubmit('submitAddTab') || Tools::isSubmit('delete_id_tab') || Tools::isSubmit('duplicateTabC')) {
|
|
if (!Tools::isSubmit('back_to_configuration')) {
|
|
if ($this->_postValidation()) {
|
|
$this->_postProcess();
|
|
}
|
|
}
|
|
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('addCustomHtml') || (Tools::isSubmit('id_html') && !Tools::isSubmit('submitAddHtml') && IqitMenuHtml::htmlExists((int) Tools::getValue('id_html')))) {
|
|
return $this->_html .= $this->renderAddHtmlForm();
|
|
} elseif (Tools::isSubmit('submitAddHtml') || Tools::isSubmit('delete_id_html')) {
|
|
if (!Tools::isSubmit('back_to_configuration')) {
|
|
if ($this->_postValidationHtml()) {
|
|
$this->_postProcessHtml();
|
|
}
|
|
}
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('exportConfiguration')) {
|
|
$var = array();
|
|
|
|
foreach ($this->defaults_horizontal as $default => $value) {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
foreach ($this->defaults_vertical as $default => $value) {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
foreach ($this->defaults_mobile as $default => $value) {
|
|
if ($default == 'mobile_menu') {
|
|
continue;
|
|
} else {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
}
|
|
|
|
$file_name = 'iqitmegamenu_config_' . time() . '.csv';
|
|
$fd = fopen($this->getLocalPath() . $file_name, 'w+');
|
|
file_put_contents($this->getLocalPath() . 'export/' . $file_name, print_r(serialize($var), true));
|
|
fclose($fd);
|
|
Tools::redirect(_PS_BASE_URL_ . __PS_BASE_URI__ . 'modules/' . $this->name . '/export/' . $file_name);
|
|
} elseif (Tools::isSubmit('importConfiguration')) {
|
|
if (isset($_FILES['uploadConfig']) && isset($_FILES['uploadConfig']['tmp_name'])) {
|
|
$str = Tools::file_get_contents($_FILES['uploadConfig']['tmp_name']);
|
|
$arr = unserialize($str);
|
|
foreach ($arr as $default => $value) {
|
|
Configuration::updateValue($this->config_name . '_' . $default, $value);
|
|
}
|
|
$this->generateCss();
|
|
$this->_html .= $this->displayConfirmation($this->l('Configuration imported'));
|
|
} else {
|
|
$this->_html .= $this->displayError($this->l('No config file'));
|
|
}
|
|
} elseif (Tools::isSubmit('exportTabs')) {
|
|
$var = IqitMenuTab::getAllShopTabs();
|
|
|
|
$file_name = 'iqitmegamenu_tabs_' . time() . '.csv';
|
|
$fd = fopen($this->getLocalPath() . $file_name, 'w+');
|
|
file_put_contents($this->getLocalPath() . 'export/' . $file_name, print_r(serialize($var), true));
|
|
fclose($fd);
|
|
Tools::redirect(_PS_BASE_URL_ . __PS_BASE_URI__ . 'modules/' . $this->name . '/export/' . $file_name);
|
|
} elseif (Tools::isSubmit('importTabs')) {
|
|
if (isset($_FILES['uploadTabs']) && isset($_FILES['uploadTabs']['tmp_name'])) {
|
|
$str = Tools::file_get_contents($_FILES['uploadTabs']['tmp_name']);
|
|
$arr = unserialize($str);
|
|
|
|
foreach ($arr as $id_tab => $tab) {
|
|
if (Validate::isLoadedObject($tab)) {
|
|
$tab->id_shop = (int)Context::getContext()->shop->id;
|
|
$tab->id_shop_list = (int)Context::getContext()->shop->id;
|
|
$tab->add();
|
|
}
|
|
}
|
|
|
|
$this->_html .= $this->displayConfirmation($this->l('Tabs imported'));
|
|
} else {
|
|
$this->_html .= $this->displayError($this->l('No tabs data file'));
|
|
}
|
|
} elseif (Tools::isSubmit('submitHorizonalMenuConfig')) {
|
|
foreach ($this->defaults_horizontal as $default => $value) {
|
|
if ($default == 'hor_search_border' || $default == 'hor_titlep_borders' || $default == 'hor_border_top' || $default == 'hor_border_bottom' || $default == 'hor_border_sides' || $default == 'hor_border_inner' || $default == 'hor_sm_border_top' || $default == 'hor_sm_border_bottom' || $default == 'hor_sm_border_sides' || $default == 'hor_sm_border_inner') {
|
|
Configuration::updateValue($this->config_name . '_' . $default, Tools::getValue($default . '_width') . ';' . Tools::getValue($default . '_type') . ';' . Tools::getValue($default . '_color'));
|
|
} elseif ($default == 'hor_custom_css') {
|
|
if (Tools::getIsset($default)) {
|
|
Configuration::updateValue($this->config_name . '_' . $default, Tools::getValue($default));
|
|
}
|
|
} else {
|
|
Configuration::updateValue($this->config_name . '_' . $default, (Tools::getValue($default)));
|
|
}
|
|
}
|
|
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('submitVerticalMenuConfig')) {
|
|
foreach ($this->defaults_vertical as $default => $value) {
|
|
if ($default == 'ver_border_top' || $default == 'ver_border_bottom' || $default == 'ver_border_sides' || $default == 'ver_border_inner') {
|
|
Configuration::updateValue($this->config_name . '_' . $default, Tools::getValue($default . '_width') . ';' . Tools::getValue($default . '_type') . ';' . Tools::getValue($default . '_color'));
|
|
} else {
|
|
Configuration::updateValue($this->config_name . '_' . $default, (Tools::getValue($default)));
|
|
}
|
|
}
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('submitMobileMenu')) {
|
|
$errors_update_shops = array();
|
|
$items = Tools::getValue('items');
|
|
$shops = Shop::getContextListShopID();
|
|
foreach ($shops as $shop_id) {
|
|
$shop_group_id = Shop::getGroupFromShop($shop_id);
|
|
$updated = true;
|
|
|
|
if (count($shops) == 1) {
|
|
if (is_array($items) && count($items)) {
|
|
$updated = Configuration::updateValue($this->config_name . '_mobile_menu', (string) implode(',', $items), false, (int) $shop_group_id, (int) $shop_id);
|
|
} else {
|
|
$updated = Configuration::updateValue($this->config_name . '_mobile_menu', '', false, (int) $shop_group_id, (int) $shop_id);
|
|
}
|
|
}
|
|
|
|
if (!$updated) {
|
|
$shop = new Shop($shop_id);
|
|
$errors_update_shops[] = $shop->name;
|
|
}
|
|
}
|
|
foreach ($this->defaults_mobile as $default => $value) {
|
|
if ($default == 'hor_mb_border' || $default == 'hor_mb_c_border' || $default == 'hor_mb_c_borderi') {
|
|
Configuration::updateValue($this->config_name . '_' . $default, Tools::getValue($default . '_width') . ';' . Tools::getValue($default . '_type') . ';' . Tools::getValue($default . '_color'));
|
|
} elseif ($default == 'mobile_menu') {
|
|
continue;
|
|
} else {
|
|
Configuration::updateValue($this->config_name . '_' . $default, (Tools::getValue($default)));
|
|
}
|
|
}
|
|
|
|
if (!count($errors_update_shops)) {
|
|
$this->_html .= $this->displayConfirmation($this->l('The settings have been updated.'));
|
|
} else {
|
|
$this->_html .= $this->displayError(sprintf($this->l('Unable to update settings for the following shop(s): %s'), implode(', ', $errors_update_shops)));
|
|
}
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('submitBlocktopmenuLinks') || (Tools::isSubmit('updateiqitmenulinks') && Tools::getValue('updatelink'))) {
|
|
$errors_add_link = array();
|
|
|
|
foreach ($languages as $key => $val) {
|
|
$links_label[$val['id_lang']] = Tools::getValue('link_' . (int) $val['id_lang']);
|
|
$labels[$val['id_lang']] = Tools::getValue('label_' . (int) $val['id_lang']);
|
|
}
|
|
|
|
$count_links_label = count($links_label);
|
|
$count_label = count($labels);
|
|
|
|
if ($count_links_label || $count_label) {
|
|
if (!$count_links_label) {
|
|
$this->_html .= $this->displayError($this->l('Please complete the "Link" field.'));
|
|
} elseif (!$count_label) {
|
|
$this->_html .= $this->displayError($this->l('Please add a label.'));
|
|
} elseif (!isset($labels[$default_language])) {
|
|
$this->_html .= $this->displayError($this->l('Please add a label for your default language.'));
|
|
} else {
|
|
$shops = Shop::getContextListShopID();
|
|
|
|
foreach ($shops as $shop_id) {
|
|
if (Tools::isSubmit('updateiqitmenulinks')) {
|
|
$added = IqitMenuLinks::update($links_label, $labels, (int) $shop_id, Tools::getValue('id_iqitmenulinks'), Tools::getValue('new_window', 0));
|
|
} else {
|
|
$added = IqitMenuLinks::add($links_label, $labels, (int) $shop_id, Tools::getValue('new_window', 0));
|
|
}
|
|
|
|
if (!$added) {
|
|
$shop = new Shop($shop_id);
|
|
$errors_add_link[] = $shop->name;
|
|
}
|
|
}
|
|
|
|
if (!count($errors_add_link)) {
|
|
$this->_html .= $this->displayConfirmation($this->l('The link has been added.'));
|
|
} else {
|
|
$this->_html .= $this->displayError(sprintf($this->l('Unable to add link for the following shop(s): %s'), implode(', ', $errors_add_link)));
|
|
}
|
|
}
|
|
}
|
|
$this->clearMenuCache();
|
|
} elseif (Tools::isSubmit('deleteiqitmenulinks')) {
|
|
$errors_delete_link = array();
|
|
$id_iqitmenulinks = Tools::getValue('id_iqitmenulinks', 0);
|
|
$shops = Shop::getContextListShopID();
|
|
|
|
foreach ($shops as $shop_id) {
|
|
$deleted = IqitMenuLinks::remove($id_iqitmenulinks, (int) $shop_id);
|
|
Configuration::updateValue($this->config_name . '_mobile_menu', str_replace(array('LNK' . $id_iqitmenulinks . ',', 'LNK' . $id_iqitmenulinks), '', Configuration::get($this->config_name . '_mobile_menu')));
|
|
|
|
if (!$deleted) {
|
|
$shop = new Shop($shop_id);
|
|
$errors_delete_link[] = $shop->name;
|
|
}
|
|
}
|
|
|
|
if (!count($errors_delete_link)) {
|
|
$this->_html .= $this->displayConfirmation($this->l('The link has been removed.'));
|
|
} else {
|
|
$this->_html .= $this->displayError(sprintf($this->l('Unable to remove link for the following shop(s): %s'), implode(', ', $errors_delete_link)));
|
|
}
|
|
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
$this->_html .= '<div class="list-wrapper list-wrapper-horizontal">' . $this->renderTabsLinks(1) . '</div>';
|
|
$this->_html .= '<div class="list-wrapper list-wrapper-vertical">' . $this->renderTabsLinks(2) . '</div>';
|
|
$this->_html .= '<div class="list-wrapper list-wrapper-submenutabs">' . $this->renderTabsLinks(3) . '</div>';
|
|
$this->_html .= '<div class="list-wrapper list-wrapper-html">' . $this->renderHtmlContents() . '</div>';
|
|
$this->_html .= $this->renderForm();
|
|
|
|
return $this->_html;
|
|
}
|
|
|
|
private function _postValidation()
|
|
{
|
|
$errors = array();
|
|
|
|
/* Validation for tab */
|
|
if (Tools::isSubmit('submitAddTab')) {
|
|
/* If edit : checks id_tab */
|
|
if (Tools::isSubmit('id_tab')) {
|
|
if (!Validate::isInt(Tools::getValue('id_tab')) && !IqitMenuTab::tabExists(Tools::getValue('id_tab'))) {
|
|
$errors[] = $this->l('Invalid id_tab');
|
|
}
|
|
}
|
|
if (!Validate::isInt(Tools::getValue('position')) || (Tools::getValue('position') < 0)) {
|
|
$errors[] = $this->l('Invalid tab position.');
|
|
}
|
|
|
|
/* Checks title/description/*/
|
|
$languages = Language::getLanguages(false);
|
|
foreach ($languages as $language) {
|
|
if (Tools::strlen(Tools::getValue('title_' . $language['id_lang'])) > 255) {
|
|
$errors[] = $this->l('The title is too long.');
|
|
}
|
|
if (Tools::strlen(Tools::getValue('label_' . $language['id_lang'])) > 255) {
|
|
$errors[] = $this->l('The label is too long.');
|
|
}
|
|
}
|
|
/* Checks title/description for default lang */
|
|
$id_lang_default = (int) Configuration::get('PS_LANG_DEFAULT');
|
|
if (Tools::strlen(Tools::getValue('title_' . $id_lang_default)) == 0) {
|
|
$errors[] = $this->l('The title is not set.');
|
|
}
|
|
} elseif (Tools::isSubmit('delete_id_tab') && (!Validate::isInt(Tools::getValue('delete_id_tab')) || !IqitMenuTab::tabExists((int) Tools::getValue('delete_id_tab')))) {
|
|
$errors[] = $this->l('Invalid id_tab');
|
|
}
|
|
|
|
/* Display errors if needed */
|
|
if (count($errors)) {
|
|
$this->_html .= $this->displayError(implode('<br />', $errors));
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private function _postProcess()
|
|
{
|
|
$errors = array();
|
|
|
|
/* Processes tab */
|
|
if (Tools::isSubmit('submitAddTab')) {
|
|
/* Sets ID if needed */
|
|
if (Tools::getValue('id_tab')) {
|
|
$tab = new IqitMenuTab((int) Tools::getValue('id_tab'));
|
|
if (!Validate::isLoadedObject($tab)) {
|
|
$this->_html .= $this->displayError($this->l('Invalid id_tab'));
|
|
|
|
return false;
|
|
}
|
|
} else {
|
|
$tab = new IqitMenuTab();
|
|
$tab->menu_type = Tools::getValue('menu_type');
|
|
$tab->position = IqitMenuTab::getNextPosition(Tools::getValue('menu_type'));
|
|
}
|
|
|
|
$tab->active = Tools::getValue('active');
|
|
$tab->active_label = Tools::getValue('active_label');
|
|
|
|
$tab->url_type = Tools::getValue('url_type');
|
|
$tab->id_url = Tools::getValue('id_url');
|
|
$tab->icon_type = Tools::getValue('icon_type');
|
|
$tab->icon = Tools::getValue('icon');
|
|
$tab->icon_class = Tools::getValue('icon_class');
|
|
$tab->legend_icon = Tools::getValue('legend_icon');
|
|
$tab->new_window = Tools::getValue('new_window');
|
|
$tab->float = Tools::getValue('float');
|
|
|
|
//colors
|
|
$tab->bg_color = Tools::getValue('bg_color');
|
|
$tab->txt_color = Tools::getValue('txt_color');
|
|
$tab->h_bg_color = Tools::getValue('h_bg_color');
|
|
$tab->h_txt_color = Tools::getValue('h_txt_color');
|
|
$tab->labelbg_color = Tools::getValue('labelbg_color');
|
|
$tab->labeltxt_color = Tools::getValue('labeltxt_color');
|
|
|
|
//submenu
|
|
$submenu_type = Tools::getValue('submenu_type');
|
|
|
|
$tab->submenu_type = $submenu_type;
|
|
$tab->submenu_width = Tools::getValue('submenu_width');
|
|
$tab->submenu_bg_color = Tools::getValue('submenu_bg_color');
|
|
$tab->submenu_image = Tools::getValue('submenu_image');
|
|
$tab->submenu_repeat = Tools::getValue('submenu_repeat');
|
|
$tab->submenu_bg_position = Tools::getValue('submenu_bg_position');
|
|
$tab->submenu_link_color = Tools::getValue('submenu_link_color');
|
|
$tab->submenu_hover_color = Tools::getValue('submenu_hover_color');
|
|
|
|
$tab->submenu_title_color = Tools::getValue('submenu_title_color');
|
|
$tab->submenu_title_colorh = Tools::getValue('submenu_title_colorh');
|
|
$tab->submenu_titleb_color = Tools::getValue('submenu_titleb_color');
|
|
$tab->submenu_border_t = Tools::getValue('submenu_border_t');
|
|
$tab->submenu_border_r = Tools::getValue('submenu_border_r');
|
|
$tab->submenu_border_b = Tools::getValue('submenu_border_b');
|
|
$tab->submenu_border_l = Tools::getValue('submenu_border_l');
|
|
$tab->submenu_border_i = Tools::getValue('submenu_border_i');
|
|
|
|
$id_shop_list = Tools::getValue('checkBoxShopAsso_iqitmegamenu_tabs');
|
|
|
|
if (isset($id_shop_list) && !empty($id_shop_list)) {
|
|
$tab->id_shop_list = $id_shop_list;
|
|
} else {
|
|
$tab->id_shop_list = (int)Context::getContext()->shop->id;
|
|
}
|
|
|
|
$groups = Group::getGroups($this->context->language->id);
|
|
$groupBox = Tools::getValue('groupBox', array());
|
|
$group_access = array();
|
|
|
|
if (!$groupBox) {
|
|
foreach ($groups as $group) {
|
|
$group_access[$group['id_group']] = false;
|
|
}
|
|
} else {
|
|
foreach ($groups as $group) {
|
|
$group_access[$group['id_group']] = in_array($group['id_group'], $groupBox);
|
|
}
|
|
}
|
|
|
|
$tab->group_access = serialize($group_access);
|
|
|
|
$tab->submenu_content = '';
|
|
|
|
if ($submenu_type == 1) {
|
|
if (is_array(Tools::getValue('items')) && count(Tools::getValue('items'))) {
|
|
$tab->submenu_content = (string) implode(',', Tools::getValue('items'));
|
|
} else {
|
|
$tab->submenu_content = '';
|
|
}
|
|
}
|
|
|
|
if ($submenu_type == 2) {
|
|
$tab->submenu_content = urldecode(Tools::getValue('submenu-elements'));
|
|
}
|
|
|
|
/* Sets each langue fields */
|
|
$languages = Language::getLanguages(false);
|
|
foreach ($languages as $language) {
|
|
$tab->title[$language['id_lang']] = Tools::getValue('title_' . $language['id_lang']);
|
|
$tab->label[$language['id_lang']] = Tools::getValue('label_' . $language['id_lang']);
|
|
$tab->url[$language['id_lang']] = Tools::getValue('url_' . $language['id_lang']);
|
|
}
|
|
|
|
/* Processes if no errors */
|
|
if (!$errors) {
|
|
/* Adds */
|
|
if (!Tools::getValue('id_tab')) {
|
|
if (!$tab->add()) {
|
|
$errors[] = $this->displayError($this->l('The tab could not be added.'));
|
|
}
|
|
} elseif (!$tab->update()) {
|
|
$errors[] = $this->displayError($this->l('The tab could not be updated.'));
|
|
}
|
|
|
|
$this->clearMenuCache();
|
|
}
|
|
} elseif (Tools::isSubmit('delete_id_tab')) {
|
|
$tab = new IqitMenuTab((int) Tools::getValue('delete_id_tab'));
|
|
$res = $tab->delete();
|
|
$this->clearMenuCache();
|
|
if (!$res) {
|
|
$this->_html .= $this->displayError('Could not delete.');
|
|
} else {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=1&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
}
|
|
} elseif (Tools::isSubmit('duplicateTabC')) {
|
|
$this->duplicateTab((int) Tools::getValue('duplicateTabC'));
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
$this->generateCss();
|
|
$this->clearMenuCache();
|
|
|
|
if (count($errors)) {
|
|
$this->_html .= $this->displayError(implode('<br />', $errors));
|
|
} elseif (Tools::isSubmit('submitAddTab') && Tools::getValue('id_tab')) {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=4&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
} elseif (Tools::isSubmit('submitAddTab')) {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=3&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
}
|
|
}
|
|
|
|
private function _postValidationHtml()
|
|
{
|
|
$errors = array();
|
|
if (Tools::isSubmit('submitAddHtml')) {
|
|
if (Tools::isSubmit('id_html')) {
|
|
if (!Validate::isInt(Tools::getValue('id_html')) && !IqitMenuHtml::htmlExists(Tools::getValue('id_html'))) {
|
|
$errors[] = $this->l('Invalid id_html');
|
|
}
|
|
}
|
|
if (!Tools::strlen(Tools::getValue('title'))) {
|
|
$errors[] = $this->l('Title is not set');
|
|
}
|
|
$id_lang_default = (int) Configuration::get('PS_LANG_DEFAULT');
|
|
if (Tools::strlen(Tools::getValue('html_' . $id_lang_default)) == 0) {
|
|
$errors[] = $this->l('The html is not set');
|
|
}
|
|
} elseif (Tools::isSubmit('delete_id_html') && (!Validate::isInt(Tools::getValue('delete_id_html')) || !IqitMenuHtml::htmlExists((int) Tools::getValue('delete_id_html')))) {
|
|
$errors[] = $this->l('Invalid id_html');
|
|
}
|
|
if (count($errors)) {
|
|
$this->_html .= $this->displayError(implode('<br />', $errors));
|
|
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private function _postProcessHtml()
|
|
{
|
|
$errors = array();
|
|
|
|
/* Processes tab */
|
|
if (Tools::isSubmit('submitAddHtml')) {
|
|
if (Tools::getValue('id_html')) {
|
|
$tab = new IqitMenuHtml((int) Tools::getValue('id_html'));
|
|
if (!Validate::isLoadedObject($tab)) {
|
|
$this->_html .= $this->displayError($this->l('Invalid id_tab'));
|
|
|
|
return false;
|
|
}
|
|
} else {
|
|
$tab = new IqitMenuHtml();
|
|
}
|
|
|
|
$tab->title = Tools::getValue('title');
|
|
|
|
$languages = Language::getLanguages(false);
|
|
foreach ($languages as $language) {
|
|
$tab->html[$language['id_lang']] = Tools::getValue('html_' . $language['id_lang']);
|
|
}
|
|
|
|
if (!$errors) {
|
|
if (!Tools::getValue('id_html')) {
|
|
if (!$tab->add()) {
|
|
$errors[] = $this->displayError($this->l('The html content could not be added.'));
|
|
}
|
|
} elseif (!$tab->update()) {
|
|
$errors[] = $this->displayError($this->l('The html could not be updated.'));
|
|
}
|
|
|
|
$this->clearMenuCache();
|
|
}
|
|
} elseif (Tools::isSubmit('delete_id_html')) {
|
|
$tab = new IqitMenuHtml((int) Tools::getValue('delete_id_html'));
|
|
$res = $tab->delete();
|
|
$this->clearMenuCache();
|
|
if (!$res) {
|
|
$this->_html .= $this->displayError('Could not delete.');
|
|
} else {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=1&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
}
|
|
}
|
|
|
|
if (count($errors)) {
|
|
$this->_html .= $this->displayError(implode('<br />', $errors));
|
|
} elseif (Tools::isSubmit('submitAddTab') && Tools::getValue('id_tab')) {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=4&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
} elseif (Tools::isSubmit('submitAddTab')) {
|
|
Tools::redirectAdmin($this->context->link->getAdminLink('AdminModules', true) . '&conf=3&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name);
|
|
}
|
|
}
|
|
|
|
public function renderAddForm()
|
|
{
|
|
if (Tools::getValue('menu_type') == 3) {
|
|
$options_type = array(
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Grid submenu'),
|
|
),
|
|
);
|
|
} else {
|
|
$options_type = array(
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Grid submenu'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Predefinied tabs'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Hidden'),
|
|
),
|
|
);
|
|
}
|
|
|
|
$columns_width = array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('1/12'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('2/12'),
|
|
),
|
|
array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('3/12'),
|
|
),
|
|
array(
|
|
'id_option' => 4,
|
|
'name' => $this->l('4/12'),
|
|
),
|
|
array(
|
|
'id_option' => 5,
|
|
'name' => $this->l('5/12'),
|
|
),
|
|
array(
|
|
'id_option' => 6,
|
|
'name' => $this->l('6/12'),
|
|
),
|
|
array(
|
|
'id_option' => 7,
|
|
'name' => $this->l('7/12'),
|
|
),
|
|
array(
|
|
'id_option' => 8,
|
|
'name' => $this->l('8/12'),
|
|
),
|
|
array(
|
|
'id_option' => 9,
|
|
'name' => $this->l('9/12'),
|
|
),
|
|
array(
|
|
'id_option' => 10,
|
|
'name' => $this->l('10/12'),
|
|
),
|
|
array(
|
|
'id_option' => 11,
|
|
'name' => $this->l('11/12'),
|
|
),
|
|
array(
|
|
'id_option' => 12,
|
|
'name' => $this->l('12/12'),
|
|
),
|
|
);
|
|
|
|
$unidentified = new Group(Configuration::get('PS_UNIDENTIFIED_GROUP'));
|
|
$guest = new Group(Configuration::get('PS_GUEST_GROUP'));
|
|
$default = new Group(Configuration::get('PS_CUSTOMER_GROUP'));
|
|
|
|
$unidentified_group_information = sprintf($this->l('%s - All people without a valid customer account.'), '<b>' . $unidentified->name[$this->context->language->id] . '</b>');
|
|
$guest_group_information = sprintf($this->l('%s - Customer who placed an order with the guest checkout.'), '<b>' . $guest->name[$this->context->language->id] . '</b>');
|
|
$default_group_information = sprintf($this->l('%s - All people who have created an account on this site.'), '<b>' . $default->name[$this->context->language->id] . '</b>');
|
|
|
|
$fields_form = array(
|
|
'form' => array(
|
|
'tab_name' => 'main_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Add tab'),
|
|
'icon' => 'icon-cogs',
|
|
'id' => 'fff',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Active'),
|
|
'name' => 'active',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Title'),
|
|
'name' => 'title',
|
|
'desc' => $this->l('Main title of tab. If you want to manually indicate new line put /n '),
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Hide title'),
|
|
'desc' => $this->l('Useful if you want to create tab like home link'),
|
|
'name' => 'active_label',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Icon type'),
|
|
'name' => 'icon_type',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Font icon class name'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Image icon'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'icon_selector',
|
|
'label' => $this->l('Icon class'),
|
|
'name' => 'icon_class',
|
|
'desc' => $this->l('For example: "fa-star". You can use font awesome icons here'),
|
|
'preffix_wrapper' => 'icon-class-wrapper',
|
|
'wrapper_hidden' => true,
|
|
'suffix_wrapper' => true,
|
|
),
|
|
array(
|
|
'type' => 'image_upload',
|
|
'label' => $this->l('Icon'),
|
|
'name' => 'icon',
|
|
'preffix_wrapper' => 'image-icon-wrapper',
|
|
'wrapper_hidden' => true,
|
|
'suffix_wrapper' => true,
|
|
),
|
|
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Url type'),
|
|
'name' => 'url_type',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('No url'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Custom url'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Content url(category, cms, etc)'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'custom_select',
|
|
'label' => $this->l('System url'),
|
|
'name' => 'id_url',
|
|
'choices' => $this->renderChoicesSelect(true, 'id_url'),
|
|
'preffix_wrapper' => 'system-url-wrapper',
|
|
'wrapper_hidden' => true,
|
|
'suffix_wrapper' => true,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Custom url'),
|
|
'name' => 'url',
|
|
'desc' => $this->l('Should be full url with http:// prefix'),
|
|
'lang' => true,
|
|
'preffix_wrapper' => 'custom-url-wrapper',
|
|
'wrapper_hidden' => true,
|
|
'suffix_wrapper' => true,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Legend'),
|
|
'name' => 'label',
|
|
'desc' => $this->l('Additional text showed in tooltip'),
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'type' => 'icon_selector',
|
|
'label' => $this->l('Legend icon class'),
|
|
'name' => 'legend_icon',
|
|
'desc' => $this->l('For example: "fa-star". You can use font awesome icons here'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('New window'),
|
|
'name' => 'new_window',
|
|
'hide' => (Tools::getValue('menu_type') == 3 ? true : false),
|
|
'is_bool' => true,
|
|
'desc' => $this->l('Open link in new window'),
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Float right'),
|
|
'hide' => (Tools::getValue('menu_type') == 3 ? true : false),
|
|
'name' => 'float',
|
|
'is_bool' => true,
|
|
'desc' => $this->l('Position menu on right side of menu. If center option of menu is enabled it do not take effect'),
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link background color'),
|
|
'name' => 'bg_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link text color'),
|
|
'name' => 'txt_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover background color'),
|
|
'name' => 'h_bg_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover text color'),
|
|
'name' => 'h_txt_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legend background color'),
|
|
'name' => 'labelbg_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legend text color'),
|
|
'name' => 'labeltxt_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu type and status'),
|
|
'name' => 'submenu_type',
|
|
'options' => array(
|
|
'query' => $options_type,
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu width'),
|
|
'name' => 'submenu_width',
|
|
'hide' => (Tools::getValue('menu_type') == 3 ? true : false),
|
|
'options' => array(
|
|
'query' => $columns_width,
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
|
|
array(
|
|
'type' => 'textarea',
|
|
'label' => $this->l('Content'),
|
|
'name' => 'submenu_content',
|
|
'autoload_rte' => false,
|
|
'hide' => true,
|
|
'lang' => false,
|
|
),
|
|
|
|
array(
|
|
'type' => 'color',
|
|
'wrapper_hidden' => true,
|
|
'row_title' => $this->l('Optional submenu style'),
|
|
'preffix_wrapper' => 'cssstyle-submenu',
|
|
'accordion_wrapper' => 'cssstyle-submenu-inner',
|
|
'label' => $this->l('Submenu background color'),
|
|
'name' => 'submenu_bg_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'image_upload',
|
|
'label' => $this->l('Background image'),
|
|
'name' => 'submenu_image',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu Background repeat'),
|
|
'name' => 'submenu_repeat',
|
|
'options' => array(
|
|
'query' => array(array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('Repeat XY'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Repeat X'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Repeat Y'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No repeat'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu Background position'),
|
|
'name' => 'submenu_bg_position',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 8,
|
|
'name' => $this->l('left top'),
|
|
),
|
|
array(
|
|
'id_option' => 7,
|
|
'name' => $this->l('left center'),
|
|
),
|
|
array(
|
|
'id_option' => 6,
|
|
'name' => $this->l('left bottom'),
|
|
),
|
|
array(
|
|
'id_option' => 5,
|
|
'name' => $this->l('right top'),
|
|
),
|
|
array(
|
|
'id_option' => 4,
|
|
'name' => $this->l('right center'),
|
|
),
|
|
array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('right bottom'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('center top'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('center center'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('center bottom'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title color'),
|
|
'name' => 'submenu_title_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title hover color'),
|
|
'name' => 'submenu_title_colorh',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title border color'),
|
|
'name' => 'submenu_titleb_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used.'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu link color'),
|
|
'name' => 'submenu_link_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu link hover color'),
|
|
'name' => 'submenu_hover_color',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu border top color'),
|
|
'name' => 'submenu_border_t',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu border right color'),
|
|
'name' => 'submenu_border_r',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu border bottom color'),
|
|
'name' => 'submenu_border_b',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu border left color'),
|
|
'name' => 'submenu_border_l',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Submenu inner border color'),
|
|
'name' => 'submenu_border_i',
|
|
'desc' => $this->l('Optional field. If not set default color will be used'),
|
|
'size' => 30,
|
|
'suffix_a_wrapper' => true,
|
|
'suffix_wrapper' => true,
|
|
),
|
|
array(
|
|
'type' => 'grid_creator',
|
|
'label' => '',
|
|
'col' => 12,
|
|
'preffix_wrapper' => 'grid-submenu',
|
|
'wrapper_hidden' => true,
|
|
'name' => 'grid_creator',
|
|
'suffix_wrapper' => true,
|
|
),
|
|
array(
|
|
'type' => 'tabs_choice',
|
|
'label' => '',
|
|
'name' => 'tabs_choice',
|
|
'lang' => true,
|
|
'suffix_wrapper' => true,
|
|
'preffix_wrapper' => 'tabs-submenu',
|
|
'wrapper_hidden' => true,
|
|
),
|
|
array(
|
|
'type' => 'group',
|
|
'label' => $this->l('Group access'),
|
|
'name' => 'groupBox',
|
|
'values' => Group::getGroups(Context::getContext()->language->id),
|
|
'info_introduction' => $this->l('You now have three default customer groups.'),
|
|
'unidentified' => $unidentified_group_information,
|
|
'guest' => $guest_group_information,
|
|
'customer' => $default_group_information,
|
|
'hint' => $this->l('Mark all of the customer groups which you would like to have access to this menu tab.'),
|
|
),
|
|
|
|
),
|
|
'submit' => array(
|
|
'title' => $this->l('Save'),
|
|
),
|
|
),
|
|
);
|
|
if (Shop::isFeatureActive()) {
|
|
$fields_form['form']['input'][] = array(
|
|
'type' => 'shop',
|
|
'label' => $this->l('Shop association'),
|
|
'name' => 'checkBoxShopAsso',
|
|
);
|
|
}
|
|
|
|
$fields_form['form']['input'][] = array('type' => 'hidden', 'name' => 'menu_type');
|
|
|
|
$selected_tabs = '';
|
|
$submenu_content = '';
|
|
$submenu_content_format = array();
|
|
if (Tools::isSubmit('id_tab') && IqitMenuTab::tabExists((int) Tools::getValue('id_tab'))) {
|
|
$tab = new IqitMenuTab((int) Tools::getValue('id_tab'));
|
|
$fields_form['form']['input'][] = array('type' => 'hidden', 'name' => 'id_tab');
|
|
|
|
if ($tab->submenu_type == 1) {
|
|
$selected_tabs = $tab->submenu_content;
|
|
}
|
|
|
|
if ($tab->submenu_type == 2 && $tab->submenu_content != '') {
|
|
$submenu_content = $tab->submenu_content;
|
|
$submenu_content_format = $this->buildSubmenuTree(Tools::jsonDecode($tab->submenu_content, true), false);
|
|
}
|
|
}
|
|
|
|
$helper = new HelperForm();
|
|
$helper->show_toolbar = false;
|
|
$helper->table = 'iqitmegamenu_tabs';
|
|
$helper->show_cancel_button = true;
|
|
$lang = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
|
|
$helper->default_form_language = $lang->id;
|
|
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
|
|
$this->fields_form = array();
|
|
$helper->module = $this;
|
|
$helper->id = (int) Tools::getValue('id_tab');
|
|
$helper->identifier = 'id_tab';
|
|
$helper->submit_action = 'submitAddTab';
|
|
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
|
|
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
|
$language = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
|
|
$helper->tpl_vars = array(
|
|
'base_url' => $this->context->shop->getBaseURL(),
|
|
'language' => array(
|
|
'id_lang' => $language->id,
|
|
'iso_code' => $language->iso_code,
|
|
),
|
|
'fields_value' => $this->getAddFieldsValues(),
|
|
'languages' => $this->context->controller->getLanguages(),
|
|
'id_language' => $this->context->language->id,
|
|
'module_path' => $this->_path,
|
|
'va_links_select' => $this->renderChoicesSelect(null, null, 'select-links-ids'),
|
|
'custom_html_select' => $this->renderCustomHtmlSelect(),
|
|
'manufacturers_select' => $this->renderManufacturersSelect(),
|
|
'suppliers_select' => $this->renderSuppliersSelect(),
|
|
'categories_select' => $this->renderCategoriesSelect(false),
|
|
'choices_tabs' => $this->renderChoicesTabsSelect(),
|
|
'selected_tabs' => $this->renderSelectedTabsSelect($selected_tabs),
|
|
'submenu_content' => htmlentities($submenu_content, ENT_COMPAT, 'UTF-8'),
|
|
'submenu_content_format' => $submenu_content_format,
|
|
'image_baseurl' => $this->_path . 'images/',
|
|
);
|
|
|
|
$helper->override_folder = '/';
|
|
|
|
return $helper->generateForm(array($fields_form));
|
|
}
|
|
|
|
public function getAddFieldsValues()
|
|
{
|
|
$fields = array();
|
|
|
|
$fields['menu_type'] = (int) Tools::getValue('menu_type');
|
|
|
|
$fields['active'] = true;
|
|
$fields['active_label'] = false;
|
|
$fields['icon'] = '';
|
|
$fields['icon_class'] = '';
|
|
$fields['legend_icon'] = '';
|
|
|
|
$fields['url_type'] = 0;
|
|
$fields['icon_type'] = 0;
|
|
$fields['id_url'] = 0;
|
|
|
|
$fields['new_window'] = false;
|
|
$fields['float'] = false;
|
|
|
|
$fields['bg_color'] = '';
|
|
$fields['txt_color'] = '';
|
|
$fields['h_bg_color'] = '';
|
|
$fields['h_txt_color'] = '';
|
|
$fields['labelbg_color'] = '';
|
|
$fields['labeltxt_color'] = '';
|
|
|
|
//submenu
|
|
$fields['submenu_type'] = 0;
|
|
$fields['submenu_content'] = '';
|
|
$fields['submenu_width'] = 12;
|
|
$fields['submenu_bg_color'] = '';
|
|
$fields['submenu_image'] = '';
|
|
$fields['submenu_repeat'] = '';
|
|
$fields['submenu_bg_position'] = '';
|
|
$fields['submenu_link_color'] = '';
|
|
$fields['submenu_hover_color'] = '';
|
|
$fields['submenu_title_color'] = '';
|
|
$fields['submenu_title_colorh'] = '';
|
|
$fields['submenu_titleb_color'] = '';
|
|
$fields['submenu_border_t'] = '';
|
|
$fields['submenu_border_r'] = '';
|
|
$fields['submenu_border_b'] = '';
|
|
$fields['submenu_border_l'] = '';
|
|
$fields['submenu_border_i'] = '';
|
|
|
|
if (Tools::isSubmit('id_tab') && IqitMenuTab::tabExists((int) Tools::getValue('id_tab'))) {
|
|
$tab = new IqitMenuTab((int) Tools::getValue('id_tab'));
|
|
|
|
$fields['id_tab'] = (int) Tools::getValue('id_tab', $tab->id);
|
|
$fields['active'] = $tab->active;
|
|
$fields['active_label'] = $tab->active_label;
|
|
$fields['url_type'] = $tab->url_type;
|
|
$fields['icon_type'] = $tab->icon_type;
|
|
$fields['id_url'] = $tab->id_url;
|
|
$fields['new_window'] = $tab->new_window;
|
|
$fields['float'] = $tab->float;
|
|
$fields['icon'] = $tab->icon;
|
|
$fields['icon_class'] = $tab->icon_class;
|
|
$fields['legend_icon'] = $tab->legend_icon;
|
|
$fields['bg_color'] = $tab->bg_color;
|
|
$fields['txt_color'] = $tab->txt_color;
|
|
$fields['h_bg_color'] = $tab->h_bg_color;
|
|
$fields['h_txt_color'] = $tab->h_txt_color;
|
|
$fields['labelbg_color'] = $tab->labelbg_color;
|
|
$fields['labeltxt_color'] = $tab->labeltxt_color;
|
|
|
|
//submenu
|
|
$fields['submenu_type'] = $tab->submenu_type;
|
|
$fields['submenu_content'] = $tab->submenu_content;
|
|
$fields['submenu_width'] = $tab->submenu_width;
|
|
$fields['submenu_bg_color'] = $tab->submenu_bg_color;
|
|
$fields['submenu_image'] = $tab->submenu_image;
|
|
$fields['submenu_repeat'] = $tab->submenu_repeat;
|
|
$fields['submenu_bg_position'] = $tab->submenu_bg_position;
|
|
$fields['submenu_link_color'] = $tab->submenu_link_color;
|
|
$fields['submenu_hover_color'] = $tab->submenu_hover_color;
|
|
$fields['submenu_title_color'] = $tab->submenu_title_color;
|
|
$fields['submenu_title_colorh'] = $tab->submenu_title_colorh;
|
|
$fields['submenu_titleb_color'] = $tab->submenu_titleb_color;
|
|
$fields['submenu_border_t'] = $tab->submenu_border_t;
|
|
$fields['submenu_border_r'] = $tab->submenu_border_r;
|
|
$fields['submenu_border_b'] = $tab->submenu_border_b;
|
|
$fields['submenu_border_l'] = $tab->submenu_border_l;
|
|
$fields['submenu_border_i'] = $tab->submenu_border_i;
|
|
|
|
$group_access = unserialize($tab->group_access);
|
|
|
|
foreach ($group_access as $group => $value) {
|
|
$fields['groupBox_' . $group] = $value;
|
|
}
|
|
} else {
|
|
$tab = new IqitMenuTab();
|
|
|
|
$groups = Group::getGroups($this->context->language->id);
|
|
|
|
foreach ($groups as $group) {
|
|
$fields['groupBox_' . $group['id_group']] = true;
|
|
}
|
|
}
|
|
|
|
$languages = Language::getLanguages(false);
|
|
|
|
foreach ($languages as $lang) {
|
|
$fields['title'][$lang['id_lang']] = Tools::getValue('title_' . (int) $lang['id_lang'], $tab->title[$lang['id_lang']]);
|
|
$fields['url'][$lang['id_lang']] = Tools::getValue('url_' . (int) $lang['id_lang'], $tab->url[$lang['id_lang']]);
|
|
$fields['label'][$lang['id_lang']] = Tools::getValue('label_' . (int) $lang['id_lang'], $tab->label[$lang['id_lang']]);
|
|
}
|
|
|
|
return $fields;
|
|
}
|
|
|
|
public function renderAddHtmlForm()
|
|
{
|
|
$fields_form = array(
|
|
'form' => array(
|
|
'tab_name' => 'main_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Add custom html'),
|
|
'icon' => 'icon-cogs',
|
|
'id' => 'fff',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Name'),
|
|
'name' => 'title',
|
|
'desc' => $this->l('Custom html name, Only for backoffice purposes'),
|
|
'lang' => false,
|
|
),
|
|
array(
|
|
'type' => 'textarea',
|
|
'label' => $this->l('Html content'),
|
|
'name' => 'html',
|
|
'lang' => true,
|
|
'autoload_rte' => true,
|
|
'desc' => $this->l('Custom html content which you can later select in submenu'),
|
|
'cols' => 60,
|
|
'rows' => 30,
|
|
),
|
|
),
|
|
'submit' => array(
|
|
'title' => $this->l('Save'),
|
|
),
|
|
'buttons' => array(
|
|
'button' => array(
|
|
'name' => 'back_to_configuration',
|
|
'type' => 'submit',
|
|
'icon' => 'process-icon-back',
|
|
'class' => 'btn btn-default pull-left',
|
|
'title' => $this->l('Back'),
|
|
)),
|
|
|
|
),
|
|
);
|
|
|
|
if (Tools::isSubmit('id_html') && IqitMenuHtml::htmlExists((int) Tools::getValue('id_html'))) {
|
|
$fields_form['form']['input'][] = array('type' => 'hidden', 'name' => 'id_html');
|
|
}
|
|
|
|
$helper = new HelperForm();
|
|
$helper->show_toolbar = false;
|
|
$helper->table = $this->table;
|
|
$lang = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
|
|
$helper->default_form_language = $lang->id;
|
|
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
|
|
$this->fields_form = array();
|
|
$helper->module = $this;
|
|
$helper->identifier = $this->identifier;
|
|
$helper->submit_action = 'submitAddHtml';
|
|
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) . '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
|
|
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
|
$language = new Language((int) Configuration::get('PS_LANG_DEFAULT'));
|
|
$helper->tpl_vars = array(
|
|
'base_url' => $this->context->shop->getBaseURL(),
|
|
'language' => array(
|
|
'id_lang' => $language->id,
|
|
'iso_code' => $language->iso_code,
|
|
),
|
|
'fields_value' => $this->getAddHtmlFieldsValues(),
|
|
'languages' => $this->context->controller->getLanguages(),
|
|
'id_language' => $this->context->language->id,
|
|
'module_path' => $this->_path,
|
|
'image_baseurl' => $this->_path . 'images/',
|
|
);
|
|
|
|
$helper->override_folder = '/';
|
|
|
|
return $helper->generateForm(array($fields_form));
|
|
}
|
|
|
|
public function getAddHtmlFieldsValues()
|
|
{
|
|
$fields = array();
|
|
|
|
$fields['title'] = '';
|
|
|
|
if (Tools::isSubmit('id_html') && IqitMenuHtml::htmlExists((int) Tools::getValue('id_html'))) {
|
|
$html = new IqitMenuHtml((int) Tools::getValue('id_html'));
|
|
$fields['id_html'] = (int) Tools::getValue('id_html', $html->id);
|
|
$fields['title'] = $html->title;
|
|
} else {
|
|
$html = new IqitMenuHtml();
|
|
}
|
|
|
|
$languages = Language::getLanguages(false);
|
|
|
|
foreach ($languages as $lang) {
|
|
$fields['html'][$lang['id_lang']] = Tools::getValue('html_' . (int) $lang['id_lang'], $html->html[$lang['id_lang']]);
|
|
}
|
|
|
|
return $fields;
|
|
}
|
|
|
|
public function buildSubmenuTree(array $dataset, $frontend = false, $cssgenerator = false)
|
|
{
|
|
$id_lang = (int) Context::getContext()->language->id;
|
|
|
|
$tree = array();
|
|
foreach ($dataset as $id => &$node) {
|
|
if ($cssgenerator) {
|
|
//set style
|
|
if (isset($node['content_s']['br_top_st'])) {
|
|
$node['content_s']['br_top_st'] = $this->convertBorderType($node['content_s']['br_top_st']);
|
|
}
|
|
|
|
if (isset($node['content_s']['br_right_st'])) {
|
|
$node['content_s']['br_right_st'] = $this->convertBorderType($node['content_s']['br_right_st']);
|
|
}
|
|
|
|
if (isset($node['content_s']['br_bottom_st'])) {
|
|
$node['content_s']['br_bottom_st'] = $this->convertBorderType($node['content_s']['br_bottom_st']);
|
|
}
|
|
|
|
if (isset($node['content_s']['br_left_st'])) {
|
|
$node['content_s']['br_left_st'] = $this->convertBorderType($node['content_s']['br_left_st']);
|
|
}
|
|
}
|
|
if ($frontend) {
|
|
if (isset($node['content_s']['title'][$id_lang]) && $node['content_s']['title'][$id_lang] != '') {
|
|
$node['content_s']['title'] = $node['content_s']['title'][$id_lang];
|
|
} else {
|
|
unset($node['content_s']['title']);
|
|
}
|
|
|
|
if (isset($node['content_s']['href'][$id_lang]) && $node['content_s']['href'][$id_lang] != '') {
|
|
$node['content_s']['href'] = $node['content_s']['href'][$id_lang];
|
|
} else {
|
|
unset($node['content_s']['href']);
|
|
}
|
|
|
|
if (isset($node['content_s']['legend'][$id_lang]) && $node['content_s']['legend'][$id_lang] != '') {
|
|
$node['content_s']['legend'] = $node['content_s']['legend'][$id_lang];
|
|
} else {
|
|
unset($node['content_s']['legend']);
|
|
}
|
|
|
|
//set variouse links
|
|
if (isset($node['contentType'])) {
|
|
switch ($node['contentType']) {
|
|
case 1:
|
|
if (isset($node['content']['ids'])) {
|
|
$customhtml = new IqitMenuHtml((int) $node['content']['ids'], $id_lang);
|
|
|
|
if (Validate::isLoadedObject($customhtml)) {
|
|
$node['content']['ids'] = $customhtml->html;
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
if (isset($node['content']['ids'])) {
|
|
if ($node['content']['treep']) {
|
|
$node['content']['depth']++;
|
|
}
|
|
|
|
foreach ($node['content']['ids'] as $key => $category) {
|
|
$node['content']['ids'][$key] = $this->generateCategoriesMenu(Category::getNestedCategories($node['content']['ids'][$key], $id_lang, true, $this->user_groups, true, '', $this->hor_sm_order), $node['content']['depth'], 1, $node['content']['sublimit'], 0, false, $node['content']);
|
|
}
|
|
}
|
|
break;
|
|
case 3:
|
|
if (isset($node['content']['ids'])) {
|
|
foreach ($node['content']['ids'] as $key => $link) {
|
|
$node['content']['ids'][$key] = $this->transformToLink($link, true);
|
|
}
|
|
}
|
|
break;
|
|
case 6:
|
|
if (isset($node['content']['source'][$id_lang]) && $node['content']['source'][$id_lang] != '') {
|
|
$node['content']['source'] = $node['content']['source'][$id_lang];
|
|
} else {
|
|
unset($node['content']['source']);
|
|
}
|
|
|
|
if (isset($node['content']['size'][$id_lang]) && $node['content']['size'][$id_lang] != '') {
|
|
$node['content']['size'] = $node['content']['size'][$id_lang];
|
|
} else {
|
|
unset($node['content']['size']);
|
|
}
|
|
|
|
if (isset($node['content']['href'][$id_lang]) && $node['content']['href'][$id_lang] != '') {
|
|
$node['content']['href'] = $node['content']['href'][$id_lang];
|
|
} else {
|
|
unset($node['content']['href']);
|
|
}
|
|
|
|
if (isset($node['content']['alt'][$id_lang]) && $node['content']['alt'][$id_lang] != '') {
|
|
$node['content']['alt'] = $node['content']['alt'][$id_lang];
|
|
} else {
|
|
unset($node['content']['alt']);
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($node['contentType']) && $node['contentType'] == 4) {
|
|
if (isset($node['content']['ids']) && !empty($node['content']['ids'])) {
|
|
$node['content']['ids'] = $this->getProducts($node['content']['ids']);
|
|
}
|
|
}
|
|
|
|
if ($node['parentId'] === 0) {
|
|
$tree[$id] = &$node;
|
|
} else {
|
|
if (!isset($dataset[$node['parentId']]['children'])) {
|
|
$dataset[$node['parentId']]['children'] = array();
|
|
}
|
|
|
|
$dataset[$node['parentId']]['children'][$id] = &$node;
|
|
}
|
|
}
|
|
|
|
$tree = $this->sortArrayTree($tree);
|
|
return $tree;
|
|
}
|
|
|
|
public function sortArrayTree($passedTree)
|
|
{
|
|
usort($passedTree, array($this, 'sortByPosition'));
|
|
|
|
foreach ($passedTree as $key => $subtree) {
|
|
if (!empty($subtree['children'])) {
|
|
$passedTree[$key]['children'] = $this->sortArrayTree($subtree['children']);
|
|
}
|
|
}
|
|
|
|
return $passedTree;
|
|
}
|
|
|
|
public function sortByPosition($a, $b)
|
|
{
|
|
return $a['position'] - $b['position'];
|
|
}
|
|
|
|
protected function renderForm()
|
|
{
|
|
$fields_form_global = array(
|
|
'form' => array(
|
|
'tab_name' => 'main_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Horizontal menu'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Hook'),
|
|
'desc' => $this->l('On some custom theme using default displayTop may not work corectly, for example if there is only half width of header preserved for this hook. Then you can select to use displayIqitMenu,
|
|
but you need to implement it in your template by placing {hook h="displayIqitMenu"} in your template in place where you want to show module. Probably in header.tpl file.'),
|
|
'name' => 'hor_hook',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('displayIqitMenu (custom hook, need to be implemented)'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('displayTop (default Prestshop hook)'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Width of menu'),
|
|
'name' => 'hor_width',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Content'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Full width'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Sticky menu'),
|
|
'desc' => $this->l('If enabled menu will stick to the same spot in the viewport as your users scroll down your page.'),
|
|
'name' => 'hor_sticky',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Transparency on sticky menu'),
|
|
'desc' => $this->l('Menu will be transparent on scroll'),
|
|
'name' => 'hor_s_transparent',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu animation'),
|
|
'desc' => $this->l('You can show instantly(no animation) or with fade animation'),
|
|
'name' => 'hor_animation',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('Fade and slide from top'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Fade and slide from bottom'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Fade'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No animation'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Center menu elements'),
|
|
'desc' => $this->l('Main menu links will be centered'),
|
|
'name' => 'hor_center',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Arrow submenu inticator'),
|
|
'desc' => $this->l('Show arrow icon if submenu exist'),
|
|
'name' => 'hor_arrow',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Submenu with arrow'),
|
|
'desc' => $this->l('If there will be arrow beetwen submenu and main link'),
|
|
'name' => 'hor_s_arrow',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main menu height'),
|
|
'name' => 'hor_lineheight',
|
|
'upper_separator' => true,
|
|
'row_title' => $this->l('Main menu design options'),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Background color'),
|
|
'name' => 'hor_bg_color',
|
|
'desc' => $this->l('Main menu backgrund color'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'image_upload',
|
|
'label' => $this->l('Background image'),
|
|
'name' => 'hor_bg_image',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Main menu backgrund repeat'),
|
|
'name' => 'hor_bg_repeat',
|
|
'options' => array(
|
|
'query' => array(array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('Repeat XY'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Repeat X'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Repeat Y'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No repeat'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar top border '),
|
|
'name' => 'hor_border_top',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar bottom border '),
|
|
'name' => 'hor_border_bottom',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar left and right border'),
|
|
'name' => 'hor_border_sides',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Inner border'),
|
|
'name' => 'hor_border_inner',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link font size'),
|
|
'name' => 'hor_link_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link left and right padding'),
|
|
'name' => 'hor_link_padding',
|
|
'desc' => $this->l('You can fit more elements thans to decrease of this value'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link font size(resolution above 1320px)'),
|
|
'name' => 'hor_link_fontsizeb',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link left and right padding(resolution above 1320px)'),
|
|
'name' => 'hor_link_paddingb',
|
|
'desc' => $this->l('You can fit more elements thans to decrease of this value'),
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link max-width'),
|
|
'desc' => $this->l('Helpfull if you have long tabs name and you want to make them two line'),
|
|
'name' => 'hor_maxwidth',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Icon font size'),
|
|
'name' => 'hor_icon_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Icon position'),
|
|
'name' => 'hor_icon_position',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Above text'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('With text'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links bold'),
|
|
'name' => 'hor_link_bold',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links italics'),
|
|
'name' => 'hor_link_italics',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links uppercase'),
|
|
'name' => 'hor_link_uppercase',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link text color'),
|
|
'name' => 'hor_link_txt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover text color'),
|
|
'name' => 'hor_link_htxt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover background color'),
|
|
'name' => 'hor_link_hbg_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legends text color'),
|
|
'name' => 'hor_legend_txt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legends background color'),
|
|
'name' => 'hor_legend_bg_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'textarea',
|
|
'label' => $this->l('Custom CSS code'),
|
|
'id' => 'codeEditor',
|
|
'name' => 'hor_custom_css',
|
|
'upper_separator' => true,
|
|
'row_title' => $this->l('Custom css'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'iqitTheme' => $this->iqitTheme,
|
|
'label' => $this->l('Include bootstrap'),
|
|
'desc' => $this->l('If your theme is not based on bootstrap you have to enable this option.'),
|
|
'name' => 'hor_bootstrap',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
'submit' => array(
|
|
'name' => 'submitHorizonalMenuConfig',
|
|
'title' => $this->l('Save'),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_submenustyl = array(
|
|
'form' => array(
|
|
'tab_name' => 'submenudesign_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Submenu design and options'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Subcategories order'),
|
|
'name' => 'hor_sm_order',
|
|
'desc' => $this->l('Affects horizontal, vertical and mobile menu'),
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Alphabetical'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Default'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Background color'),
|
|
'name' => 'hor_sm_bg_color',
|
|
'desc' => $this->l('Submenu backgrund color'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'image_upload',
|
|
'label' => $this->l('Background image'),
|
|
'name' => 'hor_sm_bg_image',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu backgrund repeat'),
|
|
'name' => 'hor_sm_bg_repeat',
|
|
'options' => array(
|
|
'query' => array(array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('Repeat XY'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Repeat X'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Repeat Y'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No repeat'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu box-shadow'),
|
|
'name' => 'hor_sm_boxshadow',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Default box shadow effect'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No box shadow'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Submenu top border '),
|
|
'name' => 'hor_sm_border_top',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Submenu bottom border '),
|
|
'name' => 'hor_sm_border_bottom',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Submenu left and right border'),
|
|
'name' => 'hor_sm_border_sides',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Inner border'),
|
|
'name' => 'hor_sm_border_inner',
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Predefinied tab text color'),
|
|
'name' => 'hor_sm_tab_txt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Predefinied tab bg color'),
|
|
'name' => 'hor_sm_tab_bg_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Predefinied tab hover text color'),
|
|
'name' => 'hor_sm_tab_htxt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Predefinied tab hover background color'),
|
|
'name' => 'hor_sm_tab_hbg_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'upper_separator' => true,
|
|
'row_title' => $this->l('Submenu columns titles or parent categories'),
|
|
'label' => $this->l('Font size'),
|
|
'name' => 'hor_titlep_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Color'),
|
|
'name' => 'hor_titlep_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Hover color'),
|
|
'name' => 'hor_titlep_colorh',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Title Uppercase'),
|
|
'name' => 'hor_titlep_uppercase',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Title bold'),
|
|
'name' => 'hor_titlep_bold',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Bottom border'),
|
|
'name' => 'hor_titlep_border',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Border bottom style'),
|
|
'name' => 'hor_titlep_borders',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'upper_separator' => true,
|
|
'row_title' => $this->l('Default text options'),
|
|
'label' => $this->l('Font size'),
|
|
'name' => 'hor_subtxt_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Color'),
|
|
'name' => 'hor_subtxt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Hover color'),
|
|
'name' => 'hor_subtxt_colorh',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Listing arrow'),
|
|
'name' => 'hor_subtxt_arrow',
|
|
'desc' => $this->l('Show arrow in decorated list of categories or links'),
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Another menu level icon'),
|
|
'name' => 'hor_subtxt_level',
|
|
'desc' => $this->l('Show icon if there is second level of subcategories'),
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
|
|
),
|
|
'submit' => array(
|
|
'name' => 'submitHorizonalMenuConfig',
|
|
'title' => $this->l('Save'),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_vertical = array(
|
|
'form' => array(
|
|
'tab_name' => 'vertical_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Vertical menu'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Position and status'),
|
|
'desc' => $this->l('Make shure you enabled left column in theme if you want to use DisplayLeftColumnhook'),
|
|
'name' => 'ver_position',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('On horizontal menu(not expanded on homepage)'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('On horizontal menu(expanded on homepage)'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('On Left column(displayLeftColumn Hook)'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Submenu animation'),
|
|
'desc' => $this->l('You can show instantly(no animation) or with fade animation'),
|
|
'name' => 'ver_animation',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Fade'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No animation'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Boxshadow if on topbar'),
|
|
'name' => 'ver_boxshadow',
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Default box shadow effect'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No box shadow'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Arrow submenu inticator'),
|
|
'desc' => $this->l('Show arrow icon if submenu exist'),
|
|
'name' => 'ver_arrow',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Submenu with arrow'),
|
|
'desc' => $this->l('If there will be arrow beetwen submenu and main link'),
|
|
'name' => 'ver_s_arrow',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title background color'),
|
|
'name' => 'ver_title_bg',
|
|
'desc' => $this->l('Title with "navigation" text'),
|
|
'size' => 30,
|
|
'row_title' => $this->l('Vertical menu design options'),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title text color'),
|
|
'name' => 'ver_title_txt',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title hover background color'),
|
|
'name' => 'ver_title_bgh',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Title hover text color'),
|
|
'name' => 'ver_title_txth',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Title font size'),
|
|
'name' => 'ver_title_size',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Title line height'),
|
|
'name' => 'ver_title_height',
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Title bold'),
|
|
'name' => 'ver_title_bold',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Title uppercase'),
|
|
'name' => 'ver_title_uppercase',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Background color'),
|
|
'name' => 'ver_bg_color',
|
|
'desc' => $this->l('Main menu backgrund color'),
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'image_upload',
|
|
'label' => $this->l('Background image'),
|
|
'name' => 'ver_bg_image',
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Main menu backgrund repeat'),
|
|
'name' => 'ver_bg_repeat',
|
|
'options' => array(
|
|
'query' => array(array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('Repeat XY'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('Repeat X'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Repeat Y'),
|
|
),
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('No repeat'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar top border '),
|
|
'name' => 'ver_border_top',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar bottom border '),
|
|
'name' => 'ver_border_bottom',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Menu bar left and right border'),
|
|
'name' => 'ver_border_sides',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Inner border'),
|
|
'name' => 'ver_border_inner',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link font size'),
|
|
'name' => 'ver_link_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Icon font size'),
|
|
'name' => 'ver_icon_fontsize',
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Main link top and bottom padding'),
|
|
'name' => 'ver_link_padding',
|
|
'desc' => $this->l('You can fit more elements thans to decrease of this value'),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links bold'),
|
|
'name' => 'ver_link_bold',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links italics'),
|
|
'name' => 'ver_link_italics',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('Main links uppercase'),
|
|
'name' => 'ver_link_uppercase',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link text color'),
|
|
'name' => 'ver_link_txt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover text color'),
|
|
'name' => 'ver_link_htxt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main link hover background color'),
|
|
'name' => 'ver_link_hbg_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legends text color'),
|
|
'name' => 'ver_legend_txt_color',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Legends background color'),
|
|
'name' => 'ver_legend_bg_color',
|
|
'size' => 30,
|
|
),
|
|
|
|
),
|
|
'submit' => array(
|
|
'name' => 'submitVerticalMenuConfig',
|
|
'title' => $this->l('Save'),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_submenutabs = array(
|
|
'form' => array(
|
|
'tab_name' => 'submenutabs_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Predefinied submenu tabs'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'custom_info',
|
|
'label' => $this->l('You can select this tabs in vertical or horizontal menu'),
|
|
'name' => '',
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_html = array(
|
|
'form' => array(
|
|
'tab_name' => 'customhtml_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Predefinied custom html content'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'custom_info',
|
|
'label' => $this->l('You can select this html content in submenu'),
|
|
'name' => '',
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_mobile = array(
|
|
'form' => array(
|
|
'tab_name' => 'mobile_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Mobile menu'),
|
|
'icon' => 'icon-cogs',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Mobile menu type'),
|
|
'name' => 'mobile_menu_style',
|
|
'desc' => $this->l('Push menu will float from left site,'),
|
|
'options' => array(
|
|
'query' => array(
|
|
/*
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('Accordion'),
|
|
),
|
|
*/
|
|
array(
|
|
'id_option' => 0,
|
|
'name' => $this->l('Push menu'),
|
|
),
|
|
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'select',
|
|
'label' => $this->l('Depth limit'),
|
|
'name' => 'mobile_menu_depth',
|
|
'desc' => $this->l('Push menu will float from left site,'),
|
|
'options' => array(
|
|
'query' => array(
|
|
array(
|
|
'id_option' => 4,
|
|
'name' => $this->l('4'),
|
|
),
|
|
array(
|
|
'id_option' => 3,
|
|
'name' => $this->l('3'),
|
|
),
|
|
array(
|
|
'id_option' => 2,
|
|
'name' => $this->l('2'),
|
|
),
|
|
array(
|
|
'id_option' => 1,
|
|
'name' => $this->l('1'),
|
|
),
|
|
),
|
|
'id' => 'id_option',
|
|
'name' => 'name',
|
|
),
|
|
),
|
|
array(
|
|
'type' => 'link_choice',
|
|
'label' => '',
|
|
'name' => 'link',
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'row_title' => $this->l('Design options'),
|
|
'type' => 'color',
|
|
'label' => $this->l('Main bar background color'),
|
|
'name' => 'hor_mb_bg',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Main bar text color'),
|
|
'name' => 'hor_mb_txt',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Main bar border'),
|
|
'name' => 'hor_mb_border',
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('First level of menu background color'),
|
|
'name' => 'hor_mb_c_bg',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Other level of menu background color'),
|
|
'name' => 'hor_mb_csl_bg',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Content border'),
|
|
'name' => 'hor_mb_c_border',
|
|
),
|
|
array(
|
|
'type' => 'border_generator',
|
|
'label' => $this->l('Content inner border'),
|
|
'name' => 'hor_mb_c_borderi',
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Content link color'),
|
|
'name' => 'hor_mb_c_txt',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Content link hover color'),
|
|
'name' => 'hor_mb_c_txth',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Content link hover background color'),
|
|
'name' => 'hor_mb_c_lhbg',
|
|
'size' => 30,
|
|
),
|
|
array(
|
|
'type' => 'color',
|
|
'label' => $this->l('Plus icon color'),
|
|
'name' => 'hor_mb_c_plus',
|
|
'size' => 30,
|
|
),
|
|
),
|
|
'submit' => array(
|
|
'name' => 'submitMobileMenu',
|
|
'title' => $this->l('Save'),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_custom = array(
|
|
'form' => array(
|
|
'tab_name' => 'customlinks_tab',
|
|
'assigned_list' => $this->renderListCustomLinks(),
|
|
'legend' => array(
|
|
'title' => $this->l('Custom links'),
|
|
'icon' => 'icon-link',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Label'),
|
|
'name' => 'label',
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'type' => 'text',
|
|
'label' => $this->l('Link'),
|
|
'name' => 'link',
|
|
'lang' => true,
|
|
),
|
|
array(
|
|
'type' => 'switch',
|
|
'label' => $this->l('New window'),
|
|
'name' => 'new_window',
|
|
'is_bool' => true,
|
|
'values' => array(
|
|
array(
|
|
'id' => 'active_on',
|
|
'value' => 1,
|
|
'label' => $this->l('Enabled'),
|
|
),
|
|
array(
|
|
'id' => 'active_off',
|
|
'value' => 0,
|
|
'label' => $this->l('Disabled'),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
'submit' => array(
|
|
'name' => 'submitBlocktopmenuLinks',
|
|
'title' => $this->l('Add'),
|
|
),
|
|
),
|
|
);
|
|
|
|
$fields_form_ietool = array(
|
|
'form' => array(
|
|
'tab_name' => 'ietool_tab',
|
|
'legend' => array(
|
|
'title' => $this->l('Import/export'),
|
|
'icon' => 'icon-download',
|
|
),
|
|
'input' => array(
|
|
array(
|
|
'type' => 'ietool',
|
|
'label' => $this->l('Import export tool'),
|
|
'name' => 'ietool-name',
|
|
),
|
|
),
|
|
),
|
|
|
|
);
|
|
|
|
$helper = new HelperForm();
|
|
|
|
$helper->show_toolbar = false;
|
|
$helper->table = $this->table;
|
|
$helper->module = $this;
|
|
$helper->default_form_language = $this->context->language->id;
|
|
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
|
|
|
|
$helper->identifier = $this->identifier;
|
|
$helper->submit_action = 'submitiqitmegamenuModule';
|
|
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false)
|
|
. '&configure=' . $this->name . '&tab_module=' . $this->tab . '&module_name=' . $this->name;
|
|
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
|
|
|
if (Tools::getIsset('updateiqitmenulinks') && !Tools::getValue('updateiqitmenulinks')) {
|
|
$fields_form_custom['form']['submit'] = array(
|
|
'name' => 'updateiqitmenulinks',
|
|
'title' => $this->l('Update'),
|
|
);
|
|
}
|
|
|
|
if (Tools::isSubmit('updateiqitmenulinks')) {
|
|
$fields_form_custom['form']['input'][] = array('type' => 'hidden', 'name' => 'updatelink');
|
|
$fields_form_custom['form']['input'][] = array('type' => 'hidden', 'name' => 'id_iqitmenulinks');
|
|
}
|
|
|
|
$helper->tpl_vars = array(
|
|
'fields_value' => $this->getConfigFormValues(), /* Add values for your inputs */
|
|
'languages' => $this->context->controller->getLanguages(),
|
|
'module_path' => $this->_path,
|
|
'id_language' => $this->context->language->id,
|
|
'choices' => $this->renderChoicesSelect(null, null, null, true),
|
|
'selected_links' => $this->makeMenuOptionMobile(),
|
|
);
|
|
|
|
return $helper->generateForm(array($fields_form_global, $fields_form_vertical, $fields_form_mobile, $fields_form_submenutabs, $fields_form_submenustyl, $fields_form_html, $fields_form_ietool, $fields_form_custom));
|
|
}
|
|
|
|
/**
|
|
* Set values for the inputs.
|
|
*/
|
|
protected function getConfigFormValues()
|
|
{
|
|
$var = array();
|
|
$id_shop = (int) Context::getContext()->shop->id;
|
|
|
|
foreach ($this->defaults_mobile as $default => $value) {
|
|
if ($default == 'hor_mb_border' || $default == 'hor_mb_c_border' || $default == 'hor_mb_c_borderi') {
|
|
$tmpborder = explode(';', Configuration::get($this->config_name . '_' . $default));
|
|
|
|
$var[$default]['width'] = $tmpborder[0];
|
|
$var[$default]['type'] = $tmpborder[1];
|
|
$var[$default]['color'] = $tmpborder[2];
|
|
} else {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
}
|
|
foreach ($this->defaults_horizontal as $default => $value) {
|
|
if ($default == 'hor_search_border' || $default == 'hor_titlep_borders' || $default == 'hor_border_top' || $default == 'hor_border_bottom' || $default == 'hor_border_sides' || $default == 'hor_border_inner' || $default == 'hor_sm_border_top' || $default == 'hor_sm_border_bottom' || $default == 'hor_sm_border_sides' || $default == 'hor_sm_border_inner') {
|
|
$tmpborder = explode(';', Configuration::get($this->config_name . '_' . $default));
|
|
|
|
$var[$default]['width'] = $tmpborder[0];
|
|
$var[$default]['type'] = $tmpborder[1];
|
|
$var[$default]['color'] = $tmpborder[2];
|
|
} else {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
}
|
|
foreach ($this->defaults_vertical as $default => $value) {
|
|
if ($default == 'ver_border_top' || $default == 'ver_border_bottom' || $default == 'ver_border_sides' || $default == 'ver_border_inner') {
|
|
$tmpborder = explode(';', Configuration::get($this->config_name . '_' . $default));
|
|
|
|
$var[$default]['width'] = $tmpborder[0];
|
|
$var[$default]['type'] = $tmpborder[1];
|
|
$var[$default]['color'] = $tmpborder[2];
|
|
} else {
|
|
$var[$default] = Configuration::get($this->config_name . '_' . $default);
|
|
}
|
|
}
|
|
if (Tools::getIsset('updateiqitmenulinks') && (int) Tools::getValue('id_iqitmenulinks') > 0) {
|
|
$var['updatelink'] = true;
|
|
$var['id_iqitmenulinks'] = (int) Tools::getValue('id_iqitmenulinks');
|
|
|
|
$link = IqitMenuLinks::getLinkLang((int) Tools::getValue('id_iqitmenulinks'), $id_shop);
|
|
|
|
$var['new_window'] = $link['new_window'];
|
|
|
|
foreach (Language::getLanguages(false) as $lang) {
|
|
$var['link'][(int) $lang['id_lang']] = (isset($link['link'][$lang['id_lang']]) ? $link['link'][$lang['id_lang']] : '');
|
|
$var['label'][(int) $lang['id_lang']] = (isset($link['label'][$lang['id_lang']]) ? $link['label'][$lang['id_lang']] : '');
|
|
}
|
|
} else {
|
|
foreach (Language::getLanguages(false) as $lang) {
|
|
$var['link'][(int) $lang['id_lang']] = '';
|
|
$var['label'][(int) $lang['id_lang']] = '';
|
|
}
|
|
$var['new_window'] = false;
|
|
}
|
|
return $var;
|
|
}
|
|
|
|
public function generateCss($allShops = false)
|
|
{
|
|
$css = '';
|
|
|
|
$menubgimage = Configuration::get($this->config_name . '_hor_bg_image');
|
|
$vermenubgimage = Configuration::get($this->config_name . '_ver_bg_image');
|
|
$submenubgimage = Configuration::get($this->config_name . '_hor_sm_bg_image');
|
|
|
|
//horizontal menu style
|
|
$css .= '
|
|
#iqitmegamenu-horizontal{
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_border_top'), 'top') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_border_bottom'), 'bottom') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_border_sides'), 'side') . '
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_bg_color') . ';
|
|
';
|
|
if ($menubgimage != '') {
|
|
$css .= 'background-image: url(' . $menubgimage . '); background-repeat: ' . $this->convertBgRepeat(Configuration::get($this->config_name . '_hor_bg_repeat')) . ';';
|
|
}
|
|
|
|
$css .= '}' . PHP_EOL;
|
|
|
|
$css .= '
|
|
#cbp-hrmenu .cbp-legend{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_legend_bg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_legend_txt_color') . ';
|
|
}
|
|
#cbp-hrmenu .cbp-legend .cbp-legend-arrow{
|
|
color: ' . Configuration::get($this->config_name . '_hor_legend_bg_color') . ';
|
|
}
|
|
#cbp-hrmenu > ul > li > a:hover, #cbp-hrmenu > ul > li.cbp-hropen > a, #cbp-hrmenu > ul > li.cbp-hropen > a:hover{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_link_hbg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_link_htxt_color') . ';
|
|
}
|
|
#cbp-hrmenu > ul > li > a, #cbp-hrmenu > ul > li > span.cbp-main-link{
|
|
color: ' . Configuration::get($this->config_name . '_hor_link_txt_color') . ';
|
|
line-height: ' . Configuration::get($this->config_name . '_hor_lineheight') . 'px;
|
|
padding-left: ' . Configuration::get($this->config_name . '_hor_link_padding') . 'px;
|
|
max-width: ' . Configuration::get($this->config_name . '_hor_maxwidth') . 'px;
|
|
padding-right: ' . Configuration::get($this->config_name . '_hor_link_padding') . 'px;
|
|
' . (Configuration::get($this->config_name . '_hor_link_bold') ? 'font-weight: bold;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_hor_link_italics') ? 'font-style: italic;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_hor_link_uppercase') ? 'text-transform: uppercase;' : '') . '
|
|
font-size: ' . Configuration::get($this->config_name . '_hor_link_fontsize') . 'px;
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_border_inner'), 'left') . '
|
|
}
|
|
#cbp-hrmenu .cbp-tab-title{
|
|
line-height: ' . (Configuration::get($this->config_name . '_hor_link_fontsize') + 1) . 'px;
|
|
}
|
|
@media (min-width: 1320px){
|
|
#cbp-hrmenu .cbp-tab-title{
|
|
line-height: ' . (Configuration::get($this->config_name . '_hor_link_fontsizeb') + 1) . 'px;
|
|
}
|
|
#cbp-hrmenu > ul > li > a, #cbp-hrmenu > ul > li > span.cbp-main-link{
|
|
font-size: ' . Configuration::get($this->config_name . '_hor_link_fontsizeb') . 'px;
|
|
padding-left: ' . Configuration::get($this->config_name . '_hor_link_paddingb') . 'px;
|
|
padding-right: ' . Configuration::get($this->config_name . '_hor_link_paddingb') . 'px;
|
|
}
|
|
}
|
|
.cbp-vertical-on-top .cbp-vertical-title{
|
|
line-height: ' . Configuration::get($this->config_name . '_hor_lineheight') . 'px;
|
|
}
|
|
' . PHP_EOL;
|
|
|
|
$css .= '#cbp-hrmenu > ul > li > a .cbp-mainlink-icon, #cbp-hrmenu > ul > li > a .cbp-mainlink-iicon{
|
|
font-size: ' . Configuration::get($this->config_name . '_hor_icon_fontsize') . 'px;
|
|
max-height: ' . Configuration::get($this->config_name . '_hor_icon_fontsize') . 'px;
|
|
}';
|
|
|
|
$css .= '
|
|
.cbp-hrmenu .cbp-hrsub-inner, .cbp-hrmenu ul.cbp-hrsub-level2, .cbp-hrsub-haslevel3 > .cbp-category-link-w > ul {
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_sm_border_top'), 'top') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_sm_border_bottom'), 'bottom') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_sm_border_sides'), 'side') . '
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_sm_bg_color') . ';
|
|
';
|
|
if ($submenubgimage != '') {
|
|
$css .= 'background-image: url(' . $submenubgimage . '); background-repeat: ' . $this->convertBgRepeat(Configuration::get($this->config_name . '_hor_sm_bg_repeat')) . ';';
|
|
}
|
|
|
|
$css .= '}' . PHP_EOL;
|
|
|
|
$borderarow = Configuration::get($this->config_name . '_hor_sm_border_top');
|
|
$borderarowexplode = explode(';', $borderarow);
|
|
|
|
$borderarowsides = Configuration::get($this->config_name . '_hor_sm_border_sides');
|
|
|
|
$css .= '.cbp-hrmenu .cbp-triangle-top{
|
|
border-bottom-color: ' . Configuration::get($this->config_name . '_hor_sm_bg_color') . ';
|
|
top: ' . $borderarowexplode[0] . 'px;
|
|
}
|
|
.cbp-hrmenu .cbp-triangle-left, #columns .cbp-hrmenu .cbp-triangle-left{
|
|
border-right-color: ' . Configuration::get($this->config_name . '_hor_sm_bg_color') . ';
|
|
left: ' . $borderarowsides[0] . 'px;
|
|
}
|
|
.cbp-hrmenu .cbp-triangle-top-back{' . $this->convertBorder($borderarow, 'bottom', 1) . '}
|
|
.cbp-hrmenu .cbp-triangle-left-back, #columns .cbp-hrmenu .cbp-triangle-left-back{' . $this->convertBorder($borderarowsides, 'right', 2) . '}
|
|
' . PHP_EOL;
|
|
$borderinner = Configuration::get($this->config_name . '_hor_sm_border_inner');
|
|
$borderinnerexplode = explode(';', $borderinner);
|
|
|
|
$boxshadow = Configuration::get($this->config_name . '_hor_sm_boxshadow');
|
|
|
|
$css .= '
|
|
.cbp-hrmenu .menu_column {
|
|
border-color: ' . $borderinnerexplode[2] . ';
|
|
}
|
|
';
|
|
|
|
if ($boxshadow) {
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-inner, .cbp-hrmenu ul.cbp-hrsub-level2, .cbp-hrsub-haslevel3:hover > .cbp-category-link-w > ul {
|
|
-webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
-moz-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
}
|
|
';
|
|
}
|
|
|
|
$css .= '
|
|
.cbp-hrmenu .cbp-hrsub-tabs-names li .cbp-inner-border-hider{
|
|
width: ' . $borderinnerexplode[0] . 'px;
|
|
right: ' . (-(int) ($borderinnerexplode[0])) . 'px;
|
|
}' . PHP_EOL;
|
|
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-tabs-names li{
|
|
' . $this->convertBorder($borderinner, 'bottom') . '
|
|
}
|
|
.cbp-hrmenu .cbp-tab-pane{
|
|
' . $this->convertBorder($borderinner, 'left') . '
|
|
}
|
|
.is_rtl .cbp-hrmenu .cbp-tab-pane{
|
|
' . $this->convertBorder($borderinner, 'right') . '
|
|
}
|
|
' . PHP_EOL;
|
|
|
|
if (Configuration::get($this->config_name . '_hor_s_width') && !Configuration::get($this->config_name . '_hor_sw_width') && !Configuration::get($this->config_name . '_hor_width')) {
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-tabs-names li{
|
|
' . $this->convertBorder($borderinner, 'left') . '
|
|
}';
|
|
}
|
|
|
|
$css .= '
|
|
#cbp-hrmenu1 .cbp-hrsub-inner .cbp-column-title, #cbp-hrmenu1 .cbp-hrsub-inner a.cbp-column-title:link,
|
|
#cbp-hrmenu .cbp-hrsub-inner .cbp-column-title, #cbp-hrmenu .cbp-hrsub-inner a.cbp-column-title:link {
|
|
font-size: ' . Configuration::get($this->config_name . '_hor_titlep_fontsize') . 'px;
|
|
line-height: ' . (Configuration::get($this->config_name . '_hor_titlep_fontsize') + 4) . 'px;
|
|
color: ' . Configuration::get($this->config_name . '_hor_titlep_color') . ';
|
|
' . (Configuration::get($this->config_name . '_hor_titlep_uppercase') ? 'text-transform: uppercase;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_hor_titlep_bold') ? 'font-weight: bold;' : '') . '
|
|
}
|
|
#cbp-hrmenu .cbp-hrsub-inner a.cbp-column-title:hover, #cbp-hrmenu1 .cbp-hrsub-inner a.cbp-column-title:hover {
|
|
color: ' . Configuration::get($this->config_name . '_hor_titlep_colorh') . ';
|
|
}
|
|
' . PHP_EOL;
|
|
|
|
if (Configuration::get($this->config_name . '_hor_titlep_border')) {
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-inner .cbp-column-title{
|
|
padding-bottom: 6px;
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_titlep_borders'), 'bottom') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-inner{
|
|
font-size: ' . Configuration::get($this->config_name . '_hor_subtxt_fontsize') . 'px;
|
|
line-height: ' . (Configuration::get($this->config_name . '_hor_subtxt_fontsize') + 4) . 'px;
|
|
color: ' . Configuration::get($this->config_name . '_hor_subtxt_color') . ';
|
|
}
|
|
#cbp-hrmenu .cbp-hrsub-inner a, #cbp-hrmenu .cbp-hrsub-inner a:link,
|
|
#cbp-hrmenu1 .cbp-hrsub-inner a, #cbp-hrmenu1 .cbp-hrsub-inner a:link{
|
|
color: ' . Configuration::get($this->config_name . '_hor_subtxt_color') . ';
|
|
}
|
|
#cbp-hrmenu .cbp-hrsub-inner a:hover, #cbp-hrmenu1 .cbp-hrsub-inner a:hover{
|
|
color: ' . Configuration::get($this->config_name . '_hor_subtxt_colorh') . ';
|
|
}
|
|
' . PHP_EOL;
|
|
|
|
if (!Configuration::get($this->config_name . '_hor_subtxt_arrow')) {
|
|
$css .= '.cbp-hrmenu .cbp-links li a:before{
|
|
display: none;
|
|
}
|
|
.cbp-hrmenu .cbp-links li, .cbp-hrmenu .cbp-links li a {
|
|
padding-left: 0px;
|
|
}
|
|
|
|
' . PHP_EOL;
|
|
}
|
|
|
|
if (!Configuration::get($this->config_name . '_hor_subtxt_level')) {
|
|
$css .= '.cbp-hrmenu .cbp-links li.cbp-hrsub-haslevel2 > a:after{
|
|
display: none;
|
|
}
|
|
' . PHP_EOL;
|
|
}
|
|
|
|
if (Configuration::get($this->config_name . '_hor_icon_position')) {
|
|
$css .= '#cbp-hrmenu > ul > li > a .cbp-mainlink-icon, #cbp-hrmenu > ul > li > a .cbp-mainlink-iicon{
|
|
display: block;
|
|
margin: 0 auto;
|
|
text-align: center;
|
|
position: absolute;
|
|
left: 0px;
|
|
right: 0px;
|
|
top: 10px;
|
|
}
|
|
#cbp-hrmenu > ul > li > a, #cbp-hrmenu > ul > li > span.cbp-main-link{
|
|
padding-top: 35px;
|
|
line-height: ' . (Configuration::get($this->config_name . '_hor_lineheight') - 12) . 'px;
|
|
}
|
|
#cbp-hrmenu .cbp-tab-title{
|
|
position: static;
|
|
}
|
|
';
|
|
}
|
|
|
|
$css .= '
|
|
.cbp-vertical-title{
|
|
background-color: ' . Configuration::get($this->config_name . '_ver_title_bg') . ';
|
|
color: ' . Configuration::get($this->config_name . '_ver_title_txt') . ';
|
|
font-size: ' . Configuration::get($this->config_name . '_ver_title_size') . 'px;
|
|
line-height: ' . Configuration::get($this->config_name . '_ver_title_height') . 'px;
|
|
' . (Configuration::get($this->config_name . '_ver_title_bold') ? 'font-weight: bold;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_ver_title_uppercase') ? 'text-transform: uppercase;' : '') . '
|
|
}
|
|
.cbp-vertical-title:hover{
|
|
background-color: ' . Configuration::get($this->config_name . '_ver_title_bgh') . ';
|
|
color: ' . Configuration::get($this->config_name . '_ver_title_txth') . ';
|
|
}' . PHP_EOL;
|
|
|
|
$css .= '
|
|
.cbp-hrmenu.cbp-vertical > ul{
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_ver_border_top'), 'top') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_ver_border_bottom'), 'bottom') . '
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_ver_border_sides'), 'side') . '
|
|
background-color: ' . Configuration::get($this->config_name . '_ver_bg_color') . ';
|
|
';
|
|
if ($vermenubgimage != '') {
|
|
$css .= 'background-image: url(' . $vermenubgimage . '); background-repeat: ' . $this->convertBgRepeat(Configuration::get($this->config_name . '_ver_bg_repeat')) . ';';
|
|
}
|
|
|
|
$css .= '}' . PHP_EOL;
|
|
|
|
$css .= '
|
|
.cbp-vertical .cbp-legend{
|
|
background-color: ' . Configuration::get($this->config_name . '_ver_legend_bg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_ver_legend_txt_color') . ';
|
|
}
|
|
.cbp-vertical .cbp-legend .cbp-legend-arrow{
|
|
color: ' . Configuration::get($this->config_name . '_ver_legend_bg_color') . ';
|
|
}
|
|
#cbp-hrmenu1 > ul > li.cbp-hropen > a, #cbp-hrmenu1 > ul > li.cbp-hropen > a:hover{
|
|
background-color: ' . Configuration::get($this->config_name . '_ver_link_hbg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_ver_link_htxt_color') . ';
|
|
}
|
|
#cbp-hrmenu1 > ul > li > a, #cbp-hrmenu1 > ul > li > span.cbp-main-link{
|
|
color: ' . Configuration::get($this->config_name . '_ver_link_txt_color') . ';
|
|
padding-top: ' . Configuration::get($this->config_name . '_ver_link_padding') . 'px;
|
|
padding-bottom: ' . Configuration::get($this->config_name . '_ver_link_padding') . 'px;
|
|
' . (Configuration::get($this->config_name . '_ver_link_bold') ? 'font-weight: bold;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_ver_link_italics') ? 'font-style: italic;' : '') . '
|
|
' . (Configuration::get($this->config_name . '_ver_link_uppercase') ? 'text-transform: uppercase;' : '') . '
|
|
font-size: ' . Configuration::get($this->config_name . '_ver_link_fontsize') . 'px;
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_ver_border_inner'), 'top') . '
|
|
}' . PHP_EOL;
|
|
|
|
$css .= '#cbp-hrmenu1 > ul > li > a .cbp-mainlink-icon, #cbp-hrmenu1 > ul > li > a .cbp-mainlink-iicon{
|
|
font-size: ' . Configuration::get($this->config_name . '_ver_icon_fontsize') . 'px;
|
|
max-height: ' . Configuration::get($this->config_name . '_ver_icon_fontsize') . 'px;
|
|
}';
|
|
|
|
if (Configuration::get($this->config_name . '_ver_boxshadow')) {
|
|
$css .= '.cbp-vertical-on-top .cbp-hrmenu.cbp-vertical > ul{
|
|
-webkit-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
-moz-box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
|
|
}
|
|
';
|
|
}
|
|
|
|
$tabs = array();
|
|
$tabsV = array();
|
|
$tabs = IqitMenuTab::getTabsFrontend(1, true);
|
|
$tabsV = IqitMenuTab::getTabsFrontend(2, true);
|
|
$tabs = array_merge($tabs, $tabsV);
|
|
|
|
foreach ($tabs as $key => $tab) {
|
|
if ($tabs[$key]['bg_color'] != '' || $tabs[$key]['txt_color'] != '') {
|
|
$css .= '.cbp-hrmenu > ul > li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' > a, .cbp-hrmenu > ul > li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' > span.cbp-main-link
|
|
{
|
|
' . ($tabs[$key]['bg_color'] != '' ? 'background-color: ' . $tabs[$key]['bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['txt_color'] != '' ? 'color: ' . $tabs[$key]['txt_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['h_bg_color'] != '' || $tabs[$key]['h_txt_color'] != '') {
|
|
$css .= '.cbp-hrmenu > ul > li.cbp-hropen#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' > a, .cbp-hrmenu > ul > li.cbp-hropen#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' > a:hover
|
|
{
|
|
' . ($tabs[$key]['h_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['h_bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['h_txt_color'] != '' ? 'color: ' . $tabs[$key]['h_txt_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['labeltxt_color'] != '' || $tabs[$key]['labelbg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-legend-main{
|
|
' . ($tabs[$key]['labelbg_color'] != '' ? 'background-color: ' . $tabs[$key]['labelbg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['labeltxt_color'] != '' ? 'color: ' . $tabs[$key]['labeltxt_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['labelbg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-legend-main .cbp-legend-arrow{
|
|
' . ($tabs[$key]['labelbg_color'] != '' ? 'color: ' . $tabs[$key]['labelbg_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_bg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-triangle-top{
|
|
border-bottom-color: ' . $tabs[$key]['submenu_bg_color'] . ';
|
|
}';
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_bg_color'] != '' || $tabs[$key]['submenu_image'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner {
|
|
' . ($tabs[$key]['submenu_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['submenu_bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['submenu_image'] != '' ? 'background-image: url(' . $tabs[$key]['submenu_image'] . ');' : '') . '
|
|
background-repeat: ' . $this->convertBgRepeat($tabs[$key]['submenu_repeat']) . ';
|
|
background-position: ' . $this->convertBgPosition($tabs[$key]['submenu_bg_position']) . ';
|
|
|
|
}
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' ul.cbp-hrsub-level2 {
|
|
' . ($tabs[$key]['submenu_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['submenu_bg_color'] . ';' : '') . '
|
|
}
|
|
';
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_title_color'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner .cbp-column-title, .cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner a.cbp-column-title:link {
|
|
color: ' . $tabs[$key]['submenu_title_color'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_title_colorh'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner a.cbp-column-title:hover {
|
|
color: ' . $tabs[$key]['submenu_title_colorh'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_titleb_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner .cbp-column-title {
|
|
border-color: ' . $tabs[$key]['submenu_titleb_color'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_link_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner a:link, .cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner a, .cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner {
|
|
color: ' . $tabs[$key]['submenu_link_color'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_hover_color'] != '') {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-menu-column-inner a:hover {
|
|
color: ' . $tabs[$key]['submenu_hover_color'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_border_t'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner{
|
|
border-top-color: ' . $tabs[$key]['submenu_border_t'] . ';
|
|
}
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-triangle-top-back{
|
|
border-bottom-color: ' . $tabs[$key]['submenu_border_t'] . ';
|
|
}
|
|
' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_border_r'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner{
|
|
border-right-color: ' . $tabs[$key]['submenu_border_r'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_border_b'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner{
|
|
border-bottom-color: ' . $tabs[$key]['submenu_border_b'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_border_l'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner{
|
|
border-left-color: ' . $tabs[$key]['submenu_border_l'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_border_i'] != '') {
|
|
$css .= '
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner .menu_column, .cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-tabs-names li,
|
|
.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-inner .cbp-tab-pane
|
|
{
|
|
border-color: ' . $tabs[$key]['submenu_border_i'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (Configuration::get($this->config_name . '_hor_s_width') && !Configuration::get($this->config_name . '_hor_sw_width') && !Configuration::get($this->config_name . '_hor_width')) {
|
|
$css .= '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab'] . ' .cbp-hrsub-tabs-names li{
|
|
border-left-color: ' . $tabs[$key]['submenu_border_i'] . ';
|
|
}';
|
|
}
|
|
|
|
if ($tab['submenu_type'] == 2) {
|
|
if (Tools::strlen(($tab['submenu_content']))) {
|
|
$css .= $this->generateSubmenuCss($this->buildSubmenuTree(Tools::jsonDecode($tab['submenu_content'], true), true, true), '.cbp-hrmenu li#cbp-hrmenu-tab-' . $tabs[$key]['id_tab']);
|
|
}
|
|
}
|
|
}
|
|
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-inner .cbp-tabs-names li a
|
|
{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_sm_tab_bg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_sm_tab_txt_color') . ';
|
|
}
|
|
.cbp-hrmenu .cbp-submenu-it-indicator{ color: ' . Configuration::get($this->config_name . '_hor_sm_tab_txt_color') . ';}' . PHP_EOL;
|
|
|
|
$css .= '.cbp-tabs-names li a:hover, .cbp-hrmenu .cbp-hrsub-tabs-names li.active a,
|
|
.cbp-tabs-names li .cbp-inner-border-hider
|
|
{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_sm_tab_hbg_color') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_sm_tab_htxt_color') . ';
|
|
|
|
}
|
|
.cbp-hrmenu li.active .cbp-submenu-it-indicator{ color: ' . Configuration::get($this->config_name . '_hor_sm_tab_htxt_color') . ';}' . PHP_EOL;
|
|
|
|
$tabs = IqitMenuTab::getTabsFrontend(3, true);
|
|
|
|
foreach ($tabs as $key => $tab) {
|
|
if ($tabs[$key]['bg_color'] != '' || $tabs[$key]['txt_color'] != '') {
|
|
$css .= '.cbp-hrmenu .cbp-hrsub-inner .cbp-tabs-names li.innertab-' . $tabs[$key]['id_tab'] . ' a
|
|
{
|
|
' . ($tabs[$key]['bg_color'] != '' ? 'background-color: ' . $tabs[$key]['bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['txt_color'] != '' ? 'color: ' . $tabs[$key]['txt_color'] . ';' : '') . '
|
|
}
|
|
.cbp-hrmenu li.innertab-' . $tabs[$key]['id_tab'] . ' .cbp-submenu-it-indicator{ ' . ($tabs[$key]['txt_color'] != '' ? 'color: ' . $tabs[$key]['txt_color'] . ';' : '') . '}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['h_bg_color'] != '' || $tabs[$key]['h_txt_color'] != '') {
|
|
$css .= '.cbp-tabs-names li.innertab-' . $tabs[$key]['id_tab'] . ' a:hover, .cbp-hrmenu .cbp-hrsub-tabs-names li.active.innertab-' . $tabs[$key]['id_tab'] . ' a,
|
|
.cbp-tabs-names li.innertab-' . $tabs[$key]['id_tab'] . ' .cbp-inner-border-hider
|
|
{
|
|
' . ($tabs[$key]['h_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['h_bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['h_txt_color'] != '' ? 'color: ' . $tabs[$key]['h_txt_color'] . ';' : '') . '
|
|
}
|
|
.cbp-hrmenu li.innertab-' . $tabs[$key]['id_tab'] . '.active .cbp-submenu-it-indicator{' . ($tabs[$key]['h_txt_color'] != '' ? 'color: ' . $tabs[$key]['h_txt_color'] . ';' : '') . '}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['labeltxt_color'] != '' || $tabs[$key]['labelbg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li.innertab-' . $tabs[$key]['id_tab'] . ' .cbp-legend-inner{
|
|
' . ($tabs[$key]['labelbg_color'] != '' ? 'background-color: ' . $tabs[$key]['labelbg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['labeltxt_color'] != '' ? 'color: ' . $tabs[$key]['labeltxt_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['labelbg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li.innertab-' . $tabs[$key]['id_tab'] . ' .cbp-legend-inner .cbp-legend-arrow{
|
|
' . ($tabs[$key]['labelbg_color'] != '' ? 'color: ' . $tabs[$key]['labelbg_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['labelbg_color'] != '') {
|
|
$css .= '.cbp-hrmenu li.innertab-' . $tabs[$key]['id_tab'] . ' .cbp-legend-inner .cbp-legend-arrow{
|
|
' . ($tabs[$key]['labelbg_color'] != '' ? 'color: ' . $tabs[$key]['labelbg_color'] . ';' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if ($tabs[$key]['submenu_bg_color'] != '' || $tabs[$key]['submenu_image'] != '') {
|
|
$css .= '.cbp-hrmenu .innertabcontent-' . $tabs[$key]['id_tab'] . '{
|
|
' . ($tabs[$key]['submenu_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['submenu_bg_color'] . ';' : '') . '
|
|
' . ($tabs[$key]['submenu_image'] != '' ? 'background-image: url(' . $tabs[$key]['submenu_image'] . ');' : '') . '
|
|
background-repeat: ' . $this->convertBgRepeat($tabs[$key]['submenu_repeat']) . ';
|
|
background-position: ' . $this->convertBgPosition($tabs[$key]['submenu_bg_position']) . ';
|
|
}
|
|
.cbp-hrmenu .innertabcontent-' . $tabs[$key]['id_tab'] . ' ul.cbp-hrsub-level2 {
|
|
' . ($tabs[$key]['submenu_bg_color'] != '' ? 'background-color: ' . $tabs[$key]['submenu_bg_color'] . '!important;' : '') . '
|
|
}
|
|
';
|
|
}
|
|
|
|
if ($tab['submenu_type'] == 2) {
|
|
if (Tools::strlen(($tab['submenu_content']))) {
|
|
$css .= $this->generateSubmenuCss($this->buildSubmenuTree(Tools::jsonDecode($tab['submenu_content'], true), true, true), '.cbp-hrmenu .innertabcontent-' . $tabs[$key]['id_tab']);
|
|
}
|
|
}
|
|
}
|
|
|
|
$hor_mb_border = Configuration::get($this->config_name . '_hor_mb_border');
|
|
|
|
$hor_mb_c_border = Configuration::get($this->config_name . '_hor_mb_c_border');
|
|
|
|
$css .= '#iqitmegamenu-mobile #iqitmegamenu-shower, #cbp-close-mobile
|
|
{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_bg') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_txt') . ';
|
|
' . $this->convertBorder($hor_mb_border, 'all') . '
|
|
|
|
}
|
|
#iqitmegamenu-mobile .iqitmegamenu-icon{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_bg') . ';
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_txt') . ';
|
|
}
|
|
|
|
.cbp-mobilesubmenu{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_c_bg') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txt') . ';
|
|
' . $this->convertBorder($hor_mb_c_border, 'bottom') . '
|
|
' . $this->convertBorder($hor_mb_c_border, 'left') . '
|
|
' . $this->convertBorder($hor_mb_c_border, 'right') . '
|
|
}
|
|
#iqitmegamenu-accordion{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_c_bg') . ';
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txt') . ';
|
|
}
|
|
#iqitmegamenu-mobile .iqitmegamenu-accordion > li ul{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_csl_bg') . ';
|
|
}
|
|
#iqitmegamenu-accordion.cbp-spmenu > li ul{
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_csl_bg') . ';
|
|
}
|
|
#iqitmegamenu-mobile .iqitmegamenu-accordion > li ul a{
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_mb_c_borderi'), 'top') . '
|
|
}
|
|
#iqitmegamenu-mobile .iqitmegamenu-accordion > li{
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_mb_c_borderi'), 'bottom') . '
|
|
}
|
|
.cbp-spmenu-vertical a{
|
|
' . $this->convertBorder(Configuration::get($this->config_name . '_hor_mb_c_borderi'), 'bottom') . '
|
|
}
|
|
#iqitmegamenu-accordion.cbp-spmenu > li ul div.responsiveInykator{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txt') . ';
|
|
}
|
|
#iqitmegamenu-accordion li a{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txt') . ';
|
|
}
|
|
#iqitmegamenu-mobile .iqitmegamenu-accordion li a:hover{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txth') . ';
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_c_lhbg') . ';
|
|
padding-left: 10px;
|
|
}
|
|
#iqitmegamenu-accordion li a:hover{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_txth') . ';
|
|
background-color: ' . Configuration::get($this->config_name . '_hor_mb_c_lhbg') . ';
|
|
|
|
}
|
|
|
|
#iqitmegamenu-accordion div.responsiveInykator{
|
|
color: ' . Configuration::get($this->config_name . '_hor_mb_c_plus') . ';
|
|
}
|
|
|
|
' . PHP_EOL;
|
|
|
|
$css .= Configuration::get($this->config_name . '_hor_custom_css');
|
|
|
|
$css = trim(preg_replace('/\s+/', ' ', $css));
|
|
|
|
|
|
if ($allShops) {
|
|
$shops = Shop::getShopsCollection();
|
|
foreach ($shops as $shop) {
|
|
$myFile = $this->local_path . "views/css/iqitmegamenu_s_" . (int) $shop->id . ".css";
|
|
file_put_contents($myFile, $css);
|
|
}
|
|
} else {
|
|
if (Shop::getContext() == Shop::CONTEXT_SHOP) {
|
|
$myFile = $this->local_path . "views/css/iqitmegamenu_s_" . (int) $this->context->shop->getContextShopID() . ".css";
|
|
self::clearAssetsCache();
|
|
|
|
if (file_put_contents($myFile, $css)) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function generateSubmenuCss($submenu, $parent)
|
|
{
|
|
$css = '' . PHP_EOL;
|
|
foreach ($submenu as $key => $element) {
|
|
if (isset($element['content_s']['bg_color']) ||
|
|
isset($element['content_s']['br_top_st']) ||
|
|
isset($element['content_s']['br_right_st']) ||
|
|
isset($element['content_s']['br_bottom_st']) ||
|
|
isset($element['content_s']['br_left_st']) ||
|
|
isset($element['content_s']['c_m_t']) ||
|
|
isset($element['content_s']['c_m_r']) ||
|
|
isset($element['content_s']['c_m_b']) ||
|
|
isset($element['content_s']['c_m_l'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner{
|
|
' . (isset($element['content_s']['bg_color']) && $element['content_s']['bg_color'] != '' ? 'background-color: ' . $element['content_s']['bg_color'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_top_st']) && $element['content_s']['br_top_st'] != '' ? 'border-top-style: ' . $element['content_s']['br_top_st'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_top_wh']) && $element['content_s']['br_top_wh'] != '' ? 'border-top-width: ' . $element['content_s']['br_top_wh'] . 'px;' : '') . '
|
|
' . (isset($element['content_s']['br_right_st']) && $element['content_s']['br_right_st'] != '' ? 'border-right-style: ' . $element['content_s']['br_right_st'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_right_wh']) && $element['content_s']['br_right_wh'] != '' ? 'border-right-width: ' . $element['content_s']['br_right_wh'] . 'px;' : '') . '
|
|
' . (isset($element['content_s']['br_bottom_st']) && $element['content_s']['br_bottom_st'] != '' ? 'border-bottom-style: ' . $element['content_s']['br_bottom_st'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_bottom_wh']) && $element['content_s']['br_bottom_wh'] != '' ? 'border-bottom-width: ' . $element['content_s']['br_bottom_wh'] . 'px;' : '') . '
|
|
' . (isset($element['content_s']['br_left_st']) && $element['content_s']['br_left_st'] != '' ? 'border-left-style: ' . $element['content_s']['br_left_st'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_left_wh']) && $element['content_s']['br_left_wh'] != '' ? 'border-left-width: ' . $element['content_s']['br_left_wh'] . 'px;' : '') . '
|
|
|
|
' . (isset($element['content_s']['br_top_c']) && $element['content_s']['br_top_c'] != '' ? 'border-top-color: ' . $element['content_s']['br_top_c'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_right_c']) && $element['content_s']['br_right_c'] != '' ? 'border-right-color: ' . $element['content_s']['br_right_c'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_bottom_c']) && $element['content_s']['br_bottom_c'] != '' ? 'border-bottom-color: ' . $element['content_s']['br_bottom_c'] . ';' : '') . '
|
|
' . (isset($element['content_s']['br_left_c']) && $element['content_s']['br_left_c'] != '' ? 'border-left-color: ' . $element['content_s']['br_left_c'] . ';' : '') . '
|
|
|
|
' . (isset($element['content_s']['c_m_t']) ? 'margin-top: -10px;' : '') . '
|
|
' . (isset($element['content_s']['c_m_r']) ? 'margin-right: -10px;' : '') . '
|
|
' . (isset($element['content_s']['c_m_b']) ? 'margin-bottom: -10px;' : '') . '
|
|
' . (isset($element['content_s']['c_m_l']) ? 'margin-left: -10px;' : '') . '
|
|
|
|
' . (isset($element['content_s']['c_p_t']) ? 'padding-top: 10px;' : '') . '
|
|
' . (isset($element['content_s']['c_p_r']) ? 'padding-right: 10px;' : '') . '
|
|
' . (isset($element['content_s']['c_p_b']) ? 'padding-bottom: 10px;' : '') . '
|
|
' . (isset($element['content_s']['c_p_l']) ? 'padding-left: 10px;' : '') . '
|
|
|
|
}
|
|
' . $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner ul.cbp-hrsub-level2 {
|
|
' . (isset($element['content_s']['bg_color']) && $element['content_s']['bg_color'] != '' ? 'background-color: ' . $element['content_s']['bg_color'] . '!important;' : '') . '
|
|
}
|
|
|
|
' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['legend_bg']) || isset($element['content_s']['legend_txt'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner .cbp-legend-inner{
|
|
' . (isset($element['content_s']['legend_bg']) && $element['content_s']['legend_bg'] != '' ? 'background-color: ' . $element['content_s']['legend_bg'] . ';' : '') . '
|
|
' . (isset($element['content_s']['legend_txt']) && $element['content_s']['legend_txt'] != '' ? 'color: ' . $element['content_s']['legend_txt'] . ';' : '') . '
|
|
|
|
}' . PHP_EOL;
|
|
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner .cbp-legend-arrow{
|
|
' . (isset($element['content_s']['legend_bg']) && $element['content_s']['legend_bg'] != '' ? 'color: ' . $element['content_s']['legend_bg'] . ';' : '') . '
|
|
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['title_color'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner .cbp-column-title{
|
|
color: ' . $element['content_s']['title_color'] . ' !important;
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['title_colorh'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner .cbp-column-title:hover{
|
|
color: ' . $element['content_s']['title_colorh'] . ' !important;
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['title_borderc'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner .cbp-column-title{
|
|
border-color: ' . $element['content_s']['title_borderc'] . ' !important;
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['txt_color'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner a:link, ' . $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner a,' . $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner {
|
|
color: ' . $element['content_s']['txt_color'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content_s']['txt_colorh'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . ' > .cbp-menu-column-inner a:hover {
|
|
color: ' . $element['content_s']['txt_colorh'] . ';
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['content']['absolute'])) {
|
|
$css .= $parent . ' .menu-element-id-' . $element['elementId'] . '{
|
|
' . (isset($element['content']['i_a_t']) && $element['content']['i_a_t'] != '' ? 'top: ' . $element['content']['i_a_t'] . 'px;' : '') . '
|
|
' . (isset($element['content']['i_a_r']) && $element['content']['i_a_r'] != '' ? 'right: ' . $element['content']['i_a_r'] . 'px;' : '') . '
|
|
' . (isset($element['content']['i_a_b']) && $element['content']['i_a_b'] != '' ? 'bottom: ' . $element['content']['i_a_b'] . 'px;' : '') . '
|
|
' . (isset($element['content']['i_a_l']) && $element['content']['i_a_l'] != '' ? 'left: ' . $element['content']['i_a_l'] . 'px;' : '') . '
|
|
}' . PHP_EOL;
|
|
}
|
|
|
|
if (isset($element['children'])) {
|
|
$css .= $this->generateSubmenuCss($element['children'], $parent);
|
|
}
|
|
}
|
|
|
|
return $css;
|
|
}
|
|
/**
|
|
* Add the CSS & JavaScript files you want to be added on the FO.
|
|
*/
|
|
public function hookHeader()
|
|
{
|
|
$jsVars = array();
|
|
|
|
|
|
$this->user_groups = ($this->context->customer->isLogged() ? $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP')));
|
|
$this->hor_sm_order = (Configuration::get($this->config_name . '_hor_sm_order') == 1 ? ' ORDER BY c.`level_depth` ASC, cl.`name` ASC' : '');
|
|
|
|
if (Configuration::get($this->config_name . '_hor_bootstrap')) {
|
|
$this->context->controller->registerStylesheet('modules-'.$this->name.'-style-bootstrap', 'modules/'.$this->name.'/views/css/bootstrap.min.css', ['media' => 'all', 'priority' => 149]);
|
|
$this->context->controller->registerJavascript('modules'.$this->name.'-script-bootstrap', 'modules/'.$this->name.'/views/js/bootstrap.min.js', ['position' => 'bottom', 'priority' => 149]);
|
|
}
|
|
|
|
$this->context->controller->registerStylesheet('font-awesome', 'modules/'.$this->name.'/views/css/font-awesome.min.css', ['media' => 'all', 'priority' => 149]);
|
|
|
|
$this->context->controller->registerJavascript('modules'.$this->name.'-script', 'modules/'.$this->name.'/views/js/front.js', ['position' => 'bottom', 'priority' => 150]);
|
|
|
|
|
|
if (Configuration::get($this->config_name . '_hor_sticky')) {
|
|
$jsVars['sticky'] = true;
|
|
} else {
|
|
$jsVars['sticky'] = false;
|
|
}
|
|
|
|
|
|
if (Configuration::get($this->config_name . '_mobile_menu_style')) {
|
|
$jsVars['mobileType'] = 'accordion';
|
|
} else {
|
|
$jsVars['mobileType'] = 'push';
|
|
}
|
|
|
|
$jsVars['containerSelector'] = '#wrapper .container';
|
|
|
|
Media::addJsDef(array(
|
|
'iqitmegamenu' => $jsVars));
|
|
|
|
$this->context->controller->registerStylesheet('modules-'.$this->name.'-style', 'modules/'.$this->name.'/views/css/front.css', ['media' => 'all', 'priority' => 150]);
|
|
|
|
if (Shop::getContext() == Shop::CONTEXT_SHOP) {
|
|
$this->context->controller->registerStylesheet('modules-'.$this->name.'-style-custom', 'modules/'.$this->name.'/views/css/iqitmegamenu_s_'.(int) $this->context->shop->getContextShopID().'.css', ['media' => 'all', 'priority' => 151]);
|
|
}
|
|
|
|
if ($this->context->language->is_rtl) {
|
|
$this->context->controller->registerStylesheet('modules-'.$this->name.'-style-rtl', 'modules/'.$this->name.'/views/css/rtl.css', ['media' => 'all', 'priority' => 152]);
|
|
}
|
|
}
|
|
|
|
public function renderWidget($hookName = null, array $configuration = [])
|
|
{
|
|
if ($hookName == null && isset($configuration['hook'])) {
|
|
$hookName = $configuration['hook'];
|
|
}
|
|
|
|
if ( preg_match('/^displayLeftColumnd*$/', $hookName) || preg_match('/^displayLeftColumnProductd*$/', $hookName) ) {
|
|
if (Configuration::get($this->config_name . '_ver_position') != 1) {
|
|
return;
|
|
}
|
|
$templateFile = 'vertical.tpl';
|
|
} elseif ((preg_match('/^displayNavFullWidth\d*$/', $hookName)) || (preg_match('/^displayTop\d*$/', $hookName)) || (preg_match('/^displayIqitMenu\d*$/', $hookName))) {
|
|
$templateFile = 'horizontal.tpl';
|
|
}
|
|
|
|
|
|
|
|
if (!$this->isCached('module:'.$this->name.'/views/templates/hook/'. $templateFile, $this->getCacheId())) {
|
|
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
|
|
}
|
|
return $this->fetch('module:'.$this->name.'/views/templates/hook/'.$templateFile, $this->getCacheId());
|
|
}
|
|
|
|
public function getWidgetVariables($hookName = null, array $configuration = [])
|
|
{
|
|
if ($hookName == null && isset($configuration['hook'])) {
|
|
$hookName = $configuration['hook'];
|
|
}
|
|
|
|
if ( preg_match('/^displayLeftColumnd*$/', $hookName) || preg_match('/^displayLeftColumnProductd*$/', $hookName) ) {
|
|
return $this->_prepareHookVertical();
|
|
} elseif ((preg_match('/^displayNavFullWidth\d*$/', $hookName)) || (preg_match('/^displayTop\d*$/', $hookName)) || (preg_match('/^displayIqitMenu\d*$/', $hookName))) {
|
|
$varsHorizontal = $this->_prepareHook();
|
|
$varsVertical = array();
|
|
|
|
$pos = Configuration::get($this->config_name . '_ver_position');
|
|
if ($pos == 2 || $pos == 3) {
|
|
$varsVertical = $this->_prepareHookVertical($pos);
|
|
}
|
|
return array_merge($varsHorizontal, $varsVertical);
|
|
}
|
|
}
|
|
|
|
public function _prepareHookVertical($pos = 0)
|
|
{
|
|
$menu_settings_v = array(
|
|
'ver_animation' => Configuration::get($this->config_name . '_ver_animation'),
|
|
'ver_arrow' => Configuration::get($this->config_name . '_ver_arrow'),
|
|
'ver_position' => $pos,
|
|
'ver_s_arrow' => Configuration::get($this->config_name . '_ver_s_arrow'),
|
|
);
|
|
|
|
return [
|
|
'menu_settings_v' => $menu_settings_v,
|
|
'vertical_menu' => $this->makeMegaMenu(2),
|
|
];
|
|
}
|
|
|
|
public function _prepareHook()
|
|
{
|
|
$sw_width = Configuration::get($this->config_name . '_hor_sw_width');
|
|
$menu_settings = array(
|
|
'hor_width' => Configuration::get($this->config_name . '_hor_width'),
|
|
'hor_sw_width' => $sw_width,
|
|
'hor_s_width' => Configuration::get($this->config_name . '_hor_s_width'),
|
|
'hor_sticky' => Configuration::get($this->config_name . '_hor_sticky'),
|
|
'hor_s_transparent' => Configuration::get($this->config_name . '_hor_s_transparent'),
|
|
'hor_animation' => Configuration::get($this->config_name . '_hor_animation'),
|
|
'hor_center' => Configuration::get($this->config_name . '_hor_center'),
|
|
'hor_arrow' => Configuration::get($this->config_name . '_hor_arrow'),
|
|
'hor_s_arrow' => Configuration::get($this->config_name . '_hor_s_arrow'),
|
|
|
|
);
|
|
|
|
$small = Image::getSize(ImageType::getFormattedName('small'));
|
|
|
|
return [
|
|
'mobile_menu_style' => Configuration::get($this->config_name . '_mobile_menu_style'),
|
|
'mobile_menu' => $this->makeMenuMobile(),
|
|
'menu_settings' => $menu_settings,
|
|
'horizontal_menu' => $this->makeMegaMenu(1),
|
|
'this_path' => $this->_path,
|
|
'homeSize' => Image::getSize(ImageType::getFormattedName('home')),
|
|
'mediumSize' => $small,
|
|
'manufacturerSize' => $small,
|
|
|
|
];
|
|
}
|
|
|
|
public function renderSelectedTabsSelect($tabs)
|
|
{
|
|
$id_shop = (int) Context::getContext()->shop->id;
|
|
$id_lang = (int) Context::getContext()->language->id;
|
|
$html = '<select name="items[]" id="items" multiple="multiple" style="width: 300px; height: 160px;" >';
|
|
if (Tools::strlen($tabs)) {
|
|
$tabs = explode(',', $tabs);
|
|
foreach ($tabs as $tab_id) {
|
|
$tab = new IqitMenuTab($tab_id, $id_lang, $id_shop);
|
|
$html .= '<option selected="selected" value="' . $tab->id . '">' . $tab->title . '(id: ' . $tab->id . ')</option>';
|
|
}
|
|
}
|
|
$html .= '</select>';
|
|
return $html;
|
|
}
|
|
|
|
public function renderChoicesTabsSelect()
|
|
{
|
|
$tabs = array();
|
|
$tabs = IqitMenuTab::getTabs(3);
|
|
$html = '<select name="availableItems" id="availableItems" multiple="multiple" style="width: 300px; height: 160px;" >';
|
|
foreach ($tabs as $tab) {
|
|
$html .= '<option value="' . $tab['id_tab'] . '">' . $tab['title'] . '(id: ' . $tab['id_tab'] . ')</option>';
|
|
}
|
|
$html .= '</select>';
|
|
return $html;
|
|
}
|
|
|
|
public function renderManufacturersSelect()
|
|
{
|
|
$return_manufacturers = array();
|
|
$manufacturers = Manufacturer::getManufacturers(false, $this->context->language->id);
|
|
foreach ($manufacturers as $key => $manufacturer) {
|
|
$return_manufacturers[$key]['name'] = $manufacturer['name'];
|
|
$return_manufacturers[$key]['id'] = $manufacturer['id_manufacturer'];
|
|
}
|
|
return $return_manufacturers;
|
|
}
|
|
|
|
public function renderSuppliersSelect()
|
|
{
|
|
$return_suppliers = array();
|
|
$suppliers = Supplier::getSuppliers(false, $this->context->language->id);
|
|
foreach ($suppliers as $key => $supplier) {
|
|
$return_suppliers[$key]['name'] = $supplier['name'];
|
|
$return_suppliers[$key]['id'] = $supplier['id_supplier'];
|
|
}
|
|
return $return_suppliers;
|
|
}
|
|
|
|
public function renderCategoriesSelect($frontend)
|
|
{
|
|
$return_categories = array();
|
|
$return_categories = $this->generateCategoriesOption2(Category::GetNestedCategories(null, (int) $this->context->language->id, true), $frontend);
|
|
return $return_categories;
|
|
}
|
|
|
|
public function renderCustomHtmlSelect()
|
|
{
|
|
$custom_html = array();
|
|
$custom_html = IqitMenuHtml::getHtmls();
|
|
return $custom_html;
|
|
}
|
|
|
|
public function renderChoicesSelect($single = false, $name = null, $class = null, $mobile = false)
|
|
{
|
|
$spacer = str_repeat('-', $this->spacer_size);
|
|
$items = array();
|
|
|
|
$html = '<select ' . ($class ? 'class="' . $class . '"' : '') . ' ' . ($mobile ? 'id="availableItems"' : '') . ' ' . ($name ? 'name="' . $name . '" id="' . $name . '"' : '') . ' ' . ($single ? '' : 'multiple="multiple" style="width: 300px; height: 160px;"') . '>';
|
|
$html .= '<option value="HOME0">' . $this->l('Homepage') . '</option>';
|
|
$html .= '<optgroup label="' . $this->l('CMS') . '">';
|
|
$html .= $this->getCMSOptions(0, 1, $this->context->language->id, $items, $single);
|
|
$html .= '</optgroup>';
|
|
|
|
// BEGIN SUPPLIER
|
|
$html .= '<optgroup label="' . $this->l('Supplier') . '">';
|
|
// Option to show all Suppliers
|
|
$html .= '<option value="ALLSUP0">' . $this->l('All suppliers') . '</option>';
|
|
$suppliers = Supplier::getSuppliers(false, $this->context->language->id);
|
|
foreach ($suppliers as $supplier) {
|
|
if (!in_array('SUP' . $supplier['id_supplier'], $items)) {
|
|
$html .= '<option value="SUP' . $supplier['id_supplier'] . '">' . $spacer . $supplier['name'] . '</option>';
|
|
}
|
|
}
|
|
|
|
$html .= '</optgroup>';
|
|
|
|
// BEGIN Manufacturer
|
|
$html .= '<optgroup label="' . $this->l('Manufacturer') . '">';
|
|
$html .= '<option value="ALLMAN0">' . $this->l('All manufacturers') . '</option>';
|
|
$manufacturers = Manufacturer::getManufacturers(false, $this->context->language->id);
|
|
foreach ($manufacturers as $manufacturer) {
|
|
if (!in_array('MAN' . $manufacturer['id_manufacturer'], $items)) {
|
|
$html .= '<option value="MAN' . $manufacturer['id_manufacturer'] . '">' . $spacer . $manufacturer['name'] . '</option>';
|
|
}
|
|
}
|
|
|
|
$html .= '</optgroup>';
|
|
|
|
$shop = new Shop((int) Shop::getContextShopID());
|
|
$html .= '<optgroup label="' . $this->l('Categories') . '">';
|
|
$html .= $this->generateCategoriesOption(Category::GetNestedCategories(null, (int) $this->context->language->id, true), $single);
|
|
$html .= '</optgroup>';
|
|
|
|
// BEGIN Shops
|
|
if (Shop::isFeatureActive()) {
|
|
$html .= '<optgroup label="' . $this->l('Shops') . '">';
|
|
$shops = Shop::getShopsCollection();
|
|
foreach ($shops as $shop) {
|
|
if (!$shop->setUrl() && !$shop->getBaseURL()) {
|
|
continue;
|
|
}
|
|
|
|
if (!in_array('SHOP' . (int) $shop->id, $items)) {
|
|
$html .= '<option value="SHOP' . (int) $shop->id . '">' . $spacer . $shop->name . '</option>';
|
|
}
|
|
}
|
|
$html .= '</optgroup>';
|
|
}
|
|
|
|
// BEGIN Products
|
|
if ($mobile) {
|
|
$html .= '<optgroup label="' . $this->l('Products') . '">';
|
|
$html .= '<option value="PRODUCT" style="font-style:italic">' . $spacer . $this->l('Choose product ID') . '</option>';
|
|
$html .= '</optgroup>';
|
|
}
|
|
// BEGIN Menu Top Links
|
|
$html .= '<optgroup label="' . $this->l('Custom links') . '">';
|
|
$links = IqitMenuLinks::gets($this->context->language->id, (int) Shop::getContextShopID(), null);
|
|
foreach ($links as $link) {
|
|
if ($link['label'] == '') {
|
|
$default_language = Configuration::get('PS_LANG_DEFAULT');
|
|
$link = IqitMenuLinks::get($link['id_iqitmenulinks'], $default_language, (int) Shop::getContextShopID());
|
|
if (!in_array('LNK' . (int) $link[0]['id_iqitmenulinks'], $items)) {
|
|
$html .= '<option value="LNK' . (int) $link[0]['id_iqitmenulinks'] . '">' . $spacer . Tools::safeOutput($link[0]['label']) . '</option>';
|
|
}
|
|
} elseif (!in_array('LNK' . (int) $link['id_iqitmenulinks'], $items)) {
|
|
$html .= '<option value="LNK' . (int) $link['id_iqitmenulinks'] . '">' . $spacer . Tools::safeOutput($link['label']) . '</option>';
|
|
}
|
|
}
|
|
$html .= '</optgroup>';
|
|
$html .= '</select>';
|
|
return $html;
|
|
}
|
|
|
|
private function getMenuItems()
|
|
{
|
|
$items = Tools::getValue('items');
|
|
if (is_array($items) && count($items)) {
|
|
return $items;
|
|
} else {
|
|
$shops = Shop::getContextListShopID();
|
|
$conf = null;
|
|
|
|
if (count($shops) > 1) {
|
|
foreach ($shops as $key => $shop_id) {
|
|
$shop_group_id = Shop::getGroupFromShop($shop_id);
|
|
$conf .= (string) ($key > 1 ? ',' : '') . Configuration::get($this->config_name . '_mobile_menu', null, $shop_group_id, $shop_id);
|
|
}
|
|
} else {
|
|
$shop_id = (int) $shops[0];
|
|
$shop_group_id = Shop::getGroupFromShop($shop_id);
|
|
$conf = Configuration::get($this->config_name . '_mobile_menu', null, $shop_group_id, $shop_id);
|
|
}
|
|
|
|
if (Tools::strlen($conf)) {
|
|
return explode(',', $conf);
|
|
} else {
|
|
return array();
|
|
}
|
|
}
|
|
}
|
|
|
|
private function makeMenuOptionMobile()
|
|
{
|
|
$id_shop = (int) Shop::getContextShopID();
|
|
|
|
$menu_item = $this->getMenuItems();
|
|
$id_lang = (int) $this->context->language->id;
|
|
|
|
$html = '<select multiple="multiple" name="items[]" id="items" style="width: 300px; height: 160px;">';
|
|
foreach ($menu_item as $item) {
|
|
if (!$item) {
|
|
continue;
|
|
}
|
|
preg_match($this->pattern, $item, $values);
|
|
$id = (int) Tools::substr($item, Tools::strlen($values[1]), Tools::strlen($item));
|
|
|
|
switch (Tools::substr($item, 0, Tools::strlen($values[1]))) {
|
|
case 'CAT':
|
|
$category = new Category((int) $id, (int) $id_lang);
|
|
if (Validate::isLoadedObject($category)) {
|
|
$html .= '<option selected="selected" value="CAT' . $id . '">' . $category->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
case 'CMS_CAT':
|
|
$category = new CMSCategory((int) $id, (int) $id_lang);
|
|
if (Validate::isLoadedObject($category)) {
|
|
$html .= '<option selected="selected" value="CMS_CAT' . $id . '">' . $category->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
case 'PRD':
|
|
$product = new Product((int) $id, true, (int) $id_lang);
|
|
if (Validate::isLoadedObject($product)) {
|
|
$html .= '<option selected="selected" value="PRD' . $id . '">' . $product->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
case 'CMS':
|
|
$cms = new CMS((int) $id, (int) $id_lang);
|
|
if (Validate::isLoadedObject($cms)) {
|
|
$html .= '<option selected="selected" value="CMS' . $id . '">' . $cms->meta_title . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
// Case to handle the option to show all Manufacturers
|
|
case 'ALLMAN':
|
|
$html .= '<option selected="selected" value="ALLMAN0">' . $this->l('All manufacturers') . '</option>' . PHP_EOL;
|
|
break;
|
|
|
|
case 'MAN':
|
|
$manufacturer = new Manufacturer((int) $id, (int) $id_lang);
|
|
if (Validate::isLoadedObject($manufacturer)) {
|
|
$html .= '<option selected="selected" value="MAN' . $id . '">' . $manufacturer->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
// Case to handle the option to show all Suppliers
|
|
case 'ALLSUP':
|
|
$html .= '<option selected="selected" value="ALLSUP0">' . $this->l('All suppliers') . '</option>' . PHP_EOL;
|
|
break;
|
|
|
|
case 'HOME':
|
|
$html .= '<option selected="selected" value="HOME0">' . $this->l('Homepage') . '</option>' . PHP_EOL;
|
|
break;
|
|
|
|
case 'SUP':
|
|
$supplier = new Supplier((int) $id, (int) $id_lang);
|
|
if (Validate::isLoadedObject($supplier)) {
|
|
$html .= '<option selected="selected" value="SUP' . $id . '">' . $supplier->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
|
|
case 'LNK':
|
|
$link = IqitMenuLinks::get((int) $id, (int) $id_lang, (int) $id_shop);
|
|
if (count($link)) {
|
|
if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
|
|
$default_language = Configuration::get('PS_LANG_DEFAULT');
|
|
$link = IqitMenuLinks::get($link[0]['id_iqitmenulinks'], (int) $default_language, (int) Shop::getContextShopID());
|
|
}
|
|
$html .= '<option selected="selected" value="LNK' . (int) $link[0]['id_iqitmenulinks'] . '">' . Tools::safeOutput($link[0]['label']) . '</option>';
|
|
}
|
|
break;
|
|
|
|
case 'SHOP':
|
|
$shop = new Shop((int) $id);
|
|
if (Validate::isLoadedObject($shop)) {
|
|
$html .= '<option selected="selected" value="SHOP' . (int) $id . '">' . $shop->name . '</option>' . PHP_EOL;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
return $html . '</select>';
|
|
}
|
|
|
|
private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false, $items_to_skip = null, $single = false, $id_shop = false)
|
|
{
|
|
$html = '';
|
|
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id;
|
|
$id_shop = ($id_shop !== false) ? $id_shop : Context::getContext()->shop->id;
|
|
$categories = $this->getCMSCategories(false, (int) $parent, (int) $id_lang, (int) $id_shop);
|
|
$pages = $this->getCMSPages((int) $parent, (int) $id_lang, (int) $id_shop);
|
|
|
|
$spacer = str_repeat('-', $this->spacer_size * (int) $depth);
|
|
|
|
foreach ($categories as $category) {
|
|
if (isset($items_to_skip) && !in_array('CMS_CAT' . $category['id_cms_category'], $items_to_skip)) {
|
|
$html .= '<option value="CMS_CAT' . $category['id_cms_category'] . '" style="font-weight: bold;" >' . $spacer . $category['name'] . '</option>';
|
|
}
|
|
|
|
$html .= $this->getCMSOptions($category['id_cms_category'], (int) $depth + 1, (int) $id_lang, $items_to_skip, $single);
|
|
}
|
|
|
|
foreach ($pages as $page) {
|
|
if (isset($items_to_skip) && !in_array('CMS' . $page['id_cms'], $items_to_skip)) {
|
|
$html .= '<option value="CMS' . $page['id_cms'] . '">' . $spacer . $page['meta_title'] . '</option>';
|
|
}
|
|
}
|
|
|
|
return $html;
|
|
}
|
|
|
|
private function getCMSCategories($recursive = false, $parent = 1, $id_lang = false, $id_shop = false)
|
|
{
|
|
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id;
|
|
$id_shop = ($id_shop !== false) ? $id_shop : Context::getContext()->shop->id;
|
|
$join_shop = '';
|
|
$where_shop = '';
|
|
|
|
if (Tools::version_compare(_PS_VERSION_, '1.6.0.12', '>=') == true) {
|
|
$join_shop = ' INNER JOIN `' . _DB_PREFIX_ . 'cms_category_shop` cs
|
|
ON (bcp.`id_cms_category` = cs.`id_cms_category`)';
|
|
$where_shop = ' AND cs.`id_shop` = ' . (int) $id_shop . ' AND cl.`id_shop` = ' . (int) $id_shop;
|
|
}
|
|
|
|
if ($recursive === false) {
|
|
$sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite`
|
|
FROM `' . _DB_PREFIX_ . 'cms_category` bcp' .
|
|
$join_shop . '
|
|
INNER JOIN `' . _DB_PREFIX_ . 'cms_category_lang` cl
|
|
ON (bcp.`id_cms_category` = cl.`id_cms_category`)
|
|
WHERE cl.`id_lang` = ' . (int) $id_lang . '
|
|
AND bcp.`id_parent` = ' . (int) $parent .
|
|
$where_shop;
|
|
|
|
return Db::getInstance()->executeS($sql);
|
|
} else {
|
|
$sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite`
|
|
FROM `' . _DB_PREFIX_ . 'cms_category` bcp' .
|
|
$join_shop . '
|
|
INNER JOIN `' . _DB_PREFIX_ . 'cms_category_lang` cl
|
|
ON (bcp.`id_cms_category` = cl.`id_cms_category`)
|
|
WHERE cl.`id_lang` = ' . (int) $id_lang . '
|
|
AND bcp.`id_parent` = ' . (int) $parent .
|
|
$where_shop;
|
|
|
|
$results = Db::getInstance()->executeS($sql);
|
|
$categories = array();
|
|
foreach ($results as $result) {
|
|
$sub_categories = $this->getCMSCategories(true, $result['id_cms_category'], (int) $id_lang);
|
|
if ($sub_categories && count($sub_categories) > 0) {
|
|
$result['sub_categories'] = $sub_categories;
|
|
}
|
|
|
|
$categories[] = $result;
|
|
}
|
|
|
|
return isset($categories) ? $categories : false;
|
|
}
|
|
}
|
|
|
|
private function getCMSPages($id_cms_category, $id_lang = false, $id_shop = false)
|
|
{
|
|
$id_shop = ($id_shop !== false) ? $id_shop : Context::getContext()->shop->id;
|
|
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id;
|
|
|
|
$where_shop = '';
|
|
if (Tools::version_compare(_PS_VERSION_, '1.6.0.12', '>=') == true) {
|
|
$where_shop = ' AND cl.`id_shop` = ' . (int) $id_shop;
|
|
}
|
|
|
|
$sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite`
|
|
FROM `' . _DB_PREFIX_ . 'cms` c
|
|
INNER JOIN `' . _DB_PREFIX_ . 'cms_shop` cs
|
|
ON (c.`id_cms` = cs.`id_cms`)
|
|
INNER JOIN `' . _DB_PREFIX_ . 'cms_lang` cl
|
|
ON (c.`id_cms` = cl.`id_cms`)
|
|
WHERE c.`id_cms_category` = ' . (int) $id_cms_category . '
|
|
AND cs.`id_shop` = ' . (int) $id_shop . '
|
|
AND cl.`id_lang` = ' . (int) $id_lang .
|
|
$where_shop . '
|
|
AND c.`active` = 1
|
|
ORDER BY `position`';
|
|
|
|
return Db::getInstance()->executeS($sql);
|
|
}
|
|
private function generateCategoriesOption($categories, $single = false)
|
|
{
|
|
$html = '';
|
|
|
|
foreach ($categories as $key => $category) {
|
|
$shop = (object) Shop::getShop((int) $category['id_shop']);
|
|
$html .= '<option value="CAT' . (int) $category['id_category'] . '" ' . ($single && ($category['level_depth'] == 0 || $category['level_depth'] == 1) ? 'disabled' : '') . ' >'
|
|
. str_repeat('-', $this->spacer_size * (int) $category['level_depth']) . $category['name'] . ' (' . $shop->name . ')</option>';
|
|
|
|
if (isset($category['children']) && !empty($category['children'])) {
|
|
$html .= $this->generateCategoriesOption($category['children'], $single);
|
|
}
|
|
}
|
|
return $html;
|
|
}
|
|
|
|
private function generateCategoriesOption2($categories, $frontend)
|
|
{
|
|
$return_categories = array();
|
|
|
|
foreach ($categories as $key => $category) {
|
|
$shop = (object) Shop::getShop((int) $category['id_shop']);
|
|
|
|
$return_categories[$key]['id'] = (int) $category['id_category'];
|
|
$return_categories[$key]['name'] = (!$frontend ? str_repeat('-', $this->spacer_size * (int) $category['level_depth']) : '') . $category['name'] . ' (' . $shop->name . ')';
|
|
|
|
if (isset($category['children']) && !empty($category['children'])) {
|
|
$return_categories[$key]['children'] = $this->generateCategoriesOption2($category['children'], $frontend);
|
|
}
|
|
}
|
|
|
|
return $return_categories;
|
|
}
|
|
|
|
public function getAddLinkFieldsValues()
|
|
{
|
|
$links_label_edit = '';
|
|
$labels_edit = '';
|
|
$fields_values = array();
|
|
|
|
if (Tools::getValue('submitAddmodule')) {
|
|
foreach (Language::getLanguages(false) as $lang) {
|
|
$fields_values['label'][$lang['id_lang']] = '';
|
|
$fields_values['link'][$lang['id_lang']] = '';
|
|
}
|
|
} else {
|
|
foreach (Language::getLanguages(false) as $lang) {
|
|
$fields_values['label'][$lang['id_lang']] = Tools::getValue('label_' . (int) $lang['id_lang'], isset($labels_edit[$lang['id_lang']]) ? $labels_edit[$lang['id_lang']] : '');
|
|
$fields_values['link'][$lang['id_lang']] = Tools::getValue('link_' . (int) $lang['id_lang'], isset($links_label_edit[$lang['id_lang']]) ? $links_label_edit[$lang['id_lang']] : '');
|
|
}
|
|
}
|
|
|
|
return $fields_values;
|
|
}
|
|
|
|
public function renderTabsLinks($menu_type)
|
|
{
|
|
$tabs = array();
|
|
$tabs = IqitMenuTab::getTabs($menu_type);
|
|
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'link' => $this->context->link,
|
|
'tabs' => $tabs,
|
|
'iqitdevmode' => $this->iqitdevmode,
|
|
'menu_type' => $menu_type,
|
|
)
|
|
);
|
|
return $this->display(__FILE__, 'list.tpl');
|
|
}
|
|
|
|
public function renderHtmlContents()
|
|
{
|
|
$tabs = array();
|
|
$tabs = IqitMenuHtml::getHtmls();
|
|
|
|
$this->context->smarty->assign(
|
|
array(
|
|
'link' => $this->context->link,
|
|
'tabs' => $tabs,
|
|
)
|
|
);
|
|
return $this->display(__FILE__, 'list_html.tpl');
|
|
}
|
|
|
|
public function renderListCustomLinks()
|
|
{
|
|
$shops = Shop::getContextListShopID();
|
|
$links = array();
|
|
|
|
foreach ($shops as $shop_id) {
|
|
$links = array_merge($links, IqitMenuLinks::gets((int) $this->context->language->id, (int) $shop_id, null));
|
|
}
|
|
|
|
$fields_list = array(
|
|
'id_iqitmenulinks' => array(
|
|
'title' => $this->l('Link ID'),
|
|
'type' => 'text',
|
|
),
|
|
'name' => array(
|
|
'title' => $this->l('Shop name'),
|
|
'type' => 'text',
|
|
),
|
|
'label' => array(
|
|
'title' => $this->l('Label'),
|
|
'type' => 'text',
|
|
),
|
|
'link' => array(
|
|
'title' => $this->l('Link'),
|
|
'type' => 'link',
|
|
),
|
|
);
|
|
|
|
$helper = new HelperList();
|
|
$helper->shopLinkType = '';
|
|
$helper->simple_header = true;
|
|
$helper->identifier = 'id_iqitmenulinks';
|
|
$helper->table = 'iqitmenulinks';
|
|
$helper->actions = array('edit', 'delete');
|
|
$helper->show_toolbar = false;
|
|
$helper->module = $this;
|
|
$helper->title = $this->l('Link list');
|
|
$helper->token = Tools::getAdminTokenLite('AdminModules');
|
|
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
|
|
|
|
return $helper->generateList($links, $fields_list);
|
|
}
|
|
|
|
private function makeMegaMenu($menu_type)
|
|
{
|
|
$id_lang = (int) $this->context->language->id;
|
|
$id_shop = (int) Shop::getContextShopID();
|
|
|
|
$tabs = array();
|
|
|
|
$tabs = IqitMenuTab::getTabsFrontend($menu_type, false);
|
|
|
|
foreach ($tabs as $key => $tab) {
|
|
if (!$tab['url_type']) {
|
|
$trans = $this->transformToLink($tab['id_url'], true, $id_lang, $id_shop);
|
|
$tabs[$key]['url'] = $trans['href'];
|
|
}
|
|
|
|
if ($tab['submenu_type'] == 1) {
|
|
if (Tools::strlen(($tab['submenu_content']))) {
|
|
$tab['submenu_content'] = explode(',', $tab['submenu_content']);
|
|
|
|
foreach ($tab['submenu_content'] as $tab_id) {
|
|
$innertab = new IqitMenuTab($tab_id, $id_lang, $id_shop);
|
|
|
|
if (!$innertab->verifyAccess()) {
|
|
unset($tab['submenu_content'][$tab_id]);
|
|
continue;
|
|
}
|
|
|
|
if (Tools::strlen(($innertab->submenu_content))) {
|
|
$innertab->submenu_content = $this->buildSubmenuTree(Tools::jsonDecode($innertab->submenu_content, true), true);
|
|
}
|
|
|
|
if (!$innertab->url_type) {
|
|
$trans = $this->transformToLink($innertab->id_url, true, $id_lang, $id_shop);
|
|
$innertab->url = $trans['href'];
|
|
}
|
|
|
|
$tabs[$key]['submenu_content_tabs'][$tab_id] = $innertab;
|
|
}
|
|
}
|
|
}
|
|
if ($tab['submenu_type'] == 2) {
|
|
if (Tools::strlen(($tab['submenu_content']))) {
|
|
$tabs[$key]['submenu_content'] = $this->buildSubmenuTree(Tools::jsonDecode($tab['submenu_content'], true), true);
|
|
}
|
|
}
|
|
}
|
|
return $tabs;
|
|
}
|
|
|
|
private function transformToLink($item, $simple, $id_lang = false, $id_shop = false)
|
|
{
|
|
$id_shop = ($id_shop !== false) ? (int) $id_shop : (int) Context::getContext()->shop->id;
|
|
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id;
|
|
|
|
$return_link = array();
|
|
|
|
if (!$item) {
|
|
return;
|
|
}
|
|
|
|
preg_match($this->pattern, $item, $value);
|
|
$id = (int) Tools::substr($item, Tools::strlen($value[1]), Tools::strlen($item));
|
|
|
|
switch (Tools::substr($item, 0, Tools::strlen($value[1]))) {
|
|
case 'CAT':
|
|
if ($simple) {
|
|
$cat = new Category($id, $id_lang);
|
|
$link = $cat->getLink();
|
|
|
|
$return_link['title'] = $cat->name;
|
|
$return_link['href'] = $link;
|
|
}
|
|
break;
|
|
|
|
case 'PRD':
|
|
$product = new Product((int) $id, true, (int) $id_lang);
|
|
if (!is_null($product->id)) {
|
|
$return_link['title'] = $product->name;
|
|
$return_link['href'] = $product->getLink();
|
|
}
|
|
break;
|
|
|
|
case 'CMS_CAT':
|
|
$category = new CMSCategory((int) $id, (int) $id_lang);
|
|
if (!is_null($category->id)) {
|
|
$return_link['title'] = $category->name;
|
|
$return_link['href'] = $category->getLink();
|
|
}
|
|
break;
|
|
|
|
case 'CMS':
|
|
$cms = CMS::getLinks((int) $id_lang, array($id));
|
|
if (count($cms)) {
|
|
$return_link['title'] = $cms[0]['meta_title'];
|
|
$return_link['href'] = $cms[0]['link'];
|
|
}
|
|
break;
|
|
|
|
// Case to handle the option to show all Manufacturers
|
|
case 'ALLMAN':
|
|
$link = new Link;
|
|
$return_link['title'] = $this->l('All manufacturers');
|
|
$return_link['href'] = $link->getPageLink('manufacturer');
|
|
break;
|
|
|
|
case 'MAN':
|
|
$manufacturer = new Manufacturer((int) $id, (int) $id_lang);
|
|
if (!is_null($manufacturer->id)) {
|
|
if (!$manufacturer->active) {
|
|
return;
|
|
}
|
|
|
|
if ((int) Configuration::get('PS_REWRITING_SETTINGS')) {
|
|
$manufacturer->link_rewrite = Tools::link_rewrite($manufacturer->name);
|
|
} else {
|
|
$manufacturer->link_rewrite = 0;
|
|
}
|
|
|
|
$link = new Link;
|
|
$return_link['title'] = $manufacturer->name;
|
|
$return_link['href'] = $link->getManufacturerLink((int) $id, $manufacturer->link_rewrite);
|
|
}
|
|
break;
|
|
|
|
// Case to handle the option to show all Suppliers
|
|
case 'ALLSUP':
|
|
$link = new Link;
|
|
$return_link['title'] = $this->l('All suppliers');
|
|
$return_link['href'] = $link->getPageLink('supplier');
|
|
break;
|
|
|
|
case 'HOME':
|
|
$link = new Link;
|
|
$return_link['title'] = $this->l('Home');
|
|
$return_link['href'] = $link->getPageLink('index');
|
|
break;
|
|
|
|
case 'SUP':
|
|
$supplier = new Supplier((int) $id, (int) $id_lang);
|
|
if (!is_null($supplier->id)) {
|
|
if (!$supplier->active) {
|
|
return;
|
|
}
|
|
|
|
$link = new Link;
|
|
$return_link['title'] = $supplier->name;
|
|
$return_link['href'] = $link->getSupplierLink((int) $id, $supplier->link_rewrite);
|
|
}
|
|
break;
|
|
|
|
case 'SHOP':
|
|
$shop = new Shop((int) $id);
|
|
if (Validate::isLoadedObject($shop)) {
|
|
$link = new Link;
|
|
$return_link['title'] = $shop->name;
|
|
$return_link['href'] = Tools::HtmlEntitiesUTF8($shop->getBaseURL());
|
|
}
|
|
break;
|
|
case 'LNK':
|
|
$link = IqitMenuLinks::get((int) $id, (int) $id_lang, (int) $id_shop);
|
|
if (count($link)) {
|
|
if (!isset($link[0]['label']) || ($link[0]['label'] == '')) {
|
|
$default_language = Configuration::get('PS_LANG_DEFAULT');
|
|
$link = IqitMenuLinks::get($id, $default_language, (int) Shop::getContextShopID());
|
|
}
|
|
$return_link['title'] = $link[0]['label'];
|
|
$return_link['href'] = $link[0]['link'];
|
|
$return_link['new_window'] = $link[0]['new_window'];
|
|
}
|
|
break;
|
|
}
|
|
return $return_link;
|
|
}
|
|
|
|
private function makeMenuMobile()
|
|
{
|
|
$menu_items = $this->getMenuItems();
|
|
$id_lang = (int) $this->context->language->id;
|
|
$id_shop = (int) Shop::getContextShopID();
|
|
$mobile_menu = array();
|
|
$depth_limit = Configuration::get($this->config_name . '_mobile_menu_depth');
|
|
foreach ($menu_items as $item) {
|
|
if (!$item) {
|
|
continue;
|
|
}
|
|
|
|
preg_match($this->pattern, $item, $value);
|
|
$id = (int) Tools::substr($item, Tools::strlen($value[1]), Tools::strlen($item));
|
|
|
|
switch (Tools::substr($item, 0, Tools::strlen($value[1]))) {
|
|
case 'CAT':
|
|
$mobile_menu[$item] = $this->generateCategoriesMenu(Category::getNestedCategories($id, $id_lang, true, $this->user_groups, true, '', $this->hor_sm_order), $depth_limit);
|
|
break;
|
|
|
|
case 'CMS_CAT':
|
|
$category = new CMSCategory((int) $id, (int) $id_lang);
|
|
if (count($category)) {
|
|
$mobile_menu[$item]['title'] = $category->name;
|
|
$mobile_menu[$item]['href'] = $category->getLink();
|
|
$mobile_menu[$item]['children'] = $this->getCMSMenuItems($category->id);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$mobile_menu[$item] = $this->transformToLink($item, true, $id_lang, $id_shop);
|
|
}
|
|
}
|
|
|
|
return $mobile_menu;
|
|
}
|
|
|
|
protected function getCMSMenuItems($parent, $depth = 1, $id_lang = false)
|
|
{
|
|
$cmspages = array();
|
|
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id;
|
|
|
|
if ($depth > 3) {
|
|
return;
|
|
}
|
|
|
|
$categories = $this->getCMSCategories(false, (int) $parent, (int) $id_lang);
|
|
$pages = $this->getCMSPages((int) $parent);
|
|
|
|
if (count($categories) || count($pages)) {
|
|
foreach ($categories as $category) {
|
|
$cat = new CMSCategory((int) $category['id_cms_category'], (int) $id_lang);
|
|
|
|
$cmspages['cms_cat' . $category['id_cms_category']]['title'] = $category['name'];
|
|
$cmspages['cms_cat' . $category['id_cms_category']]['href'] = $cat->getLink();
|
|
$cmspages['cms_cat' . $category['id_cms_category']]['childrens'] = $this->getCMSMenuItems($category['id_cms_category'], (int) $depth + 1);
|
|
}
|
|
|
|
foreach ($pages as $page) {
|
|
$cms = new CMS($page['id_cms'], (int) $id_lang);
|
|
$links = $cms->getLinks((int) $id_lang, array((int) $cms->id));
|
|
|
|
$cmspages['cms' . $cms->id]['title'] = $cms->meta_title;
|
|
$cmspages['cms' . $cms->id]['href'] = $links[0]['link'];
|
|
}
|
|
}
|
|
return $cmspages;
|
|
}
|
|
|
|
private function generateCategoriesMenu($categories, $detph_limit, $current_depth = 1, $subcat_limit = null, $subcat_count = null, $subcats = false, $node = null)
|
|
{
|
|
$return_categories = array();
|
|
|
|
foreach ($categories as $key => $category) {
|
|
if ($current_depth > $detph_limit) {
|
|
return;
|
|
}
|
|
|
|
if (isset($subcat_limit) && isset($subcat_count) && ($subcat_count >= $subcat_limit)) {
|
|
return $return_categories;
|
|
}
|
|
|
|
if ($category['level_depth'] > 1) {
|
|
$cat = new Category($category['id_category']);
|
|
$link = $cat->getLink();
|
|
} else {
|
|
$link = $this->context->link->getPageLink('index');
|
|
}
|
|
|
|
if ($subcats) {
|
|
$return_categories[$key]['title'] = $category['name'];
|
|
$return_categories[$key]['href'] = $link;
|
|
} else {
|
|
$return_categories['title'] = $category['name'];
|
|
$return_categories['href'] = $link;
|
|
}
|
|
|
|
if (isset($node['thumb']) && $node['thumb']) {
|
|
$files = scandir(_PS_CAT_IMG_DIR_);
|
|
|
|
if (count(preg_grep('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $files)) > 0) {
|
|
foreach ($files as $file) {
|
|
if (preg_match('/^' . $category['id_category'] . '-([0-9])?_thumb.jpg/i', $file) === 1) {
|
|
$image_url = $this->context->link->getMediaLink(_THEME_CAT_DIR_ . $file);
|
|
$return_categories['thumb'] = $image_url;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($category['children']) && !empty($category['children'])) {
|
|
if ($subcats) {
|
|
$return_categories[$key]['children'] = $this->generateCategoriesMenu($category['children'], $detph_limit, $current_depth + 1, $subcat_limit, 0, true, $node);
|
|
} else {
|
|
$return_categories['children'] = $this->generateCategoriesMenu($category['children'], $detph_limit, $current_depth + 1, $subcat_limit, 0, true, $node);
|
|
}
|
|
}
|
|
$subcat_count++;
|
|
}
|
|
|
|
return $return_categories;
|
|
}
|
|
|
|
public function convertBgRepeat($value)
|
|
{
|
|
switch ($value) {
|
|
case 3:
|
|
$repeat_option = 'repeat';
|
|
break;
|
|
case 2:
|
|
$repeat_option = 'repeat-x';
|
|
break;
|
|
case 1:
|
|
$repeat_option = 'repeat-y';
|
|
break;
|
|
default:
|
|
$repeat_option = 'no-repeat';
|
|
}
|
|
return $repeat_option;
|
|
}
|
|
|
|
public function convertBorderType($type)
|
|
{
|
|
$border_type = 'none';
|
|
|
|
switch ($type) {
|
|
case 5:
|
|
$border_type = 'groove';
|
|
break;
|
|
case 4:
|
|
$border_type = 'double';
|
|
break;
|
|
case 3:
|
|
$border_type = 'dotted';
|
|
break;
|
|
case 2:
|
|
$border_type = 'dashed';
|
|
break;
|
|
case 1:
|
|
$border_type = 'solid';
|
|
break;
|
|
default:
|
|
$border_type = 'none';
|
|
}
|
|
|
|
return $border_type;
|
|
}
|
|
|
|
public function convertBorder($value, $position, $triangle = 0)
|
|
{
|
|
$tmpborder = explode(';', $value);
|
|
|
|
$width = $tmpborder[0];
|
|
$type = $tmpborder[1];
|
|
$color = $tmpborder[2];
|
|
|
|
switch ($type) {
|
|
case 5:
|
|
$border_type = 'groove';
|
|
break;
|
|
case 4:
|
|
$border_type = 'double';
|
|
break;
|
|
case 3:
|
|
$border_type = 'dotted';
|
|
break;
|
|
case 2:
|
|
$border_type = 'dashed';
|
|
break;
|
|
case 1:
|
|
$border_type = 'solid';
|
|
break;
|
|
default:
|
|
$border_type = 'none';
|
|
}
|
|
|
|
$border_code = '';
|
|
|
|
if (isset($color) && $color != '') {
|
|
if ($triangle == 1) {
|
|
$border_code = 'left: ' . (-$width) . 'px; border-bottom: ' . (12 + $width) . 'px ' . $border_type . ' ' . $color . '; border-left: ' . (12 + $width) . 'px ' . $border_type . ' transparent; border-right: ' . (12 + $width) . 'px ' . $border_type . ' transparent;';
|
|
} elseif ($triangle == 2) {
|
|
$border_code = 'left: ' . (-(12 + $width)) . 'px; border-right: ' . (12 + $width) . 'px ' . $border_type . ' ' . $color . '; border-bottom: ' . (12 + $width) . 'px ' . $border_type . ' transparent; border-left: ' . (12 + $width) . 'px ' . $border_type . ' transparent;';
|
|
} else {
|
|
if ($position == 'side') {
|
|
$border_code = 'border-left: ' . $width . 'px ' . $border_type . ' ' . $color . ';' . PHP_EOL;
|
|
$border_code .= 'border-right: ' . $width . 'px ' . $border_type . ' ' . $color . ';';
|
|
} elseif ($position == 'all') {
|
|
$border_code = 'border: ' . $width . 'px ' . $border_type . ' ' . $color . ';';
|
|
} else {
|
|
$border_code = 'border-' . $position . ': ' . $width . 'px ' . $border_type . ' ' . $color . ';';
|
|
}
|
|
}
|
|
}
|
|
return $border_code;
|
|
}
|
|
|
|
public function convertBgPosition($value)
|
|
{
|
|
switch ($value) {
|
|
case 8:
|
|
$position_option = 'left top';
|
|
break;
|
|
case 7:
|
|
$position_option = 'left center';
|
|
break;
|
|
case 6:
|
|
$position_option = 'left bottom';
|
|
break;
|
|
case 5:
|
|
$position_option = 'right top';
|
|
break;
|
|
case 4:
|
|
$position_option = 'right center';
|
|
break;
|
|
case 3:
|
|
$position_option = 'right bottom';
|
|
break;
|
|
case 2:
|
|
$position_option = 'center top';
|
|
break;
|
|
case 1:
|
|
$position_option = 'center center';
|
|
break;
|
|
default:
|
|
$position_option = 'center bottom';
|
|
}
|
|
return $position_option;
|
|
}
|
|
|
|
public function getProducts($ids)
|
|
{
|
|
$products = $this->getProductsByIds($ids, $this->context->language->id);
|
|
|
|
$presenterFactory = new ProductPresenterFactory($this->context);
|
|
$presentationSettings = $presenterFactory->getPresentationSettings();
|
|
|
|
$presenter = new ProductListingPresenter(
|
|
new ImageRetriever(
|
|
$this->context->link
|
|
),
|
|
$this->context->link,
|
|
new PriceFormatter(),
|
|
new ProductColorsRetriever(),
|
|
$this->getTranslator()
|
|
);
|
|
|
|
|
|
if (is_array($products)) {
|
|
foreach ($products as &$product) {
|
|
$product = $presenter->present(
|
|
$presentationSettings,
|
|
Product::getProductProperties($this->context->language->id, $product, $this->context),
|
|
$this->context->language
|
|
);
|
|
}
|
|
unset($product);
|
|
}
|
|
return $products;
|
|
}
|
|
|
|
public function getProductsByIds($ids, $id_lang, $active = true)
|
|
{
|
|
$product_ids = join(',', $ids);
|
|
|
|
$id_shop = (int) Context::getContext()->shop->id;
|
|
|
|
$sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description`, pl.`description_short`, pl.`link_rewrite`,
|
|
pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`,
|
|
image_shop.`id_image` id_image, il.`legend`, m.`name` as manufacturer_name, cl.`name` AS category_default, IFNULL(product_attribute_shop.id_product_attribute, 0) id_product_attribute,
|
|
DATEDIFF(
|
|
p.`date_add`,
|
|
DATE_SUB(
|
|
"'.date('Y-m-d').' 00:00:00",
|
|
INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY
|
|
)
|
|
) > 0 AS new
|
|
FROM `'._DB_PREFIX_.'product` p
|
|
'.Shop::addSqlAssociation('product', 'p').'
|
|
LEFT JOIN `'._DB_PREFIX_.'product_attribute_shop` product_attribute_shop
|
|
ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$id_shop.')
|
|
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (
|
|
p.`id_product` = pl.`id_product`
|
|
AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
|
|
)
|
|
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (
|
|
product_shop.`id_category_default` = cl.`id_category`
|
|
AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
|
|
)
|
|
LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop
|
|
ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$id_shop.')
|
|
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
|
|
LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (p.`id_manufacturer`= m.`id_manufacturer`)
|
|
'.Product::sqlStock('p', 0).'
|
|
WHERE p.id_product IN ('.$product_ids.')'.
|
|
($active ? ' AND product_shop.`active` = 1 AND product_shop.`visibility` != \'none\'' : '').'
|
|
GROUP BY product_shop.id_product';
|
|
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql)) {
|
|
return false;
|
|
}
|
|
foreach ($result as &$row) {
|
|
$row['id_product_attribute'] = Product::getDefaultAttribute((int)$row['id_product']);
|
|
}
|
|
return Product::getProductsProperties($id_lang, $result);
|
|
}
|
|
|
|
public function hookActionObjectCategoryAddAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectCategoryUpdateAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectCategoryDeleteAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectCmsUpdateAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectCmsDeleteAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectCmsAddAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectSupplierUpdateAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectSupplierDeleteAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectSupplierAddAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectManufacturerUpdateAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectManufacturerDeleteAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectManufacturerAddAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectProductUpdateAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectProductDeleteAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookActionObjectProductAddAfter($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function hookCategoryUpdate($params)
|
|
{
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function clearMenuCache()
|
|
{
|
|
$this->_clearCache('*');
|
|
}
|
|
|
|
private function installSamples()
|
|
{
|
|
$languages = Language::getLanguages(false);
|
|
$group_access = array();
|
|
$groups = Group::getGroups(Context::getContext()->language->id);
|
|
|
|
foreach ($groups as $group) {
|
|
$group_access[$group['id_group']] = true;
|
|
}
|
|
|
|
$group_access = serialize($group_access);
|
|
|
|
$tab = new IqitMenuTab();
|
|
$tab->menu_type = 1;
|
|
$tab->position = IqitMenuTab::getNextPosition(1);
|
|
|
|
$tab->active = 1;
|
|
$tab->active_label = 1;
|
|
$tab->url_type = 0;
|
|
$tab->id_url = 'HOME0';
|
|
$tab->icon_type = 1;
|
|
$tab->icon_class = 'fa-home';
|
|
$tab->bg_color = '#474747';
|
|
$tab->new_window = 0;
|
|
$tab->float = 0;
|
|
$tab->submenu_type = 0;
|
|
$tab->submenu_width = 12;
|
|
$tab->group_access = $group_access;
|
|
|
|
foreach ($languages as $language) {
|
|
$tab->title[$language['id_lang']] = 'Home';
|
|
}
|
|
|
|
$tab->add();
|
|
$tab = new IqitMenuTab();
|
|
$tab->menu_type = 1;
|
|
$tab->position = IqitMenuTab::getNextPosition(1);
|
|
$tab->active = 1;
|
|
$tab->active_label = 0;
|
|
$tab->url_type = 2;
|
|
$tab->icon_type = 1;
|
|
$tab->new_window = 0;
|
|
$tab->float = 0;
|
|
$tab->submenu_type = 0;
|
|
$tab->submenu_width = 12;
|
|
$tab->group_access = $group_access;
|
|
|
|
foreach ($languages as $language) {
|
|
$tab->title[$language['id_lang']] = 'Sample tab';
|
|
}
|
|
$tab->add();
|
|
}
|
|
|
|
|
|
public static function clearAssetsCache()
|
|
{
|
|
$files = glob(_PS_THEME_DIR_.'assets/cache/*');
|
|
|
|
foreach ($files as $file) {
|
|
if ('index.php' !== basename($file)) {
|
|
Tools::deleteFile($file);
|
|
}
|
|
}
|
|
|
|
$version = (int) Configuration::get('PS_CCCJS_VERSION');
|
|
Configuration::updateValue('PS_CCCJS_VERSION', ++$version);
|
|
$version = (int) Configuration::get('PS_CCCCSS_VERSION');
|
|
Configuration::updateValue('PS_CCCCSS_VERSION', ++$version);
|
|
}
|
|
|
|
public function ajaxProcessSearchProducts()
|
|
{
|
|
header('Content-Type: application/json');
|
|
|
|
$query = Tools::getValue('q', false);
|
|
if (!$query or $query == '' or Tools::strlen($query) < 1) {
|
|
die();
|
|
}
|
|
if ($pos = strpos($query, ' (ref:')) {
|
|
$query = Tools::substr($query, 0, $pos);
|
|
}
|
|
$excludeIds = Tools::getValue('excludeIds', false);
|
|
if ($excludeIds && $excludeIds != 'NaN') {
|
|
$excludeIds = implode(',', array_map('intval', explode(',', $excludeIds)));
|
|
} else {
|
|
$excludeIds = '';
|
|
}
|
|
$excludeVirtuals = false;
|
|
$exclude_packs = false;
|
|
$context = Context::getContext();
|
|
$sql = 'SELECT p.`id_product`, pl.`link_rewrite`, p.`reference`, pl.`name`, image.`id_image` id_image, il.`legend`, p.`cache_default_attribute`
|
|
FROM `' . _DB_PREFIX_ . 'product` p
|
|
' . Shop::addSqlAssociation('product', 'p') . '
|
|
LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON (pl.id_product = p.id_product AND pl.id_lang = ' . (int)$context->language->id . Shop::addSqlRestrictionOnLang('pl') . ')
|
|
LEFT JOIN `' . _DB_PREFIX_ . 'image` image
|
|
ON (image.`id_product` = p.`id_product` AND image.cover=1)
|
|
LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il ON (image.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int)$context->language->id . ')
|
|
WHERE (pl.name LIKE \'%' . pSQL($query) . '%\' OR p.reference LIKE \'%' . pSQL($query) . '%\') AND p.`active` = 1' .
|
|
(!empty($excludeIds) ? ' AND p.id_product NOT IN (' . $excludeIds . ') ' : ' ') .
|
|
($excludeVirtuals ? 'AND NOT EXISTS (SELECT 1 FROM `' . _DB_PREFIX_ . 'product_download` pd WHERE (pd.id_product = p.id_product))' : '') .
|
|
($exclude_packs ? 'AND (p.cache_is_pack IS NULL OR p.cache_is_pack = 0)' : '') .
|
|
' GROUP BY p.id_product';
|
|
|
|
$items = Db::getInstance()->executeS($sql);
|
|
|
|
if ($items && ($excludeIds || strpos($_SERVER['HTTP_REFERER'], 'AdminScenes') !== false)) {
|
|
foreach ($items as $item) {
|
|
echo trim($item['name']) . (!empty($item['reference']) ? ' (ref: ' . $item['reference'] . ')' : '') . '|' . (int)($item['id_product']) . "\n";
|
|
}
|
|
} elseif ($items) {
|
|
$results = array();
|
|
foreach ($items as $item) {
|
|
$product = array(
|
|
'id' => (int)($item['id_product']),
|
|
'name' => $item['name'],
|
|
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
|
|
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], ImageType::getFormattedName('medium'))),
|
|
);
|
|
array_push($results, $product);
|
|
}
|
|
$results = array_values($results);
|
|
die(json_encode($results));
|
|
} else {
|
|
die(json_encode(new stdClass));
|
|
}
|
|
}
|
|
|
|
public function ajaxProcessUpdateHorizontalTabsPosition()
|
|
{
|
|
$tabs = Tools::getValue('tabs');
|
|
foreach ($tabs as $position => $id_tab) {
|
|
$res = Db::getInstance()->execute('
|
|
UPDATE `' . _DB_PREFIX_ . 'iqitmegamenu_tabs` SET `position` = ' . (int) $position . '
|
|
WHERE `id_tab` = ' . (int) $id_tab . ' AND menu_type = 1');
|
|
}
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
public function ajaxProcessupdateVerticalTabsPosition()
|
|
{
|
|
$tabs = Tools::getValue('tabs');
|
|
foreach ($tabs as $position => $id_tab) {
|
|
$res = Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . 'iqitmegamenu_tabs` SET `position` = ' . (int) $position . '
|
|
WHERE `id_tab` = ' . (int) $id_tab . ' AND menu_type = 2');
|
|
}
|
|
$this->clearMenuCache();
|
|
}
|
|
|
|
private function duplicateTab($id_tab)
|
|
{
|
|
$tab = new IqitMenuTab($id_tab);
|
|
$tab->duplicateObject();
|
|
}
|
|
|
|
protected function getWarningMultishopHtml()
|
|
{
|
|
if (Shop::getContext() == Shop::CONTEXT_GROUP || Shop::getContext() == Shop::CONTEXT_ALL) {
|
|
return '<p class="alert alert-warning">' .
|
|
$this->l('You cannot manage module from a "All Shops" or a "Group Shop" context, select directly the shop you want to edit') .
|
|
'</p>';
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
}
|