From 6353b8670c75cbdc0346a2afc466d77b9450b98c Mon Sep 17 00:00:00 2001 From: mespeche Date: Tue, 10 Sep 2013 14:36:06 +0200 Subject: [PATCH 1/8] Saving current status --- .gitignore | 1 + templates/admin/default/product-attributes-edit.html | 1 - web/index_dev.php | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index cad92f7a8..f208419b9 100755 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ web/cache/* web/.htaccess phpdoc*.log php-cs +xhprof/ diff --git a/templates/admin/default/product-attributes-edit.html b/templates/admin/default/product-attributes-edit.html index 30d74d258..e69de29bb 100644 --- a/templates/admin/default/product-attributes-edit.html +++ b/templates/admin/default/product-attributes-edit.html @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/web/index_dev.php b/web/index_dev.php index 8991dc4a8..be97da3ea 100755 --- a/web/index_dev.php +++ b/web/index_dev.php @@ -9,7 +9,8 @@ require __DIR__ . '/../core/bootstrap.php'; $trustIp = array( '::1', - '127.0.0.1' + '127.0.0.1', + '192.168.56.1' ); $request = Request::createFromGlobals(); From a4854564318d623416c780cc32923c9433a551bd Mon Sep 17 00:00:00 2001 From: mespeche Date: Tue, 10 Sep 2013 16:35:34 +0200 Subject: [PATCH 2/8] Add route and view for customer creation --- .../Thelia/Config/Resources/routing/admin.xml | 5 + .../Controller/Admin/CustomerController.php | 8 + core/lib/Thelia/Form/CustomerCreation.php | 60 +++- templates/admin/default/customers.html | 260 +++++++++++------- 4 files changed, 225 insertions(+), 108 deletions(-) diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index 3235171df..7aaad391a 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -37,6 +37,11 @@ Thelia\Controller\Admin\CustomerController::indexAction + + Thelia\Controller\Admin\CustomerController::viewAction + \d+ + + diff --git a/core/lib/Thelia/Controller/Admin/CustomerController.php b/core/lib/Thelia/Controller/Admin/CustomerController.php index 04c8842cd..99ae37d21 100644 --- a/core/lib/Thelia/Controller/Admin/CustomerController.php +++ b/core/lib/Thelia/Controller/Admin/CustomerController.php @@ -37,4 +37,12 @@ class CustomerController extends BaseAdminController return $this->render("customers", array("display_customer" => 20)); } + + public function viewAction($customer_id) + { + + return $this->render("customer-edit", array( + "customer_id" => $customer_id + )); + } } \ No newline at end of file diff --git a/core/lib/Thelia/Form/CustomerCreation.php b/core/lib/Thelia/Form/CustomerCreation.php index 1bc88407b..f95dd33d5 100755 --- a/core/lib/Thelia/Form/CustomerCreation.php +++ b/core/lib/Thelia/Form/CustomerCreation.php @@ -43,19 +43,28 @@ class CustomerCreation extends BaseForm "constraints" => array( new Constraints\NotBlank() ), - "label" => "firstname" + "label" => "Firstname", + "label_attr" => array( + "for" => "firstname" + ) )) ->add("lastname", "text", array( "constraints" => array( new Constraints\NotBlank() ), - "label" => "lastname" + "label" => "Lastname", + "label_attr" => array( + "for" => "lastname" + ) )) ->add("address1", "text", array( "constraints" => array( new Constraints\NotBlank() ), - "label" => "address" + "label" => "Address", + "label_attr" => array( + "for" => "address" + ) )) ->add("address2", "text", array( "label" => "Address Line 2" @@ -64,28 +73,43 @@ class CustomerCreation extends BaseForm "label" => "Address Line 3" )) ->add("phone", "text", array( - "label" => "phone" + "label" => "Phone", + "label_attr" => array( + "for" => "phone" + ) )) ->add("cellphone", "text", array( - "label" => "cellphone" + "label" => "Cellphone", + "label_attr" => array( + "for" => "cellphone" + ) )) ->add("zipcode", "text", array( "constraints" => array( new Constraints\NotBlank() ), - "label" => "zipcode" + "label" => "Zip code", + "label_attr" => array( + "for" => "zipcode" + ) )) ->add("city", "text", array( "constraints" => array( new Constraints\NotBlank() ), - "label" => "city" + "label" => "City", + "label_attr" => array( + "for" => "city" + ) )) ->add("country", "text", array( "constraints" => array( new Constraints\NotBlank() ), - "label" => "country" + "label" => "Country", + "label_attr" => array( + "for" => "country" + ) )) ->add("title", "text", array( "constraints" => array( @@ -104,7 +128,10 @@ class CustomerCreation extends BaseForm ) )) ), - "label" => "email" + "label" => "Email", + "label_attr" => array( + "for" => "email" + ) )) ->add("email_confirm", "email", array( "constraints" => array( @@ -115,14 +142,20 @@ class CustomerCreation extends BaseForm ) )) ), - "label" => "email confirmation" + "label" => "Email confirmation", + "label_attr" => array( + "for" => "email-confirmation" + ) )) ->add("password", "password", array( "constraints" => array( new Constraints\NotBlank(), new Constraints\Length(array("min" => ConfigQuery::read("password.length", 4))) ), - "label" => "password" + "label" => "Password", + "label_attr" => array( + "for" => "password" + ) )) ->add("password_confirm", "password", array( "constraints" => array( @@ -132,7 +165,10 @@ class CustomerCreation extends BaseForm array($this, "verifyPasswordField") ))) ), - "label" => "password confirmation" + "label" => "Password confirmation", + "label_attr" => array( + "for" => "password-confirmation" + ) )) ; diff --git a/templates/admin/default/customers.html b/templates/admin/default/customers.html index ea498f72c..e7a8c37d2 100644 --- a/templates/admin/default/customers.html +++ b/templates/admin/default/customers.html @@ -10,130 +10,198 @@
-
+
- {module_include location='customer_top'} + {module_include location='customer_top'} -
-
-
- -
- {intl l="Customers list"} +
+
+
+ + + {loop type="auth" name="can_create" roles="ADMIN" permissions="admin.customers.create"} + + + + {/loop} + - {ifloop rel="customer_list"} - - - + {ifloop rel="customer_list"} + + + - + - {module_include location='category_list_header'} + {module_include location='category_list_header'} - + - + - + - - - + + + - - {loop name="customer_list" type="customer" current="false" visible="*" last_order="1" backend_context="1" page={$customer_page} limit={$display_customer}} - - + + {loop name="customer_list" type="customer" current="false" visible="*" last_order="1" backend_context="1" page={$customer_page} limit={$display_customer}} + + - + - + - {module_include location='customer_list_row'} + {module_include location='customer_list_row'} - + - - + + {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.customer.edit"} + + {/loop} + {loop type="auth" name="can_send_mail" roles="ADMIN" permissions="admin.customer.sendMail"} + + {/loop} + {loop type="auth" name="can_delete" roles="ADMIN" permissions="admin.customer.delete"} + + {/loop} + + - - {/loop} - - {/ifloop} -
+ {intl l="Customers list"} - {module_include location='customer_list_caption'} + {module_include location='customer_list_caption'} - {loop type="auth" name="can_create" roles="ADMIN" permissions="admin.customers.create"} - - - - {/loop} -
- {intl l="customer ref"} -
+ {intl l="customer ref"} + - {intl l="company"} - + {intl l="company"} + - {intl l="firstname & lastname"} - + {intl l="firstname & lastname"} + - {intl l="last order"} - + {intl l="last order"} + {intl l='order amount'}{intl l='order amount'}{intl l='Actions'}
{intl l='Actions'}
{#REF}
{#REF} - {#COMPANY} - + {#COMPANY} + - {#FIRSTNAME} {#LASTNAME} - + {#FIRSTNAME} {#LASTNAME} + - {format_date date=$LASTORDER_DATE} - + {format_date date=$LASTORDER_DATE} + - {format_number number=$LASTORDER_AMOUNT} - -
+
+ {format_number number=$LASTORDER_AMOUNT} + +
- {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.customer.edit"} - - {/loop} - {loop type="auth" name="can_send_mail" roles="ADMIN" permissions="admin.customer.sendMail"} - - {/loop} - {loop type="auth" name="can_delete" roles="ADMIN" permissions="admin.customer.delete"} - - {/loop} -
-
+ + {/loop} + + {/ifloop} +
+
+
+ + + {module_include location='customer_bottom'} +
+
+ +
    + {if #customer_page != 1} +
  • «
  • + {else} +
  • «
  • + {/if} + + {pageloop rel="customer_list"} + {if #PAGE != #CURRENT} +
  • #PAGE
  • + {else} +
  • #PAGE
  • + {/if} + + {if #PAGE == #LAST && #LAST != #CURRENT} +
  • »
  • + {else} +
  • »
  • + {/if} + {/pageloop} +
+
+
+
+ {* Adding a new Category *} - {module_include location='customer_bottom'} -
-
-
    - {if #customer_page != 1} -
  • «
  • - {else} -
  • «
  • - {/if} + {form name="thelia.customer.creation"} - {pageloop rel="customer_list"} - {if #PAGE != #CURRENT} -
  • #PAGE
  • - {else} -
  • #PAGE
  • - {/if} + {* Capture the dialog body, to pass it to the generic dialog *} + {capture "customer_creation_dialog"} - {if #PAGE == #LAST && #LAST != #CURRENT} -
  • »
  • - {else} -
  • »
  • - {/if} - {/pageloop} -
-
-
+ {form_hidden_fields form=$form} -
- + {form_field form=$form field='success_url'} + {* on success, redirect to the edition page, _ID_ is replaced with the created object ID, see controller *} + + {/form_field} + + {form_field form=$form field='firstname'} +
+ + +
+ {/form_field} + + {form_field form=$form field='lastname'} +
+ + +
+ {/form_field} + + {form_field form=$form field='address1'} +
+ + +
+ +
+ {form_field form=$form field='address2'} + + {/form_field} +
+ +
+ {form_field form=$form field='address3'} + + {/form_field} +
+ {/form_field} + + + + {/capture} + + {include + file = "includes/generic-create-dialog.html" + + dialog_id = "add_customer_dialog" + dialog_title = {intl l="Create a new customer"} + dialog_body = {$smarty.capture.customer_creation_dialog nofilter} + + dialog_ok_label = {intl l="Create this customer"} + dialog_cancel_label = {intl l="Cancel"} + + form_action = {url path='/admin/customer/create'} + form_enctype = {form_enctype form=$form} + form_error_message = $form_error_message + } + {/form} {/block} \ No newline at end of file From d6136c56d4e5d698a61c9c5515622d2aa3503403 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Wed, 11 Sep 2013 09:20:58 +0200 Subject: [PATCH 3/8] pse loop currency --- .../Thelia/Core/Template/Loop/ProductSaleElements.php | 11 +++++++---- templates/default_save/product.html | 6 +++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php index f1bbb198d..9330a7e90 100755 --- a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php +++ b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php @@ -68,9 +68,9 @@ class ProductSaleElements extends BaseLoop new Argument( 'order', new TypeCollection( - new Type\EnumListType(array('alpha', 'alpha_reverse', 'attribute', 'attribute_reverse')) + new Type\EnumListType(array('min_price', 'max_price', 'promo', 'new', 'random')) ), - 'attribute' + 'random' ) ); } @@ -125,8 +125,11 @@ class ProductSaleElements extends BaseLoop $defaultCurrency = CurrencyQuery::create()->findOneByByDefault(1); $defaultCurrencySuffix = '_default_currency'; - $search->joinProductPrice('price', Criteria::INNER_JOIN); - //->addJoinCondition('price', ''); + $search->joinProductPrice('price', Criteria::INNER_JOIN) + ->addJoinCondition('price', '`price`.`currency_id` = ?', $currency->getId(), null, \PDO::PARAM_INT); + + $search->joinProductPrice('price' . $defaultCurrencySuffix, Criteria::INNER_JOIN) + ->addJoinCondition('price_default_currency', '`price' . $defaultCurrencySuffix . '`.`currency_id` = ?', $defaultCurrency->getId(), null, \PDO::PARAM_INT); $search->withColumn('`price`.CURRENCY_ID', 'price_CURRENCY_ID') ->withColumn('`price`.PRICE', 'price_PRICE') diff --git a/templates/default_save/product.html b/templates/default_save/product.html index f78b7e296..9d8dda432 100755 --- a/templates/default_save/product.html +++ b/templates/default_save/product.html @@ -1,3 +1,5 @@ +{include file="includes/header.html"} + Here you are : {navigate to="current"}
From : {navigate to="return_to"}
Index : {navigate to="index"}
@@ -87,4 +89,6 @@ Index : {navigate to="index"}
{elseloop rel="product"}

Produit introuvable !

-{/elseloop} \ No newline at end of file +{/elseloop} + +{include file="includes/footer.html"} \ No newline at end of file From a6ada57b34c444ce8d886564a55cfe687ad14ad4 Mon Sep 17 00:00:00 2001 From: mespeche Date: Wed, 11 Sep 2013 10:20:31 +0200 Subject: [PATCH 4/8] Update body background --- templates/admin/default/assets/img/bg.jpg | Bin 26406 -> 50205 bytes .../assets/less/thelia/scaffolding.less | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/admin/default/assets/img/bg.jpg b/templates/admin/default/assets/img/bg.jpg index 76304b5cfb707d476a49a74af176d719dc296189..e29da1fc5dfc343073acfcb9d26beb4200e5c94c 100644 GIT binary patch literal 50205 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%0AD_axoRa4;rqb1m0ZP(Fpx*N=jvMKI!0C>WE(; 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 I%Rl%2FUVfy82|tP literal 26406 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 VyAaH2blVoktMT}5>&lO_{{`CiQgi?S diff --git a/templates/admin/default/assets/less/thelia/scaffolding.less b/templates/admin/default/assets/less/thelia/scaffolding.less index 1bc1a373c..1309638e4 100755 --- a/templates/admin/default/assets/less/thelia/scaffolding.less +++ b/templates/admin/default/assets/less/thelia/scaffolding.less @@ -7,7 +7,8 @@ // ------------------------- body { - background: url("@{imgDir}/bg.jpg") repeat; + background: #FFF url("@{imgDir}/bg.jpg") top left no-repeat; + background-size: cover; } From 40a87d50ce434b5a6e31b01fbb00b404bd42bfbf Mon Sep 17 00:00:00 2001 From: mespeche Date: Wed, 11 Sep 2013 10:21:07 +0200 Subject: [PATCH 5/8] Add modal for create/delete customer --- templates/admin/default/customers.html | 67 +++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/templates/admin/default/customers.html b/templates/admin/default/customers.html index 3fe8d5804..df2b9d684 100644 --- a/templates/admin/default/customers.html +++ b/templates/admin/default/customers.html @@ -90,7 +90,7 @@ {/loop} {loop type="auth" name="can_delete" roles="ADMIN" permissions="admin.customer.delete"} - + {/loop} @@ -133,7 +133,7 @@ - + {* Adding a new Category *} @@ -149,40 +149,74 @@ {/form_field} + + {form_field form=$form field='title'} +
+ + +
+ {/form_field} + {form_field form=$form field='firstname'}
- +
{/form_field} {form_field form=$form field='lastname'}
- +
{/form_field} {form_field form=$form field='address1'}
- +
{form_field form=$form field='address2'} - + {/form_field}
{form_field form=$form field='address3'} - + {/form_field}
{/form_field} - + {form_field form=$form field='zipcode'} +
+ + +
+ {/form_field} + + {form_field form=$form field='city'} +
+ + +
+ {/form_field} + + {form_field form=$form field='country'} +
+ + +
+ {/form_field} + + {form_field form=$form field='email'} +
+ + +
+ {/form_field} {/capture} @@ -202,4 +236,21 @@ } {/form} + {* Delete confirmation dialog *} + + {capture "delete_customer_dialog"} + + {/capture} + + {include + file = "includes/generic-confirm-dialog.html" + + dialog_id = "delete_customer_dialog" + dialog_title = {intl l="Delete customer"} + dialog_message = {intl l="Do you really want to delete this customer ?"} + + form_action = {url path='/admin/customer/delete'} + form_content = {$smarty.capture.delete_dialog nofilter} + } + {/block} \ No newline at end of file From e4362ba4146cbd5ae537eb8007fe4f9d7fb39f08 Mon Sep 17 00:00:00 2001 From: mespeche Date: Wed, 11 Sep 2013 10:47:31 +0200 Subject: [PATCH 6/8] Add customer view finish --- templates/admin/default/customers.html | 31 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/templates/admin/default/customers.html b/templates/admin/default/customers.html index f7dcfaa12..570c38bdc 100644 --- a/templates/admin/default/customers.html +++ b/templates/admin/default/customers.html @@ -151,42 +151,47 @@ {/form_field} - {form_field form=$form field='title'} + {form_field form=$form field='title'}
- + +
{/form_field} {form_field form=$form field='firstname'}
- +
{/form_field} {form_field form=$form field='lastname'}
- +
{/form_field} {form_field form=$form field='address1'}
- +
{form_field form=$form field='address2'} - + {/form_field}
{form_field form=$form field='address3'} - + {/form_field}
{/form_field} @@ -194,28 +199,32 @@ {form_field form=$form field='zipcode'}
- +
{/form_field} {form_field form=$form field='city'}
- +
{/form_field} {form_field form=$form field='country'}
- +
{/form_field} {form_field form=$form field='email'}
- +
{/form_field} From 3d31090344737a8dffafcb7077782400a68b9fb0 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Wed, 11 Sep 2013 10:51:44 +0200 Subject: [PATCH 7/8] currency management in PSE loop --- .../Template/Loop/ProductSaleElements.php | 30 +++++++++++-------- core/lib/Thelia/Core/Thelia.php | 2 +- templates/default_save/product.html | 6 ++-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php index 9330a7e90..1e379c76c 100755 --- a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php +++ b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php @@ -34,6 +34,7 @@ use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Model\Base\ProductSaleElementsQuery; use Thelia\Model\CountryQuery; use Thelia\Model\CurrencyQuery; +use Thelia\Model\Map\ProductSaleElementsTableMap; use Thelia\Type\TypeCollection; use Thelia\Type; @@ -41,7 +42,7 @@ use Thelia\Type; * * Product Sale Elements loop * - * @todo : manage currency and attribute_availability + * @todo : manage attribute_availability * * Class ProductSaleElements * @package Thelia\Core\Template\Loop @@ -94,16 +95,16 @@ class ProductSaleElements extends BaseLoop foreach ($orders as $order) { switch ($order) { case "min_price": - $search->addAscendingOrderByColumn('real_lowest_price', Criteria::ASC); + $search->addAscendingOrderByColumn('price_FINAL_PRICE', Criteria::ASC); break; case "max_price": - $search->addDescendingOrderByColumn('real_lowest_price'); + $search->addDescendingOrderByColumn('price_FINAL_PRICE'); break; case "promo": - $search->addDescendingOrderByColumn('main_product_is_promo'); + $search->orderByPromo(Criteria::DESC); break; case "new": - $search->addDescendingOrderByColumn('main_product_is_new'); + $search->orderByNewness(Criteria::DESC); break; case "random": $search->clearOrderByColumns(); @@ -125,15 +126,22 @@ class ProductSaleElements extends BaseLoop $defaultCurrency = CurrencyQuery::create()->findOneByByDefault(1); $defaultCurrencySuffix = '_default_currency'; - $search->joinProductPrice('price', Criteria::INNER_JOIN) + $search->joinProductPrice('price', Criteria::LEFT_JOIN) ->addJoinCondition('price', '`price`.`currency_id` = ?', $currency->getId(), null, \PDO::PARAM_INT); - $search->joinProductPrice('price' . $defaultCurrencySuffix, Criteria::INNER_JOIN) + $search->joinProductPrice('price' . $defaultCurrencySuffix, Criteria::LEFT_JOIN) ->addJoinCondition('price_default_currency', '`price' . $defaultCurrencySuffix . '`.`currency_id` = ?', $defaultCurrency->getId(), null, \PDO::PARAM_INT); - $search->withColumn('`price`.CURRENCY_ID', 'price_CURRENCY_ID') - ->withColumn('`price`.PRICE', 'price_PRICE') - ->withColumn('`price`.PROMO_PRICE', 'price_PROMO_PRICE'); + /** + * rate value is checked as a float in overloaded getRate method. + */ + $priceSelectorAsSQL = 'ROUND(CASE WHEN ISNULL(`price`.PRICE) THEN `price_default_currency`.PRICE * ' . $currency->getRate() . ' ELSE `price`.PRICE END, 2)'; + $promoPriceSelectorAsSQL = 'ROUND(CASE WHEN ISNULL(`price`.PRICE) THEN `price_default_currency`.PROMO_PRICE * ' . $currency->getRate() . ' ELSE `price`.PROMO_PRICE END, 2)'; + $search->withColumn($priceSelectorAsSQL, 'price_PRICE') + ->withColumn($promoPriceSelectorAsSQL, 'price_PROMO_PRICE') + ->withColumn('CASE WHEN ' . ProductSaleElementsTableMap::PROMO . ' = 1 THEN ' . $promoPriceSelectorAsSQL . ' ELSE ' . $priceSelectorAsSQL . ' END', 'price_FINAL_PRICE'); + + $search->groupById(); $PSEValues = $this->search($search, $pagination); @@ -156,8 +164,6 @@ class ProductSaleElements extends BaseLoop ->set("IS_PROMO", $PSEValue->getPromo() === 1 ? 1 : 0) ->set("IS_NEW", $PSEValue->getNewness() === 1 ? 1 : 0) ->set("WEIGHT", $PSEValue->getWeight()) - - ->set("CURRENCY", $PSEValue->getVirtualColumn('price_CURRENCY_ID')) ->set("PRICE", $price) ->set("PRICE_TAX", $taxedPrice - $price) ->set("TAXED_PRICE", $taxedPrice) diff --git a/core/lib/Thelia/Core/Thelia.php b/core/lib/Thelia/Core/Thelia.php index 9aedaaa29..eb560a484 100755 --- a/core/lib/Thelia/Core/Thelia.php +++ b/core/lib/Thelia/Core/Thelia.php @@ -83,7 +83,7 @@ class Thelia extends Kernel $con = Propel::getConnection(\Thelia\Model\Map\ProductTableMap::DATABASE_NAME); $con->setAttribute(ConnectionWrapper::PROPEL_ATTR_CACHE_PREPARES, true); if ($this->isDebug()) { - + $serviceContainer->setLogger('defaultLogger', \Thelia\Log\Tlog::getInstance()); $con->useDebug(true); } } diff --git a/templates/default_save/product.html b/templates/default_save/product.html index 9d8dda432..441585aba 100755 --- a/templates/default_save/product.html +++ b/templates/default_save/product.html @@ -1,4 +1,4 @@ -{include file="includes/header.html"} +{*include file="includes/header.html"*} Here you are : {navigate to="current"}
From : {navigate to="return_to"}
@@ -62,7 +62,7 @@ Index : {navigate to="index"}

