From 163eae0bb15d0daa5390f434a42a8176eca186e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 23 Jan 2015 12:45:24 +0100 Subject: toggle archive / fav actions --- src/WallabagBundle/Controller/EntryController.php | 92 ++++++++++++++++++++--- 1 file changed, 82 insertions(+), 10 deletions(-) (limited to 'src/WallabagBundle/Controller/EntryController.php') diff --git a/src/WallabagBundle/Controller/EntryController.php b/src/WallabagBundle/Controller/EntryController.php index 233a6c32..fbbb76aa 100644 --- a/src/WallabagBundle/Controller/EntryController.php +++ b/src/WallabagBundle/Controller/EntryController.php @@ -4,67 +4,139 @@ namespace WallabagBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; use WallabagBundle\Repository; +use WallabagBundle\Entity\Entries; class EntryController extends Controller { /** + * Shows unread entries for current user + * * @Route("/unread", name="unread") + * @return \Symfony\Component\HttpFoundation\Response */ public function showUnreadAction() { $repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries'); - $entries = $repository->findUnreadByUser(1); + $entries = $repository->findUnreadByUser(1, 0); return $this->render( 'WallabagBundle:Entry:entries.html.twig', array('entries' => $entries) ); - } /** + * Shows read entries for current user + * * @Route("/archive", name="archive") + * @return \Symfony\Component\HttpFoundation\Response */ public function showArchiveAction() { $repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries'); - $entries = $repository->findArchiveByUser(1); + $entries = $repository->findArchiveByUser(1, 0); return $this->render( 'WallabagBundle:Entry:entries.html.twig', array('entries' => $entries) ); - } /** + * Shows starred entries for current user + * * @Route("/starred", name="starred") + * @return \Symfony\Component\HttpFoundation\Response */ public function showStarredAction() { $repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries'); - $entries = $repository->findStarredByUser(1); + $entries = $repository->findStarredByUser(1, 0); return $this->render( 'WallabagBundle:Entry:entries.html.twig', array('entries' => $entries) ); - } /** + * Shows entry content + * + * @param Entries $entry * @Route("/view/{id}", requirements={"id" = "\d+"}, name="view") + * @return \Symfony\Component\HttpFoundation\Response */ - public function viewAction($id) + public function viewAction(Entries $entry) { - $repository = $this->getDoctrine()->getRepository('WallabagBundle:Entries'); - $entry = $repository->find($id); - return $this->render( 'WallabagBundle:Entry:entry.html.twig', array('entry' => $entry) ); + } + + /** + * Changes read status for an entry + * + * @param Request $request + * @param Entries $entry + * @Route("/archive/{id}", requirements={"id" = "\d+"}, name="archive_entry") + * @return \Symfony\Component\HttpFoundation\RedirectResponse + */ + public function toggleArchiveAction(Request $request, Entries $entry) + { + $entry->toggleArchive(); + $this->getDoctrine()->getManager()->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + 'Entry archived' + ); + + return $this->redirect($request->headers->get('referer')); + } + + /** + * Changes favorite status for an entry + * + * @param Request $request + * @param Entries $entry + * @Route("/star/{id}", requirements={"id" = "\d+"}, name="star_entry") + * @return \Symfony\Component\HttpFoundation\RedirectResponse + */ + public function toggleStarAction(Request $request, Entries $entry) + { + $entry->toggleStar(); + $this->getDoctrine()->getManager()->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + 'Entry starred' + ); + + return $this->redirect($request->headers->get('referer')); + } + + /** + * Deletes entry + * + * @param Request $request + * @param Entries $entry + * @Route("/delete/{id}", requirements={"id" = "\d+"}, name="delete_entry") + * @return \Symfony\Component\HttpFoundation\RedirectResponse + */ + public function deleteEntryAction(Request $request, Entries $entry) + { + $em = $this->getDoctrine()->getEntityManager(); + $em->remove($entry); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + 'Entry deleted' + ); + return $this->redirect($request->headers->get('referer')); } } -- cgit v1.2.3