From 467327771aea031c0ad6e7ab0e8f5a97ba69a8e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Sun, 12 Apr 2020 16:31:12 +0200 Subject: Added mass actions for Material design in list view --- .../CoreBundle/Controller/EntryController.php | 42 ++++++++++++++++++++++ .../material/Entry/Card/_mass_checkbox.html.twig | 3 ++ .../themes/material/Entry/_card_list.html.twig | 1 + .../views/themes/material/Entry/entries.html.twig | 17 +++++++++ 4 files changed, 63 insertions(+) create mode 100644 src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_mass_checkbox.html.twig (limited to 'src/Wallabag') diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ba5bfbe2..9b2954e7 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -20,6 +20,48 @@ use Wallabag\CoreBundle\Form\Type\SearchEntryType; class EntryController extends Controller { + /** + * @Route("/mass", name="mass_action") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function massAction(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $values = $request->request->all(); + + $action = 'toggle-read'; + if (isset($values['toggle-star'])) { + $action = 'toggle-star'; + } elseif (isset($values['delete'])) { + $action = 'delete'; + } + + if (isset($values['entry-checkbox'])) { + foreach ($values['entry-checkbox'] as $id) { + /** @var Entry * */ + $entry = $this->get('wallabag_core.entry_repository')->findById((int) $id)[0]; + + $this->checkUserAction($entry); + + if ('toggle-read' === $action) { + $entry->toggleArchive(); + } elseif ('toggle-star' === $action) { + $entry->toggleStar(); + } elseif ('delete' === $action) { + $this->get('event_dispatcher')->dispatch(EntryDeletedEvent::NAME, new EntryDeletedEvent($entry)); + $em->remove($entry); + } + } + + $em->flush(); + } + + $redirectUrl = $this->get('wallabag_core.helper.redirect')->to($request->headers->get('referer')); + + return $this->redirect($redirectUrl); + } + /** * @param int $page * diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_mass_checkbox.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_mass_checkbox.html.twig new file mode 100644 index 00000000..d35d8db1 --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/Card/_mass_checkbox.html.twig @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig index 6a095035..cb2f6f74 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/_card_list.html.twig @@ -1,4 +1,5 @@
+ {% include "@WallabagCore/themes/material/Entry/Card/_mass_checkbox.html.twig" with {'entry': entry} only %}