diff --git a/modules/themeconfigurator/themeconfigurator.php b/modules/themeconfigurator/themeconfigurator.php
index 0d94cf6c5..af8737bd8 100644
--- a/modules/themeconfigurator/themeconfigurator.php
+++ b/modules/themeconfigurator/themeconfigurator.php
@@ -29,15 +29,26 @@ if (!defined('_PS_VERSION_'))
class ThemeConfigurator extends Module
{
+ protected $max_image_size = 1048576;
+ protected $default_language;
+ protected $languages;
+
public function __construct()
{
$this->name = 'themeconfigurator';
$this->tab = 'front_office_features';
$this->version = '0.1';
+ $this->bootstrap = true;
+ $this->secure_key = Tools::encrypt($this->name);
+ $this->default_language = Language::getLanguage(Configuration::get('PS_LANG_DEFAULT'));
+ $this->languages = Language::getLanguages();
parent::__construct();
$this->displayName = $this->l('Theme configurator');
$this->description = $this->l('Configure elements of your theme');
- $this->bootstrap = true;
+ $this->module_path = _PS_MODULE_DIR_.$this->name.'/';
+ $this->uploads_path = _PS_MODULE_DIR_.$this->name.'/images/';
+ $this->admin_tpl_path = _PS_MODULE_DIR_.$this->name.'/views/templates/admin/';
+ $this->hooks_tpl_path = _PS_MODULE_DIR_.$this->name.'/views/templates/hooks/';
}
public function install()
@@ -58,207 +69,565 @@ class ThemeConfigurator extends Module
'"Lucida Console", Monaco, monospace'
);
- return (parent::install()
- && $this->registerHook('top')
- && Configuration::updateValue('PS_TC_THEMES', serialize($themes_colors))
- && Configuration::updateValue('PS_TC_THEMES_FONTS', serialize($themes_fonts)));
+ if (!parent::install() ||
+ !$this->installDB() ||
+ !$this->registerHook('displayHeader') ||
+ !$this->registerHook('displayTop') ||
+ !$this->registerHook('displayLeftColumn') ||
+ !$this->registerHook('displayRightColumn') ||
+ !$this->registerHook('displayHome') ||
+ !$this->registerHook('displayFooter') ||
+ !$this->registerHook('displayBackOfficeHeader') ||
+
+ !Configuration::updateValue('PS_TC_THEMES', serialize($themes_colors)) ||
+ !Configuration::updateValue('PS_TC_THEMES_FONTS', serialize($themes_fonts)))
+ return false;
+
+ return true;
}
- public function hookTop($params)
+ private function installDB()
{
- if ((int)Tools::getValue('live_configurator', 0) == 1)
- {
- if (Tools::isSubmit('submitLiveConfigurator'))
- {
- Configuration::updateValue('PS_TC_THEME', Tools::getValue('theme'));
- Configuration::updateValue('PS_TC_TEXT_PAGE_FONT', Tools::getValue('text-page-font'));
- Configuration::updateValue('PS_TC_TEXT_MENU_FONT', Tools::getValue('text-menu-font'));
- Configuration::updateValue('PS_TC_PRODUCT_NAME_FONT', Tools::getValue('product-name-font'));
- }
+ return (
+ Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'themeconfigurator`') &&
+ Db::getInstance()->Execute('
+ CREATE TABLE `'._DB_PREFIX_.'themeconfigurator` (
+ `id_item` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `id_shop` int(10) unsigned NOT NULL,
+ `id_lang` int(10) unsigned NOT NULL,
+ `item_order` int(10) unsigned NOT NULL,
+ `title` VARCHAR(100),
+ `title_use` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
+ `hook` VARCHAR(100),
+ `url` VARCHAR(100),
+ `target` tinyint(1) unsigned NOT NULL DEFAULT \'0\',
+ `image` VARCHAR(100),
+ `image_w` VARCHAR(10),
+ `image_h` VARCHAR(10),
+ `html` TEXT,
+ `active` tinyint(1) unsigned NOT NULL DEFAULT \'1\',
+ PRIMARY KEY (`id_item`)
+ ) ENGINE = '._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8;')
+ );
- $this->context->controller->addCSS($this->_path.'css/live_configurator.css');
- $this->context->controller->addJS($this->_path.'js/live_configurator.js');
-
- $this->smarty->assign(array(
- 'themes' => unserialize(Configuration::get('PS_TC_THEMES')),
- 'themes_fonts' => unserialize(Configuration::get('PS_TC_THEMES_FONTS')),
- 'advertisement_image' => $this->_path.'/img/'.$this->context->language->iso_code.'/advertisement.png',
- 'advertisement_text' => $this->l('Over 500+ PrestaShop Premium Templates! Browse Now!')
- ));
- return $this->display(__FILE__, 'live_configurator.tpl');
- }
+ return true;
}
- public function getContent()
- {
- if (Tools::isSubmit('submitModule'))
- {
- Configuration::updateValue('PS_QUICK_VIEW', (int)Tools::getValue('quick_view'));
- foreach($this->getConfigurableModules() as $module)
+ public function uninstall()
+ {
+ $images = Db::getInstance()->executeS('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator`');
+ foreach ($images as $image)
+ $this->deleteImage($image['image']);
+
+ if (!Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'themeconfigurator`') ||
+ !parent::uninstall())
+ return false;
+
+ return true;
+ }
+
+ public function hookDisplayBackOfficeHeader()
+ {
+ if (Tools::getValue('configure') != $this->name)
+ return;
+ $this->context->controller->addCSS($this->_path.'views/css/admin.css');
+ $this->context->controller->addJquery();
+ $this->context->controller->addJS($this->_path.'views/js/admin.js');
+ }
+
+ public function hookdisplayHeader($params)
+ {
+ $this->context->controller->addCss($this->_path.'views/css/hooks.css', 'all');
+ }
+
+ public function hookDisplayTop()
+ {
+ if ((int)Tools::getValue('live_configurator', 0) == 1)
{
- if (!isset($module['is_module']) || !$module['is_module'] || !Validate::isModuleName($module['name']))
- continue;
-
- $module_instance = Module::getInstanceByName($module['name']);
- if ($module_instance === false || !is_object($module_instance))
- continue;
-
- $is_installed = (int)Validate::isLoadedObject($module_instance);
- if ($is_installed)
+ if (Tools::isSubmit('submitLiveConfigurator'))
{
- if (($active = (int)Tools::getValue($module['name'])) == $module_instance->active)
- continue;
-
- if ($active)
- $module_instance->enable();
- else
- $module_instance->disable();
+ Configuration::updateValue('PS_TC_THEME', Tools::getValue('theme'));
+ Configuration::updateValue('PS_TC_TEXT_PAGE_FONT', Tools::getValue('text-page-font'));
+ Configuration::updateValue('PS_TC_TEXT_MENU_FONT', Tools::getValue('text-menu-font'));
+ Configuration::updateValue('PS_TC_PRODUCT_NAME_FONT', Tools::getValue('product-name-font'));
}
- else
- if ((int)Tools::getValue($module['name']))
- $module_instance->install();
- }
- }
- return $this->renderForm();
- }
- public function renderForm()
- {
- $inputs = array();
- foreach ($this->getConfigurableModules() as $module)
- $inputs[] = array(
- 'type' => 'switch',
- 'label' => $module['label'],
- 'name' => $module['name'],
- 'desc' => (isset($module['desc']) ? $module['desc'] : ''),
- 'values' => array(
- array(
- 'id' => 'active_on',
- 'value' => 1,
- 'label' => $this->l('Enabled')
- ),
- array(
- 'id' => 'active_off',
- 'value' => 0,
- 'label' => $this->l('Disabled')
- )
- ),
- );
-
- $fields_form = array(
- 'form' => array(
- 'legend' => array(
- 'title' => $this->l('Settings'),
- 'icon' => 'icon-cogs'
- ),
- 'input' => $inputs,
- 'submit' => array(
- 'title' => $this->l('Save'),
- 'class' => 'btn btn-default')
- ),
- );
-
- $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();
+ $this->context->controller->addCSS($this->_path.'css/live_configurator.css');
+ $this->context->controller->addJS($this->_path.'js/live_configurator.js');
- $helper->identifier = $this->identifier;
- $helper->submit_action = 'submitModule';
- $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
- $helper->token = Tools::getAdminTokenLite('AdminModules');
- $helper->tpl_vars = array(
- 'fields_value' => $this->getConfigFieldsValues(),
- 'languages' => $this->context->controller->getLanguages(),
- 'id_language' => $this->context->language->id
- );
+ $this->smarty->assign(array(
+ 'themes' => unserialize(Configuration::get('PS_TC_THEMES')),
+ 'themes_fonts' => unserialize(Configuration::get('PS_TC_THEMES_FONTS')),
+ 'advertisement_image' => $this->_path.'/img/'.$this->context->language->iso_code.'/advertisement.png',
+ 'advertisement_text' => $this->l('Over 500+ PrestaShop Premium Templates! Browse Now!')
+ ));
+ return $this->display(__FILE__, 'live_configurator.tpl');
+ }
+
+ $this->context->smarty->assign(array(
+ 'htmlitems'=> $this->getItemsFromHook('top'),
+ 'hook' => 'top'
+ ));
+ return $this->display(__FILE__, 'views/templates/hooks/hook.tpl');
+ }
- return $helper->generateForm(array($fields_form));
- }
-
- protected function getConfigurableModules()
- {
- return array(
- array(
- 'label' => $this->l('Display the reinsurance block'),
- 'name' => 'blockreinsurance',
- 'desc' => ''.$this->l('Configure the reinsurance block').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockreinsurance')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Display the social following links'),
- 'name' => 'blocksocial',
- 'desc' => ''.$this->l('Configure the social following links').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blocksocial')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Display contact information'),
- 'name' => 'blockcontactinfos',
- 'desc' => ''.$this->l('Configure the contact information of your store').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockcontactinfos')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Display social buttons on the products page'),
- 'name' => 'addsharethis',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('addsharethis')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Display facebook block on the home page'),
- 'name' => 'blockfacebook',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockfacebook')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Customer cms information block'),
- 'name' => 'blockcmsinfo',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockcmsinfo')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Customer banner information block'),
- 'name' => 'tmhtmlcontent',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('tmhtmlcontent')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Enable Quick view'),
- 'name' => 'quick_view',
- 'value' => (int)Tools::getValue('PS_QUICK_VIEW', Configuration::get('PS_QUICK_VIEW'))
- ),
- array(
- 'label' => $this->l('Enable top banner'),
- 'name' => 'blockbanner',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockbanner')) && $module->active),
- 'is_module' => true,
- ),
- array(
- 'label' => $this->l('Enable product payment logos'),
- 'name' => 'productpaymentlogos',
- 'desc' => ''.$this->l('Configure').'',
- 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('productpaymentlogos')) && $module->active),
- 'is_module' => true,
- )
- );
- }
+ public function hookDisplayHome()
+ {
+ $this->context->smarty->assign(array(
+ 'htmlitems'=> $this->getItemsFromHook('home'),
+ 'hook' => 'home'
+ ));
+ return $this->display(__FILE__, 'views/templates/hooks/hook.tpl');
+ }
- public function getConfigFieldsValues()
- {
- $values = array();
- foreach ($this->getConfigurableModules() as $module)
- $values[$module['name']] = $module['value'];
- return $values;
+ public function hookDisplayLeftColumn()
+ {
+ $this->context->smarty->assign(array(
+ 'htmlitems'=> $this->getItemsFromHook('left'),
+ 'hook' => 'left'
+ ));
+ return $this->display(__FILE__, 'views/templates/hooks/hook.tpl');
+ }
+
+ public function hookDisplayRightColumn()
+ {
+ $this->context->smarty->assign(array(
+ 'htmlitems'=> $this->getItemsFromHook('right'),
+ 'hook' => 'right'
+ ));
+ return $this->display(__FILE__, 'views/templates/hooks/hook.tpl');
+ }
+
+ public function hookDisplayFooter()
+ {
+ $this->context->smarty->assign(array(
+ 'htmlitems'=> $this->getItemsFromHook('footer'),
+ 'hook' => 'footer'
+ ));
+ return $this->display(__FILE__, 'views/templates/hooks/hook.tpl');
+ }
- }
+ protected function getItemsFromHook($hook)
+ {
+ if (!$hook)
+ return false;
+
+ return Db::getInstance()->ExecuteS('
+ SELECT *
+ FROM `'._DB_PREFIX_.'themeconfigurator`
+ WHERE id_shop = '.(int)$this->context->shop->id.' AND id_lang = '.(int)$this->context->language->id.' AND hook = \''.pSQL($hook).'\' AND active = 1
+ ORDER BY item_order ASC'
+ );
+ }
+
+ protected function deleteImage($image)
+ {
+ $file_name = $this->uploads_path.$image;
+ if (realpath(dirname($file_name)) != $this->uploads_path)
+ die;
+
+ if ($image != '' && is_file($file_name))
+ unlink($file_name);
+ }
+
+ protected function removeItem()
+ {
+ $id_item = (int)Tools::getValue('item_id');
+
+ if ($image = Db::getInstance()->getValue('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator` WHERE id_item = '.(int)$id_item))
+ $this->deleteImage($image);
+
+ Db::getInstance()->delete(_DB_PREFIX_.'themeconfigurator', 'id_item = '.(int)$id_item);
+
+ if (Db::getInstance()->Affected_Rows() == 1)
+ {
+ Db::getInstance()->execute('
+ UPDATE `'._DB_PREFIX_.'themeconfigurator`
+ SET item_order = item_order-1
+ WHERE (
+ item_order > '.(int)Tools::getValue('item_order').' AND
+ id_shop = '.(int)$this->context->shop->id.' AND
+ hook = \''.pSQL(Tools::getValue('item_hook')).'\')
+ ');
+
+ $this->context->smarty->assign('confirmation', $this->l('Successful deletion.'));
+ }
+ else
+ $this->context->smarty->assign('error', $this->l('Can\'t delete the slide.'));
+ }
+
+ protected function updateItem()
+ {
+ $id_item = (int)Tools::getValue('item_id');
+
+ $title = Tools::getValue('item_title');
+ $content = Tools::getValue('item_html');
+ if (!Validate::isCleanHtml($title, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')) || !Validate::isCleanHtml($content,(int)Configuration::get('PS_ALLOW_HTML_IFRAME')))
+ {
+ $this->context->smarty->assign('error', $this->l('Invalid content'));
+ return false;
+ }
+
+ $new_image = '';
+ $image_w = (is_numeric(Tools::getValue('item_img_w'))) ? (int)Tools::getValue('item_img_w') : '';
+ $image_h = (is_numeric(Tools::getValue('item_img_h'))) ? (int)Tools::getValue('item_img_h') : '';
+
+ if(!empty($_FILES['item_img']['name']))
+ {
+ if ($old_image = Db::getInstance()->getValue('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator` WHERE id_item = '.(int)$id_item))
+ $this->_deleteImages($old_image);
+
+ if (!$image = $this->uploadImage($_FILES['item_img'], $image_w, $image_h))
+ return false;
+
+ $new_image = 'image = \''.pSQL($image).'\',';
+ }
+ else
+ {
+ $image_w = '';
+ $image_h = '';
+ }
+
+ if (!Db::getInstance()->execute('
+ UPDATE `'._DB_PREFIX_.'themeconfigurator` SET
+ title = \''.pSQL($title).'\',
+ title_use = '.(int)Tools::getValue('item_title_use').',
+ hook = \''.pSQL(Tools::getValue('item_hook')).'\',
+ url = \''.pSQL(Tools::getValue('item_url')).'\',
+ target = '.(int)Tools::getValue('item_target').',
+ '.$new_image.'
+ image_w = '.(int)$image_w.',
+ image_h = '.(int)$image_h.',
+ active = '.(int)Tools::getValue('item_active').',
+ html = \''.pSQL($content).'\'
+ WHERE id_item = '.(int)Tools::getValue('item_id')
+ ))
+ {
+ if ($image = Db::getInstance()->getValue('SELECT image FROM `'._DB_PREFIX_.'themeconfigurator` WHERE id_item = '.(int)Tools::getValue('item_id')))
+ $this->deleteImage($image);
+
+ $this->context->smarty->assign('error', $this->l('An error occured while saving data.'));
+ return false;
+ }
+ $this->context->smarty->assign('confirmation', $this->l('Successfully updated.'));
+ return true;
+ }
+
+ protected function uploadImage($image, $image_w = '', $image_h = '')
+ {
+ $res = false;
+ if (is_array($image) && (ImageManager::validateUpload($image, $this->max_image_size) === false) && ($tmp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS')) && move_uploaded_file($image['tmp_name'], $tmp_name))
+ {
+ $type = Tools::strtolower(Tools::substr(strrchr($image['name'], '.'), 1));
+ $img_name = Tools::encrypt($image['name'].sha1(microtime())).'.'.$type;
+ Configuration::set('PS_IMAGE_QUALITY','png_all');
+ if (ImageManager::resize($tmp_name, dirname(__FILE__).'/images/'.$img_name, $image_w, $image_h))
+ $res = true;
+
+ }
+
+ if (isset($temp_name))
+ @unlink($tmp_name);
+ if (!$res)
+ {
+ $this->context->smarty->assign('error', $this->l('An error occurred during the image upload.'));
+ return false;
+ }
+
+ return $img_name;
+ }
+
+ public function getContent()
+ {
+ if (Tools::isSubmit('submitModule'))
+ {
+ Configuration::updateValue('PS_QUICK_VIEW', (int)Tools::getValue('quick_view'));
+ foreach($this->getConfigurableModules() as $module)
+ {
+ if (!isset($module['is_module']) || !$module['is_module'] || !Validate::isModuleName($module['name']))
+ continue;
+
+ $module_instance = Module::getInstanceByName($module['name']);
+ if ($module_instance === false || !is_object($module_instance))
+ continue;
+
+ $is_installed = (int)Validate::isLoadedObject($module_instance);
+ if ($is_installed)
+ {
+ if (($active = (int)Tools::getValue($module['name'])) == $module_instance->active)
+ continue;
+
+ if ($active)
+ $module_instance->enable();
+ else
+ $module_instance->disable();
+ }
+ else
+ if ((int)Tools::getValue($module['name']))
+ $module_instance->install();
+ }
+ }
+
+ if (Tools::isSubmit('newItem'))
+ $this->addItem();
+ elseif (Tools::isSubmit('updateItem'))
+ $this->updateItem();
+ elseif (Tools::isSubmit('removeItem'))
+ $this->removeItem();
+
+ $html = $this->renderConfigurationForm();
+ $html .= $this->renderThemeConfiguratorForm();
+
+ return $html;
+ }
+
+ protected function addItem()
+ {
+ $title = Tools::getValue('item_title');
+ $content = Tools::getValue('item_html');
+ if (!Validate::isCleanHtml($title, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')) || !Validate::isCleanHtml($content, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')))
+ {
+ $this->context->smarty->assign('error', $this->l('Invalid content'));
+ return false;
+ }
+
+
+ if (!$current_order = (int)Db::getInstance()->getValue('
+ SELECT item_order + 1
+ FROM `'._DB_PREFIX_.'themeconfigurator`
+ WHERE
+ id_shop = '.(int)$this->context->shop->id.'
+ AND id_lang = '.(int)Tools::getValue('id_lang').'
+ AND hook = \''.pSQL(Tools::getValue('item_hook')).'\'
+ ORDER BY item_order DESC'
+ ))
+ $current_order = 1;
+
+ $image_w = is_numeric(Tools::getValue('item_img_w')) ? (int)Tools::getValue('item_img_w') : '';
+ $image_h = is_numeric(Tools::getValue('item_img_h')) ? (int)Tools::getValue('item_img_h') : '';
+
+ if(!empty($_FILES['item_img']['name']))
+ {
+ if (!$image = $this->uploadImage($_FILES['item_img'], $image_w, $image_h))
+ return false;
+ }
+ else
+ {
+ $image = '';
+ $image_w = '';
+ $image_h = '';
+ }
+
+ if (!Db::getInstance()->Execute('
+ INSERT INTO `'._DB_PREFIX_.'themeconfigurator` (
+ `id_shop`, `id_lang`, `item_order`, `title`, `title_use`, `hook`, `url`, `target`, `image`, `image_w`, `image_h`, `html`, `active`
+ ) VALUES (
+ \''.(int)$this->context->shop->id.'\',
+ \''.(int)Tools::getValue('id_lang').'\',
+ \''.(int)$current_order.'\',
+ \''.pSQL($title).'\',
+ \''.(int)Tools::getValue('item_title_use').'\',
+ \''.pSQL(Tools::getValue('item_hook')).'\',
+ \''.pSQL(Tools::getValue('item_url')).'\',
+ \''.(int)Tools::getValue('item_target').'\',
+ \''.pSQL($image).'\',
+ \''.pSQL($image_w).'\',
+ \''.pSQL($image_h).'\',
+ \''.pSQL($content).'\',
+ 1)
+ '))
+ {
+ if (!Tools::isEmpty($image))
+ $this->deleteImage($image);
+
+ $this->context->smarty->assign('error', $this->l('An error occured while saving data.'));
+ return false;
+ }
+
+ $this->context->smarty->assign('confirmation', $this->l('New item added successfull.'));
+ return true;
+ }
+
+ public function renderConfigurationForm()
+ {
+ $inputs = array();
+ foreach ($this->getConfigurableModules() as $module)
+ {
+ $desc = '';
+ if (isset($module['is_module']) && $module['is_module'])
+ {
+ $module_instance = Module::getInstanceByName($module['name']);
+ if (Validate::isLoadedObject($module_instance) && method_exists($module_instance, 'getContent'))
+ $desc = ''.$this->l('Configure').'';
+ }
+ if (!$desc && isset($module['desc']) && $module['desc'])
+ $desc = $module['desc'];
+
+ $inputs[] = array(
+ 'type' => 'switch',
+ 'label' => $module['label'],
+ 'name' => $module['name'],
+ 'desc' => $desc,
+ 'values' => array(
+ array(
+ 'id' => 'active_on',
+ 'value' => 1,
+ 'label' => $this->l('Enabled')
+ ),
+ array(
+ 'id' => 'active_off',
+ 'value' => 0,
+ 'label' => $this->l('Disabled')
+ )
+ ),
+ );
+ }
+
+ $fields_form = array(
+ 'form' => array(
+ 'legend' => array(
+ 'title' => $this->l('Settings'),
+ 'icon' => 'icon-cogs'
+ ),
+ 'input' => $inputs,
+ 'submit' => array(
+ 'title' => $this->l('Save'),
+ 'class' => 'btn btn-primary')
+ ),
+ );
+
+ $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->identifier = $this->identifier;
+ $helper->submit_action = 'submitModule';
+ $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
+ $helper->token = Tools::getAdminTokenLite('AdminModules');
+ $helper->tpl_vars = array(
+ 'fields_value' => $this->getConfigFieldsValues(),
+ 'languages' => $this->context->controller->getLanguages(),
+ 'id_language' => $this->context->language->id
+ );
+
+ return $helper->generateForm(array($fields_form));
+ }
+
+ protected function renderThemeConfiguratorForm()
+ {
+ $id_shop = (int)$this->context->shop->id;
+ $items = array();
+
+ $this->context->smarty->assign('htmlcontent', array(
+ 'admin_tpl_path' => $this->admin_tpl_path,
+ 'hooks_tpl_path' => $this->hooks_tpl_path,
+
+ 'info' => array(
+ 'module' => $this->name,
+ 'name' => $this->displayName,
+ 'version' => $this->version,
+ 'psVersion' => _PS_VERSION_,
+ 'context' => (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 0) ? 1 : ($this->context->shop->getTotalShops() != 1) ? $this->context->shop->getContext() : 1
+ )
+ ));
+
+ foreach ($this->languages as $language) {
+ $hooks[$language['id_lang']] = array('home', 'top', 'left', 'right', 'footer');
+
+ foreach ($hooks[$language['id_lang']] as $hook)
+ $items[$language['id_lang']][$hook] = Db::getInstance()->ExecuteS('
+ SELECT * FROM `'._DB_PREFIX_.'themeconfigurator`
+ WHERE id_shop = '.(int)$id_shop.'
+ AND id_lang = '.(int)$language['id_lang'].'
+ AND hook = \''.pSQL($hook).'\'
+ ORDER BY item_order ASC'
+ );
+ }
+
+ $this->context->smarty->assign('htmlitems', array(
+ 'items' => $items,
+ 'lang' => array(
+ 'default' => $this->default_language,
+ 'all' => $this->languages,
+ 'lang_dir' => _THEME_LANG_DIR_,
+ 'user' => $this->context->language->id
+ ),
+ 'postAction' => 'index.php?tab=AdminModules&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'&tab_module=other&module_name='.$this->name.'',
+ 'id_shop' => $id_shop
+ ));
+
+ return $this->display(__FILE__, 'views/templates/admin/admin.tpl');
+ }
+
+ protected function getConfigurableModules()
+ {
+ return array(
+ array(
+ 'label' => $this->l('Display the reinsurance block'),
+ 'name' => 'blockreinsurance',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockreinsurance')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Display the social following links'),
+ 'name' => 'blocksocial',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blocksocial')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Display contact information'),
+ 'name' => 'blockcontactinfos',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockcontactinfos')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Display social buttons on the products page'),
+ 'name' => 'addsharethis',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('addsharethis')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Display facebook block on the home page'),
+ 'name' => 'blockfacebook',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockfacebook')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Customer cms information block'),
+ 'name' => 'blockcmsinfo',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockcmsinfo')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Enable Quick view'),
+ 'name' => 'quick_view',
+ 'value' => (int)Tools::getValue('PS_QUICK_VIEW', Configuration::get('PS_QUICK_VIEW'))
+ ),
+ array(
+ 'label' => $this->l('Enable top banner'),
+ 'name' => 'blockbanner',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blockbanner')) && $module->active),
+ 'is_module' => true,
+ ),
+ array(
+ 'label' => $this->l('Enable product payment logos'),
+ 'name' => 'productpaymentlogos',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('productpaymentlogos')) && $module->active),
+ 'is_module' => true,
+ )
+ );
+ }
+
+ public function getConfigFieldsValues()
+ {
+ $values = array();
+ foreach ($this->getConfigurableModules() as $module)
+ $values[$module['name']] = $module['value'];
+ return $values;
+
+ }
}