From afaeb15b7ddbe131fa1d21af826fde92d559a326 Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Wed, 13 Nov 2013 20:10:13 +0100 Subject: [PATCH 01/34] // Define default template dir on tree class --- classes/helper/HelperForm.php | 4 ++- classes/tree/Tree.php | 6 ++-- classes/tree/TreeToolbar.php | 10 +++++-- classes/tree/TreeToolbarButton.php | 44 +++++++++++++++++++++++++++--- 4 files changed, 53 insertions(+), 11 deletions(-) diff --git a/classes/helper/HelperForm.php b/classes/helper/HelperForm.php index ec1c69178..ab97b0893 100644 --- a/classes/helper/HelperForm.php +++ b/classes/helper/HelperForm.php @@ -245,7 +245,7 @@ class HelperFormCore extends Helper * * @return string */ - public function renderAssoShop($params, $disable_shared = false) + public function renderAssoShop($disable_shared = false, $template_directory = null) { if (!Shop::isFeatureActive()) return; @@ -288,6 +288,8 @@ class HelperFormCore extends Helper }*/ $tree = new HelperTreeShops('shop-tree', 'Shops'); + if (isset($template_directory)) + $tree->setTemplateDirectory($template_directory); $tree->setSelectedShops($assos); $tree->setAttribute('table', $this->table); return $tree->render(); diff --git a/classes/tree/Tree.php b/classes/tree/Tree.php index 95b82f13c..8db9f8f47 100644 --- a/classes/tree/Tree.php +++ b/classes/tree/Tree.php @@ -61,7 +61,7 @@ class TreeCore if (!isset($this->_toolbar)) $this->setToolbar(new TreeToolbarCore()); - $this->getToolbar()->setActions($value); + $this->getToolbar()->setTemplateDirectory($this->getTemplateDirectory())->setActions($value); return $this; } @@ -70,7 +70,7 @@ class TreeCore if (!isset($this->_toolbar)) $this->setToolbar(new TreeToolbarCore()); - return $this->getToolbar()->getActions(); + return $this->getToolbar()->setTemplateDirectory($this->getTemplateDirectory())->getActions(); } public function setAttribute($name, $value) @@ -293,7 +293,7 @@ class TreeCore if (!isset($this->_toolbar)) $this->setToolbar(new TreeToolbarCore()); - $this->getToolbar()->addAction($action); + $this->getToolbar()->setTemplateDirectory($this->getTemplateDirectory())->addAction($action); return $this; } diff --git a/classes/tree/TreeToolbar.php b/classes/tree/TreeToolbar.php index 195333560..5ed6239cd 100644 --- a/classes/tree/TreeToolbar.php +++ b/classes/tree/TreeToolbar.php @@ -40,12 +40,13 @@ class TreeToolbarCore implements ITreeToolbarCore return $this->render(); } - public function setActions($value) + public function setActions($actions) { - if (!is_array($value) && !$value instanceof Traversable) + if (!is_array($actions) && !$actions instanceof Traversable) throw new PrestaShopException('Action value must be an traversable array'); - $this->_actions = $value; + foreach($actions as $action) + $this->addAction($action); } public function getActions() @@ -165,6 +166,9 @@ class TreeToolbarCore implements ITreeToolbarCore if (!isset($this->_actions)) $this->_actions = array(); + if (isset($this->_template_directory)) + $action->setTemplateDirectory($this->getTemplateDirectory()); + $this->_actions[] = $action; return $this; } diff --git a/classes/tree/TreeToolbarButton.php b/classes/tree/TreeToolbarButton.php index 942642027..3ce66d638 100644 --- a/classes/tree/TreeToolbarButton.php +++ b/classes/tree/TreeToolbarButton.php @@ -155,13 +155,49 @@ abstract class TreeToolbarButtonCore public function getTemplateDirectory() { if (!isset($this->_template_directory)) - $this->_template_directory = $this->_normalizeDirectory( - $this->getContext()->smarty->getTemplateDir(0) - .self::DEFAULT_TEMPLATE_DIRECTORY); + $this->_template_directory = $this->_normalizeDirectory(self::DEFAULT_TEMPLATE_DIRECTORY); return $this->_template_directory; } + public function getTemplateFile($template) + { + if (preg_match_all('/((?:^|[A-Z])[a-z]+)/', get_class($this->getContext()->controller), $matches) !== FALSE) + $controllerName = strtolower($matches[0][1]); + + if ($this->getContext()->controller instanceof ModuleAdminController) + return $this->_normalizeDirectory( + $this->getContext()->controller->getTemplatePath()) + .$this->getTemplateDirectory().$template; + else if ($this->getContext()->controller instanceof AdminController + && isset($controllerName) && file_exists($this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(0)).'controllers' + .DIRECTORY_SEPARATOR + .$controllerName + .DIRECTORY_SEPARATOR + .$this->getTemplateDirectory().$template)) + return $this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(0)).'controllers' + .DIRECTORY_SEPARATOR + .$controllerName + .DIRECTORY_SEPARATOR + .$this->getTemplateDirectory().$template; + else if (file_exists($this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(1)) + .$this->getTemplateDirectory().$template)) + return $this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(1)) + .$this->getTemplateDirectory().$template; + else if (file_exists($this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(0)) + .$this->getTemplateDirectory().$template)) + return $this->_normalizeDirectory( + $this->getContext()->smarty->getTemplateDir(0)) + .$this->getTemplateDirectory().$template; + else + return $this->getTemplateDirectory().$template; + } + public function hasAttribute($name) { return (isset($this->_attributes) @@ -171,7 +207,7 @@ abstract class TreeToolbarButtonCore public function render() { return $this->getContext()->smarty->createTemplate( - $this->getTemplateDirectory().$this->getTemplate(), + $this->getTemplateFile($this->getTemplate()), $this->getContext()->smarty )->assign($this->getAttributes())->fetch(); } From 27731f3bb2617a388b73617dc6381a03562df679 Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Wed, 13 Nov 2013 20:13:42 +0100 Subject: [PATCH 02/34] // Bootstraping blocklayered backoffice and ajax fix --- .../blocklayered/blocklayered-ajax-back.php | 11 +- modules/blocklayered/blocklayered.php | 419 +++++++++++------- modules/blocklayered/upgrade/install-1.9.php | 9 + .../blocklayered/views/css/blocklayered.css | 21 + .../views/css/blocklayered_bt.css | 21 + 5 files changed, 310 insertions(+), 171 deletions(-) create mode 100644 modules/blocklayered/upgrade/install-1.9.php create mode 100644 modules/blocklayered/views/css/blocklayered.css create mode 100644 modules/blocklayered/views/css/blocklayered_bt.css diff --git a/modules/blocklayered/blocklayered-ajax-back.php b/modules/blocklayered/blocklayered-ajax-back.php index 0cb509fd2..427ca792d 100644 --- a/modules/blocklayered/blocklayered-ajax-back.php +++ b/modules/blocklayered/blocklayered-ajax-back.php @@ -19,7 +19,8 @@ * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA -* @copyright 2007-2013 PrestaShop SA +* @copyright 2007-2013 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registred Trademark & Property of PrestaShop SA */ @@ -31,10 +32,18 @@ require_once(dirname(__FILE__).'/../../init.php'); if (substr(Tools::encrypt('blocklayered/index'),0,10) != Tools::getValue('layered_token') || !Module::isInstalled('blocklayered')) die('Bad token'); +if (Tools::getValue('admin_dir', false)) +{ + define('_PS_ADMIN_DIR_', base64_decode(Tools::getValue('admin_dir'))); + define('_PS_BO_ALL_THEMES_DIR_', _PS_ADMIN_DIR_.'/themes/'); +} + + include(dirname(__FILE__).'/blocklayered.php'); $category_box = Tools::getValue('categoryBox'); + /* Clean categoryBox before use */ if (is_array($category_box)) foreach ($category_box AS &$value) diff --git a/modules/blocklayered/blocklayered.php b/modules/blocklayered/blocklayered.php index 48e79eb03..aa3505e78 100644 --- a/modules/blocklayered/blocklayered.php +++ b/modules/blocklayered/blocklayered.php @@ -61,7 +61,8 @@ class BlockLayered extends Module && $this->registerHook('afterSaveProduct') && $this->registerHook('productListAssign') && $this->registerHook('postProcessAttributeGroup') && $this->registerHook('postProcessFeature') && $this->registerHook('featureValueForm') && $this->registerHook('postProcessFeatureValue') && $this->registerHook('afterDeleteFeatureValue') && $this->registerHook('afterSaveFeatureValue') && $this->registerHook('attributeForm') - && $this->registerHook('postProcessAttribute') && $this->registerHook('afterDeleteAttribute') && $this->registerHook('afterSaveAttribute')) + && $this->registerHook('postProcessAttribute') && $this->registerHook('afterDeleteAttribute') && $this->registerHook('afterSaveAttribute') + && $this->registerHook('displayBackOfficeHeader')) { Configuration::updateValue('PS_LAYERED_HIDE_0_VALUES', 1); Configuration::updateValue('PS_LAYERED_SHOW_QTIES', 1); @@ -686,7 +687,7 @@ class BlockLayered extends Module if ($result) foreach ($result as $data) $lang_value[$data['id_lang']] = array('url_name' => $data['url_name'], 'meta_title' => $data['meta_title']); - + $return = '

