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
{
/**
* @param Request $request
*
- * @Route("/new", name="new_entry")
+ * @Route("/new-entry", name="new_entry")
*
* @return \Symfony\Component\HttpFoundation\Response
*/
- public function addEntryAction(Request $request)
+ public function addEntryFormAction(Request $request)
{
$entry = new Entry($this->getUser());
return $this->redirect($this->generateUrl('homepage'));
}
- return $this->render('WallabagCoreBundle:Entry:new.html.twig', array(
+ return $this->render('WallabagCoreBundle:Entry:new_form.html.twig', array(
'form' => $form->createView(),
));
}
+ /**
+ * @param Request $request
+ *
+ * @Route("/new", name="new")
+ *
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ public function addEntryAction(Request $request)
+ {
+ return $this->render('WallabagCoreBundle:Entry:new.html.twig');
+ }
+
/**
* Edit an entry content.
*
/**
* Shows unread entries for current user.
*
- * @Route("/unread", name="unread")
+ * @param Request $request
+ * @param int $page
+ *
+ * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"})
*
* @return \Symfony\Component\HttpFoundation\Response
*/
- public function showUnreadAction()
+ public function showUnreadAction(Request $request, $page)
{
- // TODO change pagination
- $entries = $this->getDoctrine()
+ $form = $this->get('form.factory')->create(new EntryFilterType());
+
+ $filterBuilder = $this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
- ->findUnreadByUser($this->getUser()->getId(), 0);
+ ->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)
+ array(
+ 'form' => $form->createView(),
+ 'entries' => $entries,
+ 'currentPage' => $page
+ )
);
}
/**
* Shows read entries for current user.
*
- * @Route("/archive", name="archive")
+ * @param Request $request
+ * @param int $page
+ *
+ * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"})
*
* @return \Symfony\Component\HttpFoundation\Response
*/
- public function showArchiveAction()
+ public function showArchiveAction(Request $request, $page)
{
- // TODO change pagination
- $entries = $this->getDoctrine()
+ $form = $this->get('form.factory')->create(new EntryFilterType());
+
+ $filterBuilder = $this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
- ->findArchiveByUser($this->getUser()->getId(), 0);
+ ->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)
+ array(
+ 'form' => $form->createView(),
+ 'entries' => $entries,
+ 'currentPage' => $page
+ )
);
}
/**
* Shows starred entries for current user.
*
- * @Route("/starred", name="starred")
+ * @param Request $request
+ * @param int $page
+ *
+ * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"})
*
* @return \Symfony\Component\HttpFoundation\Response
*/
- public function showStarredAction()
+ public function showStarredAction(Request $request, $page)
{
- // TODO change pagination
- $entries = $this->getDoctrine()
+ $form = $this->get('form.factory')->create(new EntryFilterType());
+
+ $filterBuilder = $this->getDoctrine()
->getRepository('WallabagCoreBundle:Entry')
- ->findStarredByUser($this->getUser()->getId(), 0);
+ ->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)
+ array(
+ 'form' => $form->createView(),
+ 'entries' => $entries,
+ 'currentPage' => $page
+ )
);
}