aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Controller/EntryController.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller/EntryController.php')
-rw-r--r--src/Wallabag/CoreBundle/Controller/EntryController.php84
1 files changed, 75 insertions, 9 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php
index 29e0ffb0..6944a686 100644
--- a/src/Wallabag/CoreBundle/Controller/EntryController.php
+++ b/src/Wallabag/CoreBundle/Controller/EntryController.php
@@ -9,17 +9,20 @@ use Wallabag\CoreBundle\Entity\Entry;
9use Wallabag\CoreBundle\Service\Extractor; 9use Wallabag\CoreBundle\Service\Extractor;
10use Wallabag\CoreBundle\Form\Type\NewEntryType; 10use Wallabag\CoreBundle\Form\Type\NewEntryType;
11use Wallabag\CoreBundle\Form\Type\EditEntryType; 11use Wallabag\CoreBundle\Form\Type\EditEntryType;
12use Wallabag\CoreBundle\Filter\EntryFilterType;
13use Pagerfanta\Adapter\DoctrineORMAdapter;
14use Pagerfanta\Pagerfanta;
12 15
13class EntryController extends Controller 16class EntryController extends Controller
14{ 17{
15 /** 18 /**
16 * @param Request $request 19 * @param Request $request
17 * 20 *
18 * @Route("/new", name="new_entry") 21 * @Route("/new-entry", name="new_entry")
19 * 22 *
20 * @return \Symfony\Component\HttpFoundation\Response 23 * @return \Symfony\Component\HttpFoundation\Response
21 */ 24 */
22 public function addEntryAction(Request $request) 25 public function addEntryFormAction(Request $request)
23 { 26 {
24 $entry = new Entry($this->getUser()); 27 $entry = new Entry($this->getUser());
25 28
@@ -45,12 +48,24 @@ class EntryController extends Controller
45 return $this->redirect($this->generateUrl('homepage')); 48 return $this->redirect($this->generateUrl('homepage'));
46 } 49 }
47 50
48 return $this->render('WallabagCoreBundle:Entry:new.html.twig', array( 51 return $this->render('WallabagCoreBundle:Entry:new_form.html.twig', array(
49 'form' => $form->createView(), 52 'form' => $form->createView(),
50 )); 53 ));
51 } 54 }
52 55
53 /** 56 /**
57 * @param Request $request
58 *
59 * @Route("/new", name="new")
60 *
61 * @return \Symfony\Component\HttpFoundation\Response
62 */
63 public function addEntryAction(Request $request)
64 {
65 return $this->render('WallabagCoreBundle:Entry:new.html.twig');
66 }
67
68 /**
54 * Edit an entry content. 69 * Edit an entry content.
55 * 70 *
56 * @param Request $request 71 * @param Request $request
@@ -89,22 +104,39 @@ class EntryController extends Controller
89 /** 104 /**
90 * Shows unread entries for current user. 105 * Shows unread entries for current user.
91 * 106 *
107 * @param Request $request
108 * @param int $page
109 *
92 * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"}) 110 * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"})
93 * 111 *
94 * @return \Symfony\Component\HttpFoundation\Response 112 * @return \Symfony\Component\HttpFoundation\Response
95 */ 113 */
96 public function showUnreadAction($page) 114 public function showUnreadAction(Request $request, $page)
97 { 115 {
98 $entries = $this->getDoctrine() 116 $form = $this->get('form.factory')->create(new EntryFilterType());
117
118 $filterBuilder = $this->getDoctrine()
99 ->getRepository('WallabagCoreBundle:Entry') 119 ->getRepository('WallabagCoreBundle:Entry')
100 ->findUnreadByUser($this->getUser()->getId()); 120 ->findUnreadByUser($this->getUser()->getId());
101 121
122 if ($request->query->has($form->getName())) {
123 // manually bind values from the request
124 $form->submit($request->query->get($form->getName()));
125
126 // build the query from the given form object
127 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
128 }
129
130 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
131 $entries = new Pagerfanta($pagerAdapter);
132
102 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 133 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
103 $entries->setCurrentPage($page); 134 $entries->setCurrentPage($page);
104 135
105 return $this->render( 136 return $this->render(
106 'WallabagCoreBundle:Entry:entries.html.twig', 137 'WallabagCoreBundle:Entry:entries.html.twig',
107 array( 138 array(
139 'form' => $form->createView(),
108 'entries' => $entries, 140 'entries' => $entries,
109 'currentPage' => $page 141 'currentPage' => $page
110 ) 142 )
@@ -114,22 +146,39 @@ class EntryController extends Controller
114 /** 146 /**
115 * Shows read entries for current user. 147 * Shows read entries for current user.
116 * 148 *
149 * @param Request $request
150 * @param int $page
151 *
117 * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"}) 152 * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"})
118 * 153 *
119 * @return \Symfony\Component\HttpFoundation\Response 154 * @return \Symfony\Component\HttpFoundation\Response
120 */ 155 */
121 public function showArchiveAction($page) 156 public function showArchiveAction(Request $request, $page)
122 { 157 {
123 $entries = $this->getDoctrine() 158 $form = $this->get('form.factory')->create(new EntryFilterType());
159
160 $filterBuilder = $this->getDoctrine()
124 ->getRepository('WallabagCoreBundle:Entry') 161 ->getRepository('WallabagCoreBundle:Entry')
125 ->findArchiveByUser($this->getUser()->getId()); 162 ->findArchiveByUser($this->getUser()->getId());
126 163
164 if ($request->query->has($form->getName())) {
165 // manually bind values from the request
166 $form->submit($request->query->get($form->getName()));
167
168 // build the query from the given form object
169 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
170 }
171
172 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
173 $entries = new Pagerfanta($pagerAdapter);
174
127 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 175 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
128 $entries->setCurrentPage($page); 176 $entries->setCurrentPage($page);
129 177
130 return $this->render( 178 return $this->render(
131 'WallabagCoreBundle:Entry:entries.html.twig', 179 'WallabagCoreBundle:Entry:entries.html.twig',
132 array( 180 array(
181 'form' => $form->createView(),
133 'entries' => $entries, 182 'entries' => $entries,
134 'currentPage' => $page 183 'currentPage' => $page
135 ) 184 )
@@ -139,22 +188,39 @@ class EntryController extends Controller
139 /** 188 /**
140 * Shows starred entries for current user. 189 * Shows starred entries for current user.
141 * 190 *
191 * @param Request $request
192 * @param int $page
193 *
142 * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"}) 194 * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"})
143 * 195 *
144 * @return \Symfony\Component\HttpFoundation\Response 196 * @return \Symfony\Component\HttpFoundation\Response
145 */ 197 */
146 public function showStarredAction($page) 198 public function showStarredAction(Request $request, $page)
147 { 199 {
148 $entries = $this->getDoctrine() 200 $form = $this->get('form.factory')->create(new EntryFilterType());
201
202 $filterBuilder = $this->getDoctrine()
149 ->getRepository('WallabagCoreBundle:Entry') 203 ->getRepository('WallabagCoreBundle:Entry')
150 ->findStarredByUser($this->getUser()->getId()); 204 ->findStarredByUser($this->getUser()->getId());
151 205
206 if ($request->query->has($form->getName())) {
207 // manually bind values from the request
208 $form->submit($request->query->get($form->getName()));
209
210 // build the query from the given form object
211 $this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
212 }
213
214 $pagerAdapter = new DoctrineORMAdapter($filterBuilder->getQuery());
215 $entries = new Pagerfanta($pagerAdapter);
216
152 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); 217 $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage());
153 $entries->setCurrentPage($page); 218 $entries->setCurrentPage($page);
154 219
155 return $this->render( 220 return $this->render(
156 'WallabagCoreBundle:Entry:entries.html.twig', 221 'WallabagCoreBundle:Entry:entries.html.twig',
157 array( 222 array(
223 'form' => $form->createView(),
158 'entries' => $entries, 224 'entries' => $entries,
159 'currentPage' => $page 225 'currentPage' => $page
160 ) 226 )