Product sale elements

{assign var=current_product value=$ID} - {loop name="pse" type="product_sale_elements" product="$ID"} + {loop name="pse" type="product_sale_elements" product="$ID" order="promo,min_price"}
{loop name="combi" type="attribute_combination" product_sale_elements="$ID"} {$ATTRIBUTE_TITLE} = {$ATTRIBUTE_AVAILABILITY_TITLE}
@@ -91,4 +91,4 @@ Index : {navigate to="index"}

Produit introuvable !

{/elseloop} -{include file="includes/footer.html"} \ No newline at end of file +{*include file="includes/footer.html"*} \ No newline at end of file From c11821153c95f0c064765bf2c6994b0cc82ee491 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Wed, 11 Sep 2013 11:00:55 +0200 Subject: [PATCH 8/8] PSE loop todo --- core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php | 2 +- core/lib/Thelia/Core/Thelia.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php index 1e379c76c..980ade454 100755 --- a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php +++ b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php @@ -42,7 +42,7 @@ use Thelia\Type; * * Product Sale Elements loop * - * @todo : manage attribute_availability + * @todo : manage attribute_availability ? * * Class ProductSaleElements * @package Thelia\Core\Template\Loop diff --git a/core/lib/Thelia/Core/Thelia.php b/core/lib/Thelia/Core/Thelia.php index eb560a484..402059ddd 100755 --- a/core/lib/Thelia/Core/Thelia.php +++ b/core/lib/Thelia/Core/Thelia.php @@ -83,7 +83,7 @@ class Thelia extends Kernel $con = Propel::getConnection(\Thelia\Model\Map\ProductTableMap::DATABASE_NAME); $con->setAttribute(ConnectionWrapper::PROPEL_ATTR_CACHE_PREPARES, true); if ($this->isDebug()) { - $serviceContainer->setLogger('defaultLogger', \Thelia\Log\Tlog::getInstance()); + //$serviceContainer->setLogger('defaultLogger', \Thelia\Log\Tlog::getInstance()); $con->useDebug(true); } }