This commit is contained in:
2025-04-15 15:18:44 +02:00
25 changed files with 10154 additions and 4503 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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);

View File

@@ -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([

View File

@@ -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');

View File

@@ -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
*/

View File

@@ -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

View File

@@ -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 &quot;Yes&quot;. If not, click &quot;No&quot;.\', \'Yes\', \'No\', \'index.php?controller='.$controller.'&amp;id_appagebuilder_products='.$id.'&amp;duplicateappagebuilder_products&amp;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) {

View File

@@ -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(

View File

@@ -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') {

View File

@@ -19,6 +19,8 @@ function updateListIdFullSlider() {
$("#total_slider").val(listId);
}
$(document).ready(function() {
console.log("ready!");
$("#modal_form").draggable({
handle: ".modal-header"
});

View File

@@ -72,7 +72,7 @@ class CmsController extends CmsControllerCore
$this->setTemplate('cms/category');
}
FrontController::initContent();
// validate module
unset($id_module);
unset($array_return);

View File

@@ -19,6 +19,8 @@ function updateListIdFullSlider() {
$("#total_slider").val(listId);
}
$(document).ready(function() {
console.log("ready");
$("#modal_form").draggable({
handle: ".modal-header"
});

View File

@@ -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") : "";

View File

@@ -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>

View File

@@ -1,4 +1,4 @@
{*
{*
* @Module Name: AP Page Builder
* @Website: apollotheme.com - prestashop template provider
* @author Apollotheme <apollotheme@gmail.com>

View File

@@ -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()

View File

@@ -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();

View File

@@ -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;
}
}
}
}

View File

@@ -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

View File

@@ -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: '' });
}
}
});
});

View File

@@ -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}

View File

@@ -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>