From 7bc34d3d0f47be9c8fcf9b6ad182a71d44b41c5b Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Mon, 23 Sep 2013 12:08:59 +0200 Subject: [PATCH] toofle content visibility --- core/lib/Thelia/Action/Content.php | 14 ++++++++ .../Thelia/Config/Resources/routing/admin.xml | 4 +++ .../Controller/Admin/ContentController.php | 9 +++++ .../Content/ContentToggleVisibilityEvent.php | 35 +++++++++++++++++++ .../lib/Thelia/Core/Template/Loop/Content.php | 1 + templates/admin/default/folders.html | 2 +- 6 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 core/lib/Thelia/Core/Event/Content/ContentToggleVisibilityEvent.php diff --git a/core/lib/Thelia/Action/Content.php b/core/lib/Thelia/Action/Content.php index a76664955..4e41331fb 100644 --- a/core/lib/Thelia/Action/Content.php +++ b/core/lib/Thelia/Action/Content.php @@ -24,6 +24,7 @@ namespace Thelia\Action; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Thelia\Core\Event\Content\ContentCreateEvent; +use Thelia\Core\Event\Content\ContentToggleVisibilityEvent; use Thelia\Core\Event\Content\ContentUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\UpdatePositionEvent; @@ -97,6 +98,19 @@ class Content extends BaseAction implements EventSubscriberInterface } } } + + public function toggleVisibility(ContentToggleVisibilityEvent $event) + { + $content = $event->getContent(); + + $content + ->setDispatcher($this->getDispatcher()) + ->setVisible(!$content->getVisible()) + ->save(); + + } + + /** * Returns an array of event names this subscriber wants to listen to. * diff --git a/core/lib/Thelia/Config/Resources/routing/admin.xml b/core/lib/Thelia/Config/Resources/routing/admin.xml index b4beb9799..5decff765 100755 --- a/core/lib/Thelia/Config/Resources/routing/admin.xml +++ b/core/lib/Thelia/Config/Resources/routing/admin.xml @@ -239,6 +239,10 @@ Thelia\Controller\Admin\ContentController::updatePositionAction + + Thelia\Controller\Admin\ContentController::setToggleVisibilityAction + + diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php index d91596ac0..7b865ca05 100644 --- a/core/lib/Thelia/Controller/Admin/ContentController.php +++ b/core/lib/Thelia/Controller/Admin/ContentController.php @@ -23,6 +23,7 @@ namespace Thelia\Controller\Admin; use Thelia\Core\Event\Content\ContentCreateEvent; +use Thelia\Core\Event\Content\ContentToggleVisibilityEvent; use Thelia\Core\Event\Content\ContentUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\UpdatePositionEvent; @@ -314,4 +315,12 @@ class ContentController extends AbstractCrudController $positionValue ); } + + /** + * @return FolderToggleVisibilityEvent|void + */ + protected function createToggleVisibilityEvent() + { + return new ContentToggleVisibilityEvent($this->getExistingObject()); + } } \ No newline at end of file diff --git a/core/lib/Thelia/Core/Event/Content/ContentToggleVisibilityEvent.php b/core/lib/Thelia/Core/Event/Content/ContentToggleVisibilityEvent.php new file mode 100644 index 000000000..55176635c --- /dev/null +++ b/core/lib/Thelia/Core/Event/Content/ContentToggleVisibilityEvent.php @@ -0,0 +1,35 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Core\Event\Content; + + +/** + * Class ContentToggleVisibilityEvent + * @package Thelia\Core\Event\Content + * @author manuel raynaud + */ +class ContentToggleVisibilityEvent extends ContentEvent +{ + +} \ No newline at end of file diff --git a/core/lib/Thelia/Core/Template/Loop/Content.php b/core/lib/Thelia/Core/Template/Loop/Content.php index 0136f4e9c..ce966bf5c 100755 --- a/core/lib/Thelia/Core/Template/Loop/Content.php +++ b/core/lib/Thelia/Core/Template/Loop/Content.php @@ -236,6 +236,7 @@ class Content extends BaseI18nLoop ->set("POSITION", $content->getPosition()) ->set("DEFAULT_FOLDER", $content->getDefaultFolderId()) ->set("URL", $content->getUrl($locale)) + ->set("VISIBLE", $content->getVisible()) ; $loopResult->addRow($loopResultRow); diff --git a/templates/admin/default/folders.html b/templates/admin/default/folders.html index a4e1c0fc7..a39419b30 100644 --- a/templates/admin/default/folders.html +++ b/templates/admin/default/folders.html @@ -567,7 +567,7 @@ $(".contentVisibleToggle").on('switch-change', function(event, data) { $.ajax({ - url : "{url path='admin/contents/toggle-online'}", + url : "{url path='admin/content/toggle-online'}", data : { content_id : $(this).data('id'), action : 'visibilityToggle'