diff --git a/modules/themeconfigurator/config.xml b/modules/themeconfigurator/config.xml
new file mode 100644
index 000000000..f95c52038
--- /dev/null
+++ b/modules/themeconfigurator/config.xml
@@ -0,0 +1,12 @@
+
+
+ themeconfigurator
+
+
+
+
+
+ 1
+ 1
+
+
diff --git a/modules/themeconfigurator/themeconfigurator.php b/modules/themeconfigurator/themeconfigurator.php
new file mode 100644
index 000000000..4e519f5f6
--- /dev/null
+++ b/modules/themeconfigurator/themeconfigurator.php
@@ -0,0 +1,167 @@
+
+* @copyright 2007-2013 PrestaShop SA
+* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
+* International Registered Trademark & Property of PrestaShop SA
+*/
+
+if (!defined('_PS_VERSION_'))
+ exit;
+
+class ThemeConfigurator extends Module
+{
+ public function __construct()
+ {
+ $this->name = 'themeconfigurator';
+ $this->tab = 'front_office_features';
+ $this->version = '0.1';
+ parent::__construct();
+ $this->displayName = $this->l('Theme configurator');
+ $this->description = $this->l('Configure elements of your theme');
+ }
+
+
+ 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();
+ }
+ }
+ 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-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 getConfigurableModules()
+ {
+ return array(
+ array(
+ 'label' => $this->l('Display 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 social block'),
+ 'name' => 'blocksocial',
+ 'desc' => ''.$this->l('Configure the social block').'',
+ 'value' => (int)(Validate::isLoadedObject($module = Module::getInstanceByName('blocksocial')) && $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'))
+ )
+ );
+ }
+
+ public function getConfigFieldsValues()
+ {
+ $values = array();
+ foreach ($this->getConfigurableModules() as $module)
+ $values[$module['name']] = $module['value'];
+ return $values;
+
+ }
+}