X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FController%2FEntryController.php;h=8894690ced079e07c971dd8d7dba1567df28be08;hb=2686457448372543fdf4f1fc54c4fd20f0f02c2c;hp=29e0ffb0d9e37c1882ad8f5873c047434d8914e2;hpb=fedaf005377e6d62ff0986f7f54afef3287a6451;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 29e0ffb0..8894690c 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 { @@ -89,22 +92,39 @@ 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( + 'form' => $form->createView(), 'entries' => $entries, 'currentPage' => $page ) @@ -114,22 +134,39 @@ 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( + 'form' => $form->createView(), 'entries' => $entries, 'currentPage' => $page ) @@ -139,22 +176,39 @@ 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( + 'form' => $form->createView(), 'entries' => $entries, 'currentPage' => $page )