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) | 89 |
2 files changed, 64 insertions, 49 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..9d55a9b7 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/FeedController.php | |||
@@ -15,56 +15,68 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | |||
15 | use Wallabag\CoreBundle\Entity\Tag; | 15 | use Wallabag\CoreBundle\Entity\Tag; |
16 | use Wallabag\UserBundle\Entity\User; | 16 | use Wallabag\UserBundle\Entity\User; |
17 | 17 | ||
18 | class RssController extends Controller | 18 | class FeedController extends Controller |
19 | { | 19 | { |
20 | /** | 20 | /** |
21 | * Shows unread entries for current user. | 21 | * Shows unread entries for current user. |
22 | * | 22 | * |
23 | * @Route("/{username}/{token}/unread.xml", name="unread_rss", defaults={"_format"="xml"}) | 23 | * @Route("/feed/{username}/{token}/unread/{page}", name="unread_feed", defaults={"page": 1}) |
24 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") | 24 | * @Route("/{username}/{token}/unread.xml", defaults={"page": 1}) |
25 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter") | ||
26 | * | ||
27 | * @param User $user | ||
28 | * @param $page | ||
25 | * | 29 | * |
26 | * @return \Symfony\Component\HttpFoundation\Response | 30 | * @return \Symfony\Component\HttpFoundation\Response |
27 | */ | 31 | */ |
28 | public function showUnreadRSSAction(Request $request, User $user) | 32 | public function showUnreadFeedAction(User $user, $page) |
29 | { | 33 | { |
30 | return $this->showEntries('unread', $user, $request->query->get('page', 1)); | 34 | return $this->showEntries('unread', $user, $page); |
31 | } | 35 | } |
32 | 36 | ||
33 | /** | 37 | /** |
34 | * Shows read entries for current user. | 38 | * Shows read entries for current user. |
35 | * | 39 | * |
36 | * @Route("/{username}/{token}/archive.xml", name="archive_rss", defaults={"_format"="xml"}) | 40 | * @Route("/feed/{username}/{token}/archive/{page}", name="archive_feed", defaults={"page": 1}) |
37 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") | 41 | * @Route("/{username}/{token}/archive.xml", defaults={"page": 1}) |
42 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter") | ||
43 | * | ||
44 | * @param User $user | ||
45 | * @param $page | ||
38 | * | 46 | * |
39 | * @return \Symfony\Component\HttpFoundation\Response | 47 | * @return \Symfony\Component\HttpFoundation\Response |
40 | */ | 48 | */ |
41 | public function showArchiveRSSAction(Request $request, User $user) | 49 | public function showArchiveFeedAction(User $user, $page) |
42 | { | 50 | { |
43 | return $this->showEntries('archive', $user, $request->query->get('page', 1)); | 51 | return $this->showEntries('archive', $user, $page); |
44 | } | 52 | } |
45 | 53 | ||
46 | /** | 54 | /** |
47 | * Shows starred entries for current user. | 55 | * Shows starred entries for current user. |
48 | * | 56 | * |
49 | * @Route("/{username}/{token}/starred.xml", name="starred_rss", defaults={"_format"="xml"}) | 57 | * @Route("/feed/{username}/{token}/starred/{page}", name="starred_feed", defaults={"page": 1}) |
50 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") | 58 | * @Route("/{username}/{token}/starred.xml", defaults={"page": 1}) |
59 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter") | ||
60 | * | ||
61 | * @param User $user | ||
62 | * @param $page | ||
51 | * | 63 | * |
52 | * @return \Symfony\Component\HttpFoundation\Response | 64 | * @return \Symfony\Component\HttpFoundation\Response |
53 | */ | 65 | */ |
54 | public function showStarredRSSAction(Request $request, User $user) | 66 | public function showStarredFeedAction(User $user, $page) |
55 | { | 67 | { |
56 | return $this->showEntries('starred', $user, $request->query->get('page', 1)); | 68 | return $this->showEntries('starred', $user, $page); |
57 | } | 69 | } |
58 | 70 | ||
59 | /** | 71 | /** |
60 | * Shows all entries for current user. | 72 | * Shows all entries for current user. |
61 | * | 73 | * |
62 | * @Route("/{username}/{token}/all.xml", name="all_rss", defaults={"_format"="xml"}) | 74 | * @Route("/{username}/{token}/all.xml", name="all_feed", defaults={"_format"="xml"}) |
63 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") | 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(Request $request, User $user) |
68 | { | 80 | { |
69 | return $this->showEntries('all', $user, $request->query->get('page', 1)); | 81 | return $this->showEntries('all', $user, $request->query->get('page', 1)); |
70 | } | 82 | } |
@@ -72,21 +84,21 @@ class RssController extends Controller | |||
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("/{username}/{token}/tags/{slug}.xml", name="tag_feed", defaults={"_format"="xml"}) |
76 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") | 88 | * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter") |
77 | * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) | 89 | * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) |
78 | * | 90 | * |
79 | * @return \Symfony\Component\HttpFoundation\Response | 91 | * @return \Symfony\Component\HttpFoundation\Response |
80 | */ | 92 | */ |
81 | public function showTagsAction(Request $request, User $user, Tag $tag) | 93 | public function showTagsFeedAction(Request $request, User $user, Tag $tag) |
82 | { | 94 | { |
83 | $page = $request->query->get('page', 1); | 95 | $page = $request->query->get('page', 1); |
84 | 96 | ||
85 | $url = $this->generateUrl( | 97 | $url = $this->generateUrl( |
86 | 'tag_rss', | 98 | 'tag_feed', |
87 | [ | 99 | [ |
88 | 'username' => $user->getUsername(), | 100 | 'username' => $user->getUsername(), |
89 | 'token' => $user->getConfig()->getRssToken(), | 101 | 'token' => $user->getConfig()->getFeedToken(), |
90 | 'slug' => $tag->getSlug(), | 102 | 'slug' => $tag->getSlug(), |
91 | ], | 103 | ], |
92 | UrlGeneratorInterface::ABSOLUTE_URL | 104 | UrlGeneratorInterface::ABSOLUTE_URL |
@@ -119,12 +131,15 @@ class RssController extends Controller | |||
119 | return $this->render( | 131 | return $this->render( |
120 | '@WallabagCore/themes/common/Entry/entries.xml.twig', | 132 | '@WallabagCore/themes/common/Entry/entries.xml.twig', |
121 | [ | 133 | [ |
122 | 'url_html' => $this->generateUrl('tag_entries', ['slug' => $tag->getSlug()], UrlGeneratorInterface::ABSOLUTE_URL), | 134 | 'type' => 'tag', |
123 | 'type' => 'tag (' . $tag->getLabel() . ')', | ||
124 | 'url' => $url, | 135 | 'url' => $url, |
125 | 'entries' => $entries, | 136 | 'entries' => $entries, |
137 | 'user' => $user->getUsername(), | ||
138 | 'domainName' => $this->getParameter('domain_name'), | ||
139 | 'version' => $this->getParameter('wallabag_core.version'), | ||
140 | 'tag' => $tag->getSlug(), | ||
126 | ], | 141 | ], |
127 | new Response('', 200, ['Content-Type' => 'application/rss+xml']) | 142 | new Response('', 200, ['Content-Type' => 'application/atom+xml']) |
128 | ); | 143 | ); |
129 | } | 144 | } |
130 | 145 | ||
@@ -162,14 +177,14 @@ class RssController extends Controller | |||
162 | $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false); | 177 | $pagerAdapter = new DoctrineORMAdapter($qb->getQuery(), true, false); |
163 | $entries = new Pagerfanta($pagerAdapter); | 178 | $entries = new Pagerfanta($pagerAdapter); |
164 | 179 | ||
165 | $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); | 180 | $perPage = $user->getConfig()->getFeedLimit() ?: $this->getParameter('wallabag_core.Feed_limit'); |
166 | $entries->setMaxPerPage($perPage); | 181 | $entries->setMaxPerPage($perPage); |
167 | 182 | ||
168 | $url = $this->generateUrl( | 183 | $url = $this->generateUrl( |
169 | $type . '_rss', | 184 | $type . '_feed', |
170 | [ | 185 | [ |
171 | 'username' => $user->getUsername(), | 186 | 'username' => $user->getUsername(), |
172 | 'token' => $user->getConfig()->getRssToken(), | 187 | 'token' => $user->getConfig()->getFeedToken(), |
173 | ], | 188 | ], |
174 | UrlGeneratorInterface::ABSOLUTE_URL | 189 | UrlGeneratorInterface::ABSOLUTE_URL |
175 | ); | 190 | ); |
@@ -178,19 +193,19 @@ class RssController extends Controller | |||
178 | $entries->setCurrentPage((int) $page); | 193 | $entries->setCurrentPage((int) $page); |
179 | } catch (OutOfRangeCurrentPageException $e) { | 194 | } catch (OutOfRangeCurrentPageException $e) { |
180 | if ($page > 1) { | 195 | if ($page > 1) { |
181 | return $this->redirect($url . '?page=' . $entries->getNbPages(), 302); | 196 | return $this->redirect($url . '/' . $entries->getNbPages()); |
182 | } | 197 | } |
183 | } | 198 | } |
184 | 199 | ||
185 | return $this->render( | 200 | return $this->render('@WallabagCore/themes/common/Entry/entries.xml.twig', [ |
186 | '@WallabagCore/themes/common/Entry/entries.xml.twig', | 201 | 'type' => $type, |
187 | [ | 202 | 'url' => $url, |
188 | 'url_html' => $this->generateUrl($type, [], UrlGeneratorInterface::ABSOLUTE_URL), | 203 | 'entries' => $entries, |
189 | 'type' => $type, | 204 | 'user' => $user->getUsername(), |
190 | 'url' => $url, | 205 | 'domainName' => $this->getParameter('domain_name'), |
191 | 'entries' => $entries, | 206 | 'version' => $this->getParameter('wallabag_core.version'), |
192 | ], | 207 | ], |
193 | new Response('', 200, ['Content-Type' => 'application/rss+xml']) | 208 | new Response('', 200, ['Content-Type' => 'application/atom+xml']) |
194 | ); | 209 | ); |
195 | } | 210 | } |
196 | } | 211 | } |