--- /dev/null
+<?php
+
+namespace Wallabag\GroupBundle\Controller;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Wallabag\GroupBundle\Entity\Group;
+
+/**
+ * Group controller.
+ */
+class ManageController extends Controller
+{
+ /**
+ * Lists all Group entities.
+ *
+ * @Route("/", name="group_index")
+ * @Method("GET")
+ */
+ public function indexAction()
+ {
+ $em = $this->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()
+ ;
+ }
+}