From 36f30fa31e0d2373f5c39851ea9138493fbde341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 3 Nov 2016 12:11:48 +0100 Subject: Added groups management --- .../GroupBundle/Controller/ManageController.php | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/Wallabag/GroupBundle/Controller/ManageController.php (limited to 'src/Wallabag/GroupBundle/Controller/ManageController.php') diff --git a/src/Wallabag/GroupBundle/Controller/ManageController.php b/src/Wallabag/GroupBundle/Controller/ManageController.php new file mode 100644 index 00000000..7015a465 --- /dev/null +++ b/src/Wallabag/GroupBundle/Controller/ManageController.php @@ -0,0 +1,137 @@ +getDoctrine()->getManager(); + + $groups = $em->getRepository('WallabagGroupBundle:Group')->findAll(); + + return $this->render('WallabagGroupBundle:Manage:index.html.twig', array( + 'groups' => $groups, + )); + } + + /** + * Creates a new Group entity. + * + * @Route("/new", name="group_new") + * @Method({"GET", "POST"}) + */ + public function newAction(Request $request) + { + $group = new Group(''); + + $form = $this->createForm('Wallabag\GroupBundle\Form\NewGroupType', $group); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $em = $this->getDoctrine()->getManager(); + $em->persist($group); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + $this->get('translator')->trans('flashes.group.notice.added', ['%name%' => $group->getName()]) + ); + + return $this->redirectToRoute('group_edit', array('id' => $group->getId())); + } + + return $this->render('WallabagGroupBundle:Manage:new.html.twig', array( + 'group' => $group, + 'form' => $form->createView(), + )); + } + + /** + * Displays a form to edit an existing Group entity. + * + * @Route("/{id}/edit", name="group_edit") + * @Method({"GET", "POST"}) + */ + public function editAction(Request $request, Group $group) + { + $deleteForm = $this->createDeleteForm($group); + $editForm = $this->createForm('Wallabag\GroupBundle\Form\GroupType', $group); + $editForm->handleRequest($request); + + if ($editForm->isSubmitted() && $editForm->isValid()) { + $em = $this->getDoctrine()->getManager(); + $em->persist($group); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + $this->get('translator')->trans('flashes.group.notice.updated', ['%name%' => $group->getName()]) + ); + + return $this->redirectToRoute('group_edit', array('id' => $group->getId())); + } + + return $this->render('WallabagGroupBundle:Manage:edit.html.twig', array( + 'group' => $group, + 'edit_form' => $editForm->createView(), + 'delete_form' => $deleteForm->createView(), + )); + } + + /** + * Deletes a Group entity. + * + * @Route("/{id}", name="group_delete") + * @Method("DELETE") + */ + public function deleteAction(Request $request, Group $group) + { + $form = $this->createDeleteForm($group); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $this->get('session')->getFlashBag()->add( + 'notice', + $this->get('translator')->trans('flashes.group.notice.deleted', ['%name%' => $group->getName()]) + ); + + $em = $this->getDoctrine()->getManager(); + $em->remove($group); + $em->flush(); + } + + return $this->redirectToRoute('group_index'); + } + + /** + * Creates a form to delete a Group entity. + * + * @param Group $group The Group entity + * + * @return \Symfony\Component\Form\Form The form + */ + private function createDeleteForm(Group $group) + { + return $this->createFormBuilder() + ->setAction($this->generateUrl('group_delete', array('id' => $group->getId()))) + ->setMethod('DELETE') + ->getForm() + ; + } +} -- cgit v1.2.3