Current File : //var/www/vinorea/modules/tvcmscustomsetting/tvcmscustomsetting.php
<?php
/**
 * 2007-2025 PrestaShop.
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to http://www.prestashop.com for more information.
 *
 *  @author    PrestaShop SA <contact@prestashop.com>
 *  @copyright 2007-2025 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;
}

include_once 'classes/tvcmscustomsetting_image_upload.class.php';
include_once 'classes/tvcmscustomsetting_status.class.php';
include_once 'classes/tvcustomsetting_common_list.class.php';
include_once 'classes/tvcustomsetting_db_upgrade.class.php';

class TvcmsCustomSetting extends Module
{
    public $id_shop_group = '';

    public $id_shop = '';

    public $hook_linkwidget = 'displayFooterPart1';

    public $is_hook_linkwidget_product = false;

    public $is_hook_linkwidget_our_company = true;

    public function __construct()
    {
        $this->TVDEBUG_DB = false;
        $this->name = 'tvcmscustomsetting';
        $this->tab = 'front_office_features';
        $this->version = '4.0.1';
        $this->author = 'ThemeVolty';
        $this->need_instance = 0;

        $this->bootstrap = true;
        parent::__construct();

        $this->displayName = $this->l('ThemeVolty - Custom Setting');
        $this->description = $this->l('It is use of Custom Setting in ThemeVolty Theme');

        $this->ps_versions_compliancy = ['min' => '1.7', 'max' => _PS_VERSION_];
        $this->module_key = '';

        $this->confirmUninstall = $this->l('Warning: all the data saved in your database will be deleted. Are you sure you want uninstall this module?');

        $this->id_shop_group = (int) Shop::getContextShopGroupID();
        $this->id_shop = (int) Context::getContext()->shop->id;
    }

    public function install()
    {
        $this->installTab();
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $setting_var = $tvcms_obj->fieldStatusInformation();
        Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT', 'desk-header-' . $setting_var['header_layout_default']);
        Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT_MOBILE', 'mobile-header-' . $setting_var['mob_header_layout_default']);
        Configuration::updateValue('TVCMSFOOTERCUSTOMLAYOUT', 'footer-' . $setting_var['footer_layout_default']);
        Configuration::updateValue('TVCMSPRODUCTCUSTOM_LAYOUT', 'product-' . $setting_var['product_layout_default']);
        Configuration::updateValue('TVCMSCAT_BANNER_STATUS', 1);
        $this->createDefaultData();

        $this->makeInslineStyleSheet();
        $this->makeBodyInslineStyleSheet();
        $this->makeCustomFontStyleSheet();
        Tools::clearSmartyCache();

        return parent::install()
            && $this->registerHook('displayHeader')
            && $this->registerHook('displayBackOfficeHeader')
            // $this->registerHook('displayTopOfferBanner') &&
            && $this->registerHook('displayMobileTopOfferText')
            && $this->registerHook('displayTopOfferText')
            && $this->registerHook('displayCustomsocialblock')
            && $this->registerHook('displayNav1sub1')
            // $this->registerHook('displayTop') &&
            && $this->registerHook('displayHome')
            // $this->registerHook('displayWrapperBottom') &&
            // $this->registerHook('displayFooterBefore') &&
            // $this->registerHook('displayFooterAfter') &&
            // $this->registerHook('displayDownloadApps') &&
            // $this->registerHook('displayFooterPart1') &&
            // $this->registerHook('displayFooterPart3') &&
            // $this->registerHook('displayFooterContact') &&
            && $this->registerHook('displayBodyBackgroundBody')
            && $this->registerHook('displayBackgroundBody')
            && $this->registerHook('displayCopyRightText');
    }

    public function installTab()
    {
        if (!(int) Tab::getIdFromClassName('AdminThemeVolty')) {
            $parent_tab = new Tab();
            // Need a foreach for the language
            foreach (Language::getLanguages() as $language) {
                $parent_tab->name[$language['id_lang']] = $this->l('ThemeVolty Extension');
            }
            $parent_tab->class_name = 'AdminThemeVolty';
            $parent_tab->id_parent = 0; // Home tab
            $parent_tab->module = $this->name;
            $parent_tab->add();
        }
        $tab = new Tab();
        $tab->active = 1;
        foreach (Language::getLanguages() as $language) {
            $tab->name[$language['id_lang']] = $this->l('Custom Setting');
        }
        $tab->class_name = 'Admin' . $this->name;
        $tab->id_parent = (int) Tab::getIdFromClassName('AdminThemeVolty');
        $tab->module = $this->name;
        $tab->add();
    }

    public function createDefaultData()
    {
        $this->setLinkWidgetData();
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $setting_var = $tvcms_obj->fieldStatusInformation();
        // Default Variable Change Start
        Configuration::updateValue('PS_NB_DAYS_NEW_PRODUCT', 1000);
        // Default Variable Change End

        $result = [];
        $languages = Language::getLanguages();

        foreach ($languages as $lang) {
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE'][$lang['id_lang']] = 'Download Electron App Now';
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE'][$lang['id_lang']] = 'Fast, Simple & Delightful. All It takes is 30 Seconds to Download.';
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC'][$lang['id_lang']] = 'Fast, Simple & Delightful. All It takes is 30 Seconds to Download.';
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE'][$lang['id_lang']] = '#';
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE'][$lang['id_lang']] = '#';
            $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT'][$lang['id_lang']] = '#';

            $result['TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE'][$lang['id_lang']] = 'Featured Product';
            $result['TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE'][$lang['id_lang']] = 'New Product';
            $result['TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE'][$lang['id_lang']] = 'Best Product';
            $result['TVCMSCUSTOMSETTING_NEWSLETTER_TITLE'][$lang['id_lang']] = 'Newsletter';
            $result['TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC'][$lang['id_lang']] = 'Sign up for our newletter to recevie updates an exlusive offers';

            $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE'][$lang['id_lang']] = 'Follow Us';
            $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC'][$lang['id_lang']] = 'Social Icon Short Desc';

            $tmp = '<p>World\'s Fastest Online Shopping Destination</p>';
            $result['TVCMSCUSTOMSETTING_CUSTOM_TEXT'][$lang['id_lang']] = $tmp;
            $tmp = '© 2019 - Ecommerce software by PrestaShop™';
            $result['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT'][$lang['id_lang']] = $tmp;
            $tmp = 'ex : grape wine, rose wine, Barbera, charosa, chardonnay...';
            $result['TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT'][$lang['id_lang']] = $tmp;
            $result['TVCMSCUSTOMSETTING_COPY_RIGHT_LINK'][$lang['id_lang']] = '#';
        }

        // App Links
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE', 'demo_img_1.jpg');
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_IMAGE', 'demo_img_3.jpg');
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT', $tmp);
        Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS', 1);

        // Main Menu
        Configuration::updateValue('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_SUPPLIER_STATUS', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_BRAND_STATUS', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS', 1);

        // Bottom Sticky
        Configuration::updateValue('TVCMSCUSTOMSETTING_BOTTOM_OPTION', 0);

        // Vertical Menu is Default show
        Configuration::updateValue('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN', 0);

        // Copy Right text Footer

        $tmp = $result['TVCMSCUSTOMSETTING_CUSTOM_TEXT'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT', $tmp, true);
        Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS', 1);

        $tmp = $result['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_COPY_RIGHT_LINK'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK', $tmp);
        Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS', 1);

        // Create Globle Variables
        Configuration::updateValue('TVCMSCUSTOMSETTING_ADD_CONTAINER', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_PAGE_LOADER', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_WOW_JS', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_HOVER_IMG', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_DARK_MODE_INPUT', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL', 1);
        Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_COLOR', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW', 'grid');
        Configuration::updateValue('TVCMSCUSTOMSETTING_CART_VIEW', 'classic');
        Configuration::updateValue('TVCMSCUSTOMSETTING_SMART_SPEED', '600');

        // Theme Option
        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_COLOR_1', '#ffffff');
        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_COLOR_2', '#ffffff');

        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN', 'pattern1');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN', 'no_pattern.png');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS', 'pattern');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_STYLE_SHEET', '');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_COLOR', '#ffffff');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT', 'repeat');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT', 'fixed');

        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_OPTION', '', false);

        Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT', 'desk-header-' . $setting_var['header_layout_default']);
        Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT_MOBILE', 'mobile-header-' . $setting_var['mob_header_layout_default']);
        Configuration::updateValue('TVCMSFOOTERCUSTOMLAYOUT', 'footer-' . $setting_var['footer_layout_default']);
        Configuration::updateValue('TVCMSPRODUCTCUSTOM_LAYOUT', 'product-' . $setting_var['product_layout_default']);
        Configuration::updateValue('TVCMSCAT_BANNER_STATUS', 1);

        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS', false);
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN', 'pattern1');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN', 'no_pattern.png');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS', 'pattern');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_STYLE_SHEET', '');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR', '#ffffff');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT', 'repeat');
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT', 'fixed');

        Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS', false);
        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_COLOR', '#ffffff');
        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE', 0);
        Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2', 0);

        Configuration::updateValue('TVCMSCUSTOMSETTING_ALL_THEME_CSS_PATH', '');

        // Custom Title
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_TAB_NUM_PROD', '1');
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_TAB_STATUS', 1);
        $tmp = $result['TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_NEWSLETTER_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_NEWSLETTER_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE', $tmp);
        $tmp = $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC'];
        Configuration::updateValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC', $tmp);

        Configuration::updateValue('CustomThemePath', _THEME_IMG_DIR_);
    }

    public function setLinkWidgetData()
    {
        $hook_id = (int) Hook::getIdByName($this->hook_linkwidget);
        if (0 == $hook_id) {
            $max_register_hook_id = 'SELECT MAX(id_hook) as id FROM  `' . _DB_PREFIX_ . 'hook`;';
            $result = Db::getInstance()->executeS($max_register_hook_id);
            $max_id = $result[0]['id'];
            $hook_id = $max_id + 1;

            $register_hook =
                'INSERT INTO `' .
                _DB_PREFIX_ .
                'hook` (`id_hook`, `name`, `title`, `description`, `position`)
                VALUES (' .
                (int) $hook_id .
                ', \'' .
                pSQL($this->hook_linkwidget) .
                '\', \'' .
                pSQL($this->hook_linkwidget) .
                '\', \'\', \'1\');';
            $res = Db::getInstance()->execute($register_hook);
        }

        // $hook_id = (int)Hook::getIdByName($this->hook_linkwidget);
        $queries = [];
        $queries[] = 'TRUNCATE TABLE `' . _DB_PREFIX_ . 'link_block`;';
        $queries[] = 'TRUNCATE TABLE `' . _DB_PREFIX_ . 'link_block_lang`;';

        if (true == $this->is_hook_linkwidget_product) {
            $queries[] =
                'INSERT INTO `' .
                _DB_PREFIX_ .
                'link_block`
                (`id_link_block`, `id_hook`, `position`, `content`) VALUES
                    (1, ' .
                (int) $hook_id .
                ', 1, \'{"cms":[false],
                        "product":["prices-drop","new-products","best-sales"],"static":[false]}\');';
        }

        if (true == $this->is_hook_linkwidget_our_company) {
            $queries[] =
                'INSERT INTO `' .
                _DB_PREFIX_ .
                'link_block` 
                (`id_link_block`, `id_hook`, `position`, `content`) VALUES
                    (2, ' .
                (int) $hook_id .
                ', 2, \'{"cms":["1","2","3","4","5"],
                        "product":[false],"static":["contact","sitemap","stores"]}\');';
        }

        foreach (Language::getLanguages(true, Context::getContext()->shop->id) as $lang) {
            if (true == $this->is_hook_linkwidget_product) {
                $queries[] =
                    'INSERT INTO `' .
                    _DB_PREFIX_ .
                    'link_block_lang`
                    (`id_link_block`, `id_lang`, `name`) VALUES
                    (1, ' .
                    (int) $lang['id_lang'] .
                    ', "Products");';
            }

            if (true == $this->is_hook_linkwidget_our_company) {
                $queries[] =
                    'INSERT INTO `' .
                    _DB_PREFIX_ .
                    'link_block_lang`
                    (`id_link_block`, `id_lang`, `name`) VALUES
                    (2, ' .
                    (int) $lang['id_lang'] .
                    ', "Our company");';
            }
        }

        foreach ($queries as $query) {
            Db::getInstance()->execute($query);
        }
    }

    public function uninstall()
    {
        Tools::clearSmartyCache();
        $this->uninstallTab();
        $this->deleteVariable();

        return parent::uninstall();
    }

    public function deleteVariable()
    {
        // App Links
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_IMAGE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS');

        // Main Menu Sticky
        Configuration::deleteByName('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_SUPPLIER_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BRAND_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTON_STICKY_STATUS');

        // Bottom Sticky
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BOTTOM_OPTION');

        // Vertical Menu is Default show
        Configuration::deleteByName('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN');

        // Copy Right text Footer

        Configuration::deleteByName('TVCMSCUSTOMSETTING_CUSTOM_TEXT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_COPY_RTL_STATUS');

        // Create Globle Variables
        Configuration::deleteByName('TVCMSCUSTOMSETTING_ADD_CONTAINER');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_PAGE_LOADER');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_WOW_JS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_HOVER_IMG');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_DARK_MODE_INPUT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_PRODUCT_COLOR');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_CART_VIEW');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_SMART_SPEED');

        // Theme Option
        Configuration::deleteByName('TVCMSCUSTOMSETTING_THEME_OPTION');
        Configuration::deleteByName('TVCMSHEADERCUSTOMLAYOUT');
        Configuration::deleteByName('TVCMSHEADERCUSTOMLAYOUT_MOBILE');
        Configuration::deleteByName('TVCMSFOOTERCUSTOMLAYOUT');
        Configuration::deleteByName('TVCMSPRODUCTCUSTOM_LAYOUT');
        Configuration::deleteByName('TVCMSCAT_BANNER_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_THEME_COLOR_1');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_THEME_COLOR_2');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_COLOR');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT');

        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BACKGROUND_STYLE_SHEET');
        Configuration::deleteByName('TVCMSFRONTSIDE_THEME_SETTING_SHOW');

        Configuration::deleteByName('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_BODY_BACKGROUND_STYLE_SHEET');

        Configuration::deleteByName('TVCMSCUSTOMSETTING_ALL_THEME_CSS_PATH');

        // Footer Tab Product
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_TAB_NUM_PROD');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_TAB_STATUS');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_NEWSLETTER_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE');
        Configuration::deleteByName('TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC');
    }

    public function uninstallTab()
    {
        $id_tab = Tab::getIdFromClassName('Admin' . $this->name);
        $tab = new Tab($id_tab);
        $tab->delete();

        return true;
    }

    public function formShow()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $ppath = _MODULE_DIR_ . $this->name . '/views/img/';
        $this->context->smarty->assign('ppath', $ppath);

        $this->context->smarty->assign('tab_number', '#fieldset_0');

        if (!$show_fields['form_1']) {
            $this->context->smarty->assign('tab_number', '#fieldset_1_1');
        }

        if (!$show_fields['form_1'] && !$show_fields['form_2']) {
            $this->context->smarty->assign('tab_number', '#fieldset_2_2');
        }

        if (!$show_fields['form_1'] && !$show_fields['form_2'] && !$show_fields['form_3']) {
            $this->context->smarty->assign('tab_number', '#fieldset_3_3');
        }

        if (!$show_fields['form_1'] && !$show_fields['form_2'] && !$show_fields['form_3'] && !$show_fields['form_4']) {
            $this->context->smarty->assign('tab_number', '#fieldset_4_4');
        }
        $this->context->smarty->assign('show_fields', $show_fields);
    }

    public function getContent()
    {
        $useSSL = (isset($this->ssl) && $this->ssl && Configuration::get('PS_SSL_ENABLED')) || Tools::usingSecureMode() ? true : false;
        $protocol_content = $useSSL ? 'https://' : 'http://';
        $baseDir = $protocol_content . Tools::getHttpHost() . __PS_BASE_URI__;
        $link = PS_ADMIN_DIR;
        if (Tools::substr(strrchr($link, '/'), 1)) {
            $admin_folder = Tools::substr(strrchr($link, '/'), 1);
        } else {
            $admin_folder = Tools::substr(strrchr($link, "\'"), 1);
        }
        $static_token = Tools::getAdminToken('AdminModules' . (int) Tab::getIdFromClassName('AdminModules') . (int) $this->context->employee->id);

        $url_dbupgrade = $baseDir . $admin_folder . '/index.php?controller=AdminModules&configure=tvcmscustomsetting&tab_module=front_office_features&module_name=tvcmscustomsetting&token=' . $static_token;
        $this->context->smarty->assign('tvurldbupgrade', $url_dbupgrade);

        $url_slidersampleupgrade = $baseDir . $admin_folder . '/index.php?controller=AdminModules&configure=' . $this->name . '&tab_module=front_office_features&module_name=' . $this->name . '&token=' . $static_token;
        $this->context->smarty->assign('tvurlupgrade', $url_slidersampleupgrade);

        if (Tools::isSubmit('submitTvcmsSampleinstall') && '1' == Tools::getValue('tvinstalldata')) {
            $this->createDefaultData();
        }

        $message = '';
        // check which form is not show
        $this->formShow();
        $message = $this->postProcess();
        $output = $message . '<div class="tvcmsadmincustom-setting">' . $this->display(__FILE__, 'views/templates/admin/index.tpl') . $this->renderForm() . '</div>';

        return $output;
    }

    public function postProcess()
    {
        $this->registerHook('displayMobileTopOfferText');
        $this->registerHook('displayTopOfferText');
        $message = '';
        $languages = Language::getLanguages();
        $result = [];

        if (Tools::isSubmit('submitTvcmsCustomLayoutForm') && '0' == Tools::getValue('tvinstalldata')) {
            $tmp = Tools::getValue('TVCMSHEADERCUSTOMLAYOUT');
            if ($tmp != Configuration::get('TVCMSHEADERCUSTOMLAYOUT')) {
                Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT', $tmp);
            }
            $tmp = Tools::getValue('TVCMSHEADERCUSTOMLAYOUT_MOBILE');
            if ($tmp != Configuration::get('TVCMSHEADERCUSTOMLAYOUT_MOBILE')) {
                Configuration::updateValue('TVCMSHEADERCUSTOMLAYOUT_MOBILE', $tmp);
            }
            $tmp = Tools::getValue('TVCMSFOOTERCUSTOMLAYOUT');
            if ($tmp != Configuration::get('TVCMSFOOTERCUSTOMLAYOUT')) {
                Configuration::updateValue('TVCMSFOOTERCUSTOMLAYOUT', $tmp);
            }
            $tmp = Tools::getValue('TVCMSPRODUCTCUSTOM_LAYOUT');
            if ($tmp != Configuration::get('TVCMSPRODUCTCUSTOM_LAYOUT')) {
                Configuration::updateValue('TVCMSPRODUCTCUSTOM_LAYOUT', $tmp);
            }
            $tmp = Tools::getValue('TVCMSCAT_BANNER_STATUS');
            if ($tmp != Configuration::get('TVCMSCAT_BANNER_STATUS')) {
                Configuration::updateValue('TVCMSCAT_BANNER_STATUS', $tmp);
            }
            $this->context->smarty->assign('tab_number', '#fieldset_3_3');
            $message .= $this->displayConfirmation($this->l('Layout are Updated'));
        }

        if (Tools::isSubmit('submitTvcmsThemeOptionForm') && '0' == Tools::getValue('tvinstalldata')) {
            if (!empty($_FILES['tvcmscustomsetting_custom_pattern']['name'])) {
                // Bg color and pattern
                $old_pattern = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN');
                $this->obj_image = new TvcmsCustomSettingImageUpload();
                $ans = $this->obj_image->imageUploading($_FILES['tvcmscustomsetting_custom_pattern'], $old_pattern);

                if ($ans['success']) {
                    $file_name = $ans['name'];
                    Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN', $file_name);
                } else {
                    $old_pattern = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN');
                    Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN', $old_pattern);
                }
            }

            if (!empty($_FILES['tvcmscustomsetting_custom_body_pattern']['name'])) {
                // Body color and pattern
                $old_pattern = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN');
                $this->obj_image = new TvcmsCustomSettingImageUpload();
                $ans = $this->obj_image->imageUploading($_FILES['tvcmscustomsetting_custom_body_pattern'], $old_pattern);
                if ($ans['success']) {
                    $file_name = $ans['name'];
                    Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN', $file_name);
                } else {
                    $old_pattern = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN');
                    Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN', $old_pattern);
                }
            }

            $tmp = Tools::getValue('TVCMSFRONTSIDE_THEME_SETTING_SHOW');
            if ($tmp != Configuration::get('TVCMSFRONTSIDE_THEME_SETTING_SHOW')) {
                Configuration::updateValue('TVCMSFRONTSIDE_THEME_SETTING_SHOW', $tmp);

                // if (Configuration::get('TVCMSFRONTSIDE_THEME_SETTING_SHOW')) {
                //     Module::enableByName('tvcmsthemeoptions');
                // } else {
                //     Module::disableByName('tvcmsthemeoptions');
                // }
            }
            // start font style and color
            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT', $tmp);
            }
            // end font style and color
            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_OPTION');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_OPTION')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_OPTION', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_COLOR_1');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_1')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_COLOR_1', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_COLOR_2');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_2')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_COLOR_2', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BACKGROUND_COLOR');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_COLOR')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_COLOR', $tmp);
            }

            $tmp = Tools::getValue('tvcmscustomsetting_pattern');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_ADD_CONTAINER');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_ADD_CONTAINER')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_ADD_CONTAINER', $tmp);
            }

            // start font style and color

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR', $tmp);
            }

            $tmp = Tools::getValue('tvcmscustomsetting_body_pattern');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_FONT_COLOR');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_COLOR')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_COLOR', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2', $tmp);
            }
            // end font style and color
            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_PAGE_LOADER');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_PAGE_LOADER')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_PAGE_LOADER', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_WOW_JS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_WOW_JS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_WOW_JS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_HOVER_IMG');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_HOVER_IMG')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_HOVER_IMG', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DARK_MODE_INPUT');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_DARK_MODE_INPUT')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_DARK_MODE_INPUT', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_PRODUCT_COLOR');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_COLOR')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_COLOR', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_CART_VIEW');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_CART_VIEW')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_CART_VIEW', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_SMART_SPEED');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_SMART_SPEED')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_SMART_SPEED', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_SUPPLIER_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_SUPPLIER_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_SUPPLIER_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BRAND_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BRAND_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BRAND_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_BOTTOM_OPTION');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_BOTTOM_OPTION')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_BOTTOM_OPTION', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN', $tmp);
            }

            $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css';
            $allThemeCssPath = '/all_theme_custom_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
            if (file_exists($ftpThemeDir . $allThemeCssPath)) {
                unlink($ftpThemeDir . $allThemeCssPath);
            }
            Configuration::updateValue('TVCMSCUSTOMSETTING_ALL_THEME_CSS_PATH', '');

            $this->makeInslineStyleSheet();
            $this->makeBodyInslineStyleSheet();
            $this->makeCustomFontStyleSheet();
            $this->context->smarty->assign('tab_number', '#fieldset_0');
            $message .= $this->displayConfirmation($this->l('Theme Configuration is Updates'));
        }

        if (Tools::isSubmit('submitTvcmsAppLinkForm') && '0' == Tools::getValue('tvinstalldata')) {
            if ($_FILES['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE']) {
                $old_img = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE');
                $this->obj_image = new TvcmsCustomSettingImageUpload();
                $ans = $this->obj_image->imageUploading($_FILES['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE'], $old_img);
                if ($ans['success']) {
                    $file_name = $ans['name'];
                    Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE', $file_name);
                } else {
                    $old_img = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE');
                    Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE', $old_img);
                }
            }

            foreach ($languages as $lang) {
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT'][$lang['id_lang']] = $tmp;
            }

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT', $tmp);

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS', $tmp);
            }

            $this->context->smarty->assign('tab_number', '#fieldset_1_1');

            $this->clearCustomSmartyCache('tvcmscustomsetting_display_download_app.tpl');

            $message .= $this->displayConfirmation($this->l('App Link is Updated'));
        }

        if (Tools::isSubmit('submitTvcmsCustomTitleForm') && '0' == Tools::getValue('tvinstalldata')) {
            if ($_FILES['TVCMSCUSTOMSETTING_FOOTER_IMAGE']) {
                $old_img = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMAGE');
                $this->obj_image = new TvcmsCustomSettingImageUpload();
                $ans = $this->obj_image->imageUploading($_FILES['TVCMSCUSTOMSETTING_FOOTER_IMAGE'], $old_img);
                if ($ans['success']) {
                    $file_name = $ans['name'];
                    Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_IMAGE', $file_name);
                } else {
                    $old_img = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMAGE');
                    Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_IMAGE', $old_img);
                }
            }
        }

        if (Tools::isSubmit('submitTvcmsCustomTitleForm') && '0' == Tools::getValue('tvinstalldata')) {
            foreach ($languages as $lang) {
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_CUSTOM_TEXT'][$lang['id_lang']] = $tmp;

                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT'][$lang['id_lang']] = $tmp;

                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT'][$lang['id_lang']] = $tmp;

                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_COPY_RIGHT_LINK'][$lang['id_lang']] = $tmp;

                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_NEWSLETTER_TITLE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_NEWSLETTER_TITLE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC'][$lang['id_lang']] = $tmp;

                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE'][$lang['id_lang']] = $tmp;
                $tmp = Tools::getValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC_' . $lang['id_lang']);
                $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC'][$lang['id_lang']] = $tmp;
            }

            $tmp = $result['TVCMSCUSTOMSETTING_CUSTOM_TEXT'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT', $tmp, true);

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS', $tmp);
            }

            $tmp = $result['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_COPY_RIGHT_LINK'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK', $tmp);

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS', $tmp);
            }

            $tmp = Tools::getValue('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS');
            if ($tmp != Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS')) {
                Configuration::updateValue('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS', $tmp);
            }

            $tmp = $result['TVCMSCUSTOMSETTING_NEWSLETTER_TITLE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_NEWSLETTER_TITLE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE', $tmp);

            $tmp = $result['TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC'];
            Configuration::updateValue('TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC', $tmp);

            $this->context->smarty->assign('tab_number', '#fieldset_2_2');

            $this->clearCustomSmartyCache('tvcmscustomsetting_display_copy_right_text.tpl');
            $this->clearCustomSmartyCache('tvcmscustomsetting_displaytopoffertext');

            $message .= $this->displayConfirmation($this->l('Custom Titles are Updated'));
        }

        if (Tools::isSubmit('submitTvcmsUpgradeThemeForm') && '' == Tools::getValue('tvcmsInstallDataForm')) {
            if (Tools::version_compare($this->version, '4.0.0', '<=')) {
                // echo _DB_PREFIX_;
                $obj = new TvcmsCustomSettingDbUpgrade();
                $message .= $obj->DBUpgrade360($this);
                Tools::clearSmartyCache();
                Tools::clearXMLCache();
                Media::clearCache();
                Tools::generateIndex();
                // echo "call ".$this->version;
            }
            $this->context->smarty->assign('tab_number', '#fieldset_4_4');
            $message .= $this->displayConfirmation($this->l('Upgrade Database Successfully.'));
        }
        if (Tools::isSubmit('submitTvcmsUpgradeThemeForm') && 'on' == Tools::getValue('tvcmsInstallDataForm')) {
            $obj = new TvcmsCustomSettingStatus();
            $result = $obj->fieldStatusInformation();

            foreach ($result['import_data_module_list'] as $key => $value) {
                try {
                    $include_path = '../modules/' . $value . '/' . $value . '.php';
                    include_once $include_path;
                    $obj = new $value();
                    $obj->createDefaultData();
                    Tools::clearSmartyCache();
                    Tools::clearXMLCache();
                    Media::clearCache();
                    Tools::generateIndex();
                } catch (Exception $e) {
                    if ($this->TVDEBUG_DB) {
                        $message .= $this->displayError('Not found Module Name -> ' . $value);
                    }
                }
            }
            $this->context->smarty->assign('tab_number', '#fieldset_4_4');
            $message .= $this->displayConfirmation($this->l('Import Sample Data Successfully.'));
        }

        Tools::clearSmartyCache();

        return $message;
    }

    public function clearCustomSmartyCache($cache_id)
    {
        if (Cache::isStored($cache_id)) {
            Cache::clean($cache_id);
        }
    }

    public function colorLuminance($hex, $percent)
    {
        $hex = preg_replace('/[^0-9a-f]/i', '', $hex);
        $new_hex = '#';

        if (Tools::strlen($hex) < 6) {
            $hex = $hex[0] + $hex[0] + $hex[1] + $hex[1] + $hex[2] + $hex[2];
        }

        // convert to decimal and change luminosity
        for ($i = 0; $i < 3; ++$i) {
            $dec = hexdec(Tools::substr($hex, $i * 2, 2));
            $dec = min(max(0, $dec + $dec * $percent), 255);
            $new_hex .= str_pad(dechex($dec), 2, 0, STR_PAD_LEFT);
        }

        return $new_hex;
    }

    public function getContrastColor($hexColor)
    {
        // hexColor RGB
        $R1 = hexdec(Tools::substr($hexColor, 1, 2));
        $G1 = hexdec(Tools::substr($hexColor, 3, 2));
        $B1 = hexdec(Tools::substr($hexColor, 5, 2));

        // Black RGB
        $blackColor = '#000000';
        $R2BlackColor = hexdec(Tools::substr($blackColor, 1, 2));
        $G2BlackColor = hexdec(Tools::substr($blackColor, 3, 2));
        $B2BlackColor = hexdec(Tools::substr($blackColor, 5, 2));

        // Calc contrast ratio
        $L1 = 0.2126 * pow($R1 / 255, 2.2) + 0.7152 * pow($G1 / 255, 2.2) + 0.0722 * pow($B1 / 255, 2.2);

        $L2 = 0.2126 * pow($R2BlackColor / 255, 2.2) + 0.7152 * pow($G2BlackColor / 255, 2.2) + 0.0722 * pow($B2BlackColor / 255, 2.2);

        $contrastRatio = 0;
        if ($L1 > $L2) {
            $contrastRatio = (int) (($L1 + 0.05) / ($L2 + 0.05));
        } else {
            $contrastRatio = (int) (($L2 + 0.05) / ($L1 + 0.05));
        }

        // If contrast is more than 5, return black color
        if ($contrastRatio > 5) {
            return '#000000';
        } else {
            // if not, return white color.
            return '#FFFFFF';
        }
    }

    public function createCustomThemeCss(
        $filename,
        $newfilename,
        $string_to_replace1,
        $replace_with1,
        $string_to_replace2 = null,
        $replace_with2 = null,
        $string_to_replace3 = null,
        $replace_with3 = null,
        $string_to_replace4 = null,
        $replace_with4 = null
    ) {
        $content = Tools::file_get_contents($filename);

        $content_chunks = explode($string_to_replace1, $content);
        $content = implode($replace_with1, $content_chunks);

        if (!empty($string_to_replace2) && !empty($replace_with2)) {
            $content_chunks = explode($string_to_replace2, $content);
            $content = implode($replace_with2, $content_chunks);
        }

        if (!empty($string_to_replace3) && !empty($replace_with3)) {
            $content_chunks = explode($string_to_replace3, $content);
            $content = implode($replace_with3, $content_chunks);
        }

        if (!empty($string_to_replace4) && !empty($replace_with4)) {
            $content_chunks = explode($string_to_replace4, $content);
            $content = implode($replace_with4, $content_chunks);
        }

        file_put_contents($newfilename, $content);
        $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css';
        $themeCssPath = $ftpThemeDir . '/all_theme_custom_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
        file_put_contents($themeCssPath, $content, FILE_APPEND);

        $allThemeCssPath = '/all_theme_custom_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
        Configuration::updateValue('TVCMSCUSTOMSETTING_ALL_THEME_CSS_PATH', $allThemeCssPath);
    }

    public function makeInslineStyleSheet()
    {
        $style = '';
        if (Configuration::get('TVCMSCUSTOMSETTING_ADD_CONTAINER')) {
            if ('color' == Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS')) {
                $color = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_COLOR');
                $style .= 'background-color:' . $color;
            } else {
                $img = '';
                if ('custompattern' == Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN')) {
                    $img = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN');
                    $path = _MODULE_DIR_ . $this->name . '/views/img/' . $img;
                } else {
                    $img = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN') . '.png';
                    $path = _THEME_IMG_DIR_ . 'pattern/' . $img;
                }

                // $path = _MODULE_DIR_.$this->name."/views/img/".$img;
                $style .= 'background-image:url(' . $path . ');';
            }
        }
        Configuration::updateValue('TVCMSCUSTOMSETTING_BACKGROUND_STYLE_SHEET', $style);

        if ('theme_custom' == Configuration::get('TVCMSCUSTOMSETTING_THEME_OPTION')) {
            // this is Color
            $color_replace_1 = '#maincolor1';
            $color_1 = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_1');

            $color_replace_text_1 = '#maincolortext1';
            $color_text_1 = $this->getContrastColor($color_1);

            $color_replace_alt_text_1 = '#altcolortext1';
            $color_alt_text_1 = '#000000' == $color_text_1 ? '#ffffff' : '#000000';

            // This is Gredeant Color
            $color_replace_2 = '#maincolor2';
            $color_2 = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_2');

            $color_replace_text_2 = '#maincolortext2';
            $color_text_2 = $this->getContrastColor($color_2);

            $color_replace_alt_text_2 = '#altcolortext2';
            $color_alt_text_2 = '#000000' == $color_text_2 ? '#ffffff' : '#000000';

            $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css';
            $filename = $ftpThemeDir . '/theme-custom.css';
            $themeCssPath = '/' . Configuration::get('TVCMSCUSTOMSETTING_THEME_OPTION') . '_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
            $newfilename = $ftpThemeDir . $themeCssPath;

            $this->createCustomThemeCss(
                $filename,
                $newfilename,
                $color_replace_1,
                $color_1,
                $color_replace_2,
                $color_2,
                $color_replace_text_1,
                $color_text_1,
                $color_replace_text_2,
                $color_text_2,
                $color_replace_alt_text_1,
                $color_alt_text_1,
                $color_replace_alt_text_2,
                $color_alt_text_2
            );
            // half path for front site.
            Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_CSS_PATH', $themeCssPath);
        }
    }

    public function hookdisplayBackgroundBody()
    {
        return Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_STYLE_SHEET');
    }

    public function makeBodyInslineStyleSheet()
    {
        $style = '';
        $path = '';
        if ('color' == Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS')) {
            $color = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR');
            $style .= 'background-color:' . $color . ';';
        } else {
            $img = '';
            if ('custombodypattern' == Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN')) {
                $img = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN');
                $path .= _MODULE_DIR_ . $this->name . '/views/img/' . $img;
            } else {
                $img = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN') . '.png';
                $path .= _THEME_IMG_DIR_ . 'pattern/' . $img;
            }

            // $path = _MODULE_DIR_.$this->name."/views/img/".$img;
            $style .= 'background-image:url(' . $path . ');';
        }
        Configuration::updateValue('TVCMSCUSTOMSETTING_BODY_BACKGROUND_STYLE_SHEET', $style);
    }

    public function hookdisplayBodyBackgroundBody()
    {
        return Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_STYLE_SHEET');
    }

    public function makeCustomFontStyleSheet()
    {
        if (1 == Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS')) {
            if ('0' != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE')) {
                $font_replace_1 = '#fontFamily1';
                $font_replace_2 = '#fontLink1';
                $font_style_1 = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE');
                $font_link_2 = $this->getFontLinkUsingFontName($font_style_1);
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_LINK', $font_link_2);

                $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css/';
                $filename = $ftpThemeDir . 'theme-custom-title-font.css';
                $themeCssFontPath = 'theme-custom-title-font_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
                $newfilename = $ftpThemeDir . $themeCssFontPath;

                $this->createCustomThemeCss($filename, $newfilename, $font_replace_1, $font_style_1, $font_replace_2, $font_link_2);
                $file = $themeCssFontPath;
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_LINK_URL', $file);
            }

            if ('0' != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2')) {
                $font_replace_1 = '#fontFamily2';
                $font_replace_2 = '#fontLink2';
                $font_style_1 = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2');
                $font_link_2 = $this->getFontLinkUsingFontName($font_style_1);
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_LINK_2', $font_link_2);

                $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css/';
                $filename = $ftpThemeDir . 'theme-custom-body-font.css';
                $themeCssFontPath = 'theme_custom_body_font_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
                $newfilename = $ftpThemeDir . $themeCssFontPath;

                $this->createCustomThemeCss($filename, $newfilename, $font_replace_1, $font_style_1, $font_replace_2, $font_link_2);

                $file = $themeCssFontPath;
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_LINK_2_URL', $file);
            }

            if ('' != Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_COLOR')) {
                $custom_title_color_replace_1 = '#customTitleColor';
                $custom_title_color_1 = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_COLOR');

                $ftpThemeDir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/assets/css/';
                $filename = $ftpThemeDir . 'theme-custom-title-color.css';
                $themeCssFontPath = 'theme_custom_title_color_' . $this->id_shop_group . '_' . $this->id_shop . '.css';
                $newfilename = $ftpThemeDir . $themeCssFontPath;

                $this->createCustomThemeCss($filename, $newfilename, $custom_title_color_replace_1, $custom_title_color_1);

                $file = $themeCssFontPath;
                Configuration::updateValue('TVCMSCUSTOMSETTING_THEME_CUSTOM_TITLE_COLOR', $file);
            }
        }
    }

    public function getFontLinkUsingFontName($selected_font_name)
    {
        // $url_font_name = str_replace($font_name, ' ', '+');
        $link = '';
        // $font = array();
        $obj = new tvcmsCustomSettingCommonList();
        $fonts = $obj->titleFontList();
        // $link = $font['name']['link'];
        foreach ($fonts as $font) {
            if ($selected_font_name == $font['name']) {
                $link = $font['link'];

                break;
            }
        }

        return $link;
    }

    protected function renderForm()
    {
        $helper = new HelperForm();

        $helper->show_toolbar = false;
        $helper->table = $this->table;
        $helper->module = $this;
        $helper->default_form_language = $this->context->language->id;
        $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);

        $helper->identifier = $this->identifier;
        $helper->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 = [
            'fields_value' => $this->getConfigFormValues() /* Add values for your inputs */,
            'languages' => $this->context->controller->getLanguages(),
            'id_language' => $this->context->language->id,
        ];

        return $helper->generateForm([$this->tvcmsThemeOptionForm(), $this->tvcmsAppLinkForm(), $this->tvcmsFooterProductForm(), $this->tvcmsCustomLayoutForm(), $this->tvcmsInstallDataForm()]);
    }

    protected function tvcmsThemeOptionForm()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $input = [];

        // This is Theme option information
        if ($show_fields['all_theme_option_info']) {
            $input[] = [
                'col' => 3,
                'type' => 'custom_theme_option',
                'name' => 'TVCMSCUSTOMSETTING_THEME_OPTION',
                'label' => $this->l('Theme Options'),
            ];

            $input[] = [
                'col' => 8,
                'type' => 'color',
                'name' => 'TVCMSCUSTOMSETTING_THEME_COLOR_1',
                'label' => $this->l('Custom Theme Color'),
            ];

            $input[] = [
                'col' => 8,
                'type' => 'color',
                'name' => 'TVCMSCUSTOMSETTING_THEME_COLOR_2',
                'label' => $this->l('Custom Theme Color 2'),
            ];

            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Box Layout'),
                'name' => 'TVCMSCUSTOMSETTING_ADD_CONTAINER',
                'desc' => $this->l('Box layout show in front side'),
                'is_bool' => true,
                'class' => 'tvcmsadd-box',
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];

            $input[] = [
                'type' => 'radio',
                'label' => $this->l('Background Theme'),
                'name' => 'TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS',
                'desc' => $this->l('Types of background styles'),
                'is_bool' => true,
                'class' => 'tvcmsbackground-type',
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 'color',
                        'label' => $this->l('Color'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 'pattern',
                        'label' => $this->l('Pattern'),
                    ],
                ],
            ];

            $input[] = [
                'col' => 8,
                'type' => 'color',
                'label' => $this->l('Back Ground Theme Color'),
                'name' => 'TVCMSCUSTOMSETTING_BACKGROUND_COLOR',
            ];

            $input[] = [
                'col' => 8,
                'type' => 'file_upload_3',
                'name' => 'TVCMSCUSTOMSETTING_BACKGROUND_PATTERN',
                'label' => $this->l('BackGround Pattern'),
                'lang' => true,
            ];
            $input[] = [
                'col' => 8,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT',
                'label' => $this->l('Background Image Css Repeat'),
                'desc' => $this->l('Select your "background-repeat" css property. its value "repeat" and "no-repeat". this option only work with "background-image" not "background-color".'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'repeat',
                            'name' => 'Repeat',
                        ],
                        [
                            'id_option' => 'no-repeat',
                            'name' => 'No Repeat',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];

            $input[] = [
                'col' => 8,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT',
                'label' => $this->l('Background image css attachment'),
                'desc' => $this->l('Select your "background-attachment" css property. Its value "fixed" and "unset". this option only work with "background-image" not "background-color".'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'fixed',
                            'name' => 'Fixed',
                        ],
                        [
                            'id_option' => 'unset',
                            'name' => 'Unset',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Theme Option Status'),
                'name' => 'TVCMSFRONTSIDE_THEME_SETTING_SHOW',
                'desc' => $this->l('Theme option show in front side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }
        if ($show_fields['theme_background_design']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Body Background Status'),
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS',
                'desc' => $this->l('Theme body background color status'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => '1',
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => '0',
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];

            $input[] = [
                'type' => 'radio',
                'label' => $this->l('Body Background Theme'),
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS',
                'desc' => $this->l('Types of body background styles'),
                'is_bool' => true,
                'class' => 'tvcmsbody-background-type',
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 'color',
                        'label' => $this->l('Color'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 'pattern',
                        'label' => $this->l('Pattern'),
                    ],
                ],
            ];

            $input[] = [
                'col' => 8,
                'type' => 'color',
                'label' => $this->l('Body Background Color'),
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR',
            ];

            $input[] = [
                'col' => 8,
                'type' => 'file_upload_4',
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN',
                'label' => $this->l('Body Background Pattern'),
                'lang' => true,
            ];

            $input[] = [
                'col' => 8,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT',
                'label' => $this->l('Background Image Css Repeat'),
                'desc' => $this->l('Select Your "background-repeat" css Property. Its value "repeat" and "no-repeat". This Option only work with "background-image" not "background-color".'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'repeat',
                            'name' => 'Repeat',
                        ],
                        [
                            'id_option' => 'no-repeat',
                            'name' => 'No Repeat',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];

            $input[] = [
                'col' => 8,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT',
                'label' => $this->l('Background Image Css Attachment'),
                'desc' => $this->l('Select Your "background-attachment" css Property. Its value "fixed" and "unset". This Option only work with "background-image" not "background-color".'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'fixed',
                            'name' => 'Fixed',
                        ],
                        [
                            'id_option' => 'unset',
                            'name' => 'Unset',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];
        }

        if ($show_fields['theme_font_design']) {
            $obj = new tvcmsCustomSettingCommonList();
            $fontList = $obj->titleFontList();
            $inputTitleFontList = [];
            $inputTitleFontList[0]['name'] = 'Custom Font';
            $inputTitleFontList[0]['id_option'] = '0';
            $i = 1;
            foreach ($fontList as $font) {
                $inputTitleFontList[$i]['name'] = $font['name'];
                $inputTitleFontList[$i]['id_option'] = $font['name'];
                ++$i;
            }

            $fontList = $obj->bodyFontList();
            $inputBodyFontList = [];
            $inputBodyFontList[0]['name'] = 'Custom Font';
            $inputBodyFontList[0]['id_option'] = '0';
            $i = 1;
            foreach ($fontList as $font) {
                $inputBodyFontList[$i]['name'] = $font['name'];
                $inputBodyFontList[$i]['id_option'] = $font['name'];
                ++$i;
            }

            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Custom Font And Color'),
                'name' => 'TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS',
                'desc' => $this->l('Manage custom font and title color in front side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];

            $input[] = [
                'col' => 7,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_THEME_FONT_TYPE',
                'label' => $this->l('Title Font'),
                'desc' => $this->l('Select font of front title.'),
                'options' => [
                    'query' => $inputTitleFontList,
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];

            $input[] = [
                'col' => 8,
                'type' => 'color',
                'label' => $this->l('Title Color'),
                'name' => 'TVCMSCUSTOMSETTING_THEME_FONT_COLOR',
            ];

            $input[] = [
                'col' => 7,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2',
                'label' => $this->l('Other Font'),
                'desc' => $this->l('Select other font of theme.'),
                'options' => [
                    'query' => $inputBodyFontList,
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];
        }
        if ($show_fields['dark_mode']) {
            $input[] = [
                'type' => 'dark_mode',
                'label' => $this->l('Themes Mode'),
                'name' => 'TVCMSCUSTOMSETTING_DARK_MODE_INPUT',
                'is_bool' => true,
                'class' => 'tvcmsbackground-type',
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Invert Theme'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Revert Theme'),
                    ],
                ],
            ];
        }
        if ($show_fields['page_loader']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Page Loader'),
                'name' => 'TVCMSCUSTOMSETTING_PAGE_LOADER',
                'desc' => $this->l('Display page loader in front side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if ($show_fields['wow_js']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Wow Js'),
                'name' => 'TVCMSCUSTOMSETTING_WOW_JS',
                'desc' => $this->l('Display Wow Js Effect in Front Side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if ($show_fields['mouse_hover_image']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Mouse Hover Image'),
                'name' => 'TVCMSCUSTOMSETTING_HOVER_IMG',
                'desc' => $this->l('Display product\'s second image when mouse hover.'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if (Module::isInstalled('tvcmstabproducts')) {
            if ($show_fields['tab_product_double_row']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Tab Product Double Row'),
                    'name' => 'TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW',
                    'desc' => $this->l('If true then tab products has double row othewise its show in one row'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }

        if ($show_fields['float_left_column']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Floating Left Panel  Filter Status'),
                'name' => 'TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL',
                'desc' => $this->l('Manage location of filter in category page'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if ($show_fields['product_color']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Product Color'),
                'name' => 'TVCMSCUSTOMSETTING_PRODUCT_COLOR',
                'desc' => $this->l('If true then products show color othewise not'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if ($show_fields['product_list_view']) {
            $input[] = [
                'col' => 7,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW',
                'label' => $this->l('Product list view'),
                'desc' => $this->l('Its show default view of product list.'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'grid',
                            'name' => 'Grid-View',
                        ],
                        [
                            'id_option' => 'grid-2',
                            'name' => 'Grid-View 2',
                        ],
                        [
                            'id_option' => 'list',
                            'name' => 'List-View',
                        ],
                        [
                            'id_option' => 'list-2',
                            'name' => 'List-View 2',
                        ],
                        [
                            'id_option' => 'catelog',
                            'name' => 'Catelog-View',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];
        }

        if (Module::isInstalled('ps_mainmenu')) {
            if ($show_fields['main_menu_sticky']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Main menu sticky status'),
                    'name' => 'TVCMSCUSTOMSETTING_MAIN_MENU_STICKY',
                    'desc' => $this->l('Manage main menu as sticky of front side'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }
        if ($show_fields['cart_view']) {
            $input[] = [
                'col' => 7,
                'type' => 'select',
                'name' => 'TVCMSCUSTOMSETTING_CART_VIEW',
                'label' => $this->l('Cart style'),
                'desc' => $this->l('Select cart style.'),
                'options' => [
                    'query' => [
                        [
                            'id_option' => 'classic',
                            'name' => 'Classic',
                        ],
                        [
                            'id_option' => 'pop-up',
                            'name' => 'Pop Up',
                        ],
                    ],
                    'id' => 'id_option',
                    'name' => 'name',
                ],
            ];
        }

        if ($show_fields['tvmain_smart_speed']) {
            $input[] = [
                'col' => 7,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_SMART_SPEED',
                'label' => $this->l('Slider Smart Speed'),
                'desc' => $this->l('The duration of the Smart speed between two slides.'),
                'suffix' => 'milliseconds',
                'class' => 'fixed-width-sm',
            ];
        }
        if ($show_fields['show_all']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Show in all page supplier list'),
                'name' => 'TVCMSCUSTOMSETTING_SUPPLIER_STATUS',
                'desc' => 'Note: Yes status means show in all pages, no means show in only homepage',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }
        if ($show_fields['show_all_brand']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Show in all page brand list'),
                'name' => 'TVCMSCUSTOMSETTING_BRAND_STATUS',
                'desc' => 'Note: Yes status means show in all pages, no means show in only homepage',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }

        if ($show_fields['left_sticky']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Left bar sticky status'),
                'name' => 'TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS',
                'desc' => 'Status of left sticky bar',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }

        if ($show_fields['prod_bottom_sticky']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Product page bottom bar sticky status'),
                'name' => 'TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS',
                'desc' => 'Status of Product page bottom sticky bar',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }

        if ($show_fields['right_sticky']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Right bar sticky status'),
                'name' => 'TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS',
                'desc' => 'Status of right sticky bar',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }
        if ($show_fields['home_pagecategory_show']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Show home page category list'),
                'name' => 'TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS',
                'desc' => 'Note: Yes status means show in all page, no means show in only inner page',
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Yes'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('No'),
                    ],
                ],
            ];
        }
        if ($show_fields['bottom_sticky']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Bottom Option'),
                'name' => 'TVCMSCUSTOMSETTING_BOTTOM_OPTION',
                'desc' => $this->l('Display Bottom Option of Front Side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        if (Module::isInstalled('tvcmsverticalmenu')) {
            if ($show_fields['vertical_menu_open']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Vertical Menu Open'),
                    'name' => 'TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN',
                    'desc' => $this->l('Vertical Menu is Open Default in Home Page'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }

        return [
            'form' => [
                'legend' => [
                    'title' => $this->l('Theme Option'),
                    'icon' => 'icon-cogs',
                ],
                'input' => $input,
                'submit' => [
                    'title' => $this->l('Save'),
                    'name' => 'submitTvcmsThemeOptionForm',
                ],
            ],
        ];
    }

    // App Link Form
    protected function tvcmsAppLinkForm()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $input = [];

        if ($show_fields['app_main_image']) {
            $input[] = [
                'col' => 8,
                'type' => 'file_upload',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE',
                'label' => $this->l('App link image'),
            ];
        }

        if ($show_fields['app_title']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE',
                'label' => $this->l('App link title'),
                'lang' => true,
                'desc' => $this->l('Display title of all app link in front side'),
            ];
        }

        if ($show_fields['app_sub_title']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE',
                'label' => $this->l('App link title'),
                'lang' => true,
                'desc' => $this->l('Display sub-title of all app link in front side'),
            ];
        }

        if ($show_fields['app_desc']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC',
                'label' => $this->l('App link description'),
                'lang' => true,
                'desc' => $this->l('Manage description of all app link in front side'),
            ];
        }

        if ($show_fields['apple_app_link']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE',
                'label' => $this->l('Apple app link'),
                'lang' => true,
                'desc' => $this->l('Manage apple app in Front Side'),
            ];
        }

        if ($show_fields['google_app_link']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE',
                'label' => $this->l('Google App Link'),
                'lang' => true,
                'desc' => $this->l('Manage google link in front side'),
            ];
        }

        if ($show_fields['microsoft_app_link']) {
            $input[] = [
                'col' => 8,
                'type' => 'text',
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT',
                'label' => $this->l('Microsoft App Link'),
                'lang' => true,
                'desc' => $this->l('Manage microsoft link in front side'),
            ];
        }

        if ($show_fields['app_link_status']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Status'),
                'name' => 'TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS',
                'desc' => $this->l('Status of app link in front side'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        return [
            'form' => [
                'legend' => [
                    'title' => $this->l('App Link'),
                    'icon' => 'icon-cloud-upload',
                ],
                'input' => $input,
                'submit' => [
                    'title' => $this->l('Save'),
                    'name' => 'submitTvcmsAppLinkForm',
                ],
            ],
        ];
    }

    // App Link Form
    protected function tvcmsFooterProductForm()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $input = [];

        // This is Copyright information
        if ($show_fields['copy_right_info']) {
            if ($show_fields['custom_text']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'textarea',
                    'name' => 'TVCMSCUSTOMSETTING_CUSTOM_TEXT',
                    'label' => $this->l('Custom Text'),
                    'lang' => true,
                    'desc' => $this->l('Display custom text in front side'),
                    'cols' => 40,
                    'rows' => 10,
                    'class' => 'rte',
                    'autoload_rte' => true,
                ];
            }

            if ($show_fields['custom_text_status']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Custom Text Status'),
                    'name' => 'TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS',
                    'desc' => $this->l('Manage status for custom text'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }

            if ($show_fields['copy_right_text']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT',
                    'label' => $this->l('Copy right text'),
                    'lang' => true,
                    'desc' => $this->l('Manage display copy right text in front side'),
                ];
            }

            if ($show_fields['place_holder_search']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT',
                    'label' => $this->l('Search Placeholder'),
                    'lang' => true,
                    'desc' => $this->l('Note: Please Enter Search bar Placeholder'),
                ];
            }

            if ($show_fields['copy_right_link']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_COPY_RIGHT_LINK',
                    'label' => $this->l('Copy Right Link'),
                    'lang' => true,
                    'desc' => $this->l('Manage display copy right link in front side'),
                ];
            }

            if ($show_fields['copy_right_text_status']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Copy Right Text Status'),
                    'name' => 'TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS',
                    'desc' => $this->l('Status for copy right text'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
            if ($show_fields['rtl_text_status']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Arabic font Text Status'),
                    'name' => 'TVCMSCUSTOMSETTING_RTL_TEXT_STATUS',
                    'desc' => $this->l('Status of arabic font in RTL language'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }

        // This is Footer tab Information
        if ($show_fields['footer_tab_product_info']) {
            if ($show_fields['footer_tab_featured_prod_title']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE',
                    'label' => $this->l('Featured product title'),
                    'desc' => $this->l('Manage display testimonial title in from side'),
                    'lang' => true,
                ];
            }

            if ($show_fields['footer_tab_new_prod_title']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE',
                    'label' => $this->l('New product title'),
                    'desc' => $this->l('Manage display testimonial title in from side'),
                    'lang' => true,
                ];
            }

            if ($show_fields['footer_tab_best_seller_prod_title']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE',
                    'label' => $this->l('Best seller product title'),
                    'desc' => $this->l('Manage best seller product title in From Side'),
                    'lang' => true,
                ];
            }

            if ($show_fields['footer_tab_num_prod']) {
                $input[] = [
                    'type' => 'select',
                    'label' => $this->l('Number of product'),
                    'desc' => $this->l('Number of product which show in footer tab'),
                    'name' => 'TVCMSCUSTOMSETTING_FOOTER_TAB_NUM_PROD',
                    'options' => [
                        'query' => [
                            [
                                'id_option' => 1,
                                'name' => '1',
                            ],
                            [
                                'id_option' => 2,
                                'name' => '2',
                            ],
                            [
                                'id_option' => 3,
                                'name' => '3',
                            ],
                            [
                                'id_option' => 4,
                                'name' => '4',
                            ],
                            [
                                'id_option' => 5,
                                'name' => '5',
                            ],
                        ],
                        'id' => 'id_option',
                        'name' => 'name',
                    ],
                ];
            }

            if ($show_fields['footer_tab_prod_status']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Footer tab produts status'),
                    'name' => 'TVCMSCUSTOMSETTING_FOOTER_TAB_STATUS',
                    'desc' => $this->l('Show footer tab product in home page'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }

        if (Module::isInstalled('ps_emailsubscription')) {
            if ($show_fields['news_letter_title']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_NEWSLETTER_TITLE',
                    'label' => $this->l('Newsletter title'),
                    'desc' => $this->l('Display newsletter title in from side'),
                    'lang' => true,
                ];
            }

            if ($show_fields['news_letter_short_desc']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC',
                    'label' => $this->l('Newsletter short description'),
                    'desc' => $this->l('Display newsletter description in from side'),
                    'lang' => true,
                ];
            }
        }

        if (Module::isInstalled('ps_socialfollow')) {
            if ($show_fields['social_icon_title']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE',
                    'label' => $this->l('Social icon title'),
                    'desc' => $this->l('Display social icon title in from side'),
                    'lang' => true,
                ];
            }

            if ($show_fields['social_icon_short_desc']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'text',
                    'name' => 'TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC',
                    'label' => $this->l('Social icon short description'),
                    'desc' => $this->l('Display social icon description in from side'),
                    'lang' => true,
                ];
            }
        }
        if ($show_fields['footer_img']) {
            $input[] = [
                'col' => 8,
                'type' => 'footer_img',
                'name' => 'TVCMSCUSTOMSETTING_FOOTER_IMAGE',
                'label' => $this->l('Footer background image'),
            ];
        }
        if ($show_fields['footer_img_status']) {
            $input[] = [
                'type' => 'switch',
                'label' => $this->l('Footer background image status'),
                'name' => 'TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS',
                'desc' => $this->l('Manage footer background image status'),
                'is_bool' => true,
                'values' => [
                    [
                        'id' => 'active_on',
                        'value' => 1,
                        'label' => $this->l('Show'),
                    ],
                    [
                        'id' => 'active_off',
                        'value' => 0,
                        'label' => $this->l('Hide'),
                    ],
                ],
            ];
        }

        return [
            'form' => [
                'legend' => [
                    'title' => $this->l('Custom Titles'),
                    'icon' => 'icon-cloud-upload',
                ],
                'input' => $input,
                'submit' => [
                    'title' => $this->l('Save'),
                    'name' => 'submitTvcmsCustomTitleForm',
                ],
            ],
        ];
    }

    protected function tvcmsCustomLayoutForm()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $input = [];

        // This is Copyright information
        if ($show_fields['main_form']) {
            if ($show_fields['header_layout']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'header_desktop_layout_radio',
                    'name' => 'TVCMSHEADERCUSTOMLAYOUT',
                    'label' => $this->l('Header Layout\'s'),
                ];
            }
            if ($show_fields['header_layout_mobile']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'header_mobile_layout_radio',
                    'name' => 'TVCMSHEADERCUSTOMLAYOUT_MOBILE',
                    'label' => $this->l('Mobile Header Layout\'s'),
                ];
            }
            if ($show_fields['header_product_layout_radio']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'header_product_layout_radio',
                    'name' => 'TVCMSPRODUCTCUSTOM_LAYOUT',
                    'label' => $this->l('Product Page Layout\'s'),
                ];
            }
            if ($show_fields['footer_layout_radio']) {
                $input[] = [
                    'col' => 8,
                    'type' => 'footer_layout_radio',
                    'name' => 'TVCMSFOOTERCUSTOMLAYOUT',
                    'label' => $this->l('Footer Layout\'s'),
                ];
            }
            if ($show_fields['mobile_search']) {
                $input[] = [
                    'type' => 'switch',
                    'label' => $this->l('Category Banner'),
                    'name' => 'TVCMSCAT_BANNER_STATUS',
                    'desc' => $this->l('Note: If selected yes shown in Top of category else shown bottom of the category'),
                    'is_bool' => true,
                    'values' => [
                        [
                            'id' => 'active_on',
                            'value' => 1,
                            'label' => $this->l('Show'),
                        ],
                        [
                            'id' => 'active_off',
                            'value' => 0,
                            'label' => $this->l('Hide'),
                        ],
                    ],
                ];
            }
        }

        return [
            'form' => [
                'legend' => [
                    'title' => $this->l('Custom Layout Configuration'),
                    'icon' => 'icon-wrench',
                ],
                'input' => $input,
                'submit' => [
                    'title' => $this->l('Save'),
                    'name' => 'submitTvcmsCustomLayoutForm',
                ],
            ],
        ];
    }

    protected function tvcmsInstallDataForm()
    {
        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $input = [];

        // This is Copyright information
        $input[] = [
            'col' => 12,
            'type' => 'tvcmsInstallDataForm',
            'name' => 'TVCMSINSTALLDATAFORM',
            'label' => '',
        ];

        return [
            'form' => [
            'legend' => [
                'title' => $this->l('Import Sample Data'),
                'icon' => 'icon-wrench',
            ],
            'input' => $input,
            'submit' => [
                'title' => $this->l('Upgrade Database'),
                'class' => 'btn btn-primary',
                'name' => 'submitTvcmsUpgradeThemeForm',
                'icon' => 'icon-wrench',
            ],
            ],
           ];
    }

    protected function getConfigFormValues()
    {
        $fields = [];
        $languages = Language::getLanguages();
        $path = _MODULE_DIR_ . $this->name . '/views/img/';

        foreach ($languages as $lang) {
            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_TEXT', $lang['id_lang'], true);
            $fields['TVCMSCUSTOMSETTING_CUSTOM_TEXT'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_SEARCH_PLACEHOLDER_TEXT'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_COPY_RIGHT_LINK'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_FOOTER_TAB_FEATURED_PROD_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_FOOTER_TAB_NEW_PROD_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_FOOTER_TAB_BEST_SELLER_PROD_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_NEWSLETTER_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_NEWSLETTER_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_NEWSLETTER_SHORT_DESC'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_SOCIAL_ICON_TITLE'][$lang['id_lang']] = $a;

            $a = Configuration::get('TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC', $lang['id_lang']);
            $fields['TVCMSCUSTOMSETTING_SOCIAL_ICON_SHORT_DESC'][$lang['id_lang']] = $a;
        }

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE');
        $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMAGE');
        $fields['TVCMSCUSTOMSETTING_FOOTER_IMAGE'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS');
        $fields['TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS');
        $fields['TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS');
        $fields['TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS');
        $fields['TVCMSCUSTOMSETTING_RTL_TEXT_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS');
        $fields['TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY');
        $fields['TVCMSCUSTOMSETTING_MAIN_MENU_STICKY'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_SUPPLIER_STATUS');
        $fields['TVCMSCUSTOMSETTING_SUPPLIER_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BRAND_STATUS');
        $fields['TVCMSCUSTOMSETTING_BRAND_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS');
        $fields['TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS');
        $fields['TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS');
        $fields['TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS');
        $fields['TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BOTTOM_OPTION');
        $fields['TVCMSCUSTOMSETTING_BOTTOM_OPTION'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN');
        $fields['TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_TAB_NUM_PROD');
        $fields['TVCMSCUSTOMSETTING_FOOTER_TAB_NUM_PROD'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_TAB_STATUS');
        $fields['TVCMSCUSTOMSETTING_FOOTER_TAB_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_ADD_CONTAINER');
        $fields['TVCMSCUSTOMSETTING_ADD_CONTAINER'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_PATTERN_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_COLOR'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN'] = $tmp;
        $this->context->smarty->assign('body_background_pattern', $tmp);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_REPEAT'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_IMAGE_ATTACHMENT'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS');
        $fields['TVCMSCUSTOMSETTING_CUSTOM_FONT_TITLE_COLOR_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE');
        $fields['TVCMSCUSTOMSETTING_THEME_FONT_TYPE'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_COLOR');
        $fields['TVCMSCUSTOMSETTING_THEME_FONT_COLOR'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2');
        $fields['TVCMSCUSTOMSETTING_THEME_FONT_TYPE_2'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_PAGE_LOADER');
        $fields['TVCMSCUSTOMSETTING_PAGE_LOADER'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_WOW_JS');
        $fields['TVCMSCUSTOMSETTING_WOW_JS'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_HOVER_IMG');
        $fields['TVCMSCUSTOMSETTING_HOVER_IMG'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW');
        $fields['TVCMSCUSTOMSETTING_TAB_PRODUCT_ROW'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_DARK_MODE_INPUT');
        $fields['TVCMSCUSTOMSETTING_DARK_MODE_INPUT'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL');
        $fields['TVCMSCUSTOMSETTING_FILTER_LEFT_PANEL'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_COLOR');
        $fields['TVCMSCUSTOMSETTING_PRODUCT_COLOR'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW');
        $fields['TVCMSCUSTOMSETTING_PRODUCT_LIST_VIEW'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_CART_VIEW');
        $fields['TVCMSCUSTOMSETTING_CART_VIEW'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_SMART_SPEED');
        $fields['TVCMSCUSTOMSETTING_SMART_SPEED'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_OPTION');
        $fields['TVCMSCUSTOMSETTING_THEME_OPTION'] = $tmp;

        $tmp = Configuration::get('TVCMSHEADERCUSTOMLAYOUT');
        $fields['TVCMSHEADERCUSTOMLAYOUT'] = $tmp;

        $tmp = Configuration::get('TVCMSHEADERCUSTOMLAYOUT_MOBILE');
        $fields['TVCMSHEADERCUSTOMLAYOUT_MOBILE'] = $tmp;

        $tmp = Configuration::get('TVCMSFOOTERCUSTOMLAYOUT');
        $fields['TVCMSFOOTERCUSTOMLAYOUT'] = $tmp;

        $tmp = Configuration::get('TVCMSPRODUCTCUSTOM_LAYOUT');
        $fields['TVCMSPRODUCTCUSTOM_LAYOUT'] = $tmp;

        $tmp = Configuration::get('TVCMSCAT_BANNER_STATUS');
        $fields['TVCMSCAT_BANNER_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSFRONTSIDE_THEME_SETTING_SHOW');
        $fields['TVCMSFRONTSIDE_THEME_SETTING_SHOW'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_1');
        $fields['TVCMSCUSTOMSETTING_THEME_COLOR_1'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_2');
        $fields['TVCMSCUSTOMSETTING_THEME_COLOR_2'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_COLOR');
        $fields['TVCMSCUSTOMSETTING_BACKGROUND_COLOR'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT');
        $fields['TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_REPEAT'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT');
        $fields['TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_ATTACHMENT'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_PATTERN');
        $fields['TVCMSCUSTOMSETTING_BACKGROUND_PATTERN'] = $tmp;
        $this->context->smarty->assign('background_pattern', $tmp);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN');
        $fields['TVCMSCUSTOMSETTING_BODY_BACKGROUND_PATTERN'] = $tmp;
        $this->context->smarty->assign('body_background_pattern', $tmp);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS');
        $fields['TVCMSCUSTOMSETTING_BACKGROUND_IMAGE_PATTERN_STATUS'] = $tmp;

        $tmp = Configuration::get('TVCMSFRONTSIDE_THEME_SETTING_SHOW');
        $fields['TVCMSFRONTSIDE_THEME_SETTING_SHOW'] = $tmp;

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BACKGROUND_OLD_PATTERN');
        $this->context->smarty->assign('custom_pattern', $tmp);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BODY_BACKGROUND_OLD_PATTERN');
        $this->context->smarty->assign('custom_body_pattern', $tmp);

        $this->context->smarty->assign('front_pattern_path', _THEME_IMG_DIR_);
        $this->context->smarty->assign('path', $path);

        $tvcms_obj = new TvcmsCustomSettingStatus();
        $show_fields = $tvcms_obj->fieldStatusInformation();
        $fields['header_layout_list'] = $show_fields['header_layout_list'];
        $fields['footer_layout_list'] = $show_fields['footer_layout_list'];
        $fields['product_layout_list'] = $show_fields['product_layout_list'];
        $fields['mob_header_layout_list'] = $show_fields['mob_header_layout_list'];
        $fields['layout_img_path'] = _THEME_IMG_DIR_;

        return $fields;
    }

    public function hookDisplayBackOfficeHeader()
    {
        $path = _MODULE_DIR_ . $this->name . '/views/img/';
        $this->context->smarty->assign('path', $path);
        if (Tools::version_compare(_PS_VERSION_, '1.7.7', '<')) {
            $this->context->controller->addJS(_PS_JS_DIR_ . 'jquery/jquery-1.11.0.min.js');
        }
        $this->context->controller->addJQueryUI('ui.sortable');
        $this->context->controller->addjqueryPlugin('fancybox');
        if ($this->name == Tools::getValue('configure')) {
            $this->context->controller->addJS($this->_path . 'views/js/back.js');
            $this->context->controller->addCSS($this->_path . 'views/css/back.css');
        }
    }

    public function hookdisplayTopOfferText()
    {
        $cookie = Context::getContext()->cookie;
        $id_lang = $cookie->id_lang;

        $html = '';

        if (!Cache::isStored('tvcmscustomsetting_displaytopoffertext')) {
            if (Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_TEXT_STATUS')) {
                $html .= '<div class="tvheader-nav-offer-text"><i class=\'material-icons\'>&#xe8d0;</i>' . Configuration::get('TVCMSCUSTOMSETTING_CUSTOM_TEXT', $id_lang, true) . '</div>';
            }
            $output = $html;
            Cache::store('tvcmscustomsetting_displaytopoffertext', $output);
        }

        return Cache::retrieve('tvcmscustomsetting_displaytopoffertext');
    }

    public function hookdisplayNav1()
    {
        return $this->hookdisplayTopOfferText();
    }

    public function hookdisplayNav1sub1()
    {
        return $this->hookdisplayTopOfferText();
    }

    public function hookdisplayMobileTopOfferText()
    {
        return $this->hookdisplayTopOfferText();
    }

    public function hookdisplayHome()
    {
        return $this->hookdisplayDownloadApps();
    }

    public function hookdisplayDownloadApps()
    {
        $html = '';
        $cookie = Context::getContext()->cookie;
        $id_lang = $cookie->id_lang;

        if (!Cache::isStored('tvcmscustomsetting_display_download_app.tpl')) {
            if (Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_STATUS')) {
                $path = _MODULE_DIR_ . $this->name . '/views/img/';
                $tvcms_obj = new TvcmsCustomSettingStatus();
                $show_fields = $tvcms_obj->fieldStatusInformation();
                $data = [];

                $data['link_image'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_IMAGE');
                $data['link_title'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_TITLE', $id_lang);
                $data['link_sub_title'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_SUB_TITLE', $id_lang);
                $data['link_desc'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_DESC', $id_lang);
                $data['apple_link'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_APPLE', $id_lang);
                $data['google_link'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_GOOLGE', $id_lang);
                $data['microsoft_link'] = Configuration::get('TVCMSCUSTOMSETTING_DOWNLOAD_APPS_MICROSOFT', $id_lang);
                $this->context->smarty->assign('data', $data);
                $this->context->smarty->assign('path', $path);
                $this->context->smarty->assign('show_fields', $show_fields);
                $output = $this->display(__FILE__, 'views/templates/front/display_download_app.tpl');
            } else {
                $output = '';
            }
            Cache::store('tvcmscustomsetting_display_download_app.tpl', $output);
        }

        return Cache::retrieve('tvcmscustomsetting_display_download_app.tpl');
    }

    public function hookdisplayCopyRightText()
    {
        $cookie = Context::getContext()->cookie;
        $id_lang = $cookie->id_lang;

        if (!Cache::isStored('tvcmscustomsetting_display_copy_right_text.tpl')) {
            if (Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT_STATUS') && Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT', $id_lang)) {
                $tmp = Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_TEXT', $id_lang);
                $this->context->smarty->assign('copy_right_text', $tmp);

                $tmp = Configuration::get('TVCMSCUSTOMSETTING_COPY_RIGHT_LINK', $id_lang);
                $this->context->smarty->assign('copy_right_link', $tmp);
                $output = $this->display(__FILE__, 'views/templates/front/display_copy_right_text.tpl');
            } else {
                $output = '';
            }
            Cache::store('tvcmscustomsetting_display_copy_right_text.tpl', $output);
        }

        return Cache::retrieve('tvcmscustomsetting_display_copy_right_text.tpl');
    }

    public function hookdisplayCustomsocialblock()
    {
        if (!Cache::isStored('tvcmscustomsetting_display_custom_social.tpl')) {
            if (Module::isEnabled('tvcmswishlist')) {
                $WishListEnabledStatus = 1;
                $this->context->smarty->assign('WishListEnabledStatus', $WishListEnabledStatus);
            } else {
                $WishListEnabledStatus = 0;
                $this->context->smarty->assign('WishListEnabledStatus', $WishListEnabledStatus);
            }
            if (Module::isEnabled('tvcmsproductcompare')) {
                $CompareEnabledStatus = 1;
                $this->context->smarty->assign('CompareEnabledStatus', $CompareEnabledStatus);
            } else {
                $CompareEnabledStatus = 0;
                $this->context->smarty->assign('CompareEnabledStatus', $CompareEnabledStatus);
            }
            $RightStickyStatus = Configuration::get('TVCMSCUSTOMSETTING_RIGHT_STICKY_STATUS');
            $this->context->smarty->assign('RightStickyStatus', $RightStickyStatus);

            $LeftStickyStatus = Configuration::get('TVCMSCUSTOMSETTING_LEFT_STICKY_STATUS');
            $this->context->smarty->assign('LeftStickyStatus', $LeftStickyStatus);
            $output = $this->display(__FILE__, 'views/templates/front/display_custom_social.tpl');
            Cache::store('tvcmscustomsetting_display_custom_social.tpl', $output);
        }

        return Cache::retrieve('tvcmscustomsetting_display_custom_social.tpl');
    }

    public function hookdisplayHeader()
    {
        $assignVarPage = $this->context->controller->php_self;
        $this->context->smarty->assign('assignVarPage', $assignVarPage);
        $colors_1 = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_1');
        $colors_text_1 = $this->getContrastColor($colors_1);
        $colors_2 = Configuration::get('TVCMSCUSTOMSETTING_THEME_COLOR_2');
        $colors_text_2 = $this->getContrastColor($colors_2);
        $tvMainSmartSpeed = Configuration::get('TVCMSCUSTOMSETTING_SMART_SPEED');
        Media::addJsDef(['tvMainSmartSpeed' => $tvMainSmartSpeed]);
        // layout
        $get_hl = Tools::getValue('hl');
        $get_mhl = Tools::getValue('mhl');
        $get_fl = Tools::getValue('fl');
        $get_pdl = Tools::getValue('pdl');

        $hl = Configuration::get('TVCMSHEADERCUSTOMLAYOUT');
        $this->context->smarty->assign('TVCMSHEADERCUSTOMLAYOUT', $hl);
        if (!empty($get_hl) && is_numeric($get_hl)) {
            $this->context->smarty->assign('TVCMSHEADERCUSTOMLAYOUT', 'desk-header-' . $get_hl);
        }
        $mhl = Configuration::get('TVCMSHEADERCUSTOMLAYOUT_MOBILE');
        $this->context->smarty->assign('TVCMSHEADERCUSTOMLAYOUT_MOBILE', $mhl);
        if (!empty($get_mhl) && is_numeric($get_mhl)) {
            $this->context->smarty->assign('TVCMSHEADERCUSTOMLAYOUT_MOBILE', 'mobile-header-' . $get_mhl);
        }
        $fl = Configuration::get('TVCMSFOOTERCUSTOMLAYOUT');
        $this->context->smarty->assign('TVCMSFOOTERCUSTOMLAYOUT', $fl);
        if (!empty($get_fl) && is_numeric($get_fl)) {
            $this->context->smarty->assign('TVCMSFOOTERCUSTOMLAYOUT', 'footer-' . $get_fl);
        }
        $pdl = Configuration::get('TVCMSPRODUCTCUSTOM_LAYOUT');
        $this->context->smarty->assign('TVCMSPRODUCTCUSTOM_LAYOUT', $pdl);
        if (!empty($get_pdl) && is_numeric($get_pdl)) {
            $this->context->smarty->assign('TVCMSPRODUCTCUSTOM_LAYOUT', 'product-' . $get_pdl);
        }

        // color contrast
        if ('#FFFFFF' == $colors_text_1) {
            $res_1 = 'text1-light';
        } else {
            $res_1 = 'text1-dark';
        }
        if ('#FFFFFF' == $colors_text_2) {
            $res_2 = 'text2-light';
        } else {
            $res_2 = 'text2-dark';
        }
        $this->context->smarty->assign('res_1', $res_1);
        $this->context->smarty->assign('res_2', $res_2);

        $this->context->controller->addjqueryPlugin('fancybox'); // blog module
        $this->context->controller->addJS($this->_path . 'views/js/owl.js');
        $this->context->controller->addJS($this->_path . 'views/js/slick.min.js');
        // $this->context->controller->addJS($this->_path.'views/js/sticksy.min.js');
        $this->context->controller->addJS($this->_path . 'views/js/jquery.storageapi.min.js');
        $this->context->controller->addJS($this->_path . 'views/js/jquery.balance.js');
        $this->context->controller->addJS($this->_path . 'views/js/resize-sensor.min.js');
        $this->context->controller->addJS($this->_path . 'views/js/theia-sticky-sidebar.min.js');
        // $this->context->controller->addJS($this->_path.'views/js/jquery.lazy.min.js');
        $this->context->controller->addJS($this->_path . 'views/js/jquery.elevatezoom.min.js');
        $this->context->controller->addJS($this->_path . 'views/js/jquery.countdown.min.js');
        // $this->context->controller->addJS($this->_path.'views/js/front.js');
        // $this->context->controller->addCSS($this->_path.'views/css/front.css');
        $this->context->controller->addCSS($this->_path . 'views/css/back.css');
        $this->context->controller->addCSS($this->_path . 'views/css/slick-theme.min.css');

        $tvcms_setting = true;
        Media::addJsDef(['tvcms_setting' => $tvcms_setting]);

        $paths = _MODULE_DIR_ . $this->name . '/views/img/';
        $this->context->smarty->assign('paths', $paths);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_WOW_JS');
        Media::addJsDef(['TVCMSCUSTOMSETTING_WOW_JS' => $tmp]);

        $cookie = Context::getContext()->cookie;
        $iso_code_country = $cookie->iso_code_country;
        $tmp = Configuration::get('TVCMSCUSTOMSETTING_iso_code_country');
        Media::addJsDef(['TVCMSCUSTOMSETTING_iso_code_country' => $iso_code_country]);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_HOVER_IMG');
        Media::addJsDef(['TVCMSCUSTOMSETTING_HOVER_IMG' => $tmp]);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_MAIN_MENU_STICKY');
        Media::addJsDef(['TVCMSCUSTOMSETTING_MAIN_MENU_STICKY' => $tmp]);

        $GetStatusSupplier = Configuration::get('TVCMSCUSTOMSETTING_SUPPLIER_STATUS');
        $this->context->smarty->assign('GetStatusSupplier', $GetStatusSupplier);

        $ArabicFontStatus = Configuration::get('TVCMSCUSTOMSETTING_RTL_TEXT_STATUS');
        $this->context->smarty->assign('ArabicFontStatus', $ArabicFontStatus);

        $FooterImageStatus = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMG_STATUS');
        $this->context->smarty->assign('FooterImageStatus', $FooterImageStatus);

        $FooterBackgroundImage = Configuration::get('TVCMSCUSTOMSETTING_FOOTER_IMAGE');
        $this->context->smarty->assign('FooterBackgroundImage', $FooterBackgroundImage);

        $GetStatusBrand = Configuration::get('TVCMSCUSTOMSETTING_BRAND_STATUS');
        $this->context->smarty->assign('GetStatusBrand', $GetStatusBrand);

        $CategoryListHomePageStatus = Configuration::get('TVCMSCUSTOMSETTING_CATEGORY_TREE_STATUS');
        $this->context->smarty->assign('CategoryListHomePageStatus', $CategoryListHomePageStatus);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_BOTTOM_OPTION');
        Media::addJsDef(['TVCMSCUSTOMSETTING_BOTTOM_OPTION' => $tmp]);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_DARK_MODE_INPUT');
        Media::addJsDef(['TVCMSCUSTOMSETTING_DARK_MODE_INPUT' => $tmp]);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS');
        Media::addJsDef(['TVCMSCUSTOMSETTING_PRODUCT_PAGE_BOTTOM_STICKY_STATUS' => $tmp]);

        $tmp = Configuration::get('TVCMSFRONTSIDE_THEME_SETTING_SHOW');
        Media::addJsDef(['TVCMSFRONTSIDE_THEME_SETTING_SHOW' => $tmp]);

        $tmp = Configuration::get('TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN');
        Media::addJsDef(['TVCMSCUSTOMSETTING_VERTICAL_MENU_OPEN' => $tmp]);

        $useSSL = (isset($this->ssl) && $this->ssl && Configuration::get('PS_SSL_ENABLED')) || Tools::usingSecureMode() ? true : false;
        $protocol_content = $useSSL ? 'https://' : 'http://';
        $baseDir = $protocol_content . Tools::getHttpHost() . __PS_BASE_URI__;
        Media::addJsDef(['baseDir' => $baseDir]);

        $static_token = Tools::getToken(false);
        Media::addJsDef(['static_token' => $static_token]);
    }
}