From 3a4bff634e9ee8ef17c19ce8ca372d4f2dd88396 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 16 Nov 2013 21:30:45 +0100 Subject: [PATCH 01/70] Adding/Refactoring unit test for ConditionEvaluator --- .../Condition/ConditionEvaluatorTest.php | 397 ++++-------------- 1 file changed, 75 insertions(+), 322 deletions(-) diff --git a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php index dac865a7d..46f597cf2 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php @@ -51,328 +51,11 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase { } - public function testTestSuccess1Rules() - { - $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') - ->disableOriginalConstructor() - ->getMock(); - - /** @var FacadeInterface $stubFacade */ - $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') - ->disableOriginalConstructor() - ->getMock(); - - $stubFacade->expects($this->any()) - ->method('getTranslator') - ->will($this->returnValue($stubTranslator)); - $stubFacade->expects($this->any()) - ->method('getConditionEvaluator') - ->will($this->returnValue(new ConditionEvaluator())); - - $currencies = CurrencyQuery::create(); - $currencies = $currencies->find(); - $stubFacade->expects($this->any()) - ->method('getAvailableCurrencies') - ->will($this->returnValue($currencies)); - - $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') - ->disableOriginalConstructor() - ->getMock(); - - $stubMatchForTotalAmountManager = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForTotalAmountManager') - ->disableOriginalConstructor() - ->getMock(); - $stubMatchForTotalAmountManager->expects($this->any()) - ->method('isMatching') - ->will($this->returnValue(true)); - - $stubContainer->expects($this->any()) - ->method('get') - ->will($this->returnValue($stubMatchForTotalAmountManager)); - - $stubContainer->expects($this->any()) - ->method('has') - ->will($this->returnValue(true)); - - $stubFacade->expects($this->any()) - ->method('getContainer') - ->will($this->returnValue($stubContainer)); - $stubFacade->expects($this->any()) - ->method('getCheckoutCurrency') - ->will($this->returnValue('EUR')); - $stubFacade->expects($this->any()) - ->method('getCartTotalPrice') - ->will($this->returnValue(401.00)); - - $condition1 = new MatchForTotalAmountManager($stubFacade); - $operators = array( - MatchForTotalAmountManager::INPUT1 => '>', - MatchForTotalAmountManager::INPUT2 => '==' - ); - $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); - $condition1->setValidatorsFromForm($operators, $values); - - $conditions = new ConditionCollection(); - $conditions->add($condition1); - - $conditionEvaluator = new ConditionEvaluator(); - $isValid = $conditionEvaluator->isMatching($conditions); - - $expected = true; - $actual =$isValid; - $this->assertEquals($expected, $actual); - } - - public function testTestFail1Rules() - { - $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') - ->disableOriginalConstructor() - ->getMock(); - - /** @var FacadeInterface $stubFacade */ - $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') - ->disableOriginalConstructor() - ->getMock(); - - $stubFacade->expects($this->any()) - ->method('getTranslator') - ->will($this->returnValue($stubTranslator)); - $stubFacade->expects($this->any()) - ->method('getConditionEvaluator') - ->will($this->returnValue(new ConditionEvaluator())); - - $currencies = CurrencyQuery::create(); - $currencies = $currencies->find(); - $stubFacade->expects($this->any()) - ->method('getAvailableCurrencies') - ->will($this->returnValue($currencies)); - - $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') - ->disableOriginalConstructor() - ->getMock(); - - $stubMatchForTotalAmountManager = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForTotalAmountManager') - ->disableOriginalConstructor() - ->getMock(); - $stubMatchForTotalAmountManager->expects($this->any()) - ->method('isMatching') - ->will($this->returnValue(true)); - - $stubContainer->expects($this->any()) - ->method('get') - ->will($this->returnValue($stubMatchForTotalAmountManager)); - - $stubContainer->expects($this->any()) - ->method('has') - ->will($this->returnValue(true)); - - $stubFacade->expects($this->any()) - ->method('getContainer') - ->will($this->returnValue($stubContainer)); - $stubFacade->expects($this->any()) - ->method('getCheckoutCurrency') - ->will($this->returnValue('EUR')); - $stubFacade->expects($this->any()) - ->method('getCartTotalPrice') - ->will($this->returnValue(400.00)); - - $condition1 = new MatchForTotalAmountManager($stubFacade); - $operators = array( - MatchForTotalAmountManager::INPUT1 => '>', - MatchForTotalAmountManager::INPUT2 => '==' - ); - $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); - $condition1->setValidatorsFromForm($operators, $values); - - $conditions = new ConditionCollection(); - $conditions->add($condition1); - - $conditionEvaluator = new ConditionEvaluator(); - $isValid = $conditionEvaluator->isMatching($conditions); - - $expected = false; - $actual =$isValid; - $this->assertEquals($expected, $actual, 'Conditions evaluator always think Customer is matching conditions'); - } - - public function testTestSuccess2Rules() - { - $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') - ->disableOriginalConstructor() - ->getMock(); - - /** @var FacadeInterface $stubFacade */ - $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') - ->disableOriginalConstructor() - ->getMock(); - - $stubFacade->expects($this->any()) - ->method('getTranslator') - ->will($this->returnValue($stubTranslator)); - $stubFacade->expects($this->any()) - ->method('getConditionEvaluator') - ->will($this->returnValue(new ConditionEvaluator())); - - $currencies = CurrencyQuery::create(); - $currencies = $currencies->find(); - $stubFacade->expects($this->any()) - ->method('getAvailableCurrencies') - ->will($this->returnValue($currencies)); - - $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') - ->disableOriginalConstructor() - ->getMock(); - - $stubMatchForTotalAmountManager = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForTotalAmountManager') - ->disableOriginalConstructor() - ->getMock(); - $stubMatchForTotalAmountManager->expects($this->any()) - ->method('isMatching') - ->will($this->returnValue(true)); - - $stubContainer->expects($this->any()) - ->method('get') - ->will($this->returnValue($stubMatchForTotalAmountManager)); - - $stubContainer->expects($this->any()) - ->method('has') - ->will($this->returnValue(true)); - - $stubFacade->expects($this->any()) - ->method('getContainer') - ->will($this->returnValue($stubContainer)); - $stubFacade->expects($this->any()) - ->method('getCheckoutCurrency') - ->will($this->returnValue('EUR')); - $stubFacade->expects($this->any()) - ->method('getCartTotalPrice') - ->will($this->returnValue(401.00)); - $stubFacade->expects($this->any()) - ->method('getNbArticlesInCart') - ->will($this->returnValue(5)); - - $condition1 = new MatchForTotalAmountManager($stubFacade); - $operators = array( - MatchForTotalAmountManager::INPUT1 => '>', - MatchForTotalAmountManager::INPUT2 => '==' - ); - $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); - $condition1->setValidatorsFromForm($operators, $values); - - $condition2 = new MatchForXArticlesManager($stubFacade); - $operators = array( - MatchForXArticlesManager::INPUT1 => '>' - ); - $values = array( - MatchForXArticlesManager::INPUT1 => 4 - ); - $condition2->setValidatorsFromForm($operators, $values); - - $conditions = new ConditionCollection(); - $conditions->add($condition1); - $conditions->add($condition2); - - $conditionEvaluator = new ConditionEvaluator(); - $isValid = $conditionEvaluator->isMatching($conditions); - - $expected = true; - $actual =$isValid; - $this->assertEquals($expected, $actual); - } - - public function testTestFail2Rules() - { - $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') - ->disableOriginalConstructor() - ->getMock(); - - /** @var FacadeInterface $stubFacade */ - $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') - ->disableOriginalConstructor() - ->getMock(); - - $stubFacade->expects($this->any()) - ->method('getTranslator') - ->will($this->returnValue($stubTranslator)); - $stubFacade->expects($this->any()) - ->method('getConditionEvaluator') - ->will($this->returnValue(new ConditionEvaluator())); - - $currencies = CurrencyQuery::create(); - $currencies = $currencies->find(); - $stubFacade->expects($this->any()) - ->method('getAvailableCurrencies') - ->will($this->returnValue($currencies)); - - $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') - ->disableOriginalConstructor() - ->getMock(); - - $stubMatchForTotalAmountManager = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForTotalAmountManager') - ->disableOriginalConstructor() - ->getMock(); - $stubMatchForTotalAmountManager->expects($this->any()) - ->method('isMatching') - ->will($this->returnValue(true)); - - $stubContainer->expects($this->any()) - ->method('get') - ->will($this->returnValue($stubMatchForTotalAmountManager)); - - $stubContainer->expects($this->any()) - ->method('has') - ->will($this->returnValue(true)); - - $stubFacade->expects($this->any()) - ->method('getContainer') - ->will($this->returnValue($stubContainer)); - $stubFacade->expects($this->any()) - ->method('getCheckoutCurrency') - ->will($this->returnValue('EUR')); - $stubFacade->expects($this->any()) - ->method('getCartTotalPrice') - ->will($this->returnValue(400.00)); - $stubFacade->expects($this->any()) - ->method('getNbArticlesInCart') - ->will($this->returnValue(5)); - - $condition1 = new MatchForTotalAmountManager($stubFacade); - $operators = array( - MatchForTotalAmountManager::INPUT1 => '>', - MatchForTotalAmountManager::INPUT2 => '==' - ); - $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); - $condition1->setValidatorsFromForm($operators, $values); - - $condition2 = new MatchForXArticlesManager($stubFacade); - $operators = array( - MatchForXArticlesManager::INPUT1 => '>' - ); - $values = array( - MatchForXArticlesManager::INPUT1 => 4 - ); - $condition2->setValidatorsFromForm($operators, $values); - - $conditions = new ConditionCollection(); - $conditions->add($condition1); - $conditions->add($condition2); - - $conditionEvaluator = new ConditionEvaluator(); - $isValid = $conditionEvaluator->isMatching($conditions); - - $expected = false; - $actual =$isValid; - $this->assertEquals($expected, $actual, 'Conditions evaluator always think Customer is matching conditions'); - } - + /** + * Test vatiable comparison + * + * @covers Thelia\Condition\ConditionEvaluator::variableOpComparison + */ public function testVariableOpComparisonSuccess() { $conditionEvaluator = new ConditionEvaluator(); @@ -409,6 +92,11 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase } + /** + * Test vatiable comparison + * + * @covers Thelia\Condition\ConditionEvaluator::variableOpComparison + */ public function testVariableOpComparisonFail() { $conditionEvaluator = new ConditionEvaluator(); @@ -440,7 +128,10 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase } /** + * Test vatiable comparison + * * @expectedException \Exception + * @covers Thelia\Condition\ConditionEvaluator::variableOpComparison */ public function testVariableOpComparisonException() { @@ -450,6 +141,68 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $actual); } + /** + * Test condition collection matching + * + * @covers Thelia\Condition\ConditionEvaluator::isMatching + */ + public function testIsMatchingTrue() + { + $stubConditionTrue1 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionTrue1->expects($this->any()) + ->method('isMatching') + ->will($this->returnValue(true)); + + $stubConditionTrue2 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionTrue2->expects($this->any()) + ->method('isMatching') + ->will($this->returnValue(true)); + + $collection = new ConditionCollection(); + $collection->add($stubConditionTrue1); + $collection->add($stubConditionTrue2); + + $conitionEvaluator = new ConditionEvaluator(); + $actual = $conitionEvaluator->isMatching($collection); + + $this->assertTrue($actual); + } + + /** + * Test condition collection matching + * + * @covers Thelia\Condition\ConditionEvaluator::isMatching + */ + public function testIsMatchingFalse() + { + $stubConditionTrue = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionTrue->expects($this->any()) + ->method('isMatching') + ->will($this->returnValue(true)); + + $stubConditionFalse = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFalse->expects($this->any()) + ->method('isMatching') + ->will($this->returnValue(false)); + + $collection = new ConditionCollection(); + $collection->add($stubConditionTrue); + $collection->add($stubConditionFalse); + + $conitionEvaluator = new ConditionEvaluator(); + $actual = $conitionEvaluator->isMatching($collection); + + $this->assertFalse($actual); + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. From 5679f54ec0cce0b2f701000f44ca3b863d89974f Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 16 Nov 2013 23:58:49 +0100 Subject: [PATCH 02/70] Adding/Refactoring unit test for ConditionFactory/ConditionManagerAbstract --- .../Condition/ConditionManagerAbstract.php | 16 ++--- .../MatchForTotalAmountManager.php | 6 +- .../MatchForXArticlesManager.php | 2 +- core/lib/Thelia/Config/Resources/coupon.xml | 19 ++--- .../Tests/Condition/ConditionFactoryTest.php | 60 ++++++++++++++++ .../MatchForTotalAmountManagerTest.php | 70 +++++++++++++++++++ 6 files changed, 152 insertions(+), 21 deletions(-) diff --git a/core/lib/Thelia/Condition/ConditionManagerAbstract.php b/core/lib/Thelia/Condition/ConditionManagerAbstract.php index bf38ef387..97418178f 100644 --- a/core/lib/Thelia/Condition/ConditionManagerAbstract.php +++ b/core/lib/Thelia/Condition/ConditionManagerAbstract.php @@ -54,7 +54,7 @@ abstract class ConditionManagerAbstract implements ConditionManagerInterface protected $validators = array(); /** @var FacadeInterface Provide necessary value from Thelia */ - protected $adapter = null; + protected $facade = null; /** @var Translator Service Translator */ protected $translator = null; @@ -71,13 +71,13 @@ abstract class ConditionManagerAbstract implements ConditionManagerInterface /** * Constructor * - * @param FacadeInterface $adapter Service adapter + * @param FacadeInterface $facade Service Facade */ - public function __construct(FacadeInterface $adapter) + public function __construct(FacadeInterface $facade) { - $this->adapter = $adapter; - $this->translator = $adapter->getTranslator(); - $this->conditionValidator = $adapter->getConditionEvaluator(); + $this->facade = $facade; + $this->translator = $facade->getTranslator(); + $this->conditionValidator = $facade->getConditionEvaluator(); } /** @@ -181,9 +181,9 @@ abstract class ConditionManagerAbstract implements ConditionManagerInterface * @return bool * @throws \Thelia\Exception\InvalidConditionValueException */ - protected function IsCurrencyValid($currencyValue) + protected function isCurrencyValid($currencyValue) { - $availableCurrencies = $this->adapter->getAvailableCurrencies(); + $availableCurrencies = $this->facade->getAvailableCurrencies(); /** @var Currency $currency */ $currencyFound = false; foreach ($availableCurrencies as $currency) { diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php index bc158c878..874ad508e 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php @@ -124,7 +124,7 @@ class MatchForTotalAmountManager extends ConditionManagerAbstract $this->isPriceValid($priceValue); - $this->IsCurrencyValid($currencyValue); + $this->isCurrencyValid($currencyValue); $this->operators = array( @@ -160,12 +160,12 @@ class MatchForTotalAmountManager extends ConditionManagerAbstract } $condition1 = $this->conditionValidator->variableOpComparison( - $this->adapter->getCartTotalPrice(), + $this->facade->getCartTotalPrice(), $this->operators[self::INPUT1], $this->values[self::INPUT1] ); $condition2 = $this->conditionValidator->variableOpComparison( - $this->adapter->getCheckoutCurrency(), + $this->facade->getCheckoutCurrency(), $this->operators[self::INPUT2], $this->values[self::INPUT2] ); diff --git a/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php b/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php index 05de953d0..d8721cb07 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php @@ -124,7 +124,7 @@ class MatchForXArticlesManager extends ConditionManagerAbstract public function isMatching() { $condition1 = $this->conditionValidator->variableOpComparison( - $this->adapter->getNbArticlesInCart(), + $this->facade->getNbArticlesInCart(), $this->operators[self::INPUT1], $this->values[self::INPUT1] ); diff --git a/core/lib/Thelia/Config/Resources/coupon.xml b/core/lib/Thelia/Config/Resources/coupon.xml index fc327911c..8be9ea59f 100644 --- a/core/lib/Thelia/Config/Resources/coupon.xml +++ b/core/lib/Thelia/Config/Resources/coupon.xml @@ -9,7 +9,7 @@ - + @@ -20,11 +20,11 @@ - + - + @@ -36,17 +36,18 @@ - - - - - + - + + + + + + diff --git a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php index 28e81ee77..b211c4ddf 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php @@ -387,6 +387,66 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase } + /** + * Test condition serialization if collection is empty + * + * @covers Thelia\Condition\ConditionFactory::serializeConditionCollection + */ + public function testSerializeConditionCollectionEmpty() + { + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + + /** @var FacadeInterface $stubFacade */ + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') + ->disableOriginalConstructor() + ->getMock(); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->returnValue(new MatchForEveryoneManager($stubFacade))); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $stubFacade->expects($this->any()) + ->method('getContainer') + ->will($this->returnValue($stubContainer)); + + + $conditions = new ConditionCollection(); + + $conditionFactory = new ConditionFactory($stubContainer); + + + $conditionNone = new MatchForEveryoneManager($stubFacade); + $expectedCollection = new ConditionCollection(); + $expectedCollection->add($conditionNone); + + $expected = $conditionFactory->serializeConditionCollection($expectedCollection); + $actual = $conditionFactory->serializeConditionCollection($conditions); + + $this->assertEquals($expected, $actual); + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 465f27225..2881c4e42 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -24,10 +24,13 @@ namespace Thelia\Condition\Implementation; use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\ConditionFactory; use Thelia\Condition\Operators; +use Thelia\Coupon\ConditionCollection; use Thelia\Coupon\FacadeInterface; use Thelia\Exception\InvalidConditionValueException; use Thelia\Model\Currency; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -599,6 +602,73 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $actual); } + /** + * Check unknown currency + * + * @covers Thelia\Condition\ConditionManagerAbstract::isCurrencyValid + * @expectedException \Thelia\Exception\InvalidConditionValueException + * + */ + public function testUnknownCurrency() + { + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + + /** @var FacadeInterface $stubFacade */ + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'UNK'); + $condition1->setValidatorsFromForm($operators, $values); + + + $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') + ->disableOriginalConstructor() + ->getMock(); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->returnValue($condition1)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $stubFacade->expects($this->any()) + ->method('getContainer') + ->will($this->returnValue($stubContainer)); + + $conditionFactory = new ConditionFactory($stubContainer); + + $collection = new ConditionCollection(); + $collection->add($condition1); + + $serialized = $conditionFactory->serializeConditionCollection($collection); + $unserialized = $conditionFactory->unserializeConditionCollection($serialized); + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. From a574a176bc39c20b7788aac6b4bf3d061e1b540b Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 00:12:13 +0100 Subject: [PATCH 03/70] Adding/Refactoring unit test for ConditionFactory/ConditionManagerAbstract --- .../MatchForTotalAmountManagerTest.php | 136 +++++++++++++++++- 1 file changed, 135 insertions(+), 1 deletion(-) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 2881c4e42..6eb59d0fc 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -609,7 +609,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase * @expectedException \Thelia\Exception\InvalidConditionValueException * */ - public function testUnknownCurrency() + public function testUnknownCurrencyCode() { $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') ->disableOriginalConstructor() @@ -669,6 +669,140 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $unserialized = $conditionFactory->unserializeConditionCollection($serialized); } + /** + * Check invalid currency + * + * @covers Thelia\Condition\ConditionManagerAbstract::isPriceValid + * @expectedException \Thelia\Exception\InvalidConditionValueException + * + */ + public function testInvalidCurrencyValue() + { + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + + /** @var FacadeInterface $stubFacade */ + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 'notfloat', + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + + $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') + ->disableOriginalConstructor() + ->getMock(); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->returnValue($condition1)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $stubFacade->expects($this->any()) + ->method('getContainer') + ->will($this->returnValue($stubContainer)); + + $conditionFactory = new ConditionFactory($stubContainer); + + $collection = new ConditionCollection(); + $collection->add($condition1); + + $serialized = $conditionFactory->serializeConditionCollection($collection); + $unserialized = $conditionFactory->unserializeConditionCollection($serialized); + } + + /** + * Check invalid currency + * + * @covers Thelia\Condition\ConditionManagerAbstract::isPriceValid + * @expectedException \Thelia\Exception\InvalidConditionValueException + * + */ + public function testPriceAsZero() + { + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + + /** @var FacadeInterface $stubFacade */ + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 0.00, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + + $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') + ->disableOriginalConstructor() + ->getMock(); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->returnValue($condition1)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $stubFacade->expects($this->any()) + ->method('getContainer') + ->will($this->returnValue($stubContainer)); + + $conditionFactory = new ConditionFactory($stubContainer); + + $collection = new ConditionCollection(); + $collection->add($condition1); + + $serialized = $conditionFactory->serializeConditionCollection($collection); + $unserialized = $conditionFactory->unserializeConditionCollection($serialized); + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. From 93c004bce2cc349b7203a3b0e0f2cb9a7828524a Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 00:27:21 +0100 Subject: [PATCH 04/70] Adding/Refactoring unit test for MatchForEveryOneManager --- .../MatchForEveryoneManagerTest.php | 78 ++++++++++++++++++- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index ba097f750..f0460139a 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -52,7 +52,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase * * @return \PHPUnit_Framework_MockObject_MockObject */ - public function generateAdapterStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR') + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') { $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') ->disableOriginalConstructor() @@ -70,6 +70,17 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + $currency1 = new Currency(); $currency1->setCode('EUR'); $currency2 = new Currency(); @@ -89,7 +100,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase */ public function testValidBackOfficeInputOperator() { - $stubFacade = $this->generateAdapterStub(399, 'EUR'); + $stubFacade = $this->generateFacadeStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ $condition1 = new MatchForEveryoneManager($stubFacade); @@ -112,7 +123,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase */ public function testIsMatching() { - $stubFacade = $this->generateAdapterStub(399, 'EUR'); + $stubFacade = $this->generateFacadeStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ $condition1 = new MatchForEveryoneManager($stubFacade); @@ -124,4 +135,65 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $actual); } + /** + * Check getName i18n + * + * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::getName + * + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Everybody can use it (no condition)'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForEveryoneManager($stubFacade); + + $actual = $condition1->getName(); + $expected = 'Everybody can use it (no condition)'; + $this->assertEquals($expected, $actual); + } + + /** + * Check tooltip i18n + * + * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::getToolTip + * + */ + public function testGetToolTip() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Will return always true'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForEveryoneManager($stubFacade); + + $actual = $condition1->getToolTip(); + $expected = 'Will return always true'; + $this->assertEquals($expected, $actual); + } + + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::generateInputs + * + */ + public function testGetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForEveryoneManager($stubFacade); + + $actual = $condition1->getValidators(); + + $validators = array(); + $validators['inputs'] = array(); + $validators['setOperators'] = array(); + $validators['setValues'] = array(); + $expected = $validators; + + $this->assertEquals($expected, $actual); + + } + } From 219ffdec9912ed5ee832776a92045a34da061e7a Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 17:30:34 +0100 Subject: [PATCH 05/70] Adding/Refactoring unit test for MatchForEveryoneManager|MatchForTotalAmountManager|MatchForXArticlesManager --- .../MatchForEveryoneManagerTest.php | 1 + .../MatchForTotalAmountManagerTest.php | 162 ++++++++++++++++++ .../MatchForXArticlesManagerTest.php | 136 +++++++++++++++ 3 files changed, 299 insertions(+) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index f0460139a..38da60859 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -49,6 +49,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase * * @param int $cartTotalPrice Cart total price * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation * * @return \PHPUnit_Framework_MockObject_MockObject */ diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 6eb59d0fc..d95de9d4d 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -803,6 +803,168 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $unserialized = $conditionFactory->unserializeConditionCollection($serialized); } + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + $currency1 = new Currency(); + $currency1->setCode('EUR'); + $currency2 = new Currency(); + $currency2->setCode('USD'); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue(array($currency1, $currency2))); + + return $stubFacade; + } + + /** + * Check getName i18n + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getName + * + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Cart total amount'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + + $actual = $condition1->getName(); + $expected = 'Cart total amount'; + $this->assertEquals($expected, $actual); + } + + /** + * Check tooltip i18n + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getToolTip + * + */ + public function testGetToolTip() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart total amount is %operator% %amount% %currency%'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getToolTip(); + $expected = 'If cart total amount is %operator% %amount% %currency%'; + $this->assertEquals($expected, $actual); + } + + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::generateInputs + * + */ + public function testGetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getValidators(); + + $validators = array( + 'inputs' => array( + MatchForTotalAmountManager::INPUT1 => array( + 'title' => 'Price', + 'availableOperators' => array( + '<' => 'Price', + '<=' => 'Price', + '==' => 'Price', + '>=' => 'Price', + '>' => 'Price' + ), + 'availableValues' => '', + 'type' => 'text', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => '' + ), + MatchForTotalAmountManager::INPUT2 => array( + 'title' => 'Price', + 'availableOperators' => array('==' => 'Price'), + 'availableValues' => array( + 'EUR' => '€', + 'USD' => '$', + 'GBP' => '£', + ), + 'type' => 'select', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => Operators::EQUAL + ) + ), + 'setOperators' => array( + 'price' => '==', + 'currency' => '==' + ), + 'setValues' => array( + 'price' => 400, + 'currency' => 'EUR' + ) + ); + $expected = $validators; + + $this->assertEquals($expected, $actual); + + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php index a618d3dcd..f59cd41b7 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php @@ -630,6 +630,142 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase } + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; + } + + /** + * Check getName i18n + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getName + * + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Number of articles in cart'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + + $actual = $condition1->getName(); + $expected = 'Number of articles in cart'; + $this->assertEquals($expected, $actual); + } + + /** + * Check tooltip i18n + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getToolTip + * + */ + public function testGetToolTip() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart products quantity is superior to 4'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + $operators = array( + MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + ); + $values = array( + MatchForXArticlesManager::INPUT1 => 4 + ); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getToolTip(); + $expected = 'If cart products quantity is superior to 4'; + $this->assertEquals($expected, $actual); + } + + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::generateInputs + * + */ + public function testGetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForXArticlesManager($stubFacade); + $operators = array( + MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + ); + $values = array( + MatchForXArticlesManager::INPUT1 => 4 + ); + $condition1->setValidatorsFromForm($operators, $values); + + $actual = $condition1->getValidators(); + + $validators = array( + 'inputs' => array( + MatchForXArticlesManager::INPUT1 => array( + 'title' => 'Price', + 'availableOperators' => array( + '<' => 'Price', + '<=' => 'Price', + '==' => 'Price', + '>=' => 'Price', + '>' => 'Price' + ), + 'type' => 'text', + 'class' => 'form-control', + 'value' => '', + 'selectedOperator' => '' + ) + ), + 'setOperators' => array( + 'quantity' => '>' + ), + 'setValues' => array( + 'quantity' => 4 + ) + ); + $expected = $validators; + + $this->assertEquals($expected, $actual); + + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. From ed1670a61bbc7ec382da23446a6d897f617e0502 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 18:10:13 +0100 Subject: [PATCH 06/70] Adding/Refactoring unit test for MatchForEveryoneManager|MatchForTotalAmountManager|MatchForXArticlesManager --- .../MatchForTotalAmountManager.php | 4 ---- .../MatchForEveryoneManagerTest.php | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php index 874ad508e..38b02abc4 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php @@ -155,10 +155,6 @@ class MatchForTotalAmountManager extends ConditionManagerAbstract $this->availableOperators[self::INPUT2] ); - if (!$isOperator1Legit || !$isOperator2Legit) { - return false; - } - $condition1 = $this->conditionValidator->variableOpComparison( $this->facade->getCartTotalPrice(), $this->operators[self::INPUT1], diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index 38da60859..198cf7f3f 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -197,4 +197,25 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase } + /** + * Check validator + * + * @covers Thelia\Condition\Implementation\setValidatorsFromForm::generateInputs + * + */ + public function testSetValidator() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR'); + + /** @var FacadeInterface $stubFacade */ + $condition1 = new MatchForEveryoneManager($stubFacade); + + $actual = $condition1->setValidatorsFromForm(array(), array()); + + $expected = $condition1; + + $this->assertEquals($expected, $actual); + + } + } From 274e667103619bd4098e943546ed89ffbedcd6d4 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 18:46:22 +0100 Subject: [PATCH 07/70] Adding/Refactoring unit test for MatchForEveryoneManager|MatchForTotalAmountManager|MatchForXArticlesManager --- .../MatchForEveryoneManagerTest.php | 35 +++++-------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index 198cf7f3f..f31ebb2c3 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -176,7 +176,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase * Check validator * * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::generateInputs - * + * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::setValidatorsFromForm */ public function testGetValidator() { @@ -184,38 +184,19 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $condition1 = new MatchForEveryoneManager($stubFacade); - - $actual = $condition1->getValidators(); + $actual1 = $condition1->setValidatorsFromForm(array(), array()); + $expected1 = $condition1; + $actual2 = $condition1->getValidators(); $validators = array(); $validators['inputs'] = array(); $validators['setOperators'] = array(); $validators['setValues'] = array(); - $expected = $validators; + $expected2 = $validators; + + $this->assertEquals($expected1, $actual1); + $this->assertEquals($expected2, $actual2); - $this->assertEquals($expected, $actual); } - - /** - * Check validator - * - * @covers Thelia\Condition\Implementation\setValidatorsFromForm::generateInputs - * - */ - public function testSetValidator() - { - $stubFacade = $this->generateFacadeStub(399, 'EUR'); - - /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); - - $actual = $condition1->setValidatorsFromForm(array(), array()); - - $expected = $condition1; - - $this->assertEquals($expected, $actual); - - } - } From a2b97707cfc9c4772ce251806be6952b6c86acb3 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 17 Nov 2013 19:59:29 +0100 Subject: [PATCH 08/70] Adding/Refactoring unit test --- .../ConditionCollection.php | 2 +- .../Thelia/Condition/ConditionEvaluator.php | 2 +- .../lib/Thelia/Condition/ConditionFactory.php | 2 +- .../ConditionOrganizer.php} | 6 +- .../ConditionOrganizerInterface.php} | 6 +- .../Condition/ConditionOrganizerTest.php | 74 +++++ .../MatchForTotalAmountManager.php | 9 - .../lib/Thelia/Coupon/Type/CouponAbstract.php | 8 +- .../Thelia/Coupon/Type/CouponInterface.php | 2 +- .../Condition/ConditionCollectionTest.php | 109 +++++++ .../Condition/ConditionEvaluatorTest.php | 4 +- .../Tests/Condition/ConditionFactoryTest.php | 2 +- .../MatchForTotalAmountManagerTest.php | 2 +- .../Thelia/Tests/Coupon/BaseFacadeTest.php | 277 ++++++++++++++++++ .../Thelia/Tests/Coupon/CouponFactoryTest.php | 73 +++++ .../Thelia/Tests/Coupon/CouponManagerTest.php | 133 +++++++++ .../Tests/Coupon/Type/CouponAbstractTest.php | 265 +++++++++++++++++ .../Coupon/Type/RemoveXAmountManagerTest.php | 97 ++++++ .../Coupon/Type/RemoveXPercentManagerTest.php | 109 +++++++ 19 files changed, 1154 insertions(+), 28 deletions(-) rename core/lib/Thelia/{Coupon => Condition}/ConditionCollection.php (99%) rename core/lib/Thelia/{Coupon/RuleOrganizer.php => Condition/ConditionOrganizer.php} (93%) rename core/lib/Thelia/{Coupon/RuleOrganizerInterface.php => Condition/ConditionOrganizerInterface.php} (94%) create mode 100644 core/lib/Thelia/Condition/ConditionOrganizerTest.php create mode 100644 core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/CouponManagerTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php create mode 100644 core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php diff --git a/core/lib/Thelia/Coupon/ConditionCollection.php b/core/lib/Thelia/Condition/ConditionCollection.php similarity index 99% rename from core/lib/Thelia/Coupon/ConditionCollection.php rename to core/lib/Thelia/Condition/ConditionCollection.php index f9513160b..47f184cdf 100644 --- a/core/lib/Thelia/Coupon/ConditionCollection.php +++ b/core/lib/Thelia/Condition/ConditionCollection.php @@ -21,7 +21,7 @@ /* */ /**********************************************************************************/ -namespace Thelia\Coupon; +namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; use Thelia\Condition\ConditionManagerInterface; diff --git a/core/lib/Thelia/Condition/ConditionEvaluator.php b/core/lib/Thelia/Condition/ConditionEvaluator.php index 327c80a3d..768054a26 100644 --- a/core/lib/Thelia/Condition/ConditionEvaluator.php +++ b/core/lib/Thelia/Condition/ConditionEvaluator.php @@ -25,7 +25,7 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; use Thelia\Condition\Operators; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; /** diff --git a/core/lib/Thelia/Condition/ConditionFactory.php b/core/lib/Thelia/Condition/ConditionFactory.php index 3e1c771ee..06c2a0ea8 100644 --- a/core/lib/Thelia/Condition/ConditionFactory.php +++ b/core/lib/Thelia/Condition/ConditionFactory.php @@ -25,7 +25,7 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; use Thelia\Coupon\FacadeInterface; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; /** diff --git a/core/lib/Thelia/Coupon/RuleOrganizer.php b/core/lib/Thelia/Condition/ConditionOrganizer.php similarity index 93% rename from core/lib/Thelia/Coupon/RuleOrganizer.php rename to core/lib/Thelia/Condition/ConditionOrganizer.php index 673f27404..116203e5b 100644 --- a/core/lib/Thelia/Coupon/RuleOrganizer.php +++ b/core/lib/Thelia/Condition/ConditionOrganizer.php @@ -21,20 +21,20 @@ /* */ /**********************************************************************************/ -namespace Thelia\Coupon; +namespace Thelia\Condition; /** * Created by JetBrains PhpStorm. * Date: 8/19/13 * Time: 3:24 PM * - * Manage how Coupons could interact with a Checkout + * Manage how Condition could interact with each others * * @package Condition * @author Guillaume MOREL * */ -class RuleOrganizer implements RuleOrganizerInterface +class ConditionOrganizer implements ConditionOrganizerInterface { /** * Organize ConditionManagerInterface diff --git a/core/lib/Thelia/Coupon/RuleOrganizerInterface.php b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php similarity index 94% rename from core/lib/Thelia/Coupon/RuleOrganizerInterface.php rename to core/lib/Thelia/Condition/ConditionOrganizerInterface.php index 93dd12ee9..5e30f8596 100644 --- a/core/lib/Thelia/Coupon/RuleOrganizerInterface.php +++ b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php @@ -21,20 +21,20 @@ /* */ /**********************************************************************************/ -namespace Thelia\Coupon; +namespace Thelia\Condition; /** * Created by JetBrains PhpStorm. * Date: 8/19/13 * Time: 3:24 PM * - * Manage how Condition could interact with a Checkout + * Manage how Condition could interact with each other * * @package Condition * @author Guillaume MOREL * */ -interface RuleOrganizerInterface +interface ConditionOrganizerInterface { /** * Organize ConditionManagerInterface diff --git a/core/lib/Thelia/Condition/ConditionOrganizerTest.php b/core/lib/Thelia/Condition/ConditionOrganizerTest.php new file mode 100644 index 000000000..521482083 --- /dev/null +++ b/core/lib/Thelia/Condition/ConditionOrganizerTest.php @@ -0,0 +1,74 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon; +use Thelia\Condition\ConditionOrganizer; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test ConditionOrganizer Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Condition + * @author Guillaume MOREL + * + */ +class ConditionOrganizerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ConditionOrganizer + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->object = new ConditionOrganizer; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\RuleOrganizer::organize + * @todo Implement testOrganize(). + */ + public function testOrganize() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php index 38b02abc4..a3ba846fa 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php @@ -146,15 +146,6 @@ class MatchForTotalAmountManager extends ConditionManagerAbstract */ public function isMatching() { - $isOperator1Legit = $this->isOperatorLegit( - $this->operators[self::INPUT1], - $this->availableOperators[self::INPUT1] - ); - $isOperator2Legit = $this->isOperatorLegit( - $this->operators[self::INPUT2], - $this->availableOperators[self::INPUT2] - ); - $condition1 = $this->conditionValidator->variableOpComparison( $this->facade->getCartTotalPrice(), $this->operators[self::INPUT1], diff --git a/core/lib/Thelia/Coupon/Type/CouponAbstract.php b/core/lib/Thelia/Coupon/Type/CouponAbstract.php index d3107faa7..8d7794956 100644 --- a/core/lib/Thelia/Coupon/Type/CouponAbstract.php +++ b/core/lib/Thelia/Coupon/Type/CouponAbstract.php @@ -27,8 +27,8 @@ use Symfony\Component\Intl\Exception\NotImplementedException; use Thelia\Condition\ConditionEvaluator; use Thelia\Core\Translation\Translator; use Thelia\Coupon\FacadeInterface; -use Thelia\Coupon\ConditionCollection; -use Thelia\Coupon\RuleOrganizerInterface; +use Thelia\Condition\ConditionCollection; +use Thelia\Condition\ConditionOrganizerInterface; use Thelia\Exception\InvalidConditionException; /** @@ -50,7 +50,7 @@ abstract class CouponAbstract implements CouponInterface /** @var Translator Service Translator */ protected $translator = null; - /** @var RuleOrganizerInterface */ + /** @var ConditionOrganizerInterface */ protected $organizer = null; /** @var ConditionCollection Array of ConditionManagerInterface */ @@ -116,7 +116,7 @@ abstract class CouponAbstract implements CouponInterface /** * Set Condition Organizer * - * @param RuleOrganizerInterface $organizer Manage Condition groups (&& and ||) + * @param ConditionOrganizerInterface $organizer Manage Condition groups (&& and ||) * * @return $this */ diff --git a/core/lib/Thelia/Coupon/Type/CouponInterface.php b/core/lib/Thelia/Coupon/Type/CouponInterface.php index b88039b5c..411446945 100644 --- a/core/lib/Thelia/Coupon/Type/CouponInterface.php +++ b/core/lib/Thelia/Coupon/Type/CouponInterface.php @@ -23,7 +23,7 @@ namespace Thelia\Coupon\Type; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; /** * Created by JetBrains PhpStorm. diff --git a/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php new file mode 100644 index 000000000..a1ef64ce7 --- /dev/null +++ b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php @@ -0,0 +1,109 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Condition; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test ConditionCollection Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Condition + * @author Guillaume MOREL + * + */ +class ConditionCollectionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var ConditionCollection + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->object = new ConditionCollection; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Condition\ConditionCollection::getConditions + * @todo Implement testGetConditions(). + */ + public function testGetConditions() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Condition\ConditionCollection::add + * @todo Implement testAdd(). + */ + public function testAdd() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Condition\ConditionCollection::isEmpty + * @todo Implement testIsEmpty(). + */ + public function testIsEmpty() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Condition\ConditionCollection::__toString + * @todo Implement test__toString(). + */ + public function test__toString() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php index 46f597cf2..fdf97de0c 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php @@ -25,9 +25,7 @@ namespace Thelia\Condition\Implementation; use Thelia\Condition\ConditionEvaluator; use Thelia\Condition\Operators; -use Thelia\Coupon\FacadeInterface; -use Thelia\Coupon\ConditionCollection; -use Thelia\Model\CurrencyQuery; +use Thelia\Condition\ConditionCollection; /** * Created by JetBrains PhpStorm. diff --git a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php index b211c4ddf..c99938408 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php @@ -27,7 +27,7 @@ use Thelia\Condition\ConditionEvaluator; use Thelia\Condition\ConditionFactory; use Thelia\Condition\Operators; use Thelia\Coupon\FacadeInterface; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; use Thelia\Model\CurrencyQuery; /** diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index d95de9d4d..0db635e51 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -26,7 +26,7 @@ namespace Thelia\Condition\Implementation; use Thelia\Condition\ConditionEvaluator; use Thelia\Condition\ConditionFactory; use Thelia\Condition\Operators; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; use Thelia\Coupon\FacadeInterface; use Thelia\Exception\InvalidConditionValueException; use Thelia\Model\Currency; diff --git a/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php b/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php new file mode 100644 index 000000000..75ec32382 --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php @@ -0,0 +1,277 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test BaseFacade Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class BaseFacadeTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var BaseFacade + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->object = new BaseFacade; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCart + * @todo Implement testGetCart(). + */ + public function testGetCart() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getDeliveryAddress + * @todo Implement testGetDeliveryAddress(). + */ + public function testGetDeliveryAddress() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCustomer + * @todo Implement testGetCustomer(). + */ + public function testGetCustomer() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCheckoutTotalPrice + * @todo Implement testGetCheckoutTotalPrice(). + */ + public function testGetCheckoutTotalPrice() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCheckoutPostagePrice + * @todo Implement testGetCheckoutPostagePrice(). + */ + public function testGetCheckoutPostagePrice() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCartTotalPrice + * @todo Implement testGetCartTotalPrice(). + */ + public function testGetCartTotalPrice() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCheckoutCurrency + * @todo Implement testGetCheckoutCurrency(). + */ + public function testGetCheckoutCurrency() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getNbArticlesInCart + * @todo Implement testGetNbArticlesInCart(). + */ + public function testGetNbArticlesInCart() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCurrentCoupons + * @todo Implement testGetCurrentCoupons(). + */ + public function testGetCurrentCoupons() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::findOneCouponByCode + * @todo Implement testFindOneCouponByCode(). + */ + public function testFindOneCouponByCode() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getContainer + * @todo Implement testGetContainer(). + */ + public function testGetContainer() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getTranslator + * @todo Implement testGetTranslator(). + */ + public function testGetTranslator() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getMainCurrency + * @todo Implement testGetMainCurrency(). + */ + public function testGetMainCurrency() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getRequest + * @todo Implement testGetRequest(). + */ + public function testGetRequest() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getConditionEvaluator + * @todo Implement testGetConditionEvaluator(). + */ + public function testGetConditionEvaluator() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getAvailableCurrencies + * @todo Implement testGetAvailableCurrencies(). + */ + public function testGetAvailableCurrencies() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getDispatcher + * @todo Implement testGetDispatcher(). + */ + public function testGetDispatcher() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\BaseFacade::getCartFromTrait + * @todo Implement testGetCartFromTrait(). + */ + public function testGetCartFromTrait() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php new file mode 100644 index 000000000..3c9fbc8f3 --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -0,0 +1,73 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test CouponFactory Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class CouponFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var CouponFactory + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->object = new CouponFactory; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode + * @todo Implement testBuildCouponFromCode(). + */ + public function testBuildCouponFromCode() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php new file mode 100644 index 000000000..2a33271bf --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -0,0 +1,133 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test CouponManager Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class CouponManagerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var CouponManager + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { + $this->object = new CouponManager; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\CouponManager::getDiscount + * @todo Implement testGetDiscount(). + */ + public function testGetDiscount() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\CouponManager::addAvailableCoupon + * @todo Implement testAddAvailableCoupon(). + */ + public function testAddAvailableCoupon() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\CouponManager::getAvailableCoupons + * @todo Implement testGetAvailableCoupons(). + */ + public function testGetAvailableCoupons() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\CouponManager::addAvailableCondition + * @todo Implement testAddAvailableCondition(). + */ + public function testAddAvailableCondition() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\CouponManager::getAvailableConditions + * @todo Implement testGetAvailableConditions(). + */ + public function testGetAvailableConditions() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\CouponManager::decrementeQuantity + * @todo Implement testDecrementeQuantity(). + */ + public function testDecrementeQuantity() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php b/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php new file mode 100644 index 000000000..82a4fc0a4 --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php @@ -0,0 +1,265 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon\Type; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test CouponAbstract Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class CouponAbstractTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var CouponAbstract + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { +// $this->object = new CouponAbstract(); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::setOrganizer + * @todo Implement testSetOrganizer(). + */ + public function testSetOrganizer() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getCode + * @todo Implement testGetCode(). + */ + public function testGetCode() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getTitle + * @todo Implement testGetTitle(). + */ + public function testGetTitle() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getShortDescription + * @todo Implement testGetShortDescription(). + */ + public function testGetShortDescription() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getDescription + * @todo Implement testGetDescription(). + */ + public function testGetDescription() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isCumulative + * @todo Implement testIsCumulative(). + */ + public function testIsCumulative() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isRemovingPostage + * @todo Implement testIsRemovingPostage(). + */ + public function testIsRemovingPostage() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::exec + * @todo Implement testExec(). + */ + public function testExec() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getConditions + * @todo Implement testGetConditions(). + */ + public function testGetConditions() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::setConditions + * @todo Implement testSetConditions(). + */ + public function testSetConditions() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getExpirationDate + * @todo Implement testGetExpirationDate(). + */ + public function testGetExpirationDate() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isAvailableOnSpecialOffers + * @todo Implement testIsAvailableOnSpecialOffers(). + */ + public function testIsAvailableOnSpecialOffers() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isEnabled + * @todo Implement testIsEnabled(). + */ + public function testIsEnabled() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getMaxUsage + * @todo Implement testGetMaxUsage(). + */ + public function testGetMaxUsage() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isExpired + * @todo Implement testIsExpired(). + */ + public function testIsExpired() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::getServiceId + * @todo Implement testGetServiceId(). + */ + public function testGetServiceId() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\CouponAbstract::isMatching + * @todo Implement testIsMatching(). + */ + public function testIsMatching() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php new file mode 100644 index 000000000..48c3405b1 --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php @@ -0,0 +1,97 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon\Type; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test RemoveXAmountManager Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var RemoveXAmountManager + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { +// $this->object = new RemoveXAmountManager; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmountManager::set + * @todo Implement testSet(). + */ + public function testSet() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmountManager::getName + * @todo Implement testGetName(). + */ + public function testGetName() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmountManager::getToolTip + * @todo Implement testGetToolTip(). + */ + public function testGetToolTip() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php new file mode 100644 index 000000000..09326ab2a --- /dev/null +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php @@ -0,0 +1,109 @@ +. */ +/* */ +/**********************************************************************************/ + +namespace Thelia\Coupon\Type; + +/** + * Created by JetBrains PhpStorm. + * Date: 8/19/13 + * Time: 3:24 PM + * + * Unit Test RemoveXPercentManager Class + * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. + * + * @package Coupon + * @author Guillaume MOREL + * + */ +class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var RemoveXPercentManager + */ + protected $object; + + /** + * Sets up the fixture, for example, opens a network connection. + * This method is called before a test is executed. + */ + protected function setUp() + { +// $this->object = new RemoveXPercentManager; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers Thelia\Coupon\Type\RemoveXPercentManager::set + * @todo Implement testSet(). + */ + public function testSet() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXPercentManager::exec + * @todo Implement testExec(). + */ + public function testExec() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXPercentManager::getName + * @todo Implement testGetName(). + */ + public function testGetName() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXPercentManager::getToolTip + * @todo Implement testGetToolTip(). + */ + public function testGetToolTip() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} From 968bddbcf93940be2f38e15df8f46b840ad0d993 Mon Sep 17 00:00:00 2001 From: gmorel Date: Tue, 19 Nov 2013 13:15:23 +0100 Subject: [PATCH 09/70] Fix Coupon/Condition refactor --- core/lib/Thelia/Action/Coupon.php | 2 +- .../lib/Thelia/Condition/ConditionFactory.php | 2 +- .../Controller/Admin/CouponController.php | 2 +- core/lib/Thelia/Core/Template/Loop/Coupon.php | 2 +- core/lib/Thelia/Coupon/CouponFactory.php | 2 +- core/lib/Thelia/Coupon/CouponManager.php | 2 +- .../Condition/ConditionCollectionTest.php | 127 ++++++++++++--- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 147 +++++++++++++++++- install/faker.php | 4 +- 9 files changed, 251 insertions(+), 39 deletions(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 776041527..bbe71ed94 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -32,7 +32,7 @@ use Thelia\Core\Event\TheliaEvents; use Thelia\Core\HttpFoundation\Request; use Thelia\Coupon\CouponFactory; use Thelia\Coupon\CouponManager; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; use Thelia\Coupon\Type\CouponInterface; use Thelia\Model\Coupon as CouponModel; use Thelia\Model\CouponQuery; diff --git a/core/lib/Thelia/Condition/ConditionFactory.php b/core/lib/Thelia/Condition/ConditionFactory.php index 06c2a0ea8..35598f427 100644 --- a/core/lib/Thelia/Condition/ConditionFactory.php +++ b/core/lib/Thelia/Condition/ConditionFactory.php @@ -58,7 +58,7 @@ class ConditionFactory public function __construct(ContainerInterface $container) { $this->container = $container; - $this->adapter = $container->get('thelia.adapter'); + $this->adapter = $container->get('thelia.facade'); } /** diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index 167a13d55..6da5ec6b1 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -32,7 +32,7 @@ use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Security\AccessManager; use Thelia\Coupon\CouponManager; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; use Thelia\Coupon\Type\CouponInterface; use Thelia\Form\CouponCreationForm; use Thelia\Form\Exception\FormValidationException; diff --git a/core/lib/Thelia/Core/Template/Loop/Coupon.php b/core/lib/Thelia/Core/Template/Loop/Coupon.php index f11fd0e9a..fea2cb23e 100755 --- a/core/lib/Thelia/Core/Template/Loop/Coupon.php +++ b/core/lib/Thelia/Core/Template/Loop/Coupon.php @@ -106,7 +106,7 @@ class Coupon extends BaseI18nLoop implements PropelSearchLoopInterface /** @var CouponInterface $couponManager */ $couponManager = $this->container->get($coupon->getType()); $couponManager->set( - $this->container->get('thelia.adapter'), + $this->container->get('thelia.facade'), $coupon->getCode(), $coupon->getTitle(), $coupon->getShortDescription(), diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index 603fcaa77..67ffd9295 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -58,7 +58,7 @@ class CouponFactory public function __construct(ContainerInterface $container) { $this->container = $container; - $this->adapter = $container->get('thelia.adapter'); + $this->adapter = $container->get('thelia.facade'); } /** diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 1b446f1e0..1598ab926 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -64,7 +64,7 @@ class CouponManager public function __construct(ContainerInterface $container) { $this->container = $container; - $this->adapter = $container->get('thelia.adapter'); + $this->adapter = $container->get('thelia.facade'); $this->coupons = $this->adapter->getCurrentCoupons(); } diff --git a/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php index a1ef64ce7..a4d940391 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php @@ -22,6 +22,8 @@ /**********************************************************************************/ namespace Thelia\Condition; +use Thelia\Condition\Implementation\MatchForTotalAmountManager; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -48,7 +50,54 @@ class ConditionCollectionTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->object = new ConditionCollection; + } + + + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; } /** @@ -61,49 +110,77 @@ class ConditionCollectionTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Condition\ConditionCollection::getConditions - * @todo Implement testGetConditions(). + * @covers Thelia\Condition\ConditionCollection::add */ public function testGetConditions() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } + $stubFacade = $this->generateFacadeStub(); - /** - * @covers Thelia\Condition\ConditionCollection::add - * @todo Implement testAdd(). - */ - public function testAdd() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators, $values); + + $collection = new ConditionCollection(); + $collection->add($condition1); + + $expected = $condition1; + $actual = $collection->getConditions()[0]; + + $this->assertEquals($expected, $actual); + + $this->assertFalse($collection->isEmpty()); } /** * @covers Thelia\Condition\ConditionCollection::isEmpty - * @todo Implement testIsEmpty(). */ public function testIsEmpty() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $collection = new ConditionCollection(); + $this->assertTrue($collection->isEmpty()); } /** * @covers Thelia\Condition\ConditionCollection::__toString - * @todo Implement test__toString(). */ public function test__toString() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' + $stubFacade = $this->generateFacadeStub(); + + $condition1 = new MatchForTotalAmountManager($stubFacade); + $operators1 = array( + MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL ); + $values1 = array( + MatchForTotalAmountManager::INPUT1 => 400, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition1->setValidatorsFromForm($operators1, $values1); + + $condition2 = new MatchForTotalAmountManager($stubFacade); + $operators2 = array( + MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values2 = array( + MatchForTotalAmountManager::INPUT1 => 600, + MatchForTotalAmountManager::INPUT2 => 'EUR'); + $condition2->setValidatorsFromForm($operators2, $values2); + + $collection = new ConditionCollection(); + $collection->add($condition1); + $collection->add($condition2); + + $expected = '[{"conditionServiceId":"thelia.condition.match_for_total_amount","operators":{"price":">","currency":"=="},"values":{"price":400,"currency":"EUR"}},{"conditionServiceId":"thelia.condition.match_for_total_amount","operators":{"price":"<","currency":"=="},"values":{"price":600,"currency":"EUR"}}]'; + $actual = $collection->__toString();; + + $this->assertEquals($expected, $actual); + } } diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 3c9fbc8f3..b4e2d2ec2 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -22,6 +22,13 @@ /**********************************************************************************/ namespace Thelia\Coupon; +use Thelia\Condition\ConditionCollection; +use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\ConditionFactory; +use Thelia\Condition\Implementation\MatchForTotalAmountManager; +use Thelia\Condition\Operators; +use Thelia\Model\Coupon; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -48,7 +55,117 @@ class CouponFactoryTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->object = new CouponFactory; + } + + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; + } + + /** + * Generate a valid Coupon model + */ + public function generateCouponModel($facade, ConditionFactory $conditionFactory) + { + // Coupons + $coupon1 = new Coupon(); + $coupon1->setCode('XMAS'); + $coupon1->setType('thelia.coupon.type.remove_x_amount'); + $coupon1->setTitle('Christmas coupon'); + $coupon1->setShortDescription('Coupon for Christmas removing 10€ if your total checkout is more than 40€'); + $coupon1->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla. + +Donec rhoncus leo mauris, id porttitor ante luctus tempus. Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla. + +Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros. + +Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non. + +Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.'); + $coupon1->setAmount(10.00); + $coupon1->setIsUsed(true); + $coupon1->setIsEnabled(true); + $date = new \DateTime(); + $coupon1->setExpirationDate($date->setTimestamp(strtotime("today + 3 months"))); + + $condition1 = new MatchForTotalAmountManager($facade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 40.00, + MatchForTotalAmountManager::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmountManager($facade); + $operators = array( + MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, + MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmountManager::INPUT1 => 400.00, + MatchForTotalAmountManager::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + + $serializedConditions = $conditionFactory->serializeConditionCollection($conditions); + $coupon1->setSerializedConditions($serializedConditions); + + + $coupon1->setMaxUsage(40); + $coupon1->setIsCumulative(true); + $coupon1->setIsRemovingPostage(false); + $coupon1->setIsAvailableOnSpecialOffers(true); + + return $coupon1; } /** @@ -61,13 +178,31 @@ class CouponFactoryTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode - * @todo Implement testBuildCouponFromCode(). */ public function testBuildCouponFromCode() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $stubFacade = $this->generateFacadeStub(); + + $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') + ->disableOriginalConstructor() + ->getMock(); + + $conditionFactory = new ConditionFactory($stubContainer); + $expected = $this->generateCouponModel($stubFacade, $conditionFactory); + $stubFacade->expects($this->any()) + ->method('findOneCouponByCode') + ->will($this->returnValue($expected)); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->returnValue($stubFacade)); + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + + $factory = new CouponFactory($stubContainer); + $actual = $factory->buildCouponFromCode('XMAS'); + + $this->assertEquals($expected, $actual); } } diff --git a/install/faker.php b/install/faker.php index 23b6b048a..d7ddd3b44 100755 --- a/install/faker.php +++ b/install/faker.php @@ -6,7 +6,7 @@ use Thelia\Condition\Implementation\MatchForTotalAmountManager; use Thelia\Condition\Implementation\MatchForXArticlesManager; use Thelia\Condition\Operators; use Thelia\Coupon\FacadeInterface; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; require __DIR__ . '/../core/bootstrap.php'; @@ -646,7 +646,7 @@ function generateCouponFixtures(\Thelia\Core\Thelia $thelia) /** @var $container ContainerInterface Service Container */ $container = $thelia->getContainer(); /** @var FacadeInterface $adapter */ - $adapter = $container->get('thelia.adapter'); + $adapter = $container->get('thelia.facade'); // Coupons $coupon1 = new Thelia\Model\Coupon(); From d276d5aa523db490c12ac83f91282ddac34efdcb Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 17:37:48 +0100 Subject: [PATCH 10/70] Fix Coupon/Condition utf8 issue --- .../Implementation/MatchForTotalAmountManagerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 0db635e51..153737d1d 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -940,9 +940,9 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase 'title' => 'Price', 'availableOperators' => array('==' => 'Price'), 'availableValues' => array( - 'EUR' => '€', + 'EUR' => '€', 'USD' => '$', - 'GBP' => '£', + 'GBP' => '£', ), 'type' => 'select', 'class' => 'form-control', From 59a04f6a09f21cfe46c8e5a66cad8ac3dfc7218c Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 17:51:59 +0100 Subject: [PATCH 11/70] Fix Condition comment --- core/lib/Thelia/Condition/SerializableCondition.php | 2 +- .../lib/Thelia/{ => Tests}/Condition/ConditionOrganizerTest.php | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename core/lib/Thelia/{ => Tests}/Condition/ConditionOrganizerTest.php (100%) diff --git a/core/lib/Thelia/Condition/SerializableCondition.php b/core/lib/Thelia/Condition/SerializableCondition.php index 31163cdda..cd2f1de44 100644 --- a/core/lib/Thelia/Condition/SerializableCondition.php +++ b/core/lib/Thelia/Condition/SerializableCondition.php @@ -28,7 +28,7 @@ namespace Thelia\Condition; * Date: 8/19/13 * Time: 3:24 PM * - * A condition set by an admin ready to be serialized and stored in DataBase + * A condition ready to be serialized and stored in DataBase * * @package Condition * @author Guillaume MOREL diff --git a/core/lib/Thelia/Condition/ConditionOrganizerTest.php b/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php similarity index 100% rename from core/lib/Thelia/Condition/ConditionOrganizerTest.php rename to core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php From 8ce1030178bea2ebe1d11e366bd40305187812e6 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 18:35:21 +0100 Subject: [PATCH 12/70] Refactor rule => condition adapter => facade --- .../Condition/ConditionManagerAbstract.php | 2 +- .../Condition/ConditionManagerInterface.php | 2 +- core/lib/Thelia/Coupon/CouponFactory.php | 8 +++---- core/lib/Thelia/Coupon/CouponManager.php | 14 ++++++------- .../lib/Thelia/Coupon/Type/CouponAbstract.php | 12 +++++------ .../Thelia/Coupon/Type/CouponInterface.php | 17 ++++++++------- .../Coupon/Type/RemoveXAmountManager.php | 11 +++++----- .../Coupon/Type/RemoveXPercentManager.php | 17 ++++++++------- ...ception.php => MissingFacadeException.php} | 4 ++-- .../Condition/ConditionOrganizerTest.php | 21 ------------------- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 8 ++++++- 11 files changed, 52 insertions(+), 64 deletions(-) rename core/lib/Thelia/Exception/{MissingAdapterException.php => MissingFacadeException.php} (96%) diff --git a/core/lib/Thelia/Condition/ConditionManagerAbstract.php b/core/lib/Thelia/Condition/ConditionManagerAbstract.php index 97418178f..86e438ca5 100644 --- a/core/lib/Thelia/Condition/ConditionManagerAbstract.php +++ b/core/lib/Thelia/Condition/ConditionManagerAbstract.php @@ -35,7 +35,7 @@ use Thelia\Type\FloatType; * Date: 8/19/13 * Time: 3:24 PM * - * Assist in writing a condition of whether the Rule is applied or not + * Assist in writing a condition of whether the Condition is applied or not * * @package Constraint * @author Guillaume MOREL diff --git a/core/lib/Thelia/Condition/ConditionManagerInterface.php b/core/lib/Thelia/Condition/ConditionManagerInterface.php index ceda090bf..e25c6dcaa 100644 --- a/core/lib/Thelia/Condition/ConditionManagerInterface.php +++ b/core/lib/Thelia/Condition/ConditionManagerInterface.php @@ -47,7 +47,7 @@ interface ConditionManagerInterface function __construct(FacadeInterface $adapter); /** - * Get Rule Service id + * Get Condition Service id * * @return string */ diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index 67ffd9295..ea3db1ff9 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -48,7 +48,7 @@ class CouponFactory protected $container = null; /** @var FacadeInterface Provide necessary value from Thelia*/ - protected $adapter; + protected $facade; /** * Constructor @@ -58,7 +58,7 @@ class CouponFactory public function __construct(ContainerInterface $container) { $this->container = $container; - $this->adapter = $container->get('thelia.facade'); + $this->facade = $container->get('thelia.facade'); } /** @@ -74,7 +74,7 @@ class CouponFactory public function buildCouponFromCode($couponCode) { /** @var Coupon $couponModel */ - $couponModel = $this->adapter->findOneCouponByCode($couponCode); + $couponModel = $this->facade->findOneCouponByCode($couponCode); if ($couponModel === null) { throw new NotFoundResourceException( 'Coupon ' . $couponCode . ' not found in Database' @@ -115,7 +115,7 @@ class CouponFactory /** @var CouponInterface $couponManager*/ $couponManager = $this->container->get($model->getType()); $couponManager->set( - $this->adapter, + $this->facade, $model->getCode(), $model->getTitle(), $model->getShortDescription(), diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 1598ab926..ed500c3a4 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -42,7 +42,7 @@ use Thelia\Model\Coupon; class CouponManager { /** @var FacadeInterface Provides necessary value from Thelia */ - protected $adapter = null; + protected $facade = null; /** @var ContainerInterface Service Container */ protected $container = null; @@ -64,8 +64,8 @@ class CouponManager public function __construct(ContainerInterface $container) { $this->container = $container; - $this->adapter = $container->get('thelia.facade'); - $this->coupons = $this->adapter->getCurrentCoupons(); + $this->facade = $container->get('thelia.facade'); + $this->coupons = $this->facade->getCurrentCoupons(); } @@ -87,12 +87,12 @@ class CouponManager $discount = $this->getEffect($couponsKept); if ($isRemovingPostage) { - $postage = $this->adapter->getCheckoutPostagePrice(); + $postage = $this->facade->getCheckoutPostagePrice(); $discount += $postage; } // Just In Case test - $checkoutTotalPrice = $this->adapter->getCartTotalPrice(); + $checkoutTotalPrice = $this->facade->getCartTotalPrice(); if ($discount >= $checkoutTotalPrice) { $discount = $checkoutTotalPrice; } @@ -164,7 +164,7 @@ class CouponManager /** @var CouponInterface $coupon */ foreach ($coupons as $coupon) { - if ($coupon->isMatching($this->adapter)) { + if ($coupon->isMatching($this->facade)) { $couponsKept[] = $coupon; } } @@ -184,7 +184,7 @@ class CouponManager $discount = 0.00; /** @var CouponInterface $coupon */ foreach ($coupons as $coupon) { - $discount += $coupon->exec($this->adapter); + $discount += $coupon->exec($this->facade); } return $discount; diff --git a/core/lib/Thelia/Coupon/Type/CouponAbstract.php b/core/lib/Thelia/Coupon/Type/CouponAbstract.php index 8d7794956..d8b1a207a 100644 --- a/core/lib/Thelia/Coupon/Type/CouponAbstract.php +++ b/core/lib/Thelia/Coupon/Type/CouponAbstract.php @@ -45,7 +45,7 @@ use Thelia\Exception\InvalidConditionException; abstract class CouponAbstract implements CouponInterface { /** @var FacadeInterface Provide necessary value from Thelia */ - protected $adapter = null; + protected $facade = null; /** @var Translator Service Translator */ protected $translator = null; @@ -104,13 +104,13 @@ abstract class CouponAbstract implements CouponInterface /** * Constructor * - * @param FacadeInterface $adapter Service adapter + * @param FacadeInterface $facade Service facade */ - public function __construct(FacadeInterface $adapter) + public function __construct(FacadeInterface $facade) { - $this->adapter = $adapter; - $this->translator = $adapter->getTranslator(); - $this->conditionEvaluator = $adapter->getConditionEvaluator(); + $this->facade = $facade; + $this->translator = $facade->getTranslator(); + $this->conditionEvaluator = $facade->getConditionEvaluator(); } /** diff --git a/core/lib/Thelia/Coupon/Type/CouponInterface.php b/core/lib/Thelia/Coupon/Type/CouponInterface.php index 411446945..f88a08c8c 100644 --- a/core/lib/Thelia/Coupon/Type/CouponInterface.php +++ b/core/lib/Thelia/Coupon/Type/CouponInterface.php @@ -24,6 +24,7 @@ namespace Thelia\Coupon\Type; use Thelia\Condition\ConditionCollection; +use Thelia\Coupon\FacadeInterface; /** * Created by JetBrains PhpStorm. @@ -62,7 +63,7 @@ interface CouponInterface /** * Set Coupon * - * @param CouponInterface $adapter Provides necessary value from Thelia + * @param FacadeInterface $facade Provides necessary value from Thelia * @param string $code Coupon code (ex: XMAS) * @param string $title Coupon title (ex: Coupon for XMAS) * @param string $shortDescription Coupon short description @@ -77,7 +78,7 @@ interface CouponInterface * @param \Datetime $expirationDate When the Code is expiring */ public function set( - $adapter, + FacadeInterface $facade, $code, $title, $shortDescription, @@ -144,15 +145,15 @@ interface CouponInterface public function getConditions(); /** - * Replace the existing Rules by those given in parameter - * If one Rule is badly implemented, no Rule will be added + * Replace the existing Conditions by those given in parameter + * If one Condition is badly implemented, no Condition will be added * - * @param ConditionCollection $rules ConditionManagerInterface to add + * @param ConditionCollection $conditions ConditionManagerInterface to add * * @return $this * @throws \Thelia\Exception\InvalidConditionException */ - public function setConditions(ConditionCollection $rules); + public function setConditions(ConditionCollection $conditions); /** * Return Coupon expiration date @@ -198,7 +199,7 @@ interface CouponInterface * A positive value * * Effects could also affect something else than the final Checkout price - * CouponAdapter $adapter could be use to directly pass a Session value + * FacadeInterface $facade could be used to directly pass a Session value * some would wish to modify * Hence affecting a wide variety of Thelia elements * @@ -207,7 +208,7 @@ interface CouponInterface public function exec(); /** - * Check if the current Coupon is matching its conditions (Rules) + * Check if the current Coupon is matching its conditions * Thelia variables are given by the FacadeInterface * * @return bool diff --git a/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php b/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php index 1f9e12420..9a3019b4b 100644 --- a/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php +++ b/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php @@ -23,6 +23,7 @@ namespace Thelia\Coupon\Type; +use Thelia\Coupon\FacadeInterface; use Thelia\Coupon\Type\CouponAbstract; /** @@ -44,7 +45,7 @@ class RemoveXAmountManager extends CouponAbstract /** * Set Coupon * - * @param CouponInterface $adapter Provides necessary value from Thelia + * @param FacadeInterface $facade Provides necessary value from Thelia * @param string $code Coupon code (ex: XMAS) * @param string $title Coupon title (ex: Coupon for XMAS) * @param string $shortDescription Coupon short description @@ -59,7 +60,7 @@ class RemoveXAmountManager extends CouponAbstract * @param \Datetime $expirationDate When the Code is expiring */ public function set( - $adapter, + FacadeInterface $facade, $code, $title, $shortDescription, @@ -87,7 +88,7 @@ class RemoveXAmountManager extends CouponAbstract $this->isEnabled = $isEnabled; $this->maxUsage = $maxUsage; $this->expirationDate = $expirationDate; - $this->adapter = $adapter; + $this->facade = $facade; } /** @@ -97,7 +98,7 @@ class RemoveXAmountManager extends CouponAbstract */ public function getName() { - return $this->adapter + return $this->facade ->getTranslator() ->trans('Remove X amount to total cart', array(), 'constraint'); } @@ -109,7 +110,7 @@ class RemoveXAmountManager extends CouponAbstract */ public function getToolTip() { - $toolTip = $this->adapter + $toolTip = $this->facade ->getTranslator() ->trans( 'This coupon will remove the entered amount to the customer total checkout. If the discount is superior to the total checkout price the customer will only pay the postage. Unless if the coupon is set to remove postage too.', diff --git a/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php b/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php index b0a8e82cd..5a1e7e051 100644 --- a/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php +++ b/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php @@ -23,8 +23,9 @@ namespace Thelia\Coupon\Type; +use Thelia\Coupon\FacadeInterface; use Thelia\Coupon\Type\CouponAbstract; -use Thelia\Exception\MissingAdapterException; +use Thelia\Exception\MissingFacadeException; /** * Created by JetBrains PhpStorm. @@ -45,7 +46,7 @@ class RemoveXPercentManager extends CouponAbstract /** * Set Coupon * - * @param CouponInterface $adapter Provides necessary value from Thelia + * @param FacadeInterface $facade Provides necessary value from Thelia * @param string $code Coupon code (ex: XMAS) * @param string $title Coupon title (ex: Coupon for XMAS) * @param string $shortDescription Coupon short description @@ -60,7 +61,7 @@ class RemoveXPercentManager extends CouponAbstract * @param \Datetime $expirationDate When the Code is expiring */ public function set( - $adapter, + FacadeInterface $facade, $code, $title, $shortDescription, @@ -87,14 +88,14 @@ class RemoveXPercentManager extends CouponAbstract $this->isEnabled = $isEnabled; $this->maxUsage = $maxUsage; $this->expirationDate = $expirationDate; - $this->adapter = $adapter; + $this->facade = $facade; } /** * Return effects generated by the coupon * A negative value * - * @throws \Thelia\Exception\MissingAdapterException + * @throws \Thelia\Exception\MissingFacadeException * @throws \InvalidArgumentException * @return float */ @@ -106,7 +107,7 @@ class RemoveXPercentManager extends CouponAbstract ); } - $basePrice = $this->adapter->getCartTotalPrice(); + $basePrice = $this->facade->getCartTotalPrice(); return $basePrice * (( $this->percent ) / 100); } @@ -119,7 +120,7 @@ class RemoveXPercentManager extends CouponAbstract */ public function getName() { - return $this->adapter + return $this->facade ->getTranslator() ->trans('Remove X percent to total cart', array(), 'constraint'); } @@ -131,7 +132,7 @@ class RemoveXPercentManager extends CouponAbstract */ public function getToolTip() { - $toolTip = $this->adapter + $toolTip = $this->facade ->getTranslator() ->trans( 'This coupon will remove the entered percentage to the customer total checkout. If the discount is superior to the total checkout price the customer will only pay the postage. Unless if the coupon is set to remove postage too.', diff --git a/core/lib/Thelia/Exception/MissingAdapterException.php b/core/lib/Thelia/Exception/MissingFacadeException.php similarity index 96% rename from core/lib/Thelia/Exception/MissingAdapterException.php rename to core/lib/Thelia/Exception/MissingFacadeException.php index 3659dcc68..5616e9575 100644 --- a/core/lib/Thelia/Exception/MissingAdapterException.php +++ b/core/lib/Thelia/Exception/MissingFacadeException.php @@ -30,13 +30,13 @@ use Thelia\Log\Tlog; * Date: 8/19/13 * Time: 3:24 PM * - * Thrown when the Adapter is not set + * Thrown when the Facade is not set * * @package Coupon * @author Guillaume MOREL * */ -class MissingAdapterException extends \RuntimeException +class MissingFacadeException extends \RuntimeException { /** * {@inheritdoc} diff --git a/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php b/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php index 521482083..0591df0ab 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php @@ -38,27 +38,6 @@ use Thelia\Condition\ConditionOrganizer; */ class ConditionOrganizerTest extends \PHPUnit_Framework_TestCase { - /** - * @var ConditionOrganizer - */ - protected $object; - - /** - * Sets up the fixture, for example, opens a network connection. - * This method is called before a test is executed. - */ - protected function setUp() - { - $this->object = new ConditionOrganizer; - } - - /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. - */ - protected function tearDown() - { - } /** * @covers Thelia\Coupon\RuleOrganizer::organize diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index b4e2d2ec2..8a52bd1c7 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -27,6 +27,7 @@ use Thelia\Condition\ConditionEvaluator; use Thelia\Condition\ConditionFactory; use Thelia\Condition\Implementation\MatchForTotalAmountManager; use Thelia\Condition\Operators; +use Thelia\Coupon\Type\RemoveXAmountManager; use Thelia\Model\Coupon; use Thelia\Model\CurrencyQuery; @@ -192,9 +193,14 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $stubFacade->expects($this->any()) ->method('findOneCouponByCode') ->will($this->returnValue($expected)); - $stubContainer->expects($this->any()) + $stubContainer->expects($this->at(0)) ->method('get') ->will($this->returnValue($stubFacade)); + + $couponManager = new RemoveXAmountManager(); + $stubContainer->expects($this->at(1)) + ->method('get') + ->will($this->returnValue($couponManager)); $stubContainer->expects($this->any()) ->method('has') ->will($this->returnValue(true)); From 90b5fbde056f0c5a9e0eb80b82d849fdb00a0d31 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 20:18:04 +0100 Subject: [PATCH 13/70] Refactor removing Manager notion --- core/lib/Thelia/Action/Coupon.php | 6 +- .../Thelia/Condition/ConditionCollection.php | 16 +- .../Thelia/Condition/ConditionEvaluator.php | 2 +- .../lib/Thelia/Condition/ConditionFactory.php | 12 +- .../Thelia/Condition/ConditionOrganizer.php | 6 +- .../Condition/ConditionOrganizerInterface.php | 6 +- .../ConditionAbstract.php} | 2 +- .../ConditionInterface.php} | 2 +- ...eryoneManager.php => MatchForEveryone.php} | 4 +- ...untManager.php => MatchForTotalAmount.php} | 4 +- ...iclesManager.php => MatchForXArticles.php} | 4 +- core/lib/Thelia/Config/Resources/coupon.xml | 10 +- .../Controller/Admin/CouponController.php | 8 +- .../Coupon/CouponCreateOrUpdateEvent.php | 6 +- core/lib/Thelia/Core/Template/Loop/Coupon.php | 4 +- core/lib/Thelia/Coupon/CouponFactory.php | 6 +- core/lib/Thelia/Coupon/CouponManager.php | 6 +- .../lib/Thelia/Coupon/Type/CouponAbstract.php | 4 +- .../Thelia/Coupon/Type/CouponInterface.php | 4 +- ...veXAmountManager.php => RemoveXAmount.php} | 2 +- ...XPercentManager.php => RemoveXPercent.php} | 2 +- .../Condition/ConditionCollectionTest.php | 32 +- .../Condition/ConditionEvaluatorTest.php | 8 +- .../Tests/Condition/ConditionFactoryTest.php | 70 ++--- .../MatchForEveryoneManagerTest.php | 26 +- .../MatchForTotalAmountManagerTest.php | 288 +++++++++--------- .../MatchForXArticlesManagerTest.php | 152 ++++----- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 83 +++-- .../Coupon/Type/RemoveXAmountManagerTest.php | 14 +- .../Coupon/Type/RemoveXPercentManagerTest.php | 16 +- install/faker.php | 34 +-- install/faker_add_ecotax.php | 6 +- install/import.php | 4 +- install/tax_faker.php | 4 +- 34 files changed, 442 insertions(+), 411 deletions(-) rename core/lib/Thelia/Condition/{ConditionManagerAbstract.php => Implementation/ConditionAbstract.php} (98%) rename core/lib/Thelia/Condition/{ConditionManagerInterface.php => Implementation/ConditionInterface.php} (98%) rename core/lib/Thelia/Condition/Implementation/{MatchForEveryoneManager.php => MatchForEveryone.php} (97%) rename core/lib/Thelia/Condition/Implementation/{MatchForTotalAmountManager.php => MatchForTotalAmount.php} (98%) rename core/lib/Thelia/Condition/Implementation/{MatchForXArticlesManager.php => MatchForXArticles.php} (98%) rename core/lib/Thelia/Coupon/Type/{RemoveXAmountManager.php => RemoveXAmount.php} (99%) rename core/lib/Thelia/Coupon/Type/{RemoveXPercentManager.php => RemoveXPercent.php} (99%) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index bbe71ed94..4ac8481f7 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -25,7 +25,7 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionManagerInterface; +use Thelia\Condition\ConditionInterface; use Thelia\Core\Event\Coupon\CouponConsumeEvent; use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; @@ -102,7 +102,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface $couponManager = $this->container->get('thelia.coupon.manager'); /** @var CouponInterface $coupon */ - $coupon = $couponFactory->buildCouponFromCode($event->getCode()); + $coupon = $couponFactory->buildCouponManagerFromCode($event->getCode()); $isValid = $coupon->isMatching(); @@ -154,7 +154,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface $coupon->setDispatcher($this->getDispatcher()); // Set default condition if none found - /** @var ConditionManagerInterface $noConditionRule */ + /** @var ConditionInterface $noConditionRule */ $noConditionRule = $this->container->get('thelia.condition.match_for_everyone'); /** @var ConditionFactory $conditionFactory */ $conditionFactory = $this->container->get('thelia.condition.factory'); diff --git a/core/lib/Thelia/Condition/ConditionCollection.php b/core/lib/Thelia/Condition/ConditionCollection.php index 47f184cdf..1a31a5f92 100644 --- a/core/lib/Thelia/Condition/ConditionCollection.php +++ b/core/lib/Thelia/Condition/ConditionCollection.php @@ -24,14 +24,14 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; -use Thelia\Condition\ConditionManagerInterface; +use Thelia\Condition\ConditionInterface; /** * Created by JetBrains PhpStorm. * Date: 8/19/13 * Time: 3:24 PM * - * Manage a set of ConditionManagerInterface + * Manage a set of ConditionInterface * * @package Condition * @author Guillaume MOREL @@ -39,13 +39,13 @@ use Thelia\Condition\ConditionManagerInterface; */ class ConditionCollection { - /** @var array Array of ConditionManagerInterface */ + /** @var array Array of ConditionInterface */ protected $conditions = array(); /** * Get Conditions * - * @return array Array of ConditionManagerInterface + * @return array Array of ConditionInterface */ public function getConditions() { @@ -53,13 +53,13 @@ class ConditionCollection } /** - * Add a ConditionManagerInterface to the Collection + * Add a ConditionInterface to the Collection * - * @param ConditionManagerInterface $condition Condition + * @param ConditionInterface $condition Condition * * @return $this */ - public function add(ConditionManagerInterface $condition) + public function add(ConditionInterface $condition) { $this->conditions[] = $condition; @@ -84,7 +84,7 @@ class ConditionCollection public function __toString() { $arrayToSerialize = array(); - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ foreach ($this->getConditions() as $condition) { $arrayToSerialize[] = $condition->getSerializableCondition(); } diff --git a/core/lib/Thelia/Condition/ConditionEvaluator.php b/core/lib/Thelia/Condition/ConditionEvaluator.php index 768054a26..956694b09 100644 --- a/core/lib/Thelia/Condition/ConditionEvaluator.php +++ b/core/lib/Thelia/Condition/ConditionEvaluator.php @@ -51,7 +51,7 @@ class ConditionEvaluator public function isMatching(ConditionCollection $conditions) { $isMatching = true; - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ foreach ($conditions->getConditions() as $condition) { if (!$condition->isMatching()) { $isMatching = false; diff --git a/core/lib/Thelia/Condition/ConditionFactory.php b/core/lib/Thelia/Condition/ConditionFactory.php index 35598f427..68eec8083 100644 --- a/core/lib/Thelia/Condition/ConditionFactory.php +++ b/core/lib/Thelia/Condition/ConditionFactory.php @@ -71,7 +71,7 @@ class ConditionFactory public function serializeConditionCollection(ConditionCollection $collection) { if ($collection->isEmpty()) { - /** @var ConditionManagerInterface $conditionNone */ + /** @var ConditionInterface $conditionNone */ $conditionNone = $this->container->get( 'thelia.condition.match_for_everyone' ); @@ -80,7 +80,7 @@ class ConditionFactory $serializableConditions = array(); $conditions = $collection->getConditions(); if ($conditions !== null) { - /** @var $condition ConditionManagerInterface */ + /** @var $condition ConditionInterface */ foreach ($conditions as $condition) { $serializableConditions[] = $condition->getSerializableCondition(); } @@ -106,7 +106,7 @@ class ConditionFactory /** @var SerializableCondition $condition */ foreach ($unserializedConditions as $condition) { if ($this->container->has($condition->conditionServiceId)) { - /** @var ConditionManagerInterface $conditionManager */ + /** @var ConditionInterface $conditionManager */ $conditionManager = $this->build( $condition->conditionServiceId, (array) $condition->operators, @@ -129,7 +129,7 @@ class ConditionFactory * @param array $values Values setting this Condition * * @throws \InvalidArgumentException - * @return ConditionManagerInterface Ready to use Condition or false + * @return ConditionInterface Ready to use Condition or false */ public function build($conditionServiceId, array $operators, array $values) { @@ -137,7 +137,7 @@ class ConditionFactory return false; } - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ $condition = $this->container->get($conditionServiceId); $condition->setValidatorsFromForm($operators, $values); @@ -157,7 +157,7 @@ class ConditionFactory return false; } - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ $condition = $this->container->get($conditionServiceId); return $condition->getValidators(); diff --git a/core/lib/Thelia/Condition/ConditionOrganizer.php b/core/lib/Thelia/Condition/ConditionOrganizer.php index 116203e5b..f678142ab 100644 --- a/core/lib/Thelia/Condition/ConditionOrganizer.php +++ b/core/lib/Thelia/Condition/ConditionOrganizer.php @@ -37,11 +37,11 @@ namespace Thelia\Condition; class ConditionOrganizer implements ConditionOrganizerInterface { /** - * Organize ConditionManagerInterface + * Organize ConditionInterface * - * @param array $conditions Array of ConditionManagerInterface + * @param array $conditions Array of ConditionInterface * - * @return array Array of ConditionManagerInterface sorted + * @return array Array of ConditionInterface sorted */ public function organize(array $conditions) { diff --git a/core/lib/Thelia/Condition/ConditionOrganizerInterface.php b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php index 5e30f8596..00f8d55b8 100644 --- a/core/lib/Thelia/Condition/ConditionOrganizerInterface.php +++ b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php @@ -37,11 +37,11 @@ namespace Thelia\Condition; interface ConditionOrganizerInterface { /** - * Organize ConditionManagerInterface + * Organize ConditionInterface * - * @param array $conditions Array of ConditionManagerInterface + * @param array $conditions Array of ConditionInterface * - * @return array Array of ConditionManagerInterface sorted + * @return array Array of ConditionInterface sorted */ public function organize(array $conditions); } \ No newline at end of file diff --git a/core/lib/Thelia/Condition/ConditionManagerAbstract.php b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php similarity index 98% rename from core/lib/Thelia/Condition/ConditionManagerAbstract.php rename to core/lib/Thelia/Condition/Implementation/ConditionAbstract.php index 86e438ca5..b00dae73a 100644 --- a/core/lib/Thelia/Condition/ConditionManagerAbstract.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php @@ -41,7 +41,7 @@ use Thelia\Type\FloatType; * @author Guillaume MOREL * */ -abstract class ConditionManagerAbstract implements ConditionManagerInterface +abstract class ConditionAbstract implements ConditionInterface { /** @var string Service Id from Resources/config.xml */ diff --git a/core/lib/Thelia/Condition/ConditionManagerInterface.php b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php similarity index 98% rename from core/lib/Thelia/Condition/ConditionManagerInterface.php rename to core/lib/Thelia/Condition/Implementation/ConditionInterface.php index e25c6dcaa..dbb65c57b 100644 --- a/core/lib/Thelia/Condition/ConditionManagerInterface.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php @@ -37,7 +37,7 @@ use Thelia\Coupon\FacadeInterface; * @author Guillaume MOREL * */ -interface ConditionManagerInterface +interface ConditionInterface { /** * Constructor diff --git a/core/lib/Thelia/Condition/Implementation/MatchForEveryoneManager.php b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php similarity index 97% rename from core/lib/Thelia/Condition/Implementation/MatchForEveryoneManager.php rename to core/lib/Thelia/Condition/Implementation/MatchForEveryone.php index 00108a3b0..ffd3d3f6f 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForEveryoneManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use InvalidArgumentException; -use Thelia\Condition\ConditionManagerAbstract; +use Thelia\Condition\ConditionAbstract; /** * Created by JetBrains PhpStorm. @@ -37,7 +37,7 @@ use Thelia\Condition\ConditionManagerAbstract; * @author Guillaume MOREL * */ -class MatchForEveryoneManager extends ConditionManagerAbstract +class MatchForEveryone extends ConditionAbstract { /** @var string Service Id from Resources/config.xml */ protected $serviceId = 'thelia.condition.match_for_everyone'; diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php similarity index 98% rename from core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php rename to core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php index a3ba846fa..527f1871d 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmountManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use Symfony\Component\Intl\Exception\NotImplementedException; -use Thelia\Condition\ConditionManagerAbstract; +use Thelia\Condition\ConditionAbstract; use Thelia\Condition\Operators; use Thelia\Exception\InvalidConditionOperatorException; use Thelia\Model\Currency; @@ -42,7 +42,7 @@ use Thelia\Model\CurrencyQuery; * @author Guillaume MOREL * */ -class MatchForTotalAmountManager extends ConditionManagerAbstract +class MatchForTotalAmount extends ConditionAbstract { /** Condition 1st parameter : price */ CONST INPUT1 = 'price'; diff --git a/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php similarity index 98% rename from core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php rename to core/lib/Thelia/Condition/Implementation/MatchForXArticles.php index d8721cb07..b7fc479cd 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForXArticlesManager.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use InvalidArgumentException; -use Thelia\Condition\ConditionManagerAbstract; +use Thelia\Condition\ConditionAbstract; use Thelia\Condition\Operators; use Thelia\Exception\InvalidConditionOperatorException; use Thelia\Exception\InvalidConditionValueException; @@ -40,7 +40,7 @@ use Thelia\Exception\InvalidConditionValueException; * @author Guillaume MOREL * */ -class MatchForXArticlesManager extends ConditionManagerAbstract +class MatchForXArticles extends ConditionAbstract { /** Condition 1st parameter : quantity */ CONST INPUT1 = 'quantity'; diff --git a/core/lib/Thelia/Config/Resources/coupon.xml b/core/lib/Thelia/Config/Resources/coupon.xml index 8be9ea59f..d0d763ea2 100644 --- a/core/lib/Thelia/Config/Resources/coupon.xml +++ b/core/lib/Thelia/Config/Resources/coupon.xml @@ -19,11 +19,11 @@ - + - + @@ -35,15 +35,15 @@ - + - + - + diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index 6da5ec6b1..d302b6008 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -26,7 +26,7 @@ namespace Thelia\Controller\Admin; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Router; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionManagerInterface; +use Thelia\Condition\ConditionInterface; use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; @@ -227,7 +227,7 @@ class CouponController extends BaseAdminController $args['conditionsObject'] = array(); - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ foreach ($conditions->getConditions() as $condition) { $args['conditionsObject'][] = array( 'serviceId' => $condition->getServiceId(), @@ -519,7 +519,7 @@ class CouponController extends BaseAdminController $couponManager = $this->container->get('thelia.coupon.manager'); $availableConditions = $couponManager->getAvailableConditions(); $cleanedConditions = array(); - /** @var ConditionManagerInterface $availableCondition */ + /** @var ConditionInterface $availableCondition */ foreach ($availableConditions as $availableCondition) { $condition = array(); $condition['serviceId'] = $availableCondition->getServiceId(); @@ -564,7 +564,7 @@ class CouponController extends BaseAdminController protected function cleanConditionForTemplate(ConditionCollection $conditions) { $cleanedConditions = array(); - /** @var $condition ConditionManagerInterface */ + /** @var $condition ConditionInterface */ foreach ($conditions->getConditions() as $condition) { $cleanedConditions[] = $condition->getToolTip(); } diff --git a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php index f890fd8cd..374643fda 100644 --- a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php +++ b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php @@ -39,7 +39,7 @@ use Thelia\Model\Coupon; */ class CouponCreateOrUpdateEvent extends ActionEvent { - /** @var ConditionCollection Array of ConditionManagerInterface */ + /** @var ConditionCollection Array of ConditionInterface */ protected $conditions = null; /** @var string Coupon code (ex: XMAS) */ @@ -280,7 +280,7 @@ class CouponCreateOrUpdateEvent extends ActionEvent /** * Get Conditions * - * @return null|ConditionCollection Array of ConditionManagerInterface + * @return null|ConditionCollection Array of ConditionInterface */ public function getConditions() { @@ -290,7 +290,7 @@ class CouponCreateOrUpdateEvent extends ActionEvent /** * Set Conditions * - * @param ConditionCollection $conditions Array of ConditionManagerInterface + * @param ConditionCollection $conditions Array of ConditionInterface * * @return $this */ diff --git a/core/lib/Thelia/Core/Template/Loop/Coupon.php b/core/lib/Thelia/Core/Template/Loop/Coupon.php index fea2cb23e..88c9b92a0 100755 --- a/core/lib/Thelia/Core/Template/Loop/Coupon.php +++ b/core/lib/Thelia/Core/Template/Loop/Coupon.php @@ -26,7 +26,7 @@ namespace Thelia\Core\Template\Loop; use Propel\Runtime\ActiveQuery\Criteria; use Propel\Runtime\Util\PropelModelPager; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionManagerInterface; +use Thelia\Condition\ConditionInterface; use Thelia\Core\HttpFoundation\Request; use Thelia\Core\Template\Element\BaseI18nLoop; use Thelia\Core\Template\Element\LoopResult; @@ -125,7 +125,7 @@ class Coupon extends BaseI18nLoop implements PropelSearchLoopInterface $daysLeftBeforeExpiration = floor($datediff/(60*60*24)); $cleanedConditions = array(); - /** @var ConditionManagerInterface $condition */ + /** @var ConditionInterface $condition */ foreach ($conditions->getConditions() as $condition) { $cleanedConditions[] = $condition->getToolTip(); } diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index ea3db1ff9..e528a1d49 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -71,7 +71,7 @@ class CouponFactory * @throws \Symfony\Component\Translation\Exception\NotFoundResourceException * @return CouponInterface ready to be processed */ - public function buildCouponFromCode($couponCode) + public function buildCouponManagerFromCode($couponCode) { /** @var Coupon $couponModel */ $couponModel = $this->facade->findOneCouponByCode($couponCode); @@ -86,7 +86,7 @@ class CouponFactory } /** @var CouponInterface $couponInterface */ - $couponInterface = $this->buildCouponInterfaceFromModel($couponModel); + $couponInterface = $this->buildCouponManagerFromModel($couponModel); if ($couponInterface->getConditions()->isEmpty()) { throw new InvalidConditionException( get_class($couponInterface) @@ -103,7 +103,7 @@ class CouponFactory * * @return CouponInterface ready to use CouponInterface object instance */ - protected function buildCouponInterfaceFromModel(Coupon $model) + protected function buildCouponManagerFromModel(Coupon $model) { $isCumulative = ($model->getIsCumulative() == 1 ? true : false); $isRemovingPostage = ($model->getIsRemovingPostage() == 1 ? true : false); diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index ed500c3a4..4bc3aed0e 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -24,7 +24,7 @@ namespace Thelia\Coupon; use Symfony\Component\DependencyInjection\ContainerInterface; -use Thelia\Condition\ConditionManagerInterface; +use Thelia\Condition\ConditionInterface; use Thelia\Coupon\Type\CouponInterface; use Thelia\Model\Coupon; @@ -213,9 +213,9 @@ class CouponManager /** * Add an available ConstraintManager (Services) * - * @param ConditionManagerInterface $condition ConditionManagerInterface + * @param ConditionInterface $condition ConditionInterface */ - public function addAvailableCondition(ConditionManagerInterface $condition) + public function addAvailableCondition(ConditionInterface $condition) { $this->availableConditions[] = $condition; } diff --git a/core/lib/Thelia/Coupon/Type/CouponAbstract.php b/core/lib/Thelia/Coupon/Type/CouponAbstract.php index d8b1a207a..98c258c27 100644 --- a/core/lib/Thelia/Coupon/Type/CouponAbstract.php +++ b/core/lib/Thelia/Coupon/Type/CouponAbstract.php @@ -53,7 +53,7 @@ abstract class CouponAbstract implements CouponInterface /** @var ConditionOrganizerInterface */ protected $organizer = null; - /** @var ConditionCollection Array of ConditionManagerInterface */ + /** @var ConditionCollection Array of ConditionInterface */ protected $conditions = null; /** @var ConditionEvaluator Condition validator */ @@ -214,7 +214,7 @@ abstract class CouponAbstract implements CouponInterface * Replace the existing Conditions by those given in parameter * If one Condition is badly implemented, no Condition will be added * - * @param ConditionCollection $conditions ConditionManagerInterface to add + * @param ConditionCollection $conditions ConditionInterface to add * * @return $this * @throws \Thelia\Exception\InvalidConditionException diff --git a/core/lib/Thelia/Coupon/Type/CouponInterface.php b/core/lib/Thelia/Coupon/Type/CouponInterface.php index f88a08c8c..63c7e4267 100644 --- a/core/lib/Thelia/Coupon/Type/CouponInterface.php +++ b/core/lib/Thelia/Coupon/Type/CouponInterface.php @@ -140,7 +140,7 @@ interface CouponInterface /** * Return condition to validate the Coupon or not * - * @return ConditionCollection A set of ConditionManagerInterface + * @return ConditionCollection A set of ConditionInterface */ public function getConditions(); @@ -148,7 +148,7 @@ interface CouponInterface * Replace the existing Conditions by those given in parameter * If one Condition is badly implemented, no Condition will be added * - * @param ConditionCollection $conditions ConditionManagerInterface to add + * @param ConditionCollection $conditions ConditionInterface to add * * @return $this * @throws \Thelia\Exception\InvalidConditionException diff --git a/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php b/core/lib/Thelia/Coupon/Type/RemoveXAmount.php similarity index 99% rename from core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php rename to core/lib/Thelia/Coupon/Type/RemoveXAmount.php index 9a3019b4b..1609ffc3e 100644 --- a/core/lib/Thelia/Coupon/Type/RemoveXAmountManager.php +++ b/core/lib/Thelia/Coupon/Type/RemoveXAmount.php @@ -37,7 +37,7 @@ use Thelia\Coupon\Type\CouponAbstract; * @author Guillaume MOREL * */ -class RemoveXAmountManager extends CouponAbstract +class RemoveXAmount extends CouponAbstract { /** @var string Service Id */ protected $serviceId = 'thelia.coupon.type.remove_x_amount'; diff --git a/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php b/core/lib/Thelia/Coupon/Type/RemoveXPercent.php similarity index 99% rename from core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php rename to core/lib/Thelia/Coupon/Type/RemoveXPercent.php index 5a1e7e051..931ddad67 100644 --- a/core/lib/Thelia/Coupon/Type/RemoveXPercentManager.php +++ b/core/lib/Thelia/Coupon/Type/RemoveXPercent.php @@ -36,7 +36,7 @@ use Thelia\Exception\MissingFacadeException; * @author Guillaume MOREL * */ -class RemoveXPercentManager extends CouponAbstract +class RemoveXPercent extends CouponAbstract { /** @var string Service Id */ protected $serviceId = 'thelia.coupon.type.remove_x_percent'; diff --git a/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php index a4d940391..46f639521 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionCollectionTest.php @@ -22,7 +22,7 @@ /**********************************************************************************/ namespace Thelia\Condition; -use Thelia\Condition\Implementation\MatchForTotalAmountManager; +use Thelia\Condition\Implementation\MatchForTotalAmount; use Thelia\Model\CurrencyQuery; /** @@ -116,14 +116,14 @@ class ConditionCollectionTest extends \PHPUnit_Framework_TestCase { $stubFacade = $this->generateFacadeStub(); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $collection = new ConditionCollection(); @@ -153,24 +153,24 @@ class ConditionCollectionTest extends \PHPUnit_Framework_TestCase { $stubFacade = $this->generateFacadeStub(); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators1 = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values1 = array( - MatchForTotalAmountManager::INPUT1 => 400, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators1, $values1); - $condition2 = new MatchForTotalAmountManager($stubFacade); + $condition2 = new MatchForTotalAmount($stubFacade); $operators2 = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values2 = array( - MatchForTotalAmountManager::INPUT1 => 600, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 600, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition2->setValidatorsFromForm($operators2, $values2); $collection = new ConditionCollection(); diff --git a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php index fdf97de0c..2c85e05e5 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionEvaluatorTest.php @@ -146,14 +146,14 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase */ public function testIsMatchingTrue() { - $stubConditionTrue1 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + $stubConditionTrue1 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticles') ->disableOriginalConstructor() ->getMock(); $stubConditionTrue1->expects($this->any()) ->method('isMatching') ->will($this->returnValue(true)); - $stubConditionTrue2 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + $stubConditionTrue2 = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticles') ->disableOriginalConstructor() ->getMock(); $stubConditionTrue2->expects($this->any()) @@ -177,14 +177,14 @@ class ConditionEvaluatorTest extends \PHPUnit_Framework_TestCase */ public function testIsMatchingFalse() { - $stubConditionTrue = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + $stubConditionTrue = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticles') ->disableOriginalConstructor() ->getMock(); $stubConditionTrue->expects($this->any()) ->method('isMatching') ->will($this->returnValue(true)); - $stubConditionFalse = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticlesManager') + $stubConditionFalse = $this->getMockBuilder('\Thelia\Condition\Implementation\MatchForXArticles') ->disableOriginalConstructor() ->getMock(); $stubConditionFalse->expects($this->any()) diff --git a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php index c99938408..37fde4cea 100644 --- a/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php +++ b/core/lib/Thelia/Tests/Condition/ConditionFactoryTest.php @@ -84,7 +84,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->getMock(); $stubContainer->expects($this->any()) ->method('get') - ->will($this->returnValue(new MatchForTotalAmountManager($stubFacade))); + ->will($this->returnValue(new MatchForTotalAmount($stubFacade))); $stubContainer->expects($this->any()) ->method('has') @@ -94,14 +94,14 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->method('getContainer') ->will($this->returnValue($stubContainer)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); @@ -148,7 +148,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->getMock(); $stubContainer->expects($this->any()) ->method('get') - ->will($this->returnValue(new MatchForTotalAmountManager($stubFacade))); + ->will($this->returnValue(new MatchForTotalAmount($stubFacade))); $stubContainer->expects($this->any()) ->method('has') @@ -158,14 +158,14 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->method('getContainer') ->will($this->returnValue($stubContainer)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); @@ -210,7 +210,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->getMock(); $stubContainer->expects($this->any()) ->method('get') - ->will($this->returnValue(new MatchForTotalAmountManager($stubFacade))); + ->will($this->returnValue(new MatchForTotalAmount($stubFacade))); $stubContainer->expects($this->any()) ->method('has') @@ -220,25 +220,25 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->method('getContainer') ->will($this->returnValue($stubContainer)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); - $condition2 = new MatchForTotalAmountManager($stubFacade); + $condition2 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition2->setValidatorsFromForm($operators, $values); @@ -287,7 +287,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') ->disableOriginalConstructor() ->getMock(); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $stubContainer->expects($this->any()) ->method('get') ->will($this->returnValue($condition1)); @@ -301,12 +301,12 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($stubContainer)); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); @@ -352,7 +352,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') ->disableOriginalConstructor() ->getMock(); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $stubContainer->expects($this->any()) ->method('get') ->will($this->returnValue($condition1)); @@ -366,12 +366,12 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($stubContainer)); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); @@ -421,7 +421,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase ->getMock(); $stubContainer->expects($this->any()) ->method('get') - ->will($this->returnValue(new MatchForEveryoneManager($stubFacade))); + ->will($this->returnValue(new MatchForEveryone($stubFacade))); $stubContainer->expects($this->any()) ->method('has') @@ -437,7 +437,7 @@ class ConditionFactoryTest extends \PHPUnit_Framework_TestCase $conditionFactory = new ConditionFactory($stubContainer); - $conditionNone = new MatchForEveryoneManager($stubFacade); + $conditionNone = new MatchForEveryone($stubFacade); $expectedCollection = new ConditionCollection(); $expectedCollection->add($conditionNone); diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php index f31ebb2c3..f59fe04ef 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php @@ -33,13 +33,13 @@ use Thelia\Model\Currency; * Date: 8/19/13 * Time: 3:24 PM * - * Unit Test MatchForEveryoneManager Class + * Unit Test MatchForEveryone Class * * @package Condition * @author Guillaume MOREL * */ -class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase +class MatchForEveryoneTest extends \PHPUnit_Framework_TestCase { /** @var FacadeInterface $stubTheliaAdapter */ protected $stubTheliaAdapter = null; @@ -96,7 +96,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForEveryone::setValidators * */ public function testValidBackOfficeInputOperator() @@ -104,7 +104,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); + $condition1 = new MatchForEveryone($stubFacade); $operators = array(); $values = array(); $condition1->setValidatorsFromForm($operators, $values); @@ -119,7 +119,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** * Check if condition is always matching * - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForEveryone::isMatching * */ public function testIsMatching() @@ -127,7 +127,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); + $condition1 = new MatchForEveryone($stubFacade); $isValid = $condition1->isMatching(); @@ -139,7 +139,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** * Check getName i18n * - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::getName + * @covers Thelia\Condition\Implementation\MatchForEveryone::getName * */ public function testGetName() @@ -147,7 +147,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Everybody can use it (no condition)'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); + $condition1 = new MatchForEveryone($stubFacade); $actual = $condition1->getName(); $expected = 'Everybody can use it (no condition)'; @@ -157,7 +157,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** * Check tooltip i18n * - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::getToolTip + * @covers Thelia\Condition\Implementation\MatchForEveryone::getToolTip * */ public function testGetToolTip() @@ -165,7 +165,7 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Will return always true'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); + $condition1 = new MatchForEveryone($stubFacade); $actual = $condition1->getToolTip(); $expected = 'Will return always true'; @@ -175,15 +175,15 @@ class MatchForEveryoneManagerTest extends \PHPUnit_Framework_TestCase /** * Check validator * - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::generateInputs - * @covers Thelia\Condition\Implementation\MatchForEveryoneManager::setValidatorsFromForm + * @covers Thelia\Condition\Implementation\MatchForEveryone::generateInputs + * @covers Thelia\Condition\Implementation\MatchForEveryone::setValidatorsFromForm */ public function testGetValidator() { $stubFacade = $this->generateFacadeStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForEveryoneManager($stubFacade); + $condition1 = new MatchForEveryone($stubFacade); $actual1 = $condition1->setValidatorsFromForm(array(), array()); $expected1 = $condition1; $actual2 = $condition1->getValidators(); diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php index 153737d1d..0390536c5 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php @@ -37,13 +37,13 @@ use Thelia\Model\CurrencyQuery; * Date: 8/19/13 * Time: 3:24 PM * - * Unit Test MatchForTotalAmountManager Class + * Unit Test MatchForTotalAmount Class * * @package Condition * @author Guillaume MOREL * */ -class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase +class MatchForTotalAmountTest extends \PHPUnit_Framework_TestCase { /** @var FacadeInterface $stubTheliaAdapter */ protected $stubTheliaAdapter = null; @@ -97,7 +97,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::setValidators * @expectedException \Thelia\Exception\InvalidConditionOperatorException * */ @@ -106,14 +106,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateAdapterStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::IN, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::IN, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => '400', - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => '400', + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -126,7 +126,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::setValidators * @expectedException \Thelia\Exception\InvalidConditionOperatorException * */ @@ -135,14 +135,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateAdapterStub(399, 'EUR'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::INFERIOR + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::INFERIOR ); $values = array( - MatchForTotalAmountManager::INPUT1 => '400', - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => '400', + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -155,7 +155,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::setValidators * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -164,14 +164,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 'X', - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 'X', + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -184,7 +184,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::setValidators * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -193,14 +193,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400, - MatchForTotalAmountManager::INPUT2 => 'FLA'); + MatchForTotalAmount::INPUT1 => 400, + MatchForTotalAmount::INPUT2 => 'FLA'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -213,7 +213,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionInferior() @@ -221,14 +221,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -241,7 +241,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionInferior() @@ -249,14 +249,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -269,7 +269,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionInferiorEquals() @@ -277,14 +277,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -297,7 +297,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionInferiorEquals2() @@ -305,14 +305,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -325,7 +325,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionInferiorEquals() @@ -333,14 +333,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(401, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -353,7 +353,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test equals operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionEqual() @@ -361,14 +361,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -381,7 +381,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test equals operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionEqual() @@ -389,14 +389,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -409,7 +409,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionSuperiorEquals() @@ -417,14 +417,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(401, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -437,7 +437,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionSuperiorEquals2() @@ -445,14 +445,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -465,7 +465,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionSuperiorEquals() @@ -473,14 +473,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR_OR_EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -493,7 +493,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionSuperior() @@ -501,14 +501,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(401, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -521,7 +521,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionSuperior() @@ -529,14 +529,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(399, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -549,7 +549,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check currency is checked * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testMatchingConditionCurrency() @@ -557,14 +557,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -577,7 +577,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check currency is checked * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::isMatching * */ public function testNotMatchingConditionCurrency() @@ -585,14 +585,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** @var FacadeInterface $stubFacade */ $stubFacade = $this->generateAdapterStub(400.00, 'EUR'); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'USD'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'USD'); $condition1->setValidatorsFromForm($operators, $values); $isValid = $condition1->isMatching(); @@ -605,7 +605,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check unknown currency * - * @covers Thelia\Condition\ConditionManagerAbstract::isCurrencyValid + * @covers Thelia\Condition\ConditionAbstract::isCurrencyValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -634,14 +634,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($currencies)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'UNK'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'UNK'); $condition1->setValidatorsFromForm($operators, $values); @@ -672,7 +672,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check invalid currency * - * @covers Thelia\Condition\ConditionManagerAbstract::isPriceValid + * @covers Thelia\Condition\ConditionAbstract::isPriceValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -701,14 +701,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($currencies)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 'notfloat', - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 'notfloat', + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); @@ -739,7 +739,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check invalid currency * - * @covers Thelia\Condition\ConditionManagerAbstract::isPriceValid + * @covers Thelia\Condition\ConditionAbstract::isPriceValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -768,14 +768,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($currencies)); - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 0.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 0.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); @@ -855,7 +855,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check getName i18n * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getName + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::getName * */ public function testGetName() @@ -863,7 +863,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Cart total amount'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $actual = $condition1->getName(); $expected = 'Cart total amount'; @@ -873,7 +873,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check tooltip i18n * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::getToolTip + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::getToolTip * */ public function testGetToolTip() @@ -881,14 +881,14 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart total amount is %operator% %amount% %currency%'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $actual = $condition1->getToolTip(); @@ -899,7 +899,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase /** * Check validator * - * @covers Thelia\Condition\Implementation\MatchForTotalAmountManager::generateInputs + * @covers Thelia\Condition\Implementation\MatchForTotalAmount::generateInputs * */ public function testGetValidator() @@ -907,21 +907,21 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForTotalAmountManager($stubFacade); + $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::EQUAL, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::EQUAL, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR'); + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR'); $condition1->setValidatorsFromForm($operators, $values); $actual = $condition1->getValidators(); $validators = array( 'inputs' => array( - MatchForTotalAmountManager::INPUT1 => array( + MatchForTotalAmount::INPUT1 => array( 'title' => 'Price', 'availableOperators' => array( '<' => 'Price', @@ -936,7 +936,7 @@ class MatchForTotalAmountManagerTest extends \PHPUnit_Framework_TestCase 'value' => '', 'selectedOperator' => '' ), - MatchForTotalAmountManager::INPUT2 => array( + MatchForTotalAmount::INPUT2 => array( 'title' => 'Price', 'availableOperators' => array('==' => 'Price'), 'availableValues' => array( diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php index f59cd41b7..f33ef0468 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php @@ -33,13 +33,13 @@ use Thelia\Coupon\FacadeInterface; * Date: 8/19/13 * Time: 3:24 PM * - * Unit Test MatchForXArticlesManager Class + * Unit Test MatchForXArticles Class * * @package Constraint * @author Guillaume MOREL * */ -class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase +class MatchForXArticlesTest extends \PHPUnit_Framework_TestCase { /** @@ -54,7 +54,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForXArticles::setValidators * @expectedException \Thelia\Exception\InvalidConditionOperatorException */ public function testInValidBackOfficeInputOperator() @@ -72,12 +72,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::IN + MatchForXArticles::INPUT1 => Operators::IN ); $values = array( - MatchForXArticlesManager::INPUT1 => 5 + MatchForXArticles::INPUT1 => 5 ); $condition1->setValidatorsFromForm($operators, $values); @@ -91,7 +91,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if validity test on BackOffice inputs are working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::setValidators + * @covers Thelia\Condition\Implementation\MatchForXArticles::setValidators * @expectedException \Thelia\Exception\InvalidConditionValueException */ public function testInValidBackOfficeInputValue() @@ -108,12 +108,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 'X' + MatchForXArticles::INPUT1 => 'X' ); $condition1->setValidatorsFromForm($operators, $values); @@ -127,7 +127,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleInferior() @@ -144,12 +144,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::INFERIOR + MatchForXArticles::INPUT1 => Operators::INFERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 5 + MatchForXArticles::INPUT1 => 5 ); $condition1->setValidatorsFromForm($operators, $values); @@ -163,7 +163,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testNotMatchingRuleInferior() @@ -180,12 +180,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::INFERIOR + MatchForXArticles::INPUT1 => Operators::INFERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4, + MatchForXArticles::INPUT1 => 4, ); $condition1->setValidatorsFromForm($operators, $values); @@ -199,7 +199,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleInferiorEquals() @@ -216,12 +216,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::INFERIOR_OR_EQUAL, + MatchForXArticles::INPUT1 => Operators::INFERIOR_OR_EQUAL, ); $values = array( - MatchForXArticlesManager::INPUT1 => 5, + MatchForXArticles::INPUT1 => 5, ); $condition1->setValidatorsFromForm($operators, $values); @@ -235,7 +235,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleInferiorEquals2() @@ -252,12 +252,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::INFERIOR_OR_EQUAL + MatchForXArticles::INPUT1 => Operators::INFERIOR_OR_EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -271,7 +271,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test inferior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testNotMatchingRuleInferiorEquals() @@ -288,12 +288,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::INFERIOR_OR_EQUAL + MatchForXArticles::INPUT1 => Operators::INFERIOR_OR_EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 3 + MatchForXArticles::INPUT1 => 3 ); $condition1->setValidatorsFromForm($operators, $values); @@ -307,7 +307,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test equals operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleEqual() @@ -324,12 +324,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::EQUAL + MatchForXArticles::INPUT1 => Operators::EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -343,7 +343,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test equals operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testNotMatchingRuleEqual() @@ -360,12 +360,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::EQUAL + MatchForXArticles::INPUT1 => Operators::EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 5 + MatchForXArticles::INPUT1 => 5 ); $condition1->setValidatorsFromForm($operators, $values); @@ -379,7 +379,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleSuperiorEquals() @@ -396,12 +396,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL + MatchForXArticles::INPUT1 => Operators::SUPERIOR_OR_EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -415,7 +415,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleSuperiorEquals2() @@ -432,12 +432,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL + MatchForXArticles::INPUT1 => Operators::SUPERIOR_OR_EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 3 + MatchForXArticles::INPUT1 => 3 ); $condition1->setValidatorsFromForm($operators, $values); @@ -451,7 +451,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testNotMatchingRuleSuperiorEquals() @@ -468,12 +468,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR_OR_EQUAL + MatchForXArticles::INPUT1 => Operators::SUPERIOR_OR_EQUAL ); $values = array( - MatchForXArticlesManager::INPUT1 => 5 + MatchForXArticles::INPUT1 => 5 ); $condition1->setValidatorsFromForm($operators, $values); @@ -487,7 +487,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testMatchingRuleSuperior() @@ -504,12 +504,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 3 + MatchForXArticles::INPUT1 => 3 ); $condition1->setValidatorsFromForm($operators, $values); @@ -523,7 +523,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check if test superior operator is working * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::isMatching + * @covers Thelia\Condition\Implementation\MatchForXArticles::isMatching * */ public function testNotMatchingRuleSuperior() @@ -540,12 +540,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -570,12 +570,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -606,17 +606,17 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase ->method('getConditionEvaluator') ->will($this->returnValue(new ConditionEvaluator())); - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); $expected = array( - MatchForXArticlesManager::INPUT1 => array( + MatchForXArticles::INPUT1 => array( Operators::INFERIOR, Operators::INFERIOR_OR_EQUAL, Operators::EQUAL, @@ -674,7 +674,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check getName i18n * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getName + * @covers Thelia\Condition\Implementation\MatchForXArticles::getName * */ public function testGetName() @@ -682,7 +682,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Number of articles in cart'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $actual = $condition1->getName(); $expected = 'Number of articles in cart'; @@ -692,7 +692,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check tooltip i18n * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::getToolTip + * @covers Thelia\Condition\Implementation\MatchForXArticles::getToolTip * */ public function testGetToolTip() @@ -700,12 +700,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'If cart products quantity is superior to 4'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -717,7 +717,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase /** * Check validator * - * @covers Thelia\Condition\Implementation\MatchForXArticlesManager::generateInputs + * @covers Thelia\Condition\Implementation\MatchForXArticles::generateInputs * */ public function testGetValidator() @@ -725,12 +725,12 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Price'); /** @var FacadeInterface $stubFacade */ - $condition1 = new MatchForXArticlesManager($stubFacade); + $condition1 = new MatchForXArticles($stubFacade); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR + MatchForXArticles::INPUT1 => Operators::SUPERIOR ); $values = array( - MatchForXArticlesManager::INPUT1 => 4 + MatchForXArticles::INPUT1 => 4 ); $condition1->setValidatorsFromForm($operators, $values); @@ -738,7 +738,7 @@ class MatchForXArticlesManagerTest extends \PHPUnit_Framework_TestCase $validators = array( 'inputs' => array( - MatchForXArticlesManager::INPUT1 => array( + MatchForXArticles::INPUT1 => array( 'title' => 'Price', 'availableOperators' => array( '<' => 'Price', diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 8a52bd1c7..97804e9da 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -25,9 +25,9 @@ namespace Thelia\Coupon; use Thelia\Condition\ConditionCollection; use Thelia\Condition\ConditionEvaluator; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\Implementation\MatchForTotalAmountManager; +use Thelia\Condition\Implementation\MatchForTotalAmount; use Thelia\Condition\Operators; -use Thelia\Coupon\Type\RemoveXAmountManager; +use Thelia\Coupon\Type\RemoveXAmount; use Thelia\Model\Coupon; use Thelia\Model\CurrencyQuery; @@ -131,25 +131,25 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $date = new \DateTime(); $coupon1->setExpirationDate($date->setTimestamp(strtotime("today + 3 months"))); - $condition1 = new MatchForTotalAmountManager($facade); + $condition1 = new MatchForTotalAmount($facade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); - $condition2 = new MatchForTotalAmountManager($facade); + $condition2 = new MatchForTotalAmount($facade); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition2->setValidatorsFromForm($operators, $values); @@ -178,36 +178,67 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua } /** - * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode + * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode */ public function testBuildCouponFromCode() { $stubFacade = $this->generateFacadeStub(); - $stubContainer = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Container') - ->disableOriginalConstructor() - ->getMock(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); $conditionFactory = new ConditionFactory($stubContainer); - $expected = $this->generateCouponModel($stubFacade, $conditionFactory); + $couponModel = $this->generateCouponModel($stubFacade, $conditionFactory); $stubFacade->expects($this->any()) ->method('findOneCouponByCode') - ->will($this->returnValue($expected)); - $stubContainer->expects($this->at(0)) - ->method('get') - ->will($this->returnValue($stubFacade)); + ->will($this->returnValue($couponModel)); - $couponManager = new RemoveXAmountManager(); - $stubContainer->expects($this->at(1)) + $couponManager = new RemoveXAmount($stubFacade); + + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + + $stubContainer->expects($this->any()) ->method('get') - ->will($this->returnValue($couponManager)); + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory)); + $stubContainer->expects($this->any()) ->method('has') ->will($this->returnValue(true)); - $factory = new CouponFactory($stubContainer); - $actual = $factory->buildCouponFromCode('XMAS'); + $expected = $couponManager; + $actual = $factory->buildCouponManagerFromCode('XMAS'); $this->assertEquals($expected, $actual); } diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php index 48c3405b1..cdfa7c875 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php @@ -28,17 +28,17 @@ namespace Thelia\Coupon\Type; * Date: 8/19/13 * Time: 3:24 PM * - * Unit Test RemoveXAmountManager Class + * Unit Test RemoveXAmount Class * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. * * @package Coupon * @author Guillaume MOREL * */ -class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase +class RemoveXAmountTest extends \PHPUnit_Framework_TestCase { /** - * @var RemoveXAmountManager + * @var RemoveXAmount */ protected $object; @@ -48,7 +48,7 @@ class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { -// $this->object = new RemoveXAmountManager; +// $this->object = new RemoveXAmount; } /** @@ -60,7 +60,7 @@ class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXAmountManager::set + * @covers Thelia\Coupon\Type\RemoveXAmount::set * @todo Implement testSet(). */ public function testSet() @@ -72,7 +72,7 @@ class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXAmountManager::getName + * @covers Thelia\Coupon\Type\RemoveXAmount::getName * @todo Implement testGetName(). */ public function testGetName() @@ -84,7 +84,7 @@ class RemoveXAmountManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXAmountManager::getToolTip + * @covers Thelia\Coupon\Type\RemoveXAmount::getToolTip * @todo Implement testGetToolTip(). */ public function testGetToolTip() diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php index 09326ab2a..28123ea83 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php @@ -28,17 +28,17 @@ namespace Thelia\Coupon\Type; * Date: 8/19/13 * Time: 3:24 PM * - * Unit Test RemoveXPercentManager Class + * Unit Test RemoveXPercent Class * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. * * @package Coupon * @author Guillaume MOREL * */ -class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase +class RemoveXPercentTest extends \PHPUnit_Framework_TestCase { /** - * @var RemoveXPercentManager + * @var RemoveXPercent */ protected $object; @@ -48,7 +48,7 @@ class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { -// $this->object = new RemoveXPercentManager; +// $this->object = new RemoveXPercent; } /** @@ -60,7 +60,7 @@ class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXPercentManager::set + * @covers Thelia\Coupon\Type\RemoveXPercent::set * @todo Implement testSet(). */ public function testSet() @@ -72,7 +72,7 @@ class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXPercentManager::exec + * @covers Thelia\Coupon\Type\RemoveXPercent::exec * @todo Implement testExec(). */ public function testExec() @@ -84,7 +84,7 @@ class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXPercentManager::getName + * @covers Thelia\Coupon\Type\RemoveXPercent::getName * @todo Implement testGetName(). */ public function testGetName() @@ -96,7 +96,7 @@ class RemoveXPercentManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\Type\RemoveXPercentManager::getToolTip + * @covers Thelia\Coupon\Type\RemoveXPercent::getToolTip * @todo Implement testGetToolTip(). */ public function testGetToolTip() diff --git a/install/faker.php b/install/faker.php index d7ddd3b44..30a55f397 100755 --- a/install/faker.php +++ b/install/faker.php @@ -1,9 +1,9 @@ setExpirationDate($date->setTimestamp(strtotime("today + 3 months"))); - $condition1 = new MatchForTotalAmountManager($adapter); + $condition1 = new MatchForTotalAmount($adapter); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::SUPERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 40.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition1->setValidatorsFromForm($operators, $values); - $condition2 = new MatchForTotalAmountManager($adapter); + $condition2 = new MatchForTotalAmount($adapter); $operators = array( - MatchForTotalAmountManager::INPUT1 => Operators::INFERIOR, - MatchForTotalAmountManager::INPUT2 => Operators::EQUAL + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); $values = array( - MatchForTotalAmountManager::INPUT1 => 400.00, - MatchForTotalAmountManager::INPUT2 => 'EUR' + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' ); $condition2->setValidatorsFromForm($operators, $values); @@ -727,12 +727,12 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $date = new \DateTime(); $coupon2->setExpirationDate($date->setTimestamp(strtotime("today + 1 months"))); - $condition1 = new MatchForXArticlesManager($adapter); + $condition1 = new MatchForXArticles($adapter); $operators = array( - MatchForXArticlesManager::INPUT1 => Operators::SUPERIOR, + MatchForXArticles::INPUT1 => Operators::SUPERIOR, ); $values = array( - MatchForXArticlesManager::INPUT1 => 4, + MatchForXArticles::INPUT1 => 4, ); $condition1->setValidatorsFromForm($operators, $values); $conditions = new ConditionCollection(); @@ -771,7 +771,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $date = new \DateTime(); $coupon3->setExpirationDate($date->setTimestamp(strtotime("today + 2 months"))); - $condition1 = new MatchForEveryoneManager($adapter); + $condition1 = new MatchForEveryone($adapter); $operators = array(); $values = array(); $condition1->setValidatorsFromForm($operators, $values); diff --git a/install/faker_add_ecotax.php b/install/faker_add_ecotax.php index 4a9c8de39..0bb6838d9 100755 --- a/install/faker_add_ecotax.php +++ b/install/faker_add_ecotax.php @@ -1,9 +1,9 @@ Date: Sat, 23 Nov 2013 20:21:52 +0100 Subject: [PATCH 14/70] Fix generated unit test stub files --- core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php | 5 ----- core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php | 4 ---- core/lib/Thelia/Tests/Coupon/CouponManagerTest.php | 5 ----- core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php | 5 ----- .../Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php | 5 ----- .../Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php | 5 ----- 6 files changed, 29 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php b/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php index 75ec32382..6e1619aac 100644 --- a/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php +++ b/core/lib/Thelia/Tests/Coupon/BaseFacadeTest.php @@ -37,10 +37,6 @@ namespace Thelia\Coupon; */ class BaseFacadeTest extends \PHPUnit_Framework_TestCase { - /** - * @var BaseFacade - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. @@ -48,7 +44,6 @@ class BaseFacadeTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->object = new BaseFacade; } /** diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 97804e9da..218b70611 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -45,10 +45,6 @@ use Thelia\Model\CurrencyQuery; */ class CouponFactoryTest extends \PHPUnit_Framework_TestCase { - /** - * @var CouponFactory - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index 2a33271bf..07c6bc597 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -37,10 +37,6 @@ namespace Thelia\Coupon; */ class CouponManagerTest extends \PHPUnit_Framework_TestCase { - /** - * @var CouponManager - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. @@ -48,7 +44,6 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { - $this->object = new CouponManager; } /** diff --git a/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php b/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php index 82a4fc0a4..184f1ef29 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php @@ -37,10 +37,6 @@ namespace Thelia\Coupon\Type; */ class CouponAbstractTest extends \PHPUnit_Framework_TestCase { - /** - * @var CouponAbstract - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. @@ -48,7 +44,6 @@ class CouponAbstractTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { -// $this->object = new CouponAbstract(); } /** diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php index cdfa7c875..c15fa7379 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php @@ -37,10 +37,6 @@ namespace Thelia\Coupon\Type; */ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase { - /** - * @var RemoveXAmount - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. @@ -48,7 +44,6 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { -// $this->object = new RemoveXAmount; } /** diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php index 28123ea83..fad80a389 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php @@ -37,10 +37,6 @@ namespace Thelia\Coupon\Type; */ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase { - /** - * @var RemoveXPercent - */ - protected $object; /** * Sets up the fixture, for example, opens a network connection. @@ -48,7 +44,6 @@ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase */ protected function setUp() { -// $this->object = new RemoveXPercent; } /** From f40476e3ea827f7b2d9d10947254933ea482497a Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 22:15:45 +0100 Subject: [PATCH 15/70] Coupon not found by the factory now just return false --- core/lib/Thelia/Action/Coupon.php | 59 ++++--- core/lib/Thelia/Coupon/CouponFactory.php | 5 +- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 165 ++++++++++++++++++ 3 files changed, 196 insertions(+), 33 deletions(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 4ac8481f7..a4188c2fc 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -94,6 +94,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface public function consume(CouponConsumeEvent $event) { $totalDiscount = 0; + $isValid = false; /** @var CouponFactory $couponFactory */ $couponFactory = $this->container->get('thelia.coupon.factory'); @@ -104,40 +105,40 @@ class Coupon extends BaseAction implements EventSubscriberInterface /** @var CouponInterface $coupon */ $coupon = $couponFactory->buildCouponManagerFromCode($event->getCode()); - $isValid = $coupon->isMatching(); + if ($coupon) { + $isValid = $coupon->isMatching(); + if ($isValid) { + /** @var Request $request */ + $request = $this->container->get('request'); + $consumedCoupons = $request->getSession()->getConsumedCoupons(); - if ($isValid) { - /** @var Request $request */ - $request = $this->container->get('request'); - $consumedCoupons = $request->getSession()->getConsumedCoupons(); + if (!isset($consumedCoupons) || !$consumedCoupons) { + $consumedCoupons = array(); + } - if (!isset($consumedCoupons) || !$consumedCoupons) { - $consumedCoupons = array(); + // Prevent accumulation of the same Coupon on a Checkout + $consumedCoupons[$event->getCode()] = $event->getCode(); + + $request->getSession()->setConsumedCoupons($consumedCoupons); + + $totalDiscount = $couponManager->getDiscount(); + // @todo insert false product in cart with the name of the coupon and the discount as negative price + + // Decrement coupon quantity + // @todo move this part in after order event + $couponQuery = CouponQuery::create(); + $couponModel = $couponQuery->findOneByCode($coupon->getCode()); + $couponManager->decrementeQuantity($couponModel); + + $request + ->getSession() + ->getCart() + ->setDiscount($totalDiscount) + ->save(); } - - // Prevent accumulation of the same Coupon on a Checkout - $consumedCoupons[$event->getCode()] = $event->getCode(); - - $request->getSession()->setConsumedCoupons($consumedCoupons); - - $totalDiscount = $couponManager->getDiscount(); - // @todo insert false product in cart with the name of the coupon and the discount as negative price - - // Decrement coupon quantity - // @todo move this part in after order event - $couponQuery = CouponQuery::create(); - $couponModel = $couponQuery->findOneByCode($coupon->getCode()); - $couponManager->decrementeQuantity($couponModel); - - $request - ->getSession() - ->getCart() - ->setDiscount($totalDiscount) - ->save() - ; - } + $event->setIsValid($isValid); $event->setDiscount($totalDiscount); } diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index e528a1d49..fbbfa6a8a 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -68,7 +68,6 @@ class CouponFactory * * @throws \Thelia\Exception\CouponExpiredException * @throws \Thelia\Exception\InvalidConditionException - * @throws \Symfony\Component\Translation\Exception\NotFoundResourceException * @return CouponInterface ready to be processed */ public function buildCouponManagerFromCode($couponCode) @@ -76,9 +75,7 @@ class CouponFactory /** @var Coupon $couponModel */ $couponModel = $this->facade->findOneCouponByCode($couponCode); if ($couponModel === null) { - throw new NotFoundResourceException( - 'Coupon ' . $couponCode . ' not found in Database' - ); + return false; } if ($couponModel->getExpirationDate() < new \DateTime()) { diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 218b70611..0baa4753a 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -238,4 +238,169 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $this->assertEquals($expected, $actual); } + + /** + * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + */ + public function testBuildCouponFromCodeUnknownCode() + { + $stubFacade = $this->generateFacadeStub(); + + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + $stubFacade->expects($this->any()) + ->method('findOneCouponByCode') + ->will($this->returnValue(null)); + + $couponManager = new RemoveXAmount($stubFacade); + + + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $factory = new CouponFactory($stubContainer); + $actual = $factory->buildCouponManagerFromCode('XMAS'); + $expected = false; + + $this->assertEquals($expected, $actual); + + } + + /** + * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @expectedException \Thelia\Exception\CouponExpiredException + */ + public function testBuildCouponFromCodeExpiredCoupon() + { + $stubFacade = $this->generateFacadeStub(); + + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + $couponModel = $this->generateCouponModel($stubFacade, $conditionFactory); + $date = new \DateTime(); + $couponModel->setExpirationDate($date->setTimestamp(strtotime("today - 3 months"))); + $stubFacade->expects($this->any()) + ->method('findOneCouponByCode') + ->will($this->returnValue($couponModel)); + + $couponManager = new RemoveXAmount($stubFacade); + + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $factory = new CouponFactory($stubContainer); + $actual = $factory->buildCouponManagerFromCode('XMAS'); + + } + + /** + * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @expectedException \Thelia\Exception\InvalidConditionException + */ + public function testBuildCouponFromCodeNoConditionCoupon() + { + $stubFacade = $this->generateFacadeStub(); + + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + $couponModel = $this->generateCouponModel($stubFacade, $conditionFactory); + $stubFacade->expects($this->any()) + ->method('findOneCouponByCode') + ->will($this->returnValue($couponModel)); + + $couponManager = new RemoveXAmount($stubFacade); + + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory)); + + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $factory = new CouponFactory($stubContainer); + $expected = $couponManager; + $actual = $factory->buildCouponManagerFromCode('XMAS'); + + } } From 4447dbcd9a352521c967c20d7558f10fb5d05c8f Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 22:29:15 +0100 Subject: [PATCH 16/70] Coupon : Fix the error if a given coupon leads to an unknown service id --- core/lib/Thelia/Coupon/CouponFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index fbbfa6a8a..99388a7e0 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -84,7 +84,7 @@ class CouponFactory /** @var CouponInterface $couponInterface */ $couponInterface = $this->buildCouponManagerFromModel($couponModel); - if ($couponInterface->getConditions()->isEmpty()) { + if ($couponInterface && $couponInterface->getConditions()->isEmpty()) { throw new InvalidConditionException( get_class($couponInterface) ); From bcad9b5da12a0cf3d9a73ce1554691353949bdd2 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 22:31:18 +0100 Subject: [PATCH 17/70] Coupon : rename --- core/lib/Thelia/Action/Coupon.php | 2 +- core/lib/Thelia/Coupon/CouponFactory.php | 6 +++--- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index a4188c2fc..90dded5a8 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -103,7 +103,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface $couponManager = $this->container->get('thelia.coupon.manager'); /** @var CouponInterface $coupon */ - $coupon = $couponFactory->buildCouponManagerFromCode($event->getCode()); + $coupon = $couponFactory->buildCouponFromCode($event->getCode()); if ($coupon) { $isValid = $coupon->isMatching(); diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index 99388a7e0..05f47ae7c 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -70,7 +70,7 @@ class CouponFactory * @throws \Thelia\Exception\InvalidConditionException * @return CouponInterface ready to be processed */ - public function buildCouponManagerFromCode($couponCode) + public function buildCouponFromCode($couponCode) { /** @var Coupon $couponModel */ $couponModel = $this->facade->findOneCouponByCode($couponCode); @@ -83,7 +83,7 @@ class CouponFactory } /** @var CouponInterface $couponInterface */ - $couponInterface = $this->buildCouponManagerFromModel($couponModel); + $couponInterface = $this->buildCouponFromModel($couponModel); if ($couponInterface && $couponInterface->getConditions()->isEmpty()) { throw new InvalidConditionException( get_class($couponInterface) @@ -100,7 +100,7 @@ class CouponFactory * * @return CouponInterface ready to use CouponInterface object instance */ - protected function buildCouponManagerFromModel(Coupon $model) + protected function buildCouponFromModel(Coupon $model) { $isCumulative = ($model->getIsCumulative() == 1 ? true : false); $isRemovingPostage = ($model->getIsRemovingPostage() == 1 ? true : false); diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 0baa4753a..696a453a5 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -174,7 +174,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua } /** - * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode */ public function testBuildCouponFromCode() { @@ -234,13 +234,13 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $factory = new CouponFactory($stubContainer); $expected = $couponManager; - $actual = $factory->buildCouponManagerFromCode('XMAS'); + $actual = $factory->buildCouponFromCode('XMAS'); $this->assertEquals($expected, $actual); } /** - * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode */ public function testBuildCouponFromCodeUnknownCode() { @@ -266,7 +266,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua ->will($this->returnValue(true)); $factory = new CouponFactory($stubContainer); - $actual = $factory->buildCouponManagerFromCode('XMAS'); + $actual = $factory->buildCouponFromCode('XMAS'); $expected = false; $this->assertEquals($expected, $actual); @@ -274,7 +274,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua } /** - * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode * @expectedException \Thelia\Exception\CouponExpiredException */ public function testBuildCouponFromCodeExpiredCoupon() @@ -336,12 +336,12 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua ->will($this->returnValue(true)); $factory = new CouponFactory($stubContainer); - $actual = $factory->buildCouponManagerFromCode('XMAS'); + $actual = $factory->buildCouponFromCode('XMAS'); } /** - * @covers Thelia\Coupon\CouponFactory::buildCouponManagerFromCode + * @covers Thelia\Coupon\CouponFactory::buildCouponFromCode * @expectedException \Thelia\Exception\InvalidConditionException */ public function testBuildCouponFromCodeNoConditionCoupon() @@ -400,7 +400,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $factory = new CouponFactory($stubContainer); $expected = $couponManager; - $actual = $factory->buildCouponManagerFromCode('XMAS'); + $actual = $factory->buildCouponFromCode('XMAS'); } } From 2884b0a3b7bbdaf01a4ef1ffdd6e265517ed1c78 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 22:33:30 +0100 Subject: [PATCH 18/70] Coupon : spelling --- core/lib/Thelia/Action/Coupon.php | 2 +- core/lib/Thelia/Coupon/CouponManager.php | 2 +- core/lib/Thelia/Tests/Coupon/CouponManagerTest.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 90dded5a8..b68b27572 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -128,7 +128,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface // @todo move this part in after order event $couponQuery = CouponQuery::create(); $couponModel = $couponQuery->findOneByCode($coupon->getCode()); - $couponManager->decrementeQuantity($couponModel); + $couponManager->decrementQuantity($couponModel); $request ->getSession() diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 4bc3aed0e..4f075f989 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -239,7 +239,7 @@ class CouponManager * * @return bool */ - public function decrementeQuantity(Coupon $coupon) + public function decrementQuantity(Coupon $coupon) { $ret = true; try { diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index 07c6bc597..d89f4c81c 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -115,7 +115,7 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase } /** - * @covers Thelia\Coupon\CouponManager::decrementeQuantity + * @covers Thelia\Coupon\CouponManager::decrementQuantity * @todo Implement testDecrementeQuantity(). */ public function testDecrementeQuantity() From 20e004b9f5a0e928af7fbf25e326737d3c39b2a8 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 23:06:32 +0100 Subject: [PATCH 19/70] Coupon : Bug fix when coupon max usage was not correctly decremented --- core/lib/Thelia/Coupon/CouponManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 4f075f989..145bc60f2 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -248,7 +248,7 @@ class CouponManager if ($oldMaxUsage > 0) { $oldMaxUsage--; - $coupon->setMaxUsage($$oldMaxUsage); + $coupon->setMaxUsage($oldMaxUsage); $coupon->save(); } From 69a72cd5558656d63268c00c897b90233a7897a1 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 23:23:58 +0100 Subject: [PATCH 20/70] Coupon : Add ability to know usage left after decremental --- core/lib/Thelia/Coupon/CouponManager.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 145bc60f2..ea41a4f03 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -237,20 +237,21 @@ class CouponManager * * @param \Thelia\Model\Coupon $coupon Coupon consumed * - * @return bool + * @return int Usage left after decremental */ public function decrementQuantity(Coupon $coupon) { - $ret = true; + $ret = -1; try { - $oldMaxUsage = $coupon->getMaxUsage(); + $usageLeft = $coupon->getMaxUsage(); - if ($oldMaxUsage > 0) { - $oldMaxUsage--; - $coupon->setMaxUsage($oldMaxUsage); + if ($usageLeft > 0) { + $usageLeft--; + $coupon->setMaxUsage($usageLeft); $coupon->save(); + $ret = $usageLeft; } } catch(\Exception $e) { From 25934b80b946828116aa8fdcd8c55d9c800acf15 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sat, 23 Nov 2013 23:56:06 +0100 Subject: [PATCH 21/70] Coupon : buildCouponFromModel becomes public --- core/lib/Thelia/Coupon/CouponFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index 05f47ae7c..2c1befd2c 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -100,7 +100,7 @@ class CouponFactory * * @return CouponInterface ready to use CouponInterface object instance */ - protected function buildCouponFromModel(Coupon $model) + public function buildCouponFromModel(Coupon $model) { $isCumulative = ($model->getIsCumulative() == 1 ? true : false); $isRemovingPostage = ($model->getIsRemovingPostage() == 1 ? true : false); From 469a07cdb3fac41a67efea506595f15db351fee1 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 00:26:16 +0100 Subject: [PATCH 22/70] Coupon : Adding unit tests --- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 3 +- .../Thelia/Tests/Coupon/CouponManagerTest.php | 365 ++++++++++++++++-- 2 files changed, 331 insertions(+), 37 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index 696a453a5..b70bdf247 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -269,7 +269,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $actual = $factory->buildCouponFromCode('XMAS'); $expected = false; - $this->assertEquals($expected, $actual); + $this->assertEquals($expected, $actual, 'CouponFactory->buildCouponFromCode should return false if the given code is unknown'); } @@ -399,7 +399,6 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua ->will($this->returnValue(true)); $factory = new CouponFactory($stubContainer); - $expected = $couponManager; $actual = $factory->buildCouponFromCode('XMAS'); } diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index d89f4c81c..c3f558557 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -22,6 +22,14 @@ /**********************************************************************************/ namespace Thelia\Coupon; +use Thelia\Condition\ConditionCollection; +use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\ConditionFactory; +use Thelia\Condition\Implementation\MatchForTotalAmount; +use Thelia\Condition\Operators; +use Thelia\Coupon\Type\RemoveXAmount; +use Thelia\Model\Coupon; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -54,6 +62,71 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase { } + + /** + * Generate a valid Coupon model + */ + public function generateCouponModel($facade, ConditionFactory $conditionFactory) + { + // Coupons + $coupon1 = new Coupon(); + $coupon1->setCode('XMAS'); + $coupon1->setType('thelia.coupon.type.remove_x_amount'); + $coupon1->setTitle('Christmas coupon'); + $coupon1->setShortDescription('Coupon for Christmas removing 10€ if your total checkout is more than 40€'); + $coupon1->setDescription('Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla. + +Donec rhoncus leo mauris, id porttitor ante luctus tempus. Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla. + +Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros. + +Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non. + +Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.'); + $coupon1->setAmount(10.00); + $coupon1->setIsUsed(true); + $coupon1->setIsEnabled(true); + $date = new \DateTime(); + $coupon1->setExpirationDate($date->setTimestamp(strtotime("today + 3 months"))); + + $condition1 = new MatchForTotalAmount($facade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($facade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + + $serializedConditions = $conditionFactory->serializeConditionCollection($conditions); + $coupon1->setSerializedConditions($serializedConditions); + + + $coupon1->setMaxUsage(40); + $coupon1->setIsCumulative(true); + $coupon1->setIsRemovingPostage(false); + $coupon1->setIsAvailableOnSpecialOffers(true); + + return $coupon1; + } + /** * @covers Thelia\Coupon\CouponManager::getDiscount * @todo Implement testGetDiscount(). @@ -68,61 +141,283 @@ class CouponManagerTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\CouponManager::addAvailableCoupon - * @todo Implement testAddAvailableCoupon(). - */ - public function testAddAvailableCoupon() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** * @covers Thelia\Coupon\CouponManager::getAvailableCoupons - * @todo Implement testGetAvailableCoupons(). */ public function testGetAvailableCoupons() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + + + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array())); + + $conditions = new ConditionCollection(); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + $couponManager = new RemoveXAmount($stubFacade); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, $stubFacade)); + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $couponFactory = new CouponFactory($stubContainer); + $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); + $coupon1 = $couponFactory->buildCouponFromModel($model1); + $coupon2 = clone $coupon1; + + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCoupon($coupon1); + $couponManager->addAvailableCoupon($coupon2); + $actual = $couponManager->getAvailableCoupons(); + $expected = array($coupon1, $coupon2); + + $this->assertEquals($expected, $actual); } /** * @covers Thelia\Coupon\CouponManager::addAvailableCondition - * @todo Implement testAddAvailableCondition(). - */ - public function testAddAvailableCondition() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** * @covers Thelia\Coupon\CouponManager::getAvailableConditions - * @todo Implement testGetAvailableConditions(). */ public function testGetAvailableConditions() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array())); + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade)); + + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCondition($condition1); + $couponManager->addAvailableCondition($condition2); + $actual = $couponManager->getAvailableConditions(); + $expected = array($condition1, $condition2); + + $this->assertEquals($expected, $actual); } /** * @covers Thelia\Coupon\CouponManager::decrementQuantity - * @todo Implement testDecrementeQuantity(). */ public function testDecrementeQuantity() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $coupon = new RemoveXAmount($stubFacade); + $date = new \DateTime(); + $coupon->set($stubFacade, 'XMAS', '', '', '', 21.00, true, true, true, true, 254, $date->setTimestamp(strtotime("today + 3 months")) ); + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $coupon->setConditions($conditions); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon))); + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade)); + + + $couponManager = new CouponManager($stubContainer); + + + $stubModel = $this->getMockBuilder('\Thelia\Model\Coupon') + ->disableOriginalConstructor() + ->getMock(); + $stubModel->expects($this->any()) + ->method('getMaxUsage') + ->will($this->returnValue(21)); + $stubModel->expects($this->any()) + ->method('setMaxUsage') + ->will($this->returnValue(true)); + + $actual = $couponManager->decrementQuantity($stubModel); + $expected = 20; + + $this->assertEquals($expected, $actual); + } + + /** + * @covers Thelia\Coupon\CouponManager::decrementQuantity + */ + public function testDecrementeQuantityIllimited() + { + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $coupon = new RemoveXAmount($stubFacade); + $date = new \DateTime(); + $coupon->set($stubFacade, 'XMAS', '', '', '', 21.00, true, true, true, true, 254, $date->setTimestamp(strtotime("today + 3 months")) ); + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $coupon->setConditions($conditions); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon))); + + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade)); + + + $couponManager = new CouponManager($stubContainer); + + + $stubModel = $this->getMockBuilder('\Thelia\Model\Coupon') + ->disableOriginalConstructor() + ->getMock(); + $stubModel->expects($this->any()) + ->method('getMaxUsage') + ->will($this->returnValue(-1)); + $stubModel->expects($this->any()) + ->method('setMaxUsage') + ->will($this->returnValue(true)); + + $actual = $couponManager->decrementQuantity($stubModel); + $expected = -1; + + $this->assertEquals($expected, $actual); + } + + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; } } From 2caa9ea7bd9b73cb6d3da53ba833335d634b2c27 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 01:07:49 +0100 Subject: [PATCH 23/70] Coupon : Adding unit tests --- .../Thelia/Tests/Coupon/CouponManagerTest.php | 52 ++++++++++++++++--- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index c3f558557..5b6bfeee7 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -121,7 +121,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $coupon1->setMaxUsage(40); $coupon1->setIsCumulative(true); - $coupon1->setIsRemovingPostage(false); + $coupon1->setIsRemovingPostage(true); $coupon1->setIsAvailableOnSpecialOffers(true); return $coupon1; @@ -129,14 +129,54 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua /** * @covers Thelia\Coupon\CouponManager::getDiscount - * @todo Implement testGetDiscount(). + * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage + * @covers Thelia\Coupon\CouponManager::sortCoupons + * @covers Thelia\Coupon\CouponManager::getEffect */ public function testGetDiscount() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + + $conditions = new ConditionCollection(); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + $couponManager = new RemoveXAmount($stubFacade); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, $stubFacade)); + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $couponFactory = new CouponFactory($stubContainer); + $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); + $coupon1 = $couponFactory->buildCouponFromModel($model1); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon1))); + $stubFacade->expects($this->any()) + ->method('getCheckoutPostagePrice') + ->will($this->returnValue(35.00)); + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue(122.53)); + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCoupon($coupon1); +// $couponManager->addAvailableCoupon($coupon2); + $actual = $couponManager->getDiscount(); + $expected = 45.00; + + $this->assertEquals($expected, $actual); } /** From b738bde56f2ae908227c95528f6d91ec9dc93d01 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 17:55:06 +0100 Subject: [PATCH 24/70] Coupon : Adding unit tests --- .../Thelia/Tests/Coupon/CouponManagerTest.php | 74 +++++++++++++++++-- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index 5b6bfeee7..c36ce97ae 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -133,7 +133,7 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua * @covers Thelia\Coupon\CouponManager::sortCoupons * @covers Thelia\Coupon\CouponManager::getEffect */ - public function testGetDiscount() + public function testGetDiscountCumulativeRemovingPostage() { $stubFacade = $this->generateFacadeStub(); $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); @@ -151,30 +151,92 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $couponManager = new RemoveXAmount($stubFacade); $stubContainer->expects($this->any()) ->method('get') - ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, $stubFacade)); + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, clone $couponManager, $stubConditionFactory, $stubFacade)); $stubContainer->expects($this->any()) ->method('has') ->will($this->returnValue(true)); $couponFactory = new CouponFactory($stubContainer); $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model1->setAmount(21.00); $coupon1 = $couponFactory->buildCouponFromModel($model1); + $model2 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model2->setCode('XMAS2')->setIsRemovingPostage(true)->setAmount(21.50); + $coupon2 = $couponFactory->buildCouponFromModel($model2); + $stubFacade->expects($this->any()) ->method('getCurrentCoupons') - ->will($this->returnValue(array($coupon1))); + ->will($this->returnValue(array($coupon1, $coupon2))); $stubFacade->expects($this->any()) ->method('getCheckoutPostagePrice') - ->will($this->returnValue(35.00)); + ->will($this->returnValue(8.30)); $stubFacade->expects($this->any()) ->method('getCartTotalPrice') ->will($this->returnValue(122.53)); $couponManager = new CouponManager($stubContainer); $couponManager->addAvailableCoupon($coupon1); -// $couponManager->addAvailableCoupon($coupon2); + $couponManager->addAvailableCoupon($coupon2); $actual = $couponManager->getDiscount(); - $expected = 45.00; + $expected = 50.80; + + $this->assertEquals($expected, $actual); + } + + /** + * @covers Thelia\Coupon\CouponManager::getDiscount + * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage + * @covers Thelia\Coupon\CouponManager::sortCoupons + * @covers Thelia\Coupon\CouponManager::getEffect + */ + public function testGetDiscountNonCumulativeNotRemovingPostage() + { + $stubFacade = $this->generateFacadeStub(); + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + + $conditions = new ConditionCollection(); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + $couponManager = new RemoveXAmount($stubFacade); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, clone $couponManager, $stubConditionFactory, $stubFacade)); + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $couponFactory = new CouponFactory($stubContainer); + $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model1->setAmount(21.00); + $coupon1 = $couponFactory->buildCouponFromModel($model1); + + $model2 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model2->setCode('XMAS2')->setIsRemovingPostage(false)->setAmount(21.50)->setIsCumulative(false); + $coupon2 = $couponFactory->buildCouponFromModel($model2); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon1, $coupon2))); + $stubFacade->expects($this->any()) + ->method('getCheckoutPostagePrice') + ->will($this->returnValue(8.30)); + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue(122.53)); + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCoupon($coupon1); + $couponManager->addAvailableCoupon($coupon2); + $actual = $couponManager->getDiscount(); + $expected = 21.50; $this->assertEquals($expected, $actual); } From c71cba93e2ebde8839194446e7fe0160089e58ba Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 21:44:51 +0100 Subject: [PATCH 25/70] Coupon : Adding unit tests --- .../Thelia/Tests/Coupon/CouponManagerTest.php | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php index c36ce97ae..bf4b9f1e9 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponManagerTest.php @@ -241,6 +241,61 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $this->assertEquals($expected, $actual); } + /** + * @covers Thelia\Coupon\CouponManager::getDiscount + * @covers Thelia\Coupon\CouponManager::isCouponRemovingPostage + * @covers Thelia\Coupon\CouponManager::sortCoupons + * @covers Thelia\Coupon\CouponManager::getEffect + */ + public function testGetDiscountGreaterThanCartAmount() + { + $stubFacade = $this->generateFacadeStub(12.25); + $stubFacade->expects($this->any()) + ->method('getCheckoutPostagePrice') + ->will($this->returnValue(8.30)); + + $stubContainer = $this->getMock('\Symfony\Component\DependencyInjection\Container'); + + $conditionFactory = new ConditionFactory($stubContainer); + + $conditions = new ConditionCollection(); + $stubConditionFactory = $this->getMockBuilder('\Thelia\Condition\ConditionFactory') + ->disableOriginalConstructor() + ->getMock(); + $stubConditionFactory->expects($this->any()) + ->method('unserializeConditionCollection') + ->will($this->returnValue($conditions)); + + $couponManager = new RemoveXAmount($stubFacade); + $stubContainer->expects($this->any()) + ->method('get') + ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory, clone $couponManager, $stubConditionFactory, $stubFacade)); + $stubContainer->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + + $couponFactory = new CouponFactory($stubContainer); + $model1 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model1->setAmount(21.00); + $coupon1 = $couponFactory->buildCouponFromModel($model1); + + $model2 = $this->generateCouponModel($stubFacade, $conditionFactory); + $model2->setCode('XMAS2')->setIsRemovingPostage(false)->setAmount(21.50)->setIsCumulative(false); + $coupon2 = $couponFactory->buildCouponFromModel($model2); + + $stubFacade->expects($this->any()) + ->method('getCurrentCoupons') + ->will($this->returnValue(array($coupon1, $coupon2))); + + $couponManager = new CouponManager($stubContainer); + $couponManager->addAvailableCoupon($coupon1); + $couponManager->addAvailableCoupon($coupon2); + $actual = $couponManager->getDiscount(); + $expected = 12.25; + + $this->assertEquals($expected, $actual); + } + /** * @covers Thelia\Coupon\CouponManager::addAvailableCoupon * @covers Thelia\Coupon\CouponManager::getAvailableCoupons From ffbd53fcebc82084bb78e4149905a8b1b84a2d91 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 22:05:58 +0100 Subject: [PATCH 26/70] Coupon : Fix namespace issues --- core/lib/Thelia/Condition/ConditionCollection.php | 2 +- core/lib/Thelia/Condition/ConditionEvaluator.php | 1 + core/lib/Thelia/Condition/ConditionFactory.php | 1 + .../Thelia/Condition/Implementation/ConditionAbstract.php | 5 ++++- .../Thelia/Condition/Implementation/ConditionInterface.php | 3 ++- .../lib/Thelia/Condition/Implementation/MatchForEveryone.php | 2 +- .../Thelia/Condition/Implementation/MatchForTotalAmount.php | 2 +- .../Thelia/Condition/Implementation/MatchForXArticles.php | 2 +- core/lib/Thelia/Controller/Admin/CouponController.php | 2 +- core/lib/Thelia/Core/Template/Loop/Coupon.php | 2 +- core/lib/Thelia/Coupon/CouponFactory.php | 1 - core/lib/Thelia/Coupon/CouponManager.php | 2 +- 12 files changed, 15 insertions(+), 10 deletions(-) diff --git a/core/lib/Thelia/Condition/ConditionCollection.php b/core/lib/Thelia/Condition/ConditionCollection.php index 1a31a5f92..14b4076f6 100644 --- a/core/lib/Thelia/Condition/ConditionCollection.php +++ b/core/lib/Thelia/Condition/ConditionCollection.php @@ -24,7 +24,7 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; -use Thelia\Condition\ConditionInterface; +use Thelia\Condition\Implementation\ConditionInterface; /** * Created by JetBrains PhpStorm. diff --git a/core/lib/Thelia/Condition/ConditionEvaluator.php b/core/lib/Thelia/Condition/ConditionEvaluator.php index 956694b09..49e566158 100644 --- a/core/lib/Thelia/Condition/ConditionEvaluator.php +++ b/core/lib/Thelia/Condition/ConditionEvaluator.php @@ -24,6 +24,7 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Condition\Operators; use Thelia\Condition\ConditionCollection; diff --git a/core/lib/Thelia/Condition/ConditionFactory.php b/core/lib/Thelia/Condition/ConditionFactory.php index 68eec8083..b472dcb0f 100644 --- a/core/lib/Thelia/Condition/ConditionFactory.php +++ b/core/lib/Thelia/Condition/ConditionFactory.php @@ -24,6 +24,7 @@ namespace Thelia\Condition; use Symfony\Component\DependencyInjection\ContainerInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Coupon\FacadeInterface; use Thelia\Condition\ConditionCollection; diff --git a/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php index b00dae73a..71bd2f60e 100644 --- a/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php @@ -21,9 +21,12 @@ /* */ /**********************************************************************************/ -namespace Thelia\Condition; +namespace Thelia\Condition\Implementation; use Symfony\Component\Intl\Exception\NotImplementedException; +use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\Operators; +use Thelia\Condition\SerializableCondition; use Thelia\Core\Translation\Translator; use Thelia\Coupon\FacadeInterface; use Thelia\Exception\InvalidConditionValueException; diff --git a/core/lib/Thelia/Condition/Implementation/ConditionInterface.php b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php index dbb65c57b..10759eaa7 100644 --- a/core/lib/Thelia/Condition/Implementation/ConditionInterface.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php @@ -21,8 +21,9 @@ /* */ /**********************************************************************************/ -namespace Thelia\Condition; +namespace Thelia\Condition\Implementation; +use Thelia\Condition\SerializableCondition; use Thelia\Core\Translation\Translator; use Thelia\Coupon\FacadeInterface; diff --git a/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php index ffd3d3f6f..22d696339 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use InvalidArgumentException; -use Thelia\Condition\ConditionAbstract; +use Thelia\Condition\Implementation\ConditionAbstract; /** * Created by JetBrains PhpStorm. diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php index 527f1871d..09b63ef00 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use Symfony\Component\Intl\Exception\NotImplementedException; -use Thelia\Condition\ConditionAbstract; +use Thelia\Condition\Implementation\ConditionAbstract; use Thelia\Condition\Operators; use Thelia\Exception\InvalidConditionOperatorException; use Thelia\Model\Currency; diff --git a/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php index b7fc479cd..f1c1ebaac 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php @@ -24,7 +24,7 @@ namespace Thelia\Condition\Implementation; use InvalidArgumentException; -use Thelia\Condition\ConditionAbstract; +use Thelia\Condition\Implementation\ConditionAbstract; use Thelia\Condition\Operators; use Thelia\Exception\InvalidConditionOperatorException; use Thelia\Exception\InvalidConditionValueException; diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index d302b6008..b382dbb30 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -26,7 +26,7 @@ namespace Thelia\Controller\Admin; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Router; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; diff --git a/core/lib/Thelia/Core/Template/Loop/Coupon.php b/core/lib/Thelia/Core/Template/Loop/Coupon.php index 88c9b92a0..e211103da 100755 --- a/core/lib/Thelia/Core/Template/Loop/Coupon.php +++ b/core/lib/Thelia/Core/Template/Loop/Coupon.php @@ -26,7 +26,7 @@ namespace Thelia\Core\Template\Loop; use Propel\Runtime\ActiveQuery\Criteria; use Propel\Runtime\Util\PropelModelPager; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Core\HttpFoundation\Request; use Thelia\Core\Template\Element\BaseI18nLoop; use Thelia\Core\Template\Element\LoopResult; diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index 2c1befd2c..214dd0d9c 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -24,7 +24,6 @@ namespace Thelia\Coupon; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\Translation\Exception\NotFoundResourceException; use Thelia\Condition\ConditionFactory; use Thelia\Coupon\Type\CouponInterface; use Thelia\Exception\CouponExpiredException; diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index ea41a4f03..c4eff7888 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -24,7 +24,7 @@ namespace Thelia\Coupon; use Symfony\Component\DependencyInjection\ContainerInterface; -use Thelia\Condition\ConditionInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Coupon\Type\CouponInterface; use Thelia\Model\Coupon; From 19aa1c798d6ddab89d41a92990b72a67a6d33196 Mon Sep 17 00:00:00 2001 From: gmorel Date: Sun, 24 Nov 2013 22:27:26 +0100 Subject: [PATCH 27/70] Coupon : Fix namespace issues --- core/lib/Thelia/Action/Coupon.php | 2 +- .../Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php | 2 +- install/faker_add_ecotax.php | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index b68b27572..1b77eb488 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -25,7 +25,7 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\ConditionInterface; +use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Core\Event\Coupon\CouponConsumeEvent; use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\TheliaEvents; diff --git a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php index 374643fda..19edf4e45 100644 --- a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php +++ b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php @@ -23,7 +23,7 @@ namespace Thelia\Core\Event\Coupon; use Thelia\Core\Event\ActionEvent; -use Thelia\Coupon\ConditionCollection; +use Thelia\Condition\ConditionCollection; use Thelia\Model\Coupon; /** diff --git a/install/faker_add_ecotax.php b/install/faker_add_ecotax.php index 0bb6838d9..e158fcbfc 100755 --- a/install/faker_add_ecotax.php +++ b/install/faker_add_ecotax.php @@ -1,12 +1,8 @@ Date: Mon, 25 Nov 2013 21:35:35 +0100 Subject: [PATCH 28/70] Coupon : Add unit test for coupon removing X Amount & X Percent --- .../Coupon/Type/RemoveXAmountManagerTest.php | 181 ++++++++++++++---- .../Coupon/Type/RemoveXPercentManagerTest.php | 143 ++++++++++++-- 2 files changed, 271 insertions(+), 53 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php index c15fa7379..bd63265e0 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php @@ -22,6 +22,12 @@ /**********************************************************************************/ namespace Thelia\Coupon\Type; +use Thelia\Condition\ConditionCollection; +use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\Implementation\MatchForTotalAmount; +use Thelia\Condition\Operators; +use Thelia\Coupon\FacadeInterface; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -46,6 +52,145 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase { } + /** + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject + */ + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') + { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmount::set + */ + public function testSet() + { + $stubFacade = $this->generateFacadeStub(); + + $coupon = new RemoveXAmount($stubFacade); + $date = new \DateTime(); + $description = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla. + + Donec rhoncus leo mauris, id porttitor ante luctus tempus. Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla. + + Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros. + + Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non. + + Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.'; + + $coupon->set($stubFacade, 'XMAS', 'XMAS Coupon', 'Coupon for Springbreak removing 10€ if you have a cart between 40.00€ and 400.00€ (excluded)', $description, 10.00, true, true, true, true, 254, $date->setTimestamp(strtotime("today + 3 months")) ); + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $coupon->setConditions($conditions); + + $this->assertEquals('XMAS', $coupon->getCode()); + $this->assertEquals('XMAS Coupon', $coupon->getTitle()); + $this->assertEquals('Coupon for Springbreak removing 10€ if you have a cart between 40.00€ and 400.00€ (excluded)', $coupon->getShortDescription()); + $this->assertEquals($description, $coupon->getDescription()); + $this->assertEquals(true, $coupon->isCumulative()); + $this->assertEquals(true, $coupon->isRemovingPostage()); + $this->assertEquals(true, $coupon->isAvailableOnSpecialOffers()); + $this->assertEquals(true, $coupon->isEnabled()); + + $this->assertEquals(254, $coupon->getMaxUsage()); + $this->assertEquals($date, $coupon->getExpirationDate()); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmount::getName + */ + public function testGetName() + { + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Remove X amount to total cart'); + + /** @var FacadeInterface $stubFacade */ + $coupon = new RemoveXAmount($stubFacade); + + $actual = $coupon->getName(); + $expected = 'Remove X amount to total cart'; + $this->assertEquals($expected, $actual); + } + + /** + * @covers Thelia\Coupon\Type\RemoveXAmount::getToolTip + */ + public function testGetToolTip() + { + $tooltip = 'This coupon will remove the entered amount to the customer total checkout. If the discount is superior to the total checkout price the customer will only pay the postage. Unless if the coupon is set to remove postage too.'; + $stubFacade = $this->generateFacadeStub(399, 'EUR', $tooltip); + + /** @var FacadeInterface $stubFacade */ + $coupon = new RemoveXAmount($stubFacade); + + $actual = $coupon->getToolTip(); + $expected = $tooltip; + $this->assertEquals($expected, $actual); + } + /** * Tears down the fixture, for example, closes a network connection. * This method is called after a test is executed. @@ -53,40 +198,4 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase protected function tearDown() { } - - /** - * @covers Thelia\Coupon\Type\RemoveXAmount::set - * @todo Implement testSet(). - */ - public function testSet() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\RemoveXAmount::getName - * @todo Implement testGetName(). - */ - public function testGetName() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\RemoveXAmount::getToolTip - * @todo Implement testGetToolTip(). - */ - public function testGetToolTip() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } } diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php index fad80a389..7b8e6db91 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php @@ -22,6 +22,12 @@ /**********************************************************************************/ namespace Thelia\Coupon\Type; +use Thelia\Condition\ConditionCollection; +use Thelia\Condition\ConditionEvaluator; +use Thelia\Condition\Implementation\MatchForTotalAmount; +use Thelia\Condition\Operators; +use Thelia\Coupon\FacadeInterface; +use Thelia\Model\CurrencyQuery; /** * Created by JetBrains PhpStorm. @@ -47,23 +53,111 @@ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase } /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. + * Generate adapter stub + * + * @param int $cartTotalPrice Cart total price + * @param string $checkoutCurrency Checkout currency + * @param string $i18nOutput Output from each translation + * + * @return \PHPUnit_Framework_MockObject_MockObject */ - protected function tearDown() + public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '') { + $stubFacade = $this->getMockBuilder('\Thelia\Coupon\BaseFacade') + ->disableOriginalConstructor() + ->getMock(); + + $currencies = CurrencyQuery::create(); + $currencies = $currencies->find(); + $stubFacade->expects($this->any()) + ->method('getAvailableCurrencies') + ->will($this->returnValue($currencies)); + + $stubFacade->expects($this->any()) + ->method('getCartTotalPrice') + ->will($this->returnValue($cartTotalPrice)); + + $stubFacade->expects($this->any()) + ->method('getCheckoutCurrency') + ->will($this->returnValue($checkoutCurrency)); + + $stubFacade->expects($this->any()) + ->method('getConditionEvaluator') + ->will($this->returnValue(new ConditionEvaluator())); + + $stubTranslator = $this->getMockBuilder('\Thelia\Core\Translation\Translator') + ->disableOriginalConstructor() + ->getMock(); + $stubTranslator->expects($this->any()) + ->method('trans') + ->will($this->returnValue($i18nOutput)); + + $stubFacade->expects($this->any()) + ->method('getTranslator') + ->will($this->returnValue($stubTranslator)); + + return $stubFacade; } /** * @covers Thelia\Coupon\Type\RemoveXPercent::set - * @todo Implement testSet(). */ public function testSet() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' + $stubFacade = $this->generateFacadeStub(); + + $coupon = new RemoveXPercent($stubFacade); + $date = new \DateTime(); + $description = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras at luctus tellus. Integer turpis mauris, aliquet vitae risus tristique, pellentesque vestibulum urna. Vestibulum sodales laoreet lectus dictum suscipit. Praesent vulputate, sem id varius condimentum, quam magna tempor elit, quis venenatis ligula nulla eget libero. Cras egestas euismod tellus, id pharetra leo suscipit quis. Donec lacinia ac lacus et ultricies. Nunc in porttitor neque. Proin at quam congue, consectetur orci sed, congue nulla. Nulla eleifend nunc ligula, nec pharetra elit tempus quis. Vivamus vel mauris sed est dictum blandit. Maecenas blandit dapibus velit ut sollicitudin. In in euismod mauris, consequat viverra magna. Cras velit velit, sollicitudin commodo tortor gravida, tempus varius nulla. + + Donec rhoncus leo mauris, id porttitor ante luctus tempus. Curabitur quis augue feugiat, ullamcorper mauris ac, interdum mi. Quisque aliquam lorem vitae felis lobortis, id interdum turpis mattis. Vestibulum diam massa, ornare congue blandit quis, facilisis at nisl. In tortor metus, venenatis non arcu nec, sollicitudin ornare nisl. Nunc erat risus, varius nec urna at, iaculis lacinia elit. Aenean ut felis tempus, tincidunt odio non, sagittis nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec vitae hendrerit elit. Nunc sit amet gravida risus, euismod lobortis massa. Nam a erat mauris. Nam a malesuada lorem. Nulla id accumsan dolor, sed rhoncus tellus. Quisque dictum felis sed leo auctor, at volutpat lectus viverra. Morbi rutrum, est ac aliquam imperdiet, nibh sem sagittis justo, ac mattis magna lacus eu nulla. + + Duis interdum lectus nulla, nec pellentesque sapien condimentum at. Suspendisse potenti. Sed eu purus tellus. Nunc quis rhoncus metus. Fusce vitae tellus enim. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam tempor porttitor erat vitae iaculis. Sed est elit, consequat non ornare vitae, vehicula eget lectus. Etiam consequat sapien mauris, eget consectetur magna imperdiet eget. Nunc sollicitudin luctus velit, in commodo nulla adipiscing fermentum. Fusce nisi sapien, posuere vitae metus sit amet, facilisis sollicitudin dui. Fusce ultricies auctor enim sit amet iaculis. Morbi at vestibulum enim, eget adipiscing eros. + + Praesent ligula lorem, faucibus ut metus quis, fermentum iaculis erat. Pellentesque elit erat, lacinia sed semper ac, sagittis vel elit. Nam eu convallis est. Curabitur rhoncus odio vitae consectetur pellentesque. Nam vitae arcu nec ante scelerisque dignissim vel nec neque. Suspendisse augue nulla, mollis eget dui et, tempor facilisis erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi ac diam ipsum. Donec convallis dui ultricies velit auctor, non lobortis nulla ultrices. Morbi vitae dignissim ante, sit amet lobortis tortor. Nunc dapibus condimentum augue, in molestie neque congue non. + + Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesuada tortor vel erat volutpat tincidunt. In vehicula diam est, a convallis eros scelerisque ut. Donec aliquet venenatis iaculis. Ut a arcu gravida, placerat dui eu, iaculis nisl. Quisque adipiscing orci sit amet dui dignissim lacinia. Sed vulputate lorem non dolor adipiscing ornare. Morbi ornare id nisl id aliquam. Ut fringilla elit ante, nec lacinia enim fermentum sit amet. Aenean rutrum lorem eu convallis pharetra. Cras malesuada varius metus, vitae gravida velit. Nam a varius ipsum, ac commodo dolor. Phasellus nec elementum elit. Etiam vel adipiscing leo.'; + + $coupon->set($stubFacade, 'XMAS', 'XMAS Coupon', 'Coupon for Springbreak removing 10% if you have a cart between 40.00€ and 400.00€ (excluded)', $description, 10.00, true, true, true, true, 254, $date->setTimestamp(strtotime("today + 3 months")) ); + + $condition1 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL ); + $values = array( + MatchForTotalAmount::INPUT1 => 40.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition1->setValidatorsFromForm($operators, $values); + + $condition2 = new MatchForTotalAmount($stubFacade); + $operators = array( + MatchForTotalAmount::INPUT1 => Operators::INFERIOR, + MatchForTotalAmount::INPUT2 => Operators::EQUAL + ); + $values = array( + MatchForTotalAmount::INPUT1 => 400.00, + MatchForTotalAmount::INPUT2 => 'EUR' + ); + $condition2->setValidatorsFromForm($operators, $values); + + $conditions = new ConditionCollection(); + $conditions->add($condition1); + $conditions->add($condition2); + $coupon->setConditions($conditions); + + $this->assertEquals('XMAS', $coupon->getCode()); + $this->assertEquals('XMAS Coupon', $coupon->getTitle()); + $this->assertEquals('Coupon for Springbreak removing 10% if you have a cart between 40.00€ and 400.00€ (excluded)', $coupon->getShortDescription()); + $this->assertEquals($description, $coupon->getDescription()); + $this->assertEquals(true, $coupon->isCumulative()); + $this->assertEquals(true, $coupon->isRemovingPostage()); + $this->assertEquals(true, $coupon->isAvailableOnSpecialOffers()); + $this->assertEquals(true, $coupon->isEnabled()); + + $this->assertEquals(254, $coupon->getMaxUsage()); + $this->assertEquals($date, $coupon->getExpirationDate()); } /** @@ -80,25 +174,40 @@ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\Type\RemoveXPercent::getName - * @todo Implement testGetName(). */ public function testGetName() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $stubFacade = $this->generateFacadeStub(399, 'EUR', 'Remove X percent to total cart'); + + /** @var FacadeInterface $stubFacade */ + $coupon = new RemoveXPercent($stubFacade); + + $actual = $coupon->getName(); + $expected = 'Remove X percent to total cart'; + $this->assertEquals($expected, $actual); } /** * @covers Thelia\Coupon\Type\RemoveXPercent::getToolTip - * @todo Implement testGetToolTip(). */ public function testGetToolTip() { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $tooltip = 'This coupon will remove the entered percentage to the customer total checkout. If the discount is superior to the total checkout price the customer will only pay the postage. Unless if the coupon is set to remove postage too.'; + $stubFacade = $this->generateFacadeStub(399, 'EUR', $tooltip); + + /** @var FacadeInterface $stubFacade */ + $coupon = new RemoveXPercent($stubFacade); + + $actual = $coupon->getToolTip(); + $expected = $tooltip; + $this->assertEquals($expected, $actual); + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { } } From 2a926e52114bf717dbf2ad19c314703cdfd743f0 Mon Sep 17 00:00:00 2001 From: gmorel Date: Mon, 25 Nov 2013 22:09:40 +0100 Subject: [PATCH 29/70] Coupon : Add unit test for coupon removing X Amount & X Percent --- ...eryoneManagerTest.php => MatchForEveryoneTest.php} | 0 ...untManagerTest.php => MatchForTotalAmountTest.php} | 0 ...iclesManagerTest.php => MatchForXArticlesTest.php} | 0 ...veXAmountManagerTest.php => RemoveXAmountTest.php} | 11 +++++++++++ ...XPercentManagerTest.php => RemoveXPercentTest.php} | 0 5 files changed, 11 insertions(+) rename core/lib/Thelia/Tests/Condition/Implementation/{MatchForEveryoneManagerTest.php => MatchForEveryoneTest.php} (100%) rename core/lib/Thelia/Tests/Condition/Implementation/{MatchForTotalAmountManagerTest.php => MatchForTotalAmountTest.php} (100%) rename core/lib/Thelia/Tests/Condition/Implementation/{MatchForXArticlesManagerTest.php => MatchForXArticlesTest.php} (100%) rename core/lib/Thelia/Tests/Coupon/Type/{RemoveXAmountManagerTest.php => RemoveXAmountTest.php} (94%) rename core/lib/Thelia/Tests/Coupon/Type/{RemoveXPercentManagerTest.php => RemoveXPercentTest.php} (100%) diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneTest.php similarity index 100% rename from core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneManagerTest.php rename to core/lib/Thelia/Tests/Condition/Implementation/MatchForEveryoneTest.php diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php similarity index 100% rename from core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountManagerTest.php rename to core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesTest.php similarity index 100% rename from core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesManagerTest.php rename to core/lib/Thelia/Tests/Condition/Implementation/MatchForXArticlesTest.php diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php similarity index 94% rename from core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php rename to core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php index bd63265e0..41aad15ff 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountManagerTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php @@ -101,6 +101,17 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\Type\RemoveXAmount::set + * @covers Thelia\Coupon\Type\CouponAbstract::getCode + * @covers Thelia\Coupon\Type\CouponAbstract::getTitle + * @covers Thelia\Coupon\Type\CouponAbstract::getShortDescription + * @covers Thelia\Coupon\Type\CouponAbstract::getDescription + * @covers Thelia\Coupon\Type\CouponAbstract::isCumulative + * @covers Thelia\Coupon\Type\CouponAbstract::isRemovingPostage + * @covers Thelia\Coupon\Type\CouponAbstract::isAvailableOnSpecialOffers + * @covers Thelia\Coupon\Type\CouponAbstract::isEnabled + * @covers Thelia\Coupon\Type\CouponAbstract::getMaxUsage + * @covers Thelia\Coupon\Type\CouponAbstract::getExpirationDate + * @covers Thelia\Coupon\Type\CouponAbstract::setConditions */ public function testSet() { diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php similarity index 100% rename from core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentManagerTest.php rename to core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php From e2db36e23b57d35f789371ded7402f691fcc4f43 Mon Sep 17 00:00:00 2001 From: gmorel Date: Mon, 25 Nov 2013 22:42:16 +0100 Subject: [PATCH 30/70] Coupon : Add unit test for coupon removing X Amount & X Percent --- .../Tests/Coupon/Type/RemoveXAmountTest.php | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php index 41aad15ff..ce298c97a 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php @@ -102,16 +102,16 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\Type\RemoveXAmount::set * @covers Thelia\Coupon\Type\CouponAbstract::getCode - * @covers Thelia\Coupon\Type\CouponAbstract::getTitle - * @covers Thelia\Coupon\Type\CouponAbstract::getShortDescription - * @covers Thelia\Coupon\Type\CouponAbstract::getDescription - * @covers Thelia\Coupon\Type\CouponAbstract::isCumulative - * @covers Thelia\Coupon\Type\CouponAbstract::isRemovingPostage - * @covers Thelia\Coupon\Type\CouponAbstract::isAvailableOnSpecialOffers - * @covers Thelia\Coupon\Type\CouponAbstract::isEnabled - * @covers Thelia\Coupon\Type\CouponAbstract::getMaxUsage - * @covers Thelia\Coupon\Type\CouponAbstract::getExpirationDate - * @covers Thelia\Coupon\Type\CouponAbstract::setConditions + * @covers Thelia\Coupon\Type\RemoveXAmount::getTitle + * @covers Thelia\Coupon\Type\RemoveXAmount::getShortDescription + * @covers Thelia\Coupon\Type\RemoveXAmount::getDescription + * @covers Thelia\Coupon\Type\RemoveXAmount::isCumulative + * @covers Thelia\Coupon\Type\RemoveXAmount::isRemovingPostage + * @covers Thelia\Coupon\Type\RemoveXAmount::isAvailableOnSpecialOffers + * @covers Thelia\Coupon\Type\RemoveXAmount::isEnabled + * @covers Thelia\Coupon\Type\RemoveXAmount::getMaxUsage + * @covers Thelia\Coupon\Type\RemoveXAmount::getExpirationDate + * @covers Thelia\Coupon\Type\RemoveXAmount::setConditions */ public function testSet() { From d0ccfc732af22eea0d9436fe3ab61d90c3e1fb67 Mon Sep 17 00:00:00 2001 From: gmorel Date: Mon, 25 Nov 2013 22:58:19 +0100 Subject: [PATCH 31/70] Coupon : Add unit test for coupon removing X Amount & X Percent --- .../Condition/ConditionOrganizerTest.php | 53 ------------------- .../MatchForTotalAmountTest.php | 6 +-- .../Tests/Coupon/Type/RemoveXAmountTest.php | 2 + .../Tests/Coupon/Type/RemoveXPercentTest.php | 13 +---- 4 files changed, 7 insertions(+), 67 deletions(-) delete mode 100644 core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php diff --git a/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php b/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php deleted file mode 100644 index 0591df0ab..000000000 --- a/core/lib/Thelia/Tests/Condition/ConditionOrganizerTest.php +++ /dev/null @@ -1,53 +0,0 @@ -. */ -/* */ -/**********************************************************************************/ - -namespace Thelia\Coupon; -use Thelia\Condition\ConditionOrganizer; - -/** - * Created by JetBrains PhpStorm. - * Date: 8/19/13 - * Time: 3:24 PM - * - * Unit Test ConditionOrganizer Class - * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. - * - * @package Condition - * @author Guillaume MOREL - * - */ -class ConditionOrganizerTest extends \PHPUnit_Framework_TestCase -{ - - /** - * @covers Thelia\Coupon\RuleOrganizer::organize - * @todo Implement testOrganize(). - */ - public function testOrganize() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } -} diff --git a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php index 0390536c5..d28bf198d 100644 --- a/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php +++ b/core/lib/Thelia/Tests/Condition/Implementation/MatchForTotalAmountTest.php @@ -605,7 +605,7 @@ class MatchForTotalAmountTest extends \PHPUnit_Framework_TestCase /** * Check unknown currency * - * @covers Thelia\Condition\ConditionAbstract::isCurrencyValid + * @covers Thelia\Condition\Implementation\ConditionAbstract::isCurrencyValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -672,7 +672,7 @@ class MatchForTotalAmountTest extends \PHPUnit_Framework_TestCase /** * Check invalid currency * - * @covers Thelia\Condition\ConditionAbstract::isPriceValid + * @covers Thelia\Condition\Implementation\ConditionAbstract::isPriceValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ @@ -739,7 +739,7 @@ class MatchForTotalAmountTest extends \PHPUnit_Framework_TestCase /** * Check invalid currency * - * @covers Thelia\Condition\ConditionAbstract::isPriceValid + * @covers Thelia\Condition\Implementation\ConditionAbstract::isPriceValid * @expectedException \Thelia\Exception\InvalidConditionValueException * */ diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php index ce298c97a..41971d4a6 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXAmountTest.php @@ -169,6 +169,8 @@ class RemoveXAmountTest extends \PHPUnit_Framework_TestCase $this->assertEquals(254, $coupon->getMaxUsage()); $this->assertEquals($date, $coupon->getExpirationDate()); + + $this->assertEquals(10.00, $coupon->exec()); } /** diff --git a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php index 7b8e6db91..475e46aba 100644 --- a/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php +++ b/core/lib/Thelia/Tests/Coupon/Type/RemoveXPercentTest.php @@ -101,6 +101,7 @@ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase /** * @covers Thelia\Coupon\Type\RemoveXPercent::set + * @covers Thelia\Coupon\Type\RemoveXPercent::exec */ public function testSet() { @@ -158,18 +159,8 @@ class RemoveXPercentTest extends \PHPUnit_Framework_TestCase $this->assertEquals(254, $coupon->getMaxUsage()); $this->assertEquals($date, $coupon->getExpirationDate()); - } - /** - * @covers Thelia\Coupon\Type\RemoveXPercent::exec - * @todo Implement testExec(). - */ - public function testExec() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $this->assertEquals(40.00, $coupon->exec()); } /** From ef818c19ce6d992648dc7b3860fe1ae09c4c04ef Mon Sep 17 00:00:00 2001 From: gmorel Date: Mon, 25 Nov 2013 23:04:29 +0100 Subject: [PATCH 32/70] Coupon : Add unit test for coupon removing X Amount & X Percent --- .../Tests/Coupon/Type/CouponAbstractTest.php | 260 ------------------ 1 file changed, 260 deletions(-) delete mode 100644 core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php diff --git a/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php b/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php deleted file mode 100644 index 184f1ef29..000000000 --- a/core/lib/Thelia/Tests/Coupon/Type/CouponAbstractTest.php +++ /dev/null @@ -1,260 +0,0 @@ -. */ -/* */ -/**********************************************************************************/ - -namespace Thelia\Coupon\Type; - -/** - * Created by JetBrains PhpStorm. - * Date: 8/19/13 - * Time: 3:24 PM - * - * Unit Test CouponAbstract Class - * Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2013-11-17 at 18:59:24. - * - * @package Coupon - * @author Guillaume MOREL - * - */ -class CouponAbstractTest extends \PHPUnit_Framework_TestCase -{ - - /** - * Sets up the fixture, for example, opens a network connection. - * This method is called before a test is executed. - */ - protected function setUp() - { - } - - /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. - */ - protected function tearDown() - { - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::setOrganizer - * @todo Implement testSetOrganizer(). - */ - public function testSetOrganizer() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getCode - * @todo Implement testGetCode(). - */ - public function testGetCode() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getTitle - * @todo Implement testGetTitle(). - */ - public function testGetTitle() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getShortDescription - * @todo Implement testGetShortDescription(). - */ - public function testGetShortDescription() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getDescription - * @todo Implement testGetDescription(). - */ - public function testGetDescription() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isCumulative - * @todo Implement testIsCumulative(). - */ - public function testIsCumulative() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isRemovingPostage - * @todo Implement testIsRemovingPostage(). - */ - public function testIsRemovingPostage() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::exec - * @todo Implement testExec(). - */ - public function testExec() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getConditions - * @todo Implement testGetConditions(). - */ - public function testGetConditions() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::setConditions - * @todo Implement testSetConditions(). - */ - public function testSetConditions() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getExpirationDate - * @todo Implement testGetExpirationDate(). - */ - public function testGetExpirationDate() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isAvailableOnSpecialOffers - * @todo Implement testIsAvailableOnSpecialOffers(). - */ - public function testIsAvailableOnSpecialOffers() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isEnabled - * @todo Implement testIsEnabled(). - */ - public function testIsEnabled() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getMaxUsage - * @todo Implement testGetMaxUsage(). - */ - public function testGetMaxUsage() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isExpired - * @todo Implement testIsExpired(). - */ - public function testIsExpired() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::getServiceId - * @todo Implement testGetServiceId(). - */ - public function testGetServiceId() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } - - /** - * @covers Thelia\Coupon\Type\CouponAbstract::isMatching - * @todo Implement testIsMatching(). - */ - public function testIsMatching() - { - // Remove the following lines when you implement this test. - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); - } -} From 612bd1adaed2acfc631c0f49ec10bd2df021a7ec Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:11:54 +0100 Subject: [PATCH 33/70] Translation : Fix bug preventing to see error message --- .../Thelia/Core/Template/TemplateHelper.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/lib/Thelia/Core/Template/TemplateHelper.php b/core/lib/Thelia/Core/Template/TemplateHelper.php index 3310b5f04..d3ffa22ce 100644 --- a/core/lib/Thelia/Core/Template/TemplateHelper.php +++ b/core/lib/Thelia/Core/Template/TemplateHelper.php @@ -121,19 +121,19 @@ class TemplateHelper } /** - * Récursively examine files in a directory tree, and extract translatable strings. + * Recursively examine files in a directory tree, and extract translatable strings. * * Returns an array of translatable strings, each item having with the following structure: - * 'files' an arfray of file names in which the string appears, + * 'files' an array of file names in which the string appears, * 'text' the translatable text * 'translation' => the text translation, or an empty string if none available. * 'dollar' => true if the translatable text contains a $ * * @param string $directory the path to the directory to examine * @param string $walkMode type of file scanning: WALK_MODE_PHP or WALK_MODE_TEMPLATE - * @param Thelia\Core\Translation\Translator $translator the current translator + * @param \Thelia\Core\Translation\Translator $translator the current translator * @param string $currentLocale the current locale - * @param array $strings the liste of strings + * @param array $strings the list of strings * @throws \InvalidArgumentException if $walkMode contains an invalid value * @return number the total number of translatable texts */ @@ -248,15 +248,15 @@ class TemplateHelper fwrite($fp, ");\n"); - @fclose($fh); + @fclose($fp); } else { throw new \RuntimeException( - $this->getTranslator()->trans( - "Failed to open translation file %file. Please be sure that this file is writable by your Web server", - array('%file' => $file) - ) + Translator::getInstance()->trans( + 'Failed to open translation file %file. Please be sure that this file is writable by your Web server', + array('%file' => $file) + ) ); } } From dc648fef62cd632172bb86635ca7ec91d0b00e56 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:24:37 +0100 Subject: [PATCH 34/70] Merge master --- templates/backOffice/default/admin-layout.tpl | 0 templates/backOffice/default/administrators.html | 0 .../default/ajax/language-update-modal.html | 0 templates/backOffice/default/ajax/logger.html | 0 .../default/ajax/product-attributes-tab.html | 0 .../default/ajax/product-related-tab.html | 0 .../default/ajax/template-attribute-list.html | 0 .../default/ajax/template-feature-list.html | 0 .../backOffice/default/assets/img/ajax-loader.gif | Bin templates/backOffice/default/assets/img/bg.jpg | Bin .../backOffice/default/assets/img/deconnexion.png | Bin templates/backOffice/default/assets/img/header.jpg | Bin .../backOffice/default/assets/img/logo-light.png | Bin templates/backOffice/default/assets/img/logo.png | Bin .../default/assets/img/top-bar-logo-save.png | Bin .../backOffice/default/assets/img/top-bar-logo.png | Bin templates/backOffice/default/assets/img/top.jpg | Bin .../js/bootstrap-editable/bootstrap-editable.js | 0 .../assets/js/bootstrap-select/bootstrap-select.js | 0 .../assets/js/bootstrap-switch/bootstrap-switch.js | 0 .../default/assets/js/bootstrap/bootstrap.js | 0 templates/backOffice/default/assets/js/coupon.js | 0 .../backOffice/default/assets/js/document-upload.js | 0 templates/backOffice/default/assets/js/dropzone.js | 0 .../backOffice/default/assets/js/image-upload.js | 0 .../default/assets/js/jqplot/jquery.jqplot.min.js | 0 .../plugins/jqplot.BezierCurveRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.barRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.blockRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.bubbleRenderer.min.js | 0 .../plugins/jqplot.canvasAxisLabelRenderer.min.js | 0 .../plugins/jqplot.canvasAxisTickRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.canvasOverlay.min.js | 0 .../jqplot/plugins/jqplot.canvasTextRenderer.min.js | 0 .../plugins/jqplot.categoryAxisRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.ciParser.min.js | 0 .../assets/js/jqplot/plugins/jqplot.cursor.min.js | 0 .../jqplot/plugins/jqplot.dateAxisRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.donutRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.dragable.min.js | 0 .../plugins/jqplot.enhancedLegendRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.funnelRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.highlighter.min.js | 0 .../assets/js/jqplot/plugins/jqplot.json2.min.js | 0 .../js/jqplot/plugins/jqplot.logAxisRenderer.min.js | 0 .../jqplot/plugins/jqplot.mekkoAxisRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.mekkoRenderer.min.js | 0 .../jqplot/plugins/jqplot.meterGaugeRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.mobile.min.js | 0 .../js/jqplot/plugins/jqplot.ohlcRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pieRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pointLabels.min.js | 0 .../plugins/jqplot.pyramidAxisRenderer.min.js | 0 .../plugins/jqplot.pyramidGridRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pyramidRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.trendline.min.js | 0 .../default/assets/js/jquery.typewatch.js | 0 .../i18n/jquery.ui.datepicker-es_ES.js | 0 .../i18n/jquery.ui.datepicker-fr_FR.js | 0 .../i18n/jquery.ui.datepicker-it_IT.js.js | 0 .../jquery.ui/jquery.ui.datepicker/i18n/readme.txt | 0 .../jquery.ui.datepicker/jquery.ui.datepicker.css | 0 .../jquery.ui.datepicker/jquery.ui.datepicker.js | 0 .../default/assets/js/jquery.ui/jquery.ui.theme.css | 0 templates/backOffice/default/assets/js/json2.js | 0 .../backOffice/default/assets/js/libs/jquery.js | 0 templates/backOffice/default/assets/js/main.js | 0 .../assets/js/tablesorter/jquery.metadata.js | 0 .../assets/js/tablesorter/jquery.tablesorter.min.js | 0 .../jquery.tablesorter.widgets-filter-formatter.js | 0 .../js/tablesorter/jquery.tablesorter.widgets.js | 0 templates/backOffice/default/assets/less/main.less | 0 .../assets/less/thelia/bootstrap-editable.less | 0 .../assets/less/thelia/bootstrap-select.less | 0 .../assets/less/thelia/bootstrap-switch.less | 0 .../default/assets/less/thelia/dropzone.less | 0 .../backOffice/default/assets/less/thelia/grid.less | 0 .../default/assets/less/thelia/jqplot.less | 0 .../default/assets/less/thelia/logger.less | 0 .../default/assets/less/thelia/thelia.less | 0 .../default/assets/less/thelia/wizard.less | 0 templates/backOffice/default/attribute-edit.html | 0 templates/backOffice/default/attributes.html | 0 templates/backOffice/default/config-store.html | 0 templates/backOffice/default/configs/variables.conf | 0 templates/backOffice/default/configuration.html | 0 templates/backOffice/default/content-edit.html | 0 templates/backOffice/default/countries.html | 0 templates/backOffice/default/country-edit.html | 0 .../default/coupon/condition-input-ajax.html | 0 templates/backOffice/default/coupon/conditions.html | 0 templates/backOffice/default/coupon/form.html | 0 templates/backOffice/default/currencies.html | 0 templates/backOffice/default/currency-edit.html | 0 templates/backOffice/default/customer-edit.html | 0 templates/backOffice/default/customers.html | 0 templates/backOffice/default/document-edit.html | 0 templates/backOffice/default/feature-edit.html | 0 templates/backOffice/default/features.html | 0 templates/backOffice/default/folder-edit.html | 0 templates/backOffice/default/folders.html | 0 templates/backOffice/default/image-edit.html | 0 .../includes/admin-utilities-position-block.html | 0 .../admin-utilities-sortable-column-header.html | 0 .../default/includes/catalog-breadcrumb.html | 0 .../default/includes/confirmation-modal.html | 0 .../default/includes/content-folder-management.html | 0 .../includes/customer_address_form_fields.html | 0 .../default/includes/document-upload-form.html | 0 .../default/includes/document-upload-list-ajax.html | 0 .../default/includes/folder-breadcrumb.html | 0 .../default/includes/generic-confirm-dialog.html | 0 .../default/includes/generic-js-dialog.html | 0 .../default/includes/image-upload-form.html | 0 .../default/includes/image-upload-list-ajax.html | 0 .../backOffice/default/includes/module-block.html | 0 .../backOffice/default/includes/notifications.html | 0 .../default/includes/product-details-tab.html | 0 .../default/includes/product-general-tab.html | 0 .../includes/standard-description-form-fields.html | 0 templates/backOffice/default/languages.html | 0 templates/backOffice/default/mailing-system.html | 0 templates/backOffice/default/message-edit.html | 0 templates/backOffice/default/messages.html | 0 templates/backOffice/default/module-configure.html | 0 templates/backOffice/default/module-edit.html | 0 templates/backOffice/default/modules.html | 0 templates/backOffice/default/order-edit.html | 0 templates/backOffice/default/orders.html | 0 templates/backOffice/default/product-edit.html | 0 templates/backOffice/default/profile-edit.html | 0 templates/backOffice/default/profiles.html | 0 templates/backOffice/default/search.html | 0 .../default/shipping-configuration-edit.html | 0 .../backOffice/default/shipping-configuration.html | 0 .../backOffice/default/shipping-zones-edit.html | 0 templates/backOffice/default/shipping-zones.html | 0 templates/backOffice/default/system-logs.html | 0 templates/backOffice/default/tax-edit.html | 0 templates/backOffice/default/tax-rule-edit.html | 0 templates/backOffice/default/taxes-rules.html | 0 templates/backOffice/default/template-edit.html | 0 templates/backOffice/default/templates.html | 0 templates/backOffice/default/translations.html | 0 templates/backOffice/default/variable-edit.html | 0 templates/backOffice/default/variables.html | 0 templates/frontOffice/default/404.html | 0 templates/frontOffice/default/account-password.html | 0 templates/frontOffice/default/account-update.html | 0 templates/frontOffice/default/account.html | 0 templates/frontOffice/default/address-update.html | 0 templates/frontOffice/default/address.html | 0 .../frontOffice/default/assets/img/218x146.png | Bin .../frontOffice/default/assets/img/280x196.png | Bin .../frontOffice/default/assets/img/700x320.png | Bin .../frontOffice/default/assets/img/ajax-loader.gif | Bin .../default/assets/img/carousel/1200x390.png | Bin .../default/assets/img/carousel/slider1.jpg | Bin .../default/assets/img/carousel/slider2.jpg | Bin .../default/assets/img/carousel/slider3.jpg | Bin .../frontOffice/default/assets/img/favicon.ico | Bin .../frontOffice/default/assets/img/favicon.png | Bin templates/frontOffice/default/assets/img/logo.gif | Bin .../default/assets/img/payment/american-express.png | Bin .../default/assets/img/payment/cheque.png | Bin .../default/assets/img/payment/kwixo.png | Bin .../default/assets/img/payment/mastercard.png | Bin .../frontOffice/default/assets/img/payment/visa.png | Bin .../default/assets/img/product/1/118x85.png | Bin .../default/assets/img/product/1/560x445.png | Bin .../frontOffice/default/assets/js/libs/jquery.js | 0 .../default/assets/js/plugins/bootbox/bootbox.js | 0 .../assets/js/plugins/bootbox/bootbox.min.js | 0 templates/frontOffice/default/assets/js/script.js | 0 .../default/assets/less/fontawesome/bootstrap.less | 0 .../default/assets/less/fontawesome/core.less | 0 .../default/assets/less/fontawesome/extras.less | 0 .../assets/less/fontawesome/font-awesome-ie7.less | 0 .../assets/less/fontawesome/font-awesome.less | 0 .../default/assets/less/fontawesome/icons.less | 0 .../default/assets/less/fontawesome/mixins.less | 0 .../default/assets/less/fontawesome/path.less | 0 .../default/assets/less/fontawesome/variables.less | 0 .../default/assets/less/thelia/account.less | 0 .../default/assets/less/thelia/buttons.less | 0 .../default/assets/less/thelia/cart.less | 0 .../default/assets/less/thelia/category.less | 0 .../default/assets/less/thelia/checkout.less | 0 templates/frontOffice/default/cart.html | 0 templates/frontOffice/default/category.html | 0 templates/frontOffice/default/contact-success.html | 0 templates/frontOffice/default/contact.html | 0 templates/frontOffice/default/content.html | 0 templates/frontOffice/default/currency.html | 0 .../frontOffice/default/includes/addedToCart.html | 0 .../default/includes/asides/articles.html | 0 .../default/includes/categories-filters.html | 0 templates/frontOffice/default/includes/menu.html | 0 .../frontOffice/default/includes/mini-cart.html | 0 .../frontOffice/default/includes/product-empty.html | 0 .../default/includes/single-product.html | 0 templates/frontOffice/default/includes/toolbar.html | 0 templates/frontOffice/default/index.html | 0 templates/frontOffice/default/language.html | 0 templates/frontOffice/default/layout.tpl | 0 templates/frontOffice/default/login.html | 0 templates/frontOffice/default/misc/breadcrumb.tpl | 0 .../frontOffice/default/misc/checkout-progress.tpl | 0 templates/frontOffice/default/modal-address.html | 0 templates/frontOffice/default/newsletter.html | 0 templates/frontOffice/default/order-delivery.html | 0 templates/frontOffice/default/order-invoice.html | 0 templates/frontOffice/default/order-placed.html | 0 templates/frontOffice/default/password.html | 0 templates/frontOffice/default/product.html | 0 templates/frontOffice/default/register.html | 0 templates/frontOffice/default/search.html | 0 templates/frontOffice/default/view_all.html | 0 templates/pdf/default/I18n/en_US.php | 0 templates/pdf/default/I18n/es_ES.php | 0 templates/pdf/default/I18n/fr_FR.php | 0 templates/pdf/default/I18n/it_IT.php | 0 templates/pdf/default/delivery.html | 0 templates/pdf/default/invoice.html | 0 web/robots.txt | 0 225 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 templates/backOffice/default/admin-layout.tpl mode change 100644 => 100755 templates/backOffice/default/administrators.html mode change 100644 => 100755 templates/backOffice/default/ajax/language-update-modal.html mode change 100644 => 100755 templates/backOffice/default/ajax/logger.html mode change 100644 => 100755 templates/backOffice/default/ajax/product-attributes-tab.html mode change 100644 => 100755 templates/backOffice/default/ajax/product-related-tab.html mode change 100644 => 100755 templates/backOffice/default/ajax/template-attribute-list.html mode change 100644 => 100755 templates/backOffice/default/ajax/template-feature-list.html mode change 100644 => 100755 templates/backOffice/default/assets/img/ajax-loader.gif mode change 100644 => 100755 templates/backOffice/default/assets/img/bg.jpg mode change 100644 => 100755 templates/backOffice/default/assets/img/deconnexion.png mode change 100644 => 100755 templates/backOffice/default/assets/img/header.jpg mode change 100644 => 100755 templates/backOffice/default/assets/img/logo-light.png mode change 100644 => 100755 templates/backOffice/default/assets/img/logo.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top-bar-logo-save.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top-bar-logo.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top.jpg mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap/bootstrap.js mode change 100644 => 100755 templates/backOffice/default/assets/js/coupon.js mode change 100644 => 100755 templates/backOffice/default/assets/js/document-upload.js mode change 100644 => 100755 templates/backOffice/default/assets/js/dropzone.js mode change 100644 => 100755 templates/backOffice/default/assets/js/image-upload.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.typewatch.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css mode change 100644 => 100755 templates/backOffice/default/assets/js/json2.js mode change 100644 => 100755 templates/backOffice/default/assets/js/libs/jquery.js mode change 100644 => 100755 templates/backOffice/default/assets/js/main.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js mode change 100644 => 100755 templates/backOffice/default/assets/less/main.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-editable.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-select.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-switch.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/dropzone.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/grid.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/jqplot.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/logger.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/thelia.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/wizard.less mode change 100644 => 100755 templates/backOffice/default/attribute-edit.html mode change 100644 => 100755 templates/backOffice/default/attributes.html mode change 100644 => 100755 templates/backOffice/default/config-store.html mode change 100644 => 100755 templates/backOffice/default/configs/variables.conf mode change 100644 => 100755 templates/backOffice/default/configuration.html mode change 100644 => 100755 templates/backOffice/default/content-edit.html mode change 100644 => 100755 templates/backOffice/default/countries.html mode change 100644 => 100755 templates/backOffice/default/country-edit.html mode change 100644 => 100755 templates/backOffice/default/coupon/condition-input-ajax.html mode change 100644 => 100755 templates/backOffice/default/coupon/conditions.html mode change 100644 => 100755 templates/backOffice/default/coupon/form.html mode change 100644 => 100755 templates/backOffice/default/currencies.html mode change 100644 => 100755 templates/backOffice/default/currency-edit.html mode change 100644 => 100755 templates/backOffice/default/customer-edit.html mode change 100644 => 100755 templates/backOffice/default/customers.html mode change 100644 => 100755 templates/backOffice/default/document-edit.html mode change 100644 => 100755 templates/backOffice/default/feature-edit.html mode change 100644 => 100755 templates/backOffice/default/features.html mode change 100644 => 100755 templates/backOffice/default/folder-edit.html mode change 100644 => 100755 templates/backOffice/default/folders.html mode change 100644 => 100755 templates/backOffice/default/image-edit.html mode change 100644 => 100755 templates/backOffice/default/includes/admin-utilities-position-block.html mode change 100644 => 100755 templates/backOffice/default/includes/admin-utilities-sortable-column-header.html mode change 100644 => 100755 templates/backOffice/default/includes/catalog-breadcrumb.html mode change 100644 => 100755 templates/backOffice/default/includes/confirmation-modal.html mode change 100644 => 100755 templates/backOffice/default/includes/content-folder-management.html mode change 100644 => 100755 templates/backOffice/default/includes/customer_address_form_fields.html mode change 100644 => 100755 templates/backOffice/default/includes/document-upload-form.html mode change 100644 => 100755 templates/backOffice/default/includes/document-upload-list-ajax.html mode change 100644 => 100755 templates/backOffice/default/includes/folder-breadcrumb.html mode change 100644 => 100755 templates/backOffice/default/includes/generic-confirm-dialog.html mode change 100644 => 100755 templates/backOffice/default/includes/generic-js-dialog.html mode change 100644 => 100755 templates/backOffice/default/includes/image-upload-form.html mode change 100644 => 100755 templates/backOffice/default/includes/image-upload-list-ajax.html mode change 100644 => 100755 templates/backOffice/default/includes/module-block.html mode change 100644 => 100755 templates/backOffice/default/includes/notifications.html mode change 100644 => 100755 templates/backOffice/default/includes/product-details-tab.html mode change 100644 => 100755 templates/backOffice/default/includes/product-general-tab.html mode change 100644 => 100755 templates/backOffice/default/includes/standard-description-form-fields.html mode change 100644 => 100755 templates/backOffice/default/languages.html mode change 100644 => 100755 templates/backOffice/default/mailing-system.html mode change 100644 => 100755 templates/backOffice/default/message-edit.html mode change 100644 => 100755 templates/backOffice/default/messages.html mode change 100644 => 100755 templates/backOffice/default/module-configure.html mode change 100644 => 100755 templates/backOffice/default/module-edit.html mode change 100644 => 100755 templates/backOffice/default/modules.html mode change 100644 => 100755 templates/backOffice/default/order-edit.html mode change 100644 => 100755 templates/backOffice/default/orders.html mode change 100644 => 100755 templates/backOffice/default/product-edit.html mode change 100644 => 100755 templates/backOffice/default/profile-edit.html mode change 100644 => 100755 templates/backOffice/default/profiles.html mode change 100644 => 100755 templates/backOffice/default/search.html mode change 100644 => 100755 templates/backOffice/default/shipping-configuration-edit.html mode change 100644 => 100755 templates/backOffice/default/shipping-configuration.html mode change 100644 => 100755 templates/backOffice/default/shipping-zones-edit.html mode change 100644 => 100755 templates/backOffice/default/shipping-zones.html mode change 100644 => 100755 templates/backOffice/default/system-logs.html mode change 100644 => 100755 templates/backOffice/default/tax-edit.html mode change 100644 => 100755 templates/backOffice/default/tax-rule-edit.html mode change 100644 => 100755 templates/backOffice/default/taxes-rules.html mode change 100644 => 100755 templates/backOffice/default/template-edit.html mode change 100644 => 100755 templates/backOffice/default/templates.html mode change 100644 => 100755 templates/backOffice/default/translations.html mode change 100644 => 100755 templates/backOffice/default/variable-edit.html mode change 100644 => 100755 templates/backOffice/default/variables.html mode change 100644 => 100755 templates/frontOffice/default/404.html mode change 100644 => 100755 templates/frontOffice/default/account-password.html mode change 100644 => 100755 templates/frontOffice/default/account-update.html mode change 100644 => 100755 templates/frontOffice/default/account.html mode change 100644 => 100755 templates/frontOffice/default/address-update.html mode change 100644 => 100755 templates/frontOffice/default/address.html mode change 100644 => 100755 templates/frontOffice/default/assets/img/218x146.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/280x196.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/700x320.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/ajax-loader.gif mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/1200x390.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider1.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider2.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider3.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/favicon.ico mode change 100644 => 100755 templates/frontOffice/default/assets/img/favicon.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/logo.gif mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/american-express.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/cheque.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/kwixo.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/mastercard.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/visa.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/product/1/118x85.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/product/1/560x445.png mode change 100644 => 100755 templates/frontOffice/default/assets/js/libs/jquery.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/script.js mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/bootstrap.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/core.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/extras.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/font-awesome.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/icons.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/mixins.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/path.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/variables.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/account.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/buttons.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/cart.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/category.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/checkout.less mode change 100644 => 100755 templates/frontOffice/default/cart.html mode change 100644 => 100755 templates/frontOffice/default/category.html mode change 100644 => 100755 templates/frontOffice/default/contact-success.html mode change 100644 => 100755 templates/frontOffice/default/contact.html mode change 100644 => 100755 templates/frontOffice/default/content.html mode change 100644 => 100755 templates/frontOffice/default/currency.html mode change 100644 => 100755 templates/frontOffice/default/includes/addedToCart.html mode change 100644 => 100755 templates/frontOffice/default/includes/asides/articles.html mode change 100644 => 100755 templates/frontOffice/default/includes/categories-filters.html mode change 100644 => 100755 templates/frontOffice/default/includes/menu.html mode change 100644 => 100755 templates/frontOffice/default/includes/mini-cart.html mode change 100644 => 100755 templates/frontOffice/default/includes/product-empty.html mode change 100644 => 100755 templates/frontOffice/default/includes/single-product.html mode change 100644 => 100755 templates/frontOffice/default/includes/toolbar.html mode change 100644 => 100755 templates/frontOffice/default/index.html mode change 100644 => 100755 templates/frontOffice/default/language.html mode change 100644 => 100755 templates/frontOffice/default/layout.tpl mode change 100644 => 100755 templates/frontOffice/default/login.html mode change 100644 => 100755 templates/frontOffice/default/misc/breadcrumb.tpl mode change 100644 => 100755 templates/frontOffice/default/misc/checkout-progress.tpl mode change 100644 => 100755 templates/frontOffice/default/modal-address.html mode change 100644 => 100755 templates/frontOffice/default/newsletter.html mode change 100644 => 100755 templates/frontOffice/default/order-delivery.html mode change 100644 => 100755 templates/frontOffice/default/order-invoice.html mode change 100644 => 100755 templates/frontOffice/default/order-placed.html mode change 100644 => 100755 templates/frontOffice/default/password.html mode change 100644 => 100755 templates/frontOffice/default/product.html mode change 100644 => 100755 templates/frontOffice/default/register.html mode change 100644 => 100755 templates/frontOffice/default/search.html mode change 100644 => 100755 templates/frontOffice/default/view_all.html mode change 100644 => 100755 templates/pdf/default/I18n/en_US.php mode change 100644 => 100755 templates/pdf/default/I18n/es_ES.php mode change 100644 => 100755 templates/pdf/default/I18n/fr_FR.php mode change 100644 => 100755 templates/pdf/default/I18n/it_IT.php mode change 100644 => 100755 templates/pdf/default/delivery.html mode change 100644 => 100755 templates/pdf/default/invoice.html mode change 100644 => 100755 web/robots.txt diff --git a/templates/backOffice/default/admin-layout.tpl b/templates/backOffice/default/admin-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/administrators.html b/templates/backOffice/default/administrators.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/language-update-modal.html b/templates/backOffice/default/ajax/language-update-modal.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/logger.html b/templates/backOffice/default/ajax/logger.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/product-attributes-tab.html b/templates/backOffice/default/ajax/product-attributes-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/product-related-tab.html b/templates/backOffice/default/ajax/product-related-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/template-attribute-list.html b/templates/backOffice/default/ajax/template-attribute-list.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/template-feature-list.html b/templates/backOffice/default/ajax/template-feature-list.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/ajax-loader.gif b/templates/backOffice/default/assets/img/ajax-loader.gif old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/bg.jpg b/templates/backOffice/default/assets/img/bg.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/deconnexion.png b/templates/backOffice/default/assets/img/deconnexion.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/header.jpg b/templates/backOffice/default/assets/img/header.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/logo-light.png b/templates/backOffice/default/assets/img/logo-light.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/logo.png b/templates/backOffice/default/assets/img/logo.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top-bar-logo-save.png b/templates/backOffice/default/assets/img/top-bar-logo-save.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top-bar-logo.png b/templates/backOffice/default/assets/img/top-bar-logo.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top.jpg b/templates/backOffice/default/assets/img/top.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js b/templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js b/templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js b/templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap/bootstrap.js b/templates/backOffice/default/assets/js/bootstrap/bootstrap.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/coupon.js b/templates/backOffice/default/assets/js/coupon.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/document-upload.js b/templates/backOffice/default/assets/js/document-upload.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/dropzone.js b/templates/backOffice/default/assets/js/dropzone.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/image-upload.js b/templates/backOffice/default/assets/js/image-upload.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js b/templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.typewatch.js b/templates/backOffice/default/assets/js/jquery.typewatch.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/json2.js b/templates/backOffice/default/assets/js/json2.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/libs/jquery.js b/templates/backOffice/default/assets/js/libs/jquery.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/main.js b/templates/backOffice/default/assets/js/main.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js b/templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/main.less b/templates/backOffice/default/assets/less/main.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-editable.less b/templates/backOffice/default/assets/less/thelia/bootstrap-editable.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-select.less b/templates/backOffice/default/assets/less/thelia/bootstrap-select.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-switch.less b/templates/backOffice/default/assets/less/thelia/bootstrap-switch.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/dropzone.less b/templates/backOffice/default/assets/less/thelia/dropzone.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/grid.less b/templates/backOffice/default/assets/less/thelia/grid.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/jqplot.less b/templates/backOffice/default/assets/less/thelia/jqplot.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/logger.less b/templates/backOffice/default/assets/less/thelia/logger.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/thelia.less b/templates/backOffice/default/assets/less/thelia/thelia.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/wizard.less b/templates/backOffice/default/assets/less/thelia/wizard.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/attribute-edit.html b/templates/backOffice/default/attribute-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/attributes.html b/templates/backOffice/default/attributes.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/config-store.html b/templates/backOffice/default/config-store.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/configs/variables.conf b/templates/backOffice/default/configs/variables.conf old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/configuration.html b/templates/backOffice/default/configuration.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/content-edit.html b/templates/backOffice/default/content-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/countries.html b/templates/backOffice/default/countries.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/country-edit.html b/templates/backOffice/default/country-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/condition-input-ajax.html b/templates/backOffice/default/coupon/condition-input-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/conditions.html b/templates/backOffice/default/coupon/conditions.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/form.html b/templates/backOffice/default/coupon/form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/currencies.html b/templates/backOffice/default/currencies.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/currency-edit.html b/templates/backOffice/default/currency-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/customer-edit.html b/templates/backOffice/default/customer-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/customers.html b/templates/backOffice/default/customers.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/document-edit.html b/templates/backOffice/default/document-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/feature-edit.html b/templates/backOffice/default/feature-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/features.html b/templates/backOffice/default/features.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/folder-edit.html b/templates/backOffice/default/folder-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/folders.html b/templates/backOffice/default/folders.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/image-edit.html b/templates/backOffice/default/image-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/admin-utilities-position-block.html b/templates/backOffice/default/includes/admin-utilities-position-block.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/admin-utilities-sortable-column-header.html b/templates/backOffice/default/includes/admin-utilities-sortable-column-header.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/catalog-breadcrumb.html b/templates/backOffice/default/includes/catalog-breadcrumb.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/confirmation-modal.html b/templates/backOffice/default/includes/confirmation-modal.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/content-folder-management.html b/templates/backOffice/default/includes/content-folder-management.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/customer_address_form_fields.html b/templates/backOffice/default/includes/customer_address_form_fields.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/document-upload-form.html b/templates/backOffice/default/includes/document-upload-form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/document-upload-list-ajax.html b/templates/backOffice/default/includes/document-upload-list-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/folder-breadcrumb.html b/templates/backOffice/default/includes/folder-breadcrumb.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/generic-confirm-dialog.html b/templates/backOffice/default/includes/generic-confirm-dialog.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/generic-js-dialog.html b/templates/backOffice/default/includes/generic-js-dialog.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/image-upload-form.html b/templates/backOffice/default/includes/image-upload-form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/image-upload-list-ajax.html b/templates/backOffice/default/includes/image-upload-list-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/module-block.html b/templates/backOffice/default/includes/module-block.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/notifications.html b/templates/backOffice/default/includes/notifications.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/product-details-tab.html b/templates/backOffice/default/includes/product-details-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/product-general-tab.html b/templates/backOffice/default/includes/product-general-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/standard-description-form-fields.html b/templates/backOffice/default/includes/standard-description-form-fields.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/languages.html b/templates/backOffice/default/languages.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/mailing-system.html b/templates/backOffice/default/mailing-system.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/message-edit.html b/templates/backOffice/default/message-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/messages.html b/templates/backOffice/default/messages.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/module-configure.html b/templates/backOffice/default/module-configure.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/module-edit.html b/templates/backOffice/default/module-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/modules.html b/templates/backOffice/default/modules.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/order-edit.html b/templates/backOffice/default/order-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/orders.html b/templates/backOffice/default/orders.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/product-edit.html b/templates/backOffice/default/product-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/profile-edit.html b/templates/backOffice/default/profile-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/profiles.html b/templates/backOffice/default/profiles.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/search.html b/templates/backOffice/default/search.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-configuration-edit.html b/templates/backOffice/default/shipping-configuration-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-configuration.html b/templates/backOffice/default/shipping-configuration.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-zones-edit.html b/templates/backOffice/default/shipping-zones-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-zones.html b/templates/backOffice/default/shipping-zones.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/system-logs.html b/templates/backOffice/default/system-logs.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/tax-edit.html b/templates/backOffice/default/tax-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/tax-rule-edit.html b/templates/backOffice/default/tax-rule-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/taxes-rules.html b/templates/backOffice/default/taxes-rules.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/template-edit.html b/templates/backOffice/default/template-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/templates.html b/templates/backOffice/default/templates.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/translations.html b/templates/backOffice/default/translations.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/variable-edit.html b/templates/backOffice/default/variable-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/variables.html b/templates/backOffice/default/variables.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/404.html b/templates/frontOffice/default/404.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account-password.html b/templates/frontOffice/default/account-password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account-update.html b/templates/frontOffice/default/account-update.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account.html b/templates/frontOffice/default/account.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/address-update.html b/templates/frontOffice/default/address-update.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/address.html b/templates/frontOffice/default/address.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/218x146.png b/templates/frontOffice/default/assets/img/218x146.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/280x196.png b/templates/frontOffice/default/assets/img/280x196.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/700x320.png b/templates/frontOffice/default/assets/img/700x320.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/ajax-loader.gif b/templates/frontOffice/default/assets/img/ajax-loader.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/1200x390.png b/templates/frontOffice/default/assets/img/carousel/1200x390.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider1.jpg b/templates/frontOffice/default/assets/img/carousel/slider1.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider2.jpg b/templates/frontOffice/default/assets/img/carousel/slider2.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider3.jpg b/templates/frontOffice/default/assets/img/carousel/slider3.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/favicon.ico b/templates/frontOffice/default/assets/img/favicon.ico old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/favicon.png b/templates/frontOffice/default/assets/img/favicon.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/logo.gif b/templates/frontOffice/default/assets/img/logo.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/american-express.png b/templates/frontOffice/default/assets/img/payment/american-express.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/cheque.png b/templates/frontOffice/default/assets/img/payment/cheque.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/kwixo.png b/templates/frontOffice/default/assets/img/payment/kwixo.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/mastercard.png b/templates/frontOffice/default/assets/img/payment/mastercard.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/visa.png b/templates/frontOffice/default/assets/img/payment/visa.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/product/1/118x85.png b/templates/frontOffice/default/assets/img/product/1/118x85.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/product/1/560x445.png b/templates/frontOffice/default/assets/img/product/1/560x445.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/libs/jquery.js b/templates/frontOffice/default/assets/js/libs/jquery.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js b/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js b/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/script.js b/templates/frontOffice/default/assets/js/script.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/bootstrap.less b/templates/frontOffice/default/assets/less/fontawesome/bootstrap.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/core.less b/templates/frontOffice/default/assets/less/fontawesome/core.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/extras.less b/templates/frontOffice/default/assets/less/fontawesome/extras.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less b/templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/font-awesome.less b/templates/frontOffice/default/assets/less/fontawesome/font-awesome.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/icons.less b/templates/frontOffice/default/assets/less/fontawesome/icons.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/mixins.less b/templates/frontOffice/default/assets/less/fontawesome/mixins.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/path.less b/templates/frontOffice/default/assets/less/fontawesome/path.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/variables.less b/templates/frontOffice/default/assets/less/fontawesome/variables.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/account.less b/templates/frontOffice/default/assets/less/thelia/account.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/buttons.less b/templates/frontOffice/default/assets/less/thelia/buttons.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/cart.less b/templates/frontOffice/default/assets/less/thelia/cart.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/category.less b/templates/frontOffice/default/assets/less/thelia/category.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/checkout.less b/templates/frontOffice/default/assets/less/thelia/checkout.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/cart.html b/templates/frontOffice/default/cart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/category.html b/templates/frontOffice/default/category.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/contact-success.html b/templates/frontOffice/default/contact-success.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/contact.html b/templates/frontOffice/default/contact.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/content.html b/templates/frontOffice/default/content.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/currency.html b/templates/frontOffice/default/currency.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/addedToCart.html b/templates/frontOffice/default/includes/addedToCart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/asides/articles.html b/templates/frontOffice/default/includes/asides/articles.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/categories-filters.html b/templates/frontOffice/default/includes/categories-filters.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/menu.html b/templates/frontOffice/default/includes/menu.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/mini-cart.html b/templates/frontOffice/default/includes/mini-cart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/product-empty.html b/templates/frontOffice/default/includes/product-empty.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/single-product.html b/templates/frontOffice/default/includes/single-product.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/toolbar.html b/templates/frontOffice/default/includes/toolbar.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/index.html b/templates/frontOffice/default/index.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/language.html b/templates/frontOffice/default/language.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/layout.tpl b/templates/frontOffice/default/layout.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/login.html b/templates/frontOffice/default/login.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/misc/breadcrumb.tpl b/templates/frontOffice/default/misc/breadcrumb.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/misc/checkout-progress.tpl b/templates/frontOffice/default/misc/checkout-progress.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/modal-address.html b/templates/frontOffice/default/modal-address.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/newsletter.html b/templates/frontOffice/default/newsletter.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-delivery.html b/templates/frontOffice/default/order-delivery.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-invoice.html b/templates/frontOffice/default/order-invoice.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-placed.html b/templates/frontOffice/default/order-placed.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/password.html b/templates/frontOffice/default/password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/product.html b/templates/frontOffice/default/product.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/register.html b/templates/frontOffice/default/register.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/search.html b/templates/frontOffice/default/search.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/view_all.html b/templates/frontOffice/default/view_all.html old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/en_US.php b/templates/pdf/default/I18n/en_US.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/es_ES.php b/templates/pdf/default/I18n/es_ES.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/fr_FR.php b/templates/pdf/default/I18n/fr_FR.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/it_IT.php b/templates/pdf/default/I18n/it_IT.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/delivery.html b/templates/pdf/default/delivery.html old mode 100644 new mode 100755 diff --git a/templates/pdf/default/invoice.html b/templates/pdf/default/invoice.html old mode 100644 new mode 100755 diff --git a/web/robots.txt b/web/robots.txt old mode 100644 new mode 100755 From e7038c9369716843d11c87b2471ac0cde2bf8654 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:37:40 +0100 Subject: [PATCH 35/70] Spelling rewritten with 2 t --- core/lib/Thelia/Action/Product.php | 2 +- core/lib/Thelia/Core/Event/TheliaEvents.php | 2 +- .../Thelia/Form/CategoryModificationForm.php | 2 +- .../Thelia/Form/ContentModificationForm.php | 2 +- .../Thelia/Form/FolderModificationForm.php | 2 +- .../Thelia/Form/ProductModificationForm.php | 2 +- .../Thelia/Model/Tools/UrlRewritingTrait.php | 12 +- core/lib/Thelia/Tools/URL.php | 2 +- templates/backOffice/default/I18n/en_US.php | 1 - templates/backOffice/default/I18n/es_ES.php | 2 - templates/backOffice/default/I18n/fr_FR.php | 507 +++++++++--------- templates/backOffice/default/I18n/it_IT.php | 2 - .../backOffice/default/category-edit.html | 2 +- .../backOffice/default/content-edit.html | 2 +- templates/backOffice/default/folder-edit.html | 2 +- .../default/includes/product-general-tab.html | 2 +- 16 files changed, 275 insertions(+), 271 deletions(-) diff --git a/core/lib/Thelia/Action/Product.php b/core/lib/Thelia/Action/Product.php index 3917827d1..f51d95f28 100644 --- a/core/lib/Thelia/Action/Product.php +++ b/core/lib/Thelia/Action/Product.php @@ -113,7 +113,7 @@ class Product extends BaseAction implements EventSubscriberInterface ->save() ; - // Update the rewriten URL, if required + // Update the rewritten URL, if required $product->setRewrittenUrl($event->getLocale(), $event->getUrl()); // Update default category (ifd required) diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 1dfcb673c..4b929409c 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -681,7 +681,7 @@ final class TheliaEvents const MAILTRANSPORTER_CONFIG = 'action.mailertransporter.config'; /** - * sent when Thelia try to generate a rewriten url + * sent when Thelia try to generate a rewritten url */ const GENERATE_REWRITTENURL = 'action.generate_rewritenurl'; diff --git a/core/lib/Thelia/Form/CategoryModificationForm.php b/core/lib/Thelia/Form/CategoryModificationForm.php index 943c0d941..567f9e41f 100644 --- a/core/lib/Thelia/Form/CategoryModificationForm.php +++ b/core/lib/Thelia/Form/CategoryModificationForm.php @@ -38,7 +38,7 @@ class CategoryModificationForm extends CategoryCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url") )) diff --git a/core/lib/Thelia/Form/ContentModificationForm.php b/core/lib/Thelia/Form/ContentModificationForm.php index 14789ab84..c3887b88e 100644 --- a/core/lib/Thelia/Form/ContentModificationForm.php +++ b/core/lib/Thelia/Form/ContentModificationForm.php @@ -45,7 +45,7 @@ class ContentModificationForm extends ContentCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewritten_url") )) diff --git a/core/lib/Thelia/Form/FolderModificationForm.php b/core/lib/Thelia/Form/FolderModificationForm.php index 0ff90868c..9c4e4c601 100644 --- a/core/lib/Thelia/Form/FolderModificationForm.php +++ b/core/lib/Thelia/Form/FolderModificationForm.php @@ -38,7 +38,7 @@ class FolderModificationForm extends FolderCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url") )) diff --git a/core/lib/Thelia/Form/ProductModificationForm.php b/core/lib/Thelia/Form/ProductModificationForm.php index 34785cf45..15a629302 100644 --- a/core/lib/Thelia/Form/ProductModificationForm.php +++ b/core/lib/Thelia/Form/ProductModificationForm.php @@ -47,7 +47,7 @@ class ProductModificationForm extends ProductCreationForm )) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url_field") )) diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index 0a8af40c8..d16ceaf5f 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -30,17 +30,17 @@ use Thelia\Model\RewritingUrlQuery; use Thelia\Model\RewritingUrl; use Thelia\Tools\URL; /** - * A trait for managing Rewriten URLs from model classes + * A trait for managing Rewritten URLs from model classes */ trait UrlRewritingTrait { /** - * @returns string the view name of the rewriten object (e.g., 'category', 'product') + * @returns string the view name of the rewritten object (e.g., 'category', 'product') */ protected abstract function getRewrittenUrlViewName(); /** - * Get the object URL for the given locale, rewriten if rewriting is enabled. + * Get the object URL for the given locale, rewritten if rewriting is enabled. * * @param string $locale a valid locale (e.g. en_US) */ @@ -53,7 +53,7 @@ trait UrlRewritingTrait { } /** - * Generate a rewriten URL from the object title, and store it in the rewriting table + * Generate a rewritten URL from the object title, and store it in the rewriting table * * @param string $locale a valid locale (e.g. en_US) */ @@ -112,7 +112,7 @@ trait UrlRewritingTrait { } /** - * return the rewriten URL for the given locale + * return the rewritten URL for the given locale * * @param string $locale a valid locale (e.g. en_US) * @return null @@ -137,7 +137,7 @@ trait UrlRewritingTrait { } /** - * Set the rewriten URL for the given locale + * Set the rewritten URL for the given locale * * @param string $locale a valid locale (e.g. en_US) * @param $url the wanted url diff --git a/core/lib/Thelia/Tools/URL.php b/core/lib/Thelia/Tools/URL.php index d00c5c4ab..85f5289cd 100755 --- a/core/lib/Thelia/Tools/URL.php +++ b/core/lib/Thelia/Tools/URL.php @@ -286,7 +286,7 @@ class URL } /** - * Genenerate the file part of a rewriten URL from a given baseString, using a view, a view id and a locale + * Genenerate the file part of a rewritten URL from a given baseString, using a view, a view id and a locale * * @param $view * @param $viewId diff --git a/templates/backOffice/default/I18n/en_US.php b/templates/backOffice/default/I18n/en_US.php index 839cbdeb2..fa5eaf663 100755 --- a/templates/backOffice/default/I18n/en_US.php +++ b/templates/backOffice/default/I18n/en_US.php @@ -183,7 +183,6 @@ return array( 'Images' => 'Images', 'Documents' => 'Documents', 'Rewritten URL' => 'Rewritten URL', - 'Rewriten URL' => 'Rewriten URL', 'Top level' => 'Top level', 'Visibility' => 'Visibility', 'Category created on %date_create. Last modification: %date_change' => 'Category created on %date_create. Last modification: %date_change', diff --git a/templates/backOffice/default/I18n/es_ES.php b/templates/backOffice/default/I18n/es_ES.php index 6884502b9..58f83ebb2 100755 --- a/templates/backOffice/default/I18n/es_ES.php +++ b/templates/backOffice/default/I18n/es_ES.php @@ -308,9 +308,7 @@ return array ( 'Conclusion' => '', 'A short post-description information' => '', 'Short conclusion' => '', - 'Rewriten URL *' => '', 'Rewritten URL' => '', - 'Rewriten URL' => '', 'Parent category *' => '', 'Top level' => '', 'Visibility' => '', diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 4d482cb30..e633a3caf 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -1,39 +1,52 @@ 'Page non trouvée', - 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', - 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', - 'Thelia Back Office' => 'Thelia Back Office', - 'Version %ver' => 'Version %ver', - 'View site' => 'Voir le site', - 'View shop' => 'Voir la boutique', - 'Profil' => 'Profile', - 'Close administation session' => 'Quitter l\'interface d\'administration', - 'Logout' => 'Se déconnecter', + 'No' => 'Non', + 'Yes' => 'Oui', + 'Send files' => 'Envoyer les fichiers', + 'Drop files to upload' => 'Déposez les fichiers à envoyer sur le serveur', + 'Browse files' => 'Sélectionner les fichiers', + 'Can\'t load documents, please refresh this page.' => 'Échec lors du chargement du document, veuillez réessayer', + 'OK' => 'OK', + 'Edit information in %lng' => 'Modifier les information en %Ing', + 'Edit prices in %curr' => 'Modifier les prix en %curr', + 'Save' => ' Enregistrer', + 'Save and close' => 'Enregistrer et fermer', + 'Close' => 'Fermer', + 'Product reference' => 'Référence produit', + 'Cancel' => 'Annuler', 'Home' => 'Accueil', - 'Customers' => 'Clients', - 'Orders' => 'Commandes', - 'All orders' => 'Toutes les commandes', - 'Catalog' => 'Catalogue', 'Folders' => 'Dossier', - 'Coupons' => 'Codes Promo', + 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', + 'Name' => 'Nom', + 'Description' => 'Description', + 'Actions' => 'Actions', + 'Title' => 'Civilité', + 'Please retry' => 'Merci de réessayer', + 'Select a folder...' => 'Choisissez un dossier de contenu...', + 'ID' => 'ID', + 'Select a tax tule' => 'Sélectionnez une règle de taxes', + 'Product weight' => 'Poids du produit', + 'Kg' => 'Kg', + 'Product price' => 'Prix du produit', + 'Reference' => 'Reference', + 'Quantity' => 'Quantité', + 'Company' => 'Entreprise', + 'Firstname' => 'Prénom', + 'Lastname' => 'Nom', + 'Address' => 'Adresse', + 'Additional address' => 'Adresse complémentaire', + 'Zip code' => 'Code postal', + 'City' => 'Ville', + 'Catalog' => 'Catalogue', + 'Editing %cat' => 'Edition de %cat', + 'Edit this category' => 'Editer cette catégorie', 'Configuration' => 'Configuration', - 'Modules' => 'Modules', - 'Search' => 'Recherche', - 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', - '© Thelia 2013' => '© Thelia 2013', - 'Published by OpenStudio' => 'Edité par OpenStudio', - 'Thelia support forum' => 'Communauté Thelia', - 'Thelia contributions' => 'Contributions Thelia', - 'Thelia Mailing System' => 'Configuration des envois de mails', - 'Administration logs' => 'Gestion des logs', - 'Show logs' => 'Voir les loge', - 'Period' => 'Période', - 'From' => 'De', - 'To' => 'A', - 'Administrators' => 'Administrateurs', - 'Resources' => 'Ressources', + 'Shipping configuration' => 'Configuration du transport', + 'Coupon' => 'Code promo', + 'Create' => 'Créer', + 'Coupons : ' => 'Codes promo', + 'Create a new coupon' => 'Créer un nouveau code promo', 'Back-office users' => 'Utilisateurs du back-office', 'Taxes' => 'Taxes', 'Create a new administrator' => 'Créer un nouvel administrateur', @@ -41,15 +54,12 @@ return array( 'First Name' => 'Prénom', 'Last Name' => 'Nom', 'Profile' => 'Profile', - 'Actions' => 'Actions', 'Superadministrator' => 'Super-administrateur', 'Change this administrator' => 'Modifier cet administrateur', 'Delete this administrator' => 'Supprimer cet administrateur', 'FirstName' => 'Prénom', 'LastName' => 'Nom', 'Password' => 'Mot de passe', - 'Create' => 'Créer', - 'Cancel' => 'Annuler', 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', 'Update a new administrator' => 'Modifier cet administrateur', 'Update' => 'Mettre à jour', @@ -57,182 +67,38 @@ return array( 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', - 'Label' => 'Libellé', - 'Company' => 'Entreprise', - 'Edit a language' => 'Modifier une langue', - 'Edit this language' => 'Modifier cette langue', - 'Current product template' => 'Gabarit de produit actuel', - 'Do not use a product template' => 'Ne pas utiliser de gabarit', - 'Apply' => 'Appliquer', - 'Product Attributes' => 'Déclinaisons du produit', - 'ID' => 'ID', - 'Attribute Name' => 'Nom de la déclinaison', - 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', - 'Product Features' => 'Caractéristiques du produit', - 'Feature Name' => 'Nom de la caractéristique', - 'Feature value for this product' => 'Valeur de la caractéristique', - 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', - 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', - 'Feature value' => 'Valeur de la caractéristique', - 'Related content' => 'Contenu associé', - 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', - 'Select a folder...' => 'Choisissez un dossier de contenu...', - 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', - 'Select a folder content...' => 'Choisissez un dossier de contenu...', - 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', - 'No available content in this folder' => 'Ce dossier est vide de contenus', - 'No folders found' => 'Aucun dossier n\'a été trouvé.', - 'Content title' => 'Titre du contenu', - 'Position' => 'Position', - 'Delete this content' => 'Supprimer ce contenu', - 'Category title' => 'Titre de la catégorie', - 'Enter new category position' => 'Classement de la catégorie ', - 'Lire la suite' => 'Lire la suite', - 'Value' => 'Valeur', - 'Title' => 'Civilité', - 'Product attributes' => 'Attributs produit', - 'Categories' => 'Catégories', - 'Top level categories' => 'Catégories de niveau 1 ', - 'Add a new category' => 'Ajouter une catégorie', - 'Online' => 'En ligne', - 'Browse this category' => 'Parcourir cette catégorie', - 'Edit this category' => 'Editer cette catégorie', - 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', - 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', - 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', - 'Top level Products' => 'Produits mis en avant', - 'Add a new product' => 'Ajouter un nouveau produit', - 'Reference' => 'Reference', - 'Product title' => 'Titre du produit', - 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', - 'Name' => 'Nom', - 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', - 'Create a new category' => 'Créer une catégorie', - 'Create this category' => 'Créer cette catégorie', - 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', - 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', - 'Product price' => 'Prix du produit', - 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', - 'Select a tax tule' => 'Sélectionnez une règle de taxes', - 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', - 'Product weight' => 'Poids du produit', - 'Kg' => 'Kg', - 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', - 'Create a new product' => 'Créer un nouveau produit', - 'Create this product' => 'Créer ce produit', - 'Delete category' => 'Supprimer cette catégorie', - 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', - 'Delete product' => 'Supprimer ce produit', - 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', - 'Enter new product position' => 'Classement du produit', - 'Edit category' => 'Editer la catégorie', - 'Edit category %title' => 'Editer le titre de la catégorie : %title', - 'Thelia configuration' => 'Configuration thelia', - 'Product catalog configuration' => 'Configuration du catalogue produit', - 'Product templates' => 'Template produit', - 'Product features' => 'Caractéristiques produit', - 'Mailing templates' => 'Template e-mail', - 'Currencies' => 'Monnaie', - 'Taxes rules' => 'Règles de taxes', - 'Shipping configuration' => 'Configuration du transport', - 'Countries' => 'Pays', - 'Shipping zones' => 'Zones de livraison', - 'System parameters' => 'Paramètres système ', - 'System variables' => 'Gestion des variables', - 'Administration profiles' => 'Gestion des administrateurs', - 'Languages & URLs' => 'Langues et URLs', - 'Mailing system' => 'Envoi des e-mails', - 'System logs' => 'Journal des logs', - 'And' => 'Et', - 'Edit' => 'Editer', - 'Delete' => 'Supprimer', - 'Code :' => 'Code', - 'code' => 'code', - 'Title :' => 'Titre', - 'title' => 'titre', - 'Is enabled' => 'Est valide', - 'Is available on special offers' => 'Est valide sur les offres promotionnelles', - 'Is cumulative' => 'Est cumulable', - 'Is removing postage' => 'Offre les frais de port', - 'Expiration date :' => 'Date de fin de validité', - 'yyyy-mm-dd' => 'jjjj--mm--aa', - 'Is unlimited' => 'Est illimité', - 'Max usage :' => 'Utilisations max', - 'max usage' => 'utilisations max', - 'Type :' => 'Type', - 'Please select a coupon type' => 'Merci d\'entrer le type de code', - 'Amount :' => 'Montant', - '14.50' => '14.50', - 'Short description :' => 'Description courte', - 'short description' => 'description court', - 'Long description :' => 'Description longue', - 'long description' => 'description longue', - 'Save your modifications' => 'Enregistrer les modifications', - 'Conditions' => 'Conditions', - 'Save this condition' => 'Enregistrer cette condition', - 'Condition\'s category :' => 'Type de condition', - 'Please select a condition category' => 'Merci d\'entrer le type de condition', - 'Coupon' => 'Code promo', - 'Coupons : ' => 'Codes promo', - 'Create a new coupon' => 'Créer un nouveau code promo', - 'Browse' => 'Parcourir', - 'List' => 'Liste', - 'Enabled coupons' => 'Codes promo disponibles', - 'Code' => 'Code', - 'Days before expiration' => 'Jours de validité', - 'Usage left' => 'Utilisation restante', - 'Unlimited' => 'Illimité', - 'Disabled coupons' => 'Codes désactivés', - 'Expiration date' => 'Date de fin', - 'Amount' => 'Montant', - 'Update coupon' => 'Mettre à jour le code', - 'Please retry' => 'Merci de réessayer', - 'Please select another condition' => 'Merci de sélectionner une autre condition', - 'Edit a customer' => 'Editer un client', - 'Editing customer "%name"' => 'Edition du client "%name"', - 'Customer informations' => 'Informations client', - 'Firstname' => 'Prénom', - 'Lastname' => 'Nom', - 'Default address' => 'Adresse par défaut', - 'Address' => 'Adresse', - 'Additional address' => 'Adresse complémentaire', - 'Zip code' => 'Code postal', - 'City' => 'Ville', - 'Other addresses' => 'Autres adresses', - 'Add a new address' => 'Ajouter une nouvelle adresse', - 'Phone' => 'Téléphone', - 'Edit this address' => 'Editer cette adresse', - 'Use this address by default' => 'Utiliser comme adresse par défaut', - 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', - 'orders for this customer' => 'commandes pour ce client', - 'Order n°' => 'Commande n° ', - 'Date & Hour' => 'Date et heure', - 'Status' => 'Etat', - 'Create this address' => 'Créer cette adresse', - 'Use address by default' => 'Utiliser comme adresse par défaut', - 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', - 'Delete address' => 'Supprimer cette adresse', - 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', - 'Customer' => 'Client', - 'Customers list' => 'Liste des clients', - 'Add a new Customer' => 'Ajouter un client', - 'Edit this customer' => 'Modifier ce client', - 'Send a mail to this customer' => 'Contacter ce client par mail', - 'Email address' => 'Adresse e-mail', - 'Create a new customer' => 'Ajouter un client', - 'Create this customer' => 'Ajouter ce client', - 'Delete customer' => 'Supprimer ce client', - 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Back' => 'Retour', - 'Save' => ' Enregistrer', - 'Description' => 'Description', + 'Thelia System Variables' => 'Variables Thelia', + 'System variables' => 'Gestion des variables', + 'Thelia system variables' => 'Variables Thelia', + 'Add a new variable' => 'Ajouter une variable', + 'Save chages' => 'Enregistrer les modifications', + 'Save changes' => 'Enregistrer les modifications', + 'Purpose' => 'Objet', + 'Value' => 'Valeur', + 'Action' => 'Action', + 'Change this variable' => 'Modifier cette variable', + 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', + 'Delete this variable' => 'Supprimer cette variable', + 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', + 'Variable name' => 'Nom de la variable', + 'Variable value' => 'Valeur de la variable', + 'Variable purpose' => 'Objet de la variable', + 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', + 'Create a new variable' => 'Créer une nouvelle variable', + 'Create this variable' => 'Ajouter cette variable', + 'Delete a variable' => 'Supprimer une variable', + 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', 'Back-office home' => 'Accueil administration', 'Dashboard' => 'Tableau de bord', 'Sales' => 'Ventes', 'New customers' => 'Nouveaux clients', + 'Orders' => 'Commandes', 'First orders' => 'Premières commandes', 'Aborted orders' => 'Paniers abandonnés', 'Shop Informations' => 'Informations sur le magasin', + 'Customers' => 'Clients', + 'Categories' => 'Catégories', 'Products' => 'Produits', 'Online products' => 'Produits en ligne', 'Offline products' => 'Produits hors ligne', @@ -251,31 +117,78 @@ return array( 'Latest version available' => 'Dernière version disponible', 'News' => 'Actualités', 'Click here' => 'Cliquez ici', - 'Editing %cat' => 'Edition de %cat', - 'No' => 'Non', - 'Yes' => 'Oui', - 'OK' => 'OK', - 'Save and close' => 'Enregistrer et fermer', - 'Quantity' => 'Quantité', - 'deactivate' => 'désactiver', - 'en_US' => 'en_US', - 'd-m-Y' => 'j-m-A', + 'Edit a customer' => 'Editer un client', + 'Editing customer "%name"' => 'Edition du client "%name"', + 'Customer informations' => 'Informations client', + 'Default address' => 'Adresse par défaut', + 'Other addresses' => 'Autres adresses', + 'Add a new address' => 'Ajouter une nouvelle adresse', + 'Phone' => 'Téléphone', + 'Edit this address' => 'Editer cette adresse', + 'Use this address by default' => 'Utiliser comme adresse par défaut', + 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', + 'orders for this customer' => 'commandes pour ce client', + 'Order n°' => 'Commande n° ', + 'Date & Hour' => 'Date et heure', + 'Amount' => 'Montant', + 'Status' => 'Etat', + 'Create this address' => 'Créer cette adresse', + 'Use address by default' => 'Utiliser comme adresse par défaut', + 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', + 'Delete address' => 'Supprimer cette adresse', + 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Modules' => 'Modules', + 'Taxes rules' => 'Règles de taxes', + 'Apply' => 'Appliquer', + 'Thelia Back Office' => 'Thelia Back Office', 'Username' => 'Nom d\'utilisateur', - 'Host :' => 'Host', - 'Host' => 'Host', - 'Port :' => 'Port', - 'Port' => 'Port', - 'Username :' => 'Nom d\'utilisateur', - 'Password :' => 'Mot de passe', - 'Source IP :' => 'IP source', - 'Source IP' => 'IP source', - 'Variable name' => 'Nom de la variable', - 'Purpose' => 'Objet', + 'Related content' => 'Contenu associé', + 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', + 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', + 'Select a folder content...' => 'Choisissez un dossier de contenu...', + 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', + 'No available content in this folder' => 'Ce dossier est vide de contenus', + 'No folders found' => 'Aucun dossier n\'a été trouvé.', + 'Content title' => 'Titre du contenu', + 'Position' => 'Position', + 'Delete this content' => 'Supprimer ce contenu', + 'Category title' => 'Titre de la catégorie', + 'Enter new category position' => 'Classement de la catégorie ', + 'Lire la suite' => 'Lire la suite', + 'Label' => 'Libellé', + 'Edit a language' => 'Modifier une langue', + 'Edit this language' => 'Modifier cette langue', + 'Current product template' => 'Gabarit de produit actuel', + 'Do not use a product template' => 'Ne pas utiliser de gabarit', + 'Product Attributes' => 'Déclinaisons du produit', + 'Attribute Name' => 'Nom de la déclinaison', + 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', + 'Product Features' => 'Caractéristiques du produit', + 'Feature Name' => 'Nom de la caractéristique', + 'Feature value for this product' => 'Valeur de la caractéristique', + 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', + 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', + 'Feature value' => 'Valeur de la caractéristique', + 'Currencies' => 'Monnaie', + 'Code' => 'Code', + 'Edit category' => 'Editer la catégorie', + 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Search' => 'Recherche', + 'Customer' => 'Client', + 'customer ref' => 'ref client', + 'company' => 'entreprise', + 'firstname & lastname' => 'Prénom & nom', + 'last order' => 'Dernière commande', + 'order amount' => 'Montant de la commande', + 'Edit this customer' => 'Modifier ce client', + 'Send a mail to this customer' => 'Contacter ce client par mail', + 'Edit this order' => 'Editer cette commande ', + 'Product' => 'Produit', + 'Product title' => 'Titre du produit', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', 'Cart' => 'Panier', - 'Product' => 'Produit', 'Unit. price' => 'Prix unitaire', 'Tax' => 'Taxes', 'Unit taxed price' => 'Prix unitaire TTC', @@ -305,37 +218,133 @@ return array( 'Edit delivery address' => 'Editer l\'adresse de livraison', 'Edit order address' => 'Editer l\'adresse de commande ', 'Confirm changes' => 'Valider les modifications', - 'Edit this order' => 'Editer cette commande ', - 'Cancel this order' => 'Annuler cette commande', - 'Delete an order' => 'Supprimer une commande', - 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', - 'View' => 'Voir', - 'customer ref' => 'ref client', - 'company' => 'entreprise', - 'firstname & lastname' => 'Prénom & nom', - 'last order' => 'Dernière commande', - 'order amount' => 'Montant de la commande', - 'Add' => 'Ajouter', - 'Warning' => 'Attention', + 'Update coupon' => 'Mettre à jour le code', + 'Please select another condition' => 'Merci de sélectionner une autre condition', + 'Online' => 'En ligne', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', - 'Variable value' => 'Valeur de la variable', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', - 'Thelia System Variables' => 'Variables Thelia', - 'Thelia system variables' => 'Variables Thelia', - 'Add a new variable' => 'Ajouter une variable', - 'Save chages' => 'Enregistrer les modifications', - 'Save changes' => 'Enregistrer les modifications', - 'Action' => 'Action', - 'Change this variable' => 'Modifier cette variable', - 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', - 'Delete this variable' => 'Supprimer cette variable', - 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', - 'Variable purpose' => 'Objet de la variable', - 'Create a new variable' => 'Créer une nouvelle variable', - 'Create this variable' => 'Ajouter cette variable', - 'Delete a variable' => 'Supprimer une variable', - 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', + 'Is enabled' => 'Est valide', + 'Expiration date' => 'Date de fin', + 'Usage left' => 'Utilisation restante', + 'Unlimited' => 'Illimité', + 'And' => 'Et', + 'Edit' => 'Editer', + 'Mailing templates' => 'Template e-mail', + 'Code :' => 'Code', + 'code' => 'code', + 'Title :' => 'Titre', + 'title' => 'titre', + 'Is available on special offers' => 'Est valide sur les offres promotionnelles', + 'Is cumulative' => 'Est cumulable', + 'Is removing postage' => 'Offre les frais de port', + 'Expiration date :' => 'Date de fin de validité', + 'yyyy-mm-dd' => 'jjjj--mm--aa', + 'Is unlimited' => 'Est illimité', + 'Max usage :' => 'Utilisations max', + 'max usage' => 'utilisations max', + 'Type :' => 'Type', + 'Please select a coupon type' => 'Merci d\'entrer le type de code', + 'Amount :' => 'Montant', + '14.50' => '14.50', + 'Short description :' => 'Description courte', + 'short description' => 'description court', + 'Long description :' => 'Description longue', + 'long description' => 'description longue', + 'Save your modifications' => 'Enregistrer les modifications', + 'Conditions' => 'Conditions', + 'Save this condition' => 'Enregistrer cette condition', + 'Condition\'s category :' => 'Type de condition', + 'Please select a condition category' => 'Merci d\'entrer le type de condition', + 'Delete' => 'Supprimer', + 'Thelia Mailing System' => 'Configuration des envois de mails', + 'Mailing system' => 'Envoi des e-mails', + 'Host :' => 'Host', + 'Host' => 'Host', + 'Port :' => 'Port', + 'Port' => 'Port', + 'Username :' => 'Nom d\'utilisateur', + 'Password :' => 'Mot de passe', + 'Source IP :' => 'IP source', + 'Source IP' => 'IP source', + 'Product attributes' => 'Attributs produit', + 'Product features' => 'Caractéristiques produit', + 'Administration logs' => 'Gestion des logs', + 'Show logs' => 'Voir les loge', + 'Period' => 'Période', + 'From' => 'De', + 'To' => 'A', + 'Administrators' => 'Administrateurs', + 'Resources' => 'Ressources', + 'Shipping zones' => 'Zones de livraison', + 'Add' => 'Ajouter', + 'Cancel this order' => 'Annuler cette commande', + 'Delete an order' => 'Supprimer une commande', + 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', + 'System logs' => 'Journal des logs', + 'View' => 'Voir', + 'deactivate' => 'désactiver', + 'en_US' => 'en_US', + 'd-m-Y' => 'j-m-A', + 'Page not found' => 'Page non trouvée', + 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', + 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', + 'Customers list' => 'Liste des clients', + 'Add a new Customer' => 'Ajouter un client', + 'Email address' => 'Adresse e-mail', + 'Create a new customer' => 'Ajouter un client', + 'Create this customer' => 'Ajouter ce client', + 'Delete customer' => 'Supprimer ce client', + 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', + 'Countries' => 'Pays', + 'Coupons' => 'Codes Promo', + 'Browse' => 'Parcourir', + 'List' => 'Liste', + 'Enabled coupons' => 'Codes promo disponibles', + 'Days before expiration' => 'Jours de validité', + 'Disabled coupons' => 'Codes désactivés', + 'Version %ver' => 'Version %ver', + 'View site' => 'Voir le site', + 'View shop' => 'Voir la boutique', + 'Profil' => 'Profile', + 'Close administation session' => 'Quitter l\'interface d\'administration', + 'Logout' => 'Se déconnecter', + 'All orders' => 'Toutes les commandes', + 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', + '© Thelia 2013' => '© Thelia 2013', + 'Published by OpenStudio' => 'Edité par OpenStudio', + 'Thelia support forum' => 'Communauté Thelia', + 'Thelia contributions' => 'Contributions Thelia', + 'Thelia configuration' => 'Configuration thelia', + 'Product catalog configuration' => 'Configuration du catalogue produit', + 'Product templates' => 'Template produit', + 'System parameters' => 'Paramètres système ', + 'Administration profiles' => 'Gestion des administrateurs', + 'Languages & URLs' => 'Langues et URLs', + 'Warning' => 'Attention', + 'Top level categories' => 'Catégories de niveau 1 ', + 'Add a new category' => 'Ajouter une catégorie', + 'Browse this category' => 'Parcourir cette catégorie', + 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', + 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', + 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', + 'Top level Products' => 'Produits mis en avant', + 'Add a new product' => 'Ajouter un nouveau produit', + 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', + 'Create a new category' => 'Créer une catégorie', + 'Create this category' => 'Créer cette catégorie', + 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', + 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', + 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', + 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', + 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', + 'Create a new product' => 'Créer un nouveau produit', + 'Create this product' => 'Créer ce produit', + 'Delete category' => 'Supprimer cette catégorie', + 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', + 'Delete product' => 'Supprimer ce produit', + 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', + 'Enter new product position' => 'Classement du produit', ); diff --git a/templates/backOffice/default/I18n/it_IT.php b/templates/backOffice/default/I18n/it_IT.php index 6884502b9..58f83ebb2 100755 --- a/templates/backOffice/default/I18n/it_IT.php +++ b/templates/backOffice/default/I18n/it_IT.php @@ -308,9 +308,7 @@ return array ( 'Conclusion' => '', 'A short post-description information' => '', 'Short conclusion' => '', - 'Rewriten URL *' => '', 'Rewritten URL' => '', - 'Rewriten URL' => '', 'Parent category *' => '', 'Top level' => '', 'Visibility' => '', diff --git a/templates/backOffice/default/category-edit.html b/templates/backOffice/default/category-edit.html index 62f9290f1..7225ddf6e 100755 --- a/templates/backOffice/default/category-edit.html +++ b/templates/backOffice/default/category-edit.html @@ -84,7 +84,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/content-edit.html b/templates/backOffice/default/content-edit.html index 8bccc01d4..ae92061b9 100755 --- a/templates/backOffice/default/content-edit.html +++ b/templates/backOffice/default/content-edit.html @@ -85,7 +85,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/folder-edit.html b/templates/backOffice/default/folder-edit.html index 2b8b6bfe4..82f57af68 100755 --- a/templates/backOffice/default/folder-edit.html +++ b/templates/backOffice/default/folder-edit.html @@ -85,7 +85,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/includes/product-general-tab.html b/templates/backOffice/default/includes/product-general-tab.html index 84b9a836d..f91aeff9e 100755 --- a/templates/backOffice/default/includes/product-general-tab.html +++ b/templates/backOffice/default/includes/product-general-tab.html @@ -53,7 +53,7 @@ {$label} : - + {/form_field} From 7284c485feaf0c2683e5027fbc8dad5c082971ef Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 21:15:33 +0100 Subject: [PATCH 36/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index e633a3caf..178bf29a2 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -14,15 +14,46 @@ return array( 'Save and close' => 'Enregistrer et fermer', 'Close' => 'Fermer', 'Product reference' => 'Référence produit', + 'Rewritten URL' => 'URL réécrite', + 'Top level' => 'Niveau racine', + 'You can attach this product to more categories in the details tab.' => 'Vous pouvez lier ce produit à plus de catégories dans l\'onglet détail.', + 'Visibility' => 'Visibilité', + 'Product created on %date_create. Last modification: %date_change' => 'Produit créé le %date_create. Dernière modification : %date_change ', 'Cancel' => 'Annuler', 'Home' => 'Accueil', 'Folders' => 'Dossier', + 'Editing %fold' => 'Modification de %fold', + 'Edit this folder' => 'Modifier ce dossier', + '(edit)' => '(modifier)', + 'Editing %title' => 'Modifier %title', 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', + 'classic modules' => 'module classique', 'Name' => 'Nom', 'Description' => 'Description', + 'Enable/Disable' => 'Activer/Désactiver', 'Actions' => 'Actions', + 'Deactivate %title module' => 'Désactiver le module %title', + 'deactivation' => 'désactivation', + 'activate %title module' => 'activer le module %title', + 'activation' => 'activation', + 'Configure this module' => 'Configurer ce module', + 'Configure' => 'Configurer', + 'Read the documentation of this module' => 'Lire la documentation de ce module', + 'Edit this module' => 'Modifier ce module', + 'Delete this module' => 'Supprimer ce module', 'Title' => 'Civilité', + 'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisé si un résumé ou une introduction est nécessaire', + 'Short description' => 'Courte description', + 'The detailed description.' => 'Description détaillée', + 'A short post-description information' => 'Une courte post-description', + 'Short conclusion' => 'Courte conclusion', + 'Confirmation' => 'Confirmation', + 'Do you really want to delete this element ?' => 'Voulez-vous vraiment supprimer cet élément ?', + 'Confirm' => 'Je confirme', 'Please retry' => 'Merci de réessayer', + 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', + 'Update this image' => 'Mettre à jour cette image', + 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', 'Select a folder...' => 'Choisissez un dossier de contenu...', 'ID' => 'ID', 'Select a tax tule' => 'Sélectionnez une règle de taxes', From 24e91e9ad6ee7bd572943a37da5fdadad59cd7d7 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 21:27:50 +0100 Subject: [PATCH 37/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 178bf29a2..ce7e7860a 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -301,6 +301,7 @@ return array( 'Source IP :' => 'IP source', 'Source IP' => 'IP source', 'Product attributes' => 'Attributs produit', + 'Remove from all product templates' => 'Supprimer de tous les templates produits', 'Product features' => 'Caractéristiques produit', 'Administration logs' => 'Gestion des logs', 'Show logs' => 'Voir les loge', @@ -315,10 +316,17 @@ return array( 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', 'System logs' => 'Journal des logs', + 'Edit a profile' => 'Modifier un profile', + 'Profiles' => 'Profiles', + 'Postscriptum' => 'Post-scriptum', 'View' => 'Voir', 'deactivate' => 'désactiver', + 'ISO Code' => 'Code ISO', 'en_US' => 'en_US', 'd-m-Y' => 'j-m-A', + 'Error' => 'Erreur', + 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', + 'An error occured' => 'Une erreur est apparue', 'Page not found' => 'Page non trouvée', 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', @@ -330,6 +338,11 @@ return array( 'Delete customer' => 'Supprimer ce client', 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Countries' => 'Pays', + 'Delete this country' => 'Supprimer ce pays', + 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', + 'Country title' => 'Titre du pays', + 'Alpha code 2' => 'Code alpha 2', + 'Alpha code 3' => 'Code alpha 3', 'Coupons' => 'Codes Promo', 'Browse' => 'Parcourir', 'List' => 'Liste', @@ -354,15 +367,19 @@ return array( 'System parameters' => 'Paramètres système ', 'Administration profiles' => 'Gestion des administrateurs', 'Languages & URLs' => 'Langues et URLs', + 'Translations' => 'Traductions', 'Warning' => 'Attention', + 'Categories in %cat' => 'Catégories en $cat', 'Top level categories' => 'Catégories de niveau 1 ', 'Add a new category' => 'Ajouter une catégorie', 'Browse this category' => 'Parcourir cette catégorie', 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', + 'Products in %cat' => 'Produits en %cat', 'Top level Products' => 'Produits mis en avant', 'Add a new product' => 'Ajouter un nouveau produit', + 'Delete this product' => 'Supprimer ce produit', 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', 'Create a new category' => 'Créer une catégorie', 'Create this category' => 'Créer cette catégorie', @@ -378,4 +395,6 @@ return array( 'Delete product' => 'Supprimer ce produit', 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', 'Enter new product position' => 'Classement du produit', + 'Thelia Shipping zones' => 'Zones de livraison Thelia', + 'Change this shipping zone' => 'Changer cette zone de livraison', ); From 3140a8d9c8d714fa75bd8366d95c308c185a47ac Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 22:06:12 +0100 Subject: [PATCH 38/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 93 +++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index ce7e7860a..f6438e8f3 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -55,13 +55,24 @@ return array( 'Update this image' => 'Mettre à jour cette image', 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', 'Select a folder...' => 'Choisissez un dossier de contenu...', + ' (default)' => '(défaut)', + 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', + 'No Folders found' => 'Aucun dossier trouvé', 'ID' => 'ID', + 'Folder title' => 'Titre du dossier', + 'Remove the product from this category' => 'Supprimer le produit de cette catégorie', + 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', 'Select a tax tule' => 'Sélectionnez une règle de taxes', + 'Details' => 'Détails', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', 'Product price' => 'Prix du produit', 'Reference' => 'Reference', 'Quantity' => 'Quantité', + 'Default' => 'Défaut', + 'Select an attribute...' => 'Sélectionnez un attribut', + 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', + 'Attribute values' => 'Valeur des attributs', 'Company' => 'Entreprise', 'Firstname' => 'Prénom', 'Lastname' => 'Nom', @@ -69,15 +80,19 @@ return array( 'Additional address' => 'Adresse complémentaire', 'Zip code' => 'Code postal', 'City' => 'Ville', + 'Phone number' => 'Numéro de téléphone', + 'Cellular phone number' => 'Numéro de téléphone portable', 'Catalog' => 'Catalogue', 'Editing %cat' => 'Edition de %cat', 'Edit this category' => 'Editer cette catégorie', 'Configuration' => 'Configuration', 'Shipping configuration' => 'Configuration du transport', + 'Create coupon' => 'Créer un code promo', 'Coupon' => 'Code promo', 'Create' => 'Créer', 'Coupons : ' => 'Codes promo', 'Create a new coupon' => 'Créer un nouveau code promo', + 'Files manager' => 'Gestionnaire de fichier', 'Back-office users' => 'Utilisateurs du back-office', 'Taxes' => 'Taxes', 'Create a new administrator' => 'Créer un nouvel administrateur', @@ -98,7 +113,12 @@ return array( 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', + 'Edit a document' => 'Modifier un document', + 'Document' => 'Document', + 'Editing document "%name"' => 'En cours de modification du document "%name"', + 'Edit document "%name"' => 'Modifier le document "%name"', 'Back' => 'Retour', + 'Document informations' => 'Informations sur le document', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -303,6 +323,17 @@ return array( 'Product attributes' => 'Attributs produit', 'Remove from all product templates' => 'Supprimer de tous les templates produits', 'Product features' => 'Caractéristiques produit', + 'taxes' => 'taxes', + 'and' => 'et', + 'tax rules' => 'règles de taxe', + 'Example :' => 'Exemple:', + 'Create a new tax' => 'Créer une nouvelle taxe', + 'Change this tax' => 'Modifier cette taxe', + 'Delete this tax' => 'Supprimer cette taxe', + 'Delete tax' => 'Supprimer une taxe', + 'Do you really want to delete this tax ?' => 'Voulez-vous vraiment supprimer cette taxe ?', + 'Delete tax rule' => 'Supprimer une règle de taxe', + 'Do you really want to delete this tax rule ?' => 'Voulez-vous vraiment supprimer cette règle de taxe ?', 'Administration logs' => 'Gestion des logs', 'Show logs' => 'Voir les loge', 'Period' => 'Période', @@ -312,43 +343,95 @@ return array( 'Resources' => 'Ressources', 'Shipping zones' => 'Zones de livraison', 'Add' => 'Ajouter', + 'Zones' => 'Zones', + 'Delete this zone' => 'Supprimer cette zone', + 'Remove zone' => 'Supprimer zone', 'Cancel this order' => 'Annuler cette commande', 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', + 'System Logs' => 'Logs système', 'System logs' => 'Journal des logs', + 'System Logs configuration' => 'Configuration logs système', + 'General configuration' => 'Configuration générale', + 'Log lines format' => 'Format des lignes des logs', + 'File names' => 'Noms du fichier', + 'IP Addresses' => 'Adresse IP', + 'Destinations' => 'Destinations', 'Edit a profile' => 'Modifier un profile', 'Profiles' => 'Profiles', 'Postscriptum' => 'Post-scriptum', + 'Resource' => 'Ressource', + 'Rights' => 'Droits', 'View' => 'Voir', + 'Manage module rights' => 'Gérer les droits des modules', + 'Module' => 'Module', + 'Subject' => 'Sujet', + 'Thelia Languages' => 'Langages Thelia', + 'Languages' => 'Langages', + 'Locale' => 'Locale', + 'Parameters' => 'Paramètres', + 'activate' => 'activer', 'deactivate' => 'désactiver', 'ISO Code' => 'Code ISO', 'en_US' => 'en_US', 'd-m-Y' => 'j-m-A', + 'Delete language' => 'Supprimer langage', 'Error' => 'Erreur', 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', 'An error occured' => 'Une erreur est apparue', + 'Templates' => 'Template', + 'Template name' => 'Nom du template', 'Page not found' => 'Page non trouvée', 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', + 'Install a new module' => 'Installer un nouveau module', + 'Classic modules' => 'Module classique', + 'Delivery modules' => 'Module de livraison', + 'Payment modules' => 'Module de paiement', + 'Delete a module' => 'Supprimer un module', + 'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?', 'Customers list' => 'Liste des clients', 'Add a new Customer' => 'Ajouter un client', + 'Last name' => 'Nom', + 'First name' => 'Prénom', + 'Registration date' => 'Date d\'inscription', + 'Date of last order' => 'Date du dernier achat', + 'Last order amount' => 'Montant du dernier achat', 'Email address' => 'Adresse e-mail', 'Create a new customer' => 'Ajouter un client', 'Create this customer' => 'Ajouter ce client', 'Delete customer' => 'Supprimer ce client', 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Countries' => 'Pays', + 'Add a new country' => 'Ajouter un pays', + 'Shop' => 'Magasin', + 'N° ISO' => 'N° ISO', + 'Change this country' => 'Modifier ce pays', 'Delete this country' => 'Supprimer ce pays', 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', 'Country title' => 'Titre du pays', 'Alpha code 2' => 'Code alpha 2', 'Alpha code 3' => 'Code alpha 3', + 'Create a new country' => 'Créer un nouveau pays', + 'Create this country' => 'Créer ce pays', + 'Delete country' => 'Supprimer le pays', + 'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', 'Coupons' => 'Codes Promo', 'Browse' => 'Parcourir', 'List' => 'Liste', 'Enabled coupons' => 'Codes promo disponibles', 'Days before expiration' => 'Jours de validité', 'Disabled coupons' => 'Codes désactivés', + 'Edit an image' => 'Modifier une image', + 'Image' => 'Image', + 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', + 'Edit image "%name"' => 'Modification de l\'image "%name"', + 'Preview' => 'Aperçu', + 'Add this country' => 'Ajouter ce pays', + 'Remove country' => 'Supprimer le pays', + 'Do you really want to remove this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', + 'Edit a country' => 'Modifier un pays', + 'Country description' => 'Description du pays', 'Version %ver' => 'Version %ver', 'View site' => 'Voir le site', 'View shop' => 'Voir la boutique', @@ -368,7 +451,17 @@ return array( 'Administration profiles' => 'Gestion des administrateurs', 'Languages & URLs' => 'Langues et URLs', 'Translations' => 'Traductions', + 'Template title' => 'Titre du template', + 'Delete template' => 'Supprimer le template', + 'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce template ? Il sera supprimer de tous les produits', + 'Translation' => 'Traduction', + 'PDF templates' => 'Template du PDF', + 'Thelia core' => 'Cœur de Thelia', 'Warning' => 'Attention', + 'Profile code' => 'Code du profile', + 'Delete profile' => 'Supprimer le profile', + 'Do you really want to delete this profile ?' => 'Voulez-vous vraiment supprimer ce profile ?', + 'You can\'t delete this profile' => 'Vous ne pouvez supprimer ce produit', 'Categories in %cat' => 'Catégories en $cat', 'Top level categories' => 'Catégories de niveau 1 ', 'Add a new category' => 'Ajouter une catégorie', From ff18babbf91251273946b945644ec1ba514ded8a Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 22:20:31 +0100 Subject: [PATCH 39/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 63 +++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index f6438e8f3..8b22e9a21 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -66,13 +66,27 @@ return array( 'Details' => 'Détails', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', + 'Current quantity' => 'Quantité actuelle', + 'Promotion' => 'Promotion', 'Product price' => 'Prix du produit', + 'Combination builder' => 'Constructeur de combinaison', + 'Add a new combination' => 'Ajouter une nouvelle combinaison', 'Reference' => 'Reference', + 'EAN Code' => 'Code EAN', 'Quantity' => 'Quantité', + 'Weight
(Kg)' => 'Poids
(Kg) ', 'Default' => 'Défaut', + 'Sale' => 'Vente', + 'New' => 'Nouveau', + 'Attribute' => 'Attribut', 'Select an attribute...' => 'Sélectionnez un attribut', 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', 'Attribute values' => 'Valeur des attributs', + 'Remove selected values' => 'Supprimer la valeur sélectionnée', + 'Create a new combination' => 'Créer une nouvelle combinaison', + 'Create this combination' => 'Créer cette combinaison', + 'Combination reference' => 'Référence de la combinaison', + 'Create combinations' => 'Créer des combinaisons', 'Company' => 'Entreprise', 'Firstname' => 'Prénom', 'Lastname' => 'Nom', @@ -85,8 +99,12 @@ return array( 'Catalog' => 'Catalogue', 'Editing %cat' => 'Edition de %cat', 'Edit this category' => 'Editer cette catégorie', + 'Thelia Shipping configuration' => 'Configuration des livraison Thelia', 'Configuration' => 'Configuration', 'Shipping configuration' => 'Configuration du transport', + 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', + 'Change this shipping configuration' => 'Modifier cette configuration de livraison', + 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', 'Create coupon' => 'Créer un code promo', 'Coupon' => 'Code promo', 'Create' => 'Créer', @@ -119,6 +137,7 @@ return array( 'Edit document "%name"' => 'Modifier le document "%name"', 'Back' => 'Retour', 'Document informations' => 'Informations sur le document', + 'File' => 'Fichier', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -175,6 +194,7 @@ return array( 'Other addresses' => 'Autres adresses', 'Add a new address' => 'Ajouter une nouvelle adresse', 'Phone' => 'Téléphone', + 'Cellular phone' => 'Téléphone portable', 'Edit this address' => 'Editer cette adresse', 'Use this address by default' => 'Utiliser comme adresse par défaut', 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', @@ -183,16 +203,40 @@ return array( 'Date & Hour' => 'Date et heure', 'Amount' => 'Montant', 'Status' => 'Etat', + 'Create a customer address' => 'Créer une adresse client', 'Create this address' => 'Créer cette adresse', + 'Edit a customer address' => 'Modifier une adresse client', + 'Save this address' => 'Sauvegarder cette adresse', 'Use address by default' => 'Utiliser comme adresse par défaut', 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', 'Delete address' => 'Supprimer cette adresse', 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Edit content' => 'Modifier le contenu', + 'Edit content %title' => 'Modifier le contenu %title', + 'Edit previous content' => 'Modifier le contenu précèdent', + 'Preview folder page' => 'Aperçu de la page dossier', + 'Edit next content' => 'Modifier le prochain contenu', + 'General description' => 'Description générale', + 'Associations' => 'Associations', + 'Images' => 'Images', + 'Documents' => 'Documents', 'Modules' => 'Modules', + 'Remove associated folder' => 'Supprimer le dossier associé', + 'Edit a tax rule' => 'Modifier une règle de taxe', 'Taxes rules' => 'Règles de taxes', + 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', + 'Manage taxes' => 'Gérer les taxes', + 'Choose a country' => 'Choisissez un pays', + 'Countries that have the same tax rule' => 'Pays ayant les mêmes règles de taxe', + 'NONE' => 'AUCUN', + 'Add tax to this group' => 'Ajouter une taxe à ce groupe', 'Apply' => 'Appliquer', + 'uncheck all' => 'Tous décocher', + 'Edit tax rule taxes' => 'Modifier une règle de taxe', + 'Welcome' => 'Bienvenue', 'Thelia Back Office' => 'Thelia Back Office', 'Username' => 'Nom d\'utilisateur', + 'Loading Thelia lastest news...' => 'Chargement des dernières nouvelles sur Thelia', 'Related content' => 'Contenu associé', 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', @@ -203,9 +247,28 @@ return array( 'Content title' => 'Titre du contenu', 'Position' => 'Position', 'Delete this content' => 'Supprimer ce contenu', + 'This product contains no contents' => 'Ce produit ne contient aucun contenu', + 'Product accessories' => 'Accessoires produit', + 'Select a category...' => 'Sélectionnez une catégorie...', + 'Select a product...' => 'Sélectionnez un produit', + 'No categories found' => 'Aucune catégorie trouvée', + 'Accessory title' => 'Titre de l\'accessoire', + 'Delete this accessory' => 'Supprimer cet accessoire', + 'Additional categories' => 'Catégorie additionnelle', 'Category title' => 'Titre de la catégorie', + 'Remove related content' => 'Supprimer le contenu lié', + 'Do you really want to remove this related content from the product ?' => 'Voulez-vous vraiment enlever ce contenu lié de ce produit ?', + 'Remove an accessory' => 'Enlever un accessoire', + 'Do you really want to remove this accessory from the product ?' => 'Voulez-vous vraiment enlever cet accessoire de ce produit ?', + 'Remove from category' => 'Enlever de la catégorie', + 'Do you really want to remove the product from this category ?' => 'Voulez-vous vraiment enlever ce produit de cette catégorie ?', 'Enter new category position' => 'Classement de la catégorie ', 'Lire la suite' => 'Lire la suite', + 'Attribute title' => 'Titre de l\'attribut', + 'Delete this attribute' => 'Supprimer cet attribut', + 'This template contains no attributes' => 'Ce template ne contient aucun attribut', + 'Remove attribute' => 'Enlever l\'attribut', + 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', 'Label' => 'Libellé', 'Edit a language' => 'Modifier une langue', 'Edit this language' => 'Modifier cette langue', From 4909ecd78e97b602c4ebf5b7d4f7bfebbd705e88 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 28 Nov 2013 22:27:48 +0100 Subject: [PATCH 40/70] Translation : more fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 8b22e9a21..02f3803c2 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -54,6 +54,7 @@ return array( 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', 'Update this image' => 'Mettre à jour cette image', 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', + 'Additional Folders' => 'Dossier additionnels', 'Select a folder...' => 'Choisissez un dossier de contenu...', ' (default)' => '(défaut)', 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', @@ -64,6 +65,7 @@ return array( 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', 'Select a tax tule' => 'Sélectionnez une règle de taxes', 'Details' => 'Détails', + 'Product EAN Code' => 'Code EAN du produit', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', 'Current quantity' => 'Quantité actuelle', @@ -78,6 +80,7 @@ return array( 'Default' => 'Défaut', 'Sale' => 'Vente', 'New' => 'Nouveau', + 'Delete this combination' => 'Supprimer cette combinaison', 'Attribute' => 'Attribut', 'Select an attribute...' => 'Sélectionnez un attribut', 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', @@ -85,6 +88,8 @@ return array( 'Remove selected values' => 'Supprimer la valeur sélectionnée', 'Create a new combination' => 'Créer une nouvelle combinaison', 'Create this combination' => 'Créer cette combinaison', + 'Delete a combination' => 'Supprimer une combinaison', + 'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?', 'Combination reference' => 'Référence de la combinaison', 'Create combinations' => 'Créer des combinaisons', 'Company' => 'Entreprise', @@ -138,6 +143,7 @@ return array( 'Back' => 'Retour', 'Document informations' => 'Informations sur le document', 'File' => 'Fichier', + 'Post Scriptum' => 'Post-scriptum', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -284,9 +290,30 @@ return array( 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', 'Feature value' => 'Valeur de la caractéristique', 'Currencies' => 'Monnaie', + 'Update rates' => 'Mettre à jour les taux', + 'Add a new currency' => 'Ajouter une devise', + 'ISO 4217 Code' => 'Code ISO 4217', + 'Symbol' => 'Symbole', + 'Rate in €' => 'Taux en € ', + 'Change this currency' => 'Modifier cette devise', + 'Delete this currency' => 'Supprimer cette devise', + 'Currency name' => 'Nom de la devise', + 'ISO 4217 code' => 'Code ISO 4217', 'Code' => 'Code', + 'Currency symbol' => 'Symbole de la devise', + 'Currency rate' => 'Taux de la devise', + 'Create a new currency' => 'Créer une nouvelle devise', + 'Create this currency' => 'Créer cette devise', + 'Delete currency' => 'Supprimer la devise', + 'Edit an attribute' => 'Modifier un attribut', + 'Attributes' => 'Attributs', + 'Delete this value' => 'Supprimer cette valeur', + 'Create this value' => 'Créer cette valeur', 'Edit category' => 'Editer la catégorie', 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Edit previous category' => 'Modifier la catégorie précédente', + 'Preview category page' => 'Aperçu de la page catégorie', + 'Edit next category' => 'Modifier la catégorie suivante', 'Search' => 'Recherche', 'Customer' => 'Client', 'customer ref' => 'ref client', @@ -299,6 +326,9 @@ return array( 'Edit this order' => 'Editer cette commande ', 'Product' => 'Produit', 'Product title' => 'Titre du produit', + 'Edit folder' => 'Modifier le dossier', + 'Edit previous folder' => 'Modifier le dossier précèdent', + 'Edit next folder' => 'Modifier le dossier suivant', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', @@ -334,18 +364,42 @@ return array( 'Confirm changes' => 'Valider les modifications', 'Update coupon' => 'Mettre à jour le code', 'Please select another condition' => 'Merci de sélectionner une autre condition', + 'Add a new folder' => 'Ajouter une nouveau dossier', 'Online' => 'En ligne', + 'Add a new content' => 'Ajouter un nouveau contenu', + 'Edit this content' => 'Modifier ce contenu', + 'Create a new folder' => 'Ajouter un nouveau dossier', + 'Create this folder' => 'Créer ce dossier', + 'Delete folder' => 'Supprimer le dossier', + 'Delete content' => 'Supprimer le contenu', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', + 'Store' => 'Magasin', + 'Store configuration' => 'Configuration du magasin', + 'General' => 'Général', + 'Edit product' => 'Modifier le produit', + 'Edit previous product' => 'Modifier le produit précèdent', + 'Edit next product' => 'Modifier le produit suivant', + 'Edit a tax' => 'Modifier une taxe', + 'Coupon : ' => 'Code promo', 'Is enabled' => 'Est valide', 'Expiration date' => 'Date de fin', + 'days left' => 'jours restant', 'Usage left' => 'Utilisation restante', 'Unlimited' => 'Illimité', + 'May be cumulative' => 'Pourra être cumulé', + 'Can\'t be cumulative' => 'Ne pourra pas être cumulé', + 'Will remove postage' => 'Enlèvera les frais de port', + 'Won\'t remove postage' => 'N\'enlèvera pas les frais de port', + 'Will be available on special offers' => 'Sera disponible sur les offres spéciales', + 'Won\'t be available on special offers' => 'Ne sera pas disponible sur les offres spéciales', + 'Application field' => 'Champs d\'application', 'And' => 'Et', 'Edit' => 'Editer', + 'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?', 'Mailing templates' => 'Template e-mail', 'Code :' => 'Code', 'code' => 'code', From a801f9bfb814d57385ab673b8bf6d47812d92c28 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 28 Nov 2013 22:32:39 +0100 Subject: [PATCH 41/70] Merge --- templates/email/default/README | 0 templates/email/default/default-html-layout.tpl | 0 templates/email/default/default-text-layout.tpl | 0 templates/email/default/order_confirmation.html | 0 templates/email/default/order_confirmation.txt | 0 .../frontOffice/default/assets/img/email/header.jpg | Bin .../frontOffice/default/assets/img/email/logo.gif | Bin templates/frontOffice/default/email/order.html | 0 .../frontOffice/default/email/password-reset.html | 0 templates/frontOffice/default/email/password.html | 0 templates/frontOffice/default/email/register.html | 0 templates/frontOffice/default/email/template.tpl | 0 12 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 templates/email/default/README mode change 100644 => 100755 templates/email/default/default-html-layout.tpl mode change 100644 => 100755 templates/email/default/default-text-layout.tpl mode change 100644 => 100755 templates/email/default/order_confirmation.html mode change 100644 => 100755 templates/email/default/order_confirmation.txt mode change 100644 => 100755 templates/frontOffice/default/assets/img/email/header.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/email/logo.gif mode change 100644 => 100755 templates/frontOffice/default/email/order.html mode change 100644 => 100755 templates/frontOffice/default/email/password-reset.html mode change 100644 => 100755 templates/frontOffice/default/email/password.html mode change 100644 => 100755 templates/frontOffice/default/email/register.html mode change 100644 => 100755 templates/frontOffice/default/email/template.tpl diff --git a/templates/email/default/README b/templates/email/default/README old mode 100644 new mode 100755 diff --git a/templates/email/default/default-html-layout.tpl b/templates/email/default/default-html-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/email/default/default-text-layout.tpl b/templates/email/default/default-text-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/email/default/order_confirmation.html b/templates/email/default/order_confirmation.html old mode 100644 new mode 100755 diff --git a/templates/email/default/order_confirmation.txt b/templates/email/default/order_confirmation.txt old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/email/header.jpg b/templates/frontOffice/default/assets/img/email/header.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/email/logo.gif b/templates/frontOffice/default/assets/img/email/logo.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/order.html b/templates/frontOffice/default/email/order.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/password-reset.html b/templates/frontOffice/default/email/password-reset.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/password.html b/templates/frontOffice/default/email/password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/register.html b/templates/frontOffice/default/email/register.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/template.tpl b/templates/frontOffice/default/email/template.tpl old mode 100644 new mode 100755 From 0902a195cb1ca3b29364250a25352ec1b3245065 Mon Sep 17 00:00:00 2001 From: Nicolas Villa Date: Fri, 29 Nov 2013 06:38:13 +0100 Subject: [PATCH 42/70] Fixed some translations --- templates/frontOffice/default/I18n/fr_FR.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/frontOffice/default/I18n/fr_FR.php b/templates/frontOffice/default/I18n/fr_FR.php index 90c91b403..e41e55b7c 100755 --- a/templates/frontOffice/default/I18n/fr_FR.php +++ b/templates/frontOffice/default/I18n/fr_FR.php @@ -48,8 +48,8 @@ return array( 'Delete address' => 'Supprimer cette adresse', 'Delivery address' => 'Adresse de livraison', 'Delivery Information' => 'Informations de livraison', - 'Demo product description' => 'Example de description de produit', - 'Demo product title' => 'Example de titre', + 'Demo product description' => 'Exemple de description de produit', + 'Demo product title' => 'Exemple de titre', 'Description' => 'Description', 'Do you have an account?' => 'Avez-vous déjà un compte ?', 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', @@ -58,11 +58,11 @@ return array( 'Email address' => 'Adresse e-mail', 'Email Address' => 'Adresse e-mail', 'Follow us' => 'Suivez-nous', - 'Forgot your Password?' => 'Mot de passé oublié ?', + 'Forgot your Password?' => 'Mot de passe oublié ?', 'Free shipping' => 'Livraison gratuite', 'Go home' => 'Retour à l\'accueil', 'Grid' => 'Grille', - 'Home address' => 'Résidence principal', + 'Home address' => 'Résidence principale', 'Home' => 'Accueil', 'In Stock' => 'Disponible', 'instead of' => 'au lieu de', @@ -91,7 +91,7 @@ return array( 'Name descending' => 'Nom décroissant', 'Name' => 'Nom', 'Need help ?' => 'Besoin d\'aide? ', - 'Newsletter Subscription' => 'Inscription à la newslatter', + 'Newsletter Subscription' => 'Inscription à la newsletter', 'Newsletter' => 'Newsletter', 'Next product' => 'Produits suivants', 'Next Step' => 'Etape suivante', @@ -211,4 +211,4 @@ return array( 'Your Cart' => 'Votre panier', 'Your email address' => 'Votre adresse e-mail', 'Your order will be confirmed by us upon receipt of your payment.' => 'Votre commande sera confirmée à réception de votre pavement.', -); \ No newline at end of file +); From 02aa2809340a7fb3ad12c6f995ff6beb5365a7f3 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Tue, 3 Dec 2013 17:55:42 +0100 Subject: [PATCH 43/70] add module_include block in product-edit page --- templates/backOffice/default/product-edit.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/backOffice/default/product-edit.html b/templates/backOffice/default/product-edit.html index e05bc7434..36af15aa0 100644 --- a/templates/backOffice/default/product-edit.html +++ b/templates/backOffice/default/product-edit.html @@ -108,7 +108,7 @@
-
{intl l="Please wait, loading"}
+ {module_include location='product-edit'}
From 6f7f53dce449fad1e51893909d929d99f7d0a223 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:11:54 +0100 Subject: [PATCH 44/70] Translation : Fix bug preventing to see error message --- .../Thelia/Core/Template/TemplateHelper.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/lib/Thelia/Core/Template/TemplateHelper.php b/core/lib/Thelia/Core/Template/TemplateHelper.php index 4f33e1a42..9b93aae96 100644 --- a/core/lib/Thelia/Core/Template/TemplateHelper.php +++ b/core/lib/Thelia/Core/Template/TemplateHelper.php @@ -131,19 +131,19 @@ class TemplateHelper } /** - * Récursively examine files in a directory tree, and extract translatable strings. + * Recursively examine files in a directory tree, and extract translatable strings. * * Returns an array of translatable strings, each item having with the following structure: - * 'files' an arfray of file names in which the string appears, + * 'files' an array of file names in which the string appears, * 'text' the translatable text * 'translation' => the text translation, or an empty string if none available. * 'dollar' => true if the translatable text contains a $ * * @param string $directory the path to the directory to examine * @param string $walkMode type of file scanning: WALK_MODE_PHP or WALK_MODE_TEMPLATE - * @param Thelia\Core\Translation\Translator $translator the current translator + * @param \Thelia\Core\Translation\Translator $translator the current translator * @param string $currentLocale the current locale - * @param array $strings the liste of strings + * @param array $strings the list of strings * @throws \InvalidArgumentException if $walkMode contains an invalid value * @return number the total number of translatable texts */ @@ -258,15 +258,15 @@ class TemplateHelper fwrite($fp, ");\n"); - @fclose($fh); + @fclose($fp); } else { throw new \RuntimeException( - $this->getTranslator()->trans( - "Failed to open translation file %file. Please be sure that this file is writable by your Web server", - array('%file' => $file) - ) + Translator::getInstance()->trans( + 'Failed to open translation file %file. Please be sure that this file is writable by your Web server', + array('%file' => $file) + ) ); } } From 985c05a4a8466f67e7cf4069f537e5ec08c25631 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:24:37 +0100 Subject: [PATCH 45/70] Merge master --- templates/backOffice/default/admin-layout.tpl | 0 templates/backOffice/default/administrators.html | 0 .../default/ajax/language-update-modal.html | 0 templates/backOffice/default/ajax/logger.html | 0 .../default/ajax/product-attributes-tab.html | 0 .../default/ajax/product-related-tab.html | 0 .../default/ajax/template-attribute-list.html | 0 .../default/ajax/template-feature-list.html | 0 .../backOffice/default/assets/img/ajax-loader.gif | Bin templates/backOffice/default/assets/img/bg.jpg | Bin .../backOffice/default/assets/img/deconnexion.png | Bin templates/backOffice/default/assets/img/header.jpg | Bin .../backOffice/default/assets/img/logo-light.png | Bin templates/backOffice/default/assets/img/logo.png | Bin .../default/assets/img/top-bar-logo-save.png | Bin .../backOffice/default/assets/img/top-bar-logo.png | Bin templates/backOffice/default/assets/img/top.jpg | Bin .../js/bootstrap-editable/bootstrap-editable.js | 0 .../assets/js/bootstrap-select/bootstrap-select.js | 0 .../assets/js/bootstrap-switch/bootstrap-switch.js | 0 .../default/assets/js/bootstrap/bootstrap.js | 0 templates/backOffice/default/assets/js/coupon.js | 0 .../backOffice/default/assets/js/document-upload.js | 0 templates/backOffice/default/assets/js/dropzone.js | 0 .../backOffice/default/assets/js/image-upload.js | 0 .../default/assets/js/jqplot/jquery.jqplot.min.js | 0 .../plugins/jqplot.BezierCurveRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.barRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.blockRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.bubbleRenderer.min.js | 0 .../plugins/jqplot.canvasAxisLabelRenderer.min.js | 0 .../plugins/jqplot.canvasAxisTickRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.canvasOverlay.min.js | 0 .../jqplot/plugins/jqplot.canvasTextRenderer.min.js | 0 .../plugins/jqplot.categoryAxisRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.ciParser.min.js | 0 .../assets/js/jqplot/plugins/jqplot.cursor.min.js | 0 .../jqplot/plugins/jqplot.dateAxisRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.donutRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.dragable.min.js | 0 .../plugins/jqplot.enhancedLegendRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.funnelRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.highlighter.min.js | 0 .../assets/js/jqplot/plugins/jqplot.json2.min.js | 0 .../js/jqplot/plugins/jqplot.logAxisRenderer.min.js | 0 .../jqplot/plugins/jqplot.mekkoAxisRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.mekkoRenderer.min.js | 0 .../jqplot/plugins/jqplot.meterGaugeRenderer.min.js | 0 .../assets/js/jqplot/plugins/jqplot.mobile.min.js | 0 .../js/jqplot/plugins/jqplot.ohlcRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pieRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pointLabels.min.js | 0 .../plugins/jqplot.pyramidAxisRenderer.min.js | 0 .../plugins/jqplot.pyramidGridRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.pyramidRenderer.min.js | 0 .../js/jqplot/plugins/jqplot.trendline.min.js | 0 .../default/assets/js/jquery.typewatch.js | 0 .../i18n/jquery.ui.datepicker-es_ES.js | 0 .../i18n/jquery.ui.datepicker-fr_FR.js | 0 .../i18n/jquery.ui.datepicker-it_IT.js.js | 0 .../jquery.ui/jquery.ui.datepicker/i18n/readme.txt | 0 .../jquery.ui.datepicker/jquery.ui.datepicker.css | 0 .../jquery.ui.datepicker/jquery.ui.datepicker.js | 0 .../default/assets/js/jquery.ui/jquery.ui.theme.css | 0 templates/backOffice/default/assets/js/json2.js | 0 .../backOffice/default/assets/js/libs/jquery.js | 0 templates/backOffice/default/assets/js/main.js | 0 .../assets/js/tablesorter/jquery.metadata.js | 0 .../assets/js/tablesorter/jquery.tablesorter.min.js | 0 .../jquery.tablesorter.widgets-filter-formatter.js | 0 .../js/tablesorter/jquery.tablesorter.widgets.js | 0 templates/backOffice/default/assets/less/main.less | 0 .../assets/less/thelia/bootstrap-editable.less | 0 .../assets/less/thelia/bootstrap-select.less | 0 .../assets/less/thelia/bootstrap-switch.less | 0 .../default/assets/less/thelia/dropzone.less | 0 .../backOffice/default/assets/less/thelia/grid.less | 0 .../default/assets/less/thelia/jqplot.less | 0 .../default/assets/less/thelia/logger.less | 0 .../default/assets/less/thelia/thelia.less | 0 .../default/assets/less/thelia/wizard.less | 0 templates/backOffice/default/attribute-edit.html | 0 templates/backOffice/default/attributes.html | 0 templates/backOffice/default/config-store.html | 0 templates/backOffice/default/configs/variables.conf | 0 templates/backOffice/default/configuration.html | 0 templates/backOffice/default/content-edit.html | 0 templates/backOffice/default/countries.html | 0 templates/backOffice/default/country-edit.html | 0 .../default/coupon/condition-input-ajax.html | 0 templates/backOffice/default/coupon/conditions.html | 0 templates/backOffice/default/coupon/form.html | 0 templates/backOffice/default/currencies.html | 0 templates/backOffice/default/currency-edit.html | 0 templates/backOffice/default/customer-edit.html | 0 templates/backOffice/default/customers.html | 0 templates/backOffice/default/document-edit.html | 0 templates/backOffice/default/feature-edit.html | 0 templates/backOffice/default/features.html | 0 templates/backOffice/default/folder-edit.html | 0 templates/backOffice/default/folders.html | 0 templates/backOffice/default/image-edit.html | 0 .../includes/admin-utilities-position-block.html | 0 .../admin-utilities-sortable-column-header.html | 0 .../default/includes/catalog-breadcrumb.html | 0 .../default/includes/confirmation-modal.html | 0 .../default/includes/content-folder-management.html | 0 .../includes/customer_address_form_fields.html | 0 .../default/includes/document-upload-form.html | 0 .../default/includes/document-upload-list-ajax.html | 0 .../default/includes/folder-breadcrumb.html | 0 .../default/includes/generic-confirm-dialog.html | 0 .../default/includes/generic-js-dialog.html | 0 .../default/includes/image-upload-form.html | 0 .../default/includes/image-upload-list-ajax.html | 0 .../backOffice/default/includes/module-block.html | 0 .../backOffice/default/includes/notifications.html | 0 .../default/includes/product-details-tab.html | 0 .../default/includes/product-general-tab.html | 0 .../includes/standard-description-form-fields.html | 0 templates/backOffice/default/languages.html | 0 templates/backOffice/default/mailing-system.html | 0 templates/backOffice/default/message-edit.html | 0 templates/backOffice/default/messages.html | 0 templates/backOffice/default/module-configure.html | 0 templates/backOffice/default/module-edit.html | 0 templates/backOffice/default/modules.html | 0 templates/backOffice/default/order-edit.html | 0 templates/backOffice/default/orders.html | 0 templates/backOffice/default/product-edit.html | 0 templates/backOffice/default/profile-edit.html | 0 templates/backOffice/default/profiles.html | 0 templates/backOffice/default/search.html | 0 .../default/shipping-configuration-edit.html | 0 .../backOffice/default/shipping-configuration.html | 0 .../backOffice/default/shipping-zones-edit.html | 0 templates/backOffice/default/shipping-zones.html | 0 templates/backOffice/default/system-logs.html | 0 templates/backOffice/default/tax-edit.html | 0 templates/backOffice/default/tax-rule-edit.html | 0 templates/backOffice/default/taxes-rules.html | 0 templates/backOffice/default/template-edit.html | 0 templates/backOffice/default/templates.html | 0 templates/backOffice/default/translations.html | 0 templates/backOffice/default/variable-edit.html | 0 templates/backOffice/default/variables.html | 0 templates/frontOffice/default/404.html | 0 templates/frontOffice/default/account-password.html | 0 templates/frontOffice/default/account-update.html | 0 templates/frontOffice/default/account.html | 0 templates/frontOffice/default/address-update.html | 0 templates/frontOffice/default/address.html | 0 .../frontOffice/default/assets/img/218x146.png | Bin .../frontOffice/default/assets/img/280x196.png | Bin .../frontOffice/default/assets/img/700x320.png | Bin .../frontOffice/default/assets/img/ajax-loader.gif | Bin .../default/assets/img/carousel/1200x390.png | Bin .../default/assets/img/carousel/slider1.jpg | Bin .../default/assets/img/carousel/slider2.jpg | Bin .../default/assets/img/carousel/slider3.jpg | Bin .../frontOffice/default/assets/img/favicon.ico | Bin .../frontOffice/default/assets/img/favicon.png | Bin templates/frontOffice/default/assets/img/logo.gif | Bin .../default/assets/img/payment/american-express.png | Bin .../default/assets/img/payment/cheque.png | Bin .../default/assets/img/payment/kwixo.png | Bin .../default/assets/img/payment/mastercard.png | Bin .../frontOffice/default/assets/img/payment/visa.png | Bin .../default/assets/img/product/1/118x85.png | Bin .../default/assets/img/product/1/560x445.png | Bin .../frontOffice/default/assets/js/libs/jquery.js | 0 .../default/assets/js/plugins/bootbox/bootbox.js | 0 .../assets/js/plugins/bootbox/bootbox.min.js | 0 templates/frontOffice/default/assets/js/script.js | 0 .../default/assets/less/fontawesome/bootstrap.less | 0 .../default/assets/less/fontawesome/core.less | 0 .../default/assets/less/fontawesome/extras.less | 0 .../assets/less/fontawesome/font-awesome-ie7.less | 0 .../assets/less/fontawesome/font-awesome.less | 0 .../default/assets/less/fontawesome/icons.less | 0 .../default/assets/less/fontawesome/mixins.less | 0 .../default/assets/less/fontawesome/path.less | 0 .../default/assets/less/fontawesome/variables.less | 0 .../default/assets/less/thelia/account.less | 0 .../default/assets/less/thelia/buttons.less | 0 .../default/assets/less/thelia/cart.less | 0 .../default/assets/less/thelia/category.less | 0 .../default/assets/less/thelia/checkout.less | 0 templates/frontOffice/default/cart.html | 0 templates/frontOffice/default/category.html | 0 templates/frontOffice/default/contact-success.html | 0 templates/frontOffice/default/contact.html | 0 templates/frontOffice/default/content.html | 0 templates/frontOffice/default/currency.html | 0 .../frontOffice/default/includes/addedToCart.html | 0 .../default/includes/asides/articles.html | 0 .../default/includes/categories-filters.html | 0 templates/frontOffice/default/includes/menu.html | 0 .../frontOffice/default/includes/mini-cart.html | 0 .../frontOffice/default/includes/product-empty.html | 0 .../default/includes/single-product.html | 0 templates/frontOffice/default/includes/toolbar.html | 0 templates/frontOffice/default/index.html | 0 templates/frontOffice/default/language.html | 0 templates/frontOffice/default/layout.tpl | 0 templates/frontOffice/default/login.html | 0 templates/frontOffice/default/misc/breadcrumb.tpl | 0 .../frontOffice/default/misc/checkout-progress.tpl | 0 templates/frontOffice/default/modal-address.html | 0 templates/frontOffice/default/newsletter.html | 0 templates/frontOffice/default/order-delivery.html | 0 templates/frontOffice/default/order-invoice.html | 0 templates/frontOffice/default/order-placed.html | 0 templates/frontOffice/default/password.html | 0 templates/frontOffice/default/product.html | 0 templates/frontOffice/default/register.html | 0 templates/frontOffice/default/search.html | 0 templates/frontOffice/default/view_all.html | 0 templates/pdf/default/I18n/en_US.php | 0 templates/pdf/default/I18n/es_ES.php | 0 templates/pdf/default/I18n/fr_FR.php | 0 templates/pdf/default/I18n/it_IT.php | 0 templates/pdf/default/delivery.html | 0 templates/pdf/default/invoice.html | 0 web/robots.txt | 0 225 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 templates/backOffice/default/admin-layout.tpl mode change 100644 => 100755 templates/backOffice/default/administrators.html mode change 100644 => 100755 templates/backOffice/default/ajax/language-update-modal.html mode change 100644 => 100755 templates/backOffice/default/ajax/logger.html mode change 100644 => 100755 templates/backOffice/default/ajax/product-attributes-tab.html mode change 100644 => 100755 templates/backOffice/default/ajax/product-related-tab.html mode change 100644 => 100755 templates/backOffice/default/ajax/template-attribute-list.html mode change 100644 => 100755 templates/backOffice/default/ajax/template-feature-list.html mode change 100644 => 100755 templates/backOffice/default/assets/img/ajax-loader.gif mode change 100644 => 100755 templates/backOffice/default/assets/img/bg.jpg mode change 100644 => 100755 templates/backOffice/default/assets/img/deconnexion.png mode change 100644 => 100755 templates/backOffice/default/assets/img/header.jpg mode change 100644 => 100755 templates/backOffice/default/assets/img/logo-light.png mode change 100644 => 100755 templates/backOffice/default/assets/img/logo.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top-bar-logo-save.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top-bar-logo.png mode change 100644 => 100755 templates/backOffice/default/assets/img/top.jpg mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js mode change 100644 => 100755 templates/backOffice/default/assets/js/bootstrap/bootstrap.js mode change 100644 => 100755 templates/backOffice/default/assets/js/coupon.js mode change 100644 => 100755 templates/backOffice/default/assets/js/document-upload.js mode change 100644 => 100755 templates/backOffice/default/assets/js/dropzone.js mode change 100644 => 100755 templates/backOffice/default/assets/js/image-upload.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.typewatch.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js mode change 100644 => 100755 templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css mode change 100644 => 100755 templates/backOffice/default/assets/js/json2.js mode change 100644 => 100755 templates/backOffice/default/assets/js/libs/jquery.js mode change 100644 => 100755 templates/backOffice/default/assets/js/main.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js mode change 100644 => 100755 templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js mode change 100644 => 100755 templates/backOffice/default/assets/less/main.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-editable.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-select.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/bootstrap-switch.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/dropzone.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/grid.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/jqplot.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/logger.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/thelia.less mode change 100644 => 100755 templates/backOffice/default/assets/less/thelia/wizard.less mode change 100644 => 100755 templates/backOffice/default/attribute-edit.html mode change 100644 => 100755 templates/backOffice/default/attributes.html mode change 100644 => 100755 templates/backOffice/default/config-store.html mode change 100644 => 100755 templates/backOffice/default/configs/variables.conf mode change 100644 => 100755 templates/backOffice/default/configuration.html mode change 100644 => 100755 templates/backOffice/default/content-edit.html mode change 100644 => 100755 templates/backOffice/default/countries.html mode change 100644 => 100755 templates/backOffice/default/country-edit.html mode change 100644 => 100755 templates/backOffice/default/coupon/condition-input-ajax.html mode change 100644 => 100755 templates/backOffice/default/coupon/conditions.html mode change 100644 => 100755 templates/backOffice/default/coupon/form.html mode change 100644 => 100755 templates/backOffice/default/currencies.html mode change 100644 => 100755 templates/backOffice/default/currency-edit.html mode change 100644 => 100755 templates/backOffice/default/customer-edit.html mode change 100644 => 100755 templates/backOffice/default/customers.html mode change 100644 => 100755 templates/backOffice/default/document-edit.html mode change 100644 => 100755 templates/backOffice/default/feature-edit.html mode change 100644 => 100755 templates/backOffice/default/features.html mode change 100644 => 100755 templates/backOffice/default/folder-edit.html mode change 100644 => 100755 templates/backOffice/default/folders.html mode change 100644 => 100755 templates/backOffice/default/image-edit.html mode change 100644 => 100755 templates/backOffice/default/includes/admin-utilities-position-block.html mode change 100644 => 100755 templates/backOffice/default/includes/admin-utilities-sortable-column-header.html mode change 100644 => 100755 templates/backOffice/default/includes/catalog-breadcrumb.html mode change 100644 => 100755 templates/backOffice/default/includes/confirmation-modal.html mode change 100644 => 100755 templates/backOffice/default/includes/content-folder-management.html mode change 100644 => 100755 templates/backOffice/default/includes/customer_address_form_fields.html mode change 100644 => 100755 templates/backOffice/default/includes/document-upload-form.html mode change 100644 => 100755 templates/backOffice/default/includes/document-upload-list-ajax.html mode change 100644 => 100755 templates/backOffice/default/includes/folder-breadcrumb.html mode change 100644 => 100755 templates/backOffice/default/includes/generic-confirm-dialog.html mode change 100644 => 100755 templates/backOffice/default/includes/generic-js-dialog.html mode change 100644 => 100755 templates/backOffice/default/includes/image-upload-form.html mode change 100644 => 100755 templates/backOffice/default/includes/image-upload-list-ajax.html mode change 100644 => 100755 templates/backOffice/default/includes/module-block.html mode change 100644 => 100755 templates/backOffice/default/includes/notifications.html mode change 100644 => 100755 templates/backOffice/default/includes/product-details-tab.html mode change 100644 => 100755 templates/backOffice/default/includes/product-general-tab.html mode change 100644 => 100755 templates/backOffice/default/includes/standard-description-form-fields.html mode change 100644 => 100755 templates/backOffice/default/languages.html mode change 100644 => 100755 templates/backOffice/default/mailing-system.html mode change 100644 => 100755 templates/backOffice/default/message-edit.html mode change 100644 => 100755 templates/backOffice/default/messages.html mode change 100644 => 100755 templates/backOffice/default/module-configure.html mode change 100644 => 100755 templates/backOffice/default/module-edit.html mode change 100644 => 100755 templates/backOffice/default/modules.html mode change 100644 => 100755 templates/backOffice/default/order-edit.html mode change 100644 => 100755 templates/backOffice/default/orders.html mode change 100644 => 100755 templates/backOffice/default/product-edit.html mode change 100644 => 100755 templates/backOffice/default/profile-edit.html mode change 100644 => 100755 templates/backOffice/default/profiles.html mode change 100644 => 100755 templates/backOffice/default/search.html mode change 100644 => 100755 templates/backOffice/default/shipping-configuration-edit.html mode change 100644 => 100755 templates/backOffice/default/shipping-configuration.html mode change 100644 => 100755 templates/backOffice/default/shipping-zones-edit.html mode change 100644 => 100755 templates/backOffice/default/shipping-zones.html mode change 100644 => 100755 templates/backOffice/default/system-logs.html mode change 100644 => 100755 templates/backOffice/default/tax-edit.html mode change 100644 => 100755 templates/backOffice/default/tax-rule-edit.html mode change 100644 => 100755 templates/backOffice/default/taxes-rules.html mode change 100644 => 100755 templates/backOffice/default/template-edit.html mode change 100644 => 100755 templates/backOffice/default/templates.html mode change 100644 => 100755 templates/backOffice/default/translations.html mode change 100644 => 100755 templates/backOffice/default/variable-edit.html mode change 100644 => 100755 templates/backOffice/default/variables.html mode change 100644 => 100755 templates/frontOffice/default/404.html mode change 100644 => 100755 templates/frontOffice/default/account-password.html mode change 100644 => 100755 templates/frontOffice/default/account-update.html mode change 100644 => 100755 templates/frontOffice/default/account.html mode change 100644 => 100755 templates/frontOffice/default/address-update.html mode change 100644 => 100755 templates/frontOffice/default/address.html mode change 100644 => 100755 templates/frontOffice/default/assets/img/218x146.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/280x196.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/700x320.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/ajax-loader.gif mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/1200x390.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider1.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider2.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/carousel/slider3.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/favicon.ico mode change 100644 => 100755 templates/frontOffice/default/assets/img/favicon.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/logo.gif mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/american-express.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/cheque.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/kwixo.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/mastercard.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/payment/visa.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/product/1/118x85.png mode change 100644 => 100755 templates/frontOffice/default/assets/img/product/1/560x445.png mode change 100644 => 100755 templates/frontOffice/default/assets/js/libs/jquery.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js mode change 100644 => 100755 templates/frontOffice/default/assets/js/script.js mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/bootstrap.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/core.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/extras.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/font-awesome.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/icons.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/mixins.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/path.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/fontawesome/variables.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/account.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/buttons.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/cart.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/category.less mode change 100644 => 100755 templates/frontOffice/default/assets/less/thelia/checkout.less mode change 100644 => 100755 templates/frontOffice/default/cart.html mode change 100644 => 100755 templates/frontOffice/default/category.html mode change 100644 => 100755 templates/frontOffice/default/contact-success.html mode change 100644 => 100755 templates/frontOffice/default/contact.html mode change 100644 => 100755 templates/frontOffice/default/content.html mode change 100644 => 100755 templates/frontOffice/default/currency.html mode change 100644 => 100755 templates/frontOffice/default/includes/addedToCart.html mode change 100644 => 100755 templates/frontOffice/default/includes/asides/articles.html mode change 100644 => 100755 templates/frontOffice/default/includes/categories-filters.html mode change 100644 => 100755 templates/frontOffice/default/includes/menu.html mode change 100644 => 100755 templates/frontOffice/default/includes/mini-cart.html mode change 100644 => 100755 templates/frontOffice/default/includes/product-empty.html mode change 100644 => 100755 templates/frontOffice/default/includes/single-product.html mode change 100644 => 100755 templates/frontOffice/default/includes/toolbar.html mode change 100644 => 100755 templates/frontOffice/default/index.html mode change 100644 => 100755 templates/frontOffice/default/language.html mode change 100644 => 100755 templates/frontOffice/default/layout.tpl mode change 100644 => 100755 templates/frontOffice/default/login.html mode change 100644 => 100755 templates/frontOffice/default/misc/breadcrumb.tpl mode change 100644 => 100755 templates/frontOffice/default/misc/checkout-progress.tpl mode change 100644 => 100755 templates/frontOffice/default/modal-address.html mode change 100644 => 100755 templates/frontOffice/default/newsletter.html mode change 100644 => 100755 templates/frontOffice/default/order-delivery.html mode change 100644 => 100755 templates/frontOffice/default/order-invoice.html mode change 100644 => 100755 templates/frontOffice/default/order-placed.html mode change 100644 => 100755 templates/frontOffice/default/password.html mode change 100644 => 100755 templates/frontOffice/default/product.html mode change 100644 => 100755 templates/frontOffice/default/register.html mode change 100644 => 100755 templates/frontOffice/default/search.html mode change 100644 => 100755 templates/frontOffice/default/view_all.html mode change 100644 => 100755 templates/pdf/default/I18n/en_US.php mode change 100644 => 100755 templates/pdf/default/I18n/es_ES.php mode change 100644 => 100755 templates/pdf/default/I18n/fr_FR.php mode change 100644 => 100755 templates/pdf/default/I18n/it_IT.php mode change 100644 => 100755 templates/pdf/default/delivery.html mode change 100644 => 100755 templates/pdf/default/invoice.html mode change 100644 => 100755 web/robots.txt diff --git a/templates/backOffice/default/admin-layout.tpl b/templates/backOffice/default/admin-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/administrators.html b/templates/backOffice/default/administrators.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/language-update-modal.html b/templates/backOffice/default/ajax/language-update-modal.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/logger.html b/templates/backOffice/default/ajax/logger.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/product-attributes-tab.html b/templates/backOffice/default/ajax/product-attributes-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/product-related-tab.html b/templates/backOffice/default/ajax/product-related-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/template-attribute-list.html b/templates/backOffice/default/ajax/template-attribute-list.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/ajax/template-feature-list.html b/templates/backOffice/default/ajax/template-feature-list.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/ajax-loader.gif b/templates/backOffice/default/assets/img/ajax-loader.gif old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/bg.jpg b/templates/backOffice/default/assets/img/bg.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/deconnexion.png b/templates/backOffice/default/assets/img/deconnexion.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/header.jpg b/templates/backOffice/default/assets/img/header.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/logo-light.png b/templates/backOffice/default/assets/img/logo-light.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/logo.png b/templates/backOffice/default/assets/img/logo.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top-bar-logo-save.png b/templates/backOffice/default/assets/img/top-bar-logo-save.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top-bar-logo.png b/templates/backOffice/default/assets/img/top-bar-logo.png old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/img/top.jpg b/templates/backOffice/default/assets/img/top.jpg old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js b/templates/backOffice/default/assets/js/bootstrap-editable/bootstrap-editable.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js b/templates/backOffice/default/assets/js/bootstrap-select/bootstrap-select.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js b/templates/backOffice/default/assets/js/bootstrap-switch/bootstrap-switch.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/bootstrap/bootstrap.js b/templates/backOffice/default/assets/js/bootstrap/bootstrap.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/coupon.js b/templates/backOffice/default/assets/js/coupon.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/document-upload.js b/templates/backOffice/default/assets/js/document-upload.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/dropzone.js b/templates/backOffice/default/assets/js/dropzone.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/image-upload.js b/templates/backOffice/default/assets/js/image-upload.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js b/templates/backOffice/default/assets/js/jqplot/jquery.jqplot.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.barRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.blockRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.bubbleRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasOverlay.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ciParser.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.cursor.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.donutRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.dragable.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.funnelRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.highlighter.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.json2.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.logAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mekkoRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.mobile.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.ohlcRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pieRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pointLabels.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.pyramidRenderer.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js b/templates/backOffice/default/assets/js/jqplot/plugins/jqplot.trendline.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.typewatch.js b/templates/backOffice/default/assets/js/jquery.typewatch.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-es_ES.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-fr_FR.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/jquery.ui.datepicker-it_IT.js.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/i18n/readme.txt old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.css old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.datepicker/jquery.ui.datepicker.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css b/templates/backOffice/default/assets/js/jquery.ui/jquery.ui.theme.css old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/json2.js b/templates/backOffice/default/assets/js/json2.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/libs/jquery.js b/templates/backOffice/default/assets/js/libs/jquery.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/main.js b/templates/backOffice/default/assets/js/main.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js b/templates/backOffice/default/assets/js/tablesorter/jquery.metadata.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.min.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets-filter-formatter.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js b/templates/backOffice/default/assets/js/tablesorter/jquery.tablesorter.widgets.js old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/main.less b/templates/backOffice/default/assets/less/main.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-editable.less b/templates/backOffice/default/assets/less/thelia/bootstrap-editable.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-select.less b/templates/backOffice/default/assets/less/thelia/bootstrap-select.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/bootstrap-switch.less b/templates/backOffice/default/assets/less/thelia/bootstrap-switch.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/dropzone.less b/templates/backOffice/default/assets/less/thelia/dropzone.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/grid.less b/templates/backOffice/default/assets/less/thelia/grid.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/jqplot.less b/templates/backOffice/default/assets/less/thelia/jqplot.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/logger.less b/templates/backOffice/default/assets/less/thelia/logger.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/thelia.less b/templates/backOffice/default/assets/less/thelia/thelia.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/assets/less/thelia/wizard.less b/templates/backOffice/default/assets/less/thelia/wizard.less old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/attribute-edit.html b/templates/backOffice/default/attribute-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/attributes.html b/templates/backOffice/default/attributes.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/config-store.html b/templates/backOffice/default/config-store.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/configs/variables.conf b/templates/backOffice/default/configs/variables.conf old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/configuration.html b/templates/backOffice/default/configuration.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/content-edit.html b/templates/backOffice/default/content-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/countries.html b/templates/backOffice/default/countries.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/country-edit.html b/templates/backOffice/default/country-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/condition-input-ajax.html b/templates/backOffice/default/coupon/condition-input-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/conditions.html b/templates/backOffice/default/coupon/conditions.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/coupon/form.html b/templates/backOffice/default/coupon/form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/currencies.html b/templates/backOffice/default/currencies.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/currency-edit.html b/templates/backOffice/default/currency-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/customer-edit.html b/templates/backOffice/default/customer-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/customers.html b/templates/backOffice/default/customers.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/document-edit.html b/templates/backOffice/default/document-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/feature-edit.html b/templates/backOffice/default/feature-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/features.html b/templates/backOffice/default/features.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/folder-edit.html b/templates/backOffice/default/folder-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/folders.html b/templates/backOffice/default/folders.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/image-edit.html b/templates/backOffice/default/image-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/admin-utilities-position-block.html b/templates/backOffice/default/includes/admin-utilities-position-block.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/admin-utilities-sortable-column-header.html b/templates/backOffice/default/includes/admin-utilities-sortable-column-header.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/catalog-breadcrumb.html b/templates/backOffice/default/includes/catalog-breadcrumb.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/confirmation-modal.html b/templates/backOffice/default/includes/confirmation-modal.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/content-folder-management.html b/templates/backOffice/default/includes/content-folder-management.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/customer_address_form_fields.html b/templates/backOffice/default/includes/customer_address_form_fields.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/document-upload-form.html b/templates/backOffice/default/includes/document-upload-form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/document-upload-list-ajax.html b/templates/backOffice/default/includes/document-upload-list-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/folder-breadcrumb.html b/templates/backOffice/default/includes/folder-breadcrumb.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/generic-confirm-dialog.html b/templates/backOffice/default/includes/generic-confirm-dialog.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/generic-js-dialog.html b/templates/backOffice/default/includes/generic-js-dialog.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/image-upload-form.html b/templates/backOffice/default/includes/image-upload-form.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/image-upload-list-ajax.html b/templates/backOffice/default/includes/image-upload-list-ajax.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/module-block.html b/templates/backOffice/default/includes/module-block.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/notifications.html b/templates/backOffice/default/includes/notifications.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/product-details-tab.html b/templates/backOffice/default/includes/product-details-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/product-general-tab.html b/templates/backOffice/default/includes/product-general-tab.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/includes/standard-description-form-fields.html b/templates/backOffice/default/includes/standard-description-form-fields.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/languages.html b/templates/backOffice/default/languages.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/mailing-system.html b/templates/backOffice/default/mailing-system.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/message-edit.html b/templates/backOffice/default/message-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/messages.html b/templates/backOffice/default/messages.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/module-configure.html b/templates/backOffice/default/module-configure.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/module-edit.html b/templates/backOffice/default/module-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/modules.html b/templates/backOffice/default/modules.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/order-edit.html b/templates/backOffice/default/order-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/orders.html b/templates/backOffice/default/orders.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/product-edit.html b/templates/backOffice/default/product-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/profile-edit.html b/templates/backOffice/default/profile-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/profiles.html b/templates/backOffice/default/profiles.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/search.html b/templates/backOffice/default/search.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-configuration-edit.html b/templates/backOffice/default/shipping-configuration-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-configuration.html b/templates/backOffice/default/shipping-configuration.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-zones-edit.html b/templates/backOffice/default/shipping-zones-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/shipping-zones.html b/templates/backOffice/default/shipping-zones.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/system-logs.html b/templates/backOffice/default/system-logs.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/tax-edit.html b/templates/backOffice/default/tax-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/tax-rule-edit.html b/templates/backOffice/default/tax-rule-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/taxes-rules.html b/templates/backOffice/default/taxes-rules.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/template-edit.html b/templates/backOffice/default/template-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/templates.html b/templates/backOffice/default/templates.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/translations.html b/templates/backOffice/default/translations.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/variable-edit.html b/templates/backOffice/default/variable-edit.html old mode 100644 new mode 100755 diff --git a/templates/backOffice/default/variables.html b/templates/backOffice/default/variables.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/404.html b/templates/frontOffice/default/404.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account-password.html b/templates/frontOffice/default/account-password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account-update.html b/templates/frontOffice/default/account-update.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/account.html b/templates/frontOffice/default/account.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/address-update.html b/templates/frontOffice/default/address-update.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/address.html b/templates/frontOffice/default/address.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/218x146.png b/templates/frontOffice/default/assets/img/218x146.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/280x196.png b/templates/frontOffice/default/assets/img/280x196.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/700x320.png b/templates/frontOffice/default/assets/img/700x320.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/ajax-loader.gif b/templates/frontOffice/default/assets/img/ajax-loader.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/1200x390.png b/templates/frontOffice/default/assets/img/carousel/1200x390.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider1.jpg b/templates/frontOffice/default/assets/img/carousel/slider1.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider2.jpg b/templates/frontOffice/default/assets/img/carousel/slider2.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/carousel/slider3.jpg b/templates/frontOffice/default/assets/img/carousel/slider3.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/favicon.ico b/templates/frontOffice/default/assets/img/favicon.ico old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/favicon.png b/templates/frontOffice/default/assets/img/favicon.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/logo.gif b/templates/frontOffice/default/assets/img/logo.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/american-express.png b/templates/frontOffice/default/assets/img/payment/american-express.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/cheque.png b/templates/frontOffice/default/assets/img/payment/cheque.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/kwixo.png b/templates/frontOffice/default/assets/img/payment/kwixo.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/mastercard.png b/templates/frontOffice/default/assets/img/payment/mastercard.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/payment/visa.png b/templates/frontOffice/default/assets/img/payment/visa.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/product/1/118x85.png b/templates/frontOffice/default/assets/img/product/1/118x85.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/product/1/560x445.png b/templates/frontOffice/default/assets/img/product/1/560x445.png old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/libs/jquery.js b/templates/frontOffice/default/assets/js/libs/jquery.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js b/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js b/templates/frontOffice/default/assets/js/plugins/bootbox/bootbox.min.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/js/script.js b/templates/frontOffice/default/assets/js/script.js old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/bootstrap.less b/templates/frontOffice/default/assets/less/fontawesome/bootstrap.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/core.less b/templates/frontOffice/default/assets/less/fontawesome/core.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/extras.less b/templates/frontOffice/default/assets/less/fontawesome/extras.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less b/templates/frontOffice/default/assets/less/fontawesome/font-awesome-ie7.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/font-awesome.less b/templates/frontOffice/default/assets/less/fontawesome/font-awesome.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/icons.less b/templates/frontOffice/default/assets/less/fontawesome/icons.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/mixins.less b/templates/frontOffice/default/assets/less/fontawesome/mixins.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/path.less b/templates/frontOffice/default/assets/less/fontawesome/path.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/fontawesome/variables.less b/templates/frontOffice/default/assets/less/fontawesome/variables.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/account.less b/templates/frontOffice/default/assets/less/thelia/account.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/buttons.less b/templates/frontOffice/default/assets/less/thelia/buttons.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/cart.less b/templates/frontOffice/default/assets/less/thelia/cart.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/category.less b/templates/frontOffice/default/assets/less/thelia/category.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/less/thelia/checkout.less b/templates/frontOffice/default/assets/less/thelia/checkout.less old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/cart.html b/templates/frontOffice/default/cart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/category.html b/templates/frontOffice/default/category.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/contact-success.html b/templates/frontOffice/default/contact-success.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/contact.html b/templates/frontOffice/default/contact.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/content.html b/templates/frontOffice/default/content.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/currency.html b/templates/frontOffice/default/currency.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/addedToCart.html b/templates/frontOffice/default/includes/addedToCart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/asides/articles.html b/templates/frontOffice/default/includes/asides/articles.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/categories-filters.html b/templates/frontOffice/default/includes/categories-filters.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/menu.html b/templates/frontOffice/default/includes/menu.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/mini-cart.html b/templates/frontOffice/default/includes/mini-cart.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/product-empty.html b/templates/frontOffice/default/includes/product-empty.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/single-product.html b/templates/frontOffice/default/includes/single-product.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/includes/toolbar.html b/templates/frontOffice/default/includes/toolbar.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/index.html b/templates/frontOffice/default/index.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/language.html b/templates/frontOffice/default/language.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/layout.tpl b/templates/frontOffice/default/layout.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/login.html b/templates/frontOffice/default/login.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/misc/breadcrumb.tpl b/templates/frontOffice/default/misc/breadcrumb.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/misc/checkout-progress.tpl b/templates/frontOffice/default/misc/checkout-progress.tpl old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/modal-address.html b/templates/frontOffice/default/modal-address.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/newsletter.html b/templates/frontOffice/default/newsletter.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-delivery.html b/templates/frontOffice/default/order-delivery.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-invoice.html b/templates/frontOffice/default/order-invoice.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/order-placed.html b/templates/frontOffice/default/order-placed.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/password.html b/templates/frontOffice/default/password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/product.html b/templates/frontOffice/default/product.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/register.html b/templates/frontOffice/default/register.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/search.html b/templates/frontOffice/default/search.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/view_all.html b/templates/frontOffice/default/view_all.html old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/en_US.php b/templates/pdf/default/I18n/en_US.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/es_ES.php b/templates/pdf/default/I18n/es_ES.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/fr_FR.php b/templates/pdf/default/I18n/fr_FR.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/I18n/it_IT.php b/templates/pdf/default/I18n/it_IT.php old mode 100644 new mode 100755 diff --git a/templates/pdf/default/delivery.html b/templates/pdf/default/delivery.html old mode 100644 new mode 100755 diff --git a/templates/pdf/default/invoice.html b/templates/pdf/default/invoice.html old mode 100644 new mode 100755 diff --git a/web/robots.txt b/web/robots.txt old mode 100644 new mode 100755 From c7fa9fd61c998101f69404b2649b4ba6684513e5 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 20:37:40 +0100 Subject: [PATCH 46/70] Spelling rewritten with 2 t --- core/lib/Thelia/Action/Product.php | 2 +- core/lib/Thelia/Core/Event/TheliaEvents.php | 2 +- .../Thelia/Form/CategoryModificationForm.php | 2 +- .../Thelia/Form/ContentModificationForm.php | 2 +- .../Thelia/Form/FolderModificationForm.php | 2 +- .../Thelia/Form/ProductModificationForm.php | 2 +- .../Thelia/Model/Tools/UrlRewritingTrait.php | 12 +- core/lib/Thelia/Tools/URL.php | 2 +- templates/backOffice/default/I18n/en_US.php | 1 - templates/backOffice/default/I18n/es_ES.php | 2 - templates/backOffice/default/I18n/fr_FR.php | 507 +++++++++--------- templates/backOffice/default/I18n/it_IT.php | 2 - .../backOffice/default/category-edit.html | 2 +- .../backOffice/default/content-edit.html | 2 +- templates/backOffice/default/folder-edit.html | 2 +- .../default/includes/product-general-tab.html | 2 +- 16 files changed, 275 insertions(+), 271 deletions(-) diff --git a/core/lib/Thelia/Action/Product.php b/core/lib/Thelia/Action/Product.php index 3917827d1..f51d95f28 100644 --- a/core/lib/Thelia/Action/Product.php +++ b/core/lib/Thelia/Action/Product.php @@ -113,7 +113,7 @@ class Product extends BaseAction implements EventSubscriberInterface ->save() ; - // Update the rewriten URL, if required + // Update the rewritten URL, if required $product->setRewrittenUrl($event->getLocale(), $event->getUrl()); // Update default category (ifd required) diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 1dfcb673c..4b929409c 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -681,7 +681,7 @@ final class TheliaEvents const MAILTRANSPORTER_CONFIG = 'action.mailertransporter.config'; /** - * sent when Thelia try to generate a rewriten url + * sent when Thelia try to generate a rewritten url */ const GENERATE_REWRITTENURL = 'action.generate_rewritenurl'; diff --git a/core/lib/Thelia/Form/CategoryModificationForm.php b/core/lib/Thelia/Form/CategoryModificationForm.php index 943c0d941..567f9e41f 100644 --- a/core/lib/Thelia/Form/CategoryModificationForm.php +++ b/core/lib/Thelia/Form/CategoryModificationForm.php @@ -38,7 +38,7 @@ class CategoryModificationForm extends CategoryCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url") )) diff --git a/core/lib/Thelia/Form/ContentModificationForm.php b/core/lib/Thelia/Form/ContentModificationForm.php index 14789ab84..c3887b88e 100644 --- a/core/lib/Thelia/Form/ContentModificationForm.php +++ b/core/lib/Thelia/Form/ContentModificationForm.php @@ -45,7 +45,7 @@ class ContentModificationForm extends ContentCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewritten_url") )) diff --git a/core/lib/Thelia/Form/FolderModificationForm.php b/core/lib/Thelia/Form/FolderModificationForm.php index 0ff90868c..9c4e4c601 100644 --- a/core/lib/Thelia/Form/FolderModificationForm.php +++ b/core/lib/Thelia/Form/FolderModificationForm.php @@ -38,7 +38,7 @@ class FolderModificationForm extends FolderCreationForm ->add("id", "hidden", array("constraints" => array(new GreaterThan(array('value' => 0))))) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url") )) diff --git a/core/lib/Thelia/Form/ProductModificationForm.php b/core/lib/Thelia/Form/ProductModificationForm.php index 34785cf45..15a629302 100644 --- a/core/lib/Thelia/Form/ProductModificationForm.php +++ b/core/lib/Thelia/Form/ProductModificationForm.php @@ -47,7 +47,7 @@ class ProductModificationForm extends ProductCreationForm )) ->add("url", "text", array( - "label" => Translator::getInstance()->trans("Rewriten URL *"), + "label" => Translator::getInstance()->trans("Rewritten URL *"), "constraints" => array(new NotBlank()), "label_attr" => array("for" => "rewriten_url_field") )) diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index 0a8af40c8..d16ceaf5f 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -30,17 +30,17 @@ use Thelia\Model\RewritingUrlQuery; use Thelia\Model\RewritingUrl; use Thelia\Tools\URL; /** - * A trait for managing Rewriten URLs from model classes + * A trait for managing Rewritten URLs from model classes */ trait UrlRewritingTrait { /** - * @returns string the view name of the rewriten object (e.g., 'category', 'product') + * @returns string the view name of the rewritten object (e.g., 'category', 'product') */ protected abstract function getRewrittenUrlViewName(); /** - * Get the object URL for the given locale, rewriten if rewriting is enabled. + * Get the object URL for the given locale, rewritten if rewriting is enabled. * * @param string $locale a valid locale (e.g. en_US) */ @@ -53,7 +53,7 @@ trait UrlRewritingTrait { } /** - * Generate a rewriten URL from the object title, and store it in the rewriting table + * Generate a rewritten URL from the object title, and store it in the rewriting table * * @param string $locale a valid locale (e.g. en_US) */ @@ -112,7 +112,7 @@ trait UrlRewritingTrait { } /** - * return the rewriten URL for the given locale + * return the rewritten URL for the given locale * * @param string $locale a valid locale (e.g. en_US) * @return null @@ -137,7 +137,7 @@ trait UrlRewritingTrait { } /** - * Set the rewriten URL for the given locale + * Set the rewritten URL for the given locale * * @param string $locale a valid locale (e.g. en_US) * @param $url the wanted url diff --git a/core/lib/Thelia/Tools/URL.php b/core/lib/Thelia/Tools/URL.php index d00c5c4ab..85f5289cd 100755 --- a/core/lib/Thelia/Tools/URL.php +++ b/core/lib/Thelia/Tools/URL.php @@ -286,7 +286,7 @@ class URL } /** - * Genenerate the file part of a rewriten URL from a given baseString, using a view, a view id and a locale + * Genenerate the file part of a rewritten URL from a given baseString, using a view, a view id and a locale * * @param $view * @param $viewId diff --git a/templates/backOffice/default/I18n/en_US.php b/templates/backOffice/default/I18n/en_US.php index 839cbdeb2..fa5eaf663 100755 --- a/templates/backOffice/default/I18n/en_US.php +++ b/templates/backOffice/default/I18n/en_US.php @@ -183,7 +183,6 @@ return array( 'Images' => 'Images', 'Documents' => 'Documents', 'Rewritten URL' => 'Rewritten URL', - 'Rewriten URL' => 'Rewriten URL', 'Top level' => 'Top level', 'Visibility' => 'Visibility', 'Category created on %date_create. Last modification: %date_change' => 'Category created on %date_create. Last modification: %date_change', diff --git a/templates/backOffice/default/I18n/es_ES.php b/templates/backOffice/default/I18n/es_ES.php index 6884502b9..58f83ebb2 100755 --- a/templates/backOffice/default/I18n/es_ES.php +++ b/templates/backOffice/default/I18n/es_ES.php @@ -308,9 +308,7 @@ return array ( 'Conclusion' => '', 'A short post-description information' => '', 'Short conclusion' => '', - 'Rewriten URL *' => '', 'Rewritten URL' => '', - 'Rewriten URL' => '', 'Parent category *' => '', 'Top level' => '', 'Visibility' => '', diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 4d482cb30..e633a3caf 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -1,39 +1,52 @@ 'Page non trouvée', - 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', - 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', - 'Thelia Back Office' => 'Thelia Back Office', - 'Version %ver' => 'Version %ver', - 'View site' => 'Voir le site', - 'View shop' => 'Voir la boutique', - 'Profil' => 'Profile', - 'Close administation session' => 'Quitter l\'interface d\'administration', - 'Logout' => 'Se déconnecter', + 'No' => 'Non', + 'Yes' => 'Oui', + 'Send files' => 'Envoyer les fichiers', + 'Drop files to upload' => 'Déposez les fichiers à envoyer sur le serveur', + 'Browse files' => 'Sélectionner les fichiers', + 'Can\'t load documents, please refresh this page.' => 'Échec lors du chargement du document, veuillez réessayer', + 'OK' => 'OK', + 'Edit information in %lng' => 'Modifier les information en %Ing', + 'Edit prices in %curr' => 'Modifier les prix en %curr', + 'Save' => ' Enregistrer', + 'Save and close' => 'Enregistrer et fermer', + 'Close' => 'Fermer', + 'Product reference' => 'Référence produit', + 'Cancel' => 'Annuler', 'Home' => 'Accueil', - 'Customers' => 'Clients', - 'Orders' => 'Commandes', - 'All orders' => 'Toutes les commandes', - 'Catalog' => 'Catalogue', 'Folders' => 'Dossier', - 'Coupons' => 'Codes Promo', + 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', + 'Name' => 'Nom', + 'Description' => 'Description', + 'Actions' => 'Actions', + 'Title' => 'Civilité', + 'Please retry' => 'Merci de réessayer', + 'Select a folder...' => 'Choisissez un dossier de contenu...', + 'ID' => 'ID', + 'Select a tax tule' => 'Sélectionnez une règle de taxes', + 'Product weight' => 'Poids du produit', + 'Kg' => 'Kg', + 'Product price' => 'Prix du produit', + 'Reference' => 'Reference', + 'Quantity' => 'Quantité', + 'Company' => 'Entreprise', + 'Firstname' => 'Prénom', + 'Lastname' => 'Nom', + 'Address' => 'Adresse', + 'Additional address' => 'Adresse complémentaire', + 'Zip code' => 'Code postal', + 'City' => 'Ville', + 'Catalog' => 'Catalogue', + 'Editing %cat' => 'Edition de %cat', + 'Edit this category' => 'Editer cette catégorie', 'Configuration' => 'Configuration', - 'Modules' => 'Modules', - 'Search' => 'Recherche', - 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', - '© Thelia 2013' => '© Thelia 2013', - 'Published by OpenStudio' => 'Edité par OpenStudio', - 'Thelia support forum' => 'Communauté Thelia', - 'Thelia contributions' => 'Contributions Thelia', - 'Thelia Mailing System' => 'Configuration des envois de mails', - 'Administration logs' => 'Gestion des logs', - 'Show logs' => 'Voir les loge', - 'Period' => 'Période', - 'From' => 'De', - 'To' => 'A', - 'Administrators' => 'Administrateurs', - 'Resources' => 'Ressources', + 'Shipping configuration' => 'Configuration du transport', + 'Coupon' => 'Code promo', + 'Create' => 'Créer', + 'Coupons : ' => 'Codes promo', + 'Create a new coupon' => 'Créer un nouveau code promo', 'Back-office users' => 'Utilisateurs du back-office', 'Taxes' => 'Taxes', 'Create a new administrator' => 'Créer un nouvel administrateur', @@ -41,15 +54,12 @@ return array( 'First Name' => 'Prénom', 'Last Name' => 'Nom', 'Profile' => 'Profile', - 'Actions' => 'Actions', 'Superadministrator' => 'Super-administrateur', 'Change this administrator' => 'Modifier cet administrateur', 'Delete this administrator' => 'Supprimer cet administrateur', 'FirstName' => 'Prénom', 'LastName' => 'Nom', 'Password' => 'Mot de passe', - 'Create' => 'Créer', - 'Cancel' => 'Annuler', 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', 'Update a new administrator' => 'Modifier cet administrateur', 'Update' => 'Mettre à jour', @@ -57,182 +67,38 @@ return array( 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', - 'Label' => 'Libellé', - 'Company' => 'Entreprise', - 'Edit a language' => 'Modifier une langue', - 'Edit this language' => 'Modifier cette langue', - 'Current product template' => 'Gabarit de produit actuel', - 'Do not use a product template' => 'Ne pas utiliser de gabarit', - 'Apply' => 'Appliquer', - 'Product Attributes' => 'Déclinaisons du produit', - 'ID' => 'ID', - 'Attribute Name' => 'Nom de la déclinaison', - 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', - 'Product Features' => 'Caractéristiques du produit', - 'Feature Name' => 'Nom de la caractéristique', - 'Feature value for this product' => 'Valeur de la caractéristique', - 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', - 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', - 'Feature value' => 'Valeur de la caractéristique', - 'Related content' => 'Contenu associé', - 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', - 'Select a folder...' => 'Choisissez un dossier de contenu...', - 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', - 'Select a folder content...' => 'Choisissez un dossier de contenu...', - 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', - 'No available content in this folder' => 'Ce dossier est vide de contenus', - 'No folders found' => 'Aucun dossier n\'a été trouvé.', - 'Content title' => 'Titre du contenu', - 'Position' => 'Position', - 'Delete this content' => 'Supprimer ce contenu', - 'Category title' => 'Titre de la catégorie', - 'Enter new category position' => 'Classement de la catégorie ', - 'Lire la suite' => 'Lire la suite', - 'Value' => 'Valeur', - 'Title' => 'Civilité', - 'Product attributes' => 'Attributs produit', - 'Categories' => 'Catégories', - 'Top level categories' => 'Catégories de niveau 1 ', - 'Add a new category' => 'Ajouter une catégorie', - 'Online' => 'En ligne', - 'Browse this category' => 'Parcourir cette catégorie', - 'Edit this category' => 'Editer cette catégorie', - 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', - 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', - 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', - 'Top level Products' => 'Produits mis en avant', - 'Add a new product' => 'Ajouter un nouveau produit', - 'Reference' => 'Reference', - 'Product title' => 'Titre du produit', - 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', - 'Name' => 'Nom', - 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', - 'Create a new category' => 'Créer une catégorie', - 'Create this category' => 'Créer cette catégorie', - 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', - 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', - 'Product price' => 'Prix du produit', - 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', - 'Select a tax tule' => 'Sélectionnez une règle de taxes', - 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', - 'Product weight' => 'Poids du produit', - 'Kg' => 'Kg', - 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', - 'Create a new product' => 'Créer un nouveau produit', - 'Create this product' => 'Créer ce produit', - 'Delete category' => 'Supprimer cette catégorie', - 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', - 'Delete product' => 'Supprimer ce produit', - 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', - 'Enter new product position' => 'Classement du produit', - 'Edit category' => 'Editer la catégorie', - 'Edit category %title' => 'Editer le titre de la catégorie : %title', - 'Thelia configuration' => 'Configuration thelia', - 'Product catalog configuration' => 'Configuration du catalogue produit', - 'Product templates' => 'Template produit', - 'Product features' => 'Caractéristiques produit', - 'Mailing templates' => 'Template e-mail', - 'Currencies' => 'Monnaie', - 'Taxes rules' => 'Règles de taxes', - 'Shipping configuration' => 'Configuration du transport', - 'Countries' => 'Pays', - 'Shipping zones' => 'Zones de livraison', - 'System parameters' => 'Paramètres système ', - 'System variables' => 'Gestion des variables', - 'Administration profiles' => 'Gestion des administrateurs', - 'Languages & URLs' => 'Langues et URLs', - 'Mailing system' => 'Envoi des e-mails', - 'System logs' => 'Journal des logs', - 'And' => 'Et', - 'Edit' => 'Editer', - 'Delete' => 'Supprimer', - 'Code :' => 'Code', - 'code' => 'code', - 'Title :' => 'Titre', - 'title' => 'titre', - 'Is enabled' => 'Est valide', - 'Is available on special offers' => 'Est valide sur les offres promotionnelles', - 'Is cumulative' => 'Est cumulable', - 'Is removing postage' => 'Offre les frais de port', - 'Expiration date :' => 'Date de fin de validité', - 'yyyy-mm-dd' => 'jjjj--mm--aa', - 'Is unlimited' => 'Est illimité', - 'Max usage :' => 'Utilisations max', - 'max usage' => 'utilisations max', - 'Type :' => 'Type', - 'Please select a coupon type' => 'Merci d\'entrer le type de code', - 'Amount :' => 'Montant', - '14.50' => '14.50', - 'Short description :' => 'Description courte', - 'short description' => 'description court', - 'Long description :' => 'Description longue', - 'long description' => 'description longue', - 'Save your modifications' => 'Enregistrer les modifications', - 'Conditions' => 'Conditions', - 'Save this condition' => 'Enregistrer cette condition', - 'Condition\'s category :' => 'Type de condition', - 'Please select a condition category' => 'Merci d\'entrer le type de condition', - 'Coupon' => 'Code promo', - 'Coupons : ' => 'Codes promo', - 'Create a new coupon' => 'Créer un nouveau code promo', - 'Browse' => 'Parcourir', - 'List' => 'Liste', - 'Enabled coupons' => 'Codes promo disponibles', - 'Code' => 'Code', - 'Days before expiration' => 'Jours de validité', - 'Usage left' => 'Utilisation restante', - 'Unlimited' => 'Illimité', - 'Disabled coupons' => 'Codes désactivés', - 'Expiration date' => 'Date de fin', - 'Amount' => 'Montant', - 'Update coupon' => 'Mettre à jour le code', - 'Please retry' => 'Merci de réessayer', - 'Please select another condition' => 'Merci de sélectionner une autre condition', - 'Edit a customer' => 'Editer un client', - 'Editing customer "%name"' => 'Edition du client "%name"', - 'Customer informations' => 'Informations client', - 'Firstname' => 'Prénom', - 'Lastname' => 'Nom', - 'Default address' => 'Adresse par défaut', - 'Address' => 'Adresse', - 'Additional address' => 'Adresse complémentaire', - 'Zip code' => 'Code postal', - 'City' => 'Ville', - 'Other addresses' => 'Autres adresses', - 'Add a new address' => 'Ajouter une nouvelle adresse', - 'Phone' => 'Téléphone', - 'Edit this address' => 'Editer cette adresse', - 'Use this address by default' => 'Utiliser comme adresse par défaut', - 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', - 'orders for this customer' => 'commandes pour ce client', - 'Order n°' => 'Commande n° ', - 'Date & Hour' => 'Date et heure', - 'Status' => 'Etat', - 'Create this address' => 'Créer cette adresse', - 'Use address by default' => 'Utiliser comme adresse par défaut', - 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', - 'Delete address' => 'Supprimer cette adresse', - 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', - 'Customer' => 'Client', - 'Customers list' => 'Liste des clients', - 'Add a new Customer' => 'Ajouter un client', - 'Edit this customer' => 'Modifier ce client', - 'Send a mail to this customer' => 'Contacter ce client par mail', - 'Email address' => 'Adresse e-mail', - 'Create a new customer' => 'Ajouter un client', - 'Create this customer' => 'Ajouter ce client', - 'Delete customer' => 'Supprimer ce client', - 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Back' => 'Retour', - 'Save' => ' Enregistrer', - 'Description' => 'Description', + 'Thelia System Variables' => 'Variables Thelia', + 'System variables' => 'Gestion des variables', + 'Thelia system variables' => 'Variables Thelia', + 'Add a new variable' => 'Ajouter une variable', + 'Save chages' => 'Enregistrer les modifications', + 'Save changes' => 'Enregistrer les modifications', + 'Purpose' => 'Objet', + 'Value' => 'Valeur', + 'Action' => 'Action', + 'Change this variable' => 'Modifier cette variable', + 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', + 'Delete this variable' => 'Supprimer cette variable', + 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', + 'Variable name' => 'Nom de la variable', + 'Variable value' => 'Valeur de la variable', + 'Variable purpose' => 'Objet de la variable', + 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', + 'Create a new variable' => 'Créer une nouvelle variable', + 'Create this variable' => 'Ajouter cette variable', + 'Delete a variable' => 'Supprimer une variable', + 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', 'Back-office home' => 'Accueil administration', 'Dashboard' => 'Tableau de bord', 'Sales' => 'Ventes', 'New customers' => 'Nouveaux clients', + 'Orders' => 'Commandes', 'First orders' => 'Premières commandes', 'Aborted orders' => 'Paniers abandonnés', 'Shop Informations' => 'Informations sur le magasin', + 'Customers' => 'Clients', + 'Categories' => 'Catégories', 'Products' => 'Produits', 'Online products' => 'Produits en ligne', 'Offline products' => 'Produits hors ligne', @@ -251,31 +117,78 @@ return array( 'Latest version available' => 'Dernière version disponible', 'News' => 'Actualités', 'Click here' => 'Cliquez ici', - 'Editing %cat' => 'Edition de %cat', - 'No' => 'Non', - 'Yes' => 'Oui', - 'OK' => 'OK', - 'Save and close' => 'Enregistrer et fermer', - 'Quantity' => 'Quantité', - 'deactivate' => 'désactiver', - 'en_US' => 'en_US', - 'd-m-Y' => 'j-m-A', + 'Edit a customer' => 'Editer un client', + 'Editing customer "%name"' => 'Edition du client "%name"', + 'Customer informations' => 'Informations client', + 'Default address' => 'Adresse par défaut', + 'Other addresses' => 'Autres adresses', + 'Add a new address' => 'Ajouter une nouvelle adresse', + 'Phone' => 'Téléphone', + 'Edit this address' => 'Editer cette adresse', + 'Use this address by default' => 'Utiliser comme adresse par défaut', + 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', + 'orders for this customer' => 'commandes pour ce client', + 'Order n°' => 'Commande n° ', + 'Date & Hour' => 'Date et heure', + 'Amount' => 'Montant', + 'Status' => 'Etat', + 'Create this address' => 'Créer cette adresse', + 'Use address by default' => 'Utiliser comme adresse par défaut', + 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', + 'Delete address' => 'Supprimer cette adresse', + 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Modules' => 'Modules', + 'Taxes rules' => 'Règles de taxes', + 'Apply' => 'Appliquer', + 'Thelia Back Office' => 'Thelia Back Office', 'Username' => 'Nom d\'utilisateur', - 'Host :' => 'Host', - 'Host' => 'Host', - 'Port :' => 'Port', - 'Port' => 'Port', - 'Username :' => 'Nom d\'utilisateur', - 'Password :' => 'Mot de passe', - 'Source IP :' => 'IP source', - 'Source IP' => 'IP source', - 'Variable name' => 'Nom de la variable', - 'Purpose' => 'Objet', + 'Related content' => 'Contenu associé', + 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', + 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', + 'Select a folder content...' => 'Choisissez un dossier de contenu...', + 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', + 'No available content in this folder' => 'Ce dossier est vide de contenus', + 'No folders found' => 'Aucun dossier n\'a été trouvé.', + 'Content title' => 'Titre du contenu', + 'Position' => 'Position', + 'Delete this content' => 'Supprimer ce contenu', + 'Category title' => 'Titre de la catégorie', + 'Enter new category position' => 'Classement de la catégorie ', + 'Lire la suite' => 'Lire la suite', + 'Label' => 'Libellé', + 'Edit a language' => 'Modifier une langue', + 'Edit this language' => 'Modifier cette langue', + 'Current product template' => 'Gabarit de produit actuel', + 'Do not use a product template' => 'Ne pas utiliser de gabarit', + 'Product Attributes' => 'Déclinaisons du produit', + 'Attribute Name' => 'Nom de la déclinaison', + 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', + 'Product Features' => 'Caractéristiques du produit', + 'Feature Name' => 'Nom de la caractéristique', + 'Feature value for this product' => 'Valeur de la caractéristique', + 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', + 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', + 'Feature value' => 'Valeur de la caractéristique', + 'Currencies' => 'Monnaie', + 'Code' => 'Code', + 'Edit category' => 'Editer la catégorie', + 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Search' => 'Recherche', + 'Customer' => 'Client', + 'customer ref' => 'ref client', + 'company' => 'entreprise', + 'firstname & lastname' => 'Prénom & nom', + 'last order' => 'Dernière commande', + 'order amount' => 'Montant de la commande', + 'Edit this customer' => 'Modifier ce client', + 'Send a mail to this customer' => 'Contacter ce client par mail', + 'Edit this order' => 'Editer cette commande ', + 'Product' => 'Produit', + 'Product title' => 'Titre du produit', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', 'Cart' => 'Panier', - 'Product' => 'Produit', 'Unit. price' => 'Prix unitaire', 'Tax' => 'Taxes', 'Unit taxed price' => 'Prix unitaire TTC', @@ -305,37 +218,133 @@ return array( 'Edit delivery address' => 'Editer l\'adresse de livraison', 'Edit order address' => 'Editer l\'adresse de commande ', 'Confirm changes' => 'Valider les modifications', - 'Edit this order' => 'Editer cette commande ', - 'Cancel this order' => 'Annuler cette commande', - 'Delete an order' => 'Supprimer une commande', - 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', - 'View' => 'Voir', - 'customer ref' => 'ref client', - 'company' => 'entreprise', - 'firstname & lastname' => 'Prénom & nom', - 'last order' => 'Dernière commande', - 'order amount' => 'Montant de la commande', - 'Add' => 'Ajouter', - 'Warning' => 'Attention', + 'Update coupon' => 'Mettre à jour le code', + 'Please select another condition' => 'Merci de sélectionner une autre condition', + 'Online' => 'En ligne', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', - 'Variable value' => 'Valeur de la variable', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', - 'Thelia System Variables' => 'Variables Thelia', - 'Thelia system variables' => 'Variables Thelia', - 'Add a new variable' => 'Ajouter une variable', - 'Save chages' => 'Enregistrer les modifications', - 'Save changes' => 'Enregistrer les modifications', - 'Action' => 'Action', - 'Change this variable' => 'Modifier cette variable', - 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', - 'Delete this variable' => 'Supprimer cette variable', - 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', - 'Variable purpose' => 'Objet de la variable', - 'Create a new variable' => 'Créer une nouvelle variable', - 'Create this variable' => 'Ajouter cette variable', - 'Delete a variable' => 'Supprimer une variable', - 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', + 'Is enabled' => 'Est valide', + 'Expiration date' => 'Date de fin', + 'Usage left' => 'Utilisation restante', + 'Unlimited' => 'Illimité', + 'And' => 'Et', + 'Edit' => 'Editer', + 'Mailing templates' => 'Template e-mail', + 'Code :' => 'Code', + 'code' => 'code', + 'Title :' => 'Titre', + 'title' => 'titre', + 'Is available on special offers' => 'Est valide sur les offres promotionnelles', + 'Is cumulative' => 'Est cumulable', + 'Is removing postage' => 'Offre les frais de port', + 'Expiration date :' => 'Date de fin de validité', + 'yyyy-mm-dd' => 'jjjj--mm--aa', + 'Is unlimited' => 'Est illimité', + 'Max usage :' => 'Utilisations max', + 'max usage' => 'utilisations max', + 'Type :' => 'Type', + 'Please select a coupon type' => 'Merci d\'entrer le type de code', + 'Amount :' => 'Montant', + '14.50' => '14.50', + 'Short description :' => 'Description courte', + 'short description' => 'description court', + 'Long description :' => 'Description longue', + 'long description' => 'description longue', + 'Save your modifications' => 'Enregistrer les modifications', + 'Conditions' => 'Conditions', + 'Save this condition' => 'Enregistrer cette condition', + 'Condition\'s category :' => 'Type de condition', + 'Please select a condition category' => 'Merci d\'entrer le type de condition', + 'Delete' => 'Supprimer', + 'Thelia Mailing System' => 'Configuration des envois de mails', + 'Mailing system' => 'Envoi des e-mails', + 'Host :' => 'Host', + 'Host' => 'Host', + 'Port :' => 'Port', + 'Port' => 'Port', + 'Username :' => 'Nom d\'utilisateur', + 'Password :' => 'Mot de passe', + 'Source IP :' => 'IP source', + 'Source IP' => 'IP source', + 'Product attributes' => 'Attributs produit', + 'Product features' => 'Caractéristiques produit', + 'Administration logs' => 'Gestion des logs', + 'Show logs' => 'Voir les loge', + 'Period' => 'Période', + 'From' => 'De', + 'To' => 'A', + 'Administrators' => 'Administrateurs', + 'Resources' => 'Ressources', + 'Shipping zones' => 'Zones de livraison', + 'Add' => 'Ajouter', + 'Cancel this order' => 'Annuler cette commande', + 'Delete an order' => 'Supprimer une commande', + 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', + 'System logs' => 'Journal des logs', + 'View' => 'Voir', + 'deactivate' => 'désactiver', + 'en_US' => 'en_US', + 'd-m-Y' => 'j-m-A', + 'Page not found' => 'Page non trouvée', + 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', + 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', + 'Customers list' => 'Liste des clients', + 'Add a new Customer' => 'Ajouter un client', + 'Email address' => 'Adresse e-mail', + 'Create a new customer' => 'Ajouter un client', + 'Create this customer' => 'Ajouter ce client', + 'Delete customer' => 'Supprimer ce client', + 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', + 'Countries' => 'Pays', + 'Coupons' => 'Codes Promo', + 'Browse' => 'Parcourir', + 'List' => 'Liste', + 'Enabled coupons' => 'Codes promo disponibles', + 'Days before expiration' => 'Jours de validité', + 'Disabled coupons' => 'Codes désactivés', + 'Version %ver' => 'Version %ver', + 'View site' => 'Voir le site', + 'View shop' => 'Voir la boutique', + 'Profil' => 'Profile', + 'Close administation session' => 'Quitter l\'interface d\'administration', + 'Logout' => 'Se déconnecter', + 'All orders' => 'Toutes les commandes', + 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', + '© Thelia 2013' => '© Thelia 2013', + 'Published by OpenStudio' => 'Edité par OpenStudio', + 'Thelia support forum' => 'Communauté Thelia', + 'Thelia contributions' => 'Contributions Thelia', + 'Thelia configuration' => 'Configuration thelia', + 'Product catalog configuration' => 'Configuration du catalogue produit', + 'Product templates' => 'Template produit', + 'System parameters' => 'Paramètres système ', + 'Administration profiles' => 'Gestion des administrateurs', + 'Languages & URLs' => 'Langues et URLs', + 'Warning' => 'Attention', + 'Top level categories' => 'Catégories de niveau 1 ', + 'Add a new category' => 'Ajouter une catégorie', + 'Browse this category' => 'Parcourir cette catégorie', + 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', + 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', + 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', + 'Top level Products' => 'Produits mis en avant', + 'Add a new product' => 'Ajouter un nouveau produit', + 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', + 'Create a new category' => 'Créer une catégorie', + 'Create this category' => 'Créer cette catégorie', + 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', + 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', + 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', + 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', + 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', + 'Create a new product' => 'Créer un nouveau produit', + 'Create this product' => 'Créer ce produit', + 'Delete category' => 'Supprimer cette catégorie', + 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', + 'Delete product' => 'Supprimer ce produit', + 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', + 'Enter new product position' => 'Classement du produit', ); diff --git a/templates/backOffice/default/I18n/it_IT.php b/templates/backOffice/default/I18n/it_IT.php index 6884502b9..58f83ebb2 100755 --- a/templates/backOffice/default/I18n/it_IT.php +++ b/templates/backOffice/default/I18n/it_IT.php @@ -308,9 +308,7 @@ return array ( 'Conclusion' => '', 'A short post-description information' => '', 'Short conclusion' => '', - 'Rewriten URL *' => '', 'Rewritten URL' => '', - 'Rewriten URL' => '', 'Parent category *' => '', 'Top level' => '', 'Visibility' => '', diff --git a/templates/backOffice/default/category-edit.html b/templates/backOffice/default/category-edit.html index 62f9290f1..7225ddf6e 100755 --- a/templates/backOffice/default/category-edit.html +++ b/templates/backOffice/default/category-edit.html @@ -84,7 +84,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/content-edit.html b/templates/backOffice/default/content-edit.html index 8bccc01d4..ae92061b9 100755 --- a/templates/backOffice/default/content-edit.html +++ b/templates/backOffice/default/content-edit.html @@ -85,7 +85,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/folder-edit.html b/templates/backOffice/default/folder-edit.html index 2b8b6bfe4..82f57af68 100755 --- a/templates/backOffice/default/folder-edit.html +++ b/templates/backOffice/default/folder-edit.html @@ -85,7 +85,7 @@ {$label} : - + {/form_field} diff --git a/templates/backOffice/default/includes/product-general-tab.html b/templates/backOffice/default/includes/product-general-tab.html index 84b9a836d..f91aeff9e 100755 --- a/templates/backOffice/default/includes/product-general-tab.html +++ b/templates/backOffice/default/includes/product-general-tab.html @@ -53,7 +53,7 @@ {$label} : - + {/form_field} From 31228e36c4f34aeff3dbc340b8c7c9351aab63fc Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 21:15:33 +0100 Subject: [PATCH 47/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 31 +++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index e633a3caf..178bf29a2 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -14,15 +14,46 @@ return array( 'Save and close' => 'Enregistrer et fermer', 'Close' => 'Fermer', 'Product reference' => 'Référence produit', + 'Rewritten URL' => 'URL réécrite', + 'Top level' => 'Niveau racine', + 'You can attach this product to more categories in the details tab.' => 'Vous pouvez lier ce produit à plus de catégories dans l\'onglet détail.', + 'Visibility' => 'Visibilité', + 'Product created on %date_create. Last modification: %date_change' => 'Produit créé le %date_create. Dernière modification : %date_change ', 'Cancel' => 'Annuler', 'Home' => 'Accueil', 'Folders' => 'Dossier', + 'Editing %fold' => 'Modification de %fold', + 'Edit this folder' => 'Modifier ce dossier', + '(edit)' => '(modifier)', + 'Editing %title' => 'Modifier %title', 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', + 'classic modules' => 'module classique', 'Name' => 'Nom', 'Description' => 'Description', + 'Enable/Disable' => 'Activer/Désactiver', 'Actions' => 'Actions', + 'Deactivate %title module' => 'Désactiver le module %title', + 'deactivation' => 'désactivation', + 'activate %title module' => 'activer le module %title', + 'activation' => 'activation', + 'Configure this module' => 'Configurer ce module', + 'Configure' => 'Configurer', + 'Read the documentation of this module' => 'Lire la documentation de ce module', + 'Edit this module' => 'Modifier ce module', + 'Delete this module' => 'Supprimer ce module', 'Title' => 'Civilité', + 'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisé si un résumé ou une introduction est nécessaire', + 'Short description' => 'Courte description', + 'The detailed description.' => 'Description détaillée', + 'A short post-description information' => 'Une courte post-description', + 'Short conclusion' => 'Courte conclusion', + 'Confirmation' => 'Confirmation', + 'Do you really want to delete this element ?' => 'Voulez-vous vraiment supprimer cet élément ?', + 'Confirm' => 'Je confirme', 'Please retry' => 'Merci de réessayer', + 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', + 'Update this image' => 'Mettre à jour cette image', + 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', 'Select a folder...' => 'Choisissez un dossier de contenu...', 'ID' => 'ID', 'Select a tax tule' => 'Sélectionnez une règle de taxes', From 67ff253999c628fa57bf055aab97ccafcbe71d25 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 21:27:50 +0100 Subject: [PATCH 48/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 178bf29a2..ce7e7860a 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -301,6 +301,7 @@ return array( 'Source IP :' => 'IP source', 'Source IP' => 'IP source', 'Product attributes' => 'Attributs produit', + 'Remove from all product templates' => 'Supprimer de tous les templates produits', 'Product features' => 'Caractéristiques produit', 'Administration logs' => 'Gestion des logs', 'Show logs' => 'Voir les loge', @@ -315,10 +316,17 @@ return array( 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', 'System logs' => 'Journal des logs', + 'Edit a profile' => 'Modifier un profile', + 'Profiles' => 'Profiles', + 'Postscriptum' => 'Post-scriptum', 'View' => 'Voir', 'deactivate' => 'désactiver', + 'ISO Code' => 'Code ISO', 'en_US' => 'en_US', 'd-m-Y' => 'j-m-A', + 'Error' => 'Erreur', + 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', + 'An error occured' => 'Une erreur est apparue', 'Page not found' => 'Page non trouvée', 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', @@ -330,6 +338,11 @@ return array( 'Delete customer' => 'Supprimer ce client', 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Countries' => 'Pays', + 'Delete this country' => 'Supprimer ce pays', + 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', + 'Country title' => 'Titre du pays', + 'Alpha code 2' => 'Code alpha 2', + 'Alpha code 3' => 'Code alpha 3', 'Coupons' => 'Codes Promo', 'Browse' => 'Parcourir', 'List' => 'Liste', @@ -354,15 +367,19 @@ return array( 'System parameters' => 'Paramètres système ', 'Administration profiles' => 'Gestion des administrateurs', 'Languages & URLs' => 'Langues et URLs', + 'Translations' => 'Traductions', 'Warning' => 'Attention', + 'Categories in %cat' => 'Catégories en $cat', 'Top level categories' => 'Catégories de niveau 1 ', 'Add a new category' => 'Ajouter une catégorie', 'Browse this category' => 'Parcourir cette catégorie', 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', + 'Products in %cat' => 'Produits en %cat', 'Top level Products' => 'Produits mis en avant', 'Add a new product' => 'Ajouter un nouveau produit', + 'Delete this product' => 'Supprimer ce produit', 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', 'Create a new category' => 'Créer une catégorie', 'Create this category' => 'Créer cette catégorie', @@ -378,4 +395,6 @@ return array( 'Delete product' => 'Supprimer ce produit', 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', 'Enter new product position' => 'Classement du produit', + 'Thelia Shipping zones' => 'Zones de livraison Thelia', + 'Change this shipping zone' => 'Changer cette zone de livraison', ); From 15d3e99ce7a9877e28da23d2804b242646cc69a8 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 22:06:12 +0100 Subject: [PATCH 49/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 93 +++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index ce7e7860a..f6438e8f3 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -55,13 +55,24 @@ return array( 'Update this image' => 'Mettre à jour cette image', 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', 'Select a folder...' => 'Choisissez un dossier de contenu...', + ' (default)' => '(défaut)', + 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', + 'No Folders found' => 'Aucun dossier trouvé', 'ID' => 'ID', + 'Folder title' => 'Titre du dossier', + 'Remove the product from this category' => 'Supprimer le produit de cette catégorie', + 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', 'Select a tax tule' => 'Sélectionnez une règle de taxes', + 'Details' => 'Détails', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', 'Product price' => 'Prix du produit', 'Reference' => 'Reference', 'Quantity' => 'Quantité', + 'Default' => 'Défaut', + 'Select an attribute...' => 'Sélectionnez un attribut', + 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', + 'Attribute values' => 'Valeur des attributs', 'Company' => 'Entreprise', 'Firstname' => 'Prénom', 'Lastname' => 'Nom', @@ -69,15 +80,19 @@ return array( 'Additional address' => 'Adresse complémentaire', 'Zip code' => 'Code postal', 'City' => 'Ville', + 'Phone number' => 'Numéro de téléphone', + 'Cellular phone number' => 'Numéro de téléphone portable', 'Catalog' => 'Catalogue', 'Editing %cat' => 'Edition de %cat', 'Edit this category' => 'Editer cette catégorie', 'Configuration' => 'Configuration', 'Shipping configuration' => 'Configuration du transport', + 'Create coupon' => 'Créer un code promo', 'Coupon' => 'Code promo', 'Create' => 'Créer', 'Coupons : ' => 'Codes promo', 'Create a new coupon' => 'Créer un nouveau code promo', + 'Files manager' => 'Gestionnaire de fichier', 'Back-office users' => 'Utilisateurs du back-office', 'Taxes' => 'Taxes', 'Create a new administrator' => 'Créer un nouvel administrateur', @@ -98,7 +113,12 @@ return array( 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', + 'Edit a document' => 'Modifier un document', + 'Document' => 'Document', + 'Editing document "%name"' => 'En cours de modification du document "%name"', + 'Edit document "%name"' => 'Modifier le document "%name"', 'Back' => 'Retour', + 'Document informations' => 'Informations sur le document', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -303,6 +323,17 @@ return array( 'Product attributes' => 'Attributs produit', 'Remove from all product templates' => 'Supprimer de tous les templates produits', 'Product features' => 'Caractéristiques produit', + 'taxes' => 'taxes', + 'and' => 'et', + 'tax rules' => 'règles de taxe', + 'Example :' => 'Exemple:', + 'Create a new tax' => 'Créer une nouvelle taxe', + 'Change this tax' => 'Modifier cette taxe', + 'Delete this tax' => 'Supprimer cette taxe', + 'Delete tax' => 'Supprimer une taxe', + 'Do you really want to delete this tax ?' => 'Voulez-vous vraiment supprimer cette taxe ?', + 'Delete tax rule' => 'Supprimer une règle de taxe', + 'Do you really want to delete this tax rule ?' => 'Voulez-vous vraiment supprimer cette règle de taxe ?', 'Administration logs' => 'Gestion des logs', 'Show logs' => 'Voir les loge', 'Period' => 'Période', @@ -312,43 +343,95 @@ return array( 'Resources' => 'Ressources', 'Shipping zones' => 'Zones de livraison', 'Add' => 'Ajouter', + 'Zones' => 'Zones', + 'Delete this zone' => 'Supprimer cette zone', + 'Remove zone' => 'Supprimer zone', 'Cancel this order' => 'Annuler cette commande', 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', + 'System Logs' => 'Logs système', 'System logs' => 'Journal des logs', + 'System Logs configuration' => 'Configuration logs système', + 'General configuration' => 'Configuration générale', + 'Log lines format' => 'Format des lignes des logs', + 'File names' => 'Noms du fichier', + 'IP Addresses' => 'Adresse IP', + 'Destinations' => 'Destinations', 'Edit a profile' => 'Modifier un profile', 'Profiles' => 'Profiles', 'Postscriptum' => 'Post-scriptum', + 'Resource' => 'Ressource', + 'Rights' => 'Droits', 'View' => 'Voir', + 'Manage module rights' => 'Gérer les droits des modules', + 'Module' => 'Module', + 'Subject' => 'Sujet', + 'Thelia Languages' => 'Langages Thelia', + 'Languages' => 'Langages', + 'Locale' => 'Locale', + 'Parameters' => 'Paramètres', + 'activate' => 'activer', 'deactivate' => 'désactiver', 'ISO Code' => 'Code ISO', 'en_US' => 'en_US', 'd-m-Y' => 'j-m-A', + 'Delete language' => 'Supprimer langage', 'Error' => 'Erreur', 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', 'An error occured' => 'Une erreur est apparue', + 'Templates' => 'Template', + 'Template name' => 'Nom du template', 'Page not found' => 'Page non trouvée', 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', + 'Install a new module' => 'Installer un nouveau module', + 'Classic modules' => 'Module classique', + 'Delivery modules' => 'Module de livraison', + 'Payment modules' => 'Module de paiement', + 'Delete a module' => 'Supprimer un module', + 'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?', 'Customers list' => 'Liste des clients', 'Add a new Customer' => 'Ajouter un client', + 'Last name' => 'Nom', + 'First name' => 'Prénom', + 'Registration date' => 'Date d\'inscription', + 'Date of last order' => 'Date du dernier achat', + 'Last order amount' => 'Montant du dernier achat', 'Email address' => 'Adresse e-mail', 'Create a new customer' => 'Ajouter un client', 'Create this customer' => 'Ajouter ce client', 'Delete customer' => 'Supprimer ce client', 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', 'Countries' => 'Pays', + 'Add a new country' => 'Ajouter un pays', + 'Shop' => 'Magasin', + 'N° ISO' => 'N° ISO', + 'Change this country' => 'Modifier ce pays', 'Delete this country' => 'Supprimer ce pays', 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', 'Country title' => 'Titre du pays', 'Alpha code 2' => 'Code alpha 2', 'Alpha code 3' => 'Code alpha 3', + 'Create a new country' => 'Créer un nouveau pays', + 'Create this country' => 'Créer ce pays', + 'Delete country' => 'Supprimer le pays', + 'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', 'Coupons' => 'Codes Promo', 'Browse' => 'Parcourir', 'List' => 'Liste', 'Enabled coupons' => 'Codes promo disponibles', 'Days before expiration' => 'Jours de validité', 'Disabled coupons' => 'Codes désactivés', + 'Edit an image' => 'Modifier une image', + 'Image' => 'Image', + 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', + 'Edit image "%name"' => 'Modification de l\'image "%name"', + 'Preview' => 'Aperçu', + 'Add this country' => 'Ajouter ce pays', + 'Remove country' => 'Supprimer le pays', + 'Do you really want to remove this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', + 'Edit a country' => 'Modifier un pays', + 'Country description' => 'Description du pays', 'Version %ver' => 'Version %ver', 'View site' => 'Voir le site', 'View shop' => 'Voir la boutique', @@ -368,7 +451,17 @@ return array( 'Administration profiles' => 'Gestion des administrateurs', 'Languages & URLs' => 'Langues et URLs', 'Translations' => 'Traductions', + 'Template title' => 'Titre du template', + 'Delete template' => 'Supprimer le template', + 'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce template ? Il sera supprimer de tous les produits', + 'Translation' => 'Traduction', + 'PDF templates' => 'Template du PDF', + 'Thelia core' => 'Cœur de Thelia', 'Warning' => 'Attention', + 'Profile code' => 'Code du profile', + 'Delete profile' => 'Supprimer le profile', + 'Do you really want to delete this profile ?' => 'Voulez-vous vraiment supprimer ce profile ?', + 'You can\'t delete this profile' => 'Vous ne pouvez supprimer ce produit', 'Categories in %cat' => 'Catégories en $cat', 'Top level categories' => 'Catégories de niveau 1 ', 'Add a new category' => 'Ajouter une catégorie', From 0f081aee236e15bbad9b4b4b275831b8fb673204 Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 27 Nov 2013 22:20:31 +0100 Subject: [PATCH 50/70] Translation : some fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 63 +++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index f6438e8f3..8b22e9a21 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -66,13 +66,27 @@ return array( 'Details' => 'Détails', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', + 'Current quantity' => 'Quantité actuelle', + 'Promotion' => 'Promotion', 'Product price' => 'Prix du produit', + 'Combination builder' => 'Constructeur de combinaison', + 'Add a new combination' => 'Ajouter une nouvelle combinaison', 'Reference' => 'Reference', + 'EAN Code' => 'Code EAN', 'Quantity' => 'Quantité', + 'Weight
(Kg)' => 'Poids
(Kg) ', 'Default' => 'Défaut', + 'Sale' => 'Vente', + 'New' => 'Nouveau', + 'Attribute' => 'Attribut', 'Select an attribute...' => 'Sélectionnez un attribut', 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', 'Attribute values' => 'Valeur des attributs', + 'Remove selected values' => 'Supprimer la valeur sélectionnée', + 'Create a new combination' => 'Créer une nouvelle combinaison', + 'Create this combination' => 'Créer cette combinaison', + 'Combination reference' => 'Référence de la combinaison', + 'Create combinations' => 'Créer des combinaisons', 'Company' => 'Entreprise', 'Firstname' => 'Prénom', 'Lastname' => 'Nom', @@ -85,8 +99,12 @@ return array( 'Catalog' => 'Catalogue', 'Editing %cat' => 'Edition de %cat', 'Edit this category' => 'Editer cette catégorie', + 'Thelia Shipping configuration' => 'Configuration des livraison Thelia', 'Configuration' => 'Configuration', 'Shipping configuration' => 'Configuration du transport', + 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', + 'Change this shipping configuration' => 'Modifier cette configuration de livraison', + 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', 'Create coupon' => 'Créer un code promo', 'Coupon' => 'Code promo', 'Create' => 'Créer', @@ -119,6 +137,7 @@ return array( 'Edit document "%name"' => 'Modifier le document "%name"', 'Back' => 'Retour', 'Document informations' => 'Informations sur le document', + 'File' => 'Fichier', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -175,6 +194,7 @@ return array( 'Other addresses' => 'Autres adresses', 'Add a new address' => 'Ajouter une nouvelle adresse', 'Phone' => 'Téléphone', + 'Cellular phone' => 'Téléphone portable', 'Edit this address' => 'Editer cette adresse', 'Use this address by default' => 'Utiliser comme adresse par défaut', 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', @@ -183,16 +203,40 @@ return array( 'Date & Hour' => 'Date et heure', 'Amount' => 'Montant', 'Status' => 'Etat', + 'Create a customer address' => 'Créer une adresse client', 'Create this address' => 'Créer cette adresse', + 'Edit a customer address' => 'Modifier une adresse client', + 'Save this address' => 'Sauvegarder cette adresse', 'Use address by default' => 'Utiliser comme adresse par défaut', 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', 'Delete address' => 'Supprimer cette adresse', 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Edit content' => 'Modifier le contenu', + 'Edit content %title' => 'Modifier le contenu %title', + 'Edit previous content' => 'Modifier le contenu précèdent', + 'Preview folder page' => 'Aperçu de la page dossier', + 'Edit next content' => 'Modifier le prochain contenu', + 'General description' => 'Description générale', + 'Associations' => 'Associations', + 'Images' => 'Images', + 'Documents' => 'Documents', 'Modules' => 'Modules', + 'Remove associated folder' => 'Supprimer le dossier associé', + 'Edit a tax rule' => 'Modifier une règle de taxe', 'Taxes rules' => 'Règles de taxes', + 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', + 'Manage taxes' => 'Gérer les taxes', + 'Choose a country' => 'Choisissez un pays', + 'Countries that have the same tax rule' => 'Pays ayant les mêmes règles de taxe', + 'NONE' => 'AUCUN', + 'Add tax to this group' => 'Ajouter une taxe à ce groupe', 'Apply' => 'Appliquer', + 'uncheck all' => 'Tous décocher', + 'Edit tax rule taxes' => 'Modifier une règle de taxe', + 'Welcome' => 'Bienvenue', 'Thelia Back Office' => 'Thelia Back Office', 'Username' => 'Nom d\'utilisateur', + 'Loading Thelia lastest news...' => 'Chargement des dernières nouvelles sur Thelia', 'Related content' => 'Contenu associé', 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', @@ -203,9 +247,28 @@ return array( 'Content title' => 'Titre du contenu', 'Position' => 'Position', 'Delete this content' => 'Supprimer ce contenu', + 'This product contains no contents' => 'Ce produit ne contient aucun contenu', + 'Product accessories' => 'Accessoires produit', + 'Select a category...' => 'Sélectionnez une catégorie...', + 'Select a product...' => 'Sélectionnez un produit', + 'No categories found' => 'Aucune catégorie trouvée', + 'Accessory title' => 'Titre de l\'accessoire', + 'Delete this accessory' => 'Supprimer cet accessoire', + 'Additional categories' => 'Catégorie additionnelle', 'Category title' => 'Titre de la catégorie', + 'Remove related content' => 'Supprimer le contenu lié', + 'Do you really want to remove this related content from the product ?' => 'Voulez-vous vraiment enlever ce contenu lié de ce produit ?', + 'Remove an accessory' => 'Enlever un accessoire', + 'Do you really want to remove this accessory from the product ?' => 'Voulez-vous vraiment enlever cet accessoire de ce produit ?', + 'Remove from category' => 'Enlever de la catégorie', + 'Do you really want to remove the product from this category ?' => 'Voulez-vous vraiment enlever ce produit de cette catégorie ?', 'Enter new category position' => 'Classement de la catégorie ', 'Lire la suite' => 'Lire la suite', + 'Attribute title' => 'Titre de l\'attribut', + 'Delete this attribute' => 'Supprimer cet attribut', + 'This template contains no attributes' => 'Ce template ne contient aucun attribut', + 'Remove attribute' => 'Enlever l\'attribut', + 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', 'Label' => 'Libellé', 'Edit a language' => 'Modifier une langue', 'Edit this language' => 'Modifier cette langue', From 4b034b2a61cad0d86c4f852830cfbb864e538544 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 28 Nov 2013 22:27:48 +0100 Subject: [PATCH 51/70] Translation : more fre_FR added --- templates/backOffice/default/I18n/fr_FR.php | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 8b22e9a21..02f3803c2 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -54,6 +54,7 @@ return array( 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', 'Update this image' => 'Mettre à jour cette image', 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', + 'Additional Folders' => 'Dossier additionnels', 'Select a folder...' => 'Choisissez un dossier de contenu...', ' (default)' => '(défaut)', 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', @@ -64,6 +65,7 @@ return array( 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', 'Select a tax tule' => 'Sélectionnez une règle de taxes', 'Details' => 'Détails', + 'Product EAN Code' => 'Code EAN du produit', 'Product weight' => 'Poids du produit', 'Kg' => 'Kg', 'Current quantity' => 'Quantité actuelle', @@ -78,6 +80,7 @@ return array( 'Default' => 'Défaut', 'Sale' => 'Vente', 'New' => 'Nouveau', + 'Delete this combination' => 'Supprimer cette combinaison', 'Attribute' => 'Attribut', 'Select an attribute...' => 'Sélectionnez un attribut', 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', @@ -85,6 +88,8 @@ return array( 'Remove selected values' => 'Supprimer la valeur sélectionnée', 'Create a new combination' => 'Créer une nouvelle combinaison', 'Create this combination' => 'Créer cette combinaison', + 'Delete a combination' => 'Supprimer une combinaison', + 'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?', 'Combination reference' => 'Référence de la combinaison', 'Create combinations' => 'Créer des combinaisons', 'Company' => 'Entreprise', @@ -138,6 +143,7 @@ return array( 'Back' => 'Retour', 'Document informations' => 'Informations sur le document', 'File' => 'Fichier', + 'Post Scriptum' => 'Post-scriptum', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -284,9 +290,30 @@ return array( 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', 'Feature value' => 'Valeur de la caractéristique', 'Currencies' => 'Monnaie', + 'Update rates' => 'Mettre à jour les taux', + 'Add a new currency' => 'Ajouter une devise', + 'ISO 4217 Code' => 'Code ISO 4217', + 'Symbol' => 'Symbole', + 'Rate in €' => 'Taux en € ', + 'Change this currency' => 'Modifier cette devise', + 'Delete this currency' => 'Supprimer cette devise', + 'Currency name' => 'Nom de la devise', + 'ISO 4217 code' => 'Code ISO 4217', 'Code' => 'Code', + 'Currency symbol' => 'Symbole de la devise', + 'Currency rate' => 'Taux de la devise', + 'Create a new currency' => 'Créer une nouvelle devise', + 'Create this currency' => 'Créer cette devise', + 'Delete currency' => 'Supprimer la devise', + 'Edit an attribute' => 'Modifier un attribut', + 'Attributes' => 'Attributs', + 'Delete this value' => 'Supprimer cette valeur', + 'Create this value' => 'Créer cette valeur', 'Edit category' => 'Editer la catégorie', 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Edit previous category' => 'Modifier la catégorie précédente', + 'Preview category page' => 'Aperçu de la page catégorie', + 'Edit next category' => 'Modifier la catégorie suivante', 'Search' => 'Recherche', 'Customer' => 'Client', 'customer ref' => 'ref client', @@ -299,6 +326,9 @@ return array( 'Edit this order' => 'Editer cette commande ', 'Product' => 'Produit', 'Product title' => 'Titre du produit', + 'Edit folder' => 'Modifier le dossier', + 'Edit previous folder' => 'Modifier le dossier précèdent', + 'Edit next folder' => 'Modifier le dossier suivant', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', @@ -334,18 +364,42 @@ return array( 'Confirm changes' => 'Valider les modifications', 'Update coupon' => 'Mettre à jour le code', 'Please select another condition' => 'Merci de sélectionner une autre condition', + 'Add a new folder' => 'Ajouter une nouveau dossier', 'Online' => 'En ligne', + 'Add a new content' => 'Ajouter un nouveau contenu', + 'Edit this content' => 'Modifier ce contenu', + 'Create a new folder' => 'Ajouter un nouveau dossier', + 'Create this folder' => 'Créer ce dossier', + 'Delete folder' => 'Supprimer le dossier', + 'Delete content' => 'Supprimer le contenu', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', + 'Store' => 'Magasin', + 'Store configuration' => 'Configuration du magasin', + 'General' => 'Général', + 'Edit product' => 'Modifier le produit', + 'Edit previous product' => 'Modifier le produit précèdent', + 'Edit next product' => 'Modifier le produit suivant', + 'Edit a tax' => 'Modifier une taxe', + 'Coupon : ' => 'Code promo', 'Is enabled' => 'Est valide', 'Expiration date' => 'Date de fin', + 'days left' => 'jours restant', 'Usage left' => 'Utilisation restante', 'Unlimited' => 'Illimité', + 'May be cumulative' => 'Pourra être cumulé', + 'Can\'t be cumulative' => 'Ne pourra pas être cumulé', + 'Will remove postage' => 'Enlèvera les frais de port', + 'Won\'t remove postage' => 'N\'enlèvera pas les frais de port', + 'Will be available on special offers' => 'Sera disponible sur les offres spéciales', + 'Won\'t be available on special offers' => 'Ne sera pas disponible sur les offres spéciales', + 'Application field' => 'Champs d\'application', 'And' => 'Et', 'Edit' => 'Editer', + 'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?', 'Mailing templates' => 'Template e-mail', 'Code :' => 'Code', 'code' => 'code', From f462733599eb27949234424b8b41a2d0cb159dd0 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 28 Nov 2013 22:32:39 +0100 Subject: [PATCH 52/70] Merge --- templates/email/default/README | 0 templates/email/default/default-html-layout.tpl | 0 templates/email/default/default-text-layout.tpl | 0 templates/email/default/order_confirmation.html | 0 templates/email/default/order_confirmation.txt | 0 .../frontOffice/default/assets/img/email/header.jpg | Bin .../frontOffice/default/assets/img/email/logo.gif | Bin templates/frontOffice/default/email/order.html | 0 .../frontOffice/default/email/password-reset.html | 0 templates/frontOffice/default/email/password.html | 0 templates/frontOffice/default/email/register.html | 0 templates/frontOffice/default/email/template.tpl | 0 12 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 templates/email/default/README mode change 100644 => 100755 templates/email/default/default-html-layout.tpl mode change 100644 => 100755 templates/email/default/default-text-layout.tpl mode change 100644 => 100755 templates/email/default/order_confirmation.html mode change 100644 => 100755 templates/email/default/order_confirmation.txt mode change 100644 => 100755 templates/frontOffice/default/assets/img/email/header.jpg mode change 100644 => 100755 templates/frontOffice/default/assets/img/email/logo.gif mode change 100644 => 100755 templates/frontOffice/default/email/order.html mode change 100644 => 100755 templates/frontOffice/default/email/password-reset.html mode change 100644 => 100755 templates/frontOffice/default/email/password.html mode change 100644 => 100755 templates/frontOffice/default/email/register.html mode change 100644 => 100755 templates/frontOffice/default/email/template.tpl diff --git a/templates/email/default/README b/templates/email/default/README old mode 100644 new mode 100755 diff --git a/templates/email/default/default-html-layout.tpl b/templates/email/default/default-html-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/email/default/default-text-layout.tpl b/templates/email/default/default-text-layout.tpl old mode 100644 new mode 100755 diff --git a/templates/email/default/order_confirmation.html b/templates/email/default/order_confirmation.html old mode 100644 new mode 100755 diff --git a/templates/email/default/order_confirmation.txt b/templates/email/default/order_confirmation.txt old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/email/header.jpg b/templates/frontOffice/default/assets/img/email/header.jpg old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/assets/img/email/logo.gif b/templates/frontOffice/default/assets/img/email/logo.gif old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/order.html b/templates/frontOffice/default/email/order.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/password-reset.html b/templates/frontOffice/default/email/password-reset.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/password.html b/templates/frontOffice/default/email/password.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/register.html b/templates/frontOffice/default/email/register.html old mode 100644 new mode 100755 diff --git a/templates/frontOffice/default/email/template.tpl b/templates/frontOffice/default/email/template.tpl old mode 100644 new mode 100755 From db0b9e3d99b6da3c030b5849444b6cccc62a919f Mon Sep 17 00:00:00 2001 From: gmorel Date: Wed, 4 Dec 2013 17:02:25 +0100 Subject: [PATCH 53/70] Adding translation for Backoffice --- templates/backOffice/default/I18n/fr_FR.php | 940 ++++++++++---------- 1 file changed, 481 insertions(+), 459 deletions(-) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 02f3803c2..a51ffc218 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -1,170 +1,9 @@ 'Non', - 'Yes' => 'Oui', - 'Send files' => 'Envoyer les fichiers', - 'Drop files to upload' => 'Déposez les fichiers à envoyer sur le serveur', - 'Browse files' => 'Sélectionner les fichiers', - 'Can\'t load documents, please refresh this page.' => 'Échec lors du chargement du document, veuillez réessayer', - 'OK' => 'OK', - 'Edit information in %lng' => 'Modifier les information en %Ing', - 'Edit prices in %curr' => 'Modifier les prix en %curr', - 'Save' => ' Enregistrer', - 'Save and close' => 'Enregistrer et fermer', - 'Close' => 'Fermer', - 'Product reference' => 'Référence produit', - 'Rewritten URL' => 'URL réécrite', - 'Top level' => 'Niveau racine', - 'You can attach this product to more categories in the details tab.' => 'Vous pouvez lier ce produit à plus de catégories dans l\'onglet détail.', - 'Visibility' => 'Visibilité', - 'Product created on %date_create. Last modification: %date_change' => 'Produit créé le %date_create. Dernière modification : %date_change ', - 'Cancel' => 'Annuler', - 'Home' => 'Accueil', - 'Folders' => 'Dossier', - 'Editing %fold' => 'Modification de %fold', - 'Edit this folder' => 'Modifier ce dossier', - '(edit)' => '(modifier)', - 'Editing %title' => 'Modifier %title', - 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', - 'classic modules' => 'module classique', - 'Name' => 'Nom', - 'Description' => 'Description', - 'Enable/Disable' => 'Activer/Désactiver', - 'Actions' => 'Actions', - 'Deactivate %title module' => 'Désactiver le module %title', - 'deactivation' => 'désactivation', - 'activate %title module' => 'activer le module %title', - 'activation' => 'activation', - 'Configure this module' => 'Configurer ce module', - 'Configure' => 'Configurer', - 'Read the documentation of this module' => 'Lire la documentation de ce module', - 'Edit this module' => 'Modifier ce module', - 'Delete this module' => 'Supprimer ce module', - 'Title' => 'Civilité', - 'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisé si un résumé ou une introduction est nécessaire', - 'Short description' => 'Courte description', - 'The detailed description.' => 'Description détaillée', - 'A short post-description information' => 'Une courte post-description', - 'Short conclusion' => 'Courte conclusion', - 'Confirmation' => 'Confirmation', - 'Do you really want to delete this element ?' => 'Voulez-vous vraiment supprimer cet élément ?', - 'Confirm' => 'Je confirme', - 'Please retry' => 'Merci de réessayer', - 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', - 'Update this image' => 'Mettre à jour cette image', - 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', - 'Additional Folders' => 'Dossier additionnels', - 'Select a folder...' => 'Choisissez un dossier de contenu...', - ' (default)' => '(défaut)', - 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', - 'No Folders found' => 'Aucun dossier trouvé', - 'ID' => 'ID', - 'Folder title' => 'Titre du dossier', - 'Remove the product from this category' => 'Supprimer le produit de cette catégorie', - 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', - 'Select a tax tule' => 'Sélectionnez une règle de taxes', - 'Details' => 'Détails', - 'Product EAN Code' => 'Code EAN du produit', - 'Product weight' => 'Poids du produit', - 'Kg' => 'Kg', - 'Current quantity' => 'Quantité actuelle', - 'Promotion' => 'Promotion', - 'Product price' => 'Prix du produit', - 'Combination builder' => 'Constructeur de combinaison', - 'Add a new combination' => 'Ajouter une nouvelle combinaison', - 'Reference' => 'Reference', - 'EAN Code' => 'Code EAN', - 'Quantity' => 'Quantité', - 'Weight
(Kg)' => 'Poids
(Kg) ', - 'Default' => 'Défaut', - 'Sale' => 'Vente', - 'New' => 'Nouveau', - 'Delete this combination' => 'Supprimer cette combinaison', - 'Attribute' => 'Attribut', - 'Select an attribute...' => 'Sélectionnez un attribut', - 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', - 'Attribute values' => 'Valeur des attributs', - 'Remove selected values' => 'Supprimer la valeur sélectionnée', - 'Create a new combination' => 'Créer une nouvelle combinaison', - 'Create this combination' => 'Créer cette combinaison', - 'Delete a combination' => 'Supprimer une combinaison', - 'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?', - 'Combination reference' => 'Référence de la combinaison', - 'Create combinations' => 'Créer des combinaisons', - 'Company' => 'Entreprise', - 'Firstname' => 'Prénom', - 'Lastname' => 'Nom', - 'Address' => 'Adresse', - 'Additional address' => 'Adresse complémentaire', - 'Zip code' => 'Code postal', - 'City' => 'Ville', - 'Phone number' => 'Numéro de téléphone', - 'Cellular phone number' => 'Numéro de téléphone portable', - 'Catalog' => 'Catalogue', - 'Editing %cat' => 'Edition de %cat', - 'Edit this category' => 'Editer cette catégorie', - 'Thelia Shipping configuration' => 'Configuration des livraison Thelia', - 'Configuration' => 'Configuration', - 'Shipping configuration' => 'Configuration du transport', - 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', - 'Change this shipping configuration' => 'Modifier cette configuration de livraison', - 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', - 'Create coupon' => 'Créer un code promo', - 'Coupon' => 'Code promo', - 'Create' => 'Créer', - 'Coupons : ' => 'Codes promo', - 'Create a new coupon' => 'Créer un nouveau code promo', - 'Files manager' => 'Gestionnaire de fichier', - 'Back-office users' => 'Utilisateurs du back-office', - 'Taxes' => 'Taxes', - 'Create a new administrator' => 'Créer un nouvel administrateur', - 'Login' => 'Connexion', - 'First Name' => 'Prénom', - 'Last Name' => 'Nom', - 'Profile' => 'Profile', - 'Superadministrator' => 'Super-administrateur', - 'Change this administrator' => 'Modifier cet administrateur', - 'Delete this administrator' => 'Supprimer cet administrateur', - 'FirstName' => 'Prénom', - 'LastName' => 'Nom', - 'Password' => 'Mot de passe', - 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', - 'Update a new administrator' => 'Modifier cet administrateur', - 'Update' => 'Mettre à jour', - 'Delete administrator' => 'Supprimer un administrateur', - 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', - 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', - 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', - 'Edit a document' => 'Modifier un document', - 'Document' => 'Document', - 'Editing document "%name"' => 'En cours de modification du document "%name"', - 'Edit document "%name"' => 'Modifier le document "%name"', - 'Back' => 'Retour', - 'Document informations' => 'Informations sur le document', - 'File' => 'Fichier', - 'Post Scriptum' => 'Post-scriptum', - 'Thelia System Variables' => 'Variables Thelia', - 'System variables' => 'Gestion des variables', - 'Thelia system variables' => 'Variables Thelia', - 'Add a new variable' => 'Ajouter une variable', - 'Save chages' => 'Enregistrer les modifications', - 'Save changes' => 'Enregistrer les modifications', - 'Purpose' => 'Objet', - 'Value' => 'Valeur', - 'Action' => 'Action', - 'Change this variable' => 'Modifier cette variable', - 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', - 'Delete this variable' => 'Supprimer cette variable', - 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', - 'Variable name' => 'Nom de la variable', - 'Variable value' => 'Valeur de la variable', - 'Variable purpose' => 'Objet de la variable', - 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', - 'Create a new variable' => 'Créer une nouvelle variable', - 'Create this variable' => 'Ajouter cette variable', - 'Delete a variable' => 'Supprimer une variable', - 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', + 'Page not found' => 'Page non trouvée', + 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', + 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', 'Back-office home' => 'Accueil administration', 'Dashboard' => 'Tableau de bord', 'Sales' => 'Ventes', @@ -193,30 +32,142 @@ return array( 'Latest version available' => 'Dernière version disponible', 'News' => 'Actualités', 'Click here' => 'Cliquez ici', - 'Edit a customer' => 'Editer un client', - 'Editing customer "%name"' => 'Edition du client "%name"', - 'Customer informations' => 'Informations client', - 'Default address' => 'Adresse par défaut', - 'Other addresses' => 'Autres adresses', - 'Add a new address' => 'Ajouter une nouvelle adresse', - 'Phone' => 'Téléphone', - 'Cellular phone' => 'Téléphone portable', - 'Edit this address' => 'Editer cette adresse', - 'Use this address by default' => 'Utiliser comme adresse par défaut', - 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', - 'orders for this customer' => 'commandes pour ce client', - 'Order n°' => 'Commande n° ', - 'Date & Hour' => 'Date et heure', - 'Amount' => 'Montant', - 'Status' => 'Etat', - 'Create a customer address' => 'Créer une adresse client', - 'Create this address' => 'Créer cette adresse', - 'Edit a customer address' => 'Modifier une adresse client', - 'Save this address' => 'Sauvegarder cette adresse', - 'Use address by default' => 'Utiliser comme adresse par défaut', - 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', - 'Delete address' => 'Supprimer cette adresse', - 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Thelia Mailing System' => 'Configuration des envois de mails', + 'Home' => 'Accueil', + 'Configuration' => 'Configuration', + 'Mailing system' => 'Envoi des e-mails', + 'Configuration mailing system' => 'Configuration du système d\'envoie de mail', + 'Enable remote SMTP use : ' => 'Activer l\'utilisation d\'un serveur SMTP distant', + 'Host :' => 'Host', + 'Host' => 'Host', + 'Port :' => 'Port', + 'Port' => 'Port', + 'Encryption :' => 'Chiffrement:', + 'Encryption' => 'Chiffrement', + 'Username :' => 'Nom d\'utilisateur', + 'Username' => 'Nom d\'utilisateur', + 'Password :' => 'Mot de passe', + 'Auth Mode :' => 'Mode d\'authentification:', + 'Auth Mode' => 'Mode d\'authentification', + 'Timeout :' => 'Timeout:', + 'Timeout' => 'Timeout', + 'Source IP :' => 'IP source', + 'Source IP' => 'IP source', + 'Edit a currency' => 'Modifier une devise', + 'Currencies' => 'Monnaie', + 'Editing currency "%name"' => 'En cours d\'édition de la devise "%name"', + 'Edit currency "%name"' => 'Modifier la devise "%name"', + 'Currency name' => 'Nom de la devise', + 'Currency ISO 4217 Code' => 'Devise code ISO 4217', + 'Code' => 'Code', + 'More information about ISO 4217' => 'Plus d\'information à propos de l\'ISO 4217', + 'Currency symbol' => 'Symbole de la devise', + 'Symbol' => 'Symbole', + 'The symbol, such as $, £, €...' => 'Le symbole (ex: $, £, €...)', + 'Rate' => 'Taux', + 'Thelia System Variables' => 'Variables Thelia', + 'System variables' => 'Gestion des variables', + 'Thelia system variables' => 'Variables Thelia', + 'Add a new variable' => 'Ajouter une variable', + 'Save chages' => 'Enregistrer les modifications', + 'Save changes' => 'Enregistrer les modifications', + 'Purpose' => 'Objet', + 'Name' => 'Nom', + 'Value' => 'Valeur', + 'Action' => 'Action', + 'Change this variable' => 'Modifier cette variable', + 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', + 'Delete this variable' => 'Supprimer cette variable', + 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', + 'Variable name' => 'Nom de la variable', + 'Variable value' => 'Valeur de la variable', + 'Variable purpose' => 'Objet de la variable', + 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', + 'Create a new variable' => 'Créer une nouvelle variable', + 'Create this variable' => 'Ajouter cette variable', + 'Delete a variable' => 'Supprimer une variable', + 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', + 'Countries' => 'Pays', + 'Add a new country' => 'Ajouter un pays', + 'Default' => 'Défaut', + 'Shop' => 'Magasin', + 'N° ISO' => 'N° ISO', + 'ISO Code' => 'Code ISO', + 'Actions' => 'Actions', + 'Change this country' => 'Modifier ce pays', + 'Delete this country' => 'Supprimer ce pays', + 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', + 'Country title' => 'Titre du pays', + 'Alpha code 2' => 'Code alpha 2', + 'Alpha code 3' => 'Code alpha 3', + 'Create a new country' => 'Créer un nouveau pays', + 'Create this country' => 'Créer ce pays', + 'Cancel' => 'Annuler', + 'Delete country' => 'Supprimer le pays', + 'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', + 'Error' => 'Erreur', + 'And' => 'Et', + 'Edit' => 'Editer', + 'Delete' => 'Supprimer', + 'Code :' => 'Code', + 'code' => 'code', + 'Title :' => 'Titre', + 'title' => 'titre', + 'Is enabled' => 'Est valide', + 'Is available on special offers' => 'Est valide sur les offres promotionnelles', + 'Is cumulative' => 'Est cumulable', + 'Is removing postage' => 'Offre les frais de port', + 'Expiration date :' => 'Date de fin de validité', + 'yyyy-mm-dd' => 'jjjj--mm--aa', + 'Is unlimited' => 'Est illimité', + 'Max usage :' => 'Utilisations max', + 'max usage' => 'utilisations max', + 'Type :' => 'Type', + 'Please select a coupon type' => 'Merci d\'entrer le type de code', + 'Amount :' => 'Montant', + '14.50' => '14.50', + 'Short description :' => 'Description courte', + 'short description' => 'description court', + 'Long description :' => 'Description longue', + 'long description' => 'description longue', + 'Save your modifications' => 'Enregistrer les modifications', + 'Please save your Coupon in oder to affect it some conditions' => 'Veuillez sauvegarder votre code promo afin de lui affecter des conditions', + 'Conditions' => 'Conditions', + 'Save this condition' => 'Enregistrer cette condition', + 'Condition type :' => 'Type de condition:', + 'Or' => 'Ou', + 'Condition\'s category :' => 'Type de condition', + 'Please select a condition category' => 'Merci d\'entrer le type de condition', + 'Operator :' => 'Opérateur:', + 'Mailing templates' => 'Template e-mail', + 'Title' => 'Civilité', + 'Subject' => 'Sujet', + 'Edit a tax rule' => 'Modifier une règle de taxe', + 'Taxes rules' => 'Règles de taxes', + 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', + 'Description' => 'Description', + 'Taxes' => 'Taxes', + 'The detailed description.' => 'Description détaillée', + 'Manage taxes' => 'Gérer les taxes', + 'Choose a country' => 'Choisissez un pays', + 'Countries that have the same tax rule' => 'Pays ayant les mêmes règles de taxe', + 'NONE' => 'AUCUN', + 'Add tax to this group' => 'Ajouter une taxe à ce groupe', + 'Apply' => 'Appliquer', + 'uncheck all' => 'Tous décocher', + 'Edit tax rule taxes' => 'Modifier une règle de taxe', + 'Coupons' => 'Codes Promo', + 'Coupon' => 'Code promo', + 'Browse' => 'Parcourir', + 'Coupons : ' => 'Codes promo', + 'List' => 'Liste', + 'Create a new coupon' => 'Créer un nouveau code promo', + 'Enabled coupons' => 'Codes promo disponibles', + 'Days before expiration' => 'Jours de validité', + 'Usage left' => 'Utilisation restante', + 'Unlimited' => 'Illimité', + 'Disabled coupons' => 'Codes désactivés', + 'Expiration date' => 'Date de fin', 'Edit content' => 'Modifier le contenu', 'Edit content %title' => 'Modifier le contenu %title', 'Edit previous content' => 'Modifier le contenu précèdent', @@ -227,115 +178,138 @@ return array( 'Images' => 'Images', 'Documents' => 'Documents', 'Modules' => 'Modules', + 'Rewritten URL' => 'URL réécrite', + 'Top level' => 'Niveau racine', + 'Visibility' => 'Visibilité', 'Remove associated folder' => 'Supprimer le dossier associé', - 'Edit a tax rule' => 'Modifier une règle de taxe', - 'Taxes rules' => 'Règles de taxes', - 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', - 'Manage taxes' => 'Gérer les taxes', - 'Choose a country' => 'Choisissez un pays', - 'Countries that have the same tax rule' => 'Pays ayant les mêmes règles de taxe', - 'NONE' => 'AUCUN', - 'Add tax to this group' => 'Ajouter une taxe à ce groupe', - 'Apply' => 'Appliquer', - 'uncheck all' => 'Tous décocher', - 'Edit tax rule taxes' => 'Modifier une règle de taxe', - 'Welcome' => 'Bienvenue', 'Thelia Back Office' => 'Thelia Back Office', - 'Username' => 'Nom d\'utilisateur', - 'Loading Thelia lastest news...' => 'Chargement des dernières nouvelles sur Thelia', - 'Related content' => 'Contenu associé', - 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', - 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', - 'Select a folder content...' => 'Choisissez un dossier de contenu...', - 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', - 'No available content in this folder' => 'Ce dossier est vide de contenus', - 'No folders found' => 'Aucun dossier n\'a été trouvé.', - 'Content title' => 'Titre du contenu', + 'Version %ver' => 'Version %ver', + 'View site' => 'Voir le site', + 'View shop' => 'Voir la boutique', + 'Profil' => 'Profile', + 'Close administation session' => 'Quitter l\'interface d\'administration', + 'Logout' => 'Se déconnecter', + 'All orders' => 'Toutes les commandes', + 'Catalog' => 'Catalogue', + 'Folders' => 'Dossier', + 'Search' => 'Recherche', + 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', + '© Thelia 2013' => '© Thelia 2013', + 'Published by OpenStudio' => 'Edité par OpenStudio', + 'Thelia support forum' => 'Communauté Thelia', + 'Thelia contributions' => 'Contributions Thelia', + 'Customer' => 'Client', + 'Customers list' => 'Liste des clients', + 'Add a new Customer' => 'Ajouter un client', + 'Reference' => 'Reference', + 'Last name' => 'Nom', + 'First name' => 'Prénom', + 'Registration date' => 'Date d\'inscription', + 'Date of last order' => 'Date du dernier achat', + 'Last order amount' => 'Montant du dernier achat', + 'Edit this customer' => 'Modifier ce client', + 'Send a mail to this customer' => 'Contacter ce client par mail', + 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', + 'Company' => 'Entreprise', + 'Firstname' => 'Prénom', + 'Lastname' => 'Nom', + 'Address' => 'Adresse', + 'Additional address' => 'Adresse complémentaire', + 'Zip code' => 'Code postal', + 'City' => 'Ville', + 'Email address' => 'Adresse e-mail', + 'Create a new customer' => 'Ajouter un client', + 'Create this customer' => 'Ajouter ce client', + 'Delete customer' => 'Supprimer ce client', + 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', + 'Edit a profile' => 'Modifier un profile', + 'Profiles' => 'Profiles', + 'Editing profile' => 'En cours d\'édition du profile', + 'Postscriptum' => 'Post-scriptum', + 'Save' => ' Enregistrer', + 'Resource' => 'Ressource', + 'Rights' => 'Droits', + 'View' => 'Voir', + 'Create' => 'Créer', + 'Update' => 'Mettre à jour', + 'Manage module rights' => 'Gérer les droits des modules', + 'Module' => 'Module', + 'Shipping configuration' => 'Configuration du transport', + 'Country' => 'Pays', + 'Add this country' => 'Ajouter ce pays', + 'Remove country' => 'Supprimer le pays', + 'Do you really want to remove this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', + 'Edit product' => 'Modifier le produit', + 'Edit previous product' => 'Modifier le produit précèdent', + 'Edit next product' => 'Modifier le produit suivant', + 'General' => 'Général', + 'Details' => 'Détails', + 'Files manager' => 'Gestionnaire de fichier', + 'Thelia configuration' => 'Configuration thelia', + 'Product catalog configuration' => 'Configuration du catalogue produit', + 'Product templates' => 'Template produit', + 'Product attributes' => 'Attributs produit', + 'Product features' => 'Caractéristiques produit', + 'Shipping zones' => 'Zones de livraison', + 'System parameters' => 'Paramètres système ', + 'Store' => 'Magasin', + 'Administration profiles' => 'Gestion des administrateurs', + 'Administrators' => 'Administrateurs', + 'Languages & URLs' => 'Langues et URLs', + 'Translations' => 'Traductions', + 'Administration logs' => 'Gestion des logs', + 'System logs' => 'Journal des logs', + 'Add a new folder' => 'Ajouter une nouveau dossier', + 'ID' => 'ID', + 'Folder title' => 'Titre du dossier', + 'Online' => 'En ligne', 'Position' => 'Position', + 'Edit this folder' => 'Modifier ce dossier', + 'Add a new content' => 'Ajouter un nouveau contenu', + 'Content title' => 'Titre du contenu', + 'Edit this content' => 'Modifier ce contenu', 'Delete this content' => 'Supprimer ce contenu', - 'This product contains no contents' => 'Ce produit ne contient aucun contenu', - 'Product accessories' => 'Accessoires produit', - 'Select a category...' => 'Sélectionnez une catégorie...', - 'Select a product...' => 'Sélectionnez un produit', - 'No categories found' => 'Aucune catégorie trouvée', - 'Accessory title' => 'Titre de l\'accessoire', - 'Delete this accessory' => 'Supprimer cet accessoire', - 'Additional categories' => 'Catégorie additionnelle', - 'Category title' => 'Titre de la catégorie', - 'Remove related content' => 'Supprimer le contenu lié', - 'Do you really want to remove this related content from the product ?' => 'Voulez-vous vraiment enlever ce contenu lié de ce produit ?', - 'Remove an accessory' => 'Enlever un accessoire', - 'Do you really want to remove this accessory from the product ?' => 'Voulez-vous vraiment enlever cet accessoire de ce produit ?', - 'Remove from category' => 'Enlever de la catégorie', - 'Do you really want to remove the product from this category ?' => 'Voulez-vous vraiment enlever ce produit de cette catégorie ?', - 'Enter new category position' => 'Classement de la catégorie ', - 'Lire la suite' => 'Lire la suite', + 'Create a new folder' => 'Ajouter un nouveau dossier', + 'Create this folder' => 'Créer ce dossier', + 'Delete folder' => 'Supprimer le dossier', + 'Delete content' => 'Supprimer le contenu', + 'Thelia Shipping zones' => 'Zones de livraison Thelia', + 'Change this shipping zone' => 'Changer cette zone de livraison', + 'Delete this value' => 'Supprimer cette valeur', + 'Create this value' => 'Créer cette valeur', + 'Remove from all product templates' => 'Supprimer de tous les templates produits', + 'Install a new module' => 'Installer un nouveau module', + 'Classic modules' => 'Module classique', + 'Delivery modules' => 'Module de livraison', + 'Payment modules' => 'Module de paiement', + 'Delete a module' => 'Supprimer un module', + 'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?', + 'An error occured' => 'Une erreur est apparue', + 'Edit an attribute' => 'Modifier un attribut', + 'Attributes' => 'Attributs', + 'Attribute values' => 'Valeur des attributs', 'Attribute title' => 'Titre de l\'attribut', - 'Delete this attribute' => 'Supprimer cet attribut', - 'This template contains no attributes' => 'Ce template ne contient aucun attribut', - 'Remove attribute' => 'Enlever l\'attribut', - 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', - 'Label' => 'Libellé', - 'Edit a language' => 'Modifier une langue', - 'Edit this language' => 'Modifier cette langue', - 'Current product template' => 'Gabarit de produit actuel', - 'Do not use a product template' => 'Ne pas utiliser de gabarit', - 'Product Attributes' => 'Déclinaisons du produit', - 'Attribute Name' => 'Nom de la déclinaison', - 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', - 'Product Features' => 'Caractéristiques du produit', - 'Feature Name' => 'Nom de la caractéristique', - 'Feature value for this product' => 'Valeur de la caractéristique', - 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', - 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', - 'Feature value' => 'Valeur de la caractéristique', - 'Currencies' => 'Monnaie', + 'Edit a tax' => 'Modifier une taxe', 'Update rates' => 'Mettre à jour les taux', 'Add a new currency' => 'Ajouter une devise', 'ISO 4217 Code' => 'Code ISO 4217', - 'Symbol' => 'Symbole', 'Rate in €' => 'Taux en € ', 'Change this currency' => 'Modifier cette devise', 'Delete this currency' => 'Supprimer cette devise', - 'Currency name' => 'Nom de la devise', 'ISO 4217 code' => 'Code ISO 4217', - 'Code' => 'Code', - 'Currency symbol' => 'Symbole de la devise', 'Currency rate' => 'Taux de la devise', 'Create a new currency' => 'Créer une nouvelle devise', 'Create this currency' => 'Créer cette devise', 'Delete currency' => 'Supprimer la devise', - 'Edit an attribute' => 'Modifier un attribut', - 'Attributes' => 'Attributs', - 'Delete this value' => 'Supprimer cette valeur', - 'Create this value' => 'Créer cette valeur', - 'Edit category' => 'Editer la catégorie', - 'Edit category %title' => 'Editer le titre de la catégorie : %title', - 'Edit previous category' => 'Modifier la catégorie précédente', - 'Preview category page' => 'Aperçu de la page catégorie', - 'Edit next category' => 'Modifier la catégorie suivante', - 'Search' => 'Recherche', - 'Customer' => 'Client', - 'customer ref' => 'ref client', - 'company' => 'entreprise', - 'firstname & lastname' => 'Prénom & nom', - 'last order' => 'Dernière commande', - 'order amount' => 'Montant de la commande', - 'Edit this customer' => 'Modifier ce client', - 'Send a mail to this customer' => 'Contacter ce client par mail', - 'Edit this order' => 'Editer cette commande ', - 'Product' => 'Produit', - 'Product title' => 'Titre du produit', - 'Edit folder' => 'Modifier le dossier', - 'Edit previous folder' => 'Modifier le dossier précèdent', - 'Edit next folder' => 'Modifier le dossier suivant', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', 'Cart' => 'Panier', + 'Product' => 'Produit', 'Unit. price' => 'Prix unitaire', 'Tax' => 'Taxes', 'Unit taxed price' => 'Prix unitaire TTC', + 'Quantity' => 'Quantité', 'Taxed total' => 'Montant total des taxes', 'Total without discount' => 'Montant total hors remises', 'Discount' => 'Remise', @@ -355,41 +329,170 @@ return array( 'Invoice reference' => 'Facture ref', 'Invoice date' => 'Facture date', 'Street address' => 'Adresse', - 'Country' => 'Pays', + 'Phone' => 'Téléphone', 'Delivery address' => 'Adresse de livraison', 'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF', 'PDF | Purchase order' => 'Bon de commande PDF', 'Edit delivery address' => 'Editer l\'adresse de livraison', 'Edit order address' => 'Editer l\'adresse de commande ', 'Confirm changes' => 'Valider les modifications', + 'System Logs' => 'Logs système', + 'System Logs configuration' => 'Configuration logs système', + 'General configuration' => 'Configuration générale', + 'Log lines format' => 'Format des lignes des logs', + 'Yes' => 'Oui', + 'No' => 'Non', + 'File names' => 'Noms du fichier', + 'IP Addresses' => 'Adresse IP', + 'Destinations' => 'Destinations', + 'Template title' => 'Titre du template', + 'Delete template' => 'Supprimer le template', + 'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce template ? Il sera supprimer de tous les produits', + 'Edit folder' => 'Modifier le dossier', + 'Edit previous folder' => 'Modifier le dossier précèdent', + 'Edit next folder' => 'Modifier le dossier suivant', + 'Select a folder...' => 'Choisissez un dossier de contenu...', + 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', + 'Select a folder content...' => 'Choisissez un dossier de contenu...', + 'No folders found' => 'Aucun dossier n\'a été trouvé.', + 'Remove related content' => 'Supprimer le contenu lié', + 'Thelia Languages' => 'Langages Thelia', + 'Languages' => 'Langages', + 'Locale' => 'Locale', + 'Parameters' => 'Paramètres', + 'activate' => 'activer', + 'deactivate' => 'désactiver', + 'en_US' => 'en_US', + 'd-m-Y' => 'j-m-A', + 'Delete language' => 'Supprimer langage', + 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', + 'Edit category' => 'Editer la catégorie', + 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Edit previous category' => 'Modifier la catégorie précédente', + 'Preview category page' => 'Aperçu de la page catégorie', + 'Edit next category' => 'Modifier la catégorie suivante', + 'Related content' => 'Contenu associé', + 'No available content in this folder' => 'Ce dossier est vide de contenus', + 'Welcome' => 'Bienvenue', + 'Login' => 'Connexion', + 'Password' => 'Mot de passe', + 'Loading Thelia lastest news...' => 'Chargement des dernières nouvelles sur Thelia', + 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', + 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', + 'This product contains no contents' => 'Ce produit ne contient aucun contenu', + 'Product accessories' => 'Accessoires produit', + 'Select a category...' => 'Sélectionnez une catégorie...', + 'Select a product...' => 'Sélectionnez un produit', + 'No categories found' => 'Aucune catégorie trouvée', + 'Accessory title' => 'Titre de l\'accessoire', + 'Delete this accessory' => 'Supprimer cet accessoire', + 'Additional categories' => 'Catégorie additionnelle', + ' (default)' => '(défaut)', + 'Category title' => 'Titre de la catégorie', + 'Remove the product from this category' => 'Supprimer le produit de cette catégorie', + 'Do you really want to remove this related content from the product ?' => 'Voulez-vous vraiment enlever ce contenu lié de ce produit ?', + 'Remove an accessory' => 'Enlever un accessoire', + 'Do you really want to remove this accessory from the product ?' => 'Voulez-vous vraiment enlever cet accessoire de ce produit ?', + 'Remove from category' => 'Enlever de la catégorie', + 'Do you really want to remove the product from this category ?' => 'Voulez-vous vraiment enlever ce produit de cette catégorie ?', + 'Lire la suite' => 'Lire la suite', + 'Label' => 'Libellé', + 'Edit a language' => 'Modifier une langue', + 'Edit this language' => 'Modifier cette langue', + 'Current product template' => 'Gabarit de produit actuel', + 'Do not use a product template' => 'Ne pas utiliser de gabarit', + 'Product Attributes' => 'Déclinaisons du produit', + 'Attribute Name' => 'Nom de la déclinaison', + 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', + 'Product Features' => 'Caractéristiques du produit', + 'Feature Name' => 'Nom de la caractéristique', + 'Feature value for this product' => 'Valeur de la caractéristique', + 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', + 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', + 'Feature value' => 'Valeur de la caractéristique', + 'Select an attribute...' => 'Sélectionnez un attribut', + 'Delete this attribute' => 'Supprimer cet attribut', + 'This template contains no attributes' => 'Ce template ne contient aucun attribut', + 'Remove attribute' => 'Enlever l\'attribut', + 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', + 'Enter new category position' => 'Classement de la catégorie ', + 'Show logs' => 'Voir les loge', + 'Period' => 'Période', + 'From' => 'De', + 'To' => 'A', + 'Resources' => 'Ressources', + 'Store configuration' => 'Configuration du magasin', + 'customer ref' => 'ref client', + 'company' => 'entreprise', + 'firstname & lastname' => 'Prénom & nom', + 'last order' => 'Dernière commande', + 'order amount' => 'Montant de la commande', + 'Order n°' => 'Commande n° ', + 'Date & Hour' => 'Date et heure', + 'Amount' => 'Montant', + 'Status' => 'Etat', + 'Edit this order' => 'Editer cette commande ', + 'Product title' => 'Titre du produit', + 'Profile code' => 'Code du profile', + 'Short description' => 'Courte description', + 'Delete profile' => 'Supprimer le profile', + 'Do you really want to delete this profile ?' => 'Voulez-vous vraiment supprimer ce profile ?', + 'You can\'t delete this profile' => 'Vous ne pouvez supprimer ce produit', 'Update coupon' => 'Mettre à jour le code', + 'Please retry' => 'Merci de réessayer', 'Please select another condition' => 'Merci de sélectionner une autre condition', - 'Add a new folder' => 'Ajouter une nouveau dossier', - 'Online' => 'En ligne', - 'Add a new content' => 'Ajouter un nouveau contenu', - 'Edit this content' => 'Modifier ce contenu', - 'Create a new folder' => 'Ajouter un nouveau dossier', - 'Create this folder' => 'Créer ce dossier', - 'Delete folder' => 'Supprimer le dossier', - 'Delete content' => 'Supprimer le contenu', + 'Edit a country' => 'Modifier un pays', + 'Country description' => 'Description du pays', + 'Create coupon' => 'Créer un code promo', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', - 'Store' => 'Magasin', - 'Store configuration' => 'Configuration du magasin', - 'General' => 'Général', - 'Edit product' => 'Modifier le produit', - 'Edit previous product' => 'Modifier le produit précèdent', - 'Edit next product' => 'Modifier le produit suivant', - 'Edit a tax' => 'Modifier une taxe', + 'Edit a customer' => 'Editer un client', + 'Editing customer "%name"' => 'Edition du client "%name"', + 'Edit customer %firstname %lastname' => 'Modifier le client %firstname %lastname', + 'Customer informations' => 'Informations client', + 'Default address' => 'Adresse par défaut', + 'Other addresses' => 'Autres adresses', + 'Add a new address' => 'Ajouter une nouvelle adresse', + 'Cellular phone' => 'Téléphone portable', + 'Edit this address' => 'Editer cette adresse', + 'Use this address by default' => 'Utiliser comme adresse par défaut', + 'orders for this customer' => 'commandes pour ce client', + 'Sorry, customer ID=%id was not found.' => 'Veuillez nous excuser, le client ID=%id n\'a pas été trouvé', + 'Create a customer address' => 'Créer une adresse client', + 'Create this address' => 'Créer cette adresse', + 'Edit a customer address' => 'Modifier une adresse client', + 'Save this address' => 'Sauvegarder cette adresse', + 'Use address by default' => 'Utiliser comme adresse par défaut', + 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', + 'Delete address' => 'Supprimer cette adresse', + 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Configure' => 'Configurer', + 'Thelia Shipping configuration' => 'Configuration des livraison Thelia', + 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', + 'Change this shipping configuration' => 'Modifier cette configuration de livraison', + 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', + 'Edit an image' => 'Modifier une image', + 'Image' => 'Image', + 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', + 'Edit image "%name"' => 'Modification de l\'image "%name"', + 'Back' => 'Retour', + 'Preview' => 'Aperçu', + 'File' => 'Fichier', + 'Post Scriptum' => 'Post-scriptum', + 'Add' => 'Ajouter', + 'Zones' => 'Zones', + 'Delete this zone' => 'Supprimer cette zone', + 'Remove zone' => 'Supprimer zone', + 'Edit a document' => 'Modifier un document', + 'Document' => 'Document', + 'Editing document "%name"' => 'En cours de modification du document "%name"', + 'Edit document "%name"' => 'Modifier le document "%name"', + 'Document informations' => 'Informations sur le document', 'Coupon : ' => 'Code promo', - 'Is enabled' => 'Est valide', - 'Expiration date' => 'Date de fin', 'days left' => 'jours restant', - 'Usage left' => 'Utilisation restante', - 'Unlimited' => 'Illimité', 'May be cumulative' => 'Pourra être cumulé', 'Can\'t be cumulative' => 'Ne pourra pas être cumulé', 'Will remove postage' => 'Enlèvera les frais de port', @@ -397,49 +500,9 @@ return array( 'Will be available on special offers' => 'Sera disponible sur les offres spéciales', 'Won\'t be available on special offers' => 'Ne sera pas disponible sur les offres spéciales', 'Application field' => 'Champs d\'application', - 'And' => 'Et', - 'Edit' => 'Editer', 'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?', - 'Mailing templates' => 'Template e-mail', - 'Code :' => 'Code', - 'code' => 'code', - 'Title :' => 'Titre', - 'title' => 'titre', - 'Is available on special offers' => 'Est valide sur les offres promotionnelles', - 'Is cumulative' => 'Est cumulable', - 'Is removing postage' => 'Offre les frais de port', - 'Expiration date :' => 'Date de fin de validité', - 'yyyy-mm-dd' => 'jjjj--mm--aa', - 'Is unlimited' => 'Est illimité', - 'Max usage :' => 'Utilisations max', - 'max usage' => 'utilisations max', - 'Type :' => 'Type', - 'Please select a coupon type' => 'Merci d\'entrer le type de code', - 'Amount :' => 'Montant', - '14.50' => '14.50', - 'Short description :' => 'Description courte', - 'short description' => 'description court', - 'Long description :' => 'Description longue', - 'long description' => 'description longue', - 'Save your modifications' => 'Enregistrer les modifications', - 'Conditions' => 'Conditions', - 'Save this condition' => 'Enregistrer cette condition', - 'Condition\'s category :' => 'Type de condition', - 'Please select a condition category' => 'Merci d\'entrer le type de condition', - 'Delete' => 'Supprimer', - 'Thelia Mailing System' => 'Configuration des envois de mails', - 'Mailing system' => 'Envoi des e-mails', - 'Host :' => 'Host', - 'Host' => 'Host', - 'Port :' => 'Port', - 'Port' => 'Port', - 'Username :' => 'Nom d\'utilisateur', - 'Password :' => 'Mot de passe', - 'Source IP :' => 'IP source', - 'Source IP' => 'IP source', - 'Product attributes' => 'Attributs produit', - 'Remove from all product templates' => 'Supprimer de tous les templates produits', - 'Product features' => 'Caractéristiques produit', + 'Templates' => 'Template', + 'Template name' => 'Nom du template', 'taxes' => 'taxes', 'and' => 'et', 'tax rules' => 'règles de taxe', @@ -451,138 +514,34 @@ return array( 'Do you really want to delete this tax ?' => 'Voulez-vous vraiment supprimer cette taxe ?', 'Delete tax rule' => 'Supprimer une règle de taxe', 'Do you really want to delete this tax rule ?' => 'Voulez-vous vraiment supprimer cette règle de taxe ?', - 'Administration logs' => 'Gestion des logs', - 'Show logs' => 'Voir les loge', - 'Period' => 'Période', - 'From' => 'De', - 'To' => 'A', - 'Administrators' => 'Administrateurs', - 'Resources' => 'Ressources', - 'Shipping zones' => 'Zones de livraison', - 'Add' => 'Ajouter', - 'Zones' => 'Zones', - 'Delete this zone' => 'Supprimer cette zone', - 'Remove zone' => 'Supprimer zone', + 'Back-office users' => 'Utilisateurs du back-office', + 'Create a new administrator' => 'Créer un nouvel administrateur', + 'First Name' => 'Prénom', + 'Last Name' => 'Nom', + 'Profile' => 'Profile', + 'Superadministrator' => 'Super-administrateur', + 'Change this administrator' => 'Modifier cet administrateur', + 'Delete this administrator' => 'Supprimer cet administrateur', + 'FirstName' => 'Prénom', + 'LastName' => 'Nom', + 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', + 'Update a new administrator' => 'Modifier cet administrateur', + 'Delete administrator' => 'Supprimer un administrateur', + 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', + 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', + 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', 'Cancel this order' => 'Annuler cette commande', 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', - 'System Logs' => 'Logs système', - 'System logs' => 'Journal des logs', - 'System Logs configuration' => 'Configuration logs système', - 'General configuration' => 'Configuration générale', - 'Log lines format' => 'Format des lignes des logs', - 'File names' => 'Noms du fichier', - 'IP Addresses' => 'Adresse IP', - 'Destinations' => 'Destinations', - 'Edit a profile' => 'Modifier un profile', - 'Profiles' => 'Profiles', - 'Postscriptum' => 'Post-scriptum', - 'Resource' => 'Ressource', - 'Rights' => 'Droits', - 'View' => 'Voir', - 'Manage module rights' => 'Gérer les droits des modules', - 'Module' => 'Module', - 'Subject' => 'Sujet', - 'Thelia Languages' => 'Langages Thelia', - 'Languages' => 'Langages', - 'Locale' => 'Locale', - 'Parameters' => 'Paramètres', - 'activate' => 'activer', - 'deactivate' => 'désactiver', - 'ISO Code' => 'Code ISO', - 'en_US' => 'en_US', - 'd-m-Y' => 'j-m-A', - 'Delete language' => 'Supprimer langage', - 'Error' => 'Erreur', - 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', - 'An error occured' => 'Une erreur est apparue', - 'Templates' => 'Template', - 'Template name' => 'Nom du template', - 'Page not found' => 'Page non trouvée', - 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', - 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', - 'Install a new module' => 'Installer un nouveau module', - 'Classic modules' => 'Module classique', - 'Delivery modules' => 'Module de livraison', - 'Payment modules' => 'Module de paiement', - 'Delete a module' => 'Supprimer un module', - 'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?', - 'Customers list' => 'Liste des clients', - 'Add a new Customer' => 'Ajouter un client', - 'Last name' => 'Nom', - 'First name' => 'Prénom', - 'Registration date' => 'Date d\'inscription', - 'Date of last order' => 'Date du dernier achat', - 'Last order amount' => 'Montant du dernier achat', - 'Email address' => 'Adresse e-mail', - 'Create a new customer' => 'Ajouter un client', - 'Create this customer' => 'Ajouter ce client', - 'Delete customer' => 'Supprimer ce client', - 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', - 'Countries' => 'Pays', - 'Add a new country' => 'Ajouter un pays', - 'Shop' => 'Magasin', - 'N° ISO' => 'N° ISO', - 'Change this country' => 'Modifier ce pays', - 'Delete this country' => 'Supprimer ce pays', - 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', - 'Country title' => 'Titre du pays', - 'Alpha code 2' => 'Code alpha 2', - 'Alpha code 3' => 'Code alpha 3', - 'Create a new country' => 'Créer un nouveau pays', - 'Create this country' => 'Créer ce pays', - 'Delete country' => 'Supprimer le pays', - 'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', - 'Coupons' => 'Codes Promo', - 'Browse' => 'Parcourir', - 'List' => 'Liste', - 'Enabled coupons' => 'Codes promo disponibles', - 'Days before expiration' => 'Jours de validité', - 'Disabled coupons' => 'Codes désactivés', - 'Edit an image' => 'Modifier une image', - 'Image' => 'Image', - 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', - 'Edit image "%name"' => 'Modification de l\'image "%name"', - 'Preview' => 'Aperçu', - 'Add this country' => 'Ajouter ce pays', - 'Remove country' => 'Supprimer le pays', - 'Do you really want to remove this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', - 'Edit a country' => 'Modifier un pays', - 'Country description' => 'Description du pays', - 'Version %ver' => 'Version %ver', - 'View site' => 'Voir le site', - 'View shop' => 'Voir la boutique', - 'Profil' => 'Profile', - 'Close administation session' => 'Quitter l\'interface d\'administration', - 'Logout' => 'Se déconnecter', - 'All orders' => 'Toutes les commandes', - 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', - '© Thelia 2013' => '© Thelia 2013', - 'Published by OpenStudio' => 'Edité par OpenStudio', - 'Thelia support forum' => 'Communauté Thelia', - 'Thelia contributions' => 'Contributions Thelia', - 'Thelia configuration' => 'Configuration thelia', - 'Product catalog configuration' => 'Configuration du catalogue produit', - 'Product templates' => 'Template produit', - 'System parameters' => 'Paramètres système ', - 'Administration profiles' => 'Gestion des administrateurs', - 'Languages & URLs' => 'Langues et URLs', - 'Translations' => 'Traductions', - 'Template title' => 'Titre du template', - 'Delete template' => 'Supprimer le template', - 'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce template ? Il sera supprimer de tous les produits', 'Translation' => 'Traduction', 'PDF templates' => 'Template du PDF', 'Thelia core' => 'Cœur de Thelia', 'Warning' => 'Attention', - 'Profile code' => 'Code du profile', - 'Delete profile' => 'Supprimer le profile', - 'Do you really want to delete this profile ?' => 'Voulez-vous vraiment supprimer ce profile ?', - 'You can\'t delete this profile' => 'Vous ne pouvez supprimer ce produit', 'Categories in %cat' => 'Catégories en $cat', 'Top level categories' => 'Catégories de niveau 1 ', 'Add a new category' => 'Ajouter une catégorie', 'Browse this category' => 'Parcourir cette catégorie', + 'Edit this category' => 'Editer cette catégorie', 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', @@ -595,8 +554,12 @@ return array( 'Create this category' => 'Créer cette catégorie', 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', + 'Product price' => 'Prix du produit', 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', + 'Select a tax tule' => 'Sélectionnez une règle de taxes', 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', + 'Product weight' => 'Poids du produit', + 'Kg' => 'Kg', 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', 'Create a new product' => 'Créer un nouveau produit', 'Create this product' => 'Créer ce produit', @@ -605,6 +568,65 @@ return array( 'Delete product' => 'Supprimer ce produit', 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', 'Enter new product position' => 'Classement du produit', - 'Thelia Shipping zones' => 'Zones de livraison Thelia', - 'Change this shipping zone' => 'Changer cette zone de livraison', + 'OK' => 'OK', + 'Product reference' => 'Référence produit', + 'You can attach this product to more categories in the details tab.' => 'Vous pouvez lier ce produit à plus de catégories dans l\'onglet détail.', + 'Product created on %date_create. Last modification: %date_change' => 'Produit créé le %date_create. Dernière modification : %date_change ', + 'classic modules' => 'module classique', + 'Enable/Disable' => 'Activer/Désactiver', + 'Deactivate %title module' => 'Désactiver le module %title', + 'deactivation' => 'désactivation', + 'activate %title module' => 'activer le module %title', + 'activation' => 'activation', + 'Configure this module' => 'Configurer ce module', + 'Read the documentation of this module' => 'Lire la documentation de ce module', + 'Edit this module' => 'Modifier ce module', + 'Delete this module' => 'Supprimer ce module', + 'Edit information in %lng' => 'Modifier les information en %Ing', + 'Edit prices in %curr' => 'Modifier les prix en %curr', + 'Save and close' => 'Enregistrer et fermer', + 'Close' => 'Fermer', + 'Send files' => 'Envoyer les fichiers', + 'Drop files to upload' => 'Déposez les fichiers à envoyer sur le serveur', + 'Browse files' => 'Sélectionner les fichiers', + 'Can\'t load documents, please refresh this page.' => 'Échec lors du chargement du document, veuillez réessayer', + 'Update this image' => 'Mettre à jour cette image', + 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', + 'Additional Folders' => 'Dossier additionnels', + 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', + 'No Folders found' => 'Aucun dossier trouvé', + 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', + 'Confirmation' => 'Confirmation', + 'Do you really want to delete this element ?' => 'Voulez-vous vraiment supprimer cet élément ?', + 'Confirm' => 'Je confirme', + 'Phone number' => 'Numéro de téléphone', + 'Cellular phone number' => 'Numéro de téléphone portable', + 'Editing %fold' => 'Modification de %fold', + '(edit)' => '(modifier)', + 'Editing %title' => 'Modifier %title', + 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', + 'Editing %cat' => 'Edition de %cat', + 'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisé si un résumé ou une introduction est nécessaire', + 'A short post-description information' => 'Une courte post-description', + 'Short conclusion' => 'Courte conclusion', + 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', + 'Product EAN Code' => 'Code EAN du produit', + 'Current quantity' => 'Quantité actuelle', + 'Promotion' => 'Promotion', + 'Combination builder' => 'Constructeur de combinaison', + 'Add a new combination' => 'Ajouter une nouvelle combinaison', + 'EAN Code' => 'Code EAN', + 'Weight
(Kg)' => 'Poids
(Kg) ', + 'Sale' => 'Vente', + 'New' => 'Nouveau', + 'Delete this combination' => 'Supprimer cette combinaison', + 'Attribute' => 'Attribut', + 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', + 'Remove selected values' => 'Supprimer la valeur sélectionnée', + 'Create a new combination' => 'Créer une nouvelle combinaison', + 'Create this combination' => 'Créer cette combinaison', + 'Delete a combination' => 'Supprimer une combinaison', + 'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?', + 'Combination reference' => 'Référence de la combinaison', + 'Create combinations' => 'Créer des combinaisons', ); From cf980aeb89233a46b9258d430c288efaa37b6b44 Mon Sep 17 00:00:00 2001 From: stephaniepinet Date: Thu, 5 Dec 2013 11:01:50 +0100 Subject: [PATCH 54/70] Update CHANGELOG.txt --- CHANGELOG.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 57daada08..06373ecc5 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -5,7 +5,7 @@ allow to create a customer in admin panel translation is implemented : - I18n directory in template or module. - - multiple extensions are available. We choose to used php but you can use other. + - multiple extensions are available. We choose to use php but you can use other. - You can translate your template or module from the admin. - Admin hook exists. With this hooks, a module can insert code in admin pages + Admin hooks exist. With this hooks, a module can insert code in admin pages From e262bbc9ea23664a6240afc1f1aad98f341a93a7 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 12:57:28 +0100 Subject: [PATCH 55/70] Added config variable titles --- install/insert.sql | 47 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/install/insert.sql b/install/insert.sql index 86fe7847b..5a90a8284 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -5,13 +5,12 @@ INSERT INTO `lang`(`id`,`title`,`code`,`locale`,`url`,`date_format`,`time_format (4, 'Italiano', 'it', 'it_IT', '', 'd/m/Y', 'H:i:s', 'd/m/y H:i:s', ',', ' ', '2', '0', NOW(), NOW()); INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updated_at`) VALUES -('session_config.default', '1', 1, 1, NOW(), NOW()), -('verifyStock', '1', 0, 0, NOW(), NOW()), +('session_config.handlers', 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', 0, 0, NOW(), NOW()), +('check-available-stock', '1', 0, 0, NOW(), NOW()), ('active-front-template', 'default', 0, 0, NOW(), NOW()), ('active-admin-template', 'default', 0, 0, NOW(), NOW()), ('active-pdf-template', 'default', 0, 0, NOW(), NOW()), ('active-mail-template', 'default', 0, 0, NOW(), NOW()), -('default_lang_without_translation', '1', 1, 1, NOW(), NOW()), ('rewriting_enable', '0', 0, 0, NOW(), NOW()), ('imagine_graphic_driver', 'gd', 0, 0, NOW(), NOW()), ('default_images_quality_percent', '75', 0, 0, NOW(), NOW()), @@ -23,27 +22,55 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat ('document_cache_dir_from_web_root', 'cache/documents', 0, 0, NOW(), NOW()), ('currency_rate_update_url', 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml', 0, 0, NOW(), NOW()), ('page_not_found_view', '404.html', 0, 0, NOW(), NOW()), -('passed_url_view', 'passed-url', 0, 0, NOW(), NOW()), +('obsolete_rewriten_url_view', 'obsolete-rewritten-url', 0, 0, NOW(), NOW()), ('use_tax_free_amounts', 0, 0, 0, NOW(), NOW()), ('process_assets', '1', 0, 0, NOW(), NOW()), ('thelia_admin_remember_me_cookie_name', 'tarmcn', 0, 0, NOW(), NOW()), ('thelia_admin_remember_me_cookie_expiration', 2592000, 0, 0, NOW(), NOW()), ('thelia_customer_remember_me_cookie_name', 'tcrmcn', 0, 0, NOW(), NOW()), ('thelia_customer_remember_me_cookie_expiration', 31536000, 0, 0, NOW(), NOW()), -('session_config.handlers', 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', 0, 0, NOW(), NOW()), -('store_name','', 0, 1, NOW(), NOW()), -('store_email','', 0, 1, NOW(), NOW()), ('url_site','', 0, 0, NOW(), NOW()), -('one_domain_foreach_lang','0', 1, 1, NOW(), NOW()), ('pdf_invoice_file', 'invoice', 0, 0, NOW(), NOW()), ('pdf_delivery_file', 'delivery', 0, 0, NOW(), NOW()), +('session_config.default', '1', 1, 1, NOW(), NOW()), +('default_lang_without_translation', '1', 1, 1, NOW(), NOW()), +('store_name','', 0, 1, NOW(), NOW()), +('store_email','', 0, 1, NOW(), NOW()), +('one_domain_foreach_lang','0', 1, 1, NOW(), NOW()), ('thelia_version','2.0.0-beta1', 1, 1, NOW(), NOW()), ('thelia_major_version','2', 1, 1, NOW(), NOW()), ('thelia_minus_version','0', 1, 1, NOW(), NOW()), ('thelia_release_version','0', 1, 1, NOW(), NOW()), -('thelia_extra_version','beta1', 1, 1, NOW(), NOW()) -; +('thelia_extra_version','beta1', 1, 1, NOW(), NOW()); +INSERT INTO `config_i18n` (`id`, `locale`, `title`, `description`, `chapo`, `postscriptum`) VALUES +(1, 'en_US', 'Class name of the session handler', NULL, NULL, NULL), +(2, 'en_US', 'Check available product stock (1) or ignore it (0) when displaying and changing ordered quantity', NULL, NULL, NULL), +(3, 'en_US', 'Name of the active front-office template', NULL, NULL, NULL), +(4, 'en_US', 'Name of the active back-office template', NULL, NULL, NULL), +(5, 'en_US', 'Name of the active PDF template', NULL, NULL, NULL), +(6, 'en_US', 'Name of the active mailing template', NULL, NULL, NULL), +(7, 'en_US', 'Enable (1) or disable (0) URL rewriting', NULL, NULL, NULL), +(8, 'en_US', 'Name of the graphic driver used by the Imagine library (see https://imagine.readthedocs.org)', NULL, NULL, NULL), +(9, 'en_US', 'The default quality (in %) of the generated images', NULL, NULL, NULL), +(10, 'en_US', 'How original (full resolution) images are delivered in the web space (symlink or copy)', NULL, NULL, NULL), +(11, 'en_US', 'How document files are delivered in the web space (symlink or copy)', NULL, NULL, NULL), +(12, 'en_US', 'Path to the directory where images are stored', NULL, NULL, NULL), +(13, 'en_US', 'Path to the directory where documents are stored', NULL, NULL, NULL), +(14, 'en_US', 'The path to the image cache directory in the web space', NULL, NULL, NULL), +(15, 'en_US', 'The path to the document cache directory in the web space', NULL, NULL, NULL), +(16, 'en_US', 'The URL to update exchange rates', NULL, NULL, NULL), +(17, 'en_US', 'File name of the 404 (not found) view in the current template (with extension, e.g. 404.html)', NULL, NULL, NULL), +(18, 'en_US', 'Name of the template view returned when an obsolete (or inactive) product URL is invoked', NULL, NULL, NULL), +(19, 'en_US', 'Display and process prices with (0) or without (1) taxes.', NULL, NULL, NULL), +(20, 'en_US', 'Compile templates assets automatically upon asset source change (1 = yes, 0 = no)', NULL, NULL, NULL), +(21, 'en_US', '"Remember me" cookie name for administration users', NULL, NULL, NULL), +(22, 'en_US', '"Remember me" cookie expiration time, in seconds, for administration users', NULL, NULL, NULL), +(23, 'en_US', '"Remember me" cookie name for customer users', NULL, NULL, NULL), +(24, 'en_US', '"Remember me" cookie expiration time, in seconds, for customer users', NULL, NULL, NULL), +(25, 'en_US', 'Base URL of the shop (e.g. http://www.yourshopdomain.com)', NULL, NULL, NULL), +(26, 'en_US', 'Name of the invoice view in the current PDF template (without extension)', NULL, NULL, NULL), +(27, 'en_US', 'Name of the delivery view in the current PDF template (without extension)', NULL, NULL, NULL); INSERT INTO `module` (`id`, `code`, `type`, `activate`, `position`, `full_namespace`, `created_at`, `updated_at`) VALUES (1, 'TheliaDebugBar', 1, 1, 1, 'TheliaDebugBar\\TheliaDebugBar', NOW(), NOW()), From 97a8d6d3bfd892287b5883df40239545b9c77da5 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 12:57:47 +0100 Subject: [PATCH 56/70] Fixed button wrapping when in tight spaces (e.g, tables) --- .../default/assets/less/thelia/thelia.less | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/templates/backOffice/default/assets/less/thelia/thelia.less b/templates/backOffice/default/assets/less/thelia/thelia.less index 2189b9307..41b37d4ca 100755 --- a/templates/backOffice/default/assets/less/thelia/thelia.less +++ b/templates/backOffice/default/assets/less/thelia/thelia.less @@ -138,17 +138,6 @@ } } - .Blocmoncompte { - float: right; - margin: 0px; - padding: 0px; - margin-top: 35px; - - color: white; - font-size: 13px; - text-shadow: 0px 1px 0px rgba(0,0,0,0.8); - } - dt { float: left; margin-right: 15px; @@ -172,6 +161,16 @@ width: 100%; } +.btn-group { + white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) + > .btn { + float: inherit; + } + > .btn + .btn { + margin-left: -4px; + } +} + // -- Login form -------------------------------------------------------------- .form-signin { From 0a7b8f05d0f2fb66ce3c84fdcafa68dd62e86c28 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 13:01:09 +0100 Subject: [PATCH 57/70] Added checkAvailableStock(), changed getPassedUrlView() to getObsoleteRewrittenUrlView() --- core/lib/Thelia/Model/ConfigQuery.php | 9 +++++++-- core/lib/Thelia/Model/Product.php | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/lib/Thelia/Model/ConfigQuery.php b/core/lib/Thelia/Model/ConfigQuery.php index e2f6a3975..e34ae5e16 100755 --- a/core/lib/Thelia/Model/ConfigQuery.php +++ b/core/lib/Thelia/Model/ConfigQuery.php @@ -77,9 +77,9 @@ class ConfigQuery extends BaseConfigQuery { return self::read("page_not_found_view", '404.html'); } - public static function getPassedUrlView() + public static function getObsoleteRewrittenUrlView() { - return self::read('passed_url_view', 'passed-url'); + return self::read('obsolete_rewriten_url_view', 'obsolete-rewritten-url'); } public static function useTaxFreeAmounts() @@ -87,6 +87,11 @@ class ConfigQuery extends BaseConfigQuery { return self::read('use_tax_free_amounts', 'default') == 1; } + public static function checkAvailableStock() + { + return self::read('check-available-stock', 1) != 0; + } + /* smtp config */ public static function isSmtpEnable() { diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index 1b3f1eefa..f2e838be2 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -267,7 +267,7 @@ class Product extends BaseProduct ->filterByView($this->getRewrittenUrlViewName()) ->filterByViewId($this->getId()) ->update(array( - "View" => ConfigQuery::getPassedUrlView() + "View" => ConfigQuery::getObsoleteRewrittenUrlView() )); $this->dispatchEvent(TheliaEvents::AFTER_DELETEPRODUCT, new ProductEvent($this)); } From 8e56fcc651721a1578b48bd820d6a19b30e8c114 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 13:01:43 +0100 Subject: [PATCH 58/70] Fixed exception when log file could not be renamed --- core/lib/Thelia/Log/Destination/TlogDestinationFile.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/lib/Thelia/Log/Destination/TlogDestinationFile.php b/core/lib/Thelia/Log/Destination/TlogDestinationFile.php index 5d9089ebe..80aa3ec25 100755 --- a/core/lib/Thelia/Log/Destination/TlogDestinationFile.php +++ b/core/lib/Thelia/Log/Destination/TlogDestinationFile.php @@ -78,10 +78,10 @@ class TlogDestinationFile extends AbstractTlogDestination } while (file_exists($file_path_bk)); - rename($file_path, $file_path_bk); + @rename($file_path, $file_path_bk); - touch($file_path); - chmod($file_path, 0666); + @touch($file_path); + @chmod($file_path, 0666); } $this->fh = fopen($file_path, $mode); From de0542b33c57cd5a4d364c12f68ffa2d2098815f Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 13:02:13 +0100 Subject: [PATCH 59/70] Changed direct accesses to verifyStok by calls to checkAvailableStock --- core/lib/Thelia/Form/CartAdd.php | 2 +- core/lib/Thelia/Model/Cart.php | 2 +- core/lib/Thelia/Model/CartItem.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/lib/Thelia/Form/CartAdd.php b/core/lib/Thelia/Form/CartAdd.php index 59d13765d..98e12acde 100755 --- a/core/lib/Thelia/Form/CartAdd.php +++ b/core/lib/Thelia/Form/CartAdd.php @@ -141,7 +141,7 @@ class CartAdd extends BaseForm ->filterByProductId($data["product"]) ->findOne(); - if ($productSaleElements->getQuantity() < $value && ConfigQuery::read("verifyStock", 1) == 1) { + if ($productSaleElements->getQuantity() < $value && ConfigQuery::checkAvailableStock()) { $context->addViolation("quantity value is not valid"); } } diff --git a/core/lib/Thelia/Model/Cart.php b/core/lib/Thelia/Model/Cart.php index 36b604258..c1f28bc3d 100755 --- a/core/lib/Thelia/Model/Cart.php +++ b/core/lib/Thelia/Model/Cart.php @@ -36,7 +36,7 @@ class Cart extends BaseCart if ($product && $productSaleElements && $product->getVisible() == 1 && - ($productSaleElements->getQuantity() > $cartItem->getQuantity() || ! ConfigQuery::read("verifyStock", 1))) + ($productSaleElements->getQuantity() > $cartItem->getQuantity() || ! ConfigQuery::checkAvailableStock())) { $item = new CartItem(); diff --git a/core/lib/Thelia/Model/CartItem.php b/core/lib/Thelia/Model/CartItem.php index 5432bd1ab..ef72c070c 100755 --- a/core/lib/Thelia/Model/CartItem.php +++ b/core/lib/Thelia/Model/CartItem.php @@ -51,7 +51,7 @@ class CartItem extends BaseCartItem $value = $currentQuantity; } - if(ConfigQuery::read("verifyStock", 1) == 1) + if(ConfigQuery::checkAvailableStock()) { $productSaleElements = $this->getProductSaleElements(); @@ -75,7 +75,7 @@ class CartItem extends BaseCartItem $value = $currentQuantity; } - if(ConfigQuery::read("verifyStock", 1) == 1) + if(ConfigQuery::checkAvailableStock()) { $productSaleElements = $this->getProductSaleElements(); From 5857c07ef0b70a6fd5addb25cb6741dd3bd863ad Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 15:57:56 +0100 Subject: [PATCH 60/70] Fixed issue 118 --- core/lib/Thelia/Action/Product.php | 4 ++++ core/lib/Thelia/Action/ProductSaleElement.php | 2 +- .../Controller/Admin/ProductController.php | 2 +- .../Event/Product/ProductSetTemplateEvent.php | 20 +++++++++++++++---- .../Thelia/Core/Template/Loop/Attribute.php | 7 +++++++ .../lib/Thelia/Core/Template/Loop/Feature.php | 7 +++++++ core/lib/Thelia/Model/Product.php | 2 +- 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/core/lib/Thelia/Action/Product.php b/core/lib/Thelia/Action/Product.php index f51d95f28..4fccbf3f6 100644 --- a/core/lib/Thelia/Action/Product.php +++ b/core/lib/Thelia/Action/Product.php @@ -282,8 +282,12 @@ class Product extends BaseAction implements EventSubscriberInterface $product->setTemplateId($template_id)->save($con); + // Create a new default product sale element + $product->createProductSaleElement($con, 0, 0, 0, $event->getCurrencyId(), true); + // Store all the stuff ! $con->commit(); + } catch (\Exception $ex) { $con->rollback(); diff --git a/core/lib/Thelia/Action/ProductSaleElement.php b/core/lib/Thelia/Action/ProductSaleElement.php index 9c40025d8..cad3be374 100644 --- a/core/lib/Thelia/Action/ProductSaleElement.php +++ b/core/lib/Thelia/Action/ProductSaleElement.php @@ -67,7 +67,7 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface if ($salesElement == null) { // Create a new default product sale element - $salesElement = $event->getProduct()->createDefaultProductSaleElement($con, 0, 0, 0, $event->getCurrencyId(), true); + $salesElement = $event->getProduct()->createProductSaleElement($con, 0, 0, 0, $event->getCurrencyId(), true); } else { // This (new) one is the default $salesElement->setIsDefault(true)->save($con); diff --git a/core/lib/Thelia/Controller/Admin/ProductController.php b/core/lib/Thelia/Controller/Admin/ProductController.php index 9aa2d279e..d415317c0 100644 --- a/core/lib/Thelia/Controller/Admin/ProductController.php +++ b/core/lib/Thelia/Controller/Admin/ProductController.php @@ -652,7 +652,7 @@ class ProductController extends AbstractCrudController $this->dispatch( TheliaEvents::PRODUCT_SET_TEMPLATE, - new ProductSetTemplateEvent($product, $template_id) + new ProductSetTemplateEvent($product, $template_id, $this->getCurrentEditionCurrency()->getId()) ); } diff --git a/core/lib/Thelia/Core/Event/Product/ProductSetTemplateEvent.php b/core/lib/Thelia/Core/Event/Product/ProductSetTemplateEvent.php index 1847ca48f..af28ca73f 100644 --- a/core/lib/Thelia/Core/Event/Product/ProductSetTemplateEvent.php +++ b/core/lib/Thelia/Core/Event/Product/ProductSetTemplateEvent.php @@ -22,18 +22,19 @@ /*************************************************************************************/ namespace Thelia\Core\Event\Product; - use Thelia\Model\Product; class ProductSetTemplateEvent extends ProductEvent { - public $template_id = null; + protected $template_id = null; + protected $currency_id = 0; - public function __construct(Product $product = null, $template_id) + public function __construct(Product $product = null, $template_id, $currency_id) { parent::__construct($product); $this->template_id = $template_id; + $this->currency_id = $currency_id; } public function getTemplateId() @@ -48,4 +49,15 @@ class ProductSetTemplateEvent extends ProductEvent return $this; } -} + public function getCurrencyId() + { + return $this->currency_id; + } + + public function setCurrencyId($currency_id) + { + $this->currency_id = $currency_id; + + return $this; + } +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Template/Loop/Attribute.php b/core/lib/Thelia/Core/Template/Loop/Attribute.php index 97b540f96..2225ced66 100755 --- a/core/lib/Thelia/Core/Template/Loop/Attribute.php +++ b/core/lib/Thelia/Core/Template/Loop/Attribute.php @@ -120,6 +120,12 @@ class Attribute extends BaseI18nLoop implements PropelSearchLoopInterface if (! is_null($tpl_id)) $template[] = $tpl_id; } } + + // franck@cqfdev.fr - 05/12/2013 : if the given product has no template + // or if the product cannot be found, do not return anything. + if (empty($template)) { + return null; + } } if (! empty($template)) { @@ -175,6 +181,7 @@ class Attribute extends BaseI18nLoop implements PropelSearchLoopInterface break; } } +echo "s=".$search->toString(); return $search; diff --git a/core/lib/Thelia/Core/Template/Loop/Feature.php b/core/lib/Thelia/Core/Template/Loop/Feature.php index 6f7f12c71..74d165562 100755 --- a/core/lib/Thelia/Core/Template/Loop/Feature.php +++ b/core/lib/Thelia/Core/Template/Loop/Feature.php @@ -110,6 +110,7 @@ class Feature extends BaseI18nLoop implements PropelSearchLoopInterface $this->useFeaturePosition = true; if (null !== $product) { + // Find all template assigned to the products. $products = ProductQuery::create()->findById($product); @@ -125,6 +126,12 @@ class Feature extends BaseI18nLoop implements PropelSearchLoopInterface if (! is_null($tpl_id)) $template[] = $tpl_id; } } + + // franck@cqfdev.fr - 05/12/2013 : if the given product has no template + // or if the product cannot be found, do not return anything. + if (empty($template)) { + return null; + } } if (! empty($template)) { diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index f2e838be2..3855c46c1 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -202,7 +202,7 @@ class Product extends BaseProduct ->save($con) ; - // Create an empty product price in the default currency + // Create an empty product price in the provided currency $product_price = new ProductPrice(); $product_price From 5dfe8584ae4e7b59651833a2f4de5362b7e40ffe Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 18:08:36 +0100 Subject: [PATCH 61/70] Removed forgotten echo --- core/lib/Thelia/Core/Template/Loop/Attribute.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/lib/Thelia/Core/Template/Loop/Attribute.php b/core/lib/Thelia/Core/Template/Loop/Attribute.php index 2225ced66..66964c8b8 100755 --- a/core/lib/Thelia/Core/Template/Loop/Attribute.php +++ b/core/lib/Thelia/Core/Template/Loop/Attribute.php @@ -181,10 +181,8 @@ class Attribute extends BaseI18nLoop implements PropelSearchLoopInterface break; } } -echo "s=".$search->toString(); return $search; - } public function parseResults(LoopResult $loopResult) From e7d22f9c0a5eb922d3b218f453123e15cceeb7c2 Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 5 Dec 2013 18:20:10 +0100 Subject: [PATCH 62/70] Adding translation for Backoffice --- templates/backOffice/default/I18n/fr_FR.php | 69 +++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index a51ffc218..b1654f6aa 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -65,6 +65,7 @@ return array( 'Symbol' => 'Symbole', 'The symbol, such as $, £, €...' => 'Le symbole (ex: $, £, €...)', 'Rate' => 'Taux', + 'Sorry, currency ID=%id was not found.' => 'Veuillez nous excuser, la devise ID=%id n\'a pas été trouvée.', 'Thelia System Variables' => 'Variables Thelia', 'System variables' => 'Gestion des variables', 'Thelia system variables' => 'Variables Thelia', @@ -142,6 +143,7 @@ return array( 'Mailing templates' => 'Template e-mail', 'Title' => 'Civilité', 'Subject' => 'Sujet', + 'Sorry, message ID=%id was not found.' => 'Veuillez nous excuser, le message ID=%id n\'a pas été trouvé.', 'Edit a tax rule' => 'Modifier une règle de taxe', 'Taxes rules' => 'Règles de taxes', 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', @@ -155,6 +157,7 @@ return array( 'Add tax to this group' => 'Ajouter une taxe à ce groupe', 'Apply' => 'Appliquer', 'uncheck all' => 'Tous décocher', + 'Update tax rule taxes' => 'Modifier les taxes de cette règle de taxe', 'Edit tax rule taxes' => 'Modifier une règle de taxe', 'Coupons' => 'Codes Promo', 'Coupon' => 'Code promo', @@ -182,6 +185,7 @@ return array( 'Top level' => 'Niveau racine', 'Visibility' => 'Visibilité', 'Remove associated folder' => 'Supprimer le dossier associé', + 'Do you really want to remove the content from this folder ?' => 'Voulez-vous vraiment enlever le contenu de ce dossier ?', 'Thelia Back Office' => 'Thelia Back Office', 'Version %ver' => 'Version %ver', 'View site' => 'Voir le site', @@ -226,6 +230,7 @@ return array( 'Profiles' => 'Profiles', 'Editing profile' => 'En cours d\'édition du profile', 'Postscriptum' => 'Post-scriptum', + 'Manage resource rights' => 'Gérer les droits d\'accès aux ressources', 'Save' => ' Enregistrer', 'Resource' => 'Ressource', 'Rights' => 'Droits', @@ -234,6 +239,7 @@ return array( 'Update' => 'Mettre à jour', 'Manage module rights' => 'Gérer les droits des modules', 'Module' => 'Module', + 'Edit a shipping configuration' => 'Modifier une configuration de livraison', 'Shipping configuration' => 'Configuration du transport', 'Country' => 'Pays', 'Add this country' => 'Ajouter ce pays', @@ -244,6 +250,7 @@ return array( 'Edit next product' => 'Modifier le produit suivant', 'General' => 'Général', 'Details' => 'Détails', + 'Please wait, loading' => 'Veuillez patienter, chargement', 'Files manager' => 'Gestionnaire de fichier', 'Thelia configuration' => 'Configuration thelia', 'Product catalog configuration' => 'Configuration du catalogue produit', @@ -264,20 +271,41 @@ return array( 'Folder title' => 'Titre du dossier', 'Online' => 'En ligne', 'Position' => 'Position', + 'Browse this folder' => 'Parcourir ce dossier', 'Edit this folder' => 'Modifier ce dossier', + 'This folder has no sub-folders.' => 'Ce dossier n\'a pas de sous-dossier', + 'Contents in %fold' => 'Contenus dans %fold', + 'Top level Contents' => 'Contenu racine', 'Add a new content' => 'Ajouter un nouveau contenu', 'Content title' => 'Titre du contenu', 'Edit this content' => 'Modifier ce contenu', 'Delete this content' => 'Supprimer ce contenu', 'Create a new folder' => 'Ajouter un nouveau dossier', 'Create this folder' => 'Créer ce dossier', + 'Create a new content' => 'Créer un nouveau contenu', + 'Create this content' => 'Créer ce contenu', 'Delete folder' => 'Supprimer le dossier', + 'Do you really want to delete this folder and all its content ?' => 'Voulez-vous vraiment supprimer ce dossier et tous ces contenus ?', 'Delete content' => 'Supprimer le contenu', + 'Do you really want to delete this content ?' => 'Voulez-vous vraiment supprimer ce contenu ?', 'Thelia Shipping zones' => 'Zones de livraison Thelia', 'Change this shipping zone' => 'Changer cette zone de livraison', + 'Edit a feature' => 'Modifier une caractéristique', + 'Features' => 'Caractéristiques', + 'Feature information' => 'Information sur la caractéristique', + 'Feature values' => 'Valeur de la caractéristique', 'Delete this value' => 'Supprimer cette valeur', + 'Sorry, feature ID=%id was not found.' => 'Veuillez nous excuser, la caractéristique ID=%id n\'a pas été trouvée.', + 'Feature title' => 'Titre de la caractéristique', 'Create this value' => 'Créer cette valeur', + 'Delete feature value' => 'Supprimer la valeur de la caractéristique', + 'Do you really want to delete this feature value ?' => 'Voulez-vous vraiment supprimer cette caractéristique ?', + 'Enter new value position' => 'Entrer une nouvelle valeur de position', + 'Do you really want to delete this mailing template ?' => 'Voulez-vous vraiment supprimer ce template de mail ?', + 'Do you really want to delete this feature ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette caractéristique ? Elle sera supprimée de tous les templates produit.', + 'Do you really want to add this feature to all product templates ?' => 'Voulez-vous vraiment ajouter cette caractéristique à tous les templates produit ?', 'Remove from all product templates' => 'Supprimer de tous les templates produits', + 'Do you really want to remove this feature from all product templates ? You\'ll loose all product related data for this feature.' => 'Voulez-vous vraiment enlever cette caractéristique de tous les templates produit ? Vous allez perdre toutes les données relatives à cette caractéristique.', 'Install a new module' => 'Installer un nouveau module', 'Classic modules' => 'Module classique', 'Delivery modules' => 'Module de livraison', @@ -288,8 +316,11 @@ return array( 'Edit an attribute' => 'Modifier un attribut', 'Attributes' => 'Attributs', 'Attribute values' => 'Valeur des attributs', + 'Sorry, attribute ID=%id was not found.' => 'Veuillez nous excuser, la déclinaison ID=%id n\'a pas été trouvée.', 'Attribute title' => 'Titre de l\'attribut', + 'Do you really want to delete this attribute value ?' => 'Voulez-vous vraiment supprimer cette valeur de déclinaison ?', 'Edit a tax' => 'Modifier une taxe', + 'Editing tax' => 'En cours d\'édition de la taxe', 'Update rates' => 'Mettre à jour les taux', 'Add a new currency' => 'Ajouter une devise', 'ISO 4217 Code' => 'Code ISO 4217', @@ -301,6 +332,7 @@ return array( 'Create a new currency' => 'Créer une nouvelle devise', 'Create this currency' => 'Créer cette devise', 'Delete currency' => 'Supprimer la devise', + 'Do you really want to delete this currency ?' => 'Voulez-vous vraiment supprimer cette devise ?', 'Edit an order' => 'Editer une commande', 'Ordered products' => 'Produits commandés', 'Invoice and Delivery' => 'Livraison et facturation', @@ -340,6 +372,7 @@ return array( 'System Logs configuration' => 'Configuration logs système', 'General configuration' => 'Configuration générale', 'Log lines format' => 'Format des lignes des logs', + 'Message level' => 'Niveau du message', 'Yes' => 'Oui', 'No' => 'Non', 'File names' => 'Noms du fichier', @@ -356,6 +389,7 @@ return array( 'Select a folder content...' => 'Choisissez un dossier de contenu...', 'No folders found' => 'Aucun dossier n\'a été trouvé.', 'Remove related content' => 'Supprimer le contenu lié', + 'Do you really want to remove this related content ?' => 'Voulez-vous vraiment enlever ce contenu lié ?', 'Thelia Languages' => 'Langages Thelia', 'Languages' => 'Langages', 'Locale' => 'Locale', @@ -365,6 +399,7 @@ return array( 'en_US' => 'en_US', 'd-m-Y' => 'j-m-A', 'Delete language' => 'Supprimer langage', + 'Do you really want to delete this language ?' => 'Voulez-vous vraiment supprimer cette langue ?', 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', 'Edit category' => 'Editer la catégorie', 'Edit category %title' => 'Editer le titre de la catégorie : %title', @@ -416,6 +451,11 @@ return array( 'Remove attribute' => 'Enlever l\'attribut', 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', 'Enter new category position' => 'Classement de la catégorie ', + 'Select an feature...' => 'Sélectionnez une caractéristique..', + 'Delete this feature' => 'Supprimer cette caractéristique', + 'This template contains no features' => 'Ce template ne contient aucune caractéristique', + 'Remove feature' => 'Enlever la caractéristique', + 'Do you really want to remove this feature from the template ?' => 'Voulez-vous vraiment enlever cette caractéristique du template ?', 'Show logs' => 'Voir les loge', 'Period' => 'Période', 'From' => 'De', @@ -443,12 +483,16 @@ return array( 'Please select another condition' => 'Merci de sélectionner une autre condition', 'Edit a country' => 'Modifier un pays', 'Country description' => 'Description du pays', + 'Sorry, country ID=%id was not found.' => 'Veuillez nous excuser, le pays ID=%id n\'a pas été trouvé.', 'Create coupon' => 'Créer un code promo', 'Edit a system variable' => 'Modifier une variable système', 'Editing variable "%name"' => 'Modification de la variable "%name" ', 'Edit variable %name' => 'Modifier de la variable "%name" ', 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', + 'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette déclinaison ? Elle sera enlevée de tous les templates produit.', + 'Do you really want to add this attribute to all product templates ?' => 'Voulez-vous vraiment ajouter cette déclinaison à tous les templates produit ?', + 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.' => 'Voulez-vous vraiment enlever cette déclinaison de tous les templates produit ? Vous allez perdre toutes les données produit liées à cette déclinaison.', 'Edit a customer' => 'Editer un client', 'Editing customer "%name"' => 'Edition du client "%name"', 'Edit customer %firstname %lastname' => 'Modifier le client %firstname %lastname', @@ -474,6 +518,11 @@ return array( 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', 'Change this shipping configuration' => 'Modifier cette configuration de livraison', 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', + 'Shipping configuration name' => 'Nom de la configuration de livraison', + 'Create a new shipping configuration' => 'Créer une configuration de livraison', + 'Create this shipping configuration' => 'Créer cette configuration de livraison', + 'Delete shipping configuration' => 'Supprimer une configuration de livraison', + 'Do you really want to delete this shipping configuration ?' => 'Voulez-vous vraiment supprimer cette configuration de livraison ?', 'Edit an image' => 'Modifier une image', 'Image' => 'Image', 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', @@ -482,16 +531,23 @@ return array( 'Preview' => 'Aperçu', 'File' => 'Fichier', 'Post Scriptum' => 'Post-scriptum', + 'Sorry, image ID=%id was not found.' => 'Veuillez nous excuser, l\'image ID=%id n\'a pas été trouvée.', + 'Edit a shipping zone' => 'Modifier une zone de livraison', + 'Editing shipping zone "%name"' => 'En cours de modification de la zone de livraison "%name"', + 'Edit shipping zone %title' => 'Editer la zone de livraison %title', 'Add' => 'Ajouter', 'Zones' => 'Zones', 'Delete this zone' => 'Supprimer cette zone', 'Remove zone' => 'Supprimer zone', + 'Do you really want to remove this zone ?' => 'Voulez-vous vraiment enlever cette zone ?', 'Edit a document' => 'Modifier un document', 'Document' => 'Document', 'Editing document "%name"' => 'En cours de modification du document "%name"', 'Edit document "%name"' => 'Modifier le document "%name"', 'Document informations' => 'Informations sur le document', + 'Sorry, document ID=%id was not found.' => 'Veuillez nous excuser, le document ID=%id n\'a pas été trouvé.', 'Coupon : ' => 'Code promo', + 'Is disabled' => 'Est désactivé', 'days left' => 'jours restant', 'May be cumulative' => 'Pourra être cumulé', 'Can\'t be cumulative' => 'Ne pourra pas être cumulé', @@ -501,15 +557,24 @@ return array( 'Won\'t be available on special offers' => 'Ne sera pas disponible sur les offres spéciales', 'Application field' => 'Champs d\'application', 'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?', + 'Edit a template' => 'Modifier un template', 'Templates' => 'Template', + 'Editing template "%name"' => 'En cours de modification du template "%name"', + 'Edit template "%name"' => 'Modifier le template "%name"', 'Template name' => 'Nom du template', + 'Sorry, template ID=%id was not found.' => 'Veuillez nous excuser, le template ID=%id n\'a pas été trouvé.', 'taxes' => 'taxes', 'and' => 'et', 'tax rules' => 'règles de taxe', 'Example :' => 'Exemple:', + 'Tax rules are combination of different taxes.' => 'Les règles de taxe sont une combinaison de différentes taxes.', 'Create a new tax' => 'Créer une nouvelle taxe', 'Change this tax' => 'Modifier cette taxe', 'Delete this tax' => 'Supprimer cette taxe', + 'Create a new tax rule' => 'Créer une nouvelle règle de taxe', + 'Change this tax rule' => 'Modifier cette règle de taxe', + 'Set as default tax rule' => 'Configurer en tant règle de taxe par défaut', + 'Delete this tax rule' => 'Supprimer cette règle de taxe', 'Delete tax' => 'Supprimer une taxe', 'Do you really want to delete this tax ?' => 'Voulez-vous vraiment supprimer cette taxe ?', 'Delete tax rule' => 'Supprimer une règle de taxe', @@ -534,7 +599,11 @@ return array( 'Delete an order' => 'Supprimer une commande', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', 'Translation' => 'Traduction', + 'Select which items you want to translate' => 'Sélectionnez quels éléments vous souhaitez traduire', + 'Please select items to translate' => 'Veuillez sélectionner les éléments à traduire', + 'Front-office templates' => 'Templates du Front-office', 'PDF templates' => 'Template du PDF', + 'Back-office templates' => 'Templates du Back-office', 'Thelia core' => 'Cœur de Thelia', 'Warning' => 'Attention', 'Categories in %cat' => 'Catégories en $cat', From e53588e8f0cd569b1e16183b117dbb12128ccecd Mon Sep 17 00:00:00 2001 From: gmorel Date: Thu, 5 Dec 2013 18:24:47 +0100 Subject: [PATCH 63/70] Adding translation for Backoffice --- templates/backOffice/default/I18n/fr_FR.php | 1034 ++++++------------- 1 file changed, 337 insertions(+), 697 deletions(-) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index b1654f6aa..4de1389cc 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -1,701 +1,341 @@ 'Page non trouvée', - 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', - 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', - 'Back-office home' => 'Accueil administration', - 'Dashboard' => 'Tableau de bord', - 'Sales' => 'Ventes', - 'New customers' => 'Nouveaux clients', - 'Orders' => 'Commandes', - 'First orders' => 'Premières commandes', - 'Aborted orders' => 'Paniers abandonnés', - 'Shop Informations' => 'Informations sur le magasin', - 'Customers' => 'Clients', - 'Categories' => 'Catégories', - 'Products' => 'Produits', - 'Online products' => 'Produits en ligne', - 'Offline products' => 'Produits hors ligne', - 'Sales statistics' => 'Statistiques de vente', - 'Today' => 'Aujourd\'hui', - 'This month' => 'Ce mois', - 'This year' => 'Cette année', - 'Overall sales' => 'Total des ventes', - 'Sales excluding shipping' => 'Ventes hors frais de port', - 'Yesterday sales' => 'Ventes de la veille', - 'Average cart' => 'Panier moyen', - 'Previous month sales' => 'Ventes du mois précédent', - 'Previous year sales' => 'Ventes de l\année précédente', - 'Thelia informations' => 'Informations Thelia', - 'Current version' => 'Version en cours', - 'Latest version available' => 'Dernière version disponible', - 'News' => 'Actualités', - 'Click here' => 'Cliquez ici', - 'Thelia Mailing System' => 'Configuration des envois de mails', - 'Home' => 'Accueil', - 'Configuration' => 'Configuration', - 'Mailing system' => 'Envoi des e-mails', - 'Configuration mailing system' => 'Configuration du système d\'envoie de mail', - 'Enable remote SMTP use : ' => 'Activer l\'utilisation d\'un serveur SMTP distant', - 'Host :' => 'Host', - 'Host' => 'Host', - 'Port :' => 'Port', - 'Port' => 'Port', - 'Encryption :' => 'Chiffrement:', - 'Encryption' => 'Chiffrement', - 'Username :' => 'Nom d\'utilisateur', - 'Username' => 'Nom d\'utilisateur', - 'Password :' => 'Mot de passe', - 'Auth Mode :' => 'Mode d\'authentification:', - 'Auth Mode' => 'Mode d\'authentification', - 'Timeout :' => 'Timeout:', - 'Timeout' => 'Timeout', - 'Source IP :' => 'IP source', - 'Source IP' => 'IP source', - 'Edit a currency' => 'Modifier une devise', - 'Currencies' => 'Monnaie', - 'Editing currency "%name"' => 'En cours d\'édition de la devise "%name"', - 'Edit currency "%name"' => 'Modifier la devise "%name"', - 'Currency name' => 'Nom de la devise', - 'Currency ISO 4217 Code' => 'Devise code ISO 4217', - 'Code' => 'Code', - 'More information about ISO 4217' => 'Plus d\'information à propos de l\'ISO 4217', - 'Currency symbol' => 'Symbole de la devise', - 'Symbol' => 'Symbole', - 'The symbol, such as $, £, €...' => 'Le symbole (ex: $, £, €...)', - 'Rate' => 'Taux', - 'Sorry, currency ID=%id was not found.' => 'Veuillez nous excuser, la devise ID=%id n\'a pas été trouvée.', - 'Thelia System Variables' => 'Variables Thelia', - 'System variables' => 'Gestion des variables', - 'Thelia system variables' => 'Variables Thelia', - 'Add a new variable' => 'Ajouter une variable', - 'Save chages' => 'Enregistrer les modifications', - 'Save changes' => 'Enregistrer les modifications', - 'Purpose' => 'Objet', - 'Name' => 'Nom', - 'Value' => 'Valeur', - 'Action' => 'Action', - 'Change this variable' => 'Modifier cette variable', - 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', - 'Delete this variable' => 'Supprimer cette variable', - 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', - 'Variable name' => 'Nom de la variable', - 'Variable value' => 'Valeur de la variable', - 'Variable purpose' => 'Objet de la variable', - 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', - 'Create a new variable' => 'Créer une nouvelle variable', - 'Create this variable' => 'Ajouter cette variable', - 'Delete a variable' => 'Supprimer une variable', - 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', - 'Countries' => 'Pays', - 'Add a new country' => 'Ajouter un pays', - 'Default' => 'Défaut', - 'Shop' => 'Magasin', - 'N° ISO' => 'N° ISO', - 'ISO Code' => 'Code ISO', - 'Actions' => 'Actions', - 'Change this country' => 'Modifier ce pays', - 'Delete this country' => 'Supprimer ce pays', - 'No country has been created yet. Click the + button to create one.' => 'Aucun pays n\'a encore été créé. Cliquez sur le bouton + pour en créer un.', - 'Country title' => 'Titre du pays', - 'Alpha code 2' => 'Code alpha 2', - 'Alpha code 3' => 'Code alpha 3', - 'Create a new country' => 'Créer un nouveau pays', - 'Create this country' => 'Créer ce pays', - 'Cancel' => 'Annuler', - 'Delete country' => 'Supprimer le pays', - 'Do you really want to delete this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', - 'Error' => 'Erreur', - 'And' => 'Et', - 'Edit' => 'Editer', - 'Delete' => 'Supprimer', - 'Code :' => 'Code', - 'code' => 'code', - 'Title :' => 'Titre', - 'title' => 'titre', - 'Is enabled' => 'Est valide', - 'Is available on special offers' => 'Est valide sur les offres promotionnelles', - 'Is cumulative' => 'Est cumulable', - 'Is removing postage' => 'Offre les frais de port', - 'Expiration date :' => 'Date de fin de validité', - 'yyyy-mm-dd' => 'jjjj--mm--aa', - 'Is unlimited' => 'Est illimité', - 'Max usage :' => 'Utilisations max', - 'max usage' => 'utilisations max', - 'Type :' => 'Type', - 'Please select a coupon type' => 'Merci d\'entrer le type de code', - 'Amount :' => 'Montant', - '14.50' => '14.50', - 'Short description :' => 'Description courte', - 'short description' => 'description court', - 'Long description :' => 'Description longue', - 'long description' => 'description longue', - 'Save your modifications' => 'Enregistrer les modifications', - 'Please save your Coupon in oder to affect it some conditions' => 'Veuillez sauvegarder votre code promo afin de lui affecter des conditions', - 'Conditions' => 'Conditions', - 'Save this condition' => 'Enregistrer cette condition', - 'Condition type :' => 'Type de condition:', - 'Or' => 'Ou', - 'Condition\'s category :' => 'Type de condition', - 'Please select a condition category' => 'Merci d\'entrer le type de condition', - 'Operator :' => 'Opérateur:', - 'Mailing templates' => 'Template e-mail', - 'Title' => 'Civilité', - 'Subject' => 'Sujet', - 'Sorry, message ID=%id was not found.' => 'Veuillez nous excuser, le message ID=%id n\'a pas été trouvé.', - 'Edit a tax rule' => 'Modifier une règle de taxe', - 'Taxes rules' => 'Règles de taxes', - 'Editing tax rule' => 'En cours de modification d\'une règle de taxe', - 'Description' => 'Description', - 'Taxes' => 'Taxes', - 'The detailed description.' => 'Description détaillée', - 'Manage taxes' => 'Gérer les taxes', - 'Choose a country' => 'Choisissez un pays', - 'Countries that have the same tax rule' => 'Pays ayant les mêmes règles de taxe', - 'NONE' => 'AUCUN', - 'Add tax to this group' => 'Ajouter une taxe à ce groupe', - 'Apply' => 'Appliquer', - 'uncheck all' => 'Tous décocher', - 'Update tax rule taxes' => 'Modifier les taxes de cette règle de taxe', - 'Edit tax rule taxes' => 'Modifier une règle de taxe', - 'Coupons' => 'Codes Promo', - 'Coupon' => 'Code promo', - 'Browse' => 'Parcourir', - 'Coupons : ' => 'Codes promo', - 'List' => 'Liste', - 'Create a new coupon' => 'Créer un nouveau code promo', - 'Enabled coupons' => 'Codes promo disponibles', - 'Days before expiration' => 'Jours de validité', - 'Usage left' => 'Utilisation restante', - 'Unlimited' => 'Illimité', - 'Disabled coupons' => 'Codes désactivés', - 'Expiration date' => 'Date de fin', - 'Edit content' => 'Modifier le contenu', - 'Edit content %title' => 'Modifier le contenu %title', - 'Edit previous content' => 'Modifier le contenu précèdent', - 'Preview folder page' => 'Aperçu de la page dossier', - 'Edit next content' => 'Modifier le prochain contenu', - 'General description' => 'Description générale', - 'Associations' => 'Associations', - 'Images' => 'Images', - 'Documents' => 'Documents', - 'Modules' => 'Modules', - 'Rewritten URL' => 'URL réécrite', - 'Top level' => 'Niveau racine', - 'Visibility' => 'Visibilité', - 'Remove associated folder' => 'Supprimer le dossier associé', - 'Do you really want to remove the content from this folder ?' => 'Voulez-vous vraiment enlever le contenu de ce dossier ?', - 'Thelia Back Office' => 'Thelia Back Office', - 'Version %ver' => 'Version %ver', - 'View site' => 'Voir le site', - 'View shop' => 'Voir la boutique', - 'Profil' => 'Profile', - 'Close administation session' => 'Quitter l\'interface d\'administration', - 'Logout' => 'Se déconnecter', - 'All orders' => 'Toutes les commandes', - 'Catalog' => 'Catalogue', - 'Folders' => 'Dossier', - 'Search' => 'Recherche', - 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', - '© Thelia 2013' => '© Thelia 2013', - 'Published by OpenStudio' => 'Edité par OpenStudio', - 'Thelia support forum' => 'Communauté Thelia', - 'Thelia contributions' => 'Contributions Thelia', - 'Customer' => 'Client', - 'Customers list' => 'Liste des clients', - 'Add a new Customer' => 'Ajouter un client', - 'Reference' => 'Reference', - 'Last name' => 'Nom', - 'First name' => 'Prénom', - 'Registration date' => 'Date d\'inscription', - 'Date of last order' => 'Date du dernier achat', - 'Last order amount' => 'Montant du dernier achat', - 'Edit this customer' => 'Modifier ce client', - 'Send a mail to this customer' => 'Contacter ce client par mail', - 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', - 'Company' => 'Entreprise', - 'Firstname' => 'Prénom', - 'Lastname' => 'Nom', - 'Address' => 'Adresse', - 'Additional address' => 'Adresse complémentaire', - 'Zip code' => 'Code postal', - 'City' => 'Ville', - 'Email address' => 'Adresse e-mail', - 'Create a new customer' => 'Ajouter un client', - 'Create this customer' => 'Ajouter ce client', - 'Delete customer' => 'Supprimer ce client', - 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', - 'Edit a profile' => 'Modifier un profile', - 'Profiles' => 'Profiles', - 'Editing profile' => 'En cours d\'édition du profile', - 'Postscriptum' => 'Post-scriptum', - 'Manage resource rights' => 'Gérer les droits d\'accès aux ressources', - 'Save' => ' Enregistrer', - 'Resource' => 'Ressource', - 'Rights' => 'Droits', - 'View' => 'Voir', - 'Create' => 'Créer', - 'Update' => 'Mettre à jour', - 'Manage module rights' => 'Gérer les droits des modules', - 'Module' => 'Module', - 'Edit a shipping configuration' => 'Modifier une configuration de livraison', - 'Shipping configuration' => 'Configuration du transport', - 'Country' => 'Pays', - 'Add this country' => 'Ajouter ce pays', - 'Remove country' => 'Supprimer le pays', - 'Do you really want to remove this country ?' => 'Voulez-vous vraiment supprimer ce pays ?', - 'Edit product' => 'Modifier le produit', - 'Edit previous product' => 'Modifier le produit précèdent', - 'Edit next product' => 'Modifier le produit suivant', - 'General' => 'Général', - 'Details' => 'Détails', - 'Please wait, loading' => 'Veuillez patienter, chargement', - 'Files manager' => 'Gestionnaire de fichier', - 'Thelia configuration' => 'Configuration thelia', - 'Product catalog configuration' => 'Configuration du catalogue produit', - 'Product templates' => 'Template produit', - 'Product attributes' => 'Attributs produit', - 'Product features' => 'Caractéristiques produit', - 'Shipping zones' => 'Zones de livraison', - 'System parameters' => 'Paramètres système ', - 'Store' => 'Magasin', - 'Administration profiles' => 'Gestion des administrateurs', - 'Administrators' => 'Administrateurs', - 'Languages & URLs' => 'Langues et URLs', - 'Translations' => 'Traductions', - 'Administration logs' => 'Gestion des logs', - 'System logs' => 'Journal des logs', - 'Add a new folder' => 'Ajouter une nouveau dossier', - 'ID' => 'ID', - 'Folder title' => 'Titre du dossier', - 'Online' => 'En ligne', - 'Position' => 'Position', - 'Browse this folder' => 'Parcourir ce dossier', - 'Edit this folder' => 'Modifier ce dossier', - 'This folder has no sub-folders.' => 'Ce dossier n\'a pas de sous-dossier', - 'Contents in %fold' => 'Contenus dans %fold', - 'Top level Contents' => 'Contenu racine', - 'Add a new content' => 'Ajouter un nouveau contenu', - 'Content title' => 'Titre du contenu', - 'Edit this content' => 'Modifier ce contenu', - 'Delete this content' => 'Supprimer ce contenu', - 'Create a new folder' => 'Ajouter un nouveau dossier', - 'Create this folder' => 'Créer ce dossier', - 'Create a new content' => 'Créer un nouveau contenu', - 'Create this content' => 'Créer ce contenu', - 'Delete folder' => 'Supprimer le dossier', - 'Do you really want to delete this folder and all its content ?' => 'Voulez-vous vraiment supprimer ce dossier et tous ces contenus ?', - 'Delete content' => 'Supprimer le contenu', - 'Do you really want to delete this content ?' => 'Voulez-vous vraiment supprimer ce contenu ?', - 'Thelia Shipping zones' => 'Zones de livraison Thelia', - 'Change this shipping zone' => 'Changer cette zone de livraison', - 'Edit a feature' => 'Modifier une caractéristique', - 'Features' => 'Caractéristiques', - 'Feature information' => 'Information sur la caractéristique', - 'Feature values' => 'Valeur de la caractéristique', - 'Delete this value' => 'Supprimer cette valeur', - 'Sorry, feature ID=%id was not found.' => 'Veuillez nous excuser, la caractéristique ID=%id n\'a pas été trouvée.', - 'Feature title' => 'Titre de la caractéristique', - 'Create this value' => 'Créer cette valeur', - 'Delete feature value' => 'Supprimer la valeur de la caractéristique', - 'Do you really want to delete this feature value ?' => 'Voulez-vous vraiment supprimer cette caractéristique ?', - 'Enter new value position' => 'Entrer une nouvelle valeur de position', - 'Do you really want to delete this mailing template ?' => 'Voulez-vous vraiment supprimer ce template de mail ?', - 'Do you really want to delete this feature ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette caractéristique ? Elle sera supprimée de tous les templates produit.', - 'Do you really want to add this feature to all product templates ?' => 'Voulez-vous vraiment ajouter cette caractéristique à tous les templates produit ?', - 'Remove from all product templates' => 'Supprimer de tous les templates produits', - 'Do you really want to remove this feature from all product templates ? You\'ll loose all product related data for this feature.' => 'Voulez-vous vraiment enlever cette caractéristique de tous les templates produit ? Vous allez perdre toutes les données relatives à cette caractéristique.', - 'Install a new module' => 'Installer un nouveau module', - 'Classic modules' => 'Module classique', - 'Delivery modules' => 'Module de livraison', - 'Payment modules' => 'Module de paiement', - 'Delete a module' => 'Supprimer un module', - 'Do you really want to delete this module ?' => 'Voulez-vous vraiment supprimer ce module ?', - 'An error occured' => 'Une erreur est apparue', - 'Edit an attribute' => 'Modifier un attribut', - 'Attributes' => 'Attributs', - 'Attribute values' => 'Valeur des attributs', - 'Sorry, attribute ID=%id was not found.' => 'Veuillez nous excuser, la déclinaison ID=%id n\'a pas été trouvée.', - 'Attribute title' => 'Titre de l\'attribut', - 'Do you really want to delete this attribute value ?' => 'Voulez-vous vraiment supprimer cette valeur de déclinaison ?', - 'Edit a tax' => 'Modifier une taxe', - 'Editing tax' => 'En cours d\'édition de la taxe', - 'Update rates' => 'Mettre à jour les taux', - 'Add a new currency' => 'Ajouter une devise', - 'ISO 4217 Code' => 'Code ISO 4217', - 'Rate in €' => 'Taux en € ', - 'Change this currency' => 'Modifier cette devise', - 'Delete this currency' => 'Supprimer cette devise', - 'ISO 4217 code' => 'Code ISO 4217', - 'Currency rate' => 'Taux de la devise', - 'Create a new currency' => 'Créer une nouvelle devise', - 'Create this currency' => 'Créer cette devise', - 'Delete currency' => 'Supprimer la devise', - 'Do you really want to delete this currency ?' => 'Voulez-vous vraiment supprimer cette devise ?', - 'Edit an order' => 'Editer une commande', - 'Ordered products' => 'Produits commandés', - 'Invoice and Delivery' => 'Livraison et facturation', - 'Cart' => 'Panier', - 'Product' => 'Produit', - 'Unit. price' => 'Prix unitaire', - 'Tax' => 'Taxes', - 'Unit taxed price' => 'Prix unitaire TTC', - 'Quantity' => 'Quantité', - 'Taxed total' => 'Montant total des taxes', - 'Total without discount' => 'Montant total hors remises', - 'Discount' => 'Remise', - 'Coupon code' => 'Code promo', - 'Total including discount' => 'Total avec remise', - 'Postage' => 'Frais de livraison', - 'Total' => 'Total', - 'Payment information' => 'Informations de paiement', - 'Payment module' => 'Module de paiement', - 'Transaction reference' => 'Référence de la transaction', - 'Delivery module' => 'Module de livraison', - 'tracking reference' => 'Reference Tracking', - 'Invoice informations' => 'Informations de facturation', - 'Download invoice as PDF' => 'Télécharger la facture au format PDF', - 'PDF | Invoice' => 'Facure PDF', - 'Edit invoice address' => 'Editer l\'adresse de facturation', - 'Invoice reference' => 'Facture ref', - 'Invoice date' => 'Facture date', - 'Street address' => 'Adresse', - 'Phone' => 'Téléphone', - 'Delivery address' => 'Adresse de livraison', - 'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF', - 'PDF | Purchase order' => 'Bon de commande PDF', - 'Edit delivery address' => 'Editer l\'adresse de livraison', - 'Edit order address' => 'Editer l\'adresse de commande ', - 'Confirm changes' => 'Valider les modifications', - 'System Logs' => 'Logs système', - 'System Logs configuration' => 'Configuration logs système', - 'General configuration' => 'Configuration générale', - 'Log lines format' => 'Format des lignes des logs', - 'Message level' => 'Niveau du message', - 'Yes' => 'Oui', - 'No' => 'Non', - 'File names' => 'Noms du fichier', - 'IP Addresses' => 'Adresse IP', - 'Destinations' => 'Destinations', - 'Template title' => 'Titre du template', - 'Delete template' => 'Supprimer le template', - 'Do you really want to delete this template ? It will be removed from all products.' => 'Voulez-vous vraiment supprimer ce template ? Il sera supprimer de tous les produits', - 'Edit folder' => 'Modifier le dossier', - 'Edit previous folder' => 'Modifier le dossier précèdent', - 'Edit next folder' => 'Modifier le dossier suivant', - 'Select a folder...' => 'Choisissez un dossier de contenu...', - 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', - 'Select a folder content...' => 'Choisissez un dossier de contenu...', - 'No folders found' => 'Aucun dossier n\'a été trouvé.', - 'Remove related content' => 'Supprimer le contenu lié', - 'Do you really want to remove this related content ?' => 'Voulez-vous vraiment enlever ce contenu lié ?', - 'Thelia Languages' => 'Langages Thelia', - 'Languages' => 'Langages', - 'Locale' => 'Locale', - 'Parameters' => 'Paramètres', - 'activate' => 'activer', - 'deactivate' => 'désactiver', - 'en_US' => 'en_US', - 'd-m-Y' => 'j-m-A', - 'Delete language' => 'Supprimer langage', - 'Do you really want to delete this language ?' => 'Voulez-vous vraiment supprimer cette langue ?', - 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de changer la langue par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', - 'Edit category' => 'Editer la catégorie', - 'Edit category %title' => 'Editer le titre de la catégorie : %title', - 'Edit previous category' => 'Modifier la catégorie précédente', - 'Preview category page' => 'Aperçu de la page catégorie', - 'Edit next category' => 'Modifier la catégorie suivante', - 'Related content' => 'Contenu associé', - 'No available content in this folder' => 'Ce dossier est vide de contenus', - 'Welcome' => 'Bienvenue', - 'Login' => 'Connexion', - 'Password' => 'Mot de passe', - 'Loading Thelia lastest news...' => 'Chargement des dernières nouvelles sur Thelia', - 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', - 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', - 'This product contains no contents' => 'Ce produit ne contient aucun contenu', - 'Product accessories' => 'Accessoires produit', - 'Select a category...' => 'Sélectionnez une catégorie...', - 'Select a product...' => 'Sélectionnez un produit', - 'No categories found' => 'Aucune catégorie trouvée', - 'Accessory title' => 'Titre de l\'accessoire', - 'Delete this accessory' => 'Supprimer cet accessoire', - 'Additional categories' => 'Catégorie additionnelle', - ' (default)' => '(défaut)', - 'Category title' => 'Titre de la catégorie', - 'Remove the product from this category' => 'Supprimer le produit de cette catégorie', - 'Do you really want to remove this related content from the product ?' => 'Voulez-vous vraiment enlever ce contenu lié de ce produit ?', - 'Remove an accessory' => 'Enlever un accessoire', - 'Do you really want to remove this accessory from the product ?' => 'Voulez-vous vraiment enlever cet accessoire de ce produit ?', - 'Remove from category' => 'Enlever de la catégorie', - 'Do you really want to remove the product from this category ?' => 'Voulez-vous vraiment enlever ce produit de cette catégorie ?', - 'Lire la suite' => 'Lire la suite', - 'Label' => 'Libellé', - 'Edit a language' => 'Modifier une langue', - 'Edit this language' => 'Modifier cette langue', - 'Current product template' => 'Gabarit de produit actuel', - 'Do not use a product template' => 'Ne pas utiliser de gabarit', - 'Product Attributes' => 'Déclinaisons du produit', - 'Attribute Name' => 'Nom de la déclinaison', - 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', - 'Product Features' => 'Caractéristiques du produit', - 'Feature Name' => 'Nom de la caractéristique', - 'Feature value for this product' => 'Valeur de la caractéristique', - 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', - 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', - 'Feature value' => 'Valeur de la caractéristique', - 'Select an attribute...' => 'Sélectionnez un attribut', - 'Delete this attribute' => 'Supprimer cet attribut', - 'This template contains no attributes' => 'Ce template ne contient aucun attribut', - 'Remove attribute' => 'Enlever l\'attribut', - 'Do you really want to remove this attribute from the template ?' => 'Voulez-vous vraiment enlever cet attribut de ce template ?', - 'Enter new category position' => 'Classement de la catégorie ', - 'Select an feature...' => 'Sélectionnez une caractéristique..', - 'Delete this feature' => 'Supprimer cette caractéristique', - 'This template contains no features' => 'Ce template ne contient aucune caractéristique', - 'Remove feature' => 'Enlever la caractéristique', - 'Do you really want to remove this feature from the template ?' => 'Voulez-vous vraiment enlever cette caractéristique du template ?', - 'Show logs' => 'Voir les loge', - 'Period' => 'Période', - 'From' => 'De', - 'To' => 'A', - 'Resources' => 'Ressources', - 'Store configuration' => 'Configuration du magasin', - 'customer ref' => 'ref client', - 'company' => 'entreprise', - 'firstname & lastname' => 'Prénom & nom', - 'last order' => 'Dernière commande', - 'order amount' => 'Montant de la commande', - 'Order n°' => 'Commande n° ', - 'Date & Hour' => 'Date et heure', - 'Amount' => 'Montant', - 'Status' => 'Etat', - 'Edit this order' => 'Editer cette commande ', - 'Product title' => 'Titre du produit', - 'Profile code' => 'Code du profile', - 'Short description' => 'Courte description', - 'Delete profile' => 'Supprimer le profile', - 'Do you really want to delete this profile ?' => 'Voulez-vous vraiment supprimer ce profile ?', - 'You can\'t delete this profile' => 'Vous ne pouvez supprimer ce produit', - 'Update coupon' => 'Mettre à jour le code', - 'Please retry' => 'Merci de réessayer', - 'Please select another condition' => 'Merci de sélectionner une autre condition', - 'Edit a country' => 'Modifier un pays', - 'Country description' => 'Description du pays', - 'Sorry, country ID=%id was not found.' => 'Veuillez nous excuser, le pays ID=%id n\'a pas été trouvé.', - 'Create coupon' => 'Créer un code promo', - 'Edit a system variable' => 'Modifier une variable système', - 'Editing variable "%name"' => 'Modification de la variable "%name" ', - 'Edit variable %name' => 'Modifier de la variable "%name" ', - 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', - 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', - 'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Voulez-vous vraiment supprimer cette déclinaison ? Elle sera enlevée de tous les templates produit.', - 'Do you really want to add this attribute to all product templates ?' => 'Voulez-vous vraiment ajouter cette déclinaison à tous les templates produit ?', - 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.' => 'Voulez-vous vraiment enlever cette déclinaison de tous les templates produit ? Vous allez perdre toutes les données produit liées à cette déclinaison.', - 'Edit a customer' => 'Editer un client', - 'Editing customer "%name"' => 'Edition du client "%name"', - 'Edit customer %firstname %lastname' => 'Modifier le client %firstname %lastname', - 'Customer informations' => 'Informations client', - 'Default address' => 'Adresse par défaut', - 'Other addresses' => 'Autres adresses', - 'Add a new address' => 'Ajouter une nouvelle adresse', - 'Cellular phone' => 'Téléphone portable', - 'Edit this address' => 'Editer cette adresse', - 'Use this address by default' => 'Utiliser comme adresse par défaut', - 'orders for this customer' => 'commandes pour ce client', - 'Sorry, customer ID=%id was not found.' => 'Veuillez nous excuser, le client ID=%id n\'a pas été trouvé', - 'Create a customer address' => 'Créer une adresse client', - 'Create this address' => 'Créer cette adresse', - 'Edit a customer address' => 'Modifier une adresse client', - 'Save this address' => 'Sauvegarder cette adresse', - 'Use address by default' => 'Utiliser comme adresse par défaut', - 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', - 'Delete address' => 'Supprimer cette adresse', - 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', - 'Configure' => 'Configurer', - 'Thelia Shipping configuration' => 'Configuration des livraison Thelia', - 'Add a new shipping configuration' => 'Ajouter une nouvelle configuration de livraison', - 'Change this shipping configuration' => 'Modifier cette configuration de livraison', - 'Delete this shipping configuration' => 'Supprimer cette configuration de livraison', - 'Shipping configuration name' => 'Nom de la configuration de livraison', - 'Create a new shipping configuration' => 'Créer une configuration de livraison', - 'Create this shipping configuration' => 'Créer cette configuration de livraison', - 'Delete shipping configuration' => 'Supprimer une configuration de livraison', - 'Do you really want to delete this shipping configuration ?' => 'Voulez-vous vraiment supprimer cette configuration de livraison ?', - 'Edit an image' => 'Modifier une image', - 'Image' => 'Image', - 'Editing image "%name"' => 'En cours de modification de l\'image "%name"', - 'Edit image "%name"' => 'Modification de l\'image "%name"', - 'Back' => 'Retour', - 'Preview' => 'Aperçu', - 'File' => 'Fichier', - 'Post Scriptum' => 'Post-scriptum', - 'Sorry, image ID=%id was not found.' => 'Veuillez nous excuser, l\'image ID=%id n\'a pas été trouvée.', - 'Edit a shipping zone' => 'Modifier une zone de livraison', - 'Editing shipping zone "%name"' => 'En cours de modification de la zone de livraison "%name"', - 'Edit shipping zone %title' => 'Editer la zone de livraison %title', - 'Add' => 'Ajouter', - 'Zones' => 'Zones', - 'Delete this zone' => 'Supprimer cette zone', - 'Remove zone' => 'Supprimer zone', - 'Do you really want to remove this zone ?' => 'Voulez-vous vraiment enlever cette zone ?', - 'Edit a document' => 'Modifier un document', - 'Document' => 'Document', - 'Editing document "%name"' => 'En cours de modification du document "%name"', - 'Edit document "%name"' => 'Modifier le document "%name"', - 'Document informations' => 'Informations sur le document', - 'Sorry, document ID=%id was not found.' => 'Veuillez nous excuser, le document ID=%id n\'a pas été trouvé.', - 'Coupon : ' => 'Code promo', - 'Is disabled' => 'Est désactivé', - 'days left' => 'jours restant', - 'May be cumulative' => 'Pourra être cumulé', - 'Can\'t be cumulative' => 'Ne pourra pas être cumulé', - 'Will remove postage' => 'Enlèvera les frais de port', - 'Won\'t remove postage' => 'N\'enlèvera pas les frais de port', - 'Will be available on special offers' => 'Sera disponible sur les offres spéciales', - 'Won\'t be available on special offers' => 'Ne sera pas disponible sur les offres spéciales', - 'Application field' => 'Champs d\'application', - 'Do you really want to enable this element ?' => 'Voulez-vous vraiment activer cet élément ?', - 'Edit a template' => 'Modifier un template', - 'Templates' => 'Template', - 'Editing template "%name"' => 'En cours de modification du template "%name"', - 'Edit template "%name"' => 'Modifier le template "%name"', - 'Template name' => 'Nom du template', - 'Sorry, template ID=%id was not found.' => 'Veuillez nous excuser, le template ID=%id n\'a pas été trouvé.', - 'taxes' => 'taxes', - 'and' => 'et', - 'tax rules' => 'règles de taxe', - 'Example :' => 'Exemple:', - 'Tax rules are combination of different taxes.' => 'Les règles de taxe sont une combinaison de différentes taxes.', - 'Create a new tax' => 'Créer une nouvelle taxe', - 'Change this tax' => 'Modifier cette taxe', - 'Delete this tax' => 'Supprimer cette taxe', - 'Create a new tax rule' => 'Créer une nouvelle règle de taxe', - 'Change this tax rule' => 'Modifier cette règle de taxe', - 'Set as default tax rule' => 'Configurer en tant règle de taxe par défaut', - 'Delete this tax rule' => 'Supprimer cette règle de taxe', - 'Delete tax' => 'Supprimer une taxe', - 'Do you really want to delete this tax ?' => 'Voulez-vous vraiment supprimer cette taxe ?', - 'Delete tax rule' => 'Supprimer une règle de taxe', - 'Do you really want to delete this tax rule ?' => 'Voulez-vous vraiment supprimer cette règle de taxe ?', - 'Back-office users' => 'Utilisateurs du back-office', - 'Create a new administrator' => 'Créer un nouvel administrateur', - 'First Name' => 'Prénom', - 'Last Name' => 'Nom', - 'Profile' => 'Profile', - 'Superadministrator' => 'Super-administrateur', - 'Change this administrator' => 'Modifier cet administrateur', - 'Delete this administrator' => 'Supprimer cet administrateur', - 'FirstName' => 'Prénom', - 'LastName' => 'Nom', - 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', - 'Update a new administrator' => 'Modifier cet administrateur', - 'Delete administrator' => 'Supprimer un administrateur', - 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', - 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', - 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', - 'Cancel this order' => 'Annuler cette commande', - 'Delete an order' => 'Supprimer une commande', - 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', - 'Translation' => 'Traduction', - 'Select which items you want to translate' => 'Sélectionnez quels éléments vous souhaitez traduire', - 'Please select items to translate' => 'Veuillez sélectionner les éléments à traduire', - 'Front-office templates' => 'Templates du Front-office', - 'PDF templates' => 'Template du PDF', - 'Back-office templates' => 'Templates du Back-office', - 'Thelia core' => 'Cœur de Thelia', - 'Warning' => 'Attention', - 'Categories in %cat' => 'Catégories en $cat', - 'Top level categories' => 'Catégories de niveau 1 ', - 'Add a new category' => 'Ajouter une catégorie', - 'Browse this category' => 'Parcourir cette catégorie', - 'Edit this category' => 'Editer cette catégorie', - 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', - 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', - 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', - 'Products in %cat' => 'Produits en %cat', - 'Top level Products' => 'Produits mis en avant', - 'Add a new product' => 'Ajouter un nouveau produit', - 'Delete this product' => 'Supprimer ce produit', - 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', - 'Create a new category' => 'Créer une catégorie', - 'Create this category' => 'Créer cette catégorie', - 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', - 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', - 'Product price' => 'Prix du produit', - 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', - 'Select a tax tule' => 'Sélectionnez une règle de taxes', - 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', - 'Product weight' => 'Poids du produit', - 'Kg' => 'Kg', - 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', - 'Create a new product' => 'Créer un nouveau produit', - 'Create this product' => 'Créer ce produit', - 'Delete category' => 'Supprimer cette catégorie', - 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', - 'Delete product' => 'Supprimer ce produit', - 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', - 'Enter new product position' => 'Classement du produit', - 'OK' => 'OK', - 'Product reference' => 'Référence produit', - 'You can attach this product to more categories in the details tab.' => 'Vous pouvez lier ce produit à plus de catégories dans l\'onglet détail.', - 'Product created on %date_create. Last modification: %date_change' => 'Produit créé le %date_create. Dernière modification : %date_change ', - 'classic modules' => 'module classique', - 'Enable/Disable' => 'Activer/Désactiver', - 'Deactivate %title module' => 'Désactiver le module %title', - 'deactivation' => 'désactivation', - 'activate %title module' => 'activer le module %title', - 'activation' => 'activation', - 'Configure this module' => 'Configurer ce module', - 'Read the documentation of this module' => 'Lire la documentation de ce module', - 'Edit this module' => 'Modifier ce module', - 'Delete this module' => 'Supprimer ce module', - 'Edit information in %lng' => 'Modifier les information en %Ing', - 'Edit prices in %curr' => 'Modifier les prix en %curr', - 'Save and close' => 'Enregistrer et fermer', - 'Close' => 'Fermer', - 'Send files' => 'Envoyer les fichiers', - 'Drop files to upload' => 'Déposez les fichiers à envoyer sur le serveur', - 'Browse files' => 'Sélectionner les fichiers', - 'Can\'t load documents, please refresh this page.' => 'Échec lors du chargement du document, veuillez réessayer', - 'Update this image' => 'Mettre à jour cette image', - 'There is no images attached to this %type.' => 'Il n\'y a pas d\'image liée à ce %type', - 'Additional Folders' => 'Dossier additionnels', - 'Select a folder and click (+) to add it to the additional folder list' => 'Sélectionnez un dossier et cliquez (+) pour l\'ajouter à la liste des dossiers additionnel', - 'No Folders found' => 'Aucun dossier trouvé', - 'This product doesn\'t belong to any additional folder.' => 'Ce produit n\'appartient à aucun dossier additionnel', - 'Confirmation' => 'Confirmation', - 'Do you really want to delete this element ?' => 'Voulez-vous vraiment supprimer cet élément ?', - 'Confirm' => 'Je confirme', - 'Phone number' => 'Numéro de téléphone', - 'Cellular phone number' => 'Numéro de téléphone portable', - 'Editing %fold' => 'Modification de %fold', - '(edit)' => '(modifier)', - 'Editing %title' => 'Modifier %title', - 'There is no documents attached to this %type.' => 'Il n\'y a aucune document lié à ce %type', - 'Editing %cat' => 'Edition de %cat', - 'A short description, used when a summary or an introduction is required' => 'Une courte description, utilisé si un résumé ou une introduction est nécessaire', - 'A short post-description information' => 'Une courte post-description', - 'Short conclusion' => 'Courte conclusion', - 'Can\'t load images, please refresh this page.' => 'Échec lors du chargement de l\'image, veuillez réessayer', - 'Product EAN Code' => 'Code EAN du produit', - 'Current quantity' => 'Quantité actuelle', - 'Promotion' => 'Promotion', - 'Combination builder' => 'Constructeur de combinaison', - 'Add a new combination' => 'Ajouter une nouvelle combinaison', - 'EAN Code' => 'Code EAN', - 'Weight
(Kg)' => 'Poids
(Kg) ', - 'Sale' => 'Vente', - 'New' => 'Nouveau', - 'Delete this combination' => 'Supprimer cette combinaison', - 'Attribute' => 'Attribut', - 'Select an attribute and click (+) to view available values' => 'Sélectionnez un attribut et cliquez (+) afin de voir les valeurs disponibles', - 'Remove selected values' => 'Supprimer la valeur sélectionnée', - 'Create a new combination' => 'Créer une nouvelle combinaison', - 'Create this combination' => 'Créer cette combinaison', - 'Delete a combination' => 'Supprimer une combinaison', - 'Do you really want to delete this combination ?' => 'Voulez-vous vraiment supprimer cette combinaison ?', - 'Combination reference' => 'Référence de la combinaison', - 'Create combinations' => 'Créer des combinaisons', + 'Page not found' => 'Page non trouvée', + 'The server returned a "404 Not Found"' => 'Le serveur à retourné l\'erreur "404 non trouvé"', + 'The page you\'ve requested was not found. Please check the page address, and try again.' => 'La page que vous avez demandé n\'est pas disponible.', + 'Thelia Back Office' => 'Thelia Back Office', + 'Version %ver' => 'Version %ver', + 'View site' => 'Voir le site', + 'View shop' => 'Voir la boutique', + 'Profil' => 'Profile', + 'Close administation session' => 'Quitter l\'interface d\'administration', + 'Logout' => 'Se déconnecter', + 'Home' => 'Accueil', + 'Customers' => 'Clients', + 'Orders' => 'Commandes', + 'All orders' => 'Toutes les commandes', + 'Catalog' => 'Catalogue', + 'Folders' => 'Dossier', + 'Coupons' => 'Codes Promo', + 'Configuration' => 'Configuration', + 'Modules' => 'Modules', + 'Search' => 'Recherche', + 'Thelia, the open source e-commerce solution' => 'Thelia, solution e-commerce libre', + '© Thelia 2013' => '© Thelia 2013', + 'Published by OpenStudio' => 'Edité par OpenStudio', + 'Thelia support forum' => 'Communauté Thelia', + 'Thelia contributions' => 'Contributions Thelia', + 'Thelia Mailing System' => 'Configuration des envois de mails', + 'Administration logs' => 'Gestion des logs', + 'Show logs' => 'Voir les loge', + 'Period' => 'Période', + 'From' => 'De', + 'To' => 'A', + 'Administrators' => 'Administrateurs', + 'Resources' => 'Ressources', + 'Back-office users' => 'Utilisateurs du back-office', + 'Taxes' => 'Taxes', + 'Create a new administrator' => 'Créer un nouvel administrateur', + 'Login' => 'Connexion', + 'First Name' => 'Prénom', + 'Last Name' => 'Nom', + 'Profile' => 'Profile', + 'Actions' => 'Actions', + 'Superadministrator' => 'Super-administrateur', + 'Change this administrator' => 'Modifier cet administrateur', + 'Delete this administrator' => 'Supprimer cet administrateur', + 'FirstName' => 'Prénom', + 'LastName' => 'Nom', + 'Password' => 'Mot de passe', + 'Create' => 'Créer', + 'Cancel' => 'Annuler', + 'Leave empty to keep current password' => 'Laisser ce champ vide pour ne pas modifier le mot de passe', + 'Update a new administrator' => 'Modifier cet administrateur', + 'Update' => 'Mettre à jour', + 'Delete administrator' => 'Supprimer un administrateur', + 'Do you really want to delete this administrator ?' => 'Confirmez-vous la suppression de cet adminisrateur ?', + 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', + 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'Cet administrateur est lié avec un ou plusieurs autres administrateurs. Supprimez ou modifiez ces administrateur d\'abord.', + 'Label' => 'Libellé', + 'Company' => 'Entreprise', + 'Edit a language' => 'Modifier une langue', + 'Edit this language' => 'Modifier cette langue', + 'Current product template' => 'Gabarit de produit actuel', + 'Do not use a product template' => 'Ne pas utiliser de gabarit', + 'Apply' => 'Appliquer', + 'Product Attributes' => 'Déclinaisons du produit', + 'ID' => 'ID', + 'Attribute Name' => 'Nom de la déclinaison', + 'This product template does not contains any features' => 'Ce gabarit de produit ne comporte aucune caractéristique', + 'Product Features' => 'Caractéristiques du produit', + 'Feature Name' => 'Nom de la caractéristique', + 'Feature value for this product' => 'Valeur de la caractéristique', + 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Utilisez Ctrl+clic pour choisir plus d\'une valeur. Vous pouvez aussi tout désélectionner.', + 'Enter here the feature value as free text' => 'Indiquez ici la valeur de la caractéristique', + 'Feature value' => 'Valeur de la caractéristique', + 'Related content' => 'Contenu associé', + 'You can attach here some content to this product' => 'Attachez ici un ou plusieurs contenus à ce produit', + 'Select a folder...' => 'Choisissez un dossier de contenu...', + 'Select a folder to get its content' => 'Choisissez un dossier de contenu pour lister ses contenus', + 'Select a folder content...' => 'Choisissez un dossier de contenu...', + 'Select a content and click (+) to add it to this product' => 'Chosiissez un contenu, et cliquez [+] pour l\'attacher au produit', + 'No available content in this folder' => 'Ce dossier est vide de contenus', + 'No folders found' => 'Aucun dossier n\'a été trouvé.', + 'Content title' => 'Titre du contenu', + 'Position' => 'Position', + 'Delete this content' => 'Supprimer ce contenu', + 'Category title' => 'Titre de la catégorie', + 'Enter new category position' => 'Classement de la catégorie ', + 'Lire la suite' => 'Lire la suite', + 'Value' => 'Valeur', + 'Title' => 'Civilité', + 'Product attributes' => 'Attributs produit', + 'Categories' => 'Catégories', + 'Top level categories' => 'Catégories de niveau 1 ', + 'Add a new category' => 'Ajouter une catégorie', + 'Online' => 'En ligne', + 'Browse this category' => 'Parcourir cette catégorie', + 'Edit this category' => 'Editer cette catégorie', + 'Delete this category and all its contents' => 'Supprimer cette catégorie et tout ce qu\'elle contient ? ', + 'This category has no sub-categories. To create a new one, click the + button above.' => 'Cette catégorie n\'a pas de sous-catégorie. Pour en créer une nouvelle, cliquez sur le bouton + ci-dessus.', + 'This category has no sub-categories.' => 'Cette catégorie n\'a pas de sous-catégorie.', + 'Top level Products' => 'Produits mis en avant', + 'Add a new product' => 'Ajouter un nouveau produit', + 'Reference' => 'Reference', + 'Product title' => 'Titre du produit', + 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'Cette catégorie n\'a aucun produit. Pour créer un nouveau product, cliques sur le bouton + ci-dessus. ', + 'Name' => 'Nom', + 'Enter here the category name in the default language (%title)' => 'Entrer ici le nom de la catégorie dans la langue par défaut (%title)', + 'Create a new category' => 'Créer une catégorie', + 'Create this category' => 'Créer cette catégorie', + 'Enter here the product reference' => 'Entrez ici la nouvelle référence produit', + 'Enter here the product name in the default language (%title)' => 'Entrez ici le nom du produit dans la langue par défaut (%title)', + 'Product price' => 'Prix du produit', + 'Enter here the product price in the default currency (%title)' => 'ntrez ici le prix du produit dans la langue par défaut (%title)', + 'Select a tax tule' => 'Sélectionnez une règle de taxes', + 'Select here the tax applicable to this product' => 'Sélectionnez ici la taxe applicable sur ce produit', + 'Product weight' => 'Poids du produit', + 'Kg' => 'Kg', + 'Enter here the product weight, in Kilogrammes' => 'Entrez ici le poids du produit, en Kilogrammes', + 'Create a new product' => 'Créer un nouveau produit', + 'Create this product' => 'Créer ce produit', + 'Delete category' => 'Supprimer cette catégorie', + 'Do you really want to delete this category and all its content ?' => 'Voulez-vous vraiment supprimer cette catégorie et tout ce qu\'elle contient ?', + 'Delete product' => 'Supprimer ce produit', + 'Do you really want to delete this product ?' => 'Voulez-vous vraiment supprimer ce produit ?', + 'Enter new product position' => 'Classement du produit', + 'Edit category' => 'Editer la catégorie', + 'Edit category %title' => 'Editer le titre de la catégorie : %title', + 'Thelia configuration' => 'Configuration thelia', + 'Product catalog configuration' => 'Configuration du catalogue produit', + 'Product templates' => 'Template produit', + 'Product features' => 'Caractéristiques produit', + 'Mailing templates' => 'Template e-mail', + 'Currencies' => 'Monnaie', + 'Taxes rules' => 'Règles de taxes', + 'Shipping configuration' => 'Configuration du transport', + 'Countries' => 'Pays', + 'Shipping zones' => 'Zones de livraison', + 'System parameters' => 'Paramètres système ', + 'System variables' => 'Gestion des variables', + 'Administration profiles' => 'Gestion des administrateurs', + 'Languages & URLs' => 'Langues et URLs', + 'Mailing system' => 'Envoi des e-mails', + 'System logs' => 'Journal des logs', + 'And' => 'Et', + 'Edit' => 'Editer', + 'Delete' => 'Supprimer', + 'Code :' => 'Code', + 'code' => 'code', + 'Title :' => 'Titre', + 'title' => 'titre', + 'Is enabled' => 'Est valide', + 'Is available on special offers' => 'Est valide sur les offres promotionnelles', + 'Is cumulative' => 'Est cumulable', + 'Is removing postage' => 'Offre les frais de port', + 'Expiration date :' => 'Date de fin de validité', + 'yyyy-mm-dd' => 'jjjj--mm--aa', + 'Is unlimited' => 'Est illimité', + 'Max usage :' => 'Utilisations max', + 'max usage' => 'utilisations max', + 'Type :' => 'Type', + 'Please select a coupon type' => 'Merci d\'entrer le type de code', + 'Amount :' => 'Montant', + '14.50' => '14.50', + 'Short description :' => 'Description courte', + 'short description' => 'description court', + 'Long description :' => 'Description longue', + 'long description' => 'description longue', + 'Save your modifications' => 'Enregistrer les modifications', + 'Conditions' => 'Conditions', + 'Save this condition' => 'Enregistrer cette condition', + 'Condition\'s category :' => 'Type de condition', + 'Please select a condition category' => 'Merci d\'entrer le type de condition', + 'Coupon' => 'Code promo', + 'Coupons : ' => 'Codes promo', + 'Create a new coupon' => 'Créer un nouveau code promo', + 'Browse' => 'Parcourir', + 'List' => 'Liste', + 'Enabled coupons' => 'Codes promo disponibles', + 'Code' => 'Code', + 'Days before expiration' => 'Jours de validité', + 'Usage left' => 'Utilisation restante', + 'Unlimited' => 'Illimité', + 'Disabled coupons' => 'Codes désactivés', + 'Expiration date' => 'Date de fin', + 'Amount' => 'Montant', + 'Update coupon' => 'Mettre à jour le code', + 'Please retry' => 'Merci de réessayer', + 'Please select another condition' => 'Merci de sélectionner une autre condition', + 'Edit a customer' => 'Editer un client', + 'Editing customer "%name"' => 'Edition du client "%name"', + 'Customer informations' => 'Informations client', + 'Firstname' => 'Prénom', + 'Lastname' => 'Nom', + 'Default address' => 'Adresse par défaut', + 'Address' => 'Adresse', + 'Additional address' => 'Adresse complémentaire', + 'Zip code' => 'Code postal', + 'City' => 'Ville', + 'Other addresses' => 'Autres adresses', + 'Add a new address' => 'Ajouter une nouvelle adresse', + 'Phone' => 'Téléphone', + 'Edit this address' => 'Editer cette adresse', + 'Use this address by default' => 'Utiliser comme adresse par défaut', + 'Delete this customer and all his orders' => 'Supprimer ce client et toutes ses commandes', + 'orders for this customer' => 'commandes pour ce client', + 'Order n°' => 'Commande n° ', + 'Date & Hour' => 'Date et heure', + 'Status' => 'Etat', + 'Create this address' => 'Créer cette adresse', + 'Use address by default' => 'Utiliser comme adresse par défaut', + 'Do you really want to use this address by default ?' => 'Voulez-vous vraiment utiliser cette adresse comme adresse par défaut ?', + 'Delete address' => 'Supprimer cette adresse', + 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', + 'Customer' => 'Client', + 'Customers list' => 'Liste des clients', + 'Add a new Customer' => 'Ajouter un client', + 'Edit this customer' => 'Modifier ce client', + 'Send a mail to this customer' => 'Contacter ce client par mail', + 'Email address' => 'Adresse e-mail', + 'Create a new customer' => 'Ajouter un client', + 'Create this customer' => 'Ajouter ce client', + 'Delete customer' => 'Supprimer ce client', + 'Do you really want to delete this customer ?' => 'Voulez-vous supprimer ce client ? ', + 'Back' => 'Retour', + 'Save' => ' Enregistrer', + 'Description' => 'Description', + 'Back-office home' => 'Accueil administration', + 'Dashboard' => 'Tableau de bord', + 'Sales' => 'Ventes', + 'New customers' => 'Nouveaux clients', + 'First orders' => 'Premières commandes', + 'Aborted orders' => 'Paniers abandonnés', + 'Shop Informations' => 'Informations sur le magasin', + 'Products' => 'Produits', + 'Online products' => 'Produits en ligne', + 'Offline products' => 'Produits hors ligne', + 'Sales statistics' => 'Statistiques de vente', + 'Today' => 'Aujourd\'hui', + 'This month' => 'Ce mois', + 'This year' => 'Cette année', + 'Overall sales' => 'Total des ventes', + 'Sales excluding shipping' => 'Ventes hors frais de port', + 'Yesterday sales' => 'Ventes de la veille', + 'Average cart' => 'Panier moyen', + 'Previous month sales' => 'Ventes du mois précédent', + 'Previous year sales' => 'Ventes de l\année précédente', + 'Thelia informations' => 'Informations Thelia', + 'Current version' => 'Version en cours', + 'Latest version available' => 'Dernière version disponible', + 'News' => 'Actualités', + 'Click here' => 'Cliquez ici', + 'Editing %cat' => 'Edition de %cat', + 'No' => 'Non', + 'Yes' => 'Oui', + 'OK' => 'OK', + 'Save and close' => 'Enregistrer et fermer', + 'Quantity' => 'Quantité', + 'deactivate' => 'désactiver', + 'en_US' => 'en_US', + 'd-m-Y' => 'j-m-A', + 'Username' => 'Nom d\'utilisateur', + 'Host :' => 'Host', + 'Host' => 'Host', + 'Port :' => 'Port', + 'Port' => 'Port', + 'Username :' => 'Nom d\'utilisateur', + 'Password :' => 'Mot de passe', + 'Source IP :' => 'IP source', + 'Source IP' => 'IP source', + 'Variable name' => 'Nom de la variable', + 'Purpose' => 'Objet', + 'Edit an order' => 'Editer une commande', + 'Ordered products' => 'Produits commandés', + 'Invoice and Delivery' => 'Livraison et facturation', + 'Cart' => 'Panier', + 'Product' => 'Produit', + 'Unit. price' => 'Prix unitaire', + 'Tax' => 'Taxes', + 'Unit taxed price' => 'Prix unitaire TTC', + 'Taxed total' => 'Montant total des taxes', + 'Total without discount' => 'Montant total hors remises', + 'Discount' => 'Remise', + 'Coupon code' => 'Code promo', + 'Total including discount' => 'Total avec remise', + 'Postage' => 'Frais de livraison', + 'Total' => 'Total', + 'Payment information' => 'Informations de paiement', + 'Payment module' => 'Module de paiement', + 'Transaction reference' => 'Référence de la transaction', + 'Delivery module' => 'Module de livraison', + 'tracking reference' => 'Reference Tracking', + 'Invoice informations' => 'Informations de facturation', + 'Download invoice as PDF' => 'Télécharger la facture au format PDF', + 'PDF | Invoice' => 'Facure PDF', + 'Edit invoice address' => 'Editer l\'adresse de facturation', + 'Invoice reference' => 'Facture ref', + 'Invoice date' => 'Facture date', + 'Street address' => 'Adresse', + 'Country' => 'Pays', + 'Delivery address' => 'Adresse de livraison', + 'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF', + 'PDF | Purchase order' => 'Bon de commande PDF', + 'Edit delivery address' => 'Editer l\'adresse de livraison', + 'Edit order address' => 'Editer l\'adresse de commande ', + 'Confirm changes' => 'Valider les modifications', + 'Edit this order' => 'Editer cette commande ', + 'Cancel this order' => 'Annuler cette commande', + 'Delete an order' => 'Supprimer une commande', + 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment sup primer cette commande ? ', + 'View' => 'Voir', + 'customer ref' => 'ref client', + 'company' => 'entreprise', + 'firstname & lastname' => 'Prénom & nom', + 'last order' => 'Dernière commande', + 'order amount' => 'Montant de la commande', + 'Add' => 'Ajouter', + 'Warning' => 'Attention', + 'Edit a system variable' => 'Modifier une variable système', + 'Editing variable "%name"' => 'Modification de la variable "%name" ', + 'Edit variable %name' => 'Modifier de la variable "%name" ', + 'Variable value' => 'Valeur de la variable', + 'Variable created on %date_create. Last modification: %date_change' => 'Variable créée le %date_create. Dernière modification: %date_change', + 'Sorry, variable ID=%id was not found.' => 'Désolé, la variable ID=%id n\'a pas été trouvée.', + 'Thelia System Variables' => 'Variables Thelia', + 'Thelia system variables' => 'Variables Thelia', + 'Add a new variable' => 'Ajouter une variable', + 'Save chages' => 'Enregistrer les modifications', + 'Save changes' => 'Enregistrer les modifications', + 'Action' => 'Action', + 'Change this variable' => 'Modifier cette variable', + 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', + 'Delete this variable' => 'Supprimer cette variable', + 'This variable could not be changed.' => 'Cette variable ne peut pas être modifiée', + 'Variable purpose' => 'Objet de la variable', + 'Create a new variable' => 'Créer une nouvelle variable', + 'Create this variable' => 'Ajouter cette variable', + 'Delete a variable' => 'Supprimer une variable', + 'Do you really want to delete this variable ?' => 'Voulez-vous vraiment supprimer cette variable ?', ); From c2292b75d490c6cdec4fe7823e7de97fbd0693c1 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Thu, 5 Dec 2013 18:46:35 +0100 Subject: [PATCH 64/70] Fixed issue #123. Introduced NumberFormat::formatStandardNumber() --- .../Controller/Admin/ProductController.php | 11 ++++++----- core/lib/Thelia/Tools/NumberFormat.php | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/lib/Thelia/Controller/Admin/ProductController.php b/core/lib/Thelia/Controller/Admin/ProductController.php index d415317c0..eca9849e3 100644 --- a/core/lib/Thelia/Controller/Admin/ProductController.php +++ b/core/lib/Thelia/Controller/Admin/ProductController.php @@ -1201,10 +1201,10 @@ class ProductController extends AbstractCrudController } return new JsonResponse(array( - 'price_with_tax' => NumberFormat::getInstance($this->getRequest())->format($price_with_tax, null, '.'), - 'price_without_tax' => NumberFormat::getInstance($this->getRequest())->format($price_without_tax, null, '.'), - 'sale_price_with_tax' => NumberFormat::getInstance($this->getRequest())->format($sale_price_with_tax, null, '.'), - 'sale_price_without_tax' => NumberFormat::getInstance($this->getRequest())->format($sale_price_without_tax, null, '.') + 'price_with_tax' => NumberFormat::getInstance($this->getRequest())->formatStandardNumber($price_with_tax), + 'price_without_tax' => NumberFormat::getInstance($this->getRequest())->formatStandardNumber($price_without_tax), + 'sale_price_with_tax' => NumberFormat::getInstance($this->getRequest())->formatStandardNumber($sale_price_with_tax), + 'sale_price_without_tax' => NumberFormat::getInstance($this->getRequest())->formatStandardNumber($sale_price_without_tax) )); } @@ -1236,7 +1236,8 @@ class ProductController extends AbstractCrudController if ($convert != 0) { $return_price = $prix * Currency::getDefaultCurrency()->getRate(); } + // Format the number using '.', to perform further calculation - return NumberFormat::getInstance($this->getRequest())->format($return_price, null, '.'); + return NumberFormat::getInstance($this->getRequest())->formatStandardNumber($return_price); } } diff --git a/core/lib/Thelia/Tools/NumberFormat.php b/core/lib/Thelia/Tools/NumberFormat.php index ae25404d7..f3e69129b 100644 --- a/core/lib/Thelia/Tools/NumberFormat.php +++ b/core/lib/Thelia/Tools/NumberFormat.php @@ -39,6 +39,22 @@ class NumberFormat return new NumberFormat($request); } + /** + * Get a standard number, with '.' as decimal point and no thousands separator + * so that this number can be used to perform calculations. + * + * @param float $number the number + * @param string $decimals number of decimal figures + */ + public function formatStandardNumber($number, $decimals = null) { + + $lang = $this->request->getSession()->getLang(); + + if ($decimals == null) $decimals = $lang->getDecimals(); + + return number_format($number, $decimals, '.', ''); + } + public function format($number, $decimals = null, $decPoint = null, $thousandsSep = null) { $lang = $this->request->getSession()->getLang(); From 0c5683ef2559ad25fc399712b2aadf5f4f348b30 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 6 Dec 2013 10:37:08 +0100 Subject: [PATCH 65/70] fix close #131 --- core/lib/Thelia/Controller/Admin/HomeController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/lib/Thelia/Controller/Admin/HomeController.php b/core/lib/Thelia/Controller/Admin/HomeController.php index e8711f97d..0fcee29ca 100644 --- a/core/lib/Thelia/Controller/Admin/HomeController.php +++ b/core/lib/Thelia/Controller/Admin/HomeController.php @@ -41,6 +41,8 @@ class HomeController extends BaseAdminController public function loadStatsAjaxAction() { + if (null !== $response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW)) return $response; + $data = new \stdClass(); $data->title = "Stats on " . $this->getRequest()->query->get('month', date('m')) . "/" . $this->getRequest()->query->get('year', date('Y')); From 52c7c6c9f7b78ff3a7e96df0ed784e42add8cc18 Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Fri, 6 Dec 2013 10:44:06 +0100 Subject: [PATCH 66/70] Added translation of email templates --- .../Controller/Admin/TranslationsController.php | 4 ++++ core/lib/Thelia/Core/Template/Loop/Template.php | 5 ++++- templates/backOffice/default/translations.html | 14 ++++++++++++++ templates/email/default/I18n/en_US.php | 4 ++++ templates/email/default/I18n/es_ES.php | 4 ++++ templates/email/default/I18n/fr_FR.php | 4 ++++ templates/email/default/I18n/it_IT.php | 4 ++++ 7 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 templates/email/default/I18n/en_US.php create mode 100644 templates/email/default/I18n/es_ES.php create mode 100644 templates/email/default/I18n/fr_FR.php create mode 100644 templates/email/default/I18n/it_IT.php diff --git a/core/lib/Thelia/Controller/Admin/TranslationsController.php b/core/lib/Thelia/Controller/Admin/TranslationsController.php index 7bea68e6f..cb7c3f072 100644 --- a/core/lib/Thelia/Controller/Admin/TranslationsController.php +++ b/core/lib/Thelia/Controller/Admin/TranslationsController.php @@ -94,6 +94,10 @@ class TranslationsController extends BaseAdminController case 'pf' : $template = new TemplateDefinition($item_id, TemplateDefinition::PDF); break; + + case 'ma' : + $template = new TemplateDefinition($item_id, TemplateDefinition::EMAIL); + break; } if ($template) { diff --git a/core/lib/Thelia/Core/Template/Loop/Template.php b/core/lib/Thelia/Core/Template/Loop/Template.php index c5b6a95f3..fc9505449 100644 --- a/core/lib/Thelia/Core/Template/Loop/Template.php +++ b/core/lib/Thelia/Core/Template/Loop/Template.php @@ -64,7 +64,8 @@ class Template extends BaseLoop implements ArraySearchLoopInterface new Type\EnumListType(array( 'front-office', 'back-office', - 'pdf' + 'pdf', + 'email' )) ) ) @@ -80,6 +81,8 @@ class Template extends BaseLoop implements ArraySearchLoopInterface $templateType = TemplateDefinition::BACK_OFFICE; else if ($type == 'pdf') $templateType = TemplateDefinition::PDF; + else if ($type == 'email') + $templateType = TemplateDefinition::EMAIL; return TemplateHelper::getInstance()->getList($templateType); } diff --git a/templates/backOffice/default/translations.html b/templates/backOffice/default/translations.html index fa41a3cf6..5a48e5277 100755 --- a/templates/backOffice/default/translations.html +++ b/templates/backOffice/default/translations.html @@ -45,6 +45,7 @@ + @@ -91,6 +92,19 @@ + {else if $item_to_translate == 'ma'} +
+
+ + + +
+
{else if $item_to_translate == 'pf'}
diff --git a/templates/email/default/I18n/en_US.php b/templates/email/default/I18n/en_US.php new file mode 100644 index 000000000..6d8ef0f1b --- /dev/null +++ b/templates/email/default/I18n/en_US.php @@ -0,0 +1,4 @@ + Date: Fri, 6 Dec 2013 11:20:15 +0100 Subject: [PATCH 67/70] fix updatePositionDownTest --- core/lib/Thelia/Tests/Action/FolderTest.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/lib/Thelia/Tests/Action/FolderTest.php b/core/lib/Thelia/Tests/Action/FolderTest.php index 7ef88aa0d..c433411ee 100644 --- a/core/lib/Thelia/Tests/Action/FolderTest.php +++ b/core/lib/Thelia/Tests/Action/FolderTest.php @@ -162,14 +162,19 @@ class FolderTest extends BaseAction public function testUpdatePositionDown() { - $folder = FolderQuery::create() - ->filterByPosition(1) + $nextFolder = FolderQuery::create() + ->filterByPosition(2) ->findOne(); - if (null === $folder) { + if (null === $nextFolder) { $this->fail('use fixtures before launching test, there is no folder in database'); } + $folder = FolderQuery::create() + ->filterByPosition(1) + ->filterByParent($nextFolder->getParent()) + ->findOne(); + $newPosition = $folder->getPosition()+1; $event = new UpdatePositionEvent($folder->getId(), UpdatePositionEvent::POSITION_DOWN); From 06c875455f5d2af07d8f55953dc73c7c65635ec4 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 6 Dec 2013 11:27:32 +0100 Subject: [PATCH 68/70] remove unused constant events --- core/lib/Thelia/Core/Event/TheliaEvents.php | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/core/lib/Thelia/Core/Event/TheliaEvents.php b/core/lib/Thelia/Core/Event/TheliaEvents.php index 4b929409c..9ffd5c795 100755 --- a/core/lib/Thelia/Core/Event/TheliaEvents.php +++ b/core/lib/Thelia/Core/Event/TheliaEvents.php @@ -38,20 +38,6 @@ final class TheliaEvents */ const BOOT = "thelia.boot"; - /** - * ACTION event - * - * Sent if no action are already present in Thelia action process ( see Thelia\Routing\Matcher\ActionMatcher) - */ - const ACTION = "thelia.action"; - - /** - * INCLUDE event - * - * Sent before starting thelia inclusion - */ - const INCLUSION = "thelia.include"; - /** * Sent before the logout of the customer. */ From 926ff410d1b26ba31dfe33949d30f60f1de44a97 Mon Sep 17 00:00:00 2001 From: Etienne Roudeix Date: Fri, 6 Dec 2013 11:50:29 +0100 Subject: [PATCH 69/70] fix #128 --- core/lib/Thelia/Model/Category.php | 7 +++++++ core/lib/Thelia/Model/Content.php | 7 +++++++ core/lib/Thelia/Model/Folder.php | 7 +++++++ core/lib/Thelia/Model/Product.php | 1 + 4 files changed, 22 insertions(+) diff --git a/core/lib/Thelia/Model/Category.php b/core/lib/Thelia/Model/Category.php index 067c54fc1..0cade8216 100755 --- a/core/lib/Thelia/Model/Category.php +++ b/core/lib/Thelia/Model/Category.php @@ -115,6 +115,13 @@ class Category extends BaseCategory */ public function postDelete(ConnectionInterface $con = null) { + RewritingUrlQuery::create() + ->filterByView($this->getRewrittenUrlViewName()) + ->filterByViewId($this->getId()) + ->update(array( + "View" => ConfigQuery::getObsoleteRewrittenUrlView() + )); + $this->dispatchEvent(TheliaEvents::AFTER_DELETECATEGORY, new CategoryEvent($this)); } } \ No newline at end of file diff --git a/core/lib/Thelia/Model/Content.php b/core/lib/Thelia/Model/Content.php index 6417c8b56..1c1c8c0f6 100755 --- a/core/lib/Thelia/Model/Content.php +++ b/core/lib/Thelia/Model/Content.php @@ -148,6 +148,13 @@ class Content extends BaseContent public function postDelete(ConnectionInterface $con = null) { + RewritingUrlQuery::create() + ->filterByView($this->getRewrittenUrlViewName()) + ->filterByViewId($this->getId()) + ->update(array( + "View" => ConfigQuery::getObsoleteRewrittenUrlView() + )); + $this->dispatchEvent(TheliaEvents::AFTER_DELETECONTENT, new ContentEvent($this)); } } diff --git a/core/lib/Thelia/Model/Folder.php b/core/lib/Thelia/Model/Folder.php index 4b32e7591..0b9edafd6 100755 --- a/core/lib/Thelia/Model/Folder.php +++ b/core/lib/Thelia/Model/Folder.php @@ -100,6 +100,13 @@ class Folder extends BaseFolder public function postDelete(ConnectionInterface $con = null) { + RewritingUrlQuery::create() + ->filterByView($this->getRewrittenUrlViewName()) + ->filterByViewId($this->getId()) + ->update(array( + "View" => ConfigQuery::getObsoleteRewrittenUrlView() + )); + $this->dispatchEvent(TheliaEvents::AFTER_DELETEFOLDER, new FolderEvent($this)); } } diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index 3855c46c1..1f5358cbb 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -269,6 +269,7 @@ class Product extends BaseProduct ->update(array( "View" => ConfigQuery::getObsoleteRewrittenUrlView() )); + $this->dispatchEvent(TheliaEvents::AFTER_DELETEPRODUCT, new ProductEvent($this)); } } From 0fcbb409e360437e3e94d1526bd66f28fcc9827e Mon Sep 17 00:00:00 2001 From: Franck Allimant Date: Fri, 6 Dec 2013 12:26:39 +0100 Subject: [PATCH 70/70] Factorized URL desactivation in UrlRewritingTrait::markRewritenUrlObsolete() --- core/lib/Thelia/Model/Category.php | 7 +------ core/lib/Thelia/Model/Content.php | 7 +------ core/lib/Thelia/Model/Folder.php | 7 +------ core/lib/Thelia/Model/Product.php | 7 +------ core/lib/Thelia/Model/Tools/UrlRewritingTrait.php | 13 +++++++++++++ 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/core/lib/Thelia/Model/Category.php b/core/lib/Thelia/Model/Category.php index 0cade8216..8b8b53e4f 100755 --- a/core/lib/Thelia/Model/Category.php +++ b/core/lib/Thelia/Model/Category.php @@ -115,12 +115,7 @@ class Category extends BaseCategory */ public function postDelete(ConnectionInterface $con = null) { - RewritingUrlQuery::create() - ->filterByView($this->getRewrittenUrlViewName()) - ->filterByViewId($this->getId()) - ->update(array( - "View" => ConfigQuery::getObsoleteRewrittenUrlView() - )); + $this->markRewritenUrlObsolete(); $this->dispatchEvent(TheliaEvents::AFTER_DELETECATEGORY, new CategoryEvent($this)); } diff --git a/core/lib/Thelia/Model/Content.php b/core/lib/Thelia/Model/Content.php index 1c1c8c0f6..3a002e6d1 100755 --- a/core/lib/Thelia/Model/Content.php +++ b/core/lib/Thelia/Model/Content.php @@ -148,12 +148,7 @@ class Content extends BaseContent public function postDelete(ConnectionInterface $con = null) { - RewritingUrlQuery::create() - ->filterByView($this->getRewrittenUrlViewName()) - ->filterByViewId($this->getId()) - ->update(array( - "View" => ConfigQuery::getObsoleteRewrittenUrlView() - )); + $this->markRewritenUrlObsolete(); $this->dispatchEvent(TheliaEvents::AFTER_DELETECONTENT, new ContentEvent($this)); } diff --git a/core/lib/Thelia/Model/Folder.php b/core/lib/Thelia/Model/Folder.php index 0b9edafd6..9249c94e2 100755 --- a/core/lib/Thelia/Model/Folder.php +++ b/core/lib/Thelia/Model/Folder.php @@ -100,12 +100,7 @@ class Folder extends BaseFolder public function postDelete(ConnectionInterface $con = null) { - RewritingUrlQuery::create() - ->filterByView($this->getRewrittenUrlViewName()) - ->filterByViewId($this->getId()) - ->update(array( - "View" => ConfigQuery::getObsoleteRewrittenUrlView() - )); + $this->markRewritenUrlObsolete(); $this->dispatchEvent(TheliaEvents::AFTER_DELETEFOLDER, new FolderEvent($this)); } diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php index 1f5358cbb..12b98c890 100755 --- a/core/lib/Thelia/Model/Product.php +++ b/core/lib/Thelia/Model/Product.php @@ -263,12 +263,7 @@ class Product extends BaseProduct */ public function postDelete(ConnectionInterface $con = null) { - RewritingUrlQuery::create() - ->filterByView($this->getRewrittenUrlViewName()) - ->filterByViewId($this->getId()) - ->update(array( - "View" => ConfigQuery::getObsoleteRewrittenUrlView() - )); + $this->markRewritenUrlObsolete(); $this->dispatchEvent(TheliaEvents::AFTER_DELETEPRODUCT, new ProductEvent($this)); } diff --git a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php index d16ceaf5f..bcbbb9afd 100644 --- a/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php +++ b/core/lib/Thelia/Model/Tools/UrlRewritingTrait.php @@ -29,6 +29,7 @@ use Thelia\Exception\UrlRewritingException; use Thelia\Model\RewritingUrlQuery; use Thelia\Model\RewritingUrl; use Thelia\Tools\URL; +use Thelia\Model\ConfigQuery; /** * A trait for managing Rewritten URLs from model classes */ @@ -136,6 +137,18 @@ trait UrlRewritingTrait { return $url; } + /** + * Mark the current URL as obseolete + */ + public function markRewritenUrlObsolete() { + RewritingUrlQuery::create() + ->filterByView($this->getRewrittenUrlViewName()) + ->filterByViewId($this->getId()) + ->update(array( + "View" => ConfigQuery::getObsoleteRewrittenUrlView() + )); + } + /** * Set the rewritten URL for the given locale *