diff options
Diffstat (limited to 'src/Wallabag/CoreBundle/Controller')
-rw-r--r-- | src/Wallabag/CoreBundle/Controller/ConfigController.php | 24 | ||||
-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; | |||
14 | use Wallabag\CoreBundle\Entity\TaggingRule; | 14 | use Wallabag\CoreBundle\Entity\TaggingRule; |
15 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; | 15 | use Wallabag\CoreBundle\Form\Type\ChangePasswordType; |
16 | use Wallabag\CoreBundle\Form\Type\ConfigType; | 16 | use Wallabag\CoreBundle\Form\Type\ConfigType; |
17 | use Wallabag\CoreBundle\Form\Type\RssType; | 17 | use Wallabag\CoreBundle\Form\Type\FeedType; |
18 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; | 18 | use Wallabag\CoreBundle\Form\Type\TaggingRuleType; |
19 | use Wallabag\CoreBundle\Form\Type\UserInformationType; | 19 | use Wallabag\CoreBundle\Form\Type\UserInformationType; |
20 | use Wallabag\CoreBundle\Tools\Utils; | 20 | use 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; | |||
8 | use Pagerfanta\Pagerfanta; | 8 | use Pagerfanta\Pagerfanta; |
9 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | 9 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; |
10 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | 10 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
11 | use Symfony\Component\HttpFoundation\Request; | ||
12 | use Symfony\Component\HttpFoundation\Response; | 11 | use Symfony\Component\HttpFoundation\Response; |
13 | use Symfony\Component\Routing\Annotation\Route; | 12 | use Symfony\Component\Routing\Annotation\Route; |
14 | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | 13 | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; |
15 | use Wallabag\CoreBundle\Entity\Tag; | 14 | use Wallabag\CoreBundle\Entity\Tag; |
16 | use Wallabag\UserBundle\Entity\User; | 15 | use Wallabag\UserBundle\Entity\User; |
17 | 16 | ||
18 | class RssController extends Controller | 17 | class 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 | } |