From 271e6c64f0e4682e52df4f217d6a8c2a70cf4f69 Mon Sep 17 00:00:00 2001 From: franck Date: Thu, 5 Sep 2013 10:00:17 +0200 Subject: [PATCH 01/29] Before merging coupon --- core/lib/Thelia/Action/Currency.php | 27 +++++++++----- .../Controller/Admin/CurrencyController.php | 21 ++++++----- .../Core/Event/BaseUpdatePositionEvent.php | 10 ------ .../Event/CurrencyUpdatePositionEvent.php | 2 +- .../Smarty/Plugins/AdminUtilities.php | 4 +-- .../Model/Tools/ModelEventDispatcherTrait.php | 5 +++ .../Model/Tools/PositionManagementTrait.php | 36 +++++++++++-------- templates/admin/default/currencies.html | 4 +-- 8 files changed, 64 insertions(+), 45 deletions(-) diff --git a/core/lib/Thelia/Action/Currency.php b/core/lib/Thelia/Action/Currency.php index 68cc5904a..7f9c3281f 100644 --- a/core/lib/Thelia/Action/Currency.php +++ b/core/lib/Thelia/Action/Currency.php @@ -107,6 +107,7 @@ class Currency extends BaseAction implements EventSubscriberInterface CurrencyQuery::create()->filterByByDefault(true)->update(array('ByDefault' => false)); $currency + ->setDispatcher($this->getDispatcher()) ->setByDefault($event->getIsDefault()) ->save() ; @@ -139,7 +140,7 @@ class Currency extends BaseAction implements EventSubscriberInterface $rates_url = ConfigQuery::read('currency_rate_update_url', 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml'); - $rate_data = file_get_contents($rates_url); + $rate_data = @file_get_contents($rates_url); if ($rate_data && $sxe = new \SimpleXMLElement($rate_data)) { @@ -149,12 +150,16 @@ class Currency extends BaseAction implements EventSubscriberInterface $rate = floatval($last['rate']); if (null !== $currency = CurrencyQuery::create()->findOneByCode($code)) { - $currency->setRate($rate)->save(); + $currency + ->setDispatcher($this->getDispatcher()) + ->setRate($rate) + ->save() + ; } } } else { - throw new \RuntimeException(sprintf("Failed to get currency rates data from URL %s", $url)); + throw new \RuntimeException(sprintf("Failed to get currency rates data from URL %s", $rates_url)); } } @@ -165,12 +170,18 @@ class Currency extends BaseAction implements EventSubscriberInterface */ public function updatePosition(CurrencyUpdatePositionEvent $event) { - if (null !== $category = CurrencyQuery::create()->findOneById($event->getObjectId())) { + if (null !== $currency = CurrencyQuery::create()->findOneById($event->getObjectId())) { - if ($event->getMode() == BaseChangePositionEvent::POSITION_ABSOLUTE) - return $category->changeAbsolutePosition($event->getPosition()); - else - return $this->exchangePosition($event->getMode()); + $currency->setDispatcher($this->getDispatcher()); + + $mode = $event->getMode(); + + if ($mode == CurrencyUpdatePositionEvent::POSITION_ABSOLUTE) + return $currency->changeAbsolutePosition($event->getPosition()); + else if ($mode == CurrencyUpdatePositionEvent::POSITION_UP) + return $currency->movePositionUp(); + else if ($mode == CurrencyUpdatePositionEvent::POSITION_DOWN) + return $currency->movePositionDown(); } } diff --git a/core/lib/Thelia/Controller/Admin/CurrencyController.php b/core/lib/Thelia/Controller/Admin/CurrencyController.php index caa3d1bed..56acfb89d 100644 --- a/core/lib/Thelia/Controller/Admin/CurrencyController.php +++ b/core/lib/Thelia/Controller/Admin/CurrencyController.php @@ -316,17 +316,22 @@ class CurrencyController extends BaseAdminController if (null !== $response = $this->checkAuth("admin.configuration.currencies.update")) return $response; try { - $id = $this->getRequest()->get('currency_id', 0); $mode = $this->getRequest()->get('mode', null); + + if ($mode == 'up') + $mode = CurrencyUpdatePositionEvent::POSITION_UP; + else if ($mode == 'down') + $mode = CurrencyUpdatePositionEvent::POSITION_DOWN; + else + $mode = CurrencyUpdatePositionEvent::POSITION_ABSOLUTE; + $position = $this->getRequest()->get('position', null); - $event = new CurrencyUpdatePositionEvent(); - - $event - ->setObjectId($this->getRequest()->get('currency_id', 0)) - ->setPosition($this->getRequest()->get('position', 0)) - ->setMode($mode) - ; + $event = new CurrencyUpdatePositionEvent( + $this->getRequest()->get('currency_id', null), + $mode, + $this->getRequest()->get('position', null) + ); $this->dispatch(TheliaEvents::CURRENCY_UPDATE_POSITION, $event); } diff --git a/core/lib/Thelia/Core/Event/BaseUpdatePositionEvent.php b/core/lib/Thelia/Core/Event/BaseUpdatePositionEvent.php index 3587a0757..41907c29c 100644 --- a/core/lib/Thelia/Core/Event/BaseUpdatePositionEvent.php +++ b/core/lib/Thelia/Core/Event/BaseUpdatePositionEvent.php @@ -74,14 +74,4 @@ class BaseUpdatePositionEvent extends ActionEvent $this->object_id = $object_id; return $this; } - - public function getObjectId() - { - return $this->object_id; - } - - public function setObjectId($object_id) - { - $this->object_id = $object_id; - } } diff --git a/core/lib/Thelia/Core/Event/CurrencyUpdatePositionEvent.php b/core/lib/Thelia/Core/Event/CurrencyUpdatePositionEvent.php index 655e24c9a..3a3dbb18f 100644 --- a/core/lib/Thelia/Core/Event/CurrencyUpdatePositionEvent.php +++ b/core/lib/Thelia/Core/Event/CurrencyUpdatePositionEvent.php @@ -23,6 +23,6 @@ namespace Thelia\Core\Event; -class CategoryChangePositionEvent extends BaseChangePositionEvent +class CurrencyUpdatePositionEvent extends BaseUpdatePositionEvent { } \ No newline at end of file diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php index fcea9ffd6..12ac13276 100644 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/AdminUtilities.php @@ -71,11 +71,11 @@ class AdminUtilities extends AbstractSmartyPlugin if ($permissions == null || $this->securityContext->isGranted("ADMIN", array($permission))) { return sprintf( '%s', - URL::getInstance()->absoluteUrl("$path/positionUp", array($url_parameter => $id)), + URL::getInstance()->absoluteUrl($path, array('mode' => 'up', $url_parameter => $id)), $in_place_edit_class, $id, $position, - URL::getInstance()->absoluteUrl("$path/positionDown", array($url_parameter => $id)) + URL::getInstance()->absoluteUrl($path, array('mode' => 'down', $url_parameter => $id)) ); } else { diff --git a/core/lib/Thelia/Model/Tools/ModelEventDispatcherTrait.php b/core/lib/Thelia/Model/Tools/ModelEventDispatcherTrait.php index 7e2e34d83..17af1e44d 100644 --- a/core/lib/Thelia/Model/Tools/ModelEventDispatcherTrait.php +++ b/core/lib/Thelia/Model/Tools/ModelEventDispatcherTrait.php @@ -44,6 +44,11 @@ trait ModelEventDispatcherTrait { return $this; } + public function getDispatcher() + { + return $this->dispatcher; + } + protected function dispatchEvent($eventName, ActionEvent $event) { if (!is_null($this->dispatcher)) { diff --git a/core/lib/Thelia/Model/Tools/PositionManagementTrait.php b/core/lib/Thelia/Model/Tools/PositionManagementTrait.php index eccbb00dd..3261f42ec 100644 --- a/core/lib/Thelia/Model/Tools/PositionManagementTrait.php +++ b/core/lib/Thelia/Model/Tools/PositionManagementTrait.php @@ -25,6 +25,7 @@ namespace Thelia\Model\Tools; use Propel\Runtime\ActiveQuery\PropelQuery; use Propel\Runtime\ActiveQuery\Criteria; +use Propel\Runtime\Propel; trait PositionManagementTrait { @@ -51,10 +52,12 @@ trait PositionManagementTrait { public function getNextPosition($parent) { $last = $this->createQuery() - ->filterByParent($parent) ->orderByPosition(Criteria::DESC) - ->limit(1) - ->findOne() + ->limit(1); + + if ($parent !== null) $last->filterByParent($parent); + + $last->findOne() ; return $last != null ? $last->getPosition() + 1 : 1; @@ -63,14 +66,14 @@ trait PositionManagementTrait { /** * Move up a object */ - protected function movePositionUp() { + public function movePositionUp() { $this->movePositionUpOrDown(true); } /** * Move down a object */ - protected function movePositionDown() { + public function movePositionDown() { $this->movePositionUpOrDown(false); } @@ -85,8 +88,9 @@ trait PositionManagementTrait { $my_position = $this->getPosition(); // Find object to exchange position with - $search = $this->createQuery() - ->filterByParent($this->getParent()); + $search = $this->createQuery(); + + if (method_exists($this, 'getParent')) $search->filterByParent($this->getParent()); // Up or down ? if ($up === true) { @@ -103,18 +107,21 @@ trait PositionManagementTrait { // If we found the proper object, exchange their positions if ($result) { - $cnx = Propel::getWriteConnection(CategoryTableMap::DATABASE_NAME); + // Find DATABASE_NAME constant + $mapClassName = self::TABLE_MAP; + $database_name = $mapClassName::DATABASE_NAME; + + $cnx = Propel::getWriteConnection($database_name); $cnx->beginTransaction(); try { $this - ->setDispatcher($this->getDispatcher()) ->setPosition($result->getPosition()) ->save() ; - $result->setPosition($my_position)->save(); + $result->setDispatcher($this->getDispatcher())->setPosition($my_position)->save(); $cnx->commit(); } catch (Exception $e) { @@ -128,7 +135,7 @@ trait PositionManagementTrait { * * @param newPosition */ - protected function changeAbsolutePosition($newPosition) + public function changeAbsolutePosition($newPosition) { // The current position $current_position = $this->getPosition(); @@ -136,7 +143,9 @@ trait PositionManagementTrait { if ($newPosition != null && $newPosition > 0 && $newPosition != $current_position) { // Find categories to offset - $search = $this->createQuery()->filterByParent($this->getParent()); + $search = $this->createQuery(); + + if (method_exists($this, 'getParent')) $search->filterByParent($this->getParent()); if ($newPosition > $current_position) { // The new position is after the current position -> we will offset + 1 all categories located between us and the new position @@ -158,11 +167,10 @@ trait PositionManagementTrait { try { foreach ($results as $result) { - $result->setPosition($result->getPosition() + $delta)->save($cnx); + $result->setDispatcher($this->getDispatcher())->setPosition($result->getPosition() + $delta)->save($cnx); } $this - ->setDispatcher($this->getDispatcher()) ->setPosition($newPosition) ->save($cnx) ; diff --git a/templates/admin/default/currencies.html b/templates/admin/default/currencies.html index d446de776..7b7610d59 100644 --- a/templates/admin/default/currencies.html +++ b/templates/admin/default/currencies.html @@ -138,7 +138,7 @@ {admin_position_block permission="admin.currencies.edit" - path="/admin/configuration/currencies" + path="/admin/configuration/currencies/update-position" url_parameter="currency_id" in_place_edit_class="currencyPositionChange" position="$POSITION" @@ -371,7 +371,7 @@ placement : 'left', success : function(response, newValue) { // The URL template - var url = "{url path='/admin/configuration/currencies/updatePosition' currency_id='__ID__' position='__POS__'}"; + var url = "{url path='/admin/configuration/currencies/update-position' currency_id='__ID__' position='__POS__'}"; // Perform subtitutions url = url.replace('__ID__', $(this).data('id')) From c63120478bc7c85974f5c0959c84cedd9d287d4c Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Thu, 5 Sep 2013 12:25:27 +0200 Subject: [PATCH 02/29] start refactorin rewriting routing --- .../Controller/Front/UrlRewritingController.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/core/lib/Thelia/Controller/Front/UrlRewritingController.php b/core/lib/Thelia/Controller/Front/UrlRewritingController.php index 2e725aecd..a024cbaea 100755 --- a/core/lib/Thelia/Controller/Front/UrlRewritingController.php +++ b/core/lib/Thelia/Controller/Front/UrlRewritingController.php @@ -53,7 +53,7 @@ class UrlRewritingController extends BaseFrontController /* define GET arguments in request */ if(null !== $rewrittenUrlData->view) { - $request->query->set('view', $rewrittenUrlData->view); + $request->attributes->set('_view', $rewrittenUrlData->view); if(null !== $rewrittenUrlData->viewId) { $request->query->set($rewrittenUrlData->view . '_id', $rewrittenUrlData->viewId); } @@ -66,16 +66,6 @@ class UrlRewritingController extends BaseFrontController $request->query->set($parameter, $value); } } - - if (! $view = $request->query->get('view')) { - $view = "index"; - if ($request->request->has('view')) { - $view = $request->request->get('view'); - } - } - - $request->attributes->set('_view', $view); - } } From e289c8026fbea4089d29965131b00f12766f32bd Mon Sep 17 00:00:00 2001 From: mespeche Date: Thu, 5 Sep 2013 16:51:45 +0200 Subject: [PATCH 03/29] Working : For attributes on labels --- templates/admin/default/admin-layout.tpl | 4 +--- templates/admin/default/categories.html | 12 ++-------- templates/admin/default/currencies.html | 28 +++++++++++----------- templates/admin/default/currency-edit.html | 24 +++++++++---------- 4 files changed, 29 insertions(+), 39 deletions(-) diff --git a/templates/admin/default/admin-layout.tpl b/templates/admin/default/admin-layout.tpl index 8bef5c011..3752c355b 100644 --- a/templates/admin/default/admin-layout.tpl +++ b/templates/admin/default/admin-layout.tpl @@ -210,9 +210,7 @@ {block name="before-javascript-include"}{/block} - {javascripts file='assets/js/jquery.min.js'} - - {/javascripts} + {block name="after-javascript-include"}{/block} diff --git a/templates/admin/default/categories.html b/templates/admin/default/categories.html index fdf2ab093..e3f3e9fde 100755 --- a/templates/admin/default/categories.html +++ b/templates/admin/default/categories.html @@ -4,12 +4,6 @@ {block name="check-permissions"}admin.catalog.view{/block} -{block name="after-admin-css"} - {stylesheets file='assets/bootstrap-editable/css/bootstrap-editable.css' filters='cssembed'} - - {/stylesheets} -{/block} - {block name="main-content"}
@@ -278,13 +272,11 @@ {include file="includes/delete-category-dialog.html"} {/block} -{block name="after-javascript-include"} - {javascripts file='assets/bootstrap-editable/js/bootstrap-editable.js'} +{block name="javascript-initialization"} + {javascripts file='assets/js/bootstrap-editable/bootstrap-editable.js'} {/javascripts} -{/block} -{block name="javascript-initialization"} + {/javascripts} {javascripts file='assets/js/bootstrap-editable/bootstrap-editable.js'} @@ -368,7 +374,7 @@ {* Change default status *} - $('.change-default').click(function(ev) { + $('.change-default').change(function(ev) { var url = "{url path='/admin/configuration/currencies/set-default' currency_id='__ID__'}"; // Perform ID subtitutions diff --git a/templates/admin/default/includes/add-category-dialog.html b/templates/admin/default/includes/add-category-dialog.html index 520043a77..0e62994f7 100755 --- a/templates/admin/default/includes/add-category-dialog.html +++ b/templates/admin/default/includes/add-category-dialog.html @@ -15,17 +15,17 @@
{* the action processed by the controller *} - + {form_hidden_fields form=$form} {form_field form=$form field='parent'} - + {/form_field} {form_field form=$form field='success_url'} {* on success, redirect to category change page. _ID_ is replaced with the ID of the created category (see Thelia\Action\Category.php) *} - + {/form_field}