X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=006fa396476019c3055ed9c83da58b6f542acdba;hb=8ce32af61229eec8f4cc34b207273d47f60adc48;hp=ef686ff1b7977a787486d6926ef1c4807c14b22b;hpb=053b9568b2e3d032720d405bc1c2b71eccb36714;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ef686ff1..006fa396 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -9,6 +9,9 @@ use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Service\Extractor; use Wallabag\CoreBundle\Form\Type\NewEntryType; use Wallabag\CoreBundle\Form\Type\EditEntryType; +use Wallabag\CoreBundle\Filter\EntryFilterType; +use Pagerfanta\Adapter\DoctrineORMAdapter; +use Pagerfanta\Pagerfanta; class EntryController extends Controller { @@ -101,24 +104,41 @@ class EntryController extends Controller /** * Shows unread entries for current user. * + * @param Request $request + * @param int $page + * * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showUnreadAction($page) + public function showUnreadAction(Request $request, $page) { - $entries = $this->getDoctrine() + $form = $this->get('form.factory')->create(new EntryFilterType()); + + $filterBuilder = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') ->findUnreadByUser($this->getUser()->getId()); + if ($request->query->has($form->getName())) { + // manually bind values from the request + $form->submit($request->query->get($form->getName())); + + // build the query from the given form object + $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder); + } + + $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery()); + $entries = new Pagerfanta($pagerAdapter); + $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', array( - 'entries' => $entries, - 'currentPage' => $page + 'form' => $form->createView(), + 'entries' => $entries, + 'currentPage' => $page, ) ); } @@ -126,24 +146,41 @@ class EntryController extends Controller /** * Shows read entries for current user. * + * @param Request $request + * @param int $page + * * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showArchiveAction($page) + public function showArchiveAction(Request $request, $page) { - $entries = $this->getDoctrine() + $form = $this->get('form.factory')->create(new EntryFilterType()); + + $filterBuilder = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') ->findArchiveByUser($this->getUser()->getId()); + if ($request->query->has($form->getName())) { + // manually bind values from the request + $form->submit($request->query->get($form->getName())); + + // build the query from the given form object + $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder); + } + + $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery()); + $entries = new Pagerfanta($pagerAdapter); + $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', array( - 'entries' => $entries, - 'currentPage' => $page + 'form' => $form->createView(), + 'entries' => $entries, + 'currentPage' => $page, ) ); } @@ -151,24 +188,41 @@ class EntryController extends Controller /** * Shows starred entries for current user. * + * @param Request $request + * @param int $page + * * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"}) * * @return \Symfony\Component\HttpFoundation\Response */ - public function showStarredAction($page) + public function showStarredAction(Request $request, $page) { - $entries = $this->getDoctrine() + $form = $this->get('form.factory')->create(new EntryFilterType()); + + $filterBuilder = $this->getDoctrine() ->getRepository('WallabagCoreBundle:Entry') ->findStarredByUser($this->getUser()->getId()); + if ($request->query->has($form->getName())) { + // manually bind values from the request + $form->submit($request->query->get($form->getName())); + + // build the query from the given form object + $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder); + } + + $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery()); + $entries = new Pagerfanta($pagerAdapter); + $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); $entries->setCurrentPage($page); return $this->render( 'WallabagCoreBundle:Entry:entries.html.twig', array( - 'entries' => $entries, - 'currentPage' => $page + 'form' => $form->createView(), + 'entries' => $entries, + 'currentPage' => $page, ) ); } @@ -211,7 +265,7 @@ class EntryController extends Controller $this->get('session')->getFlashBag()->add( 'notice', - 'Entry archived' + 'Entry '.($entry->isArchived() ? 'archived' : 'unarchived') ); return $this->redirect($request->headers->get('referer')); @@ -236,7 +290,7 @@ class EntryController extends Controller $this->get('session')->getFlashBag()->add( 'notice', - 'Entry starred' + 'Entry '.($entry->isStarred() ? 'starred' : 'unstarred') ); return $this->redirect($request->headers->get('referer'));