diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..abb42e028 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,29 @@ +#2.0.0-beta2 + +- http://doc.thelia.net is available in beta. +- Increase performance in prod mode. +- Front part (routes and controller) are now a dedicated module. +- allow to create a customer in admin panel +- translation is implemented : + - I18n directory in template or module. + - 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 hooks exist. With this hooks, a module can insert code in admin pages +- Admin hooks can be display using SHOW_INCLUDE=1 in your query string and in dev mode (http://doc.thelia.net/en/documentation/modules/hook.html) +- change memory_limit parameter in installation process. 128M is now needed +- assets can be used from template directory and from module +- Product, Category, Folder and Content have a dedicated SEO panel +- Allow to configure store information like email, address, phone number, etc. +- email management : http://doc.thelia.net/en/documentation/templates/emails.html +- "How to contribute ?" see http://doc.thelia.net/en/documentation/contribute.html +-Cache http (use it carefully, default template is not compatible with this cache) : + - if you don't know http specification, learn it first http://www.w3.org/Protocols/rfc2616/rfc2616.html + - esi tag integrated, use {render_esi path="http://your-taget.tld/resource"} + - if no reverse proxy detected, html is render instead of esi tag + - if you can't install a reverse proxy like varnish, use the HttpCache (just uncomment line 14 in web/index.php file) + - resources : + - http://www.mnot.net/cache_docs/ (fr) + - http://tomayko.com/writings/things-caches-do (en) + - http://symfony.com/doc/current/book/http_cache.html#http-cache-introduction (en and fr) + + diff --git a/CHANGELOG.txt b/CHANGELOG.txt deleted file mode 100755 index 06373ecc5..000000000 --- a/CHANGELOG.txt +++ /dev/null @@ -1,11 +0,0 @@ -2.0.0-beta2 - http://doc.thelia.net is available in beta. - Increase performance in prod mode. - Front part (routes and controller) are now a dedicated module. - allow to create a customer in admin panel - translation is implemented : - - I18n directory in template or module. - - 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 hooks exist. With this hooks, a module can insert code in admin pages - diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 6dca9789e..5ce72a230 100755 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -1,8 +1,8 @@ If you contributes or contributed to this project and do not appear in this list below, please email us (info@thelia.net) or fork this file on Github and send a pull-request. -Manuel Raynaud - mraynaud@openstudio.fr -Etienne Roudeix - eroudeix@openstudio.fr +Manuel Raynaud - manu@thelia.net +Etienne Roudeix - etienne@thelia.net Franck Allimant - franck@allimant.org Guillaume Morel - gmorel@openstudio.fr Michael Espeche - mespeche@openstudio.fr diff --git a/Readme.md b/Readme.md index 392af4339..89e87684f 100755 --- a/Readme.md +++ b/Readme.md @@ -22,7 +22,7 @@ Requirements * gd * curl * safe_mode off - * memory_limit at least 150M, preferably 256. + * memory_limit at least 128M, preferably 256. * post_max_size 20M * upload_max_filesize 2M * apache 2 @@ -30,8 +30,8 @@ Requirements If you use Mac OSX, it still doesn't use php 5.4 as default php version... There are many solutions for you : -* use linux (the best one) -* use last MAMP version and put the php bin directory in your path : +* use [phpbrew](https://github.com/c9s/phpbrew) +* use last MAMP version and put the php bin directory in your path: ```bash export PATH=/Applications/MAMP/bin/php/php5.4.x/bin/:$PATH @@ -44,10 +44,8 @@ Installation ------------ ``` bash -$ git clone https://github.com/thelia/thelia.git -$ cd thelia $ curl -sS https://getcomposer.org/installer | php -$ php composer.phar install --prefer-dist --optimize-autoloader +$ php composer.phar create-project thelia/thelia path/ dev-master ``` Finish the installation using cli tools : @@ -58,6 +56,13 @@ $ php Thelia thelia:install You just have to follow all instructions. +Documentation +------------- + +Thelia documentation is available at http://doc.thelia.net + +The documentation is also in beta version and some part can be obsolete cause to some refactor. + Contribute ---------- diff --git a/core/lib/Thelia/Action/BaseAction.php b/core/lib/Thelia/Action/BaseAction.php index e1edab07d..1f04e12f6 100755 --- a/core/lib/Thelia/Action/BaseAction.php +++ b/core/lib/Thelia/Action/BaseAction.php @@ -23,9 +23,14 @@ namespace Thelia\Action; use Symfony\Component\DependencyInjection\ContainerInterface; -use Thelia\Model\AdminLog; use Propel\Runtime\ActiveQuery\ModelCriteria; + use Thelia\Core\Event\UpdatePositionEvent; +use Thelia\Core\Event\UpdateSeoEvent; + +use Thelia\Exception\UrlRewritingException; +use Thelia\Form\Exception\FormValidationException; +use \Thelia\Model\Tools\UrlRewritingTrait; class BaseAction { @@ -73,4 +78,41 @@ class BaseAction return $object->movePositionDown(); } } + + /** + * Changes SEO Fields for an object. + * + * @param ModelCriteria $query + * @param UpdateSeoEvent $event + * + * @return mixed + */ + protected function genericUpdateSeo(ModelCriteria $query, UpdateSeoEvent $event) + { + if (null !== $object = $query->findPk($event->getObjectId())) { + + $object + ->setDispatcher($this->getDispatcher()) + + ->setLocale($event->getLocale()) + ->setMetaTitle($event->getMetaTitle()) + ->setMetaDescription($event->getMetaDescription()) + ->setMetaKeywords($event->getMetaKeywords()) + + ->save() + ; + + // Update the rewritten URL, if required + try { + $object->setRewrittenUrl($event->getLocale(), $event->getUrl()); + } catch(UrlRewritingException $e) { + throw new FormValidationException($e->getMessage(), $e->getCode()); + } + + $event->setObject($object); + + return $object; + } + } + } diff --git a/core/lib/Thelia/Action/Cart.php b/core/lib/Thelia/Action/Cart.php index 402bdfaac..36ab41385 100755 --- a/core/lib/Thelia/Action/Cart.php +++ b/core/lib/Thelia/Action/Cart.php @@ -66,12 +66,18 @@ class Cart extends BaseAction implements EventSubscriberInterface ->filterByProductSaleElementsId($productSaleElementsId) ->findOne(); - $this->doAddItem($cart, $productId, $productPrice->getProductSaleElements(), $quantity, $productPrice); + $event->setCartItem( + $this->doAddItem($cart, $productId, $productPrice->getProductSaleElements(), $quantity, $productPrice) + ); } if ($append && $cartItem !== null) { $cartItem->addQuantity($quantity) ->save(); + + $event->setCartItem( + $cartItem + ); } } @@ -123,7 +129,9 @@ class Cart extends BaseAction implements EventSubscriberInterface ->findOne(); if ($cartItem) { - $this->updateQuantity($cartItem, $quantity); + $event->setCartItem( + $this->updateQuantity($cartItem, $quantity) + ); } } } @@ -163,12 +171,16 @@ class Cart extends BaseAction implements EventSubscriberInterface * * @param CartItem $cartItem * @param float $quantity + * + * @return CartItem */ protected function updateQuantity(CartItem $cartItem, $quantity) { $cartItem->setDisptacher($this->getDispatcher()); $cartItem->updateQuantity($quantity) ->save(); + + return $cartItem; } /** @@ -176,9 +188,11 @@ class Cart extends BaseAction implements EventSubscriberInterface * * @param \Thelia\Model\Cart $cart * @param int $productId - * @param int $productSaleElementsId + * @param \Thelia\Model\ProductSaleElements $productSaleElements * @param float $quantity * @param ProductPrice $productPrice + * + * @return CartItem */ protected function doAddItem(\Thelia\Model\Cart $cart, $productId, \Thelia\Model\ProductSaleElements $productSaleElements, $quantity, ProductPrice $productPrice) { @@ -194,6 +208,8 @@ class Cart extends BaseAction implements EventSubscriberInterface ->setPromo($productSaleElements->getPromo()) ->setPriceEndOfLife(time() + ConfigQuery::read("cart.priceEOF", 60*60*24*30)) ->save(); + + return $cartItem; } /** diff --git a/core/lib/Thelia/Action/Category.php b/core/lib/Thelia/Action/Category.php index ac68baa6a..9d895c7de 100755 --- a/core/lib/Thelia/Action/Category.php +++ b/core/lib/Thelia/Action/Category.php @@ -25,8 +25,7 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Thelia\Exception\UrlRewritingException; -use Thelia\Form\Exception\FormValidationException; +use Thelia\Core\Event\UpdateSeoEvent; use Thelia\Model\CategoryQuery; use Thelia\Model\Category as CategoryModel; @@ -74,8 +73,6 @@ class Category extends BaseAction implements EventSubscriberInterface */ public function update(CategoryUpdateEvent $event) { - $search = CategoryQuery::create(); - if (null !== $category = CategoryQuery::create()->findPk($event->getCategoryId())) { $category @@ -92,17 +89,22 @@ class Category extends BaseAction implements EventSubscriberInterface ->save(); - // Update the rewritten URL, if required - try { - $category->setRewrittenUrl($event->getLocale(), $event->getUrl()); - } catch(UrlRewritingException $e) { - throw new FormValidationException($e->getMessage(), $e->getCode()); - } - $event->setCategory($category); } } + /** + * Change a Category SEO + * + * @param \Thelia\Core\Event\UpdateSeoEvent $event + * + * @return mixed + */ + public function updateSeo(UpdateSeoEvent $event) + { + return $this->genericUpdateSeo(CategoryQuery::create(), $event); + } + /** * Delete a category entry * @@ -190,6 +192,7 @@ class Category extends BaseAction implements EventSubscriberInterface TheliaEvents::CATEGORY_TOGGLE_VISIBILITY => array("toggleVisibility", 128), TheliaEvents::CATEGORY_UPDATE_POSITION => array("updatePosition", 128), + TheliaEvents::CATEGORY_UPDATE_SEO => array("updateSeo", 128), TheliaEvents::CATEGORY_ADD_CONTENT => array("addContent", 128), TheliaEvents::CATEGORY_REMOVE_CONTENT => array("removeContent", 128), diff --git a/core/lib/Thelia/Action/Content.php b/core/lib/Thelia/Action/Content.php index d3dbdbba8..986698220 100755 --- a/core/lib/Thelia/Action/Content.php +++ b/core/lib/Thelia/Action/Content.php @@ -32,8 +32,7 @@ use Thelia\Core\Event\Content\ContentToggleVisibilityEvent; use Thelia\Core\Event\Content\ContentUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\UpdatePositionEvent; -use Thelia\Exception\UrlRewritingException; -use Thelia\Form\Exception\FormValidationException; +use Thelia\Core\Event\UpdateSeoEvent; use Thelia\Model\ContentFolder; use Thelia\Model\ContentFolderQuery; use Thelia\Model\ContentQuery; @@ -81,19 +80,24 @@ class Content extends BaseAction implements EventSubscriberInterface ->save() ; - // Update the rewritten URL, if required - try { - $content->setRewrittenUrl($event->getLocale(), $event->getUrl()); - } catch(UrlRewritingException $e) { - throw new FormValidationException($e->getMessage(), $e->getCode()); - } - $content->updateDefaultFolder($event->getDefaultFolder()); $event->setContent($content); } } + /** + * Change Content SEO + * + * @param \Thelia\Core\Event\UpdateSeoEvent $event + * + * @return mixed + */ + public function updateSeo(UpdateSeoEvent $event) + { + return $this->genericUpdateSeo(ContentQuery::create(), $event); + } + public function updatePosition(UpdatePositionEvent $event) { if (null !== $content = ContentQuery::create()->findPk($event->getObjectId())) { @@ -203,6 +207,7 @@ class Content extends BaseAction implements EventSubscriberInterface TheliaEvents::CONTENT_TOGGLE_VISIBILITY => array('toggleVisibility', 128), TheliaEvents::CONTENT_UPDATE_POSITION => array('updatePosition', 128), + TheliaEvents::CONTENT_UPDATE_SEO => array('updateSeo', 128), TheliaEvents::CONTENT_ADD_FOLDER => array('addFolder', 128), TheliaEvents::CONTENT_REMOVE_FOLDER => array('removeFolder', 128), diff --git a/core/lib/Thelia/Action/Document.php b/core/lib/Thelia/Action/Document.php index e38604733..35dc3e540 100755 --- a/core/lib/Thelia/Action/Document.php +++ b/core/lib/Thelia/Action/Document.php @@ -28,6 +28,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\Document\DocumentCreateOrUpdateEvent; use Thelia\Core\Event\Document\DocumentDeleteEvent; use Thelia\Core\Event\Document\DocumentEvent; +use Thelia\Core\Event\UpdateFilePositionEvent; use Thelia\Exception\ImageException; use Thelia\Model\ConfigQuery; use Thelia\Tools\FileManager; @@ -195,6 +196,11 @@ class Document extends BaseCachedFile implements EventSubscriberInterface $event->setModelDocument($event->getModelDocument()); } + public function updatePosition(UpdateFilePositionEvent $event) + { + return $this->genericUpdatePosition($event->getQuery(), $event); + } + /** * Take care of deleting document in the database and file storage * @@ -218,6 +224,7 @@ class Document extends BaseCachedFile implements EventSubscriberInterface TheliaEvents::DOCUMENT_DELETE => array("deleteDocument", 128), TheliaEvents::DOCUMENT_SAVE => array("saveDocument", 128), TheliaEvents::DOCUMENT_UPDATE => array("updateDocument", 128), + TheliaEvents::DOCUMENT_UPDATE_POSITION => array("updatePosition", 128), ); } } diff --git a/core/lib/Thelia/Action/Folder.php b/core/lib/Thelia/Action/Folder.php index df849898c..2eece4095 100755 --- a/core/lib/Thelia/Action/Folder.php +++ b/core/lib/Thelia/Action/Folder.php @@ -29,8 +29,7 @@ use Thelia\Core\Event\Folder\FolderToggleVisibilityEvent; use Thelia\Core\Event\Folder\FolderUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\UpdatePositionEvent; -use Thelia\Exception\UrlRewritingException; -use Thelia\Form\Exception\FormValidationException; +use Thelia\Core\Event\UpdateSeoEvent; use Thelia\Model\FolderQuery; use Thelia\Model\Folder as FolderModel; @@ -58,17 +57,22 @@ class Folder extends BaseAction implements EventSubscriberInterface ->save(); ; - // Update the rewritten URL, if required - try { - $folder->setRewrittenUrl($event->getLocale(), $event->getUrl()); - } catch(UrlRewritingException $e) { - throw new FormValidationException($e->getMessage(), $e->getCode()); - } - $event->setFolder($folder); } } + /** + * Change Folder SEO + * + * @param \Thelia\Core\Event\UpdateSeoEvent $event + * + * @return mixed + */ + public function updateSeo(UpdateSeoEvent $event) + { + return $this->genericUpdateSeo(FolderQuery::create(), $event); + } + public function delete(FolderDeleteEvent $event) { if (null !== $folder = FolderQuery::create()->findPk($event->getFolderId())) { @@ -158,6 +162,7 @@ class Folder extends BaseAction implements EventSubscriberInterface TheliaEvents::FOLDER_TOGGLE_VISIBILITY => array("toggleVisibility", 128), TheliaEvents::FOLDER_UPDATE_POSITION => array("updatePosition", 128), + TheliaEvents::FOLDER_UPDATE_SEO => array('updateSeo', 128) ); } } diff --git a/core/lib/Thelia/Action/HttpException.php b/core/lib/Thelia/Action/HttpException.php index 6448f5b2d..b875eb49b 100755 --- a/core/lib/Thelia/Action/HttpException.php +++ b/core/lib/Thelia/Action/HttpException.php @@ -56,7 +56,7 @@ class HttpException extends BaseAction implements EventSubscriberInterface $parser = $this->container->get("thelia.parser"); // Define the template thant shoud be used - $parser->setTemplate(TemplateHelper::getInstance()->getActiveFrontTemplate()); + $parser->setTemplateDefinition(TemplateHelper::getInstance()->getActiveFrontTemplate()); //$event->getRequest()->attributes->set('_view', ConfigQuery::getPageNotFoundView()); diff --git a/core/lib/Thelia/Action/Image.php b/core/lib/Thelia/Action/Image.php index ed7010a09..e4e1ac8d4 100755 --- a/core/lib/Thelia/Action/Image.php +++ b/core/lib/Thelia/Action/Image.php @@ -28,6 +28,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\Image\ImageCreateOrUpdateEvent; use Thelia\Core\Event\Image\ImageDeleteEvent; use Thelia\Core\Event\Image\ImageEvent; +use Thelia\Core\Event\UpdateFilePositionEvent; use Thelia\Model\ConfigQuery; use Thelia\Tools\FileManager; use Thelia\Tools\URL; @@ -301,6 +302,11 @@ class Image extends BaseCachedFile implements EventSubscriberInterface $event->setModelImage($event->getModelImage()); } + public function updatePosition(UpdateFilePositionEvent $event) + { + return $this->genericUpdatePosition($event->getQuery(), $event); + } + /** * Take care of deleting image in the database and file storage * @@ -441,6 +447,7 @@ class Image extends BaseCachedFile implements EventSubscriberInterface TheliaEvents::IMAGE_DELETE => array("deleteImage", 128), TheliaEvents::IMAGE_SAVE => array("saveImage", 128), TheliaEvents::IMAGE_UPDATE => array("updateImage", 128), + TheliaEvents::IMAGE_UPDATE_POSITION => array("updatePosition", 128), ); } } diff --git a/core/lib/Thelia/Action/Module.php b/core/lib/Thelia/Action/Module.php index d27bedd1f..286779667 100755 --- a/core/lib/Thelia/Action/Module.php +++ b/core/lib/Thelia/Action/Module.php @@ -33,6 +33,7 @@ use Thelia\Core\Event\TheliaEvents; use Thelia\Model\Map\ModuleTableMap; use Thelia\Model\ModuleQuery; use Thelia\Module\BaseModule; +use Thelia\Core\Event\UpdatePositionEvent; /** * Class Module @@ -122,6 +123,16 @@ class Module extends BaseAction implements EventSubscriberInterface } } + /** + * Changes position, selecting absolute ou relative change. + * + * @param CategoryChangePositionEvent $event + */ + public function updatePosition(UpdatePositionEvent $event) + { + return $this->genericUpdatePosition(ModuleQuery::create(), $event); + } + protected function cacheClear() { $cacheEvent = new CacheEvent($this->container->getParameter('kernel.cache_dir')); @@ -153,6 +164,7 @@ class Module extends BaseAction implements EventSubscriberInterface { return array( TheliaEvents::MODULE_TOGGLE_ACTIVATION => array('toggleActivation', 128), + TheliaEvents::MODULE_UPDATE_POSITION => array('updatePosition', 128), TheliaEvents::MODULE_DELETE => array('delete', 128), TheliaEvents::MODULE_UPDATE => array('update', 128), ); diff --git a/core/lib/Thelia/Action/Product.php b/core/lib/Thelia/Action/Product.php index ff32921b6..6d477855b 100755 --- a/core/lib/Thelia/Action/Product.php +++ b/core/lib/Thelia/Action/Product.php @@ -25,38 +25,37 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Thelia\Exception\UrlRewritingException; -use Thelia\Form\Exception\FormValidationException; +use Thelia\Model\Map\ProductTableMap; use Thelia\Model\ProductQuery; use Thelia\Model\Product as ProductModel; - -use Thelia\Core\Event\TheliaEvents; - -use Thelia\Core\Event\Product\ProductUpdateEvent; -use Thelia\Core\Event\Product\ProductCreateEvent; -use Thelia\Core\Event\Product\ProductDeleteEvent; -use Thelia\Core\Event\UpdatePositionEvent; -use Thelia\Core\Event\Product\ProductToggleVisibilityEvent; -use Thelia\Core\Event\Product\ProductAddContentEvent; -use Thelia\Core\Event\Product\ProductDeleteContentEvent; use Thelia\Model\ProductAssociatedContent; use Thelia\Model\ProductAssociatedContentQuery; use Thelia\Model\ProductCategory; use Thelia\Model\TaxRuleQuery; use Thelia\Model\AccessoryQuery; use Thelia\Model\Accessory; -use Thelia\Core\Event\FeatureProduct\FeatureProductUpdateEvent; use Thelia\Model\FeatureProduct; -use Thelia\Core\Event\FeatureProduct\FeatureProductDeleteEvent; use Thelia\Model\FeatureProductQuery; use Thelia\Model\ProductCategoryQuery; -use Thelia\Core\Event\Product\ProductSetTemplateEvent; use Thelia\Model\ProductSaleElementsQuery; + +use Thelia\Core\Event\TheliaEvents; +use Thelia\Core\Event\Product\ProductUpdateEvent; +use Thelia\Core\Event\Product\ProductCreateEvent; +use Thelia\Core\Event\Product\ProductDeleteEvent; +use Thelia\Core\Event\Product\ProductToggleVisibilityEvent; +use Thelia\Core\Event\Product\ProductAddContentEvent; +use Thelia\Core\Event\Product\ProductDeleteContentEvent; +use Thelia\Core\Event\UpdatePositionEvent; +use Thelia\Core\Event\UpdateSeoEvent; +use Thelia\Core\Event\FeatureProduct\FeatureProductUpdateEvent; +use Thelia\Core\Event\FeatureProduct\FeatureProductDeleteEvent; +use Thelia\Core\Event\Product\ProductSetTemplateEvent; use Thelia\Core\Event\Product\ProductDeleteCategoryEvent; use Thelia\Core\Event\Product\ProductAddCategoryEvent; use Thelia\Core\Event\Product\ProductAddAccessoryEvent; use Thelia\Core\Event\Product\ProductDeleteAccessoryEvent; -use Thelia\Model\Map\ProductTableMap; + use Propel\Runtime\Propel; class Product extends BaseAction implements EventSubscriberInterface @@ -115,13 +114,6 @@ class Product extends BaseAction implements EventSubscriberInterface ->save() ; - // Update the rewritten URL, if required - try { - $product->setRewrittenUrl($event->getLocale(), $event->getUrl()); - } catch(UrlRewritingException $e) { - throw new FormValidationException($e->getMessage(), $e->getCode()); - } - // Update default category (ifd required) $product->updateDefaultCategory($event->getDefaultCategory()); @@ -129,6 +121,17 @@ class Product extends BaseAction implements EventSubscriberInterface } } + /** + * Change a product SEO + * + * @param \Thelia\Core\Event\UpdateSeoEvent $event + */ + public function updateSeo(UpdateSeoEvent $event) + { + return $this->genericUpdateSeo(ProductQuery::create(), $event); + } + + /** * Delete a product entry * @@ -389,12 +392,13 @@ class Product extends BaseAction implements EventSubscriberInterface public static function getSubscribedEvents() { return array( - TheliaEvents::PRODUCT_CREATE => array("create", 128), - TheliaEvents::PRODUCT_UPDATE => array("update", 128), - TheliaEvents::PRODUCT_DELETE => array("delete", 128), - TheliaEvents::PRODUCT_TOGGLE_VISIBILITY => array("toggleVisibility", 128), + TheliaEvents::PRODUCT_CREATE => array("create", 128), + TheliaEvents::PRODUCT_UPDATE => array("update", 128), + TheliaEvents::PRODUCT_DELETE => array("delete", 128), + TheliaEvents::PRODUCT_TOGGLE_VISIBILITY => array("toggleVisibility", 128), - TheliaEvents::PRODUCT_UPDATE_POSITION => array("updatePosition", 128), + TheliaEvents::PRODUCT_UPDATE_POSITION => array("updatePosition", 128), + TheliaEvents::PRODUCT_UPDATE_SEO => array("updateSeo", 128), TheliaEvents::PRODUCT_ADD_CONTENT => array("addContent", 128), TheliaEvents::PRODUCT_REMOVE_CONTENT => array("removeContent", 128), @@ -404,13 +408,13 @@ class Product extends BaseAction implements EventSubscriberInterface TheliaEvents::PRODUCT_REMOVE_ACCESSORY => array("removeAccessory", 128), TheliaEvents::PRODUCT_UPDATE_ACCESSORY_POSITION => array("updateAccessoryPosition", 128), - TheliaEvents::PRODUCT_ADD_CATEGORY => array("addCategory", 128), - TheliaEvents::PRODUCT_REMOVE_CATEGORY => array("removeCategory", 128), + TheliaEvents::PRODUCT_ADD_CATEGORY => array("addCategory", 128), + TheliaEvents::PRODUCT_REMOVE_CATEGORY => array("removeCategory", 128), - TheliaEvents::PRODUCT_SET_TEMPLATE => array("setProductTemplate", 128), + TheliaEvents::PRODUCT_SET_TEMPLATE => array("setProductTemplate", 128), - TheliaEvents::PRODUCT_FEATURE_UPDATE_VALUE => array("updateFeatureProductValue", 128), - TheliaEvents::PRODUCT_FEATURE_DELETE_VALUE => array("deleteFeatureProductValue", 128), + TheliaEvents::PRODUCT_FEATURE_UPDATE_VALUE => array("updateFeatureProductValue", 128), + TheliaEvents::PRODUCT_FEATURE_DELETE_VALUE => array("deleteFeatureProductValue", 128), ); } } diff --git a/core/lib/Thelia/Config/Resources/form.xml b/core/lib/Thelia/Config/Resources/form.xml index cf9ccd489..ec281266e 100755 --- a/core/lib/Thelia/Config/Resources/form.xml +++ b/core/lib/Thelia/Config/Resources/form.xml @@ -17,6 +17,7 @@
+ @@ -39,7 +40,6 @@ - diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index 591e5c0e7..f5adc68aa 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -59,6 +59,11 @@Here is a general asset :
+
+ {images file='assets/img/logo-thelia-34px.png'}
+
+ {/images}
+
Here is a module asset :
+
+ {images source="TheliaDebugBar" file='assets/img/db-loader.gif'}
+
+ {/images}
+
{intl l='© Thelia 2013'} - {intl l='Published by OpenStudio'} - - {intl l='Thelia support forum'} - - {intl l='Thelia contributions'} + - {intl l='Thelia support forum'} + - {intl l='Thelia contributions'}
{module_include location='in_footer'} @@ -267,6 +267,6 @@ {* Modules scripts are included now *} {module_include location='footer_js'} - + {block name="javascript-last-call"}{/block}