'.$this->l('Build your own filter template').'

- -
'; $html .= ' -

'.$this->l('Step 1/3 - Select categories').'

-

- '.$this->l('Use this template for:').' - - - - - -

'; +

'.$this->l('Step 1/3 - Select categories').'

+
+
+
+ +
+

+ + +

+

+ + +

+
+
'; $shops = Shop::getShops(true, null, true); if (count($shops) > 1) @@ -1871,12 +1870,14 @@ class BlockLayered extends Module if (Shop::isFeatureActive()) { - $html .= ''.$this->l('Choose shop association:').''; - $html .= '
'.$helper->renderAssoShop().'
'; + $html .= '
+ +
'.$helper->renderAssoShop().'
+
'; } } - - $html .= ' + + $html .= '
@@ -1903,24 +1904,22 @@ class BlockLayered extends Module $html .= '
-
+
-
-
-

'.$this->l('Step 2/3 - Select filters').'

+ +
+ +
+
+
+ + + + + + + +
+
+
+
+
+ +
+
+
+ + + + + + + +
+
+
+
+
+ +
+
+
+ + + + + + + +
+
+
+
+
+ +
+
+
+ + + + + + + +
+
+
+
+
+ +
+
+
+ + + + + + + +
+
+
+
+
+
+ +
+
'; @@ -3497,12 +3577,11 @@ class BlockLayered extends Module $n_elements = 20; $html = ' -
-

'.$this->l('Available filters').' (0)

+
+

'.$this->l('Available filters').' (0)

    • - '.$this->l('Sub-categories filter').' @@ -3791,9 +3870,9 @@ class BlockLayered extends Module $helper->table = 'layered_filter'; $helper->identifier = 'id_layered_filter'; $helper->base_folder = Tools::getValue('base_folder').'/themes/default/template/helpers/form/'; - + $html .= ' -
      '.$helper->renderAssoShop().'
      +
      '.$helper->renderAssoShop(false, Tools::getValue('base_folder').'/themes/default/template/helpers/tree/').'
      \ No newline at end of file diff --git a/modules/blockwishlist/config.xml b/modules/blockwishlist/config.xml index b2769a8d2..43c96a918 100755 --- a/modules/blockwishlist/config.xml +++ b/modules/blockwishlist/config.xml @@ -2,7 +2,7 @@ blockwishlist - + diff --git a/modules/blockwishlist/upgrade/install-0.3.php b/modules/blockwishlist/upgrade/install-0.3.php new file mode 100644 index 000000000..1d2b8f3d3 --- /dev/null +++ b/modules/blockwishlist/upgrade/install-0.3.php @@ -0,0 +1,9 @@ +registerHook('displayProductListFunctionalButtons') && $object->registerHook('top')); +} From c2d956ec7def731467bc4c2237f51df1a11ecdc3 Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Fri, 15 Nov 2013 08:58:30 +0100 Subject: [PATCH 16/34] // Modif after specs change --- modules/blockcategories/blockcategories.php | 35 +++++-------------- .../blockcategories/upgrade/install-2.1.php | 2 +- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/modules/blockcategories/blockcategories.php b/modules/blockcategories/blockcategories.php index a66f5326e..67669e8a5 100644 --- a/modules/blockcategories/blockcategories.php +++ b/modules/blockcategories/blockcategories.php @@ -67,7 +67,6 @@ class BlockCategories extends Module !$this->registerHook('actionAdminMetaControllerUpdate_optionsBefore') || !$this->registerHook('actionAdminLanguagesControllerStatusBefore') || !$this->registerHook('displayBackOfficeCategory') || - !$this->registerHook('displayTop') || !Configuration::updateValue('BLOCK_CATEG_MAX_DEPTH', 4) || !Configuration::updateValue('BLOCK_CATEG_DHTML', 1)) return false; @@ -128,26 +127,15 @@ class BlockCategories extends Module foreach ($resultParents[$id_category] as $subcat) $children[] = $this->getTree($resultParents, $resultIds, $maxDepth, $subcat['id_category'], $currentDepth + 1); - $category = new Category($id_category); - $thumbnails = array(); - - if ($category->level_depth == 2) - { - $files = scandir(_PS_CAT_IMG_DIR_); - - foreach ($files as $file) - if (preg_match('/'.$id_category.'-([0-9])?_thumb.jpg/i', $file) === 1) - $thumbnails[] = ImageManager::thumbnail(_PS_CAT_IMG_DIR_.$file, 'category_'.$file, 100, 'jpg', true, true); - - } + if (!isset($resultIds[$id_category])) + return false; $return = array( 'id' => $id_category, - 'link' => $this->context->link->getCategoryLink($id_category, $category->link_rewrite[(int)$this->context->language->id]), - 'name' => $category->name[(int)$this->context->language->id], - 'desc'=> $category->description[(int)$this->context->language->id], - 'children' => $children, - 'thumbnails' => $thumbnails + 'link' => $this->context->link->getCategoryLink($id_category, $resultIds[$id_category]['link_rewrite']), + 'name' => $resultIds[$id_category]['name'], + 'desc'=> $resultIds[$id_category]['description'], + 'children' => $children ); return $return; @@ -179,13 +167,6 @@ class BlockCategories extends Module return $this->display(__FILE__, 'views/blockcategories_admin.tpl'); } - public function hookDisplayTop($params) - { - $params['is_top_menu'] = true; - $this->smarty->assign('numberColumn', 3); - return $this->hookLeftColumn($params); - } - public function hookLeftColumn($params) { $category = false; @@ -202,7 +183,7 @@ class BlockCategories extends Module } $cacheId = $this->getCacheId($category ? $category->id : null); - if (!$this->isCached('blockcategories'.((isset($params['is_top_menu']) && $params['is_top_menu']) ? '_top' : '').'.tpl', $cacheId)) + if (!$this->isCached('blockcategories.tpl', $cacheId)) { $range = ''; $maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH'); @@ -248,7 +229,7 @@ class BlockCategories extends Module else $this->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_.'blockcategories/category-tree-branch.tpl'); } - return $this->display(__FILE__, 'blockcategories'.((isset($params['is_top_menu']) && $params['is_top_menu']) ? '_top' : '').'.tpl', $cacheId); + return $this->display(__FILE__, 'blockcategories.tpl', $cacheId); } protected function getCacheId($name = null) diff --git a/modules/blockcategories/upgrade/install-2.1.php b/modules/blockcategories/upgrade/install-2.1.php index 1fd682727..ace16ef68 100644 --- a/modules/blockcategories/upgrade/install-2.1.php +++ b/modules/blockcategories/upgrade/install-2.1.php @@ -5,5 +5,5 @@ if (!defined('_PS_VERSION_')) function upgrade_module_2_1($object) { - return ($object->registerHook('displayBackOfficeCategory') && $object->registerHook('displayTop')); + return $object->registerHook('displayBackOfficeCategory'); } From a66d2e1ab6d2308ec7e5d12d39e7dce2dc373467 Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Fri, 15 Nov 2013 09:18:41 +0100 Subject: [PATCH 17/34] // Fix form name --- modules/dashactivity/dashactivity.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dashactivity/dashactivity.php b/modules/dashactivity/dashactivity.php index b77ba9f32..63804f7e8 100644 --- a/modules/dashactivity/dashactivity.php +++ b/modules/dashactivity/dashactivity.php @@ -353,14 +353,14 @@ class Dashactivity extends Module $fields_form['form']['input'][] = array( 'label' => $this->l('Cart abandoned (min)'), 'desc' => $this->l('Default time range (min) to consider a Shopping cart as abandoned (default 24hrs)'), - 'name' => 'DASHACTIVITY_CART_ABANDONED', + 'name' => 'DASHACTIVITY_CART_ABANDONED_MIN', 'type' => 'text', 'suffix' => $this->l('hrs'), ); $fields_form['form']['input'][] = array( 'label' => $this->l('Cart abandoned (max)'), 'desc' => $this->l('Default time range (max) to consider a Shopping cart as abandoned (default 48hrs)'), - 'name' => 'DASHACTIVITY_CART_ABANDONED', + 'name' => 'DASHACTIVITY_CART_ABANDONED_MAX', 'type' => 'text', 'suffix' => $this->l('hrs'), ); From d7de507f42aac50d7dbef14558c836e821293d04 Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Fri, 15 Nov 2013 11:49:40 +0100 Subject: [PATCH 18/34] // Product comments --- modules/productcomments/config.xml | 2 +- modules/productcomments/productcomments.php | 26 ++++++++++++- .../productcomments_reviews.tpl | 37 +++++++++++++++++++ .../productcomments/productcomments_top.tpl | 6 +++ modules/productcomments/upgrade/index.php | 35 ++++++++++++++++++ .../productcomments/upgrade/install-2.4.php | 9 +++++ themes/default-bootstrap/product-list.tpl | 1 + 7 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 modules/productcomments/productcomments_reviews.tpl create mode 100644 modules/productcomments/productcomments_top.tpl create mode 100644 modules/productcomments/upgrade/index.php create mode 100644 modules/productcomments/upgrade/install-2.4.php diff --git a/modules/productcomments/config.xml b/modules/productcomments/config.xml index d2ca5525e..c9413f84f 100755 --- a/modules/productcomments/config.xml +++ b/modules/productcomments/config.xml @@ -2,7 +2,7 @@ productcomments - + diff --git a/modules/productcomments/productcomments.php b/modules/productcomments/productcomments.php index 20f8d74ba..caea20fb4 100644 --- a/modules/productcomments/productcomments.php +++ b/modules/productcomments/productcomments.php @@ -41,7 +41,7 @@ class ProductComments extends Module { $this->name = 'productcomments'; $this->tab = 'front_office_features'; - $this->version = '2.3'; + $this->version = '2.4'; $this->author = 'PrestaShop'; $this->need_instance = 0; $this->secure_key = Tools::encrypt($this->name); @@ -70,6 +70,8 @@ class ProductComments extends Module !$this->registerHook('productTabContent') || !$this->registerHook('header') || !$this->registerHook('productOutOfStock') || + !$this->registerHook('displayProductListReviews') || + !$this->registerHook('top') || !Configuration::updateValue('PRODUCT_COMMENTS_MINIMAL_TIME', 30) || !Configuration::updateValue('PRODUCT_COMMENTS_ALLOW_GUESTS', 0) || !Configuration::updateValue('PRODUCT_COMMENTS_MODERATE', 1)) @@ -87,7 +89,9 @@ class ProductComments extends Module !$this->unregisterHook('productOutOfStock') || !$this->unregisterHook('productTabContent') || !$this->unregisterHook('header') || - !$this->unregisterHook('productTab')) + !$this->unregisterHook('productTab') || + !$this->unregisterHook('top') || + !$this->unregisterHook('displayProductListReviews')) return false; return true; } @@ -691,6 +695,24 @@ class ProductComments extends Module return ($this->display(__FILE__, '/tab.tpl')); } + public function hookTop($params) + { + $this->context->controller->addJS($this->_path.'js/jquery.rating.pack.js'); + return $this->display(__FILE__, 'productcomments_top.tpl'); + } + + public function hookDisplayProductListReviews($params) + { + require_once(dirname(__FILE__).'/ProductComment.php'); + + $average = ProductComment::getAverageGrade((int)$params['product']['id_product']); + $this->smarty->assign(array( + 'product' => $params['product'], + 'averageTotal' => round($average['grade']), + )); + return $this->display(__FILE__, 'productcomments_reviews.tpl'); + } + public function hookproductOutOfStock($params) { require_once(dirname(__FILE__).'/ProductComment.php'); diff --git a/modules/productcomments/productcomments_reviews.tpl b/modules/productcomments/productcomments_reviews.tpl new file mode 100644 index 000000000..cccaf240b --- /dev/null +++ b/modules/productcomments/productcomments_reviews.tpl @@ -0,0 +1,37 @@ + {* +* 2007-2013 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2013 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} +
      +
      + {section name="i" start=0 loop=5 step=1} + {if $averageTotal le $smarty.section.i.index} +
      + {else} +
      + {/if} + {/section} +
      + {l s='%s Review(s)'|sprintf:$averageTotal mod='productcomments'}  +
      \ No newline at end of file diff --git a/modules/productcomments/productcomments_top.tpl b/modules/productcomments/productcomments_top.tpl new file mode 100644 index 000000000..a09be2a77 --- /dev/null +++ b/modules/productcomments/productcomments_top.tpl @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/modules/productcomments/upgrade/index.php b/modules/productcomments/upgrade/index.php new file mode 100644 index 000000000..3f6561f72 --- /dev/null +++ b/modules/productcomments/upgrade/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2013 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/productcomments/upgrade/install-2.4.php b/modules/productcomments/upgrade/install-2.4.php new file mode 100644 index 000000000..8c0ee51f4 --- /dev/null +++ b/modules/productcomments/upgrade/install-2.4.php @@ -0,0 +1,9 @@ +registerHook('displayProductListReviews') && $object->registerHook('top')); +} diff --git a/themes/default-bootstrap/product-list.tpl b/themes/default-bootstrap/product-list.tpl index 532bcde2b..f902f8e78 100644 --- a/themes/default-bootstrap/product-list.tpl +++ b/themes/default-bootstrap/product-list.tpl @@ -91,6 +91,7 @@
    {/if}
    + {hook h='displayProductListReviews' product=$product} {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE} {if ($product.allow_oosp || $product.quantity > 0)} {if isset($static_token)} From 9fa2299c6bd63f9a88a43b192d4de66091f0eeee Mon Sep 17 00:00:00 2001 From: Jerome Nadaud Date: Fri, 15 Nov 2013 11:56:23 +0100 Subject: [PATCH 19/34] // Open prestashop.com link in new window --- admin-dev/themes/default/template/controllers/login/content.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin-dev/themes/default/template/controllers/login/content.tpl b/admin-dev/themes/default/template/controllers/login/content.tpl index 265c6f749..8bcb2a867 100755 --- a/admin-dev/themes/default/template/controllers/login/content.tpl +++ b/admin-dev/themes/default/template/controllers/login/content.tpl @@ -177,7 +177,7 @@