Merge branch 'main' of http://91.189.216.43:3000/jacek.pyziak/drmaterac.pl
This commit is contained in:
1348
.vscode/ftp-kr.sync.cache.json
vendored
1348
.vscode/ftp-kr.sync.cache.json
vendored
File diff suppressed because it is too large
Load Diff
@@ -3851,6 +3851,7 @@ class ProductCore extends ObjectModel
|
||||
|
||||
$result = self::$_pricesLevel2[$cache_id_2][(int) $id_product_attribute];
|
||||
|
||||
// echo '<pre>' . print_r( $specific_price , true) . '</pre>';
|
||||
if (!$specific_price || $specific_price['price'] < 0) {
|
||||
$price = (float) $result['price'];
|
||||
} else {
|
||||
@@ -3954,6 +3955,11 @@ class ProductCore extends ObjectModel
|
||||
$price -= $specific_price_reduction;
|
||||
}
|
||||
|
||||
// Zaokrąglanie w górę tylko gdy mamy redukcję
|
||||
if ($specific_price && $specific_price['reduction'] > 0) {
|
||||
$price = Tools::ceilf($price);
|
||||
}
|
||||
|
||||
// Group reduction
|
||||
if ($use_group_reduction) {
|
||||
$reduction_from_category = GroupReduction::getValueForProduct($id_product, $id_group);
|
||||
|
||||
@@ -2687,7 +2687,7 @@ class AdminControllerCore extends Controller
|
||||
|
||||
$this->addJqueryPlugin(['scrollTo', 'alerts', 'chosen', 'autosize', 'fancybox']);
|
||||
$this->addJqueryPlugin('growl', null, false);
|
||||
$this->addJqueryUI(['ui.slider', 'ui.datepicker']);
|
||||
$this->addJqueryUI(['ui.core', 'ui.widget', 'ui.mouse', 'ui.draggable', 'ui.sortable','ui.datepicker','ui.slider']);
|
||||
|
||||
$this->addJS(__PS_BASE_URI__ . $this->admin_webpath . '/themes/' . $this->bo_theme . '/js/vendor/bootstrap.min.js');
|
||||
$this->addJS(__PS_BASE_URI__ . $this->admin_webpath . '/themes/' . $this->bo_theme . '/js/vendor/modernizr.min.js');
|
||||
@@ -2717,6 +2717,10 @@ class AdminControllerCore extends Controller
|
||||
|
||||
// Specific Admin Theme
|
||||
$this->addCSS(__PS_BASE_URI__ . $this->admin_webpath . '/themes/' . $this->bo_theme . '/css/overrides.css', 'all', PHP_INT_MAX);
|
||||
|
||||
|
||||
|
||||
$this->context->controller->addJs(apPageHelper::getJsAdminDir().'admin/form.js');
|
||||
}
|
||||
|
||||
$this->addJS([
|
||||
|
||||
@@ -235,7 +235,7 @@ define('_PS_SMARTY_CONSOLE_OPEN_BY_URL_', 1);
|
||||
define('_PS_SMARTY_CONSOLE_OPEN_', 2);
|
||||
|
||||
if (!defined('_PS_JQUERY_VERSION_')) {
|
||||
define('_PS_JQUERY_VERSION_', '3.4.1');
|
||||
define('_PS_JQUERY_VERSION_', '1.12.4');
|
||||
}
|
||||
|
||||
define('_PS_CACHE_CA_CERT_FILE_', _PS_CACHE_DIR_.'cacert.pem');
|
||||
|
||||
@@ -38,7 +38,7 @@ class APPageBuilder extends Module
|
||||
protected $product_active;
|
||||
protected $backup_dir;
|
||||
protected $header_content;
|
||||
|
||||
|
||||
protected $_confirmations = array();
|
||||
protected $_errors = array();
|
||||
protected $_warnings = array();
|
||||
@@ -56,7 +56,7 @@ class APPageBuilder extends Module
|
||||
$this->secure_key = Tools::encrypt($this->name);
|
||||
$this->bootstrap = true;
|
||||
parent::__construct();
|
||||
|
||||
|
||||
$this->displayName = $this->l('Apollo Page Builder');
|
||||
$this->description = $this->l('Apollo Page Builder build content for your site.');
|
||||
$this->theme_name = _THEME_NAME_;
|
||||
@@ -66,7 +66,7 @@ class APPageBuilder extends Module
|
||||
$this->templateFile = 'module:appagebuilder/views/templates/hook/appagebuilder.tpl';
|
||||
$this->redirectFriendUrl();
|
||||
}
|
||||
|
||||
|
||||
public function redirectFriendUrl()
|
||||
{
|
||||
// if (Context::getContext()->controller === null || (isset(Context::getContext()->controller->controller_type) && in_array(Context::getContext()->controller->controller_type, array('front', 'modulefront')))) {
|
||||
@@ -80,19 +80,19 @@ class APPageBuilder extends Module
|
||||
if (isset($profile_data['friendly_url']) && !empty($profile_data['friendly_url'])) {
|
||||
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoFriendlyUrl.php');
|
||||
$leo_friendly_url = LeoFriendlyUrl::getInstance();
|
||||
|
||||
|
||||
$link = Context::getContext()->link;
|
||||
$idLang = Context::getContext()->language->id;
|
||||
$idShop = null;
|
||||
$relativeProtocol = false;
|
||||
|
||||
|
||||
$url = $link->getBaseLink($idShop, null, $relativeProtocol).$leo_friendly_url->getLangLink($idLang, null, $idShop).$profile_data['friendly_url'].'.html';
|
||||
$leo_friendly_url->canonicalRedirection($url);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function getInstance()
|
||||
{
|
||||
static $_instance;
|
||||
@@ -105,20 +105,20 @@ class APPageBuilder extends Module
|
||||
public function install()
|
||||
{
|
||||
require_once(_PS_MODULE_DIR_.$this->name.'/libs/setup.php');
|
||||
|
||||
|
||||
//DONGND:: build shortcode, create folder for override
|
||||
apPageHelper::createShortCode();
|
||||
|
||||
|
||||
if (!parent::install() || !ApPageSetup::installConfiguration() || !ApPageSetup::createTables() || !ApPageSetup::installModuleTab() || !$this->registerLeoHook()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
# NOT LOAD DATASAMPLE AGAIN
|
||||
Configuration::updateValue('AP_INSTALLED_APPAGEBUILDER', '1');
|
||||
|
||||
|
||||
# REMOVE FILE INDEX.PHP FOR TRANSLATE
|
||||
ApPageSetup::processTranslateTheme();
|
||||
|
||||
|
||||
Configuration::updateValue('APPAGEBUILDER_OVERRIDED', 1);
|
||||
|
||||
return true;
|
||||
@@ -127,21 +127,21 @@ class APPageBuilder extends Module
|
||||
public function uninstall()
|
||||
{
|
||||
require_once(_PS_MODULE_DIR_.$this->name.'/libs/setup.php');
|
||||
|
||||
|
||||
//DONGND:: rollback default file config for tinymce
|
||||
Tools::copy(_PS_MODULE_DIR_.$this->name.'/views/js/shortcode/backup/tinymce.inc.js', _PS_ROOT_DIR_.'/js/admin/tinymce.inc.js');
|
||||
|
||||
if (!parent::uninstall()|| !ApPageSetup::uninstallModuleTab() || !ApPageSetup::deleteTables() || !ApPageSetup::uninstallConfiguration()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//DONGND:: remove overrider folder
|
||||
// $this->uninstallOverrides();
|
||||
Configuration::updateValue('APPAGEBUILDER_OVERRIDED', 0);
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public function hookActionModuleRegisterHookAfter($params)
|
||||
{
|
||||
if (isset($params['hook_name']) && ($params['hook_name'] == 'header' || $params['hook_name']=='displayheader')) {
|
||||
@@ -150,7 +150,7 @@ class APPageBuilder extends Module
|
||||
$id_hook = Hook::getIdByName($hook_name);
|
||||
$id_module = $this->id;
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
|
||||
|
||||
// Get module position in hook
|
||||
$sql = 'SELECT MAX(`position`) AS position
|
||||
FROM `'._DB_PREFIX_.'hook_module`
|
||||
@@ -167,13 +167,13 @@ class APPageBuilder extends Module
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (count($this->errors) > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (Tools::isSubmit('installdemo')) {
|
||||
require_once(_PS_MODULE_DIR_.$this->name.'/libs/setup.php');
|
||||
ApPageSetup::installSample();
|
||||
@@ -242,12 +242,12 @@ class APPageBuilder extends Module
|
||||
$this->errors[] = $this->trans('You do not have permission to configure this.', array(), 'Admin.Notifications.Error');
|
||||
$this->context->smarty->assign('errors', $this->errors);
|
||||
}
|
||||
|
||||
|
||||
$this->postProcess();
|
||||
|
||||
|
||||
$output = '';
|
||||
$this->backup_dir = str_replace('\\', '/', _PS_CACHE_DIR_.'backup/modules/appagebuilder/');
|
||||
|
||||
|
||||
$create_profile_link = $this->context->link->getAdminLink('AdminApPageBuilderProfiles').'&addappagebuilder_profiles';
|
||||
$profile_link = $this->context->link->getAdminLink('AdminApPageBuilderProfiles');
|
||||
$position_link = $this->context->link->getAdminLink('AdminApPageBuilderPositions');
|
||||
@@ -283,7 +283,7 @@ class APPageBuilder extends Module
|
||||
foreach ($field_text as $k => $v) {
|
||||
// validate module
|
||||
unset($k);
|
||||
|
||||
|
||||
$v = str_replace(' ', '_', trim($v));
|
||||
$v = preg_replace('/[^A-Za-z0-9\_]/', '', $v);
|
||||
if ($v && !in_array($v, $field_default)) {
|
||||
@@ -299,14 +299,14 @@ class APPageBuilder extends Module
|
||||
foreach ($field_editor as $k => $v) {
|
||||
// validate module
|
||||
unset($k);
|
||||
|
||||
|
||||
$v = str_replace(' ', '_', trim($v));
|
||||
$v = preg_replace('/[^A-Za-z0-9\_]/', '', $v);
|
||||
if ($v && !in_array($v, $field_text) && !in_array($v, $field_default)) {
|
||||
$field_editor_valid[] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Configuration::updateValue($fe, implode(',', $field_editor_valid));
|
||||
$this->processExtrafield($field_editor_valid, $type, 'text');
|
||||
}
|
||||
@@ -440,7 +440,7 @@ class APPageBuilder extends Module
|
||||
public function processBackup()
|
||||
{
|
||||
$install_folder = $this->backup_dir;
|
||||
|
||||
|
||||
if (!is_dir($install_folder)) {
|
||||
mkdir($install_folder, 0755, true);
|
||||
}
|
||||
@@ -576,7 +576,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sub function of back-up database
|
||||
*/
|
||||
@@ -934,7 +934,7 @@ class APPageBuilder extends Module
|
||||
'title' => $this->l('Save'),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$form_extrafield = array(
|
||||
|
||||
'legend' => array(
|
||||
@@ -1168,7 +1168,7 @@ class APPageBuilder extends Module
|
||||
{
|
||||
$this->context->controller->addCss(apPageHelper::getCssDir().'style.css');
|
||||
$result = array();
|
||||
|
||||
|
||||
foreach ($form_general['input'] as $form) {
|
||||
//$form['name'] = isset($form['name']) ? $form['name'] : '';
|
||||
if (Configuration::hasKey($form['name'])) {
|
||||
@@ -1177,7 +1177,7 @@ class APPageBuilder extends Module
|
||||
$result[$form['name']] = Tools::getValue($form['name'], isset($form['default']) ? $form['default'] : '');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
foreach ($form_extrafield['input'] as $form) {
|
||||
//$form['name'] = isset($form['name']) ? $form['name'] : '';
|
||||
if (Configuration::hasKey($form['name'])) {
|
||||
@@ -1239,7 +1239,7 @@ class APPageBuilder extends Module
|
||||
$assign['apLiveEdit'] .= '" target="_blank"><i class="icon-pencil"></i> <span>Edit</span></a>';
|
||||
$assign['apLiveEditEnd'] = '</div>';
|
||||
}
|
||||
|
||||
|
||||
if ($assign) {
|
||||
foreach ($assign as $key => $ass) {
|
||||
$this->smarty->assign(array($key => $ass));
|
||||
@@ -1315,12 +1315,12 @@ class APPageBuilder extends Module
|
||||
if ($value_by_categories) {
|
||||
$id_categories = isset($params['categorybox']) ? $params['categorybox'] : '';
|
||||
$id_categories = apPageHelper::addonValidInt( $id_categories ); # We validate id_categories in apPageHelper::addonValidInt function . This function is used at any where
|
||||
|
||||
|
||||
if (isset($params['category_type']) && $params['category_type'] == 'default') {
|
||||
$where .= ' AND product_shop.`id_category_default` IN ('.pSQL($id_categories).')';
|
||||
} else {
|
||||
$sql_join .= ' INNER JOIN '._DB_PREFIX_.'category_product cp ON (cp.id_product= p.`id_product` )';
|
||||
|
||||
|
||||
$where .= ' AND cp.`id_category` IN ('.pSQL($id_categories).')';
|
||||
$sql_group = ' GROUP BY p.id_product';
|
||||
}
|
||||
@@ -1384,7 +1384,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
$where .= ' AND p.`id_product` IN ('.((is_array($tab_id_product) && count($tab_id_product)) ? implode(', ', $tab_id_product) : 0).')';
|
||||
}
|
||||
|
||||
|
||||
$sql = 'SELECT p.*, product_shop.*, p.`reference`, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
|
||||
product_attribute_shop.id_product_attribute,
|
||||
product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity,
|
||||
@@ -1402,7 +1402,7 @@ class APPageBuilder extends Module
|
||||
} else {
|
||||
$sql .= ' FROM `'._DB_PREFIX_.'product` p';
|
||||
}
|
||||
|
||||
|
||||
$sql .= ' INNER JOIN '._DB_PREFIX_.'product_shop product_shop ON (product_shop.id_product = p.id_product AND product_shop.id_shop = '.(int)$context->shop->id.')
|
||||
LEFT JOIN '._DB_PREFIX_.'product_attribute_shop product_attribute_shop ON p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop='.(int)$context->shop->id.'
|
||||
'.ProductCore::sqlStock('p', 'product_attribute_shop', false, $context->shop).'
|
||||
@@ -1452,14 +1452,14 @@ class APPageBuilder extends Module
|
||||
)
|
||||
);
|
||||
Configuration::updateValue('shortcode_url_add', $this->context->link->getAdminLink('AdminApPageBuilderShortcode'));
|
||||
|
||||
|
||||
$this->autoRestoreSampleData();
|
||||
}
|
||||
|
||||
public function hookdisplayHeader()
|
||||
{
|
||||
apPageHelper::autoUpdateModule();
|
||||
|
||||
|
||||
if ( Tools::getIsset('leo_support_team') && (int)Tools::getValue('leo_support_team') == 1) {
|
||||
Configuration::updateValue('LEO_SUPPORT_TEAM', '1');
|
||||
die('update');
|
||||
@@ -1467,7 +1467,7 @@ class APPageBuilder extends Module
|
||||
Configuration::updateValue('LEO_SUPPORT_TEAM', '0');
|
||||
die('update');
|
||||
}
|
||||
|
||||
|
||||
if (isset(Context::getContext()->controller->controller_type) && in_array(Context::getContext()->controller->controller_type, array('front', 'modulefront'))) {
|
||||
# WORK AT FRONTEND
|
||||
apPageHelper::loadShortCode(_PS_THEME_DIR_);
|
||||
@@ -1479,12 +1479,12 @@ class APPageBuilder extends Module
|
||||
# FIX 1.7
|
||||
apPageHelper::setGlobalVariable($this->context);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_WAYPOINTS')) {
|
||||
$uri = apPageHelper::getCssDir().'animate.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'waypoints.min.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1501,7 +1501,7 @@ class APPageBuilder extends Module
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
$uri = apPageHelper::getCssDir().'owl.theme.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'owl.carousel.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1509,7 +1509,7 @@ class APPageBuilder extends Module
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_SWIPER')) {
|
||||
$uri = apPageHelper::getCssDir().'swiper.min.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'swiper.min.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1557,12 +1557,12 @@ class APPageBuilder extends Module
|
||||
if ($product_list_image) {
|
||||
$this->context->controller->addJqueryPlugin(array('scrollTo', 'serialScroll'));
|
||||
}
|
||||
|
||||
|
||||
// add js for html5 youtube video
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_HTML5VIDEO')) {
|
||||
$uri = apPageHelper::getCssDir().'mediaelementplayer.min.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'mediaelement-and-player.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1570,7 +1570,7 @@ class APPageBuilder extends Module
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_FULLPAGEJS')) {
|
||||
$uri = apPageHelper::getCssDir().'jquery.fullPage.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'jquery.fullPage.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1578,7 +1578,7 @@ class APPageBuilder extends Module
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_IMAGE360')) {
|
||||
$uri = apPageHelper::getCssDir().'ApImage360.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'ApImage360.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
$this->context->controller->addJqueryUI('ui.slider');
|
||||
@@ -1587,7 +1587,7 @@ class APPageBuilder extends Module
|
||||
if (Configuration::get('APPAGEBUILDER_LOAD_IMAGEHOTPOT')) {
|
||||
$uri = apPageHelper::getCssDir().'ApImageHotspot.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'ApImageHotspot.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -1598,20 +1598,20 @@ class APPageBuilder extends Module
|
||||
|
||||
$uri = apPageHelper::getCssDir().'styles.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
//DONGND:: add unique css file, css of module for all theme, no need override
|
||||
|
||||
//DONGND:: add unique css file, css of module for all theme, no need override
|
||||
$uri = apPageHelper::getCssDir().'unique.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'script.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
if (!$this->product_active) {
|
||||
$this->product_active = ApPageBuilderProductsModel::getActive();
|
||||
}
|
||||
$this->smarty->smarty->assign(array('productClassWidget' => $this->product_active['class']));
|
||||
|
||||
|
||||
$tpl_file = apPageHelper::getConfigDir('theme_profiles') . $this->product_active['plist_key'].'.tpl';
|
||||
|
||||
|
||||
if (is_file($tpl_file)) {
|
||||
$this->smarty->smarty->assign(array('productProfileDefault' => $this->product_active['plist_key']));
|
||||
}
|
||||
@@ -1626,7 +1626,7 @@ class APPageBuilder extends Module
|
||||
'mediumSize' => Image::getSize(ImageType::getFormattedName('medium'))
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
# LEOTEMCP
|
||||
$isRTL = $this->context->language->is_rtl;
|
||||
$leoRTL = $this->context->language->is_rtl;
|
||||
@@ -1640,7 +1640,7 @@ class APPageBuilder extends Module
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($rtl_file) {
|
||||
$leoRTL = false; // to remove class RTL
|
||||
// $this->context->controller->unregisterStylesheet('theme-rtl');
|
||||
@@ -1650,11 +1650,11 @@ class APPageBuilder extends Module
|
||||
}
|
||||
// $id_shop = $this->context->shop->id;
|
||||
// $helper = LeoFrameworkHelper::getInstance();
|
||||
|
||||
|
||||
$this->themeCookieName = $this->getConfigName('PANEL_CONFIG');
|
||||
$panelTool = $this->getConfig('PANELTOOL');
|
||||
$backGroundValue = '';
|
||||
|
||||
|
||||
//DONGND:: get product detail layout
|
||||
$list_productdetail_layout = array();
|
||||
|
||||
@@ -1664,17 +1664,17 @@ class APPageBuilder extends Module
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
$uri = apPageHelper::getCssDir().'paneltool.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'colorpicker/js/colorpicker.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
$uri = apPageHelper::getJsDir().'paneltool.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
$this->context->controller->addJqueryPlugin('cooki-plugin');
|
||||
|
||||
|
||||
$skin = $this->getPanelConfig('default_skin');
|
||||
$layout_mode = $this->getPanelConfig('layout_mode');
|
||||
$enable_fheader = (int)$this->getPanelConfig('enable_fheader');
|
||||
|
||||
|
||||
$backGroundValue = array(
|
||||
'attachment' => array('scroll', 'fixed', 'local', 'initial', 'inherit'),
|
||||
'repeat' => array('repeat', 'repeat-x', 'repeat-y', 'no-repeat', 'initial', 'inherit'),
|
||||
@@ -1720,7 +1720,7 @@ class APPageBuilder extends Module
|
||||
$this->context->controller->addJqueryPlugin('cooki-plugin');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// if ($this->getConfig('ENABLE_CUSTOMFONT')) {
|
||||
// # CUSTOM FONT
|
||||
// $uri = apPageHelper::getCssDir().'fonts-cuttom.css';
|
||||
@@ -1731,7 +1731,7 @@ class APPageBuilder extends Module
|
||||
$uri = apPageHelper::getCssDir().'fonts-cuttom2.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
}
|
||||
|
||||
|
||||
$layout_width_val = '';
|
||||
$layout_width = $this->getConfig('layout_width');
|
||||
if (trim($layout_width) != 'auto' && trim($layout_width) != '') {
|
||||
@@ -1742,7 +1742,7 @@ class APPageBuilder extends Module
|
||||
$layout_width_val .= '<script type="text/javascript">layout_width = '.$layout_width.';</script>';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$load_css_type = $this->getConfig('load_css_type');
|
||||
$css_skin = array();
|
||||
$css_custom = array();
|
||||
@@ -1752,19 +1752,19 @@ class APPageBuilder extends Module
|
||||
$uri = apPageHelper::getCssDir().'non-responsive.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
}
|
||||
|
||||
|
||||
# LOAD SKIN CSS IN MODULE
|
||||
$uri = apPageHelper::getCssDir().'skins/'.$skin.'/skin.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
$uri = apPageHelper::getCssDir().'skins/'.$skin.'/custom-rtl.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
# LOAD CUSTOM CSS
|
||||
if ($this->context->getMobileDevice() != false && !$this->getConfig('enable_responsive')) {
|
||||
$uri = apPageHelper::getCssDir().'mobile.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
}
|
||||
|
||||
|
||||
# LOAD POSITIONS AND PROFILES
|
||||
$this->loadResouceForProfile();
|
||||
|
||||
@@ -1782,7 +1782,7 @@ class APPageBuilder extends Module
|
||||
$css_skin[] = '<link rel="stylesheet" href="'.apPageHelper::getUriFromPath($skinFileUrl).'" type="text/css" media="all" />';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# LOAD SKIN CSS IN TPL
|
||||
$uri = apPageHelper::getCssDir().'skins/'.$skin.'/skin.css';
|
||||
$skinFileUrl = apPageHelper::getFullPathCss($uri);
|
||||
@@ -1794,7 +1794,7 @@ class APPageBuilder extends Module
|
||||
if ($leoRTL && $skinFileUrl !== false) {
|
||||
$css_skin[] = '<link rel="stylesheet" id="leo-dynamic-skin-css-rtl" href="'.apPageHelper::getUriFromPath($skinFileUrl).'" type="text/css" media="all" />';
|
||||
}
|
||||
|
||||
|
||||
# LOAD CUSTOM CSS
|
||||
if ($this->context->getMobileDevice() != false && !$this->getConfig('enable_responsive')) {
|
||||
$uri = apPageHelper::getCssDir().'mobile.css';
|
||||
@@ -1803,10 +1803,10 @@ class APPageBuilder extends Module
|
||||
$css_skin[] = '<link rel="stylesheet" href="'.apPageHelper::getUriFromPath($skinFileUrl).'" type="text/css" media="all" />';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# LOAD POSITIONS AND PROFILES
|
||||
$this->loadResouceForProfile();
|
||||
|
||||
|
||||
# LOAD PATTERN
|
||||
if ($profile = $this->getConfig('c_profile')) {
|
||||
$uri = apPageHelper::getCssDir().'patterns/'.$profile.'.css';
|
||||
@@ -1816,7 +1816,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($this->context->language->is_rtl) {
|
||||
# OVERRIDE CORE, LOAD RTL.CSS FILE AT BOTTOM
|
||||
$this->context->controller->registerStylesheet('theme-rtl', '/assets/css/rtl.css', ['media' => 'all', 'priority' => 9000]);
|
||||
@@ -1926,24 +1926,25 @@ class APPageBuilder extends Module
|
||||
|
||||
$cache_id = $this->getCacheId('apshortcode', $shortcode_key);
|
||||
if ($disable_cache || !$this->isCached($this->templateFile, $cache_id)) {
|
||||
|
||||
$shortcode_html = '';
|
||||
$shortcode_obj = ApPageBuilderShortcodeModel::getShortCode($shortcode_key);
|
||||
if (isset($shortcode_obj['id_appagebuilder']) && $shortcode_obj['id_appagebuilder'] != '' && $shortcode_obj['id_appagebuilder'] != 0) {
|
||||
$shortcode_code = ApPageBuilderShortcodeModel::getAllItems($shortcode_obj['id_appagebuilder'], 1);
|
||||
|
||||
|
||||
if (!empty($shortcode_code)) {
|
||||
if (empty(ApShortCodesBuilder::$shortcode_tags)) {
|
||||
apPageHelper::loadShortCode(_PS_THEME_DIR_);
|
||||
}
|
||||
|
||||
|
||||
apPageHelper::setGlobalVariable($this->context);
|
||||
|
||||
|
||||
// ApShortCodesBuilder::$is_front_office = 1;
|
||||
// ApShortCodesBuilder::$is_gen_html = 1;
|
||||
// ApShortCodesBuilder::$profile_param = array();
|
||||
$ap_helper = new ApShortCodesBuilder();
|
||||
// ApShortCodesBuilder::$hook_name = 'apshortcode';
|
||||
|
||||
|
||||
$shortcode_html = $ap_helper->parse($shortcode_code['apshortcode']);
|
||||
}
|
||||
}
|
||||
@@ -2005,7 +2006,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
return $cover_hook_live.$this->fetch( $this->templateFile, $cache_id);
|
||||
}
|
||||
|
||||
|
||||
public function hookDisplayBanner($params)
|
||||
{
|
||||
return $this->processHook('displayBanner', $params);
|
||||
@@ -2080,23 +2081,23 @@ class APPageBuilder extends Module
|
||||
{
|
||||
return $this->processHook('displayLeftColumnProduct', $params);
|
||||
}
|
||||
|
||||
|
||||
public function hookdisplayProductButtons($params)
|
||||
{
|
||||
return $this->processHook('displayProductButtons', $params);
|
||||
}
|
||||
|
||||
|
||||
public function hookDisplayReassurance($params)
|
||||
{
|
||||
return $this->processHook('displayReassurance', $params);
|
||||
}
|
||||
|
||||
|
||||
public function hookDisplayLeoProfileProduct($params)
|
||||
{
|
||||
apPageHelper::setGlobalVariable($this->context);
|
||||
$html = '';
|
||||
$tpl_file = '';
|
||||
|
||||
|
||||
if (isset($params['ony_global_variable'])) {
|
||||
# {hook h='displayLeoProfileProduct' ony_global_variable=true}
|
||||
return $html;
|
||||
@@ -2148,7 +2149,7 @@ class APPageBuilder extends Module
|
||||
// $this->unregisterExceptions((int)$row['id_hook']);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* FIX BUG 1.7.3.3 : install theme lose hook displayHome, displayLeoProfileProduct
|
||||
* because ajax not run hookActionAdminBefore();
|
||||
@@ -2163,7 +2164,7 @@ class APPageBuilder extends Module
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run only one when install/change Theme_of_Leo
|
||||
*/
|
||||
@@ -2176,8 +2177,8 @@ class APPageBuilder extends Module
|
||||
// Other module call this hook -> duplicate data
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
# FIX : update Prestashop by 1-Click module -> NOT NEED RESTORE DATABASE
|
||||
$ap_version = Configuration::get('AP_CURRENT_VERSION');
|
||||
if ($ap_version != false) {
|
||||
@@ -2189,8 +2190,8 @@ class APPageBuilder extends Module
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
# WHENE INSTALL THEME, INSERT HOOK FROM DATASAMPLE IN THEME
|
||||
$hook_from_theme = false;
|
||||
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
||||
@@ -2200,36 +2201,36 @@ class APPageBuilder extends Module
|
||||
$hook_from_theme = true;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
# INSERT HOOK FROM MODULE_DATASAMPLE
|
||||
if ($hook_from_theme == false) {
|
||||
$this->registerLeoHook();
|
||||
}
|
||||
|
||||
|
||||
# WHEN INSTALL MODULE, NOT NEED RESTORE DATABASE IN THEME
|
||||
$install_module = (int)Configuration::get('AP_INSTALLED_APPAGEBUILDER', 0);
|
||||
if ($install_module) {
|
||||
Configuration::updateValue('AP_INSTALLED_APPAGEBUILDER', '0'); // next : allow restore sample
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
# INSERT DATABASE FROM THEME_DATASAMPLE
|
||||
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
||||
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
||||
$sample = new Datasample();
|
||||
$sample->processImport($this->name);
|
||||
}
|
||||
|
||||
|
||||
# REMOVE FILE INDEX.PHP FOR TRANSLATE
|
||||
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/setup.php')) {
|
||||
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/setup.php');
|
||||
ApPageSetup::processTranslateTheme();
|
||||
}
|
||||
|
||||
|
||||
# REMOVE SUPPORT TEAM FIX LINK CSS, JS
|
||||
Configuration::updateValue('LEO_SUPPORT_TEAM', '0');
|
||||
}
|
||||
|
||||
|
||||
protected function getCacheId($hook_name = null, $shortcode_key = null)
|
||||
{
|
||||
$cache_array = array();
|
||||
@@ -2287,12 +2288,12 @@ class APPageBuilder extends Module
|
||||
if (Tools::getValue('footer') && Tools::getIsset('leopanelchange') && (in_array($hook_name, ApPageSetting::getHook('footer')) || $hook_name == 'pagebuilderConfig|footer')) {
|
||||
$cache_array[] = 'footer_'.Tools::getValue('footer');
|
||||
}
|
||||
|
||||
|
||||
//DONGND:: update cache for shortcode
|
||||
if ($shortcode_key) {
|
||||
$cache_array[] = 'shortcodekey_'.$shortcode_key;
|
||||
}
|
||||
|
||||
|
||||
return implode('|', $cache_array);
|
||||
}
|
||||
|
||||
@@ -2372,12 +2373,12 @@ class APPageBuilder extends Module
|
||||
// $this->_clearCache('appagebuilder.tpl', $this->name);
|
||||
$this->_clearCache($this->templateFile); # CLEAR CACHE ALL HOOKS
|
||||
}
|
||||
|
||||
|
||||
//DONGND:: add clear cache for shortcode
|
||||
public function clearShortCodeCache($shortcode_key)
|
||||
{
|
||||
$cache_id = $this->getCacheId('apshortcode', $shortcode_key);
|
||||
|
||||
|
||||
$this->_clearCache('appagebuilder.tpl', $cache_id);
|
||||
}
|
||||
|
||||
@@ -2457,19 +2458,19 @@ class APPageBuilder extends Module
|
||||
if ($list_positions) {
|
||||
foreach ($list_positions as $item) {
|
||||
$name = $item['position'].$item['position_key'];
|
||||
|
||||
|
||||
$uri = apPageHelper::getCssDir().'positions/'.$name.'.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'positions/'.$name.'.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$uri = apPageHelper::getCssDir().'profiles/'.$profile['profile_key'].'.css';
|
||||
$this->context->controller->registerStylesheet(sha1($uri), $uri, array('media' => 'all', 'priority' => 8000));
|
||||
|
||||
|
||||
$uri = apPageHelper::getJsDir().'profiles/'.$profile['profile_key'].'.js';
|
||||
$this->context->controller->registerJavascript(sha1($uri), $uri, array('position' => 'bottom', 'priority' => 8000));
|
||||
}
|
||||
@@ -2662,7 +2663,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
return $obj;
|
||||
}
|
||||
|
||||
|
||||
public function hookModuleRoutes($params)
|
||||
{
|
||||
$routes = array();
|
||||
@@ -2834,7 +2835,7 @@ class APPageBuilder extends Module
|
||||
$return .= '</div>';
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* alias from apPageHelper::getConfig()
|
||||
*/
|
||||
@@ -2842,7 +2843,7 @@ class APPageBuilder extends Module
|
||||
{
|
||||
return apPageHelper::getConfigName($name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* alias from apPageHelper::getConfig()
|
||||
*/
|
||||
@@ -2850,7 +2851,7 @@ class APPageBuilder extends Module
|
||||
{
|
||||
return apPageHelper::getConfig($name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* get Value of configuration based on actived theme
|
||||
*/
|
||||
@@ -2862,7 +2863,7 @@ class APPageBuilder extends Module
|
||||
}
|
||||
|
||||
$cookie = LeoFrameworkHelper::getCookie();
|
||||
|
||||
|
||||
if (isset($cookie[$this->themeCookieName.'_'.$key])) {
|
||||
return $cookie[$this->themeCookieName.'_'.$key];
|
||||
}
|
||||
@@ -2904,16 +2905,16 @@ class APPageBuilder extends Module
|
||||
}
|
||||
# register hook to show when paging
|
||||
$this->registerHook('pagebuilderConfig');
|
||||
|
||||
|
||||
# register hook to show category and tags of product
|
||||
$this->registerHook('displayProductInformation');
|
||||
|
||||
|
||||
# register hook again to after install/change theme
|
||||
$this->registerHook('actionObjectShopUpdateAfter');
|
||||
|
||||
|
||||
# Multishop create new shop
|
||||
$this->registerHook('actionAdminShopControllerSaveAfter');
|
||||
|
||||
|
||||
$this->registerHook('displayProductButtons');
|
||||
$this->registerHook('displayReassurance');
|
||||
$this->registerHook('displayLeoProfileProduct');
|
||||
@@ -2931,7 +2932,7 @@ class APPageBuilder extends Module
|
||||
$this->registerHook('actionAdminControllerSetMedia');
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Action Create new shop, choose theme then auto restore datasample.
|
||||
*/
|
||||
@@ -2941,7 +2942,7 @@ class APPageBuilder extends Module
|
||||
&& Tools::getIsset('submitAddshop') !== false && Tools::getValue('submitAddshop')
|
||||
&& Tools::getIsset('theme_name') !== false && Tools::getValue('theme_name')) {
|
||||
$shop = $param['return'];
|
||||
|
||||
|
||||
if (file_exists(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php')) {
|
||||
require_once(_PS_MODULE_DIR_.'appagebuilder/libs/LeoDataSample.php');
|
||||
$sample = new Datasample();
|
||||
@@ -2954,16 +2955,16 @@ class APPageBuilder extends Module
|
||||
|
||||
public function hookDisplayBackOfficeCategory($params)
|
||||
{
|
||||
|
||||
|
||||
if (Validate::isLoadedObject($category = new Category((int)Tools::getValue('id_category')))) {
|
||||
// validate module
|
||||
unset($category);
|
||||
|
||||
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
|
||||
|
||||
$category_layouts = array();
|
||||
$id_category = Tools::getValue('id_category');
|
||||
|
||||
|
||||
if (is_dir(apPageHelper::getConfigDir('theme_profiles'))) {
|
||||
//DONGND:: fix get list product list via database
|
||||
$sql = 'SELECT * FROM '._DB_PREFIX_.'appagebuilder_products p
|
||||
@@ -3012,7 +3013,7 @@ class APPageBuilder extends Module
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
$sql = 'SELECT page from `'._DB_PREFIX_.'appagebuilder_page` where id_category = \''.(int)$id_category.'\' AND id_shop = \''.(int)$id_shop.'\'';
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
|
||||
|
||||
|
||||
if ($result) {
|
||||
if ($aplayout == 'default') {
|
||||
Db::getInstance()->execute('DELETE from `'._DB_PREFIX_.'appagebuilder_page` where id_category = \''.(int)$id_category.'\' and id_shop=\''.(int)$id_shop.'\'');
|
||||
@@ -3095,7 +3096,7 @@ class APPageBuilder extends Module
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
$sql = 'SELECT * from `'._DB_PREFIX_.'appagebuilder_page` WHERE id_product = '.(int)$id_product.' AND id_shop = '.(int)$id_shop;
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql);
|
||||
|
||||
|
||||
if ($result) {
|
||||
if ($aplayout == 'default') {
|
||||
Db::getInstance()->execute('DELETE from `'._DB_PREFIX_.'appagebuilder_page` WHERE id_product = '.(int)$id_product.' and id_shop='.(int)$id_shop);
|
||||
@@ -3107,7 +3108,7 @@ class APPageBuilder extends Module
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'appagebuilder_page` (`id_product`,`id_category`,`page`,`id_shop`) VALUES ('.(int)$id_product.',0,\''.pSQL($aplayout).'\','.(int)$id_shop.')');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Configuration::get('APPAGEBUILDER_PRODUCT_TEXTEXTRA') || Configuration::get('APPAGEBUILDER_PRODUCT_EDITOREXTRA')) {
|
||||
//save for extrafield
|
||||
$sql = 'SHOW FIELDS FROM `'._DB_PREFIX_.'appagebuilder_extrapro' .'`';
|
||||
@@ -3151,7 +3152,7 @@ class APPageBuilder extends Module
|
||||
if (Validate::isLoadedObject($product = new Product((int)$params['id_product']))) {
|
||||
// validate module
|
||||
unset($product);
|
||||
|
||||
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
$extrafied = array();
|
||||
$data_fields = array();
|
||||
@@ -3159,7 +3160,7 @@ class APPageBuilder extends Module
|
||||
if (Configuration::get('APPAGEBUILDER_PRODUCT_TEXTEXTRA') || Configuration::get('APPAGEBUILDER_PRODUCT_EDITOREXTRA')) {
|
||||
$sql = 'SHOW FIELDS FROM `'._DB_PREFIX_.'appagebuilder_extrapro' .'`';
|
||||
$result = Db::getInstance()->executeS($sql);
|
||||
|
||||
|
||||
$rows = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'appagebuilder_extrapro' .'` WHERE id_product="'.(int)$params['id_product'].'" AND id_shop="'.(int)$id_shop.'"');
|
||||
|
||||
foreach ($result as $value) {
|
||||
@@ -3185,7 +3186,7 @@ class APPageBuilder extends Module
|
||||
'default_language' => $this->default_language,
|
||||
'current_layout' => Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT page from `'._DB_PREFIX_.'appagebuilder_page` where id_product = \''.(int)$params['id_product'].'\' AND id_shop = \''.(int)$id_shop.'\'')
|
||||
));
|
||||
|
||||
|
||||
return $this->display(__FILE__, 'productExtra.tpl');
|
||||
}
|
||||
}
|
||||
@@ -3227,7 +3228,7 @@ class APPageBuilder extends Module
|
||||
|
||||
return $params;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PERMISSION ACCOUNT demo@demo.com
|
||||
*/
|
||||
@@ -3240,10 +3241,10 @@ class APPageBuilder extends Module
|
||||
$view = Module::getPermissionStatic($this->id, 'view', $employee);
|
||||
return ($configure || $view);
|
||||
}
|
||||
|
||||
|
||||
return Module::getPermissionStatic($this->id, $variable, $employee);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PERMISSION ACCOUNT demo@demo.com
|
||||
*/
|
||||
|
||||
@@ -37,46 +37,46 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
'fields' => array(
|
||||
'shortcode_key' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 255),
|
||||
// 'id_appagebuilder' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
|
||||
|
||||
|
||||
'shortcode_name' => array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 255, 'lang' => true, 'required' => true),
|
||||
|
||||
|
||||
'active' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
public function __construct($id = null, $id_lang = null, $id_shop = null, Context $context = null)
|
||||
{
|
||||
// validate module
|
||||
unset($context);
|
||||
parent::__construct($id, $id_lang, $id_shop);
|
||||
}
|
||||
|
||||
|
||||
public function add($autodate = true, $null_values = false)
|
||||
{
|
||||
$id_shop = apPageHelper::getIDShop();
|
||||
$res = parent::add($autodate, $null_values);
|
||||
|
||||
|
||||
$res &= Db::getInstance()->execute('
|
||||
INSERT INTO `'._DB_PREFIX_.'appagebuilder_shortcode_shop` (`id_shop`, `id_appagebuilder_shortcode`, `active`)
|
||||
VALUES('.(int)$id_shop.', '.(int)$this->id.', '.(int)$this->active.')');
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
public function update($nullValues = false)
|
||||
{
|
||||
$id_shop = apPageHelper::getIDShop();
|
||||
$res = parent::update($nullValues);
|
||||
|
||||
|
||||
$res &= Db::getInstance()->execute('
|
||||
UPDATE `'._DB_PREFIX_.'appagebuilder_shortcode_shop` ps set ps.active = '.(int)$this->active.' WHERE ps.id_shop='.(int)$id_shop.' AND ps.id_appagebuilder_shortcode = '.(int)$this->id);
|
||||
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$result = parent::delete();
|
||||
|
||||
|
||||
if ($result) {
|
||||
if (isset($this->def['multishop']) && $this->def['multishop'] == true) {
|
||||
# DELETE RECORD FORM TABLE _SHOP
|
||||
@@ -90,25 +90,25 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
Db::getInstance()->delete($this->def['table'].'_shop', '`'.$this->def['primary'].'`='.
|
||||
(int)$this->id.' AND id_shop IN ('.pSQL(implode(', ', $id_shop_list)).')');
|
||||
}
|
||||
|
||||
|
||||
//DONGND:: delete appagebuilder related shortcode
|
||||
$id_appagebuilder = ApPageBuilderModel::getIdByIdShortCode((int)$this->id);
|
||||
|
||||
|
||||
if ($id_appagebuilder) {
|
||||
$obj = new ApPageBuilderModel($id_appagebuilder);
|
||||
$obj->delete();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function getShortCodeContent($id_appagebuilder = 0, $is_font = 0, $id_lang = 0)
|
||||
{
|
||||
$context = Context::getContext();
|
||||
$id_shop = (int)$context->shop->id;
|
||||
$where = ' WHERE ps.id_shop='.(int)$id_shop.' AND p.id_appagebuilder='.(int)$id_appagebuilder;
|
||||
|
||||
|
||||
if ($id_lang) {
|
||||
$where .= ' AND pl.id_lang = '.(int)$id_lang;
|
||||
} else {
|
||||
@@ -119,10 +119,10 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
LEFT JOIN `'._DB_PREFIX_.'appagebuilder_shop` ps ON (ps.id_appagebuilder = p.id_appagebuilder)
|
||||
LEFT JOIN `'._DB_PREFIX_.'appagebuilder_lang` pl ON (pl.id_appagebuilder = p.id_appagebuilder)
|
||||
LEFT JOIN `'._DB_PREFIX_.'appagebuilder_shortcode` pp ON (p.id_appagebuilder_shortcode = pp.id_appagebuilder_shortcode)
|
||||
|
||||
|
||||
'.pSql($where).' ORDER BY p.id_appagebuilder';
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||
|
||||
|
||||
// echo '<pre>';
|
||||
// print_r($result);die();
|
||||
$id_langs = Language::getLanguages(true, false, true);
|
||||
@@ -132,7 +132,7 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
unset($result[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$data_lang = array();
|
||||
if ($is_font) {
|
||||
foreach ($result as $row) {
|
||||
@@ -177,10 +177,10 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
}
|
||||
$data_hook[$row['hook_name']] = $row;
|
||||
}
|
||||
|
||||
|
||||
return array('content' => $data_hook, 'dataForm' => ApShortCodesBuilder::$data_form);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get all items - datas of all hooks by shop Id, lang Id for front-end or back-end
|
||||
* @param type $id_profiles
|
||||
@@ -248,24 +248,24 @@ class ApPageBuilderShortcodeModel extends ObjectModel
|
||||
|
||||
return array('content' => $data_hook, 'dataForm' => ApShortCodesBuilder::$data_form);
|
||||
}
|
||||
|
||||
|
||||
public static function getShortCode($shortcode_key)
|
||||
{
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
|
||||
|
||||
$sql = 'SELECT p.*, pp.`id_appagebuilder` FROM `'._DB_PREFIX_.'appagebuilder_shortcode` p
|
||||
INNER JOIN `'._DB_PREFIX_.'appagebuilder_shortcode_shop` ps on(p.`id_appagebuilder_shortcode` = ps.`id_appagebuilder_shortcode`)
|
||||
INNER JOIN `'._DB_PREFIX_.'appagebuilder` pp on(p.`id_appagebuilder_shortcode` = pp.`id_appagebuilder_shortcode`) WHERE
|
||||
p.`shortcode_key` = "'.pSQL($shortcode_key).'" AND ps.`active`= 1 AND ps.`id_shop` = '.(int)$id_shop;
|
||||
|
||||
|
||||
return Db::getInstance()->getRow($sql);
|
||||
}
|
||||
|
||||
|
||||
public static function getListShortCode()
|
||||
{
|
||||
$id_shop = Context::getContext()->shop->id;
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
|
||||
|
||||
$sql = 'SELECT p.*, ps.*, pl.* FROM `'._DB_PREFIX_.'appagebuilder_shortcode` p
|
||||
INNER JOIN `'._DB_PREFIX_.'appagebuilder_shortcode_shop` ps on(p.`id_appagebuilder_shortcode` = ps.`id_appagebuilder_shortcode`)
|
||||
INNER JOIN `'._DB_PREFIX_.'appagebuilder_shortcode_lang` pl on(p.`id_appagebuilder_shortcode` = pl.`id_appagebuilder_shortcode`) WHERE
|
||||
|
||||
@@ -121,11 +121,11 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
public function postProcess()
|
||||
{
|
||||
parent::postProcess();
|
||||
|
||||
|
||||
if (count($this->errors) > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (Tools::getIsset('duplicateappagebuilder_products')) {
|
||||
$id = Tools::getValue('id_appagebuilder_products');
|
||||
$model = new ApPageBuilderProductsModel($id);
|
||||
@@ -147,8 +147,8 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
Tools::displayError('Can not duplicate Profiles');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (Tools::isSubmit('saveELement')) {
|
||||
$filecontent = Tools::getValue('filecontent');
|
||||
$fileName = Tools::getValue('fileName');
|
||||
@@ -442,7 +442,7 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
}
|
||||
return $object;
|
||||
}
|
||||
|
||||
|
||||
public function displayDuplicateLink($token = null, $id = null, $name = null)
|
||||
{
|
||||
$controller = 'AdminApPageBuilderProducts';
|
||||
@@ -450,13 +450,13 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
$html = '<a href="#" title="Duplicate" onclick="confirm_link(\'\', \'Duplicate Product List ID '.$id.'. If you wish to proceed, click "Yes". If not, click "No".\', \'Yes\', \'No\', \'index.php?controller='.$controller.'&id_appagebuilder_products='.$id.'&duplicateappagebuilder_products&token='.$token.'\', \'#\')">
|
||||
<i class="icon-copy"></i> Duplicate
|
||||
</a>';
|
||||
|
||||
|
||||
// validate module
|
||||
unset($name);
|
||||
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PERMISSION ACCOUNT demo@demo.com
|
||||
* OVERRIDE CORE
|
||||
@@ -469,7 +469,7 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
}
|
||||
return parent::access($action, $disable);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* PERMISSION ACCOUNT demo@demo.com
|
||||
* OVERRIDE CORE
|
||||
@@ -477,7 +477,7 @@ class AdminApPageBuilderProductsController extends ModuleAdminControllerCore
|
||||
public function initProcess()
|
||||
{
|
||||
parent::initProcess();
|
||||
|
||||
|
||||
if (count($this->errors) <= 0) {
|
||||
if( Tools::isSubmit('duplicate'.$this->table) ) {
|
||||
if ($this->id_object) {
|
||||
|
||||
@@ -112,6 +112,11 @@ class AdminApPageBuilderProfilesController extends ModuleAdminControllerCore
|
||||
|
||||
public function initPageHeaderToolbar()
|
||||
{
|
||||
$this->context->controller->addJs(__PS_BASE_URI__.'js/jquery/jquery-3.5.1.min.js');
|
||||
// $this->context->controller->addJquery();
|
||||
$this->context->controller->addJqueryUI('ui.sortable'); // FILE FORM.js required this
|
||||
$this->context->controller->addJqueryUI('ui.draggable'); // FILE FORM.js required this
|
||||
|
||||
$this->context->controller->addJs(apPageHelper::getJsAdminDir().'admin/form.js');
|
||||
|
||||
$this->page_header_toolbar_btn['SaveAndStay'] = array(
|
||||
|
||||
@@ -35,17 +35,17 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
public $module_path;
|
||||
public $tpl_path;
|
||||
public $theme_dir;
|
||||
|
||||
|
||||
/**
|
||||
* @var Array $overrideHooks
|
||||
*/
|
||||
protected $themeName;
|
||||
|
||||
|
||||
/**
|
||||
* @var Array $overrideHooks
|
||||
*/
|
||||
protected $themePath = '';
|
||||
|
||||
|
||||
/**
|
||||
* save config
|
||||
*/
|
||||
@@ -70,7 +70,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
// $this->module_path_resource = $this->module_path.'views/';
|
||||
$this->themePath = _PS_ALL_THEMES_DIR_.$this->themeName.'/';
|
||||
}
|
||||
|
||||
|
||||
public function initPageHeaderToolbar()
|
||||
{
|
||||
$this->context->controller->addJquery();
|
||||
@@ -78,17 +78,17 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$this->context->controller->addJqueryUI('ui.draggable'); // FILE FORM.js required this
|
||||
$this->context->controller->addJs(apPageHelper::getJsAdminDir().'admin/form.js');
|
||||
$this->context->controller->addJs(apPageHelper::getJsAdminDir().'admin/home.js');
|
||||
|
||||
|
||||
Context::getContext()->controller->addJqueryPlugin('colorpicker');
|
||||
|
||||
|
||||
Media::addJsDef(array(
|
||||
'ap_controller' => 'AdminApPageBuilderThemeConfigurationController',
|
||||
));
|
||||
|
||||
|
||||
$this->context->controller->addCss(__PS_BASE_URI__.str_replace('//', '/', 'modules/appagebuilder').'/css/admin/style_AdminApPageBuilderThemeConfiguration.css', 'all');
|
||||
parent::initPageHeaderToolbar();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* OVERRIDE ROOT\classes\controller\AdminController.php
|
||||
* Assign smarty variables for all default views, list and form, then call other init functions
|
||||
@@ -104,7 +104,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$this->initToolbar();
|
||||
$this->initTabModuleList();
|
||||
$this->initPageHeaderToolbar();
|
||||
|
||||
|
||||
$this->content .= $this->renderForm();
|
||||
// FIXME: Sorry. I'm not very proud of this, but no choice... Please wait sf refactoring to solve this.
|
||||
if (get_class($this) != 'AdminCarriersController') {
|
||||
@@ -147,10 +147,10 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'label' => $this->l('Disabled'),
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$tskins = LeoFrameworkHelper::getSkins($this->themeName);
|
||||
// $directions = LeoFrameworkHelper::getLayoutDirections($this->themeName);
|
||||
|
||||
|
||||
$this->lang = true;
|
||||
$skins = array();
|
||||
$skins[] = array('name' => $this->l('Default'), 'id' => 'default');
|
||||
@@ -158,10 +158,10 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
|
||||
$this->initToolbar();
|
||||
$this->context->controller->addJqueryUI('ui.sortable');
|
||||
|
||||
|
||||
$sample = new Datasample();
|
||||
$moduleList = $sample->getModuleList();
|
||||
|
||||
|
||||
$fields_form = array(
|
||||
// 'legend' => array(
|
||||
// 'title' => $this->l('Ap Theme Configuration'),
|
||||
@@ -398,7 +398,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'desc' => $this->l('How many column display in grid mode of product list.'),
|
||||
'form_group_class' => 'aprow_pages',
|
||||
),
|
||||
|
||||
|
||||
array(
|
||||
'type' => 'select',
|
||||
'label' => $this->l('Product Detail Tab Type'),
|
||||
@@ -1133,10 +1133,10 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'title' => $this->l('Save'),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
if (version_compare(Configuration::get('PS_VERSION_DB'), '1.7.3.0', '>=')) {
|
||||
$fields_form['input']['config']['values']['aprow_rtl'] = $this->l('Righ to Left');
|
||||
|
||||
|
||||
$fields_form['input'][] =
|
||||
array(
|
||||
'type' => 'html',
|
||||
@@ -1144,7 +1144,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'html_content' => '<button class="button btn btn-danger" name="submit_rtl_prestashop" id="submit_rtl_prestashop" type="submit">1. Generate RTL stylesheet</button>',
|
||||
'form_group_class' => 'aprow_rtl',
|
||||
);
|
||||
|
||||
|
||||
$fields_form['input'][] =
|
||||
array(
|
||||
'type' => 'html',
|
||||
@@ -1152,7 +1152,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'html_content' => '<button class="button btn btn-success" name="submit_rtl_leo" id="submit_rtl_leo" type="submit">2. Use class RTL of theme</button>',
|
||||
'form_group_class' => 'aprow_rtl',
|
||||
);
|
||||
|
||||
|
||||
$fields_form['input'][] =
|
||||
array(
|
||||
'type' => 'html',
|
||||
@@ -1162,7 +1162,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
'form_group_class' => 'aprow_rtl',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
$theme_customizations = LeoFrameworkHelper::getLayoutSettingByTheme($this->themeName);
|
||||
if (isset($theme_customizations['layout'])) {
|
||||
foreach ($theme_customizations['layout'] as $key => $value) {
|
||||
@@ -1182,10 +1182,10 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
array_push($fields_form['input'], $o);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->fields_form = $fields_form;
|
||||
$this->tpl_form_vars['backup_dir'] = $sample->backup_dir;
|
||||
|
||||
|
||||
if ($this->submitSaveSetting && Tools::isSubmit('submitAddconfiguration')) {
|
||||
# SAVING CONFIGURATION
|
||||
$this->saveThemeConfigs();
|
||||
@@ -1193,7 +1193,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
}
|
||||
return parent::renderForm();
|
||||
}
|
||||
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (count($this->errors) > 0) {
|
||||
@@ -1233,7 +1233,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$this->submitSaveSetting = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function generateRTL()
|
||||
{
|
||||
$theme_name = apPageHelper::getThemeName();
|
||||
@@ -1242,7 +1242,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
->setRegenerate(true)
|
||||
->process();
|
||||
}
|
||||
|
||||
|
||||
public function removeRTL()
|
||||
{
|
||||
$directory = _PS_ALL_THEMES_DIR_._THEME_NAME_;
|
||||
@@ -1258,11 +1258,11 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
unlink($directory . DIRECTORY_SEPARATOR . $file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function saveThemeConfigsBefore()
|
||||
{
|
||||
//$helper = LeoFrameworkHelper::getInstance();
|
||||
|
||||
|
||||
// SET COOKIE AGAIN
|
||||
$theme_cookie_name = $this->getConfigName('PANEL_CONFIG');
|
||||
$arrayConfig = array('default_skin', 'layout_mode', 'header_style', 'enable_fheader', 'sidebarmenu');
|
||||
@@ -1271,7 +1271,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
unset($_COOKIE[$theme_cookie_name.'_'.$value]);
|
||||
setcookie($theme_cookie_name.'_'.$value, '', 0, '/');
|
||||
}
|
||||
|
||||
|
||||
# WRITE LOAD GOOGLE FONT
|
||||
if (apPageHelper::getPostConfig('enable_loadfont') == 1) {
|
||||
$content_font = '';
|
||||
@@ -1315,7 +1315,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$content_font .= $this->renderCSSFont('span');
|
||||
LeoFrameworkHelper::writeToCache($this->themePath.apPageHelper::getCssDir(), 'fonts-cuttom2', $content_font, 'css');
|
||||
}
|
||||
|
||||
|
||||
# SAVING GOOGLE FONT
|
||||
$gfont_items = Tools::getValue('gfont_items');
|
||||
if ($gfont_items) {
|
||||
@@ -1324,7 +1324,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
} else {
|
||||
Configuration::updateValue($this->getConfigName('google_font'), '');
|
||||
}
|
||||
|
||||
|
||||
# SAVING SUBSET
|
||||
$gfonts_subsets = Tools::getValue('gfonts_subsets');
|
||||
if ($gfonts_subsets) {
|
||||
@@ -1334,7 +1334,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
Configuration::updateValue($this->getConfigName('google_subset'), '');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* alias from apPageHelper::getConfigName()
|
||||
*/
|
||||
@@ -1342,7 +1342,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
{
|
||||
return apPageHelper::getConfigName($name);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update Theme Configurations
|
||||
*/
|
||||
@@ -1352,7 +1352,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$content_setting = '';
|
||||
//$content_font = '';
|
||||
//$helper = LeoFrameworkHelper::getInstance();
|
||||
|
||||
|
||||
foreach ($this->fields_form['input'] as $input) {
|
||||
if (isset($input['lang'])) {
|
||||
$data = array();
|
||||
@@ -1381,7 +1381,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$value = Tools::getValue($input['name'], Configuration::get($input['name']));
|
||||
$input['default'] = isset($input['default']) ? $input['default'] : '';
|
||||
$dataSave = $value ? $value : $input['default'];
|
||||
|
||||
|
||||
if (isset($input['save']) && $input['save']== false) {
|
||||
// NOT SAVE
|
||||
} else if ($input['type'] == 'font_h') {
|
||||
@@ -1438,14 +1438,14 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$folder = $this->themePath.'templates/layouts/';
|
||||
if (!is_dir($folder)) {
|
||||
mkdir($folder, 0755, true);
|
||||
}
|
||||
LeoFrameworkHelper::writeToCache($this->themePath.'templates/layouts/', 'setting', $content_setting, 'tpl');
|
||||
}
|
||||
|
||||
|
||||
public function renderGoogleLinkFont($gfont_name, $attribute)
|
||||
{
|
||||
$output = '';
|
||||
@@ -1455,15 +1455,15 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$str_att .= ','.$value;
|
||||
}
|
||||
$str_att = trim($str_att, ',');
|
||||
|
||||
|
||||
$output = $gfont_name . ':' . $str_att;
|
||||
} else {
|
||||
$output = $gfont_name;
|
||||
}
|
||||
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
public function renderCSSFont($tag)
|
||||
{
|
||||
$html = '';
|
||||
@@ -1482,21 +1482,21 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
if (apPageHelper::getPostConfig($tag . '_font_style')) {
|
||||
$html .= ' font-style:' . apPageHelper::getPostConfig($tag . '_font_style') . ';';
|
||||
}
|
||||
|
||||
|
||||
$output = '';
|
||||
if (!empty($html)) {
|
||||
$output = $tag . ' {'.$html.' }'."\n";
|
||||
}
|
||||
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
public function getFieldsValue($obj)
|
||||
{
|
||||
unset($obj);
|
||||
$languages = Language::getLanguages(false);
|
||||
$fields_values = array();
|
||||
|
||||
|
||||
foreach ($this->fields_form as $f) {
|
||||
foreach ($f['form']['input'] as $input) {
|
||||
if (isset($input['lang'])) {
|
||||
@@ -1525,7 +1525,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
}
|
||||
// Font setup : list fonts in google
|
||||
$fields_values['gfont_api'] = Tools::jsonEncode(GoogleFont::getAllGoogleFonts());
|
||||
|
||||
|
||||
// Font setup : list fonts in database
|
||||
$google_font_cfg = Configuration::get($this->getConfigName('google_font'));
|
||||
$fields_values['gfont_list_ori'] = '[]';
|
||||
@@ -1537,7 +1537,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$fields_values['gfont_list'] = $google_fonts;
|
||||
$fields_values['gfont_list_ori'] = Tools::jsonEncode($google_fonts);
|
||||
}
|
||||
|
||||
|
||||
// Font setup : list subset in database
|
||||
$google_subset_cfg = Configuration::get($this->getConfigName('google_subset'));
|
||||
$fields_values['gfont_subset'] = '[]';
|
||||
@@ -1545,15 +1545,15 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
$google_subset = explode(',', $google_subset_cfg);
|
||||
$fields_values['gfont_subset'] = Tools::jsonEncode($google_subset);
|
||||
}
|
||||
|
||||
|
||||
return $fields_values;
|
||||
}
|
||||
|
||||
|
||||
public function getGoogleFont()
|
||||
{
|
||||
return array_keys(GoogleFont::getAllGoogleFonts());
|
||||
}
|
||||
|
||||
|
||||
public function getFontWeight($default = false)
|
||||
{
|
||||
if ($default == 'default') {
|
||||
@@ -1573,7 +1573,7 @@ class AdminApPageBuilderThemeConfigurationController extends ModuleAdminControll
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function getFontStyle($default = false)
|
||||
{
|
||||
if ($default == 'default') {
|
||||
|
||||
@@ -19,6 +19,8 @@ function updateListIdFullSlider() {
|
||||
$("#total_slider").val(listId);
|
||||
}
|
||||
$(document).ready(function() {
|
||||
console.log("ready!");
|
||||
|
||||
$("#modal_form").draggable({
|
||||
handle: ".modal-header"
|
||||
});
|
||||
|
||||
@@ -72,7 +72,7 @@ class CmsController extends CmsControllerCore
|
||||
$this->setTemplate('cms/category');
|
||||
}
|
||||
FrontController::initContent();
|
||||
|
||||
|
||||
// validate module
|
||||
unset($id_module);
|
||||
unset($array_return);
|
||||
|
||||
@@ -19,6 +19,8 @@ function updateListIdFullSlider() {
|
||||
$("#total_slider").val(listId);
|
||||
}
|
||||
$(document).ready(function() {
|
||||
console.log("ready");
|
||||
|
||||
$("#modal_form").draggable({
|
||||
handle: ".modal-header"
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Website: apollotheme.com - prestashop template provider
|
||||
* @author Apollotheme <apollotheme@gmail.com>
|
||||
* @copyright 2007-2018 Apollotheme
|
||||
* @description:
|
||||
* @description:
|
||||
*/
|
||||
imgId = null; // using for store object image select a source in function select image
|
||||
function log(message) {
|
||||
@@ -70,25 +70,25 @@ function htmlentitiesDecode(str) {
|
||||
$('.' + key).data('form', dataObj[key]);
|
||||
//DONGND:: install data animation for column and group
|
||||
if (typeof dataObj[key].animation != 'undefined')
|
||||
{
|
||||
{
|
||||
if ($('.' + key).find('.animation-button').first().length)
|
||||
{
|
||||
{
|
||||
var animation_bt = $('.' + key).find('.animation-button').first();
|
||||
var animation_type = dataObj[key].animation ? dataObj[key].animation : 'none';
|
||||
var animation_delay = dataObj[key].animation_delay ? dataObj[key].animation_delay : 1;
|
||||
var animation_duration = dataObj[key].animation_duration ? dataObj[key].animation_duration : 1;
|
||||
var animation_iteration_count = dataObj[key].animation_iteration_count ? dataObj[key].animation_iteration_count : 1;
|
||||
var animation_infinite = dataObj[key].animation_infinite ? dataObj[key].animation_infinite : 0;
|
||||
|
||||
var animation_infinite = dataObj[key].animation_infinite ? dataObj[key].animation_infinite : 0;
|
||||
|
||||
$globalthis.assignConfigAnimation(animation_bt, animation_type, animation_delay, animation_duration, animation_iteration_count, animation_infinite);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
//DONGND:: fix can't click tab 1 when create new widget tab
|
||||
$('.ApTabs:not(#default_ApTabs)').each(function(){
|
||||
var activeTabId = $(this).data('form').active_tab;
|
||||
|
||||
//DONGND:: fix can't click tab 1 when create new widget tab
|
||||
$('.ApTabs:not(#default_ApTabs)').each(function(){
|
||||
var activeTabId = $(this).data('form').active_tab;
|
||||
if (activeTabId != '' && parseInt(activeTabId))
|
||||
{
|
||||
$(this).find('.nav-tabs a').eq(parseInt(activeTabId)-1).tab('show');
|
||||
@@ -149,7 +149,7 @@ function htmlentitiesDecode(str) {
|
||||
handle: ".waction-drag"
|
||||
});
|
||||
// $( ".widget-row" ).addClass( $globalthis.classWidget )
|
||||
// .find( ".waction-drag" ).addClass( $globalthis.classWidgetHeader );
|
||||
// .find( ".waction-drag" ).addClass( $globalthis.classWidgetHeader );
|
||||
|
||||
};
|
||||
this.downloadFile = function (filename, result) {
|
||||
@@ -185,7 +185,7 @@ function htmlentitiesDecode(str) {
|
||||
cls = cls.replace("col-sp-12", "col-sp-" + realValue);
|
||||
$(column).attr("class", cls);
|
||||
objColumn = {form_id: "form_" + $globalthis.getRandomNumber()};
|
||||
|
||||
|
||||
objColumn.sm = widthCol;
|
||||
objColumn.xs = widthCol;
|
||||
objColumn.sp = widthCol;
|
||||
@@ -317,7 +317,7 @@ function htmlentitiesDecode(str) {
|
||||
btnElement = $(this);
|
||||
$('.btn-fwidth').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
//reset
|
||||
//reset
|
||||
if ($(this).hasClass('width-default')) {
|
||||
$globalthis.windowWidth = $(window).width();
|
||||
$('#home_wrapper').attr('class', 'default');
|
||||
@@ -506,10 +506,9 @@ function htmlentitiesDecode(str) {
|
||||
|
||||
//edit group
|
||||
$(document).on("click", ".btn-edit", function () {
|
||||
if ($(this).data('type' == undefined) && $(this).data('type') == undefined) {
|
||||
var type = $(this).closest('.widget-row').data("type");
|
||||
} else
|
||||
var type = $(this).data("type");
|
||||
var type = $(this).data('type') !== undefined
|
||||
? $(this).data('type')
|
||||
: $(this).closest('.widget-row').data('type');
|
||||
|
||||
if (type.indexOf("apSub") == 0) {
|
||||
if (type == "apSubAccordions") {
|
||||
@@ -569,7 +568,7 @@ function htmlentitiesDecode(str) {
|
||||
$('#modal_form .modal-footer').show();
|
||||
$('#modal_form .modal-body').html(data);
|
||||
$('#modal_form').removeClass('modal-new').addClass('modal-edit');
|
||||
|
||||
|
||||
// FIX BUG : ApCategory khong save duoc icon cu, khi thay icon cho 1 category khac
|
||||
// resetSelectedImage();
|
||||
|
||||
@@ -582,7 +581,7 @@ function htmlentitiesDecode(str) {
|
||||
initFullSlider("edit");
|
||||
}
|
||||
hideFormLevel2();
|
||||
|
||||
|
||||
$globalthis.setFormAction();
|
||||
},
|
||||
error: function (XMLHttpRequest, textStatus, errorThrown) {
|
||||
@@ -591,7 +590,7 @@ function htmlentitiesDecode(str) {
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$(document).on("click", ".btn-new-widget", function () {
|
||||
var url = $globalthis.ajaxHomeUrl + '&ajax=1&action=renderList';
|
||||
if ($(this).hasClass('tabcontent-action'))
|
||||
@@ -917,7 +916,7 @@ function htmlentitiesDecode(str) {
|
||||
$(this).closest('.translatable-field').find('.img-thumbnail').hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$(document).on("click", ".image-manager .img-link", function (e) {
|
||||
e.stopPropagation();
|
||||
var img = $(this).find("img");
|
||||
@@ -927,7 +926,7 @@ function htmlentitiesDecode(str) {
|
||||
|
||||
var div = $(imgId).closest("div");
|
||||
imgDest = $(div).find("img");
|
||||
|
||||
|
||||
var widget = $(img).attr("data-widget");
|
||||
if(widget == "ApImage360")
|
||||
{
|
||||
@@ -990,17 +989,17 @@ function htmlentitiesDecode(str) {
|
||||
$(document).on("click", ".animation-button", function (e) {
|
||||
var animation_wrapper = $(this).siblings('.animation-wrapper');
|
||||
if (!$(this).hasClass('active'))
|
||||
{
|
||||
{
|
||||
$(".animation-button.active").siblings('.animation-wrapper').hide();
|
||||
$(".animation-button.active").removeClass('active');
|
||||
//DONGND:: load config by data
|
||||
//DONGND:: load config by data
|
||||
$(this).addClass('active');
|
||||
var animation_type = $(this).data('animation-type');
|
||||
var animation_delay = $(this).data('animation-delay');
|
||||
var animation_delay = $(this).data('animation-delay');
|
||||
var animation_duration = $(this).data('animation-duration');
|
||||
var animation_iteration_count = $(this).data('animation-iteration-count');
|
||||
var animation_infinite = $(this).data('animation-infinite');
|
||||
|
||||
|
||||
if (typeof animation_delay != 'undefined')
|
||||
{
|
||||
animation_wrapper.find('.animation_delay').val(animation_delay);
|
||||
@@ -1009,7 +1008,7 @@ function htmlentitiesDecode(str) {
|
||||
{
|
||||
animation_wrapper.find('.animation_delay').val(1);
|
||||
}
|
||||
|
||||
|
||||
if (typeof animation_duration != 'undefined')
|
||||
{
|
||||
animation_wrapper.find('.animation_duration').val(animation_duration);
|
||||
@@ -1018,7 +1017,7 @@ function htmlentitiesDecode(str) {
|
||||
{
|
||||
animation_wrapper.find('.animation_duration').val(1);
|
||||
}
|
||||
|
||||
|
||||
if (typeof animation_iteration_count != 'undefined')
|
||||
{
|
||||
animation_wrapper.find('.animation_iteration_count').val(animation_iteration_count);
|
||||
@@ -1027,7 +1026,7 @@ function htmlentitiesDecode(str) {
|
||||
{
|
||||
animation_wrapper.find('.animation_iteration_count').val(1);
|
||||
}
|
||||
|
||||
|
||||
if (animation_infinite == 1)
|
||||
{
|
||||
animation_wrapper.find('.animation_infinite').attr( 'checked', 'checked' );
|
||||
@@ -1036,24 +1035,24 @@ function htmlentitiesDecode(str) {
|
||||
{
|
||||
animation_wrapper.removeAttr('checked');
|
||||
}
|
||||
//DONGND:: change offset to right with column small
|
||||
//DONGND:: change offset to right with column small
|
||||
if ($(window).width()-$(this).offset().left < animation_wrapper.width())
|
||||
{
|
||||
animation_wrapper.addClass('offset-right');
|
||||
}
|
||||
animation_wrapper.show();
|
||||
|
||||
|
||||
if (typeof animation_type != 'undefined')
|
||||
{
|
||||
animation_wrapper.find('.animation_select').val(animation_type).trigger('change');
|
||||
animation_wrapper.find('.animation_select').val(animation_type).trigger('change');
|
||||
}
|
||||
else
|
||||
{
|
||||
animation_wrapper.find('.animation_select').val('none').trigger('change');
|
||||
animation_wrapper.find('.animation_select').val('none').trigger('change');
|
||||
}
|
||||
|
||||
|
||||
// animation_wrapper.find('.animate-it').trigger('click');
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1062,9 +1061,9 @@ function htmlentitiesDecode(str) {
|
||||
animation_wrapper.removeClass('offset-right');
|
||||
animation_wrapper.find('.animationSandbox').removeClass().removeAttr('style').addClass('animationSandbox');
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: save config of animation to data form of column/group
|
||||
$(document).on("click", ".btn-save-animation", function (e) {
|
||||
var obj_parent = $(this).parents('.animation-wrapper');
|
||||
@@ -1074,17 +1073,17 @@ function htmlentitiesDecode(str) {
|
||||
var animation_duration = obj_parent.find('.animation_duration').val();
|
||||
var animation_iteration_count = obj_parent.find('.animation_iteration_count').val();
|
||||
var animation_infinite = obj_parent.find('.animation_infinite').is(':checked')? 1 : 0;
|
||||
|
||||
|
||||
$globalthis.assignConfigAnimation(animation_bt, animation_type, animation_delay, animation_duration, animation_iteration_count, animation_infinite);
|
||||
|
||||
|
||||
//DONGND:: update data form for group/column
|
||||
if (obj_parent.hasClass('column-animation-wrapper'))
|
||||
{
|
||||
{
|
||||
var main_obj = obj_parent.parents('.column-row');
|
||||
|
||||
|
||||
}
|
||||
if (obj_parent.hasClass('group-animation-wrapper'))
|
||||
{
|
||||
{
|
||||
var main_obj = obj_parent.parents('.group-row');
|
||||
}
|
||||
if (typeof main_obj != 'undefined')
|
||||
@@ -1095,10 +1094,10 @@ function htmlentitiesDecode(str) {
|
||||
main_obj.data('form').animation_iteration_count = animation_iteration_count;
|
||||
main_obj.data('form').animation_infinite = animation_infinite;
|
||||
}
|
||||
|
||||
|
||||
animation_bt.trigger('click');
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: hide section select animation for column and group when click out
|
||||
$(document).on("click", function (e) {
|
||||
if ($('.animation-button.active').length)
|
||||
@@ -1106,16 +1105,16 @@ function htmlentitiesDecode(str) {
|
||||
e.stopPropagation();
|
||||
var container = $('.animation-wrapper');
|
||||
var container2 = $('.animation-button');
|
||||
|
||||
if (container.length && container.has(e.target).length === 0 && container2.has(e.target).length === 0 && !$(e.target).hasClass('animation-button') && !$(e.target).hasClass('animation-wrapper')) {
|
||||
// container.hide();
|
||||
|
||||
if (container.length && container.has(e.target).length === 0 && container2.has(e.target).length === 0 && !$(e.target).hasClass('animation-button') && !$(e.target).hasClass('animation-wrapper')) {
|
||||
// container.hide();
|
||||
// $('.animation-button.active').siblings('.animation-wrapper').find('.animationSandbox').removeClass().removeAttr('style').addClass('animationSandbox');
|
||||
// $('.animation-button.active').removeClass('active');
|
||||
// $('.animation-button.active').removeClass('active');
|
||||
$('.animation-button.active').trigger('click');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: active button for section select animation for column and group
|
||||
$(document).on("change", '.animation_select', function (e) {
|
||||
var wrapper_obj = $(this).parents('.animation-wrapper');
|
||||
@@ -1132,24 +1131,24 @@ function htmlentitiesDecode(str) {
|
||||
else
|
||||
{
|
||||
var iteration_number = wrapper_obj.find('.animation_iteration_count').val();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wrapper_obj.find('.animationSandbox').removeClass().removeAttr('style').attr('style','animation-duration: '+duration_time+'s; animation-delay: '+delay_time+'s; animation-iteration-count: '+iteration_number).addClass($(this).val() + ' animated animationSandbox').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
|
||||
$(this).removeClass().removeAttr('style').addClass('animationSandbox');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: run demo with current config
|
||||
$(document).on("click", '.animate-it', function (e) {
|
||||
var wrapper_obj = $(this).parents('.animation-wrapper');
|
||||
wrapper_obj.find('.animation_select').trigger('change');
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: copy to clipboard
|
||||
$(document).on("click", '.bt_copy_clipboard', function (e) {
|
||||
$(document).on("click", '.bt_copy_clipboard', function (e) {
|
||||
var text_copy = '';
|
||||
|
||||
|
||||
if ($(this).hasClass('shortcode_key'))
|
||||
{
|
||||
text_copy = $('#shortcode_key').val();
|
||||
@@ -1162,22 +1161,22 @@ function htmlentitiesDecode(str) {
|
||||
{
|
||||
text_copy = $('#shortcode_embedded_code').val();
|
||||
};
|
||||
|
||||
|
||||
if (text_copy != '')
|
||||
{
|
||||
var $temp = $("<input>");
|
||||
$("body").append($temp);
|
||||
$("body").append($temp);
|
||||
$temp.val(text_copy).select();
|
||||
document.execCommand("copy");
|
||||
showSuccessMessage('Copy successful');
|
||||
$temp.remove();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
//DONGND:: assign config to data form column/group
|
||||
this.assignConfigAnimation = function (obj_bt, data_type, data_delay, data_duration, data_iteration, data_infinite) {
|
||||
this.assignConfigAnimation = function (obj_bt, data_type, data_delay, data_duration, data_iteration, data_infinite) {
|
||||
obj_bt.data('animation-type', data_type);
|
||||
obj_bt.data('animation-delay', data_delay);
|
||||
obj_bt.data('animation-duration', data_duration);
|
||||
@@ -1185,8 +1184,8 @@ function htmlentitiesDecode(str) {
|
||||
obj_bt.data('animation-infinite', data_infinite);
|
||||
var txt_default = obj_bt.find('.animation-status').data('text-default');
|
||||
if (data_type != 'none')
|
||||
{
|
||||
obj_bt.addClass('btn-success');
|
||||
{
|
||||
obj_bt.addClass('btn-success');
|
||||
var txt_infinite = obj_bt.find('.animation-status').data('text-infinite');
|
||||
obj_bt.find('.animation-status').text(data_type + (data_infinite == 1 ? ' ('+txt_infinite+')' : ''));
|
||||
}
|
||||
@@ -1344,46 +1343,46 @@ function htmlentitiesDecode(str) {
|
||||
};
|
||||
// AJAX LOAD FORM, LOAD WIDGET
|
||||
this.setFormAction = function () {
|
||||
var $globalthis = this;
|
||||
|
||||
//DONGND:: slick custom enable/disable
|
||||
$('#slick_custom_status').change(function(){
|
||||
var $globalthis = this;
|
||||
|
||||
//DONGND:: slick custom enable/disable
|
||||
$('#slick_custom_status').change(function(){
|
||||
if($(this).val() == 1)
|
||||
{
|
||||
{
|
||||
$('#slick_custom').parents('.form-group').show();
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$('#slick_custom').parents('.form-group').hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
//DONGND:: slick center mode enable/disable
|
||||
$('#slick_centermode').change(function(){
|
||||
$('#slick_centermode').change(function(){
|
||||
if($(this).val() == 1)
|
||||
{
|
||||
{
|
||||
$('#slick_centerpadding').parents('.form-group').show();
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
$('#slick_centerpadding').parents('.form-group').hide();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('.form-action').change(function () {
|
||||
var elementName = $(this).attr('name');
|
||||
$('.' + elementName + '_sub').hide();
|
||||
$('.' + elementName + '-' + $(this).val()).show();
|
||||
|
||||
|
||||
//DONGND:: special fields of slick carousel
|
||||
if ($(this).val() == 'slickcarousel')
|
||||
{
|
||||
{
|
||||
$('#slick_custom_status').trigger('change');
|
||||
$('#slick_centermode').trigger('change');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// Show tool tip, hint of label
|
||||
$("#modal_form .label-tooltip").tooltip();
|
||||
|
||||
@@ -1541,7 +1540,7 @@ function htmlentitiesDecode(str) {
|
||||
if ($(".select-class").length) {
|
||||
$(".select-class").click(function () {
|
||||
if ($(this).is(':checked')) {
|
||||
|
||||
|
||||
$('.select-class').each(function() {
|
||||
// REMOVE ALL CHECKBOX VALUE IN TEXT
|
||||
var classChk = $(this).data("value");
|
||||
@@ -1565,9 +1564,9 @@ function htmlentitiesDecode(str) {
|
||||
$(elementText).val(classChk);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(".chk-row").click(function () {
|
||||
var classChk = $(this).data("value");
|
||||
var elementText = $(this).closest('.well').find('.element_class').first();
|
||||
@@ -1749,7 +1748,7 @@ function htmlentitiesDecode(str) {
|
||||
// Reinit
|
||||
var container = (currentTab === "widget" ? $containerWidget : $containerModule);
|
||||
|
||||
// Priority is action search, in the case text search is not empty
|
||||
// Priority is action search, in the case text search is not empty
|
||||
// will search and reset sub category is Show all
|
||||
if (filterValue !== "*") {
|
||||
$(".for-" + currentTab + " .btn").removeClass("is-checked");
|
||||
@@ -1837,14 +1836,14 @@ function htmlentitiesDecode(str) {
|
||||
contentHtml = "";
|
||||
|
||||
widgetType = '';
|
||||
|
||||
|
||||
// FIX : widget AP_RAW_HTML always get content of AP_HTML which created before
|
||||
$($("#configuration_form").serializeArray()).each(function (i, field) {
|
||||
if (field.name.substring(0, 2).toLowerCase() == 'ap' && field.value == '1') {
|
||||
widgetType = field.name;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (typeof tinyMCE != "undefined" && widgetType != 'ApRawHtml') {
|
||||
tinyMCE.triggerSave();
|
||||
//var mce = tinyMCE.activeEditor.getContent();
|
||||
@@ -1863,13 +1862,13 @@ function htmlentitiesDecode(str) {
|
||||
});
|
||||
|
||||
$($("#configuration_form").serializeArray()).each(function (i, field) {
|
||||
|
||||
|
||||
// SET EMPTY VALUE AFTER UPDATE LANGUAGE FOR OTHER FIELD
|
||||
if( field.value == '_JS_EMPTY_VALUE_')
|
||||
{
|
||||
field.value = '';
|
||||
}
|
||||
|
||||
|
||||
if (field.name.substring(0, 2).toLowerCase() == 'ap' && field.value == '1') {
|
||||
widgetType = field.name;
|
||||
} else {
|
||||
@@ -1935,10 +1934,10 @@ function htmlentitiesDecode(str) {
|
||||
$(currentE).attr("href", "#" + ObjectForm.id);
|
||||
}
|
||||
if (type == "update") {
|
||||
// SAVE ACTIVE
|
||||
// SAVE ACTIVE
|
||||
//DONGND:: fix can't save tab after update
|
||||
if (widgetType != "ap_sub_tabs")
|
||||
{
|
||||
{
|
||||
if ($(currentE).find('.btn-status').first().hasClass("deactive")) {
|
||||
ObjectForm.active = 0;
|
||||
} else {
|
||||
@@ -1958,13 +1957,13 @@ function htmlentitiesDecode(str) {
|
||||
} else {
|
||||
$(currentE).data("form", ObjectForm);
|
||||
}
|
||||
|
||||
|
||||
//DONGND:: update name of tab after change
|
||||
if (widgetType == "ap_sub_tabs")
|
||||
{
|
||||
$(currentE).text(ObjectForm['title_' + $globalthis.lang_id]);
|
||||
}
|
||||
|
||||
|
||||
//console.log(ObjectForm);
|
||||
$(".label-tooltip").tooltip();
|
||||
return true;
|
||||
@@ -2095,7 +2094,7 @@ function htmlentitiesDecode(str) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//default xs = 6-> 2 cols.but we set 2 cols, we have to assign again
|
||||
//default xs = 6-> 2 cols.but we set 2 cols, we have to assign again
|
||||
if (startSet && ((12 / parseInt(colDefault[$globalthis.arrayCol[j]])) < colNumber)) {
|
||||
colDefault[$globalthis.arrayCol[j]] = finalVal;
|
||||
}
|
||||
@@ -2204,12 +2203,12 @@ function htmlentitiesDecode(str) {
|
||||
//set hook to object
|
||||
objects[iHook] = objHook;
|
||||
});
|
||||
|
||||
|
||||
//DONGND: enable save multithreading
|
||||
if(checkSaveMultithreading == 1)
|
||||
{
|
||||
var i = 0;
|
||||
doLoop(isValid);
|
||||
doLoop(isValid);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2243,22 +2242,22 @@ function htmlentitiesDecode(str) {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//DONGND: function run save multithreading
|
||||
function doLoop(isValid) {
|
||||
function doLoop(isValid) {
|
||||
var temp_obj = new Object();
|
||||
temp_obj[i] = objects[i];
|
||||
data = 'dataForm=' + JSON.stringify(temp_obj);
|
||||
data = 'dataForm=' + JSON.stringify(temp_obj);
|
||||
if(i+1 == Object.keys(objects).length)
|
||||
{
|
||||
data += '&dataLast=1';
|
||||
};
|
||||
|
||||
|
||||
if(i==0)
|
||||
{
|
||||
data += '&dataFirst=1';
|
||||
};
|
||||
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
headers: {"cache-control": "no-cache"},
|
||||
@@ -2293,7 +2292,7 @@ function htmlentitiesDecode(str) {
|
||||
$("#ap_loading").hide();
|
||||
alert("TECHNICAL ERROR: \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
return false;
|
||||
});
|
||||
@@ -2329,7 +2328,7 @@ function htmlentitiesDecode(str) {
|
||||
//console.log(objects);
|
||||
$('#data_profile').val(JSON.stringify(objects));
|
||||
$('#data_id_profile').val($('#current_profile').data('id'));
|
||||
|
||||
|
||||
if($globalthis.isValid == true)
|
||||
{
|
||||
$("#form_data_profile button").click();
|
||||
@@ -2338,10 +2337,10 @@ function htmlentitiesDecode(str) {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
//DONGND:: submit shortcode
|
||||
$(document).on("click", ".shortcode_save_btn, .shortcode_save_stay_btn", function () {
|
||||
|
||||
$(document).on("click", ".shortcode_save_btn, .shortcode_save_stay_btn", function () {
|
||||
|
||||
if ($(this).hasClass('shortcode_save_stay_btn'))
|
||||
{
|
||||
$('#stay_page').val(1);
|
||||
@@ -2356,16 +2355,16 @@ function htmlentitiesDecode(str) {
|
||||
objHook.groups = {};
|
||||
// console.log($('.group-row'));
|
||||
$('.hook-wrapper .group-row').each(function (iGroup) {
|
||||
|
||||
|
||||
objHook.groups[iGroup] = $globalthis.getHookSubmit(this, true);
|
||||
});
|
||||
// console.log(objHook);
|
||||
$('#shortcode_content').val(JSON.stringify(objHook));
|
||||
|
||||
|
||||
$('#appagebuilder_shortcode_form').submit();
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
$(document).on("click", ".position-cover .list-position .position-name", function () {
|
||||
var select = $(this).closest("ul");
|
||||
var isRunning = (typeof $(select).attr("isRunning") != "undefined") ? $(select).attr("isRunning") : "";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{*
|
||||
{*
|
||||
* @Module Name: AP Page Builder
|
||||
* @Website: apollotheme.com - prestashop template provider
|
||||
* @author Apollotheme <apollotheme@gmail.com>
|
||||
@@ -26,7 +26,7 @@
|
||||
<input type="text" name="bg_img" id="bg_img" value="" class=""><a href="javascript:void(0)" class="select-img">{l s='Select image ' mod='appagebuilder'}</a>
|
||||
<p class="help-block">{l s='Please put image link or select image' mod='appagebuilder'}</p>
|
||||
</div>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $input.type == 'apExceptions'}
|
||||
<div class="well">
|
||||
<div>
|
||||
@@ -41,7 +41,7 @@
|
||||
<div class="">
|
||||
<div class="well">
|
||||
<div class="row">
|
||||
{if $input.type == 'ApRowclass'}
|
||||
{if $input.type == 'ApRowclass'}
|
||||
<label class="choise-class col-lg-12"><input type="checkbox" class="chk-row" data-value="row" value="1"> {l s='Use class row' mod='appagebuilder'}</label>
|
||||
{/if}
|
||||
<label class="control-label col-lg-1">{$input.leolabel}</label>
|
||||
@@ -56,7 +56,7 @@
|
||||
<li>
|
||||
<label class="choise-class"><input class="select-class" type="checkbox" data-value="hidden-md" value="1"> {l s='Hidden in Medium devices' mod='appagebuilder'}</label>
|
||||
</li>
|
||||
<li>
|
||||
<li>
|
||||
<label class="choise-class"><input class="select-class" type="checkbox" data-value="hidden-sm" value="1"> {l s='Hidden in Small devices' mod='appagebuilder'}</label>
|
||||
</li>
|
||||
<li>
|
||||
@@ -70,7 +70,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
{if $input.type == 'bg_select'}
|
||||
{$image_uploader}{* HTML form , no escape necessary *}
|
||||
{/if}
|
||||
@@ -100,7 +100,7 @@
|
||||
<ul class="dropdown-menu">
|
||||
{foreach from=$widthList item=itemWidth}
|
||||
<li>
|
||||
<a class="width-select" href="javascript:void(0);" tabindex="-1">
|
||||
<a class="width-select" href="javascript:void(0);" tabindex="-1">
|
||||
<span data-width="{$itemWidth|escape:'html':'UTF-8'}" class="width-val ap-w-{if $itemWidth|strpos:"."|escape:'html':'UTF-8'}{$itemWidth|replace:'.':'-'|escape:'html':'UTF-8'}{else}{$itemWidth|escape:'html':'UTF-8'}{/if}">{$itemWidth|escape:'html':'UTF-8'}/12 - ( {math equation="x/y*100" x=$itemWidth y=12 format="%.2f"} % )</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{*
|
||||
{*
|
||||
* @Module Name: AP Page Builder
|
||||
* @Website: apollotheme.com - prestashop template provider
|
||||
* @author Apollotheme <apollotheme@gmail.com>
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
* @description: ApPageBuilder is module help you can build content for your shop
|
||||
*}
|
||||
<!-- @file modules\appagebuilder\views\templates\hook\header -->
|
||||
|
||||
<script>
|
||||
/**
|
||||
* List functions will run when document.ready()
|
||||
|
||||
@@ -17,7 +17,7 @@ require_once(dirname(__FILE__).'/../../config/config.inc.php');
|
||||
require_once(dirname(__FILE__).'/../../init.php');
|
||||
|
||||
include_once(dirname(__FILE__).'/leofeature.php');
|
||||
include_once(dirname(__FILE__).'/classes/LeofeatureProduct.php');
|
||||
include_once(dirname(__FILE__).'/../classes/LeofeatureProduct.php');
|
||||
|
||||
$module = new Leofeature();
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
if (!defined('_PS_VERSION_')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class PromotionalPriceRounding extends Module
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'promotionalpricerounding';
|
||||
$this->tab = 'pricing';
|
||||
$this->version = '1.0.0';
|
||||
$this->author = 'Twoja Nazwa';
|
||||
$this->need_instance = 0;
|
||||
$this->ps_versions_compliancy = ['min' => '1.7.0.0', 'max' => _PS_VERSION_];
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$this->displayName = $this->l('Zaokrąglanie cen promocyjnych w górę');
|
||||
$this->description = $this->l('Zaokrągla ceny promocyjne w górę, tak jak zwykłe ceny.');
|
||||
|
||||
$this->confirmUninstall = $this->l('Czy na pewno chcesz odinstalować ten moduł?');
|
||||
}
|
||||
|
||||
public function install()
|
||||
{
|
||||
return parent::install() && $this->registerHook('actionProductGetPrice');
|
||||
}
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
return parent::uninstall() && $this->unregisterHook('actionProductGetPrice');
|
||||
}
|
||||
|
||||
public function hookActionProductGetPrice($params)
|
||||
{
|
||||
if (isset($params['product'])) {
|
||||
$product = $params['product'];
|
||||
$price = $params['price'];
|
||||
$currency = Context::getContext()->currency;
|
||||
$decimals = is_array($currency) ? (int) $currency['decimals'] : (int) $currency->decimals;
|
||||
$factor = pow(10, $decimals);
|
||||
|
||||
// Sprawdź, czy produkt ma aktywną promocję
|
||||
if (isset($product->specificPrice) && $product->specificPrice && $product->specificPrice['reduction'] > 0) {
|
||||
$params['price'] = ceil($price * $factor) / $factor;
|
||||
} elseif (isset($product->reduction) && $product->reduction > 0) {
|
||||
// Obsługa reguł cenowych
|
||||
$params['price'] = ceil($price * $factor) / $factor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
$(document).ready(function () {
|
||||
$('.block_newsletter form').on('submit', function () {
|
||||
$('.my_row.newsletter form').on('submit', function () {
|
||||
var psemailsubscriptionForm = $(this);
|
||||
if (typeof psemailsubscription_subscription === 'undefined') {
|
||||
return true;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -1050,4 +1050,25 @@ $(document).ready(function(){
|
||||
$(headerNav).removeClass('fixed');
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
$(document).ready(function () {
|
||||
$('.nav-item.parent.dropdown').on('mouseenter', function () {
|
||||
var $submenu = $(this).find('.dropdown-menu');
|
||||
|
||||
if ($submenu.length) {
|
||||
$submenu.css({ left: '', right: '', transform: '' });
|
||||
|
||||
var submenuRect = $submenu[0].getBoundingClientRect();
|
||||
var windowWidth = $(window).width();
|
||||
|
||||
if (submenuRect.right > windowWidth) {
|
||||
$submenu.attr('style', 'left: 50% !important; right: auto !important; transform: translateX(-50%) !important;');
|
||||
} else if (submenuRect.left < 0) {
|
||||
$submenu.attr('style', 'left: 50% !important; right: auto !important; transform: translateX(-50%) !important;');
|
||||
} else {
|
||||
$submenu.css({ left: '', right: '', transform: '' });
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -22,49 +22,49 @@
|
||||
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*}
|
||||
{extends file='page.tpl'}
|
||||
{extends file='page.tpl'}
|
||||
|
||||
{block name='page_title'}
|
||||
{$cms.meta_title}
|
||||
{/block}
|
||||
{block name='page_title'}
|
||||
{$cms.meta_title}
|
||||
{/block}
|
||||
|
||||
{block name='page_content_container'}
|
||||
<section id="content" class="page-content page-cms page-cms-{$cms.id}">
|
||||
{if $cms.id == 61}
|
||||
<iframe id="paypoIframe" src="https://start.paypo.pl" width="100%" frameborder="no"></iframe>
|
||||
{literal}
|
||||
<script type="module">
|
||||
window.addEventListener('message', event => {
|
||||
const paypoIframe = document.querySelector('#paypoIframe');
|
||||
{block name='page_content_container'}
|
||||
<section id="content" class="page-content page-cms page-cms-{$cms.id}">
|
||||
{if $cms.id == 61}
|
||||
<iframe id="paypoIframe" src="https://start.paypo.pl" width="100%" frameborder="no"></iframe>
|
||||
{literal}
|
||||
<script type="module">
|
||||
window.addEventListener('message', event => {
|
||||
const paypoIframe = document.querySelector('#paypoIframe');
|
||||
|
||||
const eventData = JSON.parse(event.data);
|
||||
const eventData = JSON.parse(event.data);
|
||||
|
||||
let isPageHeightSet = false;
|
||||
let isPageHeightSet = false;
|
||||
|
||||
if (typeof eventData === "object") {
|
||||
if ('pageBodyHeight' in eventData) {
|
||||
paypoIframe.style.height = eventData.pageBodyHeight + 'px';
|
||||
isPageHeightSet = true;
|
||||
} else {
|
||||
isPageHeightSet || (paypoIframe.style.height = '5200px');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
if (typeof eventData === "object") {
|
||||
if ('pageBodyHeight' in eventData) {
|
||||
paypoIframe.style.height = eventData.pageBodyHeight + 'px';
|
||||
isPageHeightSet = true;
|
||||
} else {
|
||||
isPageHeightSet || (paypoIframe.style.height = '5200px');
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{/literal}
|
||||
{/if}
|
||||
|
||||
{block name='cms_content'}
|
||||
{$cms.content nofilter}
|
||||
{/block}
|
||||
{block name='cms_content'}
|
||||
{$cms.content nofilter}
|
||||
{/block}
|
||||
|
||||
{block name='hook_cms_dispute_information'}
|
||||
{hook h='displayCMSDisputeInformation'}
|
||||
{/block}
|
||||
{block name='hook_cms_dispute_information'}
|
||||
{hook h='displayCMSDisputeInformation'}
|
||||
{/block}
|
||||
|
||||
{block name='hook_cms_print_button'}
|
||||
{hook h='displayCMSPrintButton'}
|
||||
{/block}
|
||||
{block name='hook_cms_print_button'}
|
||||
{hook h='displayCMSPrintButton'}
|
||||
{/block}
|
||||
|
||||
</section>
|
||||
{/block}
|
||||
</section>
|
||||
{/block}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
{/block}
|
||||
</head>
|
||||
|
||||
<body id="{$page.page_name}" class="{$page.body_classes|classnames}{if isset($LEO_LAYOUT_MODE)} {$LEO_LAYOUT_MODE}{/if}{if isset($USE_FHEADER) && $USE_FHEADER} keep-header{/if}">
|
||||
<body id="{$page.page_name}" class="1 {$page.body_classes|classnames}{if isset($LEO_LAYOUT_MODE)} {$LEO_LAYOUT_MODE}{/if}{if isset($USE_FHEADER) && $USE_FHEADER} keep-header{/if}">
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MJDZPHD" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user