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 +++++++++++++++++++++ src/Wallabag/GroupBundle/Form/GroupType.php | 39 ++++++ src/Wallabag/GroupBundle/Form/NewGroupType.php | 37 ++++++ .../Resources/views/Manage/edit.html.twig | 44 +++++++ .../Resources/views/Manage/index.html.twig | 44 +++++++ .../Resources/views/Manage/new.html.twig | 37 ++++++ 6 files changed, 338 insertions(+) create mode 100644 src/Wallabag/GroupBundle/Controller/ManageController.php create mode 100644 src/Wallabag/GroupBundle/Form/GroupType.php create mode 100644 src/Wallabag/GroupBundle/Form/NewGroupType.php create mode 100644 src/Wallabag/GroupBundle/Resources/views/Manage/edit.html.twig create mode 100644 src/Wallabag/GroupBundle/Resources/views/Manage/index.html.twig create mode 100644 src/Wallabag/GroupBundle/Resources/views/Manage/new.html.twig (limited to 'src/Wallabag/GroupBundle') 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() + ; + } +} diff --git a/src/Wallabag/GroupBundle/Form/GroupType.php b/src/Wallabag/GroupBundle/Form/GroupType.php new file mode 100644 index 00000000..c2ad764b --- /dev/null +++ b/src/Wallabag/GroupBundle/Form/GroupType.php @@ -0,0 +1,39 @@ +add('name', TextType::class, [ + 'required' => false, + 'label' => 'group.form.name_label', + ]) + ->add('save', SubmitType::class, [ + 'label' => 'group.form.save', + ]) + ; + } + + /** + * @param OptionsResolver $resolver + */ + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults(array( + 'data_class' => 'Wallabag\GroupBundle\Entity\Group', + )); + } +} diff --git a/src/Wallabag/GroupBundle/Form/NewGroupType.php b/src/Wallabag/GroupBundle/Form/NewGroupType.php new file mode 100644 index 00000000..29b20fe0 --- /dev/null +++ b/src/Wallabag/GroupBundle/Form/NewGroupType.php @@ -0,0 +1,37 @@ +add('name', TextType::class, [ + 'required' => true, + 'label' => 'group.form.name_label', + ]) + ->add('save', SubmitType::class, [ + 'label' => 'group.form.save', + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults([ + 'data_class' => 'Wallabag\GroupBundle\Entity\Group', + ]); + } + + public function getBlockPrefix() + { + return 'new_group'; + } +} diff --git a/src/Wallabag/GroupBundle/Resources/views/Manage/edit.html.twig b/src/Wallabag/GroupBundle/Resources/views/Manage/edit.html.twig new file mode 100644 index 00000000..7de68c35 --- /dev/null +++ b/src/Wallabag/GroupBundle/Resources/views/Manage/edit.html.twig @@ -0,0 +1,44 @@ +{% extends "WallabagCoreBundle::layout.html.twig" %} + +{% block title %}{{ 'group.page_title'|trans }}{% endblock %} + +{% block content %} + +
+
+
+
+
+

{{ 'group.edit_group'|trans }}

+ +
+ {{ form_start(edit_form) }} + {{ form_errors(edit_form) }} + +
+
+ {{ form_label(edit_form.name) }} + {{ form_errors(edit_form.name) }} + {{ form_widget(edit_form.name) }} +
+
+ +
+ + {{ form_widget(edit_form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} + {{ form_widget(edit_form._token) }} + +

+ {{ form_start(delete_form) }} + + {{ form_end(delete_form) }} +

+

{{ 'group.form.back_to_list'|trans }}

+
+
+
+
+
+
+ +{% endblock %} diff --git a/src/Wallabag/GroupBundle/Resources/views/Manage/index.html.twig b/src/Wallabag/GroupBundle/Resources/views/Manage/index.html.twig new file mode 100644 index 00000000..ce2a4556 --- /dev/null +++ b/src/Wallabag/GroupBundle/Resources/views/Manage/index.html.twig @@ -0,0 +1,44 @@ +{% extends "WallabagCoreBundle::layout.html.twig" %} + +{% block title %}{{ 'group.page_title'|trans }}{% endblock %} + +{% block content %} + +
+
+
+
+
+

{{ 'group.description'|trans|raw }}

+ + + + + + + + + + + {% for group in groups %} + + + + + + {% endfor %} + +
{{ 'group.form.name_label'|trans }}{{ 'group.form.roles_label'|trans }}{{ 'group.list.actions'|trans }}
{{ group.name }} + {{ 'group.list.edit_action'|trans }} +
+
+

+ {{ 'group.list.create_new_one'|trans }} +

+
+
+
+
+
+ +{% endblock %} diff --git a/src/Wallabag/GroupBundle/Resources/views/Manage/new.html.twig b/src/Wallabag/GroupBundle/Resources/views/Manage/new.html.twig new file mode 100644 index 00000000..3f1c2ad5 --- /dev/null +++ b/src/Wallabag/GroupBundle/Resources/views/Manage/new.html.twig @@ -0,0 +1,37 @@ +{% extends "WallabagCoreBundle::layout.html.twig" %} + +{% block title %}{{ 'group.page_title'|trans }}{% endblock %} + +{% block content %} + +
+
+
+
+
+

{{ 'group.new_group'|trans }}

+ +
+ {{ form_start(form) }} + {{ form_errors(form) }} + +
+
+ {{ form_label(form.name) }} + {{ form_errors(form.name) }} + {{ form_widget(form.name) }} +
+
+ + {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} + {{ form_rest(form) }} + +

{{ 'group.form.back_to_list'|trans }}

+
+
+
+
+
+
+ +{% endblock %} -- cgit v1.2.3