diff --git a/core/lib/Thelia/Controller/Admin/ContentController.php b/core/lib/Thelia/Controller/Admin/ContentController.php index 78ee63391..d3706e479 100644 --- a/core/lib/Thelia/Controller/Admin/ContentController.php +++ b/core/lib/Thelia/Controller/Admin/ContentController.php @@ -22,9 +22,12 @@ /*************************************************************************************/ namespace Thelia\Controller\Admin; +use Thelia\Core\Event\Content\ContentCreateEvent; +use Thelia\Core\Event\Content\ContentUpdateEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Form\ContentCreationForm; use Thelia\Form\ContentModificationForm; +use Thelia\Model\ContentQuery; /** @@ -88,7 +91,6 @@ class ContentController extends AbstractCrudController 'postscriptum' => $object->getPostscriptum(), 'visible' => $object->getVisible(), 'url' => $object->getRewrittenUrl($this->getCurrentEditionLocale()), - 'parent' => $object->getParent() ); // Setup the object form @@ -102,7 +104,14 @@ class ContentController extends AbstractCrudController */ protected function getCreationEvent($formData) { - // TODO: Implement getCreationEvent() method. + $contentCreateEvent = new ContentCreateEvent(); + + $contentCreateEvent + ->setLocale($formData['locale']) + ->setDefaultFolder($formData['default_controller']) + ->setTitle($formData['title']) + ->setVisible($formData['visible']) + ; } /** @@ -112,7 +121,19 @@ class ContentController extends AbstractCrudController */ protected function getUpdateEvent($formData) { - // TODO: Implement getUpdateEvent() method. + $contentUpdateEvent = new ContentUpdateEvent($formData['id']); + + $contentUpdateEvent + ->setLocale($formData['locale']) + ->setTitle($formData['title']) + ->setChapo($formData['chapo']) + ->setDescription($formData['description']) + ->setPostscriptum($formData['postscriptum']) + ->setVisible($formData['visible']) + ->setUrl($formData['url']) + ->setDefaultFolder($formData['default_folder']); + + return $contentUpdateEvent; } /** @@ -126,49 +147,75 @@ class ContentController extends AbstractCrudController /** * Return true if the event contains the object, e.g. the action has updated the object in the event. * - * @param unknown $event + * @param \Thelia\Core\Event\Content\ContentEvent $event */ protected function eventContainsObject($event) { - // TODO: Implement eventContainsObject() method. + return $event->hasContent(); } /** * Get the created object from an event. * - * @param unknown $createEvent + * @param $event \Thelia\Core\Event\Content\ContentEvent + * + * @return null|\Thelia\Model\Content */ protected function getObjectFromEvent($event) { - // TODO: Implement getObjectFromEvent() method. + return $event->getContent(); } /** * Load an existing object from the database + * + * @return \Thelia\Model\Content */ protected function getExistingObject() { - // TODO: Implement getExistingObject() method. + return ContentQuery::create() + ->joinWithI18n($this->getCurrentEditionLocale()) + ->findOneById($this->getRequest()->get('content_id', 0)); } /** * Returns the object label form the object event (name, title, etc.) * - * @param unknown $object + * @param $object \Thelia\Model\Content + * + * @return string content title + * */ protected function getObjectLabel($object) { - // TODO: Implement getObjectLabel() method. + return $object->getTitle(); } /** * Returns the object ID from the object * - * @param unknown $object + * @param $object \Thelia\Model\Content + * + * @return int content id */ protected function getObjectId($object) { - // TODO: Implement getObjectId() method. + return $object->getId(); + } + + protected function getFolderId() + { + $folderId = $this->getRequest()->get('folder_id', null); + + if(null === $folderId) { + $content = $this->getExistingObject(); + + if($content) { + $folderId = $content->getDefaultFolderId(); + } + } + + return $folderId ?: 0; } /** @@ -178,7 +225,21 @@ class ContentController extends AbstractCrudController */ protected function renderListTemplate($currentOrder) { - // TODO: Implement renderListTemplate() method. + $this->getListOrderFromSession('content', 'content_order', 'manual'); + + return $this->render('folders', + array( + 'content_order' => $currentOrder, + 'parent' => $this->getFolderId() + )); + } + + protected function getEditionArguments() + { + return array( + 'content_id' => $this->getRequest()->get('content_id', 0), + 'current_tab' => $this->getRequest()->get('current_tab', 'general') + ); } /** @@ -186,7 +247,7 @@ class ContentController extends AbstractCrudController */ protected function renderEditionTemplate() { - // TODO: Implement renderEditionTemplate() method. + return $this->render('content-edit', $this->getEditionArguments()); } /** @@ -194,7 +255,7 @@ class ContentController extends AbstractCrudController */ protected function redirectToEditionTemplate() { - // TODO: Implement redirectToEditionTemplate() method. + $this->redirect($this->getRoute('admin.content.update', $this->getEditionArguments())); } /** @@ -202,6 +263,9 @@ class ContentController extends AbstractCrudController */ protected function redirectToListTemplate() { - // TODO: Implement redirectToListTemplate() method. + $this->redirectToRoute( + 'admin.content.default', + array('parent' => $this->getFolderId()) + ); } } \ No newline at end of file diff --git a/core/lib/Thelia/Controller/Admin/FolderController.php b/core/lib/Thelia/Controller/Admin/FolderController.php index 67dd39b38..9f2190442 100644 --- a/core/lib/Thelia/Controller/Admin/FolderController.php +++ b/core/lib/Thelia/Controller/Admin/FolderController.php @@ -174,7 +174,7 @@ class FolderController extends AbstractCrudController /** * Return true if the event contains the object, e.g. the action has updated the object in the event. * - * @param unknown $event + * @param \Thelia\Core\Event\FolderEvent $event */ protected function eventContainsObject($event) { @@ -228,13 +228,13 @@ class FolderController extends AbstractCrudController */ protected function renderListTemplate($currentOrder) { - // Get product order - $product_order = $this->getListOrderFromSession('content', 'content_order', 'manual'); + // Get content order + $content_order = $this->getListOrderFromSession('content', 'content_order', 'manual'); return $this->render('folders', array( 'folder_order' => $currentOrder, - 'content_order' => $product_order, + 'content_order' => $content_order, 'parent' => $this->getRequest()->get('parent', 0) )); } diff --git a/core/lib/Thelia/Core/Event/Content/ContentCreateEvent.php b/core/lib/Thelia/Core/Event/Content/ContentCreateEvent.php index 75a1fce78..5e2e7f0ea 100644 --- a/core/lib/Thelia/Core/Event/Content/ContentCreateEvent.php +++ b/core/lib/Thelia/Core/Event/Content/ContentCreateEvent.php @@ -32,7 +32,7 @@ namespace Thelia\Core\Event\Content; class ContentCreateEvent extends ContentEvent { protected $title; - protected $parent; + protected $default_folder; protected $locale; protected $visible; @@ -57,13 +57,13 @@ class ContentCreateEvent extends ContentEvent } /** - * @param mixed $parent + * @param mixed $default_folder * * @return $this */ - public function setParent($parent) + public function setDefaultFolder($default_folder) { - $this->parent = $parent; + $this->default_folder = $default_folder; return $this; } @@ -71,11 +71,14 @@ class ContentCreateEvent extends ContentEvent /** * @return mixed */ - public function getParent() + public function getDefaultFolder() { - return $this->parent; + return $this->default_folder; } + + + /** * @param mixed $visible * diff --git a/core/lib/Thelia/Model/Content.php b/core/lib/Thelia/Model/Content.php index 10ed2afe3..ca1978e65 100755 --- a/core/lib/Thelia/Model/Content.php +++ b/core/lib/Thelia/Model/Content.php @@ -30,6 +30,12 @@ class Content extends BaseContent // and generate the position relative to this folder } + public function getDefaultFolderId() + { + //@TODO update contentFolder Table, adding by_default column + } + + /** * {@inheritDoc} */ diff --git a/templates/admin/default/content-edit.html b/templates/admin/default/content-edit.html new file mode 100644 index 000000000..97fc02d70 --- /dev/null +++ b/templates/admin/default/content-edit.html @@ -0,0 +1,344 @@ +{extends file="admin-layout.tpl"} + +{block name="check-permissions"}admin.content.view{/block} + +{block name="page-title"}{intl l='Edit content'}{/block} + +{block name="main-content"} +
| {intl l='ID'} | + +{intl l='Attribute title'} | + + {module_include location='folder_contents_table_header'} + +{intl l="Actions"} | +
|---|---|---|
| {$ID} | + ++ {$TITLE} + | + + {module_include location='folder_contents_table_row'} + +
+
+ {loop type="auth" name="can_create" roles="ADMIN" permissions="admin.configuration.folder.content.delete"}
+
+
+
+ {/loop}
+
+ |
+
|
+
+ {intl l="This folder contains no contents"}
+
+ |
+ ||