From 773ea55e3dc83593469a887e768aeeb5f69a70cc Mon Sep 17 00:00:00 2001 From: "Gergely Polonkai (W00d5t0ck)" Date: Wed, 5 Sep 2012 13:18:18 +0200 Subject: [PATCH] Added blog post editing function Signed-off-by: Gergely Polonkai (W00d5t0ck) --- .../Controller/AdminController.php | 31 ++++++++++++++++--- .../Resources/views/Admin/listBlog.html.twig | 27 ++++++++++++++++ .../views/Admin/newBlogPost.html.twig | 7 ++++- 3 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 src/GergelyPolonkai/FrontBundle/Resources/views/Admin/listBlog.html.twig diff --git a/src/GergelyPolonkai/FrontBundle/Controller/AdminController.php b/src/GergelyPolonkai/FrontBundle/Controller/AdminController.php index ea623cd..96e9ac6 100644 --- a/src/GergelyPolonkai/FrontBundle/Controller/AdminController.php +++ b/src/GergelyPolonkai/FrontBundle/Controller/AdminController.php @@ -50,12 +50,19 @@ class AdminController extends Controller } /** - * @Route("/blog/post", name="GergelyPolonkaiFrontBundle_adminNewBlogPost") + * @Route("/blog/post/{id}", name="GergelyPolonkaiFrontBundle_adminEditBlogPost", defaults={"id": null}) * @Template */ - public function newBlogPostAction() + public function newBlogPostAction($id = null) { - $post = new Post(); + if (is_numeric($id)) { + $post = $this->getDoctrine()->getRepository('GergelyPolonkaiFrontBundle:Post')->findOneById($id); + if ($post === null) { + throw $this->createNotFoundException(); + } + } else { + $post = new Post(); + } $form = $this->createForm(new PostType(), $post); $request = $this->getRequest(); $user = $this->get('security.context')->getToken()->getUser(); @@ -68,12 +75,28 @@ class AdminController extends Controller $em->persist($post); $em->flush(); - return $this->redirect($this->generateUrl('GergelyPolonkaiFrontBundle_adminNewBlogPost')); + return $this->redirect($this->generateUrl('GergelyPolonkaiFrontBundle_adminBlogList')); } } return array( 'form' => $form->createView(), + 'post' => $post, + ); + } + + /** + * @Route("/blog/", name="GergelyPolonkaiFrontBundle_adminBlogList") + * @Template + */ + public function listBlogAction() + { + $postRepo = $this->getDoctrine()->getRepository('GergelyPolonkaiFrontBundle:Post'); + + $posts = $postRepo->findBy(array(), array('createdAt' => 'DESC')); + + return array( + 'posts' => $posts, ); } } diff --git a/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/listBlog.html.twig b/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/listBlog.html.twig new file mode 100644 index 0000000..cd2df7c --- /dev/null +++ b/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/listBlog.html.twig @@ -0,0 +1,27 @@ +{% extends 'GergelyPolonkaiFrontBundle:Default:front_base.html.twig' %} + +{% block content %} +

All posts

+New post + + + + + + + + +{% if posts %} + +{% for post in posts %} + + + + + +{% endfor %} + +{% endif %} +
Title (click to edit)AuthorCreated at
{{ post.title }}{{ post.user.name }}{{ post.createdAt|date('m/d/Y') }}
+New post +{% endblock %} diff --git a/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/newBlogPost.html.twig b/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/newBlogPost.html.twig index db3e60d..e45074b 100644 --- a/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/newBlogPost.html.twig +++ b/src/GergelyPolonkai/FrontBundle/Resources/views/Admin/newBlogPost.html.twig @@ -1,8 +1,13 @@ {% extends 'GergelyPolonkaiFrontBundle:Default:front_base.html.twig' %} {% block content %} -
+{% if post.id is not null %} + +{% else %} + +{% endif %} {{ form_widget(form) }} + Cancel
{% endblock content %}