X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=49714d0249cb9330e119bdf896212ed14b700bef;hb=7e63b892f9682e62f6758bb51c6912499f5bd8d1;hp=7fd982c903e82e66f0789125bedd62ffba616d5e;hpb=4346a86068781f4acdeb574d7e2af08b77b58ea7;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 7fd982c9..49714d02 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -7,7 +7,8 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Service\Extractor; -use Wallabag\CoreBundle\Form\Type\EntryType; +use Wallabag\CoreBundle\Form\Type\NewEntryType; +use Wallabag\CoreBundle\Form\Type\EditEntryType; class EntryController extends Controller { @@ -22,7 +23,7 @@ class EntryController extends Controller { $entry = new Entry($this->getUser()); - $form = $this->createForm(new EntryType(), $entry); + $form = $this->createForm(new NewEntryType(), $entry); $form->handleRequest($request); @@ -49,63 +50,111 @@ class EntryController extends Controller )); } + /** + * Edit an entry content. + * + * @param Request $request + * @param Entry $entry + * + * @Route("/edit/{id}", requirements={"id" = "\d+"}, name="edit") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function editEntryAction(Request $request, Entry $entry) + { + $this->checkUserAction($entry); + + $form = $this->createForm(new EditEntryType(), $entry); + + $form->handleRequest($request); + + if ($form->isValid()) { + $em = $this->getDoctrine()->getManager(); + $em->persist($entry); + $em->flush(); + + $this->get('session')->getFlashBag()->add( + 'notice', + 'Entry updated' + ); + + return $this->redirect($this->generateUrl('view', array('id' => $entry->getId()))); + } + + return $this->render('WallabagCoreBundle:Entry:edit.html.twig', array( + 'form' => $form->createView(), + )); + } + /** * Shows unread entries for current user. * - * @Route("/unread", name="unread") + * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showUnreadAction() + public function showUnreadAction($page) { - // TODO change pagination $entries = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') - ->findUnreadByUser($this->getUser()->getId(), 0); + ->findUnreadByUser($this->getUser()->getId()); + + $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', - array('entries' => $entries) + array( + 'entries' => $entries, + 'currentPage' => $page + ) ); } /** * Shows read entries for current user. * - * @Route("/archive", name="archive") + * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showArchiveAction() + public function showArchiveAction($page) { - // TODO change pagination $entries = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') - ->findArchiveByUser($this->getUser()->getId(), 0); + ->findArchiveByUser($this->getUser()->getId()); + + $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', - array('entries' => $entries) + array( + 'entries' => $entries, + 'currentPage' => $page + ) ); } /** * Shows starred entries for current user. * - * @Route("/starred", name="starred") + * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showStarredAction() + public function showStarredAction($page) { - // TODO change pagination $entries = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') - ->findStarredByUser($this->getUser()->getId(), 0); + ->findStarredByUser($this->getUser()->getId()); + + $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', - array('entries' => $entries) + array( + 'entries' => $entries, + 'currentPage' => $page + ) ); } @@ -212,7 +261,7 @@ class EntryController extends Controller private function checkUserAction(Entry $entry) { if ($this->getUser()->getId() != $entry->getUser()->getId()) { - throw $this->createAccessDeniedException('You can not use this entry.'); + throw $this->createAccessDeniedException('You can not access this entry.'); } } }