* @copyright 2007-2022 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
if (!defined('_PS_VERSION_')) {
# module validation
exit;
}
require_once(_PS_MODULE_DIR_.'leoelements/leoECHelper.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsProfilesModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsPositionsModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsContentsModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsProductListModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsCategoryModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsProductsModel.php');
require_once(_PS_MODULE_DIR_.'leoelements/classes/LeoElementsFont.php');
require_once(_PS_MODULE_DIR_.'leoelements/libs/LeoFrameworkHelper.php');
class AdminLeoElementsProfilesController extends ModuleAdminController
{
private $theme_name = '';
public $profile_js_folder = '';
public $profile_css_folder = '';
public $module = 'leoelements';
public $explicit_select;
public $order_by;
public $order_way;
public $theme_dir;
public $all_postions = array();
public function __construct()
{
$this->bootstrap = true;
$this->table = 'leoelements_profiles';
$this->className = 'LeoElementsProfilesModel';
$this->lang = false;
$this->explicit_select = true;
$this->allow_export = false;
$this->override_folder = 'leo_elementor_config_profiles';
parent::__construct();
$this->theme_dir = _PS_THEME_DIR_;
$this->context = Context::getContext();
$this->order_by = 'page';
$this->order_way = 'DESC';
$alias = 'sa';
$id_shop = (int)$this->context->shop->id;
$this->_join .= ' JOIN `'._DB_PREFIX_.'leoelements_profiles_shop`
sa ON (a.`id_leoelements_profiles` = sa.`id_leoelements_profiles` AND sa.id_shop = '.$id_shop.')';
$this->_select .= ' sa.active as active, sa.active_mobile as active_mobile, sa.active_tablet as active_tablet';
$this->fields_list = array(
'id_leoelements_profiles' => array(
'title' => $this->l('ID'),
'align' => 'center',
'width' => 50,
'class' => 'fixed-width-xs'
),
'name' => array(
'title' => $this->l('Name'),
'width' => 140,
'type' => 'text',
'filter_key' => 'a!name'
),
'profile_key' => array(
'title' => $this->l('Key'),
'filter_key' => 'a!profile_key',
'type' => 'text',
'width' => 140,
),
'active' => array(
'title' => $this->l('Is Default'),
'active' => 'status',
'filter_key' => $alias.'!active',
'align' => 'text-center',
'type' => 'bool',
'class' => 'fixed-width-sm',
'orderby' => false
),
'active_mobile' => array(
'title' => $this->l('Is Mobile'),
'active' => 'active_mobile',
'filter_key' => $alias.'!active_mobile',
'align' => 'text-center',
'type' => 'bool',
'class' => 'fixed-width-sm',
'orderby' => false
),
'active_tablet' => array(
'title' => $this->l('Is Tablet'),
'active' => 'active_tablet',
'filter_key' => $alias.'!active_tablet',
'align' => 'text-center',
'type' => 'bool',
'class' => 'fixed-width-sm',
'orderby' => false
)
);
$this->bulk_actions = array(
'delete' => array(
'text' => $this->l('Delete selected'),
'confirm' => $this->l('Delete selected items?'),
'icon' => 'icon-trash'
),
'insertLang' => array(
'text' => $this->l('Auto Input Data for New Lang'),
'confirm' => $this->l('Auto insert data for new language?'),
'icon' => 'icon-edit'
)
);
$this->_where = ' AND sa.id_shop='.(int)$this->context->shop->id;
$this->theme_name = _THEME_NAME_;
$this->profile_css_folder = _PS_THEME_DIR_.leoECHelper::getCssDir().'profiles/';
$this->profile_js_folder = _PS_THEME_DIR_.leoECHelper::getJsDir().'profiles/';
if (!is_dir($this->profile_css_folder)) {
mkdir($this->profile_css_folder, 0755, true);
}
if (!is_dir($this->profile_js_folder)) {
mkdir($this->profile_js_folder, 0755, true);
}
}
public function initToolbar()
{
parent::initToolbar();
# SAVE AND STAY
if ($this->display == 'add' || $this->display == 'edit') {
// $this->context->controller->addJs(leoECHelper::getJsAdminDir().'admin/function.js');
$this->page_header_toolbar_btn['SaveAndStay'] = array(
'href' => 'javascript:void(0);',
'desc' => $this->l('Save and stay'),
'js' => 'TopSaveAndStay()',
'icon' => 'process-icon-save',
);
Media::addJsDef(array('TopSaveAndStay_Name' => 'submitAdd'.$this->table.'AndStay'));
$this->page_header_toolbar_btn['Save'] = array(
'href' => 'javascript:void(0);',
'desc' => $this->l('Save'),
'js' => 'TopSave()',
'icon' => 'process-icon-save',
);
Media::addJsDef(array('TopSave_Name' => 'submitAdd'.$this->table));
}
}
public function setMedia($isNewTheme = false)
{
parent::setMedia($isNewTheme);
$this->addJqueryPlugin('tagify');
Context::getContext()->controller->addJs(leoECHelper::getJsAdminDir().'admin/function.js');
Context::getContext()->controller->addCss(leoECHelper::getCssAdminDir().'back.css');
}
public function processDelete()
{
$object = $this->loadObject();
$object->loadDataShop();
if ($object && !$object->active) {
$object = parent::processDelete();
if ($object->profile_key) {
Tools::deleteFile($this->profile_css_folder.$object->profile_key.'.css');
Tools::deleteFile($this->profile_js_folder.$object->profile_key.'.js');
}
} else {
$this->errors[] = Tools::displayError('Can not delete Default Profile.');
}
return $object;
}
public function ajaxProcessPosition()
{
$type = Tools::getValue('type');
$id_leoelements_profiles = Tools::getValue('id_leoelements_profiles',0);
//create new position: header, content, footer
if($type == "position") {
$position_type = Tools::getValue('position_type');
$name = Tools::getValue('position_name');
$sql = 'SELECT name FROM `'._DB_PREFIX_.'leoelements_positions` WHERE name="'.$name.'"';
$result = Db::getInstance()->getRow($sql);
if($result) {
echo json_encode(array('error' => $this->l('This position with the name already exists')));
die();
}
$id_leoelements_profiles = Tools::getValue('id_leoelements_profiles');
$position = new LeoElementsPositionsModel();
//create new
$key = LeoECSetting::getRandomNumber();
$position->position_key = 'position'.$key;
$position->name = $name;
$position->position = $position_type;
$position->save();
//insert profile
$sql = 'UPDATE `'._DB_PREFIX_.'leoelements_profiles` SET `'.$position_type.'` = "'.pSQL($position->position_key).'" WHERE `id_leoelements_profiles` = "'.pSQL($id_leoelements_profiles).'"';
Db::getInstance()->execute($sql);
$result = array( 'id' =>$position->position_key, 'title' => $name );
echo json_encode($result);
die();
}
//create new hook content of possition
else {
$hook = Tools::getValue('hook');
$position = Tools::getValue('position');
$languages = Language::getLanguages();
$title = Tools::getValue('titlehook');
$sql = 'SELECT name FROM `'._DB_PREFIX_.'leoelements_contents` WHERE name="'.$title.'"';
$result = Db::getInstance()->getRow($sql);
if($result) {
echo json_encode(array('error' => $this->l('This hook with the name already exists')));
die();
}
$content = new LeoElementsContentsModel();
$content->name = $title;
$content->active = 1;
$key = LeoECSetting::getRandomNumber();
$content->content_key = 'content'.$key;
$content->hook = $hook;
$content->type = 'hook';
if($content->add()){
$params = array(
'post_type' => 'hook',
'id_post' => $content->id,
'id_lang' => (int)$this->context->language->id,
'id_profile' => $id_leoelements_profiles,
);
$url_params = http_build_query($params);
$url = $this->context->link->getAdminLink('AdminLeoElementsCreator') . '&' . $url_params;
$result = array( 'id' =>$content->id, 'title' => $title, 'url' => $url, 'content_key' =>$content->content_key );
$id_shop = $this->context->shop->id;
if (!isset($_SERVER['p'.'r'.'o'.'cessImport'])) {
$query = 'INSERT INTO '._DB_PREFIX_.'leoelements_contents_shop (`id_leoelements_contents`, `id_shop`, `active`) VALUES('.(int)$content->id.', '.(int)$id_shop.', 1)';
Db::getInstance()->execute($query);
}
if($position) {
$sql = 'SELECT params FROM '._DB_PREFIX_.'leoelements_positions WHERE position_key="'.pSQL($position).'"';
$params = Db::getInstance()->getValue($sql);
if($params) {
$params = json_decode($params,1);
$params[$hook] = $content->content_key;
$params = json_encode($params);
} else {
$params = array($hook => $content->content_key);
$params = json_encode($params);
}
$sql = 'UPDATE '._DB_PREFIX_.'leoelements_positions SET `params` = "'.pSQL($params).'" WHERE `position_key` ="'.pSQL($position).'"';
Db::getInstance()->execute($sql);
} else {
//update params profiles
$sql = 'SELECT params FROM `'._DB_PREFIX_.'leoelements_profiles` WHERE id_leoelements_profiles="'.$id_leoelements_profiles.'"';
$result1 = Db::getInstance()->getRow($sql);
$params = json_decode($result1['params'],1);
$params[$hook] = $content->content_key;
$params = json_encode($params);
$sql = 'UPDATE `'._DB_PREFIX_.'leoelements_profiles` SET `params` = "'.pSQL($params).'" WHERE `id_leoelements_profiles` = "'.pSQL($id_leoelements_profiles).'"';
Db::getInstance()->execute($sql);
}
echo json_encode($result);
die();
} else {
die('error can not create hook');
}
}
}
public function processBulkDelete()
{
$arr = $this->boxes;
if (!$arr) {
return;
}
foreach ($arr as $id) {
$object = new $this->className($id);
$object->loadDataShop();
if ($object && !$object->active) {
$object->delete();
if ($object->profile_key) {
Tools::deleteFile($this->profile_css_folder.$object->profile_key.'.css');
Tools::deleteFile($this->profile_js_folder.$object->profile_key.'.js');
}
} else {
$this->errors[] = Tools::displayError('Can not delete Default Profile.');
}
}
if (empty($this->errors)) {
$this->confirmations[] = $this->_conf[1];
}
}
public function renderView()
{
$object = $this->loadObject();
if ($object->page == 'product_detail') {
$this->redirect_after = Context::getContext()->link->getAdminLink('AdminLeoElementsProductDetail');
} else {
$this->redirect_after = Context::getContext()->link->getAdminLink('AdminLeoElementsProfiles');
}
$this->redirect_after .= '&id_leoelements_profiles='.$object->id;
$this->redirect();
}
public function displayPreviewLink($token = null, $id = null, $name = null)
{
$lang = '';
$admin_dir = dirname($_SERVER['PHP_SELF']);
$admin_dir = Tools::substr($admin_dir, strrpos($admin_dir, '/') + 1);
$dir = str_replace($admin_dir, '', dirname($_SERVER['SCRIPT_NAME']));
if (Configuration::get('PS_REWRITING_SETTINGS') && count(Language::getLanguages(true)) > 1) {
$lang = Language::getIsoById(Context::getContext()->employee->id_lang).'/';
}
$href = Tools::getCurrentUrlProtocolPrefix().Tools::getHttpHost().$dir.$lang.
Dispatcher::getInstance()->createUrl('index', (int)Context::getContext()->language->id, ['id_leoelements_profiles' => $id]);
// validate module
unset($name);
$html = ' Preview';
return $html;
}
public function processStatus()
{
if (Validate::isLoadedObject($object = $this->loadObject())) {
if ($object->toggleStatus()) {
$matches = array();
if (preg_match('/[\?|&]controller=([^&]*)/', (string)$_SERVER['HTTP_REFERER'], $matches) !== false && Tools::strtolower($matches[1]) != Tools::strtolower(preg_replace('/controller/i', '', get_class($this)))) {
$this->redirect_after = preg_replace('/[\?|&]conf=([^&]*)/i', '', (string)$_SERVER['HTTP_REFERER']);
} else {
$this->redirect_after = self::$currentIndex.'&token='.$this->token;
}
} else {
$this->errors[] = Tools::displayError('You can not disable default profile, Please select other profile as default');
}
} else {
$this->errors[] = Tools::displayError('An error occurred while updating the status for an object.')
.''.$this->table.' '.Tools::displayError('(cannot load object)');
}
return $object;
}
public function postProcess()
{
parent::postProcess();
if (count($this->errors) > 0) {
return;
}
if (Tools::getIsset('active_mobileleoelements_profiles') || Tools::getIsset('active_tabletleoelements_profiles')) {
if (Validate::isLoadedObject($object = $this->loadObject())) {
$result = Tools::getIsset('active_mobileleoelements_profiles')?$object->toggleStatusMT('active_mobile'):$object->toggleStatusMT('active_tablet');
if ($result) {
// $this->mesage[] = Tools::displayError('You should enebale mobile theme in theme config');
$matches = array();
if (preg_match('/[\?|&]controller=([^&]*)/', (string)$_SERVER['HTTP_REFERER'], $matches) !== false && Tools::strtolower($matches[1]) != Tools::strtolower(preg_replace('/controller/i', '', get_class($this)))) {
$this->redirect_after = preg_replace('/[\?|&]conf=([^&]*)/i', '', (string)$_SERVER['HTTP_REFERER']);
} else {
$this->redirect_after = self::$currentIndex.'&token='.$this->token.'&mobiletheme';
}
} else {
$this->errors[] = Tools::displayError('You can not disable default profile, Please select other profile as default');
}
} else {
$this->errors[] = Tools::displayError('An error occurred while updating the status for an object.')
.''.$this->table.' '.Tools::displayError('(cannot load object)');
}
}
if (Tools::getIsset('duplicateleoelements_profiles')) {
$id = Tools::getValue('id_leoelements_profiles');
$model = new LeoElementsProfilesModel($id);
if ($model) {
$old_key = $model->profile_key;
$model->profile_key = $profile_key = 'profile'.LeoECSetting::getRandomNumber();
$model->id = null;
$model->name = $this->l('Duplicate of ') . $model->name;
$model->active = '';
$model->friendly_url = array();
$duplicate_object = $model->save();
if ($duplicate_object) {
//duplicate shortCode
$id_new = $model->id;
LeoECSetting::writeFile($this->profile_js_folder, $profile_key.'.js', Tools::file_get_contents($this->profile_js_folder.$old_key.'.js'));
LeoECSetting::writeFile($this->profile_css_folder, $profile_key.'.css', Tools::file_get_contents($this->profile_css_folder.$old_key.'.css'));
$this->redirect_after = self::$currentIndex.'&token='.$this->token;
$this->redirect();
} else {
Tools::displayError('Can not create new profile');
}
} else {
Tools::displayError('Profile is not exist to duplicate');
}
}
}
public function renderList()
{
$this->initToolbar();
$this->addRowAction('edit');
$this->addRowAction('preview');
$this->addRowAction('duplicate');
$this->addRowAction('delete');
$guide_box = $this->context->smarty->fetch($this->getTemplatePath().'guide-profile.tpl');
return $guide_box.parent::renderList();
}
public function getLiveEditUrl($live_edit_params)
{
$lang = '';
$admin_dir = dirname($_SERVER['PHP_SELF']);
$admin_dir = Tools::substr($admin_dir, strrpos($admin_dir, '/') + 1);
$dir = str_replace($admin_dir, '', dirname($_SERVER['SCRIPT_NAME']));
if (Configuration::get('PS_REWRITING_SETTINGS') && count(Language::getLanguages(true)) > 1) {
$lang = Language::getIsoById(Context::getContext()->employee->id_lang).'/';
}
$url = Tools::getCurrentUrlProtocolPrefix().Tools::getHttpHost().$dir.$lang.
Dispatcher::getInstance()->createUrl('index', (int)Context::getContext()->language->id, $live_edit_params);
return $url;
}
public function renderForm()
{
$id_leoelements_profiles = (int)Tools::getValue('id_leoelements_profiles', 0);
$this->initToolbar();
$header[] = $content[] = $footer[] = array('id' => '0', 'name' => $this->l('No Use'));
$header[] = $content[] = $footer[] = array('id' => 'createnew', 'name' => $this->l('Create a new position'));
$this->all_postions = LeoElementsPositionsModel::getAllPosition();
$hook_header = LeoECSetting::getHook('header');
$hook_content = LeoECSetting::getHook('content');
$hook_footer = LeoECSetting::getHook('footer');
$hook_product = LeoECSetting::getHook('product');
$hook_category = LeoECSetting::getHook('category');
$id_shop = $this->context->shop->id;
$id_lang = $this->context->language->id;
$sql = 'SELECT c.id_leoelements_contents, c.name , c.hook, c.content_key FROM '._DB_PREFIX_.'leoelements_contents c INNER JOIN '._DB_PREFIX_.'leoelements_contents_shop cs ON (c.id_leoelements_contents = cs.id_leoelements_contents) WHERE cs.id_shop = '. (int)$id_shop . ' AND c.type != "hook_product_list" ';
$all_leoelements_contents = Db::getInstance()->executes($sql);
$leoelements_contents_hook = array();
foreach ($all_leoelements_contents as $ccontent){
if(isset($ccontent['hook']) && in_array($ccontent['hook'], $hook_category))
{
$params = array(
'post_type' => 'hook_category_layout',
'id_post' => $ccontent['id_leoelements_contents'],
'id_lang' => (int)$id_lang,
'id_profile' => $id_leoelements_profiles,
);
$url_params = http_build_query($params);
$ccontent['url'] = $this->context->link->getAdminLink('AdminLeoElementsCreator') . '&' . $url_params;
$leoelements_contents_hook[$ccontent['hook']][] = $ccontent;
}elseif (isset($ccontent['hook']) && in_array($ccontent['hook'], $hook_product)) {
$params = array(
'post_type' => 'hook_product_layout',
'id_post' => $ccontent['id_leoelements_contents'],
'id_lang' => (int)$id_lang,
'id_profile' => $id_leoelements_profiles,
);
$url_params = http_build_query($params);
$ccontent['url'] = $this->context->link->getAdminLink('AdminLeoElementsCreator') . '&' . $url_params;
$leoelements_contents_hook[$ccontent['hook']][] = $ccontent;
}else{
$params = array(
'post_type' => 'hook',
'id_post' => $ccontent['id_leoelements_contents'],
'id_lang' => (int)$id_lang,
'id_profile' => $id_leoelements_profiles,
);
$url_params = http_build_query($params);
$ccontent['url'] = $this->context->link->getAdminLink('AdminLeoElementsCreator') . '&' . $url_params;
$leoelements_contents_hook[$ccontent['hook']][] = $ccontent;
}
}
$postions = array('header' => [], 'content' => [], 'footer' => []);
foreach ($this->all_postions as $position) {
$position['params'] = json_decode($position['params'],1);
$postions[$position['position']][] = $position;
if ($position['position'] == 'header') {
$header[] = array('id' => $position['position_key'], 'name' => $position['name']);
}
else if($position['position'] == 'content') {
$content[] = array('id' => $position['position_key'], 'name' => $position['name']);
} else {
$footer[] = array('id' => $position['position_key'], 'name' => $position['name']);
}
}
$is_edit = Tools::getValue('id_leoelements_profiles');
$layout_mode = array();
$layout = LeoFrameworkHelper::getLayoutSettingByTheme(_THEME_NAME_);
if(isset($layout['layout']['layout_mode']['option'])) {
foreach ($layout['layout']['layout_mode']['option'] as $lay) {
$layout_mode[] = array('id'=>$lay['id'], 'name'=>$lay['name']);
}
}
$icon_url = _MODULE_DIR_.'leoelements/views/img/logo.png';
//get category layout
$catprofile = new LeoElementsCategoryModel();
$catprofile_list = $catprofile->getAllCategoryProfileByShop();
$catprofile_list_array = array(
array('id' => '0', 'name' => $this->l('Default'))
);
foreach ($catprofile_list as $pro) {
$catprofile_list_array[] = array('id' => $pro['clist_key'], 'name' => $pro['name'], 'id_link' => $pro['id_leoelements_category']);
}
//get product list layout
$plist = new LeoElementsProductListModel();
$product_list = $plist->getAllProductListProfileByShop();
$product_list_array = array(
array('id' => '0', 'name' => $this->l('Default'))
);
foreach ($product_list as $pro) {
$product_list_array[] = array('id' => $pro['plist_key'], 'name' => $pro['name'], 'id_link' => $pro['id_leoelements_product_list']);
}
//get product detail layout
$proprofile = new LeoElementsProductsModel();
$proprofile_list = $proprofile->getAllProductProfileByShop();
$proprofile_list_array = array(
array('id' => '0', 'name' => $this->l('Default'))
);
$position_url = $this->context->link->getAdminLink('AdminLeoElementsPositions').'&updateleoelements_positions=&id_leoelements_positions=';
foreach ($proprofile_list as $pro) {
$proprofile_list_array[] = array('id' => $pro['plist_key'], 'name' => $pro['name'], 'id_link' => $pro['id_leoelements_products']);
}
$option_group_font_family = array(
'optiongroup' => array(
'label' => 'label',
'query' => array(
array(
'label' => $this->l('Available fonts'),
'options' => LeoElementsProfilesModel::getFontFamily()
),
array(
'label' => $this->l('Uploaded fonts'),
'options' => LeoElementsProfilesModel::getFontFamilyUploaded()
),
array(
'label' => $this->l('Google fonts'),
'options' => LeoElementsProfilesModel::getFontFamilyGoogle()
),
),
),
'options' => array(
'query' => 'options',
'id' => 'id',
'name' => 'name'
)
);
$fields_form1 = array(
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Name'),
'name' => 'name',
'form_group_class' => 'leofieldset fieldset_general',
'required' => true,
'hint' => $this->l('Invalid characters:'),' <>;=#{}'
),
array(
'type' => 'text',
'label' => $this->l('Friendly URL'),
'name' => 'friendly_url',
'desc' => $this->l('This fields to build url for homepage or landing page'),
'lang' => true,
'hint' => $this->l('Invalid characters:').' <>;=#{}',
'form_group_class' => 'leofieldset fieldset_general',
),
array(
'type' => 'text',
'label' => $this->l('Meta title'),
'name' => 'meta_title',
'id' => 'name', // for copyMeta2friendlyURL compatibility
'lang' => true,
// 'required' => true,
'class' => 'copyMeta2friendlyURL',
'hint' => $this->l('Invalid characters:').' <>;=#{}',
'form_group_class' => 'leofieldset fieldset_general',
),
array(
'type' => 'textarea',
'label' => $this->l('Meta description'),
'name' => 'meta_description',
'lang' => true,
'cols' => 40,
'rows' => 10,
'form_group_class' => 'leofieldset fieldset_general',
'hint' => $this->l('Invalid characters:').' <>;=#{}'
),
array(
'type' => 'tags',
'label' => $this->l('Meta keywords'),
'name' => 'meta_keywords',
'lang' => true,
'form_group_class' => 'leofieldset fieldset_general',
'hint' => array(
$this->l('Invalid characters:').' <>;=#{}',
$this->l('To add "tags" click in the field, write something, and then press "Enter."')
)
),
array(
'type' => 'text',
'label' => $this->l('Profile Key'),
'name' => 'profile_key',
'readonly' => 'readonly',
'desc' => $this->l('Use it to save as file name of css and js of profile'),
'form_group_class' => 'leofieldset fieldset_general',
'hint' => $this->l('Invalid characters:').' <>;=#{}'
),
array(
'type' => 'switch',
'label' => $this->l('Show Profile List In Site Map'),
'name' => 'show_sitemap',
'form_group_class' => 'leofieldset fieldset_general',
'values' => LeoECSetting::returnYesNo()
),
array(
'type' => 'switch',
'label' => $this->l('Enable Back to Top'),
'name' => 'backtop',
'default' => 0,
'values' => LeoECSetting::returnYesNo(),
'desc' => $this->l('Show a Scroll To Top button.'),
'form_group_class' => 'leofieldset fieldset_general',
),
array(
'type' => 'select',
'label' => $this->l('Layout Mode'),
'name' => 'layout_mode',
'default' => 'default',
'options' => array(
'query' => $layout_mode,
'id' => 'id',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_general',
),
array(
'type' => 'switch',
'label' => $this->l('Header Sticky'),
'name' => 'header_sticky',
'is_bool' => true,
'form_group_class' => 'leofieldset fieldset_header',
'values' => LeoECSetting::returnYesNo()
),
array(
'type' => 'switch',
'label' => $this->l('Footer Fixed'),
'name' => 'footer_fixed',
'is_bool' => true,
'form_group_class' => 'leofieldset fieldset_footer',
'values' => LeoECSetting::returnYesNo()
),
array(
'type' => 'switch',
'label' => $this->l('Close Footer Menu Link'),
'name' => 'footer_clinks',
'is_bool' => true,
'form_group_class' => 'leofieldset fieldset_footer',
'desc' => $this->l('Close in Desktop when Footer Fixed'),
'values' => LeoECSetting::returnYesNo()
),
array(
'type' => 'checkbox',
'name' => 'fullwidth_index_hook',
'label' => $this->l('Fullwidth Homepage'),
'class' => 'checkbox-group',
'form_group_class' => 'leofieldset fieldset_general',
'desc' => $this->l('The setting full-width for above HOOKS, apply for Home page'),
'values' => array(
'query' => self::getCheckboxIndexHook(),
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'checkbox',
'name' => 'fullwidth_other_hook',
'label' => $this->l('Fullwidth other Pages'),
'class' => 'checkbox-group',
'form_group_class' => 'leofieldset fieldset_general',
'desc' => $this->l('The setting full-width for above HOOKS, apply for all OTHER pages ( not Home page )'),
'values' => array(
'query' => self::getCheckboxOtherHook(),
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'html',
'name' => 'dump_name',
'form_group_class' => 'leofieldset fieldset_general',
'html_content' => '
'.$this->l('Fullwidth Function: is only for develop')
.'
'.$this->l('To use this function, you have to download')
.'
'
.'header.tpl'
.'
'
.'footer.tpl'
.$this->l('file and compare or override in themes folder').'
'
),
array(
'type' => 'checkbox',
'name' => 'disable_cache_hook',
'label' => $this->l('Disable cache Hooks'),
'class' => 'checkbox-group',
'form_group_class' => 'leofieldset fieldset_general',
'desc' => $this->l('Some modules always update data, disable cache for those modules show correct info.'),
'values' => array(
'query' => self::getCheckboxCacheHook(),
'id' => 'id',
'name' => 'name'
)
),
array(
'type' => 'product_list_data',
'id' => 'product_list_data',
'name' => 'product_list_data',
'product_list' => json_encode($product_list_array),
'title' => $this->l('Edit Layout'),
'url' => $this->context->link->getAdminLink('AdminLeoElementsProductList').'&updateleoelements_product_list&id_leoelements_product_list=',
'form_group_class' => 'hide',
),
array(
'type' => 'select',
'label' => $this->l('Product List Layout'),
'name' => 'productlist_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new Product list layout in Leo Elements Creator > Product Lists Builder. Then you can config conlum per row in Product List'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List Layout Mobile'),
'name' => 'productlist_layout_mobile',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new Product list layout in Leo Elements Creator > Product Lists Builder. Then you can config conlum per row in Product List'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List Layout Tablet'),
'name' => 'productlist_layout_tablet',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new Product list layout in Leo Elements Creator > Product Lists Builder. Then you can config conlum per row in Product List'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Config for Default Product List Layout').'
',
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Products Listing Mode'),
'name' => 'listing_product_mode',
'default' => 'grid',
'options' => array('query' => array(
array('id' => 'grid', 'name' => $this->l('Grid Mode')),
array('id' => 'list', 'name' => $this->l('List Mode')),
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('Display Products In List Mode Or Grid Mode In Category Page....'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Columns in Default Module On Desktop'),
'name' => 'listing_product_column_module',
'default' => ' ',
'options' => array('query' => array(
array('id' => '2', 'name' => $this->l('2 Columns')),
array('id' => '3', 'name' => $this->l('3 Columns')),
array('id' => '4', 'name' => $this->l('4 Columns')),
array('id' => '5', 'name' => $this->l('5 Columns')),
array('id' => '6', 'name' => $this->l('6 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in default module of prestashop.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Columns in Product List page On Desktop'),
'name' => 'listing_product_column',
'default' => ' ',
'options' => array('query' => array(
array('id' => '2', 'name' => $this->l('2 Columns')),
array('id' => '3', 'name' => $this->l('3 Columns')),
array('id' => '4', 'name' => $this->l('4 Columns')),
array('id' => '5', 'name' => $this->l('5 Columns')),
array('id' => '6', 'name' => $this->l('6 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist load-edit-link',
),
array(
'type' => 'select',
'label' => $this->l('Product Grid Columns On Large devices (>=992px)'),
'name' => 'listing_product_largedevice',
'default' => ' ',
'options' => array('query' => array(
array('id' => '2', 'name' => $this->l('2 Columns')),
array('id' => '3', 'name' => $this->l('3 Columns')),
array('id' => '4', 'name' => $this->l('4 Columns')),
array('id' => '5', 'name' => $this->l('5 Columns')),
array('id' => '6', 'name' => $this->l('6 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Product Grid Columns On Medium devices - Tablet (>=768px)'),
'name' => 'listing_product_tablet',
'default' => '',
'options' => array('query' => array(
array('id' => '1', 'name' => $this->l('1 Column')),
array('id' => '2', 'name' => $this->l('2 Columns')),
array('id' => '3', 'name' => $this->l('3 Columns')),
array('id' => '4', 'name' => $this->l('4 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Product Grid Columns On Small devices (>=576px)'),
'name' => 'listing_product_smalldevice',
'default' => '',
'options' => array('query' => array(
array('id' => '1', 'name' => $this->l('1 Column')),
array('id' => '2', 'name' => $this->l('2 Columns')),
array('id' => '3', 'name' => $this->l('3 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Product Grid Columns On Extra Small devices (<567px)'),
'name' => 'listing_product_extrasmalldevice',
'default' => '',
'options' => array('query' => array(
array('id' => '1', 'name' => $this->l('1 Column')),
array('id' => '2', 'name' => $this->l('2 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Product Grid Columns On Smart Phone (<480px)'),
'name' => 'listing_product_mobile',
'default' => '',
'options' => array('query' => array(
array('id' => '1', 'name' => $this->l('1 Column')),
array('id' => '2', 'name' => $this->l('2 Columns'))
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('How many column display in grid mode of product list.'),
'form_group_class' => 'leofieldset productlist_layout fieldset_productlist',
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('You can select Product list Layout for each Page').'
',
'form_group_class' => 'leofieldset fieldset_productlist',
),
array(
'type' => 'select',
'label' => $this->l('Product List in Manufacture'),
'name' => 'manufacture_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List in Search Page'),
'name' => 'search_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List in Prices drop'),
'name' => 'pricedrop_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List in New Products'),
'name' => 'newproduct_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'select',
'label' => $this->l('Product List in Best sellers'),
'name' => 'bestsales_layout',
'default' => ' ',
'options' => array('query' => $product_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_productlist plist-link',
),
array(
'type' => 'product_list_data',
'id' => 'category_list_data',
'name' => 'category_list_data',
'product_list' => json_encode($catprofile_list_array),
'title' => $this->l('Edit Layout'),
'url' => $this->context->link->getAdminLink('AdminLeoElementsCategory').'&updateleoelements_category&id_leoelements_category=',
'form_group_class' => 'hide',
),
array(
'type' => 'select',
'label' => $this->l('Category Default Layout'),
'name' => 'category_layout',
'default' => ' ',
'options' => array('query' => $catprofile_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new category layout in Leo Elements Creator > Categories Builder.'),
'form_group_class' => 'leofieldset fieldset_category category-link',
),
array(
'type' => 'select',
'label' => $this->l('Category Default Layout Mobile'),
'name' => 'category_layout_mobile',
'default' => ' ',
'options' => array('query' => $catprofile_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new category layout in Leo Elements Creator > Categories Builder.'),
'form_group_class' => 'leofieldset fieldset_category category-link',
),
array(
'type' => 'select',
'label' => $this->l('Category Default Layout Tablet'),
'name' => 'category_layout_tablet',
'default' => ' ',
'options' => array('query' => $catprofile_list_array,
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('You can create new category layout in Leo Elements Creator > Categories Builder.'),
'form_group_class' => 'leofieldset fieldset_category category-link',
),
array(
'type' => 'product_list_data',
'id' => 'product_detail_data',
'name' => 'product_detail_data',
'product_list' => json_encode($proprofile_list_array),
'title' => $this->l('Edit Layout'),
'url' => $this->context->link->getAdminLink('AdminLeoElementsProducts').'&updateleoelements_products&id_leoelements_products=',
'form_group_class' => 'hide',
),
array(
'type' => 'select',
'label' => $this->l('Product Detail Layout'),
'name' => 'productdetail_layout',
'default' => 'default',
'options' => array('query' => $proprofile_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_product pdetail-link',
),
array(
'type' => 'select',
'label' => $this->l('Product Detail Layout Mobile'),
'name' => 'productdetail_layout_mobile',
'default' => 'default',
'options' => array('query' => $proprofile_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_product pdetail-link',
),
array(
'type' => 'select',
'label' => $this->l('Product Detail Layout Tablet'),
'name' => 'productdetail_layout_tablet',
'default' => 'default',
'options' => array('query' => $proprofile_list_array,
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_product pdetail-link',
),
array(
'type' => 'switch',
'label' => $this->l('Use Image Gallery From Gallary Module'),
'name' => 'use_leo_gallery_default',
'default' => 0,
'desc' => $this->l('This config is only for default layout.'),
'values' => LeoECSetting::returnYesNo(),
'form_group_class' => 'leofieldset fieldset_product',
),
array(
'type' => 'switch',
'label' => $this->l('Use background for breadcrumb'),
'name' => 'breadcrumb_use_background',
'default' => 0,
'desc' => $this->l('If no, we will use breadcrumb like prestashop default theme.'),
'values' => LeoECSetting::returnYesNo(),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'color',
'label' => $this->l('Background Color'),
'name' => 'background_color',
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'chose_image',
'name' => 'background_image',
'label' => $this->l('Background image'),
'size' => 20,
'required' => false,
'lang' => false,
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_repeat',
'label' => $this->l('Background repeat'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'repeat-x',
'name' => 'Repeat-X'
),
array(
'value' => 'repeat-y',
'name' => 'Repeat-Y'
),
array(
'value' => 'repeat',
'name' => 'Repeat Both'
),
array(
'value' => 'no-repeat',
'name' => 'No Repeat'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_attachment',
'label' => $this->l('Background attachment'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'scroll',
'name' => 'Scroll'
),
array(
'value' => 'fixed',
'name' => 'Fixed'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_size',
'label' => $this->l('Background size'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'auto',
'name' => 'Auto'
),
array(
'value' => 'cover',
'name' => 'Cover'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'text',
'name' => 'background_position',
'label' => $this->l('Background position'),
'required' => false,
'lang' => false,
'desc' => $this->l('Property Values: center, center top, center center, center bottom, left top, left center, left bottom, right top, right center, right bottom, x% y%, x(px) y(px).'),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'html',
'name' => 'dump_name_box',
'form_group_class' => 'leofieldset fieldset_background',
'html_content' => ''.$this->l('Box Mode:').'
'
),
array(
'type' => 'color',
'name' => 'background_box_color',
'label' => $this->l('Body background color'),
'desc' => $this->l('Body background color only visible in "Boxed" mode.'),
'size' => 20,
'required' => false,
'lang' => false,
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'chose_image',
'name' => 'background_box_image',
'label' => $this->l('Body background image'),
'size' => 20,
'required' => false,
'lang' => false,
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_box_repeat',
'label' => $this->l('Body background repeat'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'repeat-x',
'name' => 'Repeat-X'
),
array(
'value' => 'repeat-y',
'name' => 'Repeat-Y'
),
array(
'value' => 'repeat',
'name' => 'Repeat Both'
),
array(
'value' => 'no-repeat',
'name' => 'No Repeat'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_box_attachment',
'label' => $this->l('Body background attachment'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'scroll',
'name' => 'Scroll'
),
array(
'value' => 'fixed',
'name' => 'Fixed'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'select',
'name' => 'background_box_size',
'label' => $this->l('Body background size'),
'required' => false,
'lang' => false,
'options' => array(
'query' => array(
array(
'value' => 'auto',
'name' => 'Auto'
),
array(
'value' => 'cover',
'name' => 'Cover'
)
),
'id' => 'value',
'name' => 'name'
),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'text',
'name' => 'background_box_position',
'label' => $this->l('Body background position'),
'required' => false,
'lang' => false,
'desc' => $this->l('Property Values: center, center top, center center, center bottom, left top, left center, left bottom, right top, right center, right bottom, x% y%, x(px) y(px).'),
'form_group_class' => 'leofieldset fieldset_background',
),
array(
'type' => 'chose_image',
'name' => 'breadcrumb_bg',
'label' => $this->l('Breadcrumb Background for all page'),
'size' => 20,
'required' => false,
'lang' => false,
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'color',
'label' => $this->l('Breadcrumb Background Color'),
'name' => 'breadcrumb_bgcolor',
'desc' => $this->l('Put image url has https if you use https.'),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'switch',
'label' => $this->l('Use full breadcrumb background'),
'name' => 'breadcrumb_bgfull',
'default' => 0,
'desc' => $this->l('Breadcrumb background will show full web.'),
'values' => LeoECSetting::returnYesNo(),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'text',
'label' => $this->l('Breadcrumb Min Height'),
'name' => 'breadcrumb_height',
'desc' => $this->l('Put height for desktop. Example: 200px. Mobile and table edit in module/appagebuilder/css/uniqute.css or custom.js file'),
'default' => '200px',
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'select',
'label' => $this->l('Breadcrumb Text Position'),
'name' => 'breadcrumb_textposition',
'default' => 'default',
'options' => array('query' => array(
array('id' => 'center', 'name' => $this->l('Center')),
array('id' => 'left', 'name' => $this->l('Left')),
array('id' => 'right', 'name' => $this->l('Right')),
),
'id' => 'id',
'name' => 'name'),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'select',
'label' => $this->l('Breadcrumb on Category Page'),
'name' => 'breadcrumb_category',
'default' => 'default',
'options' => array('query' => array(
array('id' => 'default', 'name' => $this->l('Use default Breadcrumb')),
array('id' => 'catimg', 'name' => $this->l('Use Category Image for Breadcrumb')),
array('id' => 'breadcrumbimg', 'name' => $this->l('Put image with category id')),
),
'id' => 'id',
'name' => 'name'),
'desc' => $this->l('Option 3: please put image with category id.jpg in folder img/breadcrumb/category/ID_CATEGORY.jpg'),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
array(
'type' => 'html',
'label' => $this->l(''),
'name' => 'breadcrumbhtml',
'html_content' => $this->l('If you want to use different image for each controller.
Put image example: product.jpg, contact.jpg, category.jpg in img/breadcrumb/
more guide access blog.leotheme.com'),
'form_group_class' => 'leofieldset fieldset_breadcrumb',
),
// begin font
array(
'type' => 'select',
'label' => $this->l('Font Family Base'),
'name' => 'font_family_base',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-base:'
),
array(
'type' => 'select',
'label' => $this->l('Font Family Menu'),
'name' => 'font_family_megamenu',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-megamenu:'
),
array(
'type' => 'select',
'label' => $this->l('Font Family Slider'),
'name' => 'font_family_slider',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-slider:'
),
array(
'type' => 'select',
'label' => $this->l('Font Family Heading'),
'name' => 'font_family_heading',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-heading:'
),
array(
'type' => 'select',
'label' => $this->l('Font Family Senary'),
'name' => 'font_family_senary',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-senary:'
),
array(
'type' => 'select',
'label' => $this->l('Font Family Septenary'),
'name' => 'font_family_septenary',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'form_group_class' => 'leofieldset fieldset_font',
'desc' => '--font-family-septenary:'
),
array(
'type' => 'font_h',
'htitle' => $this->l('H1 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h1',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h1_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h1_font_size',
'default' => '36',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h1_line_height',
'default' => '40',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h1_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h1_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('H2 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h2',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h2_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h2_font_size',
'default' => '30',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h2_line_height',
'default' => '40',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h2_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h2_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('H3 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h3',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h3_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h3_font_size',
'default' => '24',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h3_line_height',
'default' => '40',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h3_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h3_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('H4 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h4',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h4_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h4_font_size',
'default' => '18',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h4_line_height',
'default' => '28',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h4_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h4_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('H5 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h5',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h5_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h5_font_size',
'default' => '14',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h5_line_height',
'default' => '20',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h5_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h5_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('H6 Typography'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_h6',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'h6_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'h6_font_size',
'default' => '12',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'h6_line_height',
'default' => '20',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'h6_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'h6_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('P Tag'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_p',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'p_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'p_font_size',
'default' => '36',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'p_line_height',
'default' => '40',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'p_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'p_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('A Tag'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_a',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'a_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'a_font_size',
'default' => '36',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'a_line_height',
'default' => '40',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'a_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'a_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
array(
'type' => 'html',
'name' => 'default_html',
'html_content' => '
',
'form_group_class' => 'leofieldset fieldset_font',
'save' => false,
),
array(
'type' => 'font_h',
'htitle' => $this->l('Span Tag'),
'desc' => '',
'hdesc' => $this->l('Specify the typography properties for headings.'),
'name' => 'font_span',
'items' => array(
array(
'type' => 'select',
'label' => $this->l('Font Family'),
'name' => 'span_font_family',
'default' => LeoElementsProfilesModel::getFontFamily('default'),
'options' => $option_group_font_family,
'class' => 'chk_font_exist',
),
array(
'type' => 'text',
'label' => $this->l('Font Size'),
'name' => 'span_font_size',
'default' => '12',
),
array(
'type' => 'text',
'label' => $this->l('Line Height'),
'name' => 'span_line_height',
'default' => '20',
'desc' => $this->l('Number of pixel. You can input "auto" or "number", such as: 1170'),
),
array(
'type' => 'select',
'label' => $this->l('Font Weight'),
'name' => 'span_font_weight',
'default' => LeoElementsProfilesModel::getFontWeight('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontWeight(),
'id' => 'id',
'name' => 'name'),
),
array(
'type' => 'select',
'label' => $this->l('Font Style'),
'name' => 'span_font_style',
'default' => LeoElementsProfilesModel::getFontStyle('default'),
'options' => array(
'query' => LeoElementsProfilesModel::getFontStyle(),
'id' => 'id',
'name' => 'name'),
),
),
'default' => '',
'form_group_class' => 'leofieldset fieldset_font',
),
// end font
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Theme Color').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('Theme Color Default'),
'name' => 'theme_color_default',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--theme-color-default:'
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Text Color').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('Headings Color'),
'name' => 'headings_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--headings-color:'
),
array(
'type' => 'color',
'label' => $this->l('Link Color'),
'name' => 'link_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--link-color:'
),
array(
'type' => 'color',
'label' => $this->l('Link Hover Color'),
'name' => 'link_color_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--link-color-hover:'
),
array(
'type' => 'color',
'label' => $this->l('Text Color'),
'name' => 'text_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--text-color:'
),
array(
'type' => 'color',
'label' => $this->l('Price Color'),
'name' => 'price_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--price-color:'
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Button Color').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('Button Background Color'),
'name' => 'btn_bg',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--btn-bg:'
),
array(
'type' => 'color',
'label' => $this->l('Button Hover Background Color'),
'name' => 'btn_bg_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--btn-bg-hover:'
),
array(
'type' => 'color',
'label' => $this->l('Button Color'),
'name' => 'btn_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--btn-color:'
),
array(
'type' => 'color',
'label' => $this->l('Button Hover Color'),
'name' => 'btn_color_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--btn-color-hover:'
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Product Items').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('Product Background'),
'name' => 'product_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-background:'
),
array(
'type' => 'color',
'label' => $this->l('Product Name Color'),
'name' => 'product_name_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-name-color:'
),
array(
'type' => 'color',
'label' => $this->l('Product Name Hover Color'),
'name' => 'product_name_color_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-name-color-hover:'
),
array(
'type' => 'color',
'label' => $this->l('Product Price Color'),
'name' => 'product_price_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-price-color:'
),
array(
'type' => 'color',
'label' => $this->l('Product Regular Price Color'),
'name' => 'product_regular_price_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-regular-price-color:'
),
array(
'type' => 'color',
'label' => $this->l('Product Button Background'),
'name' => 'product_button_bg',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-button-bg:'
),
array(
'type' => 'color',
'label' => $this->l('Product Button Hover Background'),
'name' => 'product_button_bg_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-button-bg-hover:'
),
array(
'type' => 'color',
'label' => $this->l('Product Button Color'),
'name' => 'product_button_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-button-color:'
),
array(
'type' => 'color',
'label' => $this->l('Product Button Hover Color'),
'name' => 'product_button_color_hover',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--product-button-color-hover:'
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Product Flags').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('On Sale Badge Background'),
'name' => 'on_sale_badge_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--on-sale-badge-background:'
),
array(
'type' => 'color',
'label' => $this->l('On Sale Badge Color'),
'name' => 'on_sale_badge_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--on-sale-badge-color:'
),
array(
'type' => 'color',
'label' => $this->l('New Badge Background'),
'name' => 'new_badge_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--new-badge-background:'
),
array(
'type' => 'color',
'label' => $this->l('New Badge Color'),
'name' => 'new_badge_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--new-badge-color:'
),
array(
'type' => 'color',
'label' => $this->l('Sale Badge Background'),
'name' => 'sale_badge_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--sale-badge-background:'
),
array(
'type' => 'color',
'label' => $this->l('Sale Badge Color'),
'name' => 'sale_badge_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--sale-badge-color:'
),
array(
'type' => 'color',
'label' => $this->l('Online Only Background'),
'name' => 'online_only_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--online-only-background:'
),
array(
'type' => 'color',
'label' => $this->l('Online Only Color'),
'name' => 'online_only_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--online-only-color:'
),
array(
'type' => 'color',
'label' => $this->l('Pack Badge Background'),
'name' => 'pack_badge_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--pack-badge-background:'
),
array(
'type' => 'color',
'label' => $this->l('Pack Badge Color'),
'name' => 'pack_badge_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--pack-badge-color:'
),
array(
'type' => 'html',
'name' => '',
'html_content' => ''.$this->l('Boxes (including Sidebars)').'
',
'form_group_class' => 'leofieldset fieldset_variable_css',
),
array(
'type' => 'color',
'label' => $this->l('Block Background'),
'name' => 'block_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--block-background:'
),
array(
'type' => 'color',
'label' => $this->l('Block Inner Background'),
'name' => 'block_inner_background',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--block-inner-background:'
),
array(
'type' => 'color',
'label' => $this->l('Block Heading Background'),
'name' => 'block_heading_bg',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--block-heading-bg:'
),
array(
'type' => 'color',
'label' => $this->l('Block Heading Color'),
'name' => 'block_heading_color',
'form_group_class' => 'leofieldset fieldset_variable_css',
'desc' => '--block-heading-color:'
),
array(
'type' => 'hidden',
'id' => 'controller_url',
'name' => 'controller_url',
)
),
'submit' => array(
'title' => $this->l('Save'),
),
'buttons' => array(
'save-and-stay' => array(
'title' => $this->l('Save and Stay'),
'name' => 'submitAdd'.$this->table.'AndStay',
'type' => 'submit',
'class' => 'btn btn-default pull-right',
'icon' => 'process-icon-save'
)
)
);
$header_input = array(
'type' => 'mutiple_position_hook',
'name' => 'header_content',
'leoelements_contents_hook' => $leoelements_contents_hook,
'icon_url' => $icon_url,
'is_edit' => $is_edit,
'content' => $postions['header'],
'hook_list' => $hook_header,
'form_group_class' => 'leofieldset fieldset_header',
);
$content_input = array(
'type' => 'mutiple_position_hook',
'name' => 'content_content',
'leoelements_contents_hook' => $leoelements_contents_hook,
'icon_url' => $icon_url,
'is_edit' => $is_edit,
'content' => $postions['content'],
'hook_list' => $hook_content,
'form_group_class' => 'leofieldset fieldset_content',
);
$footer_input = array(
'type' => 'mutiple_position_hook',
'name' => 'footer_content',
'leoelements_contents_hook' => $leoelements_contents_hook,
'icon_url' => $icon_url,
'is_edit' => $is_edit,
'content' => $postions['footer'],
'hook_list' => $hook_footer,
'form_group_class' => 'leofieldset fieldset_footer',
);
$cat_hook = array(
'type' => 'position_hook',
'name' => 'category_content',
'leoelements_contents_hook' => $leoelements_contents_hook,
'icon_url' => $icon_url,
'is_edit' => $is_edit,
'hook_list' => $hook_category,
'form_group_class' => 'leofieldset fieldset_category',
);
$product_hook = array(
'type' => 'position_hook',
'name' => 'product_content',
'leoelements_contents_hook' => $leoelements_contents_hook,
'icon_url' => $icon_url,
'is_edit' => $is_edit,
'hook_list' => $hook_product,
'form_group_class' => 'leofieldset fieldset_product',
);
if ($is_edit) {
$fields_form1['input'][] = array(
'type' => 'select',
'label' => $this->l('Header'),
'name' => 'header',
'id' => 'header-select',
'class' => 'position-select',
'options' => array(
'query' => $header,
'id' => 'id',
'name' => 'name'
),
'default' => '0',
'desc' => $this->l('Select avail Header or create new'),
'form_group_class' => 'leofieldset fieldset_header loading-wraper',
);
$fields_form1['input'][] = $header_input;
$fields_form1['input'][] = array(
'type' => 'select',
'label' => $this->l('Content'),
'name' => 'content',
'id' => 'content-select',
'class' => 'position-select',
'options' => array(
'query' => $content,
'id' => 'id',
'name' => 'name'
),
'default' => '0',
'form_group_class' => 'leofieldset fieldset_content loading-wraper',
);
$fields_form1['input'][] = $content_input;
$fields_form1['input'][] = array(
'type' => 'select',
'label' => $this->l('Footer'),
'name' => 'footer',
'id' => 'footer-select',
'class' => 'position-select',
'leoelements_contents_hook' => $leoelements_contents_hook,
'options' => array(
'query' => $footer,
'id' => 'id',
'name' => 'name'
),
'default' => '0',
'form_group_class' => 'leofieldset fieldset_footer loading-wraper',
);
$fields_form1['input'][] = $footer_input;
$fields_form1['input'][] = $cat_hook;
$fields_form1['input'][] = $product_hook;
} else {
$fields_form1['input'][] = $header_input;
$fields_form1['input'][] = $content_input;
$fields_form1['input'][] = $footer_input;
$fields_form1['input'][] = $cat_hook;
$fields_form1['input'][] = $product_hook;
}
$this->fields_form = $fields_form1;
$this->fields_form['input'][] = array(
'type' => 'textarea',
'label' => $this->l('Custom Css'),
'name' => 'css',
'form_group_class' => 'leofieldset fieldset_custom',
'rows' => 100,
'desc' => sprintf($this->l('Please set write Permission for folder %s'), $this->profile_css_folder),
);
$this->fields_form['input'][] = array(
'type' => 'textarea',
'label' => $this->l('Custom Js'),
'name' => 'js',
'rows' => 100,
'form_group_class' => 'leofieldset fieldset_custom',
'desc' => sprintf($this->l('Please set write Permission for folder %s'), $this->profile_js_folder),
);
// Display link view if it existed
if ($is_edit) {
// $profile_link = $this->context->link->getAdminLink('AdminLeoElementsProfiles').'&id_leoelements_profiles='.$is_edit;
// $this->fields_form['input'][] = array(
// 'type' => 'html',
// 'name' => 'default_html',
// 'name' => 'dess',
// 'html_content' => '
// '.$this->l('View and edit use mode Layout design').' >>'
// );
}
// $path_guide = $this->getTemplatePath().'guide.tpl';
// $guide_box = LeoECSetting::buildGuide($this->context, $path_guide, 2);
// return $guide_box.parent::renderForm();
// $this->context->controller->addJs(leoECHelper::getJsAdminDir().'admin/function.js');
$forms = parent::renderForm();
$this->context->smarty->assign([
'leoformcontent' => $forms
]);
$tabs = $this->context->smarty->fetch($this->getTemplatePath().'tab-profile.tpl');
return $tabs;
}
/**
* Read file css + js to form when add/edit
*/
public function getFieldsValue($obj)
{
$file_value = parent::getFieldsValue($obj);
if ($obj->id && $obj->profile_key) {
$file_value['css'] = Tools::file_get_contents($this->profile_css_folder.$obj->profile_key.'.css');
$file_value['js'] = Tools::file_get_contents($this->profile_js_folder.$obj->profile_key.'.js');
} else {
$file_value['profile_key'] = 'profile'.LeoECSetting::getRandomNumber();
}
$file_value['controller_url'] = $this->context->link->getAdminLink('AdminLeoElementsProfiles');
if($obj->id) {
$params = json_decode($obj->params,1);
foreach($params as $k1 => $v1) {
if(is_array($v1) && strpos($k1, 'font') === 0) {
// font value
$tag = explode('_', $k1)[1];
foreach ($v1 as $k2 => $v2) {
$file_value[$k1][$tag.'_'.$k2] = $v2;
}
} elseif (is_array($v1)) {
foreach($v1 as $k2=>$v2) {
$file_value[$k1.'_'.$k2] = $v2;
}
} else {
$file_value[$k1] = $v1;
}
}
// $file_value['header'] = ($obj->header == "createnew")?'none':$obj->header;
// $file_value['content'] = ($obj->header == "createnew")?'none':$obj->content;
// $file_value['footer'] = ($obj->header == "createnew")?'none':$obj->footer;
foreach($this->all_postions as $position) {
$poparams = json_decode($position['params'], 1);
if($position['position_key'] == $obj->header) {
$file_value['header_content'] = $poparams;
}
if($position['position_key'] == $obj->content) {
$file_value['content_content'] = $poparams;
}
if($position['position_key'] == $obj->footer) {
$file_value['footer_content'] = $poparams;
}
}
//other hook
foreach (array('product', 'category') as $pos) {
$hooks = LeoECSetting::getHook($pos);
$poparams = array();
foreach ($hooks as $hook) {
if(isset($params[$hook])) {
$poparams[$hook] = $params[$hook];
}
}
$file_value[$pos.'_content'] = $poparams;
}
}
return $file_value;
}
public function processAdd()
{
parent::validateRules();
if (count($this->errors)) {
return false;
}
if ($this->object = parent::processAdd()) {
$this->saveCustomJsAndCss($this->object->profile_key, '');
}
$this->processParams();
$this->processHooks();
$this->saveBackgroundAndFont();
if (!Tools::isSubmit('submitAdd'.$this->table.'AndStay')) {
$this->redirect_after = Context::getContext()->link->getAdminLink('AdminLeoElementsProfiles');
$this->redirect_after .= '&id_leoelements_profiles='.($this->object->id);
$this->redirect();
}
}
public function processUpdate()
{
parent::validateRules();
if (count($this->errors)) {
return false;
}
if ($this->object = parent::processUpdate()) {
$this->saveCustomJsAndCss($this->object->profile_key, $this->object->profile_key);
}
$this->processParams();
$this->processHooks();
$this->saveBackgroundAndFont();
if (!Tools::isSubmit('submitAdd'.$this->table.'AndStay')) {
$this->redirect_after = Context::getContext()->link->getAdminLink('AdminLeoElementsProfiles');
$this->redirect_after .= '&id_leoelements_profiles='.($this->object->id);
$this->redirect();
}
}
public function processHooks()
{
foreach (array('header', 'content', 'footer') as $pos) {
$position = Tools::getValue($pos);
if($position) {
$hooks = LeoECSetting::getHook($pos);
$data = array();
foreach ($hooks as $hook) {
if(Tools::getValue($hook.'_'.$position)) {
$data[$hook] = Tools::getValue($hook.'_'.$position);
}
}
$params = json_encode($data);
$sql = 'UPDATE '._DB_PREFIX_.'leoelements_positions SET `params` = "'.pSQL($params).'" WHERE `position_key` ="'.pSQL($position).'"';
Db::getInstance()->execute($sql);
}
}
}
/**
* Get fullwidth hook, save to params
*/
public function processParams()
{
$post = $GLOBALS['_POST'];
$params = json_decode($this->object->params);
$params_unset = array('id_leoelements_profiles', 'submitAddleoelements_profiles', 'submitAddleoelements_profilesAndStay', 'name', 'profile_key', 'controller_url', 'header', 'content', 'footer', 'css', 'js');
if ($params === null) {
// add new profile
$params = new stdClass();
foreach ($post as $key => $value) {
if (strpos($key, 'listing_product') !== false) { // merge config listing product
$params->listing_product[str_replace('listing_product_', '', $key)] = Tools::getValue($key);
} elseif (strpos($key, 'breadcrumb') === 0) { // merge config breadcrumb
$params->breadcrumb[str_replace('breadcrumb_', '', $key)] = Tools::getValue($key);
} elseif (strpos($key, 'background') === 0) { // merge config background
$params->background[str_replace('background_', '', $key)] = Tools::getValue($key);
} elseif ($this->strposa($key, ['h1','h2','h3','h4','h5','h6','a_','p_','span_']) === 0 ) {// merge config font
$tag = explode('_', $key)[0];
$params->{'font_'.$tag}[str_replace($tag.'_', '', $key)] = Tools::getValue($key);
} elseif (!in_array($key, $params_unset) && strpos($key, 'meta_title') === false && strpos($key, 'friendly_url') === false && strpos($key, 'meta_description') === false
&& strpos($key, 'meta_keywords') === false && strpos($key, 'fullwidth_index_hook') === false) {
$params->{$key} = Tools::getValue($key);
}
}
} else {
// update profile
foreach ($post as $key => $value) {
if (strpos($key, 'listing_product') !== false) { // merge config listing product
$params->listing_product->{str_replace('listing_product_', '', $key)} = Tools::getValue($key);
} elseif (strpos($key, 'breadcrumb') === 0) { // merge config breadcrumb
$params->breadcrumb->{str_replace('breadcrumb_', '', $key)} = Tools::getValue($key);
} elseif (strpos($key, 'background') === 0) { // merge config background
$params->background->{str_replace('background_', '', $key)} = Tools::getValue($key);
} elseif ($this->strposa($key, ['h1','h2','h3','h4','h5','h6','a_','p_','span_']) === 0 ) {
$tag = explode('_', $key)[0];
$params->{'font_'.$tag}->{str_replace($tag.'_', '', $key)} = Tools::getValue($key);
} elseif (!in_array($key, $params_unset) && strpos($key, 'meta_title') === false && strpos($key, 'friendly_url') === false && strpos($key, 'meta_description') === false
&& strpos($key, 'meta_keywords') === false && strpos($key, 'fullwidth_index_hook') === false) {
$params->{$key} = Tools::getValue($key);
}
}
}
//save data for left/right thumb
$layoutDetail = array('productdetail_layout', 'productdetail_layout_tablet', 'productdetail_layout_mobile');
$layout_detail_data = array();
$use_leo_gallery = 0;
foreach ($layoutDetail as $layout) {
$data_column = '';
if (Tools::getValue($layout)) {
$layout_data = LeoElementsProductsModel::getProductProfileByKey(Tools::getValue($layout));
$params_layout = json_decode($layout_data['params'], true);
if (isset($params_layout['gridLeft'])) {
foreach ($params_layout['gridLeft'] as $group) {
if (isset($group['columns'])) {
foreach ($group['columns'] as $columns) {
if (isset($columns['sub'])) {
foreach ($columns['sub'] as $sub) {
$layout_detail_data[] = $data_column = $sub['form'];
break;
}
}
if ($data_column) break;
}
}
if ($data_column) break;
}
}
} elseif (isset($layout_detail_data[0])) {
$data_column = $layout_detail_data[0];
}
$thumb = str_replace('productdetail', 'thumb_product', $layout);
$use_leo_gallery_layout = (isset($data_column['use_leo_gallery']) && $data_column['use_leo_gallery']) ? 1 : 0;
if ($use_leo_gallery != 1) {
$use_leo_gallery = $use_leo_gallery_layout;
}
if (isset($params->{$thumb}) && $params->{$thumb} && $data_column && isset($data_column['templateview'])) {
$params->{$thumb}->use_leo_gallery = $use_leo_gallery_layout;
$params->{$thumb}->mode = $data_column['templateview'] == 'bottom' ? 'horizontal' : 'vertical';
$params->{$thumb}->layout = $data_column['templateview'];
$params->{$thumb}->zoom_type = $data_column['templatezoomtype'];
$params->{$thumb}->column = $data_column['numberimage1200'];
$params->{$thumb}->column_t = $data_column['numberimage768'];
$params->{$thumb}->column_m = $data_column['numberimage480'];
} elseif ($data_column && isset($data_column['templateview'])) {
$params->{$thumb}['use_leo_gallery'] = $use_leo_gallery_layout;
$params->{$thumb}['mode'] = $data_column['templateview'] == 'bottom' ? 'horizontal' : 'vertical';
$params->{$thumb}['layout'] = $data_column['templateview'];
$params->{$thumb}['zoom_type'] = $data_column['templatezoomtype'];
$params->{$thumb}['column'] = $data_column['numberimage1200'];
$params->{$thumb}['column_t'] = $data_column['numberimage768'];
$params->{$thumb}['column_m'] = $data_column['numberimage480'];
} elseif (isset($params->{$thumb}) && $params->{$thumb}) {
if(leoECHelper::isLeo()){
}else{
$params->{$thumb}->use_leo_gallery = 0;
}
} else {
if(isset($params->{$thumb}) && is_string($params->{$thumb})){
$params->{$thumb} = array();
}
$params->{$thumb}['use_leo_gallery'] = 0;
}
}
if ($use_leo_gallery != 1 && !$params->productdetail_layout && !$params->productdetail_layout_tablet && !$params->productdetail_layout_mobile) {
$use_leo_gallery = $params->use_leo_gallery_default;
}
# disable leogallery module if not use (use slick thumb, zoom by theme)
if (Module::isInstalled('leogallery')) {
$leogallery_module = Module::getInstanceByName('leogallery');
if (!$use_leo_gallery && Module::isEnabled('leogallery')) {
$leogallery_module->disable();
} elseif ($use_leo_gallery && !Module::isEnabled('leogallery')) {
$leogallery_module->enable();
}
}
# get post index hook
$index_hook = LeoECSetting::getIndexHook();
$post_index_hooks = array();
foreach ($index_hook as $key => $value) {
// validate module
$post_index_hooks[$value] = Tools::getValue('fullwidth_index_hook_'.$value) ?
Tools::getValue('fullwidth_index_hook_'.$value) : LeoECSetting::HOOK_BOXED;
// validate module
unset($key);
}
$params->fullwidth_index_hook = $post_index_hooks;
# get post other hook
$other_hook = LeoECSetting::getOtherHook();
$post_other_hooks = array();
foreach ($other_hook as $key => $value) {
// validate module
$post_other_hooks[$value] = Tools::getValue('fullwidth_other_hook_'.$value) ? Tools::getValue('fullwidth_other_hook_'.$value) : LeoECSetting::HOOK_BOXED;
// validate module
unset($key);
if(isset($params->{'fullwidth_other_hook_'.$value})) {
unset($params->{'fullwidth_other_hook_'.$value});
}
}
$params->fullwidth_other_hook = $post_other_hooks;
# get post disable hook
$cache_hooks = LeoECSetting::getCacheHook();
$post_disable_hooks = array();
foreach ($cache_hooks as $key => $value) {
// validate module
$post_disable_hooks[$value] = Tools::getValue('disable_cache_hook_'.$value) ? Tools::getValue('disable_cache_hook_'.$value) : LeoECSetting::HOOK_BOXED;
// validate module
unset($key);
if(isset($params->{'disable_cache_hook_'.$value})) {
unset($params->{'disable_cache_hook_'.$value});
}
}
$params->disable_cache_hook = $post_disable_hooks;
// echo '' . "\n";
// print_r($params);
// echo '
' . "\n";
// die();
# Save to params
$this->object->params = json_encode($params);
# Save group_box
if (Tools::getValue('groupBox')) {
$this->object->group_box = implode(',', Tools::getValue('groupBox'));
} else {
$this->object->group_box = '';
}
$this->object->save();
}
/**
* Auto create new position
*/
public function processPosition()
{
$save = 0;
if ($this->object->header == "createnew") {
$obj = new LeoElementsPositionsModel();
$obj->name = "Header of ".$this->object->name;
$obj->position = "header";
$obj->position_key = 'position'.LeoECSetting::getRandomNumber();
$obj->params = '';
$obj->save();
$save = 1;
$this->object->header = $obj->position_key;
}
if ($this->object->content == "createnew") {
$obj = new LeoElementsPositionsModel();
$obj->name = "Content of ".$this->object->name;
$obj->position = "content";
$obj->position_key = 'position'.LeoECSetting::getRandomNumber();
$obj->params = '';
$obj->save();
$save = 1;
$this->object->content = $obj->position_key;
}
if ($this->object->footer == "createnew") {
$obj = new LeoElementsPositionsModel();
$obj->name = "Footer of ".$this->object->name;
$obj->position = "footer";
$obj->position_key = 'position'.LeoECSetting::getRandomNumber();
$obj->params = '';
$obj->save();
$save = 1;
$this->object->footer = $obj->position_key;
}
if($save) {
$this->object->save();
}
}
public function saveBackgroundAndFont()
{
// SET COOKIE AGAIN
$theme_cookie_name = 'LEOELEMENTS_PANEL_CONFIG';
$arrayConfig = array('default_skin', 'layout_mode', 'header_style', 'enable_fheader', 'sidebarmenu');
# Remove value in cookie
foreach ($arrayConfig as $value) {
unset($_COOKIE[$theme_cookie_name.'_'.$value]);
setcookie($theme_cookie_name.'_'.$value, '', 0, '/');
}
$content = '';
$font_fields = array('font_family_base', 'font_family_septenary', 'font_family_slider', 'font_family_heading', 'font_family_senary', 'h1_font_family', 'h2_font_family', 'h3_font_family', 'h4_font_family', 'h5_font_family', 'h6_font_family', 'p_font_family', 'a_font_family', 'span_font_family');
$font_face = LeoElementsFont::getAllFonts('all');
if ($font_face) {
$font_add = array();
foreach($font_fields as $font_field) {
if ((int)Tools::getValue($font_field) && !in_array(Tools::getValue($font_field), $font_add)) {
$font = new LeoElementsFont(Tools::getValue($font_field));
if ($font->type == 1) {
$files = explode(',', $font->file);
$content .= "@font-face {\n";
$content .= "font-family:'".$font->font_family."';\n";
$content .= "font-style:".$font->font_style.";\n";
$content .= "font-weight:".$font->font_weight.";\n";
$content .= "src:local('".$font->font_family."'),";
foreach ($files as $file_k => $file) {
$content .= "url(../../../../assets/fonts/".$file.") format('".explode('.', $file)[count(explode('.', $file)) - 1]."')";
$content .= ($file_k == count($files) - 1) ? ';' : ',';
}
$content .= "}\n";
} else {
$content .= '@import url("//fonts.googleapis.com/css?family='.$font->file.':wght@'.($font->font_weight != 400 ? '400;'.$font->font_weight : '400').'");'."\n";
}
$font_add[] = Tools::getValue($font_field);
}
}
}
# WRITE ATTRIBUTE FONT
$content .= LeoElementsProfilesModel::renderCSSFont('h1');
$content .= LeoElementsProfilesModel::renderCSSFont('h2');
$content .= LeoElementsProfilesModel::renderCSSFont('h3');
$content .= LeoElementsProfilesModel::renderCSSFont('h4');
$content .= LeoElementsProfilesModel::renderCSSFont('h5');
$content .= LeoElementsProfilesModel::renderCSSFont('h6');
$content .= LeoElementsProfilesModel::renderCSSFont('p');
$content .= LeoElementsProfilesModel::renderCSSFont('a');
$content .= LeoElementsProfilesModel::renderCSSFont('span');
// save background
if (Tools::getValue('background_color') || Tools::getValue('background_image')) {
$content .= 'body {';
if (Tools::getValue('background_color')) {
$content .= ' background-color:' . Tools::getValue('background_color') . ';';
}
if (Tools::getValue('background_image')) {
$content .= ' background-image:url(' . Tools::getValue('background_image') . ');';
$content .= ' background-attachment:' . Tools::getValue('background_attachment') . ';';
$content .= ' background-repeat:' . Tools::getValue('background_repeat') . ';';
$content .= ' background-size:' . Tools::getValue('background_size') . ';';
if (Tools::getValue('background_position')) {
$content .= ' background-position:' . Tools::getValue('background_position') . ';';
}
}
$content .= " }\n";
}
if (Tools::getValue('background_box_color') || Tools::getValue('background_box_image')) {
$content .= 'body.layout-boxed-lg {';
if (Tools::getValue('background_box_color')) {
$content .= ' background-color:' . Tools::getValue('background_box_color') . ';';
}
if (Tools::getValue('background_box_image')) {
$content .= ' background-image:url(' . Tools::getValue('background_box_image') . ');';
$content .= ' background-attachment:' . Tools::getValue('background_box_attachment') . ';';
$content .= ' background-repeat:' . Tools::getValue('background_box_repeat') . ';';
$content .= ' background-size:' . Tools::getValue('background_box_size') . ';';
if (Tools::getValue('background_box_position')) {
$content .= ' background-position:' . Tools::getValue('background_box_position') . ';';
}
}
$content .= " }\n";
}
$theme_base = array('font_family_base', 'font_family_septenary', 'font_family_slider', 'font_family_heading', 'font_family_senary', 'theme_color_default', 'theme_color_secondary', 'theme_color_tertiary', 'theme_color_senary', 'link_color', 'link_color_hover', 'text_color', 'price_color', 'btn_bg', 'btn_bg_hover', 'btn_color', 'btn_color_hover', 'product_background', 'product_name_color', 'product_name_color_hover', 'product_price_color', 'product_regular_price_color', 'product_button_bg', 'product_button_bg_hover', 'product_button_color', 'product_button_color_hover', 'on_sale_badge_background', 'on_sale_badge_color', 'new_badge_background', 'new_badge_color', 'sale_badge_background', 'sale_badge_color', 'online_only_background', 'online_only_color', 'pack_badge_background', 'pack_badge_color', 'block_background', 'block_inner_background', 'block_heading_bg', 'block_heading_color');
$variables_css = '';
foreach ($theme_base as $vcss) {
$val_css = Tools::getValue($vcss);
$key_css = '--'.str_replace('_', '-', $vcss); // font_family_base -> --font-family-base
if ($val_css && strpos($vcss, 'font') === 0) { // font family variables
$variables_css .= $key_css.": '".((int)$val_css ? (new LeoElementsFont($val_css))->font_family : $val_css)."', sans-serif;\n";
} elseif ($val_css) {
$variables_css .= $key_css.": ".$val_css.";\n";
}
}
if ($variables_css) {
$content .= ":root {\n";
$content .= $variables_css;
$content .= "}\n";
}
$css_dir = $this->theme_dir.'modules/leoelements/views/css/';
$font_custom_file_name = 'font-custom-'.Tools::getValue('profile_key').'-'.Context::getContext()->shop->id.'.css';
if (!$content) {
if (file_exists($css_dir.$font_custom_file_name)) {
unlink($css_dir.$font_custom_file_name);
}
} else {
LeoECSetting::writeFile($css_dir, $font_custom_file_name, $content);
}
# SAVING GOOGLE FONT
$gfont_items = Tools::getValue('gfont_items');
if ($gfont_items) {
$str_gfont_items = implode('__________', $gfont_items);
Configuration::updateValue(leoECHelper::getConfigName('google_font'), $str_gfont_items);
} else {
Configuration::updateValue(leoECHelper::getConfigName('google_font'), '');
}
# SAVING SUBSET
$gfonts_subsets = Tools::getValue('gfonts_subsets');
if ($gfonts_subsets) {
$gfonts_subsets = implode(',', $gfonts_subsets);
Configuration::updateValue(leoECHelper::getConfigName('google_subset'), $gfonts_subsets);
} else {
Configuration::updateValue(leoECHelper::getConfigName('google_subset'), '');
}
}
public function saveCustomJsAndCss($key, $old_key = '')
{
# DELETE OLD FILE
if ($old_key) {
Tools::deleteFile($this->profile_css_folder.$old_key.'.css');
Tools::deleteFile($this->profile_js_folder.$old_key.'.js');
}
if (Tools::getValue('js') != '') {
LeoECSetting::writeFile($this->profile_js_folder, $key.'.js', Tools::getValue('js'));
}
if (Tools::getValue('css') != '') {
# FIX CUSTOMER CAN NOT TYPE "\"
$temp = Tools::getAllValues();
$css = $temp['css'];
LeoECSetting::writeFile($this->profile_css_folder, $key.'.css', $css);
}
}
public function renderGoogleLinkFont($gfont_name, $attribute)
{
$output = '';
if (is_array($attribute) && $attribute) {
$str_att = '';
foreach ($attribute as $value) {
$str_att .= ','.$value;
}
$str_att = trim($str_att, ',');
$output = $gfont_name . ':' . $str_att;
} else {
$output = $gfont_name;
}
return $output;
}
/**
* Generate form : create checkbox in admin form ( add/edit profile )
*/
public static function getCheckboxIndexHook()
{
$ids = LeoECSetting::getIndexHook();
$names = LeoECSetting::getIndexHook();
return leoECHelper::getArrayOptions($ids, $names);
}
/**
* Generate form : create checkbox in admin form ( add/edit profile )
*/
public static function getCheckboxOtherHook()
{
$ids = LeoECSetting::getOtherHook();
$names = LeoECSetting::getOtherHook();
return leoECHelper::getArrayOptions($ids, $names);
}
/**
* Generate form : create checkbox in admin form ( add/edit profile )
*/
public static function getCheckboxCacheHook()
{
$ids = LeoECSetting::getCacheHook();
$names = LeoECSetting::getCacheHook();
return leoECHelper::getArrayOptions($ids, $names);
}
public function strposa($haystack, $needles=array(), $offset=0) {
$chr = array();
foreach($needles as $needle) {
$res = strpos($haystack, $needle, $offset);
if ($res !== false) $chr[$needle] = $res;
}
if(empty($chr)) return false;
return min($chr);
}
/**
* PERMISSION ACCOUNT demo@demo.com
* OVERRIDE CORE
*/
public function initProcess()
{
parent::initProcess();
if (count($this->errors) <= 0) {
if (Tools::isSubmit('duplicate'.$this->table)) {
if ($this->id_object) {
if (!$this->access('add')) {
$this->errors[] = $this->trans('You do not have permission to duplicate this.', array(), 'Admin.Notifications.Error');
}
}
}
}
}
}