aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r--src/Wallabag/CoreBundle/Controller/ConfigController.php24
-rw-r--r--src/Wallabag/CoreBundle/Controller/FeedController.php (renamed from src/Wallabag/CoreBundle/Controller/RssController.php)96
2 files changed, 67 insertions, 53 deletions
diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php
index 9257ab18..3b281d48 100644
--- a/src/Wallabag/CoreBundle/Controller/ConfigController.php
+++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php
@@ -14,7 +14,7 @@ use Wallabag\CoreBundle\Entity\Config;
14use Wallabag\CoreBundle\Entity\TaggingRule; 14use Wallabag\CoreBundle\Entity\TaggingRule;
15use Wallabag\CoreBundle\Form\Type\ChangePasswordType; 15use Wallabag\CoreBundle\Form\Type\ChangePasswordType;
16use Wallabag\CoreBundle\Form\Type\ConfigType; 16use Wallabag\CoreBundle\Form\Type\ConfigType;
17use Wallabag\CoreBundle\Form\Type\RssType; 17use Wallabag\CoreBundle\Form\Type\FeedType;
18use Wallabag\CoreBundle\Form\Type\TaggingRuleType; 18use Wallabag\CoreBundle\Form\Type\TaggingRuleType;
19use Wallabag\CoreBundle\Form\Type\UserInformationType; 19use Wallabag\CoreBundle\Form\Type\UserInformationType;
20use Wallabag\CoreBundle\Tools\Utils; 20use Wallabag\CoreBundle\Tools\Utils;
@@ -92,17 +92,17 @@ class ConfigController extends Controller
92 return $this->redirect($this->generateUrl('config') . '#set3'); 92 return $this->redirect($this->generateUrl('config') . '#set3');
93 } 93 }
94 94
95 // handle rss information 95 // handle feed information
96 $rssForm = $this->createForm(RssType::class, $config, ['action' => $this->generateUrl('config') . '#set2']); 96 $feedForm = $this->createForm(FeedType::class, $config, ['action' => $this->generateUrl('config') . '#set2']);
97 $rssForm->handleRequest($request); 97 $feedForm->handleRequest($request);
98 98
99 if ($rssForm->isSubmitted() && $rssForm->isValid()) { 99 if ($feedForm->isSubmitted() && $feedForm->isValid()) {
100 $em->persist($config); 100 $em->persist($config);
101 $em->flush(); 101 $em->flush();
102 102
103 $this->addFlash( 103 $this->addFlash(
104 'notice', 104 'notice',
105 'flashes.config.notice.rss_updated' 105 'flashes.config.notice.feed_updated'
106 ); 106 );
107 107
108 return $this->redirect($this->generateUrl('config') . '#set2'); 108 return $this->redirect($this->generateUrl('config') . '#set2');
@@ -143,14 +143,14 @@ class ConfigController extends Controller
143 return $this->render('WallabagCoreBundle:Config:index.html.twig', [ 143 return $this->render('WallabagCoreBundle:Config:index.html.twig', [
144 'form' => [ 144 'form' => [
145 'config' => $configForm->createView(), 145 'config' => $configForm->createView(),
146 'rss' => $rssForm->createView(), 146 'feed' => $feedForm->createView(),
147 'pwd' => $pwdForm->createView(), 147 'pwd' => $pwdForm->createView(),
148 'user' => $userForm->createView(), 148 'user' => $userForm->createView(),
149 'new_tagging_rule' => $newTaggingRule->createView(), 149 'new_tagging_rule' => $newTaggingRule->createView(),
150 ], 150 ],
151 'rss' => [ 151 'feed' => [
152 'username' => $user->getUsername(), 152 'username' => $user->getUsername(),
153 'token' => $config->getRssToken(), 153 'token' => $config->getFeedToken(),
154 ], 154 ],
155 'twofactor_auth' => $this->getParameter('twofactor_auth'), 155 'twofactor_auth' => $this->getParameter('twofactor_auth'),
156 'wallabag_url' => $this->getParameter('domain_name'), 156 'wallabag_url' => $this->getParameter('domain_name'),
@@ -281,19 +281,19 @@ class ConfigController extends Controller
281 public function generateTokenAction(Request $request) 281 public function generateTokenAction(Request $request)
282 { 282 {
283 $config = $this->getConfig(); 283 $config = $this->getConfig();
284 $config->setRssToken(Utils::generateToken()); 284 $config->setFeedToken(Utils::generateToken());
285 285
286 $em = $this->getDoctrine()->getManager(); 286 $em = $this->getDoctrine()->getManager();
287 $em->persist($config); 287 $em->persist($config);
288 $em->flush(); 288 $em->flush();
289 289
290 if ($request->isXmlHttpRequest()) { 290 if ($request->isXmlHttpRequest()) {
291 return new JsonResponse(['token' => $config->getRssToken()]); 291 return new JsonResponse(['token' => $config->getFeedToken()]);
292 } 292 }
293 293
294 $this->addFlash( 294 $this->addFlash(
295 'notice', 295 'notice',
296 'flashes.config.notice.rss_token_updated' 296 'flashes.config.notice.feed_token_updated'
297 ); 297 );
298 298
299 return $this->redirect($this->generateUrl('config') . '#set2'); 299 return $this->redirect($this->generateUrl('config') . '#set2');
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/FeedController.php
index 1c831c03..8d422a90 100644
--- a/src/Wallabag/CoreBundle/Controller/RssController.php
+++ b/src/Wallabag/CoreBundle/Controller/FeedController.php
@@ -8,85 +8,96 @@ use Pagerfanta\Exception\OutOfRangeCurrentPageException;
8use Pagerfanta\Pagerfanta; 8use Pagerfanta\Pagerfanta;
9use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; 9use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
10use Symfony\Bundle\FrameworkBundle\Controller\Controller; 10use Symfony\Bundle\FrameworkBundle\Controller\Controller;
11use Symfony\Component\HttpFoundation\Request;
12use Symfony\Component\HttpFoundation\Response; 11use Symfony\Component\HttpFoundation\Response;
13use Symfony\Component\Routing\Annotation\Route; 12use Symfony\Component\Routing\Annotation\Route;
14use Symfony\Component\Routing\Generator\UrlGeneratorInterface; 13use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
15use Wallabag\CoreBundle\Entity\Tag; 14use Wallabag\CoreBundle\Entity\Tag;
16use Wallabag\UserBundle\Entity\User; 15use Wallabag\UserBundle\Entity\User;
17 16
18class RssController extends Controller 17class FeedController extends Controller
19{ 18{
20 /** 19 /**
21 * Shows unread entries for current user. 20 * Shows unread entries for current user.
22 * 21 *
23 * @Route("/{username}/{token}/unread.xml", name="unread_rss", defaults={"_format"="xml"}) 22 * @Route("/feed/{username}/{token}/unread/{page}", name="unread_feed", defaults={"page"=1, "_format"="xml"})
24 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") 23 *
24 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
25 *
26 * @param User $user
27 * @param $page
25 * 28 *
26 * @return \Symfony\Component\HttpFoundation\Response 29 * @return \Symfony\Component\HttpFoundation\Response
27 */ 30 */
28 public function showUnreadRSSAction(Request $request, User $user) 31 public function showUnreadFeedAction(User $user, $page)
29 { 32 {
30 return $this->showEntries('unread', $user, $request->query->get('page', 1)); 33 return $this->showEntries('unread', $user, $page);
31 } 34 }
32 35
33 /** 36 /**
34 * Shows read entries for current user. 37 * Shows read entries for current user.
35 * 38 *
36 * @Route("/{username}/{token}/archive.xml", name="archive_rss", defaults={"_format"="xml"}) 39 * @Route("/feed/{username}/{token}/archive/{page}", name="archive_feed", defaults={"page"=1, "_format"="xml"})
37 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") 40 *
41 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
42 *
43 * @param User $user
44 * @param $page
38 * 45 *
39 * @return \Symfony\Component\HttpFoundation\Response 46 * @return \Symfony\Component\HttpFoundation\Response
40 */ 47 */
41 public function showArchiveRSSAction(Request $request, User $user) 48 public function showArchiveFeedAction(User $user, $page)
42 { 49 {
43 return $this->showEntries('archive', $user, $request->query->get('page', 1)); 50 return $this->showEntries('archive', $user, $page);
44 } 51 }
45 52
46 /** 53 /**
47 * Shows starred entries for current user. 54 * Shows starred entries for current user.
48 * 55 *
49 * @Route("/{username}/{token}/starred.xml", name="starred_rss", defaults={"_format"="xml"}) 56 * @Route("/feed/{username}/{token}/starred/{page}", name="starred_feed", defaults={"page"=1, "_format"="xml"})
50 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") 57 *
58 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
59 *
60 * @param User $user
61 * @param $page
51 * 62 *
52 * @return \Symfony\Component\HttpFoundation\Response 63 * @return \Symfony\Component\HttpFoundation\Response
53 */ 64 */
54 public function showStarredRSSAction(Request $request, User $user) 65 public function showStarredFeedAction(User $user, $page)
55 { 66 {
56 return $this->showEntries('starred', $user, $request->query->get('page', 1)); 67 return $this->showEntries('starred', $user, $page);
57 } 68 }
58 69
59 /** 70 /**
60 * Shows all entries for current user. 71 * Shows all entries for current user.
61 * 72 *
62 * @Route("/{username}/{token}/all.xml", name="all_rss", defaults={"_format"="xml"}) 73 * @Route("/feed/{username}/{token}/all/{page}", name="all_feed", defaults={"page"=1, "_format"="xml"})
63 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") 74 *
75 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
64 * 76 *
65 * @return \Symfony\Component\HttpFoundation\Response 77 * @return \Symfony\Component\HttpFoundation\Response
66 */ 78 */
67 public function showAllRSSAction(Request $request, User $user) 79 public function showAllFeedAction(User $user, $page)
68 { 80 {
69 return $this->showEntries('all', $user, $request->query->get('page', 1)); 81 return $this->showEntries('all', $user, $page);
70 } 82 }
71 83
72 /** 84 /**
73 * Shows entries associated to a tag for current user. 85 * Shows entries associated to a tag for current user.
74 * 86 *
75 * @Route("/{username}/{token}/tags/{slug}.xml", name="tag_rss", defaults={"_format"="xml"}) 87 * @Route("/feed/{username}/{token}/tags/{slug}/{page}", name="tag_feed", defaults={"page"=1, "_format"="xml"})
76 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") 88 *
89 * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
77 * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) 90 * @ParamConverter("tag", options={"mapping": {"slug": "slug"}})
78 * 91 *
79 * @return \Symfony\Component\HttpFoundation\Response 92 * @return \Symfony\Component\HttpFoundation\Response
80 */ 93 */
81 public function showTagsAction(Request $request, User $user, Tag $tag) 94 public function showTagsFeedAction(User $user, Tag $tag, $page)
82 { 95 {
83 $page = $request->query->get('page', 1);
84
85 $url = $this->generateUrl( 96 $url = $this->generateUrl(
86 'tag_rss', 97 'tag_feed',
87 [ 98 [
88 'username' => $user->getUsername(), 99 'username' => $user->getUsername(),
89 'token' => $user->getConfig()->getRssToken(), 100 'token' => $user->getConfig()->getFeedToken(),
90 'slug' => $tag->getSlug(), 101 'slug' => $tag->getSlug(),
91 ], 102 ],
92 UrlGeneratorInterface::ABSOLUTE_URL 103 UrlGeneratorInterface::ABSOLUTE_URL
@@ -119,12 +130,15 @@ class RssController extends Controller
119 return $this->render( 130 return $this->render(
120 '@WallabagCore/themes/common/Entry/entries.xml.twig', 131 '@WallabagCore/themes/common/Entry/entries.xml.twig',
121 [ 132 [
122 'url_html' => $this->generateUrl('tag_entries', ['slug' => $tag->getSlug()], UrlGeneratorInterface::ABSOLUTE_URL), 133 'type' => 'tag',
123 'type' => 'tag (' . $tag->getLabel() . ')',
124 'url' => $url, 134 'url' => $url,
125 'entries' => $entries, 135 'entries' => $entries,
136 'user' => $user->getUsername(),
137 'domainName' => $this->getParameter('domain_name'),
138 'version' => $this->getParameter('wallabag_core.version'),
139 'tag' => $tag->getSlug(),
126 ], 140 ],
127 new Response('', 200, ['Content-Type' => 'application/rss+xml']) 141 new Response('', 200, ['Content-Type' => 'application/atom+xml'])
128 ); 142 );
129 } 143 }
130 144
@@ -162,14 +176,14 @@ class RssController extends Controller
162 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false); 176 $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false);
163 $entries = new Pagerfanta($pagerAdapter); 177 $entries = new Pagerfanta($pagerAdapter);
164 178
165 $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); 179 $perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag_core.Feed_limit');
166 $entries->setMaxPerPage($perPage); 180 $entries->setMaxPerPage($perPage);
167 181
168 $url = $this->generateUrl( 182 $url = $this->generateUrl(
169 $type . '_rss', 183 $type . '_feed',
170 [ 184 [
171 'username' => $user->getUsername(), 185 'username' => $user->getUsername(),
172 'token' => $user->getConfig()->getRssToken(), 186 'token' => $user->getConfig()->getFeedToken(),
173 ], 187 ],
174 UrlGeneratorInterface::ABSOLUTE_URL 188 UrlGeneratorInterface::ABSOLUTE_URL
175 ); 189 );
@@ -178,19 +192,19 @@ class RssController extends Controller
178 $entries->setCurrentPage((int) $page); 192 $entries->setCurrentPage((int) $page);
179 } catch (OutOfRangeCurrentPageException $e) { 193 } catch (OutOfRangeCurrentPageException $e) {
180 if ($page > 1) { 194 if ($page > 1) {
181 return $this->redirect($url . '?page=' . $entries->getNbPages(), 302); 195 return $this->redirect($url . '/' . $entries->getNbPages());
182 } 196 }
183 } 197 }
184 198
185 return $this->render( 199 return $this->render('@WallabagCore/themes/common/Entry/entries.xml.twig', [
186 '@WallabagCore/themes/common/Entry/entries.xml.twig', 200 'type' => $type,
187 [ 201 'url' => $url,
188 'url_html' => $this->generateUrl($type, [], UrlGeneratorInterface::ABSOLUTE_URL), 202 'entries' => $entries,
189 'type' => $type, 203 'user' => $user->getUsername(),
190 'url' => $url, 204 'domainName' => $this->getParameter('domain_name'),
191 'entries' => $entries, 205 'version' => $this->getParameter('wallabag_core.version'),
192 ], 206 ],
193 new Response('', 200, ['Content-Type' => 'application/rss+xml']) 207 new Response('', 200, ['Content-Type' => 'application/atom+xml'])
194 ); 208 );
195 } 209 }
196} 210}