diff --git a/admin-dev/themes/default/template/helpers/form/form.tpl b/admin-dev/themes/default/template/helpers/form/form.tpl index 2f320e36e..dae22d7a4 100644 --- a/admin-dev/themes/default/template/helpers/form/form.tpl +++ b/admin-dev/themes/default/template/helpers/form/form.tpl @@ -102,10 +102,19 @@ {/literal} {/if} - {if isset($input.maxchar)} + {if isset($input.maxchar) || isset($input.prefix) || isset($input.suffix)}
- {$input.maxchar} {/if} + {if isset($input.maxchar)} + + {$input.maxchar} + + {/if} + {if isset($input.prefix)} + + {$input.prefix} + + {/if} - {if isset($input.maxchar)} + {if isset($input.suffix)} + + {$input.suffix} + + {/if} + {if isset($input.maxchar) || isset($input.prefix) || isset($input.suffix)}
{/if} {if $languages|count > 1} @@ -175,10 +189,17 @@ {/literal} {/if} {assign var='value_text' value=$fields_value[$input.name]} - {if isset($input.maxchar)} + {if isset($input.maxchar) || isset($input.prefix) || isset($input.suffix)}
+ {/if} + {if isset($input.maxchar)} {$input.maxchar} {/if} + {if isset($input.prefix)} + + {$input.prefix} + + {/if} - {if isset($input.suffix)}{$input.suffix}{/if} - {if isset($input.maxchar)} + {if isset($input.suffix)} + + {$input.suffix} + + {/if} + + {if isset($input.maxchar) || isset($input.prefix) || isset($input.suffix)}
{/if} {if isset($input.maxchar)} diff --git a/admin-dev/themes/default/template/helpers/kpi/kpi.tpl b/admin-dev/themes/default/template/helpers/kpi/kpi.tpl index 32294bc1a..f94973ab3 100644 --- a/admin-dev/themes/default/template/helpers/kpi/kpi.tpl +++ b/admin-dev/themes/default/template/helpers/kpi/kpi.tpl @@ -22,7 +22,7 @@ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA *} -
+<{if $href}a style="display:block" href="{$href|escape}"{else}div{/if} id="{$id|escape}" class="col-lg-3 box-stats {$color|escape}" > {if $icon}{/if} {if $chart}
@@ -32,7 +32,7 @@ {/if} {$title|escape}
{$subtitle|escape}
{$value|escape} -
+ {if $source != ''} -

'.$this->l('Loyalty Program').'

-
-
- '.$this->l('Settings').' - - -
- '.$currency->sign.' - -
- - '.$currency->sign.' - -
-
- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'voucher_details', true); - $this->html .= '
-
- -
- '.$currency->sign.' -
-
- -
- - - - -
-
- -
- -
-
- -
- -
-
- '; - $index = explode(',', Configuration::get('PS_LOYALTY_VOUCHER_CATEGORY')); - $indexedCategories = isset($_POST['categoryBox']) ? $_POST['categoryBox'] : $index; - - $helper = new Helper(); - $this->html .= '
'.$helper->renderCategoryTree(null, $indexedCategories).'
'; - $this->html .= ' -

'.$this->l('Mark the box(es) of categories in which loyalty vouchers are usable.').'

-
-

'.$this->l('Loyalty points progression').'

- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'default_loyalty_state', true); - $this->html .= '
-
- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'none_award_loyalty_state', true); - $this->html .= '
-
- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'convert_loyalty_state', true); - $this->html .= '
-
- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'validation_loyalty_state', true); - $this->html .= '
-
- -
'; - foreach ($languages as $language) - $this->html .= ' -
- -
'; - $this->html .= $this->displayFlags($languages, $id_lang_default, $languageIds, 'cancel_loyalty_state', true); - $this->html .= '
-
- -
-
-
'; + $this->html .= $this->renderForm(); return $this->html; } - public static function recurseCategoryForInclude($id_obj, $indexedCategories, $categories, $current, $id_category = 1, $id_category_default = null, $has_suite = array()) - { - global $done; - static $irow; - $html = ''; - - if (!isset($done[$current['infos']['id_parent']])) - $done[$current['infos']['id_parent']] = 0; - $done[$current['infos']['id_parent']] += 1; - - $todo = count($categories[$current['infos']['id_parent']]); - $doneC = $done[$current['infos']['id_parent']]; - - $level = $current['infos']['level_depth'] + 1; - - $html .= ' - - - - - - '.$id_category.' - - '; - for ($i = 2; $i < $level; $i++) - $html .= ''; - $html .= '   - - '; - - if ($level > 1) - $has_suite[] = ($todo == $doneC ? 0 : 1); - if (isset($categories[$id_category])) - foreach ($categories[$id_category] as $key => $row) - if ($key != 'infos') - $html .= self::recurseCategoryForInclude($id_obj, $indexedCategories, $categories, $categories[$id_category][$key], $key, $id_category_default, $has_suite); - return $html; - } - /* Hook display on product detail */ public function hookExtraRight($params) { @@ -672,4 +496,191 @@ class Loyalty extends Module return (array_key_exists($key, $translations)) ? $translations[$key] : $key; } + + public function renderForm() + { + $order_states = OrderState::getOrderStates($this->context->language->id); + $currency = new Currency((int)(Configuration::get('PS_CURRENCY_DEFAULT'))); + if (Tools::getValue('categoryBox')) + $selected_categories = Tools::getValue('categoryBox'); + else + $selected_categories = explode(',', Configuration::get('PS_LOYALTY_VOUCHER_CATEGORY')); + + $fields_form_1 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Settings'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Ratio'), + 'name' => 'point_rate', + 'prefix' => $currency->sign, + 'suffix' => $this->l('= 1 reward point.'), + ), + array( + 'type' => 'text', + 'label' => $this->l('1 point ='), + 'name' => 'point_value', + 'prefix' => $currency->sign, + 'suffix' => $this->l('for the discount.'), + ), + array( + 'type' => 'text', + 'label' => $this->l('Voucher details'), + 'name' => 'voucher_details', + 'lang' => true, + ), + array( + 'type' => 'text', + 'label' => $this->l('Minimum amount in which the voucher can be used'), + 'name' => 'minimal', + 'prefix' => $currency->sign, + 'class' => 'fixed-width-sm', + ), + array( + 'type' => 'select', + 'label' => $this->l('Points are awarded when the order is'), + 'name' => 'id_order_state_validation', + 'options' => array( + 'query' => $order_states, + 'id' => 'id_order_state', + 'name' => 'name', + ) + ), + array( + 'type' => 'select', + 'label' => $this->l('Points are cancelled when the order is'), + 'name' => 'id_order_state_cancel', + 'options' => array( + 'query' => $order_states, + 'id' => 'id_order_state', + 'name' => 'name', + ) + ), + array( + 'type' => 'switch', + 'label' => $this->l('Give points on discounted products'), + 'name' => 'PS_LOYALTY_NONE_AWARD', + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ), + array( + 'type' => 'categories', + 'label' => $this->l('Vouchers created by the loyalty system can be used in the following categories :'), + 'name' => 'categoryBox', + 'desc' => $this->l('Mark the box(es) of categories in which loyalty vouchers are usable.'), + 'tree' => array( + 'use_search' => false, + 'id' => 'categoryBox', + 'use_checkbox' => true, + 'selected_categories' => $selected_categories, + ), + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + 'class' => 'btn btn-primary') + ), + ); + + $fields_form_2 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Loyalty points progression'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Initial'), + 'name' => 'default_loyalty_state', + 'lang' => true, + ), + array( + 'type' => 'text', + 'label' => $this->l('Unavailable'), + 'name' => 'none_award_loyalty_state', + 'lang' => true, + ), + array( + 'type' => 'text', + 'label' => $this->l('Converted'), + 'name' => 'convert_loyalty_state', + 'lang' => true, + ), + array( + 'type' => 'text', + 'label' => $this->l('Validation'), + 'name' => 'validation_loyalty_state', + 'lang' => true, + ), + array( + 'type' => 'text', + 'label' => $this->l('Cancelled'), + 'name' => 'cancel_loyalty_state', + 'lang' => true, + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + 'class' => 'btn btn-primary') + ), + ); + + $helper = new HelperForm(); + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $helper->identifier = $this->identifier; + $helper->submit_action = 'submitLoyalty'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + return $helper->generateForm(array($fields_form_1, $fields_form_2)); + } + + public function getConfigFieldsValues() + { + $fields_values = array( + 'point_rate' => Tools::getValue('PS_LOYALTY_POINT_RATE', Configuration::get('PS_LOYALTY_POINT_RATE')), + 'point_value' => Tools::getValue('PS_LOYALTY_POINT_VALUE', Configuration::get('PS_LOYALTY_POINT_VALUE')), + 'PS_LOYALTY_NONE_AWARD' => Tools::getValue('PS_LOYALTY_NONE_AWARD', Configuration::get('PS_LOYALTY_NONE_AWARD')), + 'minimal' => Tools::getValue('PS_LOYALTY_MINIMAL', Configuration::get('PS_LOYALTY_MINIMAL')), + 'id_order_state_validation' => Tools::getValue('id_order_state_validation', $this->loyaltyStateValidation->id_order_state), + 'id_order_state_cancel' => Tools::getValue('id_order_state_cancel', $this->loyaltyStateCancel->id_order_state), + + ); + + $languages = Language::getLanguages(false); + + foreach ($languages as $lang) + { + $fields_values['voucher_details'][$lang['id_lang']] = Tools::getValue('voucher_details_'.(int)$lang['id_lang'], Configuration::get('PS_LOYALTY_VOUCHER_DETAILS', (int)$lang['id_lang'])); + $fields_values['default_loyalty_state'][$lang['id_lang']] = Tools::getValue('default_loyalty_state_'.(int)$lang['id_lang'], $this->loyaltyStateDefault->name[(int)($lang['id_lang'])]); + $fields_values['validation_loyalty_state'][$lang['id_lang']] = Tools::getValue('validation_loyalty_state_'.(int)$lang['id_lang'], $this->loyaltyStateValidation->name[(int)($lang['id_lang'])]); + $fields_values['cancel_loyalty_state'][$lang['id_lang']] = Tools::getValue('cancel_loyalty_state_'.(int)$lang['id_lang'], $this->loyaltyStateCancel->name[(int)($lang['id_lang'])]); + $fields_values['convert_loyalty_state'][$lang['id_lang']] = Tools::getValue('convert_loyalty_state_'.(int)$lang['id_lang'], $this->loyaltyStateConvert->name[(int)($lang['id_lang'])]); + $fields_values['none_award_loyalty_state'][$lang['id_lang']] = Tools::getValue('none_award_loyalty_state_'.(int)$lang['id_lang'], $this->loyaltyStateNoneAward->name[(int)($lang['id_lang'])]); + } + return $fields_values; + } } \ No newline at end of file diff --git a/themes/default/js/product.js b/themes/default/js/product.js index 8e959b9ae..2cff98d95 100644 --- a/themes/default/js/product.js +++ b/themes/default/js/product.js @@ -659,7 +659,7 @@ function getProductAttribute() for (var i in attributesCombinations) for (var a in tab_attributes) if (attributesCombinations[i]['id_attribute'] === tab_attributes[a]) - request += '/'+attributesCombinations[i]['group'] + '-' + attributesCombinations[i]['attribute']; + request += '/'+attributesCombinations[i]['group'] + attribute_anchor_separator + attributesCombinations[i]['attribute']; request = request.replace(request.substring(0, 1), '#/'); url = window.location + ''; @@ -694,7 +694,7 @@ function checkUrl() if (tabParams[0] == '') tabParams.shift(); for (var i in tabParams) - tabValues.push(tabParams[i].split('-')); + tabValues.push(tabParams[i].split(attribute_anchor_separator)); product_id = $('#product_page_product_id').val(); // fill html with values $('.color_pick').removeClass('selected'); diff --git a/themes/default/product-list-colors.tpl b/themes/default/product-list-colors.tpl index 5bfa034e2..a4d4f2205 100644 --- a/themes/default/product-list-colors.tpl +++ b/themes/default/product-list-colors.tpl @@ -23,9 +23,8 @@ * International Registered Trademark & Property of PrestaShop SA *} - diff --git a/themes/default/product.tpl b/themes/default/product.tpl index dfd32a4ae..b208166d0 100644 --- a/themes/default/product.tpl +++ b/themes/default/product.tpl @@ -49,6 +49,7 @@ var availableNowValue = '{$product->available_now|escape:'quotes':'UTF-8'}'; var availableLaterValue = '{$product->available_later|escape:'quotes':'UTF-8'}'; var productPriceTaxExcluded = {$product->getPriceWithoutReduct(true)|default:'null'} - {$product->ecotax}; var productBasePriceTaxExcluded = {$product->base_price} - {$product->ecotax}; +var attribute_anchor_separator = '{$attribute_anchor_separator|addslashes}'; var reduction_percent = {if $product->specificPrice AND $product->specificPrice.reduction AND $product->specificPrice.reduction_type == 'percentage'}{$product->specificPrice.reduction*100}{else}0{/if}; var reduction_price = {if $product->specificPrice AND $product->specificPrice.reduction AND $product->specificPrice.reduction_type == 'amount'}{$product->specificPrice.reduction|floatval}{else}0{/if};