aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJérémy Benoist <j0k3r@users.noreply.github.com>2019-05-09 15:21:21 +0300
committerGitHub <noreply@github.com>2019-05-09 15:21:21 +0300
commit6e67f41152ad025e74696e7140de0f9fb0d601de (patch)
tree5d87be5998bedfc2e25099be17fdc1f3e5cc45ed
parent522e37ad274361dde697da13a92ff3f846599822 (diff)
parent68a90821a305867e9b655da2dbfe558d37253990 (diff)
downloadwallabag-6e67f41152ad025e74696e7140de0f9fb0d601de.tar.gz
wallabag-6e67f41152ad025e74696e7140de0f9fb0d601de.tar.zst
wallabag-6e67f41152ad025e74696e7140de0f9fb0d601de.zip
Merge pull request #3223 from wallabag/rss2atom
Changed RSS to Atom feed and improve paging
-rw-r--r--app/DoctrineMigrations/Version20190425115043.php58
-rw-r--r--app/Resources/static/themes/baggy/css/article.scss6
-rw-r--r--app/Resources/static/themes/baggy/css/pictos.scss2
-rw-r--r--app/config/routing.yml36
-rw-r--r--app/config/security.yml2
-rw-r--r--src/Wallabag/CoreBundle/Command/InstallCommand.php2
-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
-rw-r--r--src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php2
-rw-r--r--src/Wallabag/CoreBundle/Entity/Config.php38
-rw-r--r--src/Wallabag/CoreBundle/Form/Type/FeedType.php (renamed from src/Wallabag/CoreBundle/Form/Type/RssType.php)10
-rw-r--r--src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php2
-rw-r--r--src/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverter.php (renamed from src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php)10
-rw-r--r--src/Wallabag/CoreBundle/Resources/config/services.yml6
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.da.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.de.yml24
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.en.yml20
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.es.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml20
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.it.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.th.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml16
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.da.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.de.yml3
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.en.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.es.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.it.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.oc.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig42
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig8
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_feed_link.html.twig11
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_rss_link.html.twig11
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig83
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig2
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig44
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig8
-rw-r--r--src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig4
-rw-r--r--src/Wallabag/CoreBundle/Tools/Utils.php2
-rw-r--r--src/Wallabag/CoreBundle/Twig/WallabagExtension.php10
-rw-r--r--src/Wallabag/UserBundle/EventListener/CreateConfigListener.php8
-rw-r--r--src/Wallabag/UserBundle/Repository/UserRepository.php8
-rw-r--r--src/Wallabag/UserBundle/Resources/config/services.yml2
-rw-r--r--tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php32
-rw-r--r--tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php2
-rw-r--r--tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php261
-rw-r--r--tests/Wallabag/CoreBundle/Controller/RssControllerTest.php221
-rw-r--r--tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php4
-rw-r--r--tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php (renamed from tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php)24
-rw-r--r--tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php25
-rw-r--r--tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php2
63 files changed, 787 insertions, 590 deletions
diff --git a/app/DoctrineMigrations/Version20190425115043.php b/app/DoctrineMigrations/Version20190425115043.php
new file mode 100644
index 00000000..4c5c49cc
--- /dev/null
+++ b/app/DoctrineMigrations/Version20190425115043.php
@@ -0,0 +1,58 @@
1<?php
2
3namespace Application\Migrations;
4
5use Doctrine\DBAL\Schema\Schema;
6use Wallabag\CoreBundle\Doctrine\WallabagMigration;
7
8/**
9 * Rename rss_token & rss_limit to feed_token & feed_limit.
10 */
11final class Version20190425115043 extends WallabagMigration
12{
13 public function up(Schema $schema): void
14 {
15 switch ($this->connection->getDatabasePlatform()->getName()) {
16 case 'sqlite':
17 $this->addSql('DROP INDEX UNIQ_87E64C53A76ED395');
18 $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('config', true) . ' AS SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode FROM ' . $this->getTable('config', true));
19 $this->addSql('DROP TABLE ' . $this->getTable('config', true));
20 $this->addSql('CREATE TABLE ' . $this->getTable('config', true) . ' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL COLLATE BINARY, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL COLLATE BINARY, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL COLLATE BINARY, action_mark_as_read INTEGER DEFAULT 0, list_mode INTEGER DEFAULT NULL, feed_token VARCHAR(255) DEFAULT NULL, feed_limit INTEGER DEFAULT NULL, CONSTRAINT FK_87E64C53A76ED395 FOREIGN KEY (user_id) REFERENCES "wallabag_user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
21 $this->addSql('INSERT INTO ' . $this->getTable('config', true) . ' (id, user_id, theme, items_per_page, language, feed_token, feed_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode) SELECT id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode FROM __temp__' . $this->getTable('config', true));
22 $this->addSql('DROP TABLE __temp__' . $this->getTable('config', true));
23 $this->addSql('CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON ' . $this->getTable('config', true) . ' (user_id)');
24 break;
25 case 'mysql':
26 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' CHANGE rss_token feed_token VARCHAR(255) DEFAULT NULL');
27 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' CHANGE rss_limit feed_limit INT DEFAULT NULL');
28 break;
29 case 'postgresql':
30 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' RENAME COLUMN rss_token TO feed_token');
31 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' RENAME COLUMN rss_limit TO feed_limit');
32 break;
33 }
34 }
35
36 public function down(Schema $schema): void
37 {
38 switch ($this->connection->getDatabasePlatform()->getName()) {
39 case 'sqlite':
40 $this->addSql('DROP INDEX UNIQ_87E64C53A76ED395');
41 $this->addSql('CREATE TEMPORARY TABLE __temp__' . $this->getTable('config', true) . ' AS SELECT id, user_id, theme, items_per_page, language, feed_token, feed_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode FROM "' . $this->getTable('config', true) . '"');
42 $this->addSql('DROP TABLE "' . $this->getTable('config', true) . '"');
43 $this->addSql('CREATE TABLE "' . $this->getTable('config', true) . '" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, theme VARCHAR(255) NOT NULL, items_per_page INTEGER NOT NULL, language VARCHAR(255) NOT NULL, reading_speed DOUBLE PRECISION DEFAULT NULL, pocket_consumer_key VARCHAR(255) DEFAULT NULL, action_mark_as_read INTEGER DEFAULT 0, list_mode INTEGER DEFAULT NULL, rss_token VARCHAR(255) DEFAULT NULL COLLATE BINARY, rss_limit INTEGER DEFAULT NULL)');
44 $this->addSql('INSERT INTO "' . $this->getTable('config', true) . '" (id, user_id, theme, items_per_page, language, rss_token, rss_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode) SELECT id, user_id, theme, items_per_page, language, feed_token, feed_limit, reading_speed, pocket_consumer_key, action_mark_as_read, list_mode FROM __temp__' . $this->getTable('config', true));
45 $this->addSql('DROP TABLE __temp__' . $this->getTable('config', true));
46 $this->addSql('CREATE UNIQUE INDEX UNIQ_87E64C53A76ED395 ON "' . $this->getTable('config', true) . '" (user_id)');
47 break;
48 case 'mysql':
49 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' CHANGE feed_token rss_token');
50 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' CHANGE feed_limit rss_limit');
51 break;
52 case 'postgresql':
53 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' RENAME COLUMN feed_token TO rss_token');
54 $this->addSql('ALTER TABLE ' . $this->getTable('config') . ' RENAME COLUMN feed_limit TO rss_limit');
55 break;
56 }
57 }
58}
diff --git a/app/Resources/static/themes/baggy/css/article.scss b/app/Resources/static/themes/baggy/css/article.scss
index 9094ad55..d203ce31 100644
--- a/app/Resources/static/themes/baggy/css/article.scss
+++ b/app/Resources/static/themes/baggy/css/article.scss
@@ -85,7 +85,7 @@ blockquote {
85 color: #999; 85 color: #999;
86} 86}
87 87
88.icon-rss { 88.icon-feed {
89 background-color: #000; 89 background-color: #000;
90 color: #fff; 90 color: #fff;
91 padding: 0.2em 0.5em; 91 padding: 0.2em 0.5em;
@@ -101,8 +101,8 @@ blockquote {
101 margin-bottom: 0.5em; 101 margin-bottom: 0.5em;
102 } 102 }
103 103
104 .icon-rss:hover, 104 .icon-feed:hover,
105 .icon-rss:focus { 105 .icon-feed:focus {
106 background-color: #fff; 106 background-color: #fff;
107 color: #000; 107 color: #000;
108 text-decoration: none; 108 text-decoration: none;
diff --git a/app/Resources/static/themes/baggy/css/pictos.scss b/app/Resources/static/themes/baggy/css/pictos.scss
index 2ff01937..b6ebf311 100644
--- a/app/Resources/static/themes/baggy/css/pictos.scss
+++ b/app/Resources/static/themes/baggy/css/pictos.scss
@@ -136,7 +136,7 @@
136 content: "\ea3a"; 136 content: "\ea3a";
137} 137}
138 138
139.icon-rss::before { 139.icon-feed::before {
140 content: "\e808"; 140 content: "\e808";
141} 141}
142 142
diff --git a/app/config/routing.yml b/app/config/routing.yml
index a7c0f7e9..d4defca0 100644
--- a/app/config/routing.yml
+++ b/app/config/routing.yml
@@ -59,3 +59,39 @@ fos_js_routing:
59 59
602fa_login_check: 602fa_login_check:
61 path: /2fa_check 61 path: /2fa_check
62
63# redirect RSS feed to Atom
64rss_to_atom_unread:
65 path: /{username}/{token}/unread.xml
66 defaults:
67 _controller: FrameworkBundle:Redirect:redirect
68 route: unread_feed
69 permanent: true
70
71rss_to_atom_archive:
72 path: /{username}/{token}/archive.xml
73 defaults:
74 _controller: FrameworkBundle:Redirect:redirect
75 route: archive_feed
76 permanent: true
77
78rss_to_atom_starred:
79 path: /{username}/{token}/starred.xml
80 defaults:
81 _controller: FrameworkBundle:Redirect:redirect
82 route: starred_feed
83 permanent: true
84
85rss_to_atom_all:
86 path: /{username}/{token}/all.xml
87 defaults:
88 _controller: FrameworkBundle:Redirect:redirect
89 route: all_feed
90 permanent: true
91
92rss_to_atom_tags:
93 path: /{username}/{token}/tags/{slug}.xml
94 defaults:
95 _controller: FrameworkBundle:Redirect:redirect
96 route: tag_feed
97 permanent: true
diff --git a/app/config/security.yml b/app/config/security.yml
index 6a21b4e5..760b2550 100644
--- a/app/config/security.yml
+++ b/app/config/security.yml
@@ -72,6 +72,8 @@ security:
72 - { path: /(unread|starred|archive|all).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 72 - { path: /(unread|starred|archive|all).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
73 - { path: ^/locale, role: IS_AUTHENTICATED_ANONYMOUSLY } 73 - { path: ^/locale, role: IS_AUTHENTICATED_ANONYMOUSLY }
74 - { path: /tags/(.*).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 74 - { path: /tags/(.*).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
75 - { path: ^/feed, roles: IS_AUTHENTICATED_ANONYMOUSLY }
76 - { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } # For backwards compatibility
75 - { path: ^/share, roles: IS_AUTHENTICATED_ANONYMOUSLY } 77 - { path: ^/share, roles: IS_AUTHENTICATED_ANONYMOUSLY }
76 - { path: ^/settings, roles: ROLE_SUPER_ADMIN } 78 - { path: ^/settings, roles: ROLE_SUPER_ADMIN }
77 - { path: ^/annotations, roles: ROLE_USER } 79 - { path: ^/annotations, roles: ROLE_USER }
diff --git a/src/Wallabag/CoreBundle/Command/InstallCommand.php b/src/Wallabag/CoreBundle/Command/InstallCommand.php
index 49c84178..c58ae2b5 100644
--- a/src/Wallabag/CoreBundle/Command/InstallCommand.php
+++ b/src/Wallabag/CoreBundle/Command/InstallCommand.php
@@ -254,7 +254,7 @@ class InstallCommand extends ContainerAwareCommand
254 $question->setHidden(true); 254 $question->setHidden(true);
255 $user->setPlainPassword($this->io->askQuestion($question)); 255 $user->setPlainPassword($this->io->askQuestion($question));
256 256
257 $user->setEmail($this->io->ask('Email', '')); 257 $user->setEmail($this->io->ask('Email', 'wallabag@wallabag.io'));
258 258
259 $user->setEnabled(true); 259 $user->setEnabled(true);
260 $user->addRole('ROLE_SUPER_ADMIN'); 260 $user->addRole('ROLE_SUPER_ADMIN');
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}
diff --git a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php
index a3ef2b53..e9a1e9e0 100644
--- a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php
+++ b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php
@@ -18,7 +18,7 @@ class WallabagCoreExtension extends Extension
18 $container->setParameter('wallabag_core.items_on_page', $config['items_on_page']); 18 $container->setParameter('wallabag_core.items_on_page', $config['items_on_page']);
19 $container->setParameter('wallabag_core.theme', $config['theme']); 19 $container->setParameter('wallabag_core.theme', $config['theme']);
20 $container->setParameter('wallabag_core.language', $config['language']); 20 $container->setParameter('wallabag_core.language', $config['language']);
21 $container->setParameter('wallabag_core.rss_limit', $config['rss_limit']); 21 $container->setParameter('wallabag_core.feed_limit', $config['rss_limit']);
22 $container->setParameter('wallabag_core.reading_speed', $config['reading_speed']); 22 $container->setParameter('wallabag_core.reading_speed', $config['reading_speed']);
23 $container->setParameter('wallabag_core.version', $config['version']); 23 $container->setParameter('wallabag_core.version', $config['version']);
24 $container->setParameter('wallabag_core.paypal_url', $config['paypal_url']); 24 $container->setParameter('wallabag_core.paypal_url', $config['paypal_url']);
diff --git a/src/Wallabag/CoreBundle/Entity/Config.php b/src/Wallabag/CoreBundle/Entity/Config.php
index b902ae2c..c6e65d66 100644
--- a/src/Wallabag/CoreBundle/Entity/Config.php
+++ b/src/Wallabag/CoreBundle/Entity/Config.php
@@ -60,21 +60,21 @@ class Config
60 /** 60 /**
61 * @var string 61 * @var string
62 * 62 *
63 * @ORM\Column(name="rss_token", type="string", nullable=true) 63 * @ORM\Column(name="feed_token", type="string", nullable=true)
64 */ 64 */
65 private $rssToken; 65 private $feedToken;
66 66
67 /** 67 /**
68 * @var int 68 * @var int
69 * 69 *
70 * @ORM\Column(name="rss_limit", type="integer", nullable=true) 70 * @ORM\Column(name="feed_limit", type="integer", nullable=true)
71 * @Assert\Range( 71 * @Assert\Range(
72 * min = 1, 72 * min = 1,
73 * max = 100000, 73 * max = 100000,
74 * maxMessage = "validator.rss_limit_too_high" 74 * maxMessage = "validator.feed_limit_too_high"
75 * ) 75 * )
76 */ 76 */
77 private $rssLimit; 77 private $feedLimit;
78 78
79 /** 79 /**
80 * @var float 80 * @var float
@@ -231,51 +231,51 @@ class Config
231 } 231 }
232 232
233 /** 233 /**
234 * Set rssToken. 234 * Set feed Token.
235 * 235 *
236 * @param string $rssToken 236 * @param string $feedToken
237 * 237 *
238 * @return Config 238 * @return Config
239 */ 239 */
240 public function setRssToken($rssToken) 240 public function setFeedToken($feedToken)
241 { 241 {
242 $this->rssToken = $rssToken; 242 $this->feedToken = $feedToken;
243 243
244 return $this; 244 return $this;
245 } 245 }
246 246
247 /** 247 /**
248 * Get rssToken. 248 * Get feedToken.
249 * 249 *
250 * @return string 250 * @return string
251 */ 251 */
252 public function getRssToken() 252 public function getFeedToken()
253 { 253 {
254 return $this->rssToken; 254 return $this->feedToken;
255 } 255 }
256 256
257 /** 257 /**
258 * Set rssLimit. 258 * Set Feed Limit.
259 * 259 *
260 * @param int $rssLimit 260 * @param int $feedLimit
261 * 261 *
262 * @return Config 262 * @return Config
263 */ 263 */
264 public function setRssLimit($rssLimit) 264 public function setFeedLimit($feedLimit)
265 { 265 {
266 $this->rssLimit = $rssLimit; 266 $this->feedLimit = $feedLimit;
267 267
268 return $this; 268 return $this;
269 } 269 }
270 270
271 /** 271 /**
272 * Get rssLimit. 272 * Get Feed Limit.
273 * 273 *
274 * @return int 274 * @return int
275 */ 275 */
276 public function getRssLimit() 276 public function getFeedLimit()
277 { 277 {
278 return $this->rssLimit; 278 return $this->feedLimit;
279 } 279 }
280 280
281 /** 281 /**
diff --git a/src/Wallabag/CoreBundle/Form/Type/RssType.php b/src/Wallabag/CoreBundle/Form/Type/FeedType.php
index 49b31c1e..9b34daf4 100644
--- a/src/Wallabag/CoreBundle/Form/Type/RssType.php
+++ b/src/Wallabag/CoreBundle/Form/Type/FeedType.php
@@ -7,14 +7,14 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType;
7use Symfony\Component\Form\FormBuilderInterface; 7use Symfony\Component\Form\FormBuilderInterface;
8use Symfony\Component\OptionsResolver\OptionsResolver; 8use Symfony\Component\OptionsResolver\OptionsResolver;
9 9
10class RssType extends AbstractType 10class FeedType extends AbstractType
11{ 11{
12 public function buildForm(FormBuilderInterface $builder, array $options) 12 public function buildForm(FormBuilderInterface $builder, array $options)
13 { 13 {
14 $builder 14 $builder
15 ->add('rss_limit', null, [ 15 ->add('feed_limit', null, [
16 'label' => 'config.form_rss.rss_limit', 16 'label' => 'config.form_feed.feed_limit',
17 'property_path' => 'rssLimit', 17 'property_path' => 'feedLimit',
18 ]) 18 ])
19 ->add('save', SubmitType::class, [ 19 ->add('save', SubmitType::class, [
20 'label' => 'config.form.save', 20 'label' => 'config.form.save',
@@ -31,6 +31,6 @@ class RssType extends AbstractType
31 31
32 public function getBlockPrefix() 32 public function getBlockPrefix()
33 { 33 {
34 return 'rss_config'; 34 return 'feed_config';
35 } 35 }
36} 36}
diff --git a/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php
index 183d394a..04abc6d0 100644
--- a/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php
+++ b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php
@@ -21,7 +21,7 @@ class PreparePagerForEntries
21 21
22 /** 22 /**
23 * @param AdapterInterface $adapter 23 * @param AdapterInterface $adapter
24 * @param User $user If user isn't logged in, we can force it (like for rss) 24 * @param User $user If user isn't logged in, we can force it (like for feed)
25 * 25 *
26 * @return Pagerfanta|null 26 * @return Pagerfanta|null
27 */ 27 */
diff --git a/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php b/src/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverter.php
index 4a2fcab5..e220abfc 100644
--- a/src/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverter.php
+++ b/src/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverter.php
@@ -10,12 +10,12 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
10use Wallabag\UserBundle\Entity\User; 10use Wallabag\UserBundle\Entity\User;
11 11
12/** 12/**
13 * ParamConverter used in the RSS controller to retrieve the right user according to 13 * ParamConverter used in the Feed controller to retrieve the right user according to
14 * username & token given in the url. 14 * username & token given in the url.
15 * 15 *
16 * @see http://stfalcon.com/en/blog/post/symfony2-custom-paramconverter 16 * @see http://stfalcon.com/en/blog/post/symfony2-custom-paramconverter
17 */ 17 */
18class UsernameRssTokenConverter implements ParamConverterInterface 18class UsernameFeedTokenConverter implements ParamConverterInterface
19{ 19{
20 private $registry; 20 private $registry;
21 21
@@ -67,7 +67,7 @@ class UsernameRssTokenConverter implements ParamConverterInterface
67 public function apply(Request $request, ParamConverter $configuration) 67 public function apply(Request $request, ParamConverter $configuration)
68 { 68 {
69 $username = $request->attributes->get('username'); 69 $username = $request->attributes->get('username');
70 $rssToken = $request->attributes->get('token'); 70 $feedToken = $request->attributes->get('token');
71 71
72 if (!$request->attributes->has('username') || !$request->attributes->has('token')) { 72 if (!$request->attributes->has('username') || !$request->attributes->has('token')) {
73 return false; 73 return false;
@@ -78,8 +78,8 @@ class UsernameRssTokenConverter implements ParamConverterInterface
78 78
79 $userRepository = $em->getRepository($configuration->getClass()); 79 $userRepository = $em->getRepository($configuration->getClass());
80 80
81 // Try to find user by its username and config rss_token 81 // Try to find user by its username and config feed_token
82 $user = $userRepository->findOneByUsernameAndRsstoken($username, $rssToken); 82 $user = $userRepository->findOneByUsernameAndFeedtoken($username, $feedToken);
83 83
84 if (null === $user || !($user instanceof User)) { 84 if (null === $user || !($user instanceof User)) {
85 throw new NotFoundHttpException(sprintf('%s not found.', $configuration->getClass())); 85 throw new NotFoundHttpException(sprintf('%s not found.', $configuration->getClass()));
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml
index a27dd210..280d779d 100644
--- a/src/Wallabag/CoreBundle/Resources/config/services.yml
+++ b/src/Wallabag/CoreBundle/Resources/config/services.yml
@@ -22,10 +22,10 @@ services:
22 tags: 22 tags:
23 - { name: form.type } 23 - { name: form.type }
24 24
25 wallabag_core.param_converter.username_rsstoken_converter: 25 wallabag_core.param_converter.username_feed_token_converter:
26 class: Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter 26 class: Wallabag\CoreBundle\ParamConverter\UsernameFeedTokenConverter
27 tags: 27 tags:
28 - { name: request.param_converter, converter: username_rsstoken_converter } 28 - { name: request.param_converter, converter: username_feed_token_converter }
29 arguments: 29 arguments:
30 - "@doctrine" 30 - "@doctrine"
31 31
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
index 454f547d..61ef3b8f 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Opsætning' 54 page_title: 'Opsætning'
55 tab_menu: 55 tab_menu:
56 settings: 'Indstillinger' 56 settings: 'Indstillinger'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Brugeroplysninger' 58 user_info: 'Brugeroplysninger'
59 password: 'Adgangskode' 59 password: 'Adgangskode'
60 # rules: 'Tagging rules' 60 # rules: 'Tagging rules'
@@ -85,19 +85,19 @@ config:
85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 # help_language: "You can change the language of wallabag interface." 86 # help_language: "You can change the language of wallabag interface."
87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.' 89 description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.'
90 token_label: 'RSS-Token' 90 token_label: 'RSS-Token'
91 no_token: 'Intet token' 91 no_token: 'Intet token'
92 token_create: 'Opret token' 92 token_create: 'Opret token'
93 token_reset: 'Nulstil token' 93 token_reset: 'Nulstil token'
94 rss_links: 'RSS-Links' 94 feed_links: 'RSS-Links'
95 rss_link: 95 feed_link:
96 unread: 'Ulæst' 96 unread: 'Ulæst'
97 starred: 'Favoritter' 97 starred: 'Favoritter'
98 archive: 'Arkiv' 98 archive: 'Arkiv'
99 # all: 'All' 99 # all: 'All'
100 # rss_limit: 'Number of items in the feed' 100 # feed_limit: 'Number of items in the feed'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Navn' 103 name_label: 'Navn'
@@ -372,7 +372,7 @@ quickstart:
372 # title: 'Configure the application' 372 # title: 'Configure the application'
373 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 373 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.'
374 # language: 'Change language and design' 374 # language: 'Change language and design'
375 # rss: 'Enable RSS feeds' 375 # feed: 'Enable RSS feeds'
376 # tagging_rules: 'Write rules to automatically tag your articles' 376 # tagging_rules: 'Write rules to automatically tag your articles'
377 # admin: 377 # admin:
378 # title: 'Administration' 378 # title: 'Administration'
@@ -589,10 +589,10 @@ flashes:
589 password_updated: 'Adgangskode opdateret' 589 password_updated: 'Adgangskode opdateret'
590 # password_not_updated_demo: "In demonstration mode, you can't change password for this user." 590 # password_not_updated_demo: "In demonstration mode, you can't change password for this user."
591 user_updated: 'Oplysninger opdateret' 591 user_updated: 'Oplysninger opdateret'
592 rss_updated: 'RSS-oplysninger opdateret' 592 feed_updated: 'RSS-oplysninger opdateret'
593 # tagging_rules_updated: 'Tagging rules updated' 593 # tagging_rules_updated: 'Tagging rules updated'
594 # tagging_rules_deleted: 'Tagging rule deleted' 594 # tagging_rules_deleted: 'Tagging rule deleted'
595 # rss_token_updated: 'RSS token updated' 595 # feed_token_updated: 'RSS token updated'
596 # annotations_reset: Annotations reset 596 # annotations_reset: Annotations reset
597 # tags_reset: Tags reset 597 # tags_reset: Tags reset
598 # entries_reset: Entries reset 598 # entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
index dc1d4723..991e00f1 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Einstellungen' 54 page_title: 'Einstellungen'
55 tab_menu: 55 tab_menu:
56 settings: 'Einstellungen' 56 settings: 'Einstellungen'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Benutzerinformation' 58 user_info: 'Benutzerinformation'
59 password: 'Kennwort' 59 password: 'Kennwort'
60 rules: 'Tagging-Regeln' 60 rules: 'Tagging-Regeln'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag berechnet eine Lesezeit pro Artikel. Hier kannst du definieren, ob du ein schneller oder langsamer Leser bist. wallabag wird die Lesezeiten danach neu berechnen." 85 help_reading_speed: "wallabag berechnet eine Lesezeit pro Artikel. Hier kannst du definieren, ob du ein schneller oder langsamer Leser bist. wallabag wird die Lesezeiten danach neu berechnen."
86 help_language: "Du kannst die Sprache der wallabag-Oberfläche ändern." 86 help_language: "Du kannst die Sprache der wallabag-Oberfläche ändern."
87 help_pocket_consumer_key: "Nötig für den Pocket-Import. Du kannst ihn in deinem Pocket account einrichten." 87 help_pocket_consumer_key: "Nötig für den Pocket-Import. Du kannst ihn in deinem Pocket account einrichten."
88 form_rss: 88 form_feed:
89 description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.' 89 description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.'
90 token_label: 'RSS-Token' 90 token_label: 'RSS-Token'
91 no_token: 'Kein Token' 91 no_token: 'Kein Token'
92 token_create: 'Token erstellen' 92 token_create: 'Token erstellen'
93 token_reset: 'Token zurücksetzen' 93 token_reset: 'Token zurücksetzen'
94 rss_links: 'RSS-Links' 94 feed_links: 'RSS-Links'
95 rss_link: 95 feed_link:
96 unread: 'Ungelesene' 96 unread: 'Ungelesene'
97 starred: 'Favoriten' 97 starred: 'Favoriten'
98 archive: 'Archivierte' 98 archive: 'Archivierte'
99 all: 'Alle' 99 all: 'Alle'
100 rss_limit: 'Anzahl der Einträge pro Feed' 100 feed_limit: 'Anzahl der Einträge pro Feed'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Name' 103 name_label: 'Name'
@@ -363,7 +363,7 @@ quickstart:
363 title: 'Anwendung konfigurieren' 363 title: 'Anwendung konfigurieren'
364 description: 'Um die Applikation für dich anzupassen, schau in die Konfiguration von wallabag.' 364 description: 'Um die Applikation für dich anzupassen, schau in die Konfiguration von wallabag.'
365 language: 'Sprache und Design ändern' 365 language: 'Sprache und Design ändern'
366 rss: 'RSS-Feeds aktivieren' 366 feed: 'RSS-Feeds aktivieren'
367 tagging_rules: 'Schreibe Regeln, um deine Beiträge automatisch zu taggen (verschlagworten)' 367 tagging_rules: 'Schreibe Regeln, um deine Beiträge automatisch zu taggen (verschlagworten)'
368 admin: 368 admin:
369 title: 'Administration' 369 title: 'Administration'
@@ -580,14 +580,14 @@ flashes:
580 password_updated: 'Kennwort aktualisiert' 580 password_updated: 'Kennwort aktualisiert'
581 password_not_updated_demo: 'Im Testmodus kannst du das Kennwort nicht ändern.' 581 password_not_updated_demo: 'Im Testmodus kannst du das Kennwort nicht ändern.'
582 user_updated: 'Information aktualisiert' 582 user_updated: 'Information aktualisiert'
583 rss_updated: 'RSS-Informationen aktualisiert' 583 feed_updated: 'RSS-Informationen aktualisiert'
584 tagging_rules_updated: 'Tagging-Regeln aktualisiert' 584 tagging_rules_updated: 'Tagging-Regeln aktualisiert'
585 tagging_rules_deleted: 'Tagging-Regel gelöscht' 585 tagging_rules_deleted: 'Tagging-Regel gelöscht'
586 rss_token_updated: 'RSS-Token aktualisiert' 586 feed_token_updated: 'RSS-Token aktualisiert'
587 annotations_reset: 'Anmerkungen zurücksetzen' 587 annotations_reset: Anmerkungen zurücksetzen
588 tags_reset: 'Tags zurücksetzen' 588 tags_reset: Tags zurücksetzen
589 entries_reset: 'Einträge zurücksetzen' 589 entries_reset: Einträge zurücksetzen
590 archived_reset: 'Archiverte Einträge zurücksetzen' 590 archived_reset: Archiverte Einträge zurücksetzen
591 entry: 591 entry:
592 notice: 592 notice:
593 entry_already_saved: 'Eintrag bereits am %date% gespeichert' 593 entry_already_saved: 'Eintrag bereits am %date% gespeichert'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
index 45145c80..5b875652 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Config' 54 page_title: 'Config'
55 tab_menu: 55 tab_menu:
56 settings: 'Settings' 56 settings: 'Settings'
57 rss: 'RSS' 57 feed: 'Feeds'
58 user_info: 'User information' 58 user_info: 'User information'
59 password: 'Password' 59 password: 'Password'
60 rules: 'Tagging rules' 60 rules: 'Tagging rules'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 help_language: "You can change the language of wallabag interface." 86 help_language: "You can change the language of wallabag interface."
87 help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.' 89 description: 'Atom feeds provided by wallabag allow you to read your saved articles with your favourite Atom reader. You need to generate a token first.'
90 token_label: 'RSS token' 90 token_label: 'Feed token'
91 no_token: 'No token' 91 no_token: 'No token'
92 token_create: 'Create your token' 92 token_create: 'Create your token'
93 token_reset: 'Regenerate your token' 93 token_reset: 'Regenerate your token'
94 rss_links: 'RSS links' 94 feed_links: 'Feed links'
95 rss_link: 95 feed_link:
96 unread: 'Unread' 96 unread: 'Unread'
97 starred: 'Starred' 97 starred: 'Starred'
98 archive: 'Archived' 98 archive: 'Archived'
99 all: 'All' 99 all: 'All'
100 rss_limit: 'Number of items in the feed' 100 feed_limit: 'Number of items in the feed'
101 form_user: 101 form_user:
102 two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Name' 103 name_label: 'Name'
@@ -372,7 +372,7 @@ quickstart:
372 title: 'Configure the application' 372 title: 'Configure the application'
373 description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 373 description: 'In order to have an application which suits you, have a look into the configuration of wallabag.'
374 language: 'Change language and design' 374 language: 'Change language and design'
375 rss: 'Enable RSS feeds' 375 feed: 'Enable feeds'
376 tagging_rules: 'Write rules to automatically tag your articles' 376 tagging_rules: 'Write rules to automatically tag your articles'
377 admin: 377 admin:
378 title: 'Administration' 378 title: 'Administration'
@@ -589,10 +589,10 @@ flashes:
589 password_updated: 'Password updated' 589 password_updated: 'Password updated'
590 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 590 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
591 user_updated: 'Information updated' 591 user_updated: 'Information updated'
592 rss_updated: 'RSS information updated' 592 feed_updated: 'Feed information updated'
593 tagging_rules_updated: 'Tagging rules updated' 593 tagging_rules_updated: 'Tagging rules updated'
594 tagging_rules_deleted: 'Tagging rule deleted' 594 tagging_rules_deleted: 'Tagging rule deleted'
595 rss_token_updated: 'RSS token updated' 595 feed_token_updated: 'Feed token updated'
596 annotations_reset: Annotations reset 596 annotations_reset: Annotations reset
597 tags_reset: Tags reset 597 tags_reset: Tags reset
598 entries_reset: Entries reset 598 entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
index c1047e55..562b4191 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Configuración' 54 page_title: 'Configuración'
55 tab_menu: 55 tab_menu:
56 settings: 'Configuración' 56 settings: 'Configuración'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Información de usuario' 58 user_info: 'Información de usuario'
59 password: 'Contraseña' 59 password: 'Contraseña'
60 rules: 'Reglas de etiquetado automáticas' 60 rules: 'Reglas de etiquetado automáticas'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag calcula un tiempo de lectura para cada artículo. Puedes definir aquí, gracias a esta lista, si eres un lector rápido o lento. wallabag recalculará el tiempo de lectura para cada artículo." 85 help_reading_speed: "wallabag calcula un tiempo de lectura para cada artículo. Puedes definir aquí, gracias a esta lista, si eres un lector rápido o lento. wallabag recalculará el tiempo de lectura para cada artículo."
86 help_language: "Puedes cambiar el idioma de la interfaz de wallabag." 86 help_language: "Puedes cambiar el idioma de la interfaz de wallabag."
87 help_pocket_consumer_key: "Requerido para la importación desde Pocket. Puedes crearla en tu cuenta de Pocket." 87 help_pocket_consumer_key: "Requerido para la importación desde Pocket. Puedes crearla en tu cuenta de Pocket."
88 form_rss: 88 form_feed:
89 description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Primero necesitas generar un token.' 89 description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Primero necesitas generar un token.'
90 token_label: 'Token RSS' 90 token_label: 'Token RSS'
91 no_token: 'Sin token' 91 no_token: 'Sin token'
92 token_create: 'Crear token' 92 token_create: 'Crear token'
93 token_reset: 'Reiniciar token' 93 token_reset: 'Reiniciar token'
94 rss_links: 'URLs de feeds RSS' 94 feed_links: 'URLs de feeds RSS'
95 rss_link: 95 feed_link:
96 unread: 'sin leer' 96 unread: 'sin leer'
97 starred: 'favoritos' 97 starred: 'favoritos'
98 archive: 'archivados' 98 archive: 'archivados'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'Límite de artículos en feed RSS' 100 feed_limit: 'Límite de artículos en feed RSS'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nombre' 103 name_label: 'Nombre'
@@ -372,7 +372,7 @@ quickstart:
372 title: 'Configure la aplicación' 372 title: 'Configure la aplicación'
373 description: 'Para que la aplicación se ajuste a tus necesidades, echa un vistazo a la configuración de wallabag.' 373 description: 'Para que la aplicación se ajuste a tus necesidades, echa un vistazo a la configuración de wallabag.'
374 language: 'Cambie el idioma y el diseño' 374 language: 'Cambie el idioma y el diseño'
375 rss: 'Activar los feeds RSS' 375 feed: 'Activar los feeds RSS'
376 tagging_rules: 'Escribe reglas para etiquetar automáticamente tus artículos' 376 tagging_rules: 'Escribe reglas para etiquetar automáticamente tus artículos'
377 admin: 377 admin:
378 title: 'Administración' 378 title: 'Administración'
@@ -589,10 +589,10 @@ flashes:
589 password_updated: 'Contraseña actualizada' 589 password_updated: 'Contraseña actualizada'
590 password_not_updated_demo: "En el modo demo, no puede cambiar la contraseña del usuario." 590 password_not_updated_demo: "En el modo demo, no puede cambiar la contraseña del usuario."
591 user_updated: 'Información actualizada' 591 user_updated: 'Información actualizada'
592 rss_updated: 'Configuración RSS actualizada' 592 feed_updated: 'Configuración RSS actualizada'
593 tagging_rules_updated: 'Regla de etiquetado actualizada' 593 tagging_rules_updated: 'Regla de etiquetado actualizada'
594 tagging_rules_deleted: 'Regla de etiquetado eliminada' 594 tagging_rules_deleted: 'Regla de etiquetado eliminada'
595 rss_token_updated: 'Token RSS actualizado' 595 feed_token_updated: 'Token RSS actualizado'
596 annotations_reset: Anotaciones reiniciadas 596 annotations_reset: Anotaciones reiniciadas
597 tags_reset: Etiquetas reiniciadas 597 tags_reset: Etiquetas reiniciadas
598 entries_reset: Artículos reiniciados 598 entries_reset: Artículos reiniciados
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
index 3042de2e..f360e0d6 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'پیکربندی' 54 page_title: 'پیکربندی'
55 tab_menu: 55 tab_menu:
56 settings: 'تنظیمات' 56 settings: 'تنظیمات'
57 rss: 'آر-اس-اس' 57 feed: 'آر-اس-اس'
58 user_info: 'اطلاعات کاربر' 58 user_info: 'اطلاعات کاربر'
59 password: 'رمز' 59 password: 'رمز'
60 rules: 'برچسب‌گذاری خودکار' 60 rules: 'برچسب‌گذاری خودکار'
@@ -85,19 +85,19 @@ config:
85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 # help_language: "You can change the language of wallabag interface." 86 # help_language: "You can change the language of wallabag interface."
87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'با خوراک آر-اس-اس که wallabag در اختیارتان می‌گذارد، می‌توانید مقاله‌های ذخیره‌شده را در نرم‌افزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.' 89 description: 'با خوراک آر-اس-اس که wallabag در اختیارتان می‌گذارد، می‌توانید مقاله‌های ذخیره‌شده را در نرم‌افزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.'
90 token_label: 'کد آر-اس-اس' 90 token_label: 'کد آر-اس-اس'
91 no_token: 'بدون کد' 91 no_token: 'بدون کد'
92 token_create: 'کد خود را بسازید' 92 token_create: 'کد خود را بسازید'
93 token_reset: 'بازنشانی کد' 93 token_reset: 'بازنشانی کد'
94 rss_links: 'پیوند آر-اس-اس' 94 feed_links: 'پیوند آر-اس-اس'
95 rss_link: 95 feed_link:
96 unread: 'خوانده‌نشده' 96 unread: 'خوانده‌نشده'
97 starred: 'برگزیده' 97 starred: 'برگزیده'
98 archive: 'بایگانی' 98 archive: 'بایگانی'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'محدودیت آر-اس-اس' 100 feed_limit: 'محدودیت آر-اس-اس'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'نام' 103 name_label: 'نام'
@@ -372,7 +372,7 @@ quickstart:
372 title: 'برنامه را تنظیم کنید' 372 title: 'برنامه را تنظیم کنید'
373 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 373 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.'
374 language: 'زبان و نمای برنامه را تغییر دهید' 374 language: 'زبان و نمای برنامه را تغییر دهید'
375 rss: 'خوراک آر-اس-اس را فعال کنید' 375 feed: 'خوراک آر-اس-اس را فعال کنید'
376 tagging_rules: 'قانون‌های برچسب‌گذاری خودکار مقاله‌هایتان را تعریف کنید' 376 tagging_rules: 'قانون‌های برچسب‌گذاری خودکار مقاله‌هایتان را تعریف کنید'
377 admin: 377 admin:
378 title: 'مدیریت' 378 title: 'مدیریت'
@@ -589,10 +589,10 @@ flashes:
589 password_updated: 'رمز به‌روز شد' 589 password_updated: 'رمز به‌روز شد'
590 password_not_updated_demo: "در حالت نمایشی نمی‌توانید رمز کاربر را عوض کنید." 590 password_not_updated_demo: "در حالت نمایشی نمی‌توانید رمز کاربر را عوض کنید."
591 user_updated: 'اطلاعات به‌روز شد' 591 user_updated: 'اطلاعات به‌روز شد'
592 rss_updated: 'اطلاعات آر-اس-اس به‌روز شد' 592 feed_updated: 'اطلاعات آر-اس-اس به‌روز شد'
593 tagging_rules_updated: 'برچسب‌گذاری خودکار به‌روز شد' 593 tagging_rules_updated: 'برچسب‌گذاری خودکار به‌روز شد'
594 tagging_rules_deleted: 'قانون برچسب‌گذاری پاک شد' 594 tagging_rules_deleted: 'قانون برچسب‌گذاری پاک شد'
595 rss_token_updated: 'کد آر-اس-اس به‌روز شد' 595 feed_token_updated: 'کد آر-اس-اس به‌روز شد'
596 # annotations_reset: Annotations reset 596 # annotations_reset: Annotations reset
597 # tags_reset: Tags reset 597 # tags_reset: Tags reset
598 # entries_reset: Entries reset 598 # entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
index 57740ba2..79f15154 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
@@ -54,7 +54,7 @@ config:
54 page_title: "Configuration" 54 page_title: "Configuration"
55 tab_menu: 55 tab_menu:
56 settings: "Paramètres" 56 settings: "Paramètres"
57 rss: "RSS" 57 feed: "Flux"
58 user_info: "Mon compte" 58 user_info: "Mon compte"
59 password: "Mot de passe" 59 password: "Mot de passe"
60 rules: "Règles de tag automatiques" 60 rules: "Règles de tag automatiques"
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag calcule une durée de lecture pour chaque article. Vous pouvez définir ici, grâce à cette liste déroulante, si vous lisez plus ou moins vite. wallabag recalculera la durée de lecture de chaque article." 85 help_reading_speed: "wallabag calcule une durée de lecture pour chaque article. Vous pouvez définir ici, grâce à cette liste déroulante, si vous lisez plus ou moins vite. wallabag recalculera la durée de lecture de chaque article."
86 help_language: "Vous pouvez définir la langue de l’interface de wallabag." 86 help_language: "Vous pouvez définir la langue de l’interface de wallabag."
87 help_pocket_consumer_key: "Nécessaire pour l’import depuis Pocket. Vous pouvez le créer depuis votre compte Pocket." 87 help_pocket_consumer_key: "Nécessaire pour l’import depuis Pocket. Vous pouvez le créer depuis votre compte Pocket."
88 form_rss: 88 form_feed:
89 description: "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d’abord créer un jeton." 89 description: "Les flux Atom fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d’abord créer un jeton."
90 token_label: "Jeton RSS" 90 token_label: "Jeton de flux"
91 no_token: "Aucun jeton généré" 91 no_token: "Aucun jeton généré"
92 token_create: "Créez votre jeton" 92 token_create: "Créez votre jeton"
93 token_reset: "Réinitialisez votre jeton" 93 token_reset: "Réinitialisez votre jeton"
94 rss_links: "Adresses de vos flux RSS" 94 feed_links: "Adresses de vos flux"
95 rss_link: 95 feed_link:
96 unread: "Non lus" 96 unread: "Non lus"
97 starred: "Favoris" 97 starred: "Favoris"
98 archive: "Lus" 98 archive: "Lus"
99 all: "Tous" 99 all: "Tous"
100 rss_limit: "Nombre d’articles dans le flux" 100 feed_limit: "Nombre d’articles dans le flux"
101 form_user: 101 form_user:
102 two_factor_description: "Activer l’authentification double-facteur veut dire que vous allez recevoir un code par courriel OU que vous devriez utiliser une application de mot de passe à usage unique (comme Google Authenticator, Authy or FreeOTP) pour obtenir un code temporaire à chaque nouvelle connexion non approuvée. Vous ne pouvez pas choisir les deux options." 102 two_factor_description: "Activer l’authentification double-facteur veut dire que vous allez recevoir un code par courriel OU que vous devriez utiliser une application de mot de passe à usage unique (comme Google Authenticator, Authy or FreeOTP) pour obtenir un code temporaire à chaque nouvelle connexion non approuvée. Vous ne pouvez pas choisir les deux options."
103 name_label: "Nom" 103 name_label: "Nom"
@@ -372,7 +372,7 @@ quickstart:
372 title: "Configurez l’application" 372 title: "Configurez l’application"
373 description: "Pour voir une application qui vous correspond, allez voir du côté de la configuration de wallabag." 373 description: "Pour voir une application qui vous correspond, allez voir du côté de la configuration de wallabag."
374 language: "Changez la langue et le design de l’application" 374 language: "Changez la langue et le design de l’application"
375 rss: "Activez les flux RSS" 375 feed: "Activez les flux Atom"
376 tagging_rules: "Écrivez des règles pour classer automatiquement vos articles" 376 tagging_rules: "Écrivez des règles pour classer automatiquement vos articles"
377 admin: 377 admin:
378 title: "Administration" 378 title: "Administration"
@@ -590,10 +590,10 @@ flashes:
590 password_updated: "Votre mot de passe a bien été mis à jour" 590 password_updated: "Votre mot de passe a bien été mis à jour"
591 password_not_updated_demo: "En démo, vous ne pouvez pas changer le mot de passe de cet utilisateur." 591 password_not_updated_demo: "En démo, vous ne pouvez pas changer le mot de passe de cet utilisateur."
592 user_updated: "Vos informations personnelles ont bien été mises à jour" 592 user_updated: "Vos informations personnelles ont bien été mises à jour"
593 rss_updated: "La configuration des flux RSS a bien été mise à jour" 593 feed_updated: "La configuration des flux a bien été mise à jour"
594 tagging_rules_updated: "Règles mises à jour" 594 tagging_rules_updated: "Règles mises à jour"
595 tagging_rules_deleted: "Règle supprimée" 595 tagging_rules_deleted: "Règle supprimée"
596 rss_token_updated: "Jeton RSS mis à jour" 596 feed_token_updated: "Jeton des flux mis à jour"
597 annotations_reset: "Annotations supprimées" 597 annotations_reset: "Annotations supprimées"
598 tags_reset: "Tags supprimés" 598 tags_reset: "Tags supprimés"
599 entries_reset: "Articles supprimés" 599 entries_reset: "Articles supprimés"
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
index 274e5338..daef359f 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Configurazione' 54 page_title: 'Configurazione'
55 tab_menu: 55 tab_menu:
56 settings: 'Impostazioni' 56 settings: 'Impostazioni'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Informazioni utente' 58 user_info: 'Informazioni utente'
59 password: 'Password' 59 password: 'Password'
60 rules: 'Regole di etichettatura' 60 rules: 'Regole di etichettatura'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag calcola un tempo di lettura per ogni articolo. Puoi definire qui, grazie a questa lista, se sei un lettore lento o veloce. wallabag ricalcolerà la velocità di lettura per ogni articolo." 85 help_reading_speed: "wallabag calcola un tempo di lettura per ogni articolo. Puoi definire qui, grazie a questa lista, se sei un lettore lento o veloce. wallabag ricalcolerà la velocità di lettura per ogni articolo."
86 help_language: "Puoi cambiare la lingua dell'interfaccia di wallabag." 86 help_language: "Puoi cambiare la lingua dell'interfaccia di wallabag."
87 help_pocket_consumer_key: "Richiesta per importare da Pocket. La puoi creare nel tuo account Pocket." 87 help_pocket_consumer_key: "Richiesta per importare da Pocket. La puoi creare nel tuo account Pocket."
88 form_rss: 88 form_feed:
89 description: 'I feed RSS generati da wallabag ti permettono di leggere i tuoi contenuti salvati con il tuo lettore di RSS preferito. Prima, devi generare un token.' 89 description: 'I feed RSS generati da wallabag ti permettono di leggere i tuoi contenuti salvati con il tuo lettore di RSS preferito. Prima, devi generare un token.'
90 token_label: 'Token RSS' 90 token_label: 'Token RSS'
91 no_token: 'Nessun token' 91 no_token: 'Nessun token'
92 token_create: 'Crea il tuo token' 92 token_create: 'Crea il tuo token'
93 token_reset: 'Rigenera il tuo token' 93 token_reset: 'Rigenera il tuo token'
94 rss_links: 'Collegamenti RSS' 94 feed_links: 'Collegamenti RSS'
95 rss_link: 95 feed_link:
96 unread: 'Non letti' 96 unread: 'Non letti'
97 starred: 'Preferiti' 97 starred: 'Preferiti'
98 archive: 'Archiviati' 98 archive: 'Archiviati'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'Numero di elementi nel feed' 100 feed_limit: 'Numero di elementi nel feed'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nome' 103 name_label: 'Nome'
@@ -371,7 +371,7 @@ quickstart:
371 title: "Configura l'applicazione" 371 title: "Configura l'applicazione"
372 description: "Per avere un'applicazione che ti soddisfi, dai un'occhiata alla configurazione di wallabag." 372 description: "Per avere un'applicazione che ti soddisfi, dai un'occhiata alla configurazione di wallabag."
373 language: 'Cambia lingua e design' 373 language: 'Cambia lingua e design'
374 rss: 'Abilita i feed RSS' 374 feed: 'Abilita i feed RSS'
375 tagging_rules: 'Scrivi delle regole per taggare automaticamente i contenuti' 375 tagging_rules: 'Scrivi delle regole per taggare automaticamente i contenuti'
376 admin: 376 admin:
377 title: 'Amministrazione' 377 title: 'Amministrazione'
@@ -588,10 +588,10 @@ flashes:
588 password_updated: 'Password aggiornata' 588 password_updated: 'Password aggiornata'
589 password_not_updated_demo: "In modalità demo, non puoi cambiare la password dell'utente." 589 password_not_updated_demo: "In modalità demo, non puoi cambiare la password dell'utente."
590 user_updated: 'Informazioni aggiornate' 590 user_updated: 'Informazioni aggiornate'
591 rss_updated: 'Informazioni RSS aggiornate' 591 feed_updated: 'Informazioni RSS aggiornate'
592 tagging_rules_updated: 'Regole di etichettatura aggiornate' 592 tagging_rules_updated: 'Regole di etichettatura aggiornate'
593 tagging_rules_deleted: 'Regola di etichettatura eliminate' 593 tagging_rules_deleted: 'Regola di etichettatura eliminate'
594 rss_token_updated: 'RSS token aggiornato' 594 feed_token_updated: 'RSS token aggiornato'
595 annotations_reset: Reset annotazioni 595 annotations_reset: Reset annotazioni
596 tags_reset: Reset etichette 596 tags_reset: Reset etichette
597 entries_reset: Reset articoli 597 entries_reset: Reset articoli
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
index 4e5370f9..980ddeb4 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Configuracion' 54 page_title: 'Configuracion'
55 tab_menu: 55 tab_menu:
56 settings: 'Paramètres' 56 settings: 'Paramètres'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Mon compte' 58 user_info: 'Mon compte'
59 password: 'Senhal' 59 password: 'Senhal'
60 rules: "Règlas d'etiquetas automaticas" 60 rules: "Règlas d'etiquetas automaticas"
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag calcula lo temps de lectura per cada article. Podètz lo definir aquí, gràcias a aquesta lista, se sètz un legeire rapid o lent. wallabag tornarà calcular lo temps de lectura per cada article." 85 help_reading_speed: "wallabag calcula lo temps de lectura per cada article. Podètz lo definir aquí, gràcias a aquesta lista, se sètz un legeire rapid o lent. wallabag tornarà calcular lo temps de lectura per cada article."
86 help_language: "Podètz cambiar la lenga de l'interfàcia de wallabag." 86 help_language: "Podètz cambiar la lenga de l'interfàcia de wallabag."
87 help_pocket_consumer_key: "Requesida per l'importacion de Pocket. Podètz la crear dins vòstre compte Pocket." 87 help_pocket_consumer_key: "Requesida per l'importacion de Pocket. Podètz la crear dins vòstre compte Pocket."
88 form_rss: 88 form_feed:
89 description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton." 89 description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton."
90 token_label: 'Geton RSS' 90 token_label: 'Geton RSS'
91 no_token: 'Pas cap de geton generat' 91 no_token: 'Pas cap de geton generat'
92 token_create: 'Creatz vòstre geton' 92 token_create: 'Creatz vòstre geton'
93 token_reset: 'Reïnicializatz vòstre geton' 93 token_reset: 'Reïnicializatz vòstre geton'
94 rss_links: 'URLs de vòstres fluxes RSS' 94 feed_links: 'URLs de vòstres fluxes RSS'
95 rss_link: 95 feed_link:
96 unread: 'Pas legits' 96 unread: 'Pas legits'
97 starred: 'Favorits' 97 starred: 'Favorits'
98 archive: 'Legits' 98 archive: 'Legits'
99 all: 'Totes' 99 all: 'Totes'
100 rss_limit: "Nombre d'articles dins un flux RSS" 100 feed_limit: "Nombre d'articles dins un flux"
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nom' 103 name_label: 'Nom'
@@ -371,7 +371,7 @@ quickstart:
371 title: "Configuratz l'aplicacion" 371 title: "Configuratz l'aplicacion"
372 description: "Per fin d'aver una aplicacion que vos va ben, anatz veire la configuracion de wallabag." 372 description: "Per fin d'aver una aplicacion que vos va ben, anatz veire la configuracion de wallabag."
373 language: "Cambiatz la lenga e l'estil de l'aplicacion" 373 language: "Cambiatz la lenga e l'estil de l'aplicacion"
374 rss: 'Activatz los fluxes RSS' 374 feed: 'Activatz los fluxes RSS'
375 tagging_rules: 'Escrivètz de règlas per classar automaticament vòstres articles' 375 tagging_rules: 'Escrivètz de règlas per classar automaticament vòstres articles'
376 admin: 376 admin:
377 title: 'Administracion' 377 title: 'Administracion'
@@ -588,10 +588,10 @@ flashes:
588 password_updated: 'Vòstre senhal es ben estat mes a jorn' 588 password_updated: 'Vòstre senhal es ben estat mes a jorn'
589 password_not_updated_demo: "En demostracion, podètz pas cambiar lo senhal d'aqueste utilizaire." 589 password_not_updated_demo: "En demostracion, podètz pas cambiar lo senhal d'aqueste utilizaire."
590 user_updated: 'Vòstres informacions personnelas son ben estadas mesas a jorn' 590 user_updated: 'Vòstres informacions personnelas son ben estadas mesas a jorn'
591 rss_updated: 'La configuracion dels fluxes RSS es ben estada mesa a jorn' 591 feed_updated: 'La configuracion dels fluxes RSS es ben estada mesa a jorn'
592 tagging_rules_updated: 'Règlas misa a jorn' 592 tagging_rules_updated: 'Règlas misa a jorn'
593 tagging_rules_deleted: 'Règla suprimida' 593 tagging_rules_deleted: 'Règla suprimida'
594 rss_token_updated: 'Geton RSS mes a jorn' 594 feed_token_updated: 'Geton RSS mes a jorn'
595 annotations_reset: Anotacions levadas 595 annotations_reset: Anotacions levadas
596 tags_reset: Etiquetas levadas 596 tags_reset: Etiquetas levadas
597 entries_reset: Articles levats 597 entries_reset: Articles levats
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
index a7a4d6c3..3813ac37 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Konfiguracja' 54 page_title: 'Konfiguracja'
55 tab_menu: 55 tab_menu:
56 settings: 'Ustawienia' 56 settings: 'Ustawienia'
57 rss: 'Kanał RSS' 57 feed: 'Kanał RSS'
58 user_info: 'Informacje o użytkowniku' 58 user_info: 'Informacje o użytkowniku'
59 password: 'Hasło' 59 password: 'Hasło'
60 rules: 'Zasady tagowania' 60 rules: 'Zasady tagowania'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag oblicza czas czytania każdego artykułu. Dzięki tej liście możesz określić swoje tempo. Wallabag przeliczy ponownie czas potrzebny, na przeczytanie każdego z artykułów." 85 help_reading_speed: "wallabag oblicza czas czytania każdego artykułu. Dzięki tej liście możesz określić swoje tempo. Wallabag przeliczy ponownie czas potrzebny, na przeczytanie każdego z artykułów."
86 help_language: "Możesz zmienić język interfejsu wallabag." 86 help_language: "Możesz zmienić język interfejsu wallabag."
87 help_pocket_consumer_key: "Wymagane dla importu z Pocket. Możesz go stworzyć na swoim koncie Pocket." 87 help_pocket_consumer_key: "Wymagane dla importu z Pocket. Możesz go stworzyć na swoim koncie Pocket."
88 form_rss: 88 form_feed:
89 description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoim ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌' 89 description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoim ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.‌'
90 token_label: 'Token RSS' 90 token_label: 'Token RSS'
91 no_token: 'Brak tokena' 91 no_token: 'Brak tokena'
92 token_create: 'Stwórz tokena' 92 token_create: 'Stwórz tokena'
93 token_reset: 'Zresetuj swojego tokena' 93 token_reset: 'Zresetuj swojego tokena'
94 rss_links: 'RSS links' 94 feed_links: 'RSS links'
95 rss_link: 95 feed_link:
96 unread: 'Nieprzeczytane' 96 unread: 'Nieprzeczytane'
97 starred: 'Oznaczone gwiazdką' 97 starred: 'Oznaczone gwiazdką'
98 archive: 'Archiwum' 98 archive: 'Archiwum'
99 all: 'Wszystkie' 99 all: 'Wszystkie'
100 rss_limit: 'Link do RSS' 100 feed_limit: 'Link do RSS'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nazwa' 103 name_label: 'Nazwa'
@@ -371,7 +371,7 @@ quickstart:
371 title: 'Konfiguruj aplikację' 371 title: 'Konfiguruj aplikację'
372 description: 'W celu dopasowania aplikacji do swoich upodobań, zobacz konfigurację aplikacji' 372 description: 'W celu dopasowania aplikacji do swoich upodobań, zobacz konfigurację aplikacji'
373 language: 'Zmień język i wygląd' 373 language: 'Zmień język i wygląd'
374 rss: 'Włącz kanały RSS' 374 feed: 'Włącz kanały RSS'
375 tagging_rules: 'Napisz reguły pozwalające na automatyczne otagowanie twoich artykułów' 375 tagging_rules: 'Napisz reguły pozwalające na automatyczne otagowanie twoich artykułów'
376 admin: 376 admin:
377 title: 'Administracja' 377 title: 'Administracja'
@@ -588,10 +588,10 @@ flashes:
588 password_updated: 'Hasło zaktualizowane' 588 password_updated: 'Hasło zaktualizowane'
589 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 589 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
590 user_updated: 'Informacje zaktualizowane' 590 user_updated: 'Informacje zaktualizowane'
591 rss_updated: 'Informacje RSS zaktualizowane' 591 feed_updated: 'Informacje RSS zaktualizowane'
592 tagging_rules_updated: 'Reguły tagowania zaktualizowane' 592 tagging_rules_updated: 'Reguły tagowania zaktualizowane'
593 tagging_rules_deleted: 'Reguła tagowania usunięta' 593 tagging_rules_deleted: 'Reguła tagowania usunięta'
594 rss_token_updated: 'Token kanału RSS zaktualizowany' 594 feed_token_updated: 'Token kanału RSS zaktualizowany'
595 annotations_reset: Zresetuj adnotacje 595 annotations_reset: Zresetuj adnotacje
596 tags_reset: Zresetuj tagi 596 tags_reset: Zresetuj tagi
597 entries_reset: Zresetuj wpisy 597 entries_reset: Zresetuj wpisy
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
index a5483a6d..96943c05 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Config' 54 page_title: 'Config'
55 tab_menu: 55 tab_menu:
56 settings: 'Configurações' 56 settings: 'Configurações'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Informação do Usuário' 58 user_info: 'Informação do Usuário'
59 password: 'Senha' 59 password: 'Senha'
60 rules: 'Regras de tags' 60 rules: 'Regras de tags'
@@ -85,19 +85,19 @@ config:
85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 # help_language: "You can change the language of wallabag interface." 86 # help_language: "You can change the language of wallabag interface."
87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'Feeds RSS providos pelo wallabag permitem que você leia seus artigos salvos em seu leitor de RSS favorito. Você precisa gerar um token primeiro.' 89 description: 'Feeds RSS providos pelo wallabag permitem que você leia seus artigos salvos em seu leitor de RSS favorito. Você precisa gerar um token primeiro.'
90 token_label: 'Token RSS' 90 token_label: 'Token RSS'
91 no_token: 'Nenhum Token' 91 no_token: 'Nenhum Token'
92 token_create: 'Criar seu token' 92 token_create: 'Criar seu token'
93 token_reset: 'Gerar novamente seu token' 93 token_reset: 'Gerar novamente seu token'
94 rss_links: 'Links RSS' 94 feed_links: 'Links RSS'
95 rss_link: 95 feed_link:
96 unread: 'Não lido' 96 unread: 'Não lido'
97 starred: 'Destacado' 97 starred: 'Destacado'
98 archive: 'Arquivado' 98 archive: 'Arquivado'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'Número de itens no feed' 100 feed_limit: 'Número de itens no feed'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nome' 103 name_label: 'Nome'
@@ -371,7 +371,7 @@ quickstart:
371 title: 'Configurar a aplicação' 371 title: 'Configurar a aplicação'
372 description: 'Para ter uma aplicação que atende você, dê uma olhada na configuração do wallabag.' 372 description: 'Para ter uma aplicação que atende você, dê uma olhada na configuração do wallabag.'
373 language: 'Alterar idioma e design' 373 language: 'Alterar idioma e design'
374 rss: 'Habilitar feeds RSS' 374 feed: 'Habilitar feeds RSS'
375 tagging_rules: 'Escrever regras para acrescentar tags automaticamente em seus artigos' 375 tagging_rules: 'Escrever regras para acrescentar tags automaticamente em seus artigos'
376 admin: 376 admin:
377 title: 'Administração' 377 title: 'Administração'
@@ -588,10 +588,10 @@ flashes:
588 password_updated: 'Senha atualizada' 588 password_updated: 'Senha atualizada'
589 password_not_updated_demo: 'Em modo de demonstração, você não pode alterar a senha deste usuário.' 589 password_not_updated_demo: 'Em modo de demonstração, você não pode alterar a senha deste usuário.'
590 # user_updated: 'Information updated' 590 # user_updated: 'Information updated'
591 rss_updated: 'Informação de RSS atualizada' 591 feed_updated: 'Informação de RSS atualizada'
592 tagging_rules_updated: 'Regras de tags atualizadas' 592 tagging_rules_updated: 'Regras de tags atualizadas'
593 tagging_rules_deleted: 'Regra de tag apagada' 593 tagging_rules_deleted: 'Regra de tag apagada'
594 rss_token_updated: 'Token RSS atualizado' 594 feed_token_updated: 'Token RSS atualizado'
595 # annotations_reset: Annotations reset 595 # annotations_reset: Annotations reset
596 # tags_reset: Tags reset 596 # tags_reset: Tags reset
597 # entries_reset: Entries reset 597 # entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
index 3b7fbd69..0ce11e74 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Configurație' 54 page_title: 'Configurație'
55 tab_menu: 55 tab_menu:
56 settings: 'Setări' 56 settings: 'Setări'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Informații despre utilizator' 58 user_info: 'Informații despre utilizator'
59 password: 'Parolă' 59 password: 'Parolă'
60 # rules: 'Tagging rules' 60 # rules: 'Tagging rules'
@@ -85,19 +85,19 @@ config:
85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 # help_language: "You can change the language of wallabag interface." 86 # help_language: "You can change the language of wallabag interface."
87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.' 89 description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.'
90 token_label: 'RSS-Token' 90 token_label: 'RSS-Token'
91 no_token: 'Fără token' 91 no_token: 'Fără token'
92 token_create: 'Crează-ți token' 92 token_create: 'Crează-ți token'
93 token_reset: 'Resetează-ți token-ul' 93 token_reset: 'Resetează-ți token-ul'
94 rss_links: 'Link-uri RSS' 94 feed_links: 'Link-uri RSS'
95 rss_link: 95 feed_link:
96 unread: 'Unread' 96 unread: 'Unread'
97 starred: 'Starred' 97 starred: 'Starred'
98 archive: 'Archived' 98 archive: 'Archived'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'Limită RSS' 100 feed_limit: 'Limită RSS'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'Nume' 103 name_label: 'Nume'
@@ -371,7 +371,7 @@ quickstart:
371 # title: 'Configure the application' 371 # title: 'Configure the application'
372 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 372 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.'
373 # language: 'Change language and design' 373 # language: 'Change language and design'
374 # rss: 'Enable RSS feeds' 374 # feed: 'Enable RSS feeds'
375 # tagging_rules: 'Write rules to automatically tag your articles' 375 # tagging_rules: 'Write rules to automatically tag your articles'
376 # admin: 376 # admin:
377 # title: 'Administration' 377 # title: 'Administration'
@@ -588,10 +588,10 @@ flashes:
588 password_updated: 'Parolă actualizată' 588 password_updated: 'Parolă actualizată'
589 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 589 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
590 user_updated: 'Informație actualizată' 590 user_updated: 'Informație actualizată'
591 rss_updated: 'Informație RSS actualizată' 591 feed_updated: 'Informație RSS actualizată'
592 # tagging_rules_updated: 'Tagging rules updated' 592 # tagging_rules_updated: 'Tagging rules updated'
593 # tagging_rules_deleted: 'Tagging rule deleted' 593 # tagging_rules_deleted: 'Tagging rule deleted'
594 # rss_token_updated: 'RSS token updated' 594 # feed_token_updated: 'RSS token updated'
595 # annotations_reset: Annotations reset 595 # annotations_reset: Annotations reset
596 # tags_reset: Tags reset 596 # tags_reset: Tags reset
597 # entries_reset: Entries reset 597 # entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml
index 92746631..2ee2d83a 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml
@@ -53,7 +53,7 @@ config:
53 page_title: 'Настройки' 53 page_title: 'Настройки'
54 tab_menu: 54 tab_menu:
55 settings: 'Настройки' 55 settings: 'Настройки'
56 rss: 'RSS' 56 feed: 'RSS'
57 user_info: 'Информация о пользователе' 57 user_info: 'Информация о пользователе'
58 password: 'Пароль' 58 password: 'Пароль'
59 rules: 'Правила настройки простановки тегов' 59 rules: 'Правила настройки простановки тегов'
@@ -83,18 +83,18 @@ config:
83 help_reading_speed: "wallabag посчитает сколько времени занимает чтение каждой записи. Вы можете определить здесь, как быстро вы читаете. wallabag пересчитает время чтения для каждой записи." 83 help_reading_speed: "wallabag посчитает сколько времени занимает чтение каждой записи. Вы можете определить здесь, как быстро вы читаете. wallabag пересчитает время чтения для каждой записи."
84 help_language: "Вы можете изменить язык интерфейса wallabag." 84 help_language: "Вы можете изменить язык интерфейса wallabag."
85 help_pocket_consumer_key: "Обязательно для импорта из Pocket. Вы можете создать это в Вашем аккаунте на Pocket." 85 help_pocket_consumer_key: "Обязательно для импорта из Pocket. Вы можете создать это в Вашем аккаунте на Pocket."
86 form_rss: 86 form_feed:
87 description: 'RSS фид созданный с помощью wallabag позволяет читать Ваши записи через Ваш любимый RSS агрегатор. Для начала Вам потребуется создать ключ.' 87 description: 'RSS фид созданный с помощью wallabag позволяет читать Ваши записи через Ваш любимый RSS агрегатор. Для начала Вам потребуется создать ключ.'
88 token_label: 'RSS ключ' 88 token_label: 'RSS ключ'
89 no_token: 'Ключ не задан' 89 no_token: 'Ключ не задан'
90 token_create: 'Создать ключ' 90 token_create: 'Создать ключ'
91 token_reset: 'Пересоздать ключ' 91 token_reset: 'Пересоздать ключ'
92 rss_links: 'ссылка на RSS' 92 feed_links: 'ссылка на RSS'
93 rss_link: 93 feed_link:
94 unread: 'непрочитанные' 94 unread: 'непрочитанные'
95 starred: 'помеченные' 95 starred: 'помеченные'
96 archive: 'архивные' 96 archive: 'архивные'
97 rss_limit: 'Количество записей в фиде' 97 feed_limit: 'Количество записей в фиде'
98 form_user: 98 form_user:
99 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 99 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
100 name_label: 'Имя' 100 name_label: 'Имя'
@@ -359,7 +359,7 @@ quickstart:
359 title: 'Настроить приложение' 359 title: 'Настроить приложение'
360 description: 'Чтобы иметь приложение, которое вам подходит, ознакомьтесь с конфигурацией wallabag.' 360 description: 'Чтобы иметь приложение, которое вам подходит, ознакомьтесь с конфигурацией wallabag.'
361 language: 'Выбрать язык и дизайн' 361 language: 'Выбрать язык и дизайн'
362 rss: 'Включить RSS фид' 362 feed: 'Включить RSS фид'
363 tagging_rules: 'Создать правило для автоматической установки тегов' 363 tagging_rules: 'Создать правило для автоматической установки тегов'
364 admin: 364 admin:
365 title: 'Администрирование' 365 title: 'Администрирование'
@@ -554,10 +554,10 @@ flashes:
554 password_updated: 'Пароль обновлен' 554 password_updated: 'Пароль обновлен'
555 password_not_updated_demo: "В режиме демонстрации нельзя изменять пароль для этого пользователя." 555 password_not_updated_demo: "В режиме демонстрации нельзя изменять пароль для этого пользователя."
556 user_updated: 'Информация обновлена' 556 user_updated: 'Информация обновлена'
557 rss_updated: 'RSS информация обновлена' 557 feed_updated: 'RSS информация обновлена'
558 tagging_rules_updated: 'Правила тегировния обновлены' 558 tagging_rules_updated: 'Правила тегировния обновлены'
559 tagging_rules_deleted: 'Правила тегировния удалены' 559 tagging_rules_deleted: 'Правила тегировния удалены'
560 rss_token_updated: 'RSS ключ обновлен' 560 feed_token_updated: 'RSS ключ обновлен'
561 annotations_reset: "Аннотации сброшены" 561 annotations_reset: "Аннотации сброшены"
562 tags_reset: "Теги сброшены" 562 tags_reset: "Теги сброшены"
563 entries_reset: "Записи сброшены" 563 entries_reset: "Записи сброшены"
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml
index 1fe4fa0e..e04eee68 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'กำหนดค่า' 54 page_title: 'กำหนดค่า'
55 tab_menu: 55 tab_menu:
56 settings: 'ตั้งค่า' 56 settings: 'ตั้งค่า'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'ข้อมูลผู้ใช้' 58 user_info: 'ข้อมูลผู้ใช้'
59 password: 'รหัสผ่าน' 59 password: 'รหัสผ่าน'
60 rules: 'การแท็กข้อบังคับ' 60 rules: 'การแท็กข้อบังคับ'
@@ -85,19 +85,19 @@ config:
85 help_reading_speed: "wallabag จะคำนวณเวลาการอ่านในแต่ละรายการซึ่งคุณสามารถกำหนดได้ที่นี้,ต้องขอบคุณรายการนี้,หากคุณเป็นนักอ่านที่เร็วหรือช้า wallabag จะทำการคำนวณเวลาที่อ่านใหม่ในแต่ละรายการ" 85 help_reading_speed: "wallabag จะคำนวณเวลาการอ่านในแต่ละรายการซึ่งคุณสามารถกำหนดได้ที่นี้,ต้องขอบคุณรายการนี้,หากคุณเป็นนักอ่านที่เร็วหรือช้า wallabag จะทำการคำนวณเวลาที่อ่านใหม่ในแต่ละรายการ"
86 help_language: "คุณสามารถเปลี่ยภาษาของ wallabag interface ได้" 86 help_language: "คุณสามารถเปลี่ยภาษาของ wallabag interface ได้"
87 help_pocket_consumer_key: "การ้องขอการเก็บการนำข้อมูลเข้า คุณสามารถสร้างบัญชีการเก็บของคุณ" 87 help_pocket_consumer_key: "การ้องขอการเก็บการนำข้อมูลเข้า คุณสามารถสร้างบัญชีการเก็บของคุณ"
88 form_rss: 88 form_feed:
89 description: 'RSS จะเก็บเงื่อนไขโดย wallabag ต้องยอมรับการอ่านรายการของคุณกับผู้อ่านที่ชอบ RSS คุณต้องทำเครื่องหมายก่อน' 89 description: 'RSS จะเก็บเงื่อนไขโดย wallabag ต้องยอมรับการอ่านรายการของคุณกับผู้อ่านที่ชอบ RSS คุณต้องทำเครื่องหมายก่อน'
90 token_label: 'เครื่องหมาย RSS' 90 token_label: 'เครื่องหมาย RSS'
91 no_token: 'ไม่มีเครื่องหมาย' 91 no_token: 'ไม่มีเครื่องหมาย'
92 token_create: 'สร้างเครื่องหมาย' 92 token_create: 'สร้างเครื่องหมาย'
93 token_reset: 'ทำเครื่องหมาย' 93 token_reset: 'ทำเครื่องหมาย'
94 rss_links: 'ลิงค์ RSS' 94 feed_links: 'ลิงค์ RSS'
95 rss_link: 95 feed_link:
96 unread: 'ยังไมได้่อ่าน' 96 unread: 'ยังไมได้่อ่าน'
97 starred: 'ทำการแสดง' 97 starred: 'ทำการแสดง'
98 archive: 'เอกสาร' 98 archive: 'เอกสาร'
99 all: 'ทั้งหมด' 99 all: 'ทั้งหมด'
100 rss_limit: 'จำนวนไอเทมที่เก็บ' 100 feed_limit: 'จำนวนไอเทมที่เก็บ'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'ชื่อ' 103 name_label: 'ชื่อ'
@@ -369,7 +369,7 @@ quickstart:
369 title: 'กำหนดค่าแอพพลิเคชั่น' 369 title: 'กำหนดค่าแอพพลิเคชั่น'
370 description: 'ภายใน order จะมี application suit ของคุณ, จะมองหาองค์ประกอบของ wallabag' 370 description: 'ภายใน order จะมี application suit ของคุณ, จะมองหาองค์ประกอบของ wallabag'
371 language: 'เปลี่ยนภาษาและออกแบบ' 371 language: 'เปลี่ยนภาษาและออกแบบ'
372 rss: 'เปิดใช้ RSS' 372 feed: 'เปิดใช้ RSS'
373 tagging_rules: 'เขียนข้อบังคับการแท็กอัตโนมัติของบทความของคุณ' 373 tagging_rules: 'เขียนข้อบังคับการแท็กอัตโนมัติของบทความของคุณ'
374 admin: 374 admin:
375 title: 'ผู้ดูแลระบบ' 375 title: 'ผู้ดูแลระบบ'
@@ -586,10 +586,10 @@ flashes:
586 password_updated: 'อัปเดตรหัสผ่าน' 586 password_updated: 'อัปเดตรหัสผ่าน'
587 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 587 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
588 user_updated: 'อัปเดตข้อมูล' 588 user_updated: 'อัปเดตข้อมูล'
589 rss_updated: 'อัปเดตข้อมูล RSS' 589 feed_updated: 'อัปเดตข้อมูล RSS'
590 tagging_rules_updated: 'อัปเดตการแท็กข้อบังคับ' 590 tagging_rules_updated: 'อัปเดตการแท็กข้อบังคับ'
591 tagging_rules_deleted: 'การลบข้อบังคับของแท็ก' 591 tagging_rules_deleted: 'การลบข้อบังคับของแท็ก'
592 rss_token_updated: 'อัปเดตเครื่องหมาย RSS ' 592 feed_token_updated: 'อัปเดตเครื่องหมาย RSS '
593 annotations_reset: รีเซ็ตหมายเหตุ 593 annotations_reset: รีเซ็ตหมายเหตุ
594 tags_reset: รีเซ็ตแท็ก 594 tags_reset: รีเซ็ตแท็ก
595 entries_reset: รีเซ็ตรายการ 595 entries_reset: รีเซ็ตรายการ
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
index 3b8a0d59..2f86f25d 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
@@ -54,7 +54,7 @@ config:
54 page_title: 'Yapılandırma' 54 page_title: 'Yapılandırma'
55 tab_menu: 55 tab_menu:
56 settings: 'Ayarlar' 56 settings: 'Ayarlar'
57 rss: 'RSS' 57 feed: 'RSS'
58 user_info: 'Kullanıcı bilgileri' 58 user_info: 'Kullanıcı bilgileri'
59 password: 'Şifre' 59 password: 'Şifre'
60 rules: 'Etiketleme kuralları' 60 rules: 'Etiketleme kuralları'
@@ -85,19 +85,19 @@ config:
85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article." 85 # help_reading_speed: "wallabag calculates a reading time for each article. You can define here, thanks to this list, if you are a fast or a slow reader. wallabag will recalculate the reading time for each article."
86 # help_language: "You can change the language of wallabag interface." 86 # help_language: "You can change the language of wallabag interface."
87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account." 87 # help_pocket_consumer_key: "Required for Pocket import. You can create it in your Pocket account."
88 form_rss: 88 form_feed:
89 description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.' 89 description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.'
90 token_label: 'RSS belirteci (token)' 90 token_label: 'RSS belirteci (token)'
91 no_token: 'Belirteç (token) yok' 91 no_token: 'Belirteç (token) yok'
92 token_create: 'Yeni belirteç (token) oluştur' 92 token_create: 'Yeni belirteç (token) oluştur'
93 token_reset: 'Belirteci (token) sıfırla' 93 token_reset: 'Belirteci (token) sıfırla'
94 rss_links: 'RSS akış bağlantıları' 94 feed_links: 'RSS akış bağlantıları'
95 rss_link: 95 feed_link:
96 unread: 'Okunmayan' 96 unread: 'Okunmayan'
97 starred: 'Favoriler' 97 starred: 'Favoriler'
98 archive: 'Arşiv' 98 archive: 'Arşiv'
99 # all: 'All' 99 # all: 'All'
100 rss_limit: 'RSS içeriğinden talep edilecek makale limiti' 100 feed_limit: 'RSS içeriğinden talep edilecek makale limiti'
101 form_user: 101 form_user:
102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option." 102 # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code OR need to use an OTP app (like Google Authenticator, Authy or FreeOTP) to get a one time code on every new untrusted connection. You can't choose both option."
103 name_label: 'İsim' 103 name_label: 'İsim'
@@ -369,7 +369,7 @@ quickstart:
369 title: 'Uygulamayı Yapılandırma' 369 title: 'Uygulamayı Yapılandırma'
370 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.' 370 # description: 'In order to have an application which suits you, have a look into the configuration of wallabag.'
371 language: 'Dili ve tasarımı değiştirme' 371 language: 'Dili ve tasarımı değiştirme'
372 rss: 'RSS akışını aktifleştirme' 372 feed: 'RSS akışını aktifleştirme'
373 # tagging_rules: 'Write rules to automatically tag your articles' 373 # tagging_rules: 'Write rules to automatically tag your articles'
374 admin: 374 admin:
375 # title: 'Administration' 375 # title: 'Administration'
@@ -566,10 +566,10 @@ flashes:
566 password_updated: 'Şifre güncellendi' 566 password_updated: 'Şifre güncellendi'
567 password_not_updated_demo: "In demonstration mode, you can't change password for this user." 567 password_not_updated_demo: "In demonstration mode, you can't change password for this user."
568 user_updated: 'Bilgiler güncellendi' 568 user_updated: 'Bilgiler güncellendi'
569 rss_updated: 'RSS bilgiler güncellendi' 569 feed_updated: 'RSS bilgiler güncellendi'
570 tagging_rules_updated: 'Tagging rules updated' 570 tagging_rules_updated: 'Tagging rules updated'
571 tagging_rules_deleted: 'Tagging rule deleted' 571 tagging_rules_deleted: 'Tagging rule deleted'
572 rss_token_updated: 'RSS token updated' 572 feed_token_updated: 'RSS token updated'
573 # annotations_reset: Annotations reset 573 # annotations_reset: Annotations reset
574 # tags_reset: Tags reset 574 # tags_reset: Tags reset
575 # entries_reset: Entries reset 575 # entries_reset: Entries reset
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml
index c6a84209..c0438978 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.da.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'Adgangskoden skal være mindst 8 tegn' 3 password_too_short: 'Adgangskoden skal være mindst 8 tegn'
4 # password_wrong_value: 'Wrong value for your current password' 4 # password_wrong_value: 'Wrong value for your current password'
5 # item_per_page_too_high: 'This will certainly kill the app' 5 # item_per_page_too_high: 'This will certainly kill the app'
6 # rss_limit_too_high: 'This will certainly kill the app' 6 # feed_limit_too_high: 'This will certainly kill the app'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.de.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.de.yml
index 907b67a5..4c675ef4 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.de.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.de.yml
@@ -3,6 +3,5 @@ validator:
3 password_too_short: 'Kennwort-Mindestlänge von acht Zeichen nicht erfüllt' 3 password_too_short: 'Kennwort-Mindestlänge von acht Zeichen nicht erfüllt'
4 password_wrong_value: 'Falscher Wert für dein aktuelles Kennwort' 4 password_wrong_value: 'Falscher Wert für dein aktuelles Kennwort'
5 item_per_page_too_high: 'Dies wird die Anwendung möglicherweise beenden' 5 item_per_page_too_high: 'Dies wird die Anwendung möglicherweise beenden'
6 rss_limit_too_high: 'Dies wird die Anwendung möglicherweise beenden' 6 feed_limit_too_high: 'Dies wird die Anwendung möglicherweise beenden'
7 quote_length_too_high: 'Das Zitat ist zu lang. Es sollte nicht mehr als {{ limit }} Zeichen enthalten.' 7 quote_length_too_high: 'Das Zitat ist zu lang. Es sollte nicht mehr als {{ limit }} Zeichen enthalten.'
8
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.en.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.en.yml
index 8cc117fe..89d4c68a 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.en.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.en.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'Password should by at least 8 chars long' 3 password_too_short: 'Password should by at least 8 chars long'
4 password_wrong_value: 'Wrong value for your current password' 4 password_wrong_value: 'Wrong value for your current password'
5 item_per_page_too_high: 'This will certainly kill the app' 5 item_per_page_too_high: 'This will certainly kill the app'
6 rss_limit_too_high: 'This will certainly kill the app' 6 feed_limit_too_high: 'This will certainly kill the app'
7 quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml
index 97a8edfa..ba34ee76 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.es.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'La contraseña debe tener al menos 8 carácteres' 3 password_too_short: 'La contraseña debe tener al menos 8 carácteres'
4 password_wrong_value: 'Entrada equivocada para su contraseña actual' 4 password_wrong_value: 'Entrada equivocada para su contraseña actual'
5 item_per_page_too_high: 'Esto matará la aplicación' 5 item_per_page_too_high: 'Esto matará la aplicación'
6 rss_limit_too_high: 'Esto matará la aplicación' 6 feed_limit_too_high: 'Esto matará la aplicación'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml
index ef677525..9b1a4af2 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.fa.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'رمز شما باید ۸ حرف یا بیشتر باشد' 3 password_too_short: 'رمز شما باید ۸ حرف یا بیشتر باشد'
4 password_wrong_value: 'رمز فعلی را اشتباه وارد کرده‌اید' 4 password_wrong_value: 'رمز فعلی را اشتباه وارد کرده‌اید'
5 item_per_page_too_high: 'با این تعداد برنامه به فنا می‌رود' 5 item_per_page_too_high: 'با این تعداد برنامه به فنا می‌رود'
6 rss_limit_too_high: 'با این تعداد برنامه به فنا می‌رود' 6 feed_limit_too_high: 'با این تعداد برنامه به فنا می‌رود'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml
index f31b4ed2..92f69aa0 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.fr.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: "Le mot de passe doit contenir au moins 8 caractères" 3 password_too_short: "Le mot de passe doit contenir au moins 8 caractères"
4 password_wrong_value: "Votre mot de passe actuel est faux" 4 password_wrong_value: "Votre mot de passe actuel est faux"
5 item_per_page_too_high: "Ça ne va pas plaire à l’application" 5 item_per_page_too_high: "Ça ne va pas plaire à l’application"
6 rss_limit_too_high: "Ça ne va pas plaire à l’application" 6 feed_limit_too_high: "Ça ne va pas plaire à l’application"
7 quote_length_too_high: "La citation est trop longue. Elle doit avoir au maximum {{ limit }} caractères." 7 quote_length_too_high: "La citation est trop longue. Elle doit avoir au maximum {{ limit }} caractères."
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.it.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.it.yml
index d949cc3b..b20d6f51 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.it.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.it.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'La password deve essere lunga almeno 8 caratteri' 3 password_too_short: 'La password deve essere lunga almeno 8 caratteri'
4 password_wrong_value: 'Valore inserito per la password corrente errato' 4 password_wrong_value: 'Valore inserito per la password corrente errato'
5 item_per_page_too_high: 'Questo valore è troppo alto' 5 item_per_page_too_high: 'Questo valore è troppo alto'
6 rss_limit_too_high: 'Questo valore è troppo alto' 6 feed_limit_too_high: 'Questo valore è troppo alto'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.oc.yml
index 87f00f10..cb57844f 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.oc.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.oc.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'Lo senhal deu aver almens 8 caractèrs' 3 password_too_short: 'Lo senhal deu aver almens 8 caractèrs'
4 password_wrong_value: 'Vòstre senhal actual es pas bon' 4 password_wrong_value: 'Vòstre senhal actual es pas bon'
5 item_per_page_too_high: "Aquò li agradarà pas a l'aplicacion" 5 item_per_page_too_high: "Aquò li agradarà pas a l'aplicacion"
6 rss_limit_too_high: "Aquò li agradarà pas a l'aplicacion" 6 feed_limit_too_high: "Aquò li agradarà pas a l'aplicacion"
7 quote_length_too_high: 'Aquesta citacion es tròpa longa. Cal que faga {{ limit }} caractèrs o mens.' 7 quote_length_too_high: 'Aquesta citacion es tròpa longa. Cal que faga {{ limit }} caractèrs o mens.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml
index e4165c14..94757cc5 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.pl.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'Hasło powinno mieć minimum 8 znaków długości' 3 password_too_short: 'Hasło powinno mieć minimum 8 znaków długości'
4 password_wrong_value: 'Twoje obecne hasło jest błędne' 4 password_wrong_value: 'Twoje obecne hasło jest błędne'
5 item_per_page_too_high: 'To może spowodować problemy z aplikacją' 5 item_per_page_too_high: 'To może spowodować problemy z aplikacją'
6 rss_limit_too_high: 'To może spowodować problemy z aplikacją' 6 feed_limit_too_high: 'To może spowodować problemy z aplikacją'
7 quote_length_too_high: 'Cytat jest zbyt długi. powinien mieć {{ limit }} znaków lub mniej.' 7 quote_length_too_high: 'Cytat jest zbyt długi. powinien mieć {{ limit }} znaków lub mniej.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml
index a8c1f9de..df2f3f35 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.pt.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'A senha deve ter pelo menos 8 caracteres' 3 password_too_short: 'A senha deve ter pelo menos 8 caracteres'
4 password_wrong_value: 'A senha atual informada está errada' 4 password_wrong_value: 'A senha atual informada está errada'
5 item_per_page_too_high: 'Certamente isso pode matar a aplicação' 5 item_per_page_too_high: 'Certamente isso pode matar a aplicação'
6 rss_limit_too_high: 'Certamente isso pode matar a aplicação' 6 feed_limit_too_high: 'Certamente isso pode matar a aplicação'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml
index 6840cf11..e5c8a72f 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.ro.yml
@@ -3,5 +3,5 @@ validator:
3 password_too_short: 'Parola ar trebui să conțină cel puțin 8 caractere' 3 password_too_short: 'Parola ar trebui să conțină cel puțin 8 caractere'
4 # password_wrong_value: 'Wrong value for your current password' 4 # password_wrong_value: 'Wrong value for your current password'
5 # item_per_page_too_high: 'This will certainly kill the app' 5 # item_per_page_too_high: 'This will certainly kill the app'
6 # rss_limit_too_high: 'This will certainly kill the app' 6 # feed_limit_too_high: 'This will certainly kill the app'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml
index e1e7317f..881ffd3b 100644
--- a/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml
+++ b/src/Wallabag/CoreBundle/Resources/translations/validators.tr.yml
@@ -3,5 +3,5 @@ validator:
3 # password_too_short: 'Password should by at least 8 chars long' 3 # password_too_short: 'Password should by at least 8 chars long'
4 # password_wrong_value: 'Wrong value for your current password' 4 # password_wrong_value: 'Wrong value for your current password'
5 # item_per_page_too_high: 'This will certainly kill the app' 5 # item_per_page_too_high: 'This will certainly kill the app'
6 # rss_limit_too_high: 'This will certainly kill the app' 6 # feed_limit_too_high: 'This will certainly kill the app'
7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.' 7 # quote_length_too_high: 'The quote is too long. It should have {{ limit }} characters or less.'
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
index 93f8ddf8..4ef6ab3c 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig
@@ -94,43 +94,43 @@
94 {{ form_rest(form.config) }} 94 {{ form_rest(form.config) }}
95 </form> 95 </form>
96 96
97 <h2>{{ 'config.tab_menu.rss'|trans }}</h2> 97 <h2>{{ 'config.tab_menu.feed'|trans }}</h2>
98 98
99 {{ form_start(form.rss) }} 99 {{ form_start(form.feed) }}
100 {{ form_errors(form.rss) }} 100 {{ form_errors(form.feed) }}
101 101
102 <div class="row"> 102 <div class="row">
103 {{ 'config.form_rss.description'|trans }} 103 {{ 'config.form_feed.description'|trans }}
104 </div> 104 </div>
105 105
106 <fieldset class="w500p inline"> 106 <fieldset class="w500p inline">
107 <div class="row"> 107 <div class="row">
108 <label>{{ 'config.form_rss.token_label'|trans }}</label> 108 <label>{{ 'config.form_feed.token_label'|trans }}</label>
109 {% if rss.token %} 109 {% if feed.token %}
110 {{ rss.token }} 110 {{ feed.token }}
111 {% else %} 111 {% else %}
112 <em>{{ 'config.form_rss.no_token'|trans }}</em> 112 <em>{{ 'config.form_feed.no_token'|trans }}</em>
113 {% endif %} 113 {% endif %}
114 114
115 <a href="{{ path('generate_token') }}"> 115 <a href="{{ path('generate_token') }}">
116 {% if rss.token %} 116 {% if feed.token %}
117 {{ 'config.form_rss.token_reset'|trans }} 117 {{ 'config.form_feed.token_reset'|trans }}
118 {% else %} 118 {% else %}
119 {{ 'config.form_rss.token_create'|trans }} 119 {{ 'config.form_feed.token_create'|trans }}
120 {% endif %} 120 {% endif %}
121 </a> 121 </a>
122 </div> 122 </div>
123 </fieldset> 123 </fieldset>
124 124
125 {% if rss.token %} 125 {% if feed.token %}
126 <fieldset class="w500p inline"> 126 <fieldset class="w500p inline">
127 <div class="row"> 127 <div class="row">
128 <label>{{ 'config.form_rss.rss_links'|trans }}</label> 128 <label>{{ 'config.form_feed.feed_links'|trans }}</label>
129 <ul> 129 <ul>
130 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li> 130 <li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
131 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li> 131 <li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
132 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li> 132 <li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
133 <li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li> 133 <li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
134 </ul> 134 </ul>
135 </div> 135 </div>
136 </fieldset> 136 </fieldset>
@@ -138,13 +138,13 @@
138 138
139 <fieldset class="w500p inline"> 139 <fieldset class="w500p inline">
140 <div class="row"> 140 <div class="row">
141 {{ form_label(form.rss.rss_limit) }} 141 {{ form_label(form.feed.feed_limit) }}
142 {{ form_errors(form.rss.rss_limit) }} 142 {{ form_errors(form.feed.feed_limit) }}
143 {{ form_widget(form.rss.rss_limit) }} 143 {{ form_widget(form.feed.feed_limit) }}
144 </div> 144 </div>
145 </fieldset> 145 </fieldset>
146 146
147 {{ form_rest(form.rss) }} 147 {{ form_rest(form.feed) }}
148 </form> 148 </form>
149 149
150 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2> 150 <h2>{{ 'config.tab_menu.user_info'|trans }}</h2>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
index fb296c9d..6c5d2601 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
@@ -2,8 +2,8 @@
2 2
3{% block head %} 3{% block head %}
4 {{ parent() }} 4 {{ parent() }}
5 {% if tag is defined and app.user.config.rssToken %} 5 {% if tag is defined and app.user.config.feedToken %}
6 <link rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" /> 6 <link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
7 {% endif %} 7 {% endif %}
8{% endblock %} 8{% endblock %}
9 9
@@ -28,8 +28,8 @@
28 <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div> 28 <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div>
29 <div class="pagination"> 29 <div class="pagination">
30 <a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-24">{% if listMode == 0 %}list{% else %}view_module{% endif %}</i></a> 30 <a href="{{ path('switch_view_mode') }}"><i class="listMode-btn material-icons md-24">{% if listMode == 0 %}list{% else %}view_module{% endif %}</i></a>
31 {% if app.user.config.rssToken %} 31 {% if app.user.config.feedToken %}
32 {% include "@WallabagCore/themes/common/Entry/_rss_link.html.twig" %} 32 {% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
33 {% endif %} 33 {% endif %}
34 {% if currentRoute in ['unread', 'starred', 'archive', 'untagged', 'all'] %} 34 {% if currentRoute in ['unread', 'starred', 'archive', 'untagged', 'all'] %}
35 <a href="{{ path('random_entry', { 'type': currentRoute }) }}"><i class="btn-clickable material-icons md-24 js-random-action">casino</i></a> 35 <a href="{{ path('random_entry', { 'type': currentRoute }) }}"><i class="btn-clickable material-icons md-24 js-random-action">casino</i></a>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
index 35351ab1..ae8403bd 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig
@@ -21,8 +21,8 @@
21 <i class="material-icons">mode_edit</i> 21 <i class="material-icons">mode_edit</i>
22 </a> 22 </a>
23 {% endif %} 23 {% endif %}
24 {% if app.user.config.rssToken %} 24 {% if app.user.config.feedToken %}
25 <a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="right"> 25 <a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right">
26 <i class="material-icons md-24">rss_feed</i> 26 <i class="material-icons md-24">rss_feed</i>
27 </a> 27 </a>
28 {% endif %} 28 {% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_feed_link.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_feed_link.html.twig
new file mode 100644
index 00000000..6df4c160
--- /dev/null
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_feed_link.html.twig
@@ -0,0 +1,11 @@
1{% if tag is defined %}
2 <a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="right"><i class="material-icons md-24">rss_feed</i></a>
3{% elseif currentRoute in ['homepage', 'unread', 'starred', 'archive', 'all'] %}
4 {% set feedRoute = currentRoute %}
5 {% if currentRoute == 'homepage' %}
6 {% set feedRoute = 'unread' %}
7 {% endif %}
8 {% set feedRoute = feedRoute ~ '_feed' %}
9
10 <a rel="alternate" type="application/atom+xml" href="{{ path(feedRoute, {'username': app.user.username, 'token': app.user.config.feedToken}) }}" class="right"><i class="material-icons">rss_feed</i></a>
11{% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_rss_link.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_rss_link.html.twig
deleted file mode 100644
index eb26054c..00000000
--- a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_rss_link.html.twig
+++ /dev/null
@@ -1,11 +0,0 @@
1{% if tag is defined %}
2 <a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="right"><i class="material-icons md-24">rss_feed</i></a>
3{% elseif currentRoute in ['homepage', 'unread', 'starred', 'archive', 'all'] %}
4 {% set rssRoute = currentRoute %}
5 {% if currentRoute == 'homepage' %}
6 {% set rssRoute = 'unread' %}
7 {% endif %}
8 {% set rssRoute = rssRoute ~ '_rss' %}
9
10 <a rel="alternate" type="application/rss+xml" href="{{ path(rssRoute, {'username': app.user.username, 'token': app.user.config.rssToken}) }}" class="right"><i class="material-icons">rss_feed</i></a>
11{% endif %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig
index 25d09ec3..cf6f6571 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig
@@ -1,34 +1,53 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"> 2<feed xmlns="http://www.w3.org/2005/Atom">
3 <channel> 3 {% if type != 'tag' %}
4 <title>wallabag - {{ type }} feed</title> 4 <title>wallabag — {{type}} feed</title>
5 <link>{{ url_html }}</link> 5 <subtitle type="html">Atom feed for {{ type }} entries</subtitle>
6 <link rel="self" href="{{ app.request.uri }}"/> 6 <id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:{{ type }}</id>
7 {% if entries.hasPreviousPage -%} 7 <link rel="alternate" type="text/html" href="{{ url(type) }}"/>
8 <link rel="previous" href="{{ url }}?page={{ entries.previousPage }}"/> 8 {% else %}
9 {% endif -%} 9 <id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:{{ type }}:{{ tag }}</id>
10 {% if entries.hasNextPage -%} 10 <link rel="alternate" type="text/html" href="{{ url('tag_entries', {'slug': tag}) }}"/>
11 <link rel="next" href="{{ url }}?page={{ entries.nextPage }}"/> 11 <title>wallabag — {{type}} {{ tag }} feed</title>
12 {% endif -%} 12 <subtitle type="html">Atom feed for entries tagged with {{ tag }}</subtitle>
13 <link rel="last" href="{{ url }}?page={{ entries.nbPages }}"/> 13 {% endif %}
14 <pubDate>{{ "now"|date(constant('DATE_RSS')) }}</pubDate> 14 {% if entries | length > 0 %}
15 <generator>wallabag</generator> 15 <updated>{{ (entries | first).createdAt | date('c') }}</updated> {# Indicates the last time the feed was modified in a significant way. #}
16 <description>wallabag {{ type }} elements</description> 16 {% endif %}
17 17 <link rel="self" type="application/atom+xml" href="{{ app.request.uri }}"/>
18 {% for entry in entries %} 18 {% if entries.hasPreviousPage %}
19 19 <link rel="previous" href="{{ url }}/{{ entries.previousPage }}"/>
20 <item> 20 {% endif -%}
21 <title><![CDATA[{{ entry.title|e }}]]></title> 21 {% if entries.hasNextPage %}
22 <source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source> 22 <link rel="next" href="{{ url }}/{{ entries.nextPage }}"/>
23 <link>{{ entry.url }}</link> 23 {% endif -%}
24 <guid>{{ entry.url }}</guid> 24 <link rel="last" href="{{ url }}/{{ entries.nbPages }}"/>
25 <pubDate>{{ entry.createdAt|date(constant('DATE_RSS')) }}</pubDate> 25 <generator uri="https://wallabag.org" version="{{ version }}">wallabag</generator>
26 <description> 26 <author>
27 <![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]> 27 <name>{{ user }}</name>
28 </description> 28 </author>
29 </item> 29 <icon>{{ asset('favicon.ico') }}</icon>
30 30 <logo>{{ asset('bundles/wallabagcore/themes/_global/img/logo-square.png') }}</logo>
31 {% for entry in entries %}
32 <entry>
33 <title><![CDATA[{{ entry.title|e }}]]></title>
34 <link rel="alternate" type="text/html"
35 href="{{ url('view', {'id': entry.id}) }}"/>
36 <link rel="via">{{ entry.url }}</link>
37 <id>wallabag:{{ domainName | removeScheme | removeWww }}:{{ user }}:entry:{{ entry.id }}</id>
38 <updated>{{ entry.updatedAt|date('c') }}</updated>
39 <published>{{ entry.createdAt|date('c') }}</published>
40 {% for tag in entry.tags %}
41 <category term="{{ tag.slug }}" label="{{ tag.label }}" />
31 {% endfor %} 42 {% endfor %}
32 43 {% for author in entry.publishedBy %}
33 </channel> 44 <author>
34</rss> 45 <name>{{ author }}</name>
46 </author>
47 {% endfor %}
48 <content type="html" {% if entry.language %}xml:lang="{{ entry.language[:2] }}"{% endif %}>
49 <![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]>
50 </content>
51 </entry>
52 {% endfor %}
53</feed>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig
index 4580813c..521b3eea 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig
@@ -21,7 +21,7 @@
21 <div class="card-action"> 21 <div class="card-action">
22 <ul> 22 <ul>
23 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li> 23 <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li>
24 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li> 24 <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.feed'|trans }}</a></li>
25 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.more'|trans }}</a></li> 25 <li><a href="{{ path('config') }}#set5">{{ 'quickstart.more'|trans }}</a></li>
26 </ul> 26 </ul>
27 </div> 27 </div>
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
index 412c18f4..818fc4e7 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig
@@ -12,7 +12,7 @@
12 <div class="div_tabs col s12"> 12 <div class="div_tabs col s12">
13 <ul class="tabs"> 13 <ul class="tabs">
14 <li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li> 14 <li class="tab col s12 m6 l3"><a class="active" href="#set1">{{ 'config.tab_menu.settings'|trans }}</a></li>
15 <li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.rss'|trans }}</a></li> 15 <li class="tab col s12 m6 l3"><a href="#set2">{{ 'config.tab_menu.feed'|trans }}</a></li>
16 <li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li> 16 <li class="tab col s12 m6 l3"><a href="#set3">{{ 'config.tab_menu.user_info'|trans }}</a></li>
17 <li class="tab col s12 m6 l3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li> 17 <li class="tab col s12 m6 l3"><a href="#set4">{{ 'config.tab_menu.password'|trans }}</a></li>
18 <li class="tab col s12 m6 l3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li> 18 <li class="tab col s12 m6 l3"><a href="#set5">{{ 'config.tab_menu.rules'|trans }}</a></li>
@@ -122,42 +122,42 @@
122 </div> 122 </div>
123 123
124 <div id="set2" class="col s12"> 124 <div id="set2" class="col s12">
125 {{ form_start(form.rss) }} 125 {{ form_start(form.feed) }}
126 {{ form_errors(form.rss) }} 126 {{ form_errors(form.feed) }}
127 127
128 <div class="row"> 128 <div class="row">
129 <div class="input-field col s12"> 129 <div class="input-field col s12">
130 {{ 'config.form_rss.description'|trans }} 130 {{ 'config.form_feed.description'|trans }}
131 </div> 131 </div>
132 </div> 132 </div>
133 133
134 <div class="row"> 134 <div class="row">
135 <div class="col s12"> 135 <div class="col s12">
136 <h6 class="grey-text">{{ 'config.form_rss.token_label'|trans }}</h6> 136 <h6 class="grey-text">{{ 'config.form_feed.token_label'|trans }}</h6>
137 <div> 137 <div>
138 {% if rss.token %} 138 {% if feed.token %}
139 {{ rss.token }} 139 {{ feed.token }}
140 {% else %} 140 {% else %}
141 <em>{{ 'config.form_rss.no_token'|trans }}</em> 141 <em>{{ 'config.form_feed.no_token'|trans }}</em>
142 {% endif %} 142 {% endif %}
143 – <a href="{{ path('generate_token') }}"> 143 – <a href="{{ path('generate_token') }}">
144 {% if rss.token %} 144 {% if feed.token %}
145 {{ 'config.form_rss.token_reset'|trans }} 145 {{ 'config.form_feed.token_reset'|trans }}
146 {% else %} 146 {% else %}
147 {{ 'config.form_rss.token_create'|trans }} 147 {{ 'config.form_feed.token_create'|trans }}
148 {% endif %}</a> 148 {% endif %}</a>
149 </div> 149 </div>
150 </div> 150 </div>
151 </div> 151 </div>
152 {% if rss.token %} 152 {% if feed.token %}
153 <div class="row"> 153 <div class="row">
154 <div class="col s12"> 154 <div class="col s12">
155 <h6 class="grey-text">{{ 'config.form_rss.rss_links'|trans }}</h6> 155 <h6 class="grey-text">{{ 'config.form_feed.feed_links'|trans }}</h6>
156 <ul> 156 <ul>
157 <li><a href="{{ path('unread_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.unread'|trans }}</a></li> 157 <li><a href="{{ path('unread_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.unread'|trans }}</a></li>
158 <li><a href="{{ path('starred_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.starred'|trans }}</a></li> 158 <li><a href="{{ path('starred_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.starred'|trans }}</a></li>
159 <li><a href="{{ path('archive_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.archive'|trans }}</a></li> 159 <li><a href="{{ path('archive_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.archive'|trans }}</a></li>
160 <li><a href="{{ path('all_rss', {'username': rss.username, 'token': rss.token}) }}">{{ 'config.form_rss.rss_link.all'|trans }}</a></li> 160 <li><a href="{{ path('all_feed', {'username': feed.username, 'token': feed.token}) }}">{{ 'config.form_feed.feed_link.all'|trans }}</a></li>
161 </ul> 161 </ul>
162 </div> 162 </div>
163 </div> 163 </div>
@@ -165,14 +165,14 @@
165 165
166 <div class="row"> 166 <div class="row">
167 <div class="input-field col s12"> 167 <div class="input-field col s12">
168 {{ form_label(form.rss.rss_limit) }} 168 {{ form_label(form.feed.feed_limit) }}
169 {{ form_errors(form.rss.rss_limit) }} 169 {{ form_errors(form.feed.feed_limit) }}
170 {{ form_widget(form.rss.rss_limit) }} 170 {{ form_widget(form.feed.feed_limit) }}
171 </div> 171 </div>
172 </div> 172 </div>
173 173
174 {{ form_widget(form.rss.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} 174 {{ form_widget(form.feed.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }}
175 {{ form_rest(form.rss) }} 175 {{ form_rest(form.feed) }}
176 </form> 176 </form>
177 </div> 177 </div>
178 178
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
index 067c8975..476d7403 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
@@ -2,8 +2,8 @@
2 2
3{% block head %} 3{% block head %}
4 {{ parent() }} 4 {{ parent() }}
5 {% if tag is defined and app.user.config.rssToken %} 5 {% if tag is defined and app.user.config.feedToken %}
6 <link rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" /> 6 <link rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" />
7 {% endif %} 7 {% endif %}
8{% endblock %} 8{% endblock %}
9 9
@@ -28,8 +28,8 @@
28 <div class="nb-results"> 28 <div class="nb-results">
29 {{ 'entry.list.number_on_the_page'|transchoice(entries.count) }} 29 {{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}
30 <a href="{{ path('switch_view_mode') }}"><i class="material-icons">{% if listMode == 0 %}view_list{% else %}view_module{% endif %}</i></a> 30 <a href="{{ path('switch_view_mode') }}"><i class="material-icons">{% if listMode == 0 %}view_list{% else %}view_module{% endif %}</i></a>
31 {% if app.user.config.rssToken %} 31 {% if app.user.config.feedToken %}
32 {% include "@WallabagCore/themes/common/Entry/_rss_link.html.twig" %} 32 {% include "@WallabagCore/themes/common/Entry/_feed_link.html.twig" %}
33 {% endif %} 33 {% endif %}
34 </div> 34 </div>
35 {% if entries.getNbPages > 1 %} 35 {% if entries.getNbPages > 1 %}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
index 21e88a9a..79907bbb 100644
--- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
+++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig
@@ -25,8 +25,8 @@
25 <i class="material-icons">mode_edit</i> 25 <i class="material-icons">mode_edit</i>
26 </a> 26 </a>
27 {% endif %} 27 {% endif %}
28 {% if app.user.config.rssToken %} 28 {% if app.user.config.feedToken %}
29 <a rel="alternate" type="application/rss+xml" href="{{ path('tag_rss', {'username': app.user.username, 'token': app.user.config.rssToken, 'slug': tag.slug}) }}" class="card-tag-rss"><i class="material-icons">rss_feed</i></a> 29 <a rel="alternate" type="application/atom+xml" href="{{ path('tag_feed', {'username': app.user.username, 'token': app.user.config.feedToken, 'slug': tag.slug}) }}" class="card-tag-rss"><i class="material-icons">rss_feed</i></a>
30 {% endif %} 30 {% endif %}
31 </li> 31 </li>
32 {% endfor %} 32 {% endfor %}
diff --git a/src/Wallabag/CoreBundle/Tools/Utils.php b/src/Wallabag/CoreBundle/Tools/Utils.php
index e56e251e..b7ad7966 100644
--- a/src/Wallabag/CoreBundle/Tools/Utils.php
+++ b/src/Wallabag/CoreBundle/Tools/Utils.php
@@ -5,7 +5,7 @@ namespace Wallabag\CoreBundle\Tools;
5class Utils 5class Utils
6{ 6{
7 /** 7 /**
8 * Generate a token used for RSS. 8 * Generate a token used for Feeds.
9 * 9 *
10 * @param int $length Length of the token 10 * @param int $length Length of the token
11 * 11 *
diff --git a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php
index 00b1e595..536185d4 100644
--- a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php
+++ b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php
@@ -28,6 +28,7 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
28 { 28 {
29 return [ 29 return [
30 new \Twig_SimpleFilter('removeWww', [$this, 'removeWww']), 30 new \Twig_SimpleFilter('removeWww', [$this, 'removeWww']),
31 new \Twig_SimpleFilter('removeScheme', [$this, 'removeScheme']),
31 new \Twig_SimpleFilter('removeSchemeAndWww', [$this, 'removeSchemeAndWww']), 32 new \Twig_SimpleFilter('removeSchemeAndWww', [$this, 'removeSchemeAndWww']),
32 ]; 33 ];
33 } 34 }
@@ -46,11 +47,14 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
46 return preg_replace('/^www\./i', '', $url); 47 return preg_replace('/^www\./i', '', $url);
47 } 48 }
48 49
50 public function removeScheme($url)
51 {
52 return preg_replace('#^https?://#i', '', $url);
53 }
54
49 public function removeSchemeAndWww($url) 55 public function removeSchemeAndWww($url)
50 { 56 {
51 return $this->removeWww( 57 return $this->removeWww($this->removeScheme($url));
52 preg_replace('@^https?://@i', '', $url)
53 );
54 } 58 }
55 59
56 /** 60 /**
diff --git a/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php b/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php
index 5cabfd35..81954213 100644
--- a/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php
+++ b/src/Wallabag/UserBundle/EventListener/CreateConfigListener.php
@@ -18,19 +18,19 @@ class CreateConfigListener implements EventSubscriberInterface
18 private $em; 18 private $em;
19 private $theme; 19 private $theme;
20 private $itemsOnPage; 20 private $itemsOnPage;
21 private $rssLimit; 21 private $feedLimit;
22 private $language; 22 private $language;
23 private $readingSpeed; 23 private $readingSpeed;
24 private $actionMarkAsRead; 24 private $actionMarkAsRead;
25 private $listMode; 25 private $listMode;
26 private $session; 26 private $session;
27 27
28 public function __construct(EntityManager $em, $theme, $itemsOnPage, $rssLimit, $language, $readingSpeed, $actionMarkAsRead, $listMode, Session $session) 28 public function __construct(EntityManager $em, $theme, $itemsOnPage, $feedLimit, $language, $readingSpeed, $actionMarkAsRead, $listMode, Session $session)
29 { 29 {
30 $this->em = $em; 30 $this->em = $em;
31 $this->theme = $theme; 31 $this->theme = $theme;
32 $this->itemsOnPage = $itemsOnPage; 32 $this->itemsOnPage = $itemsOnPage;
33 $this->rssLimit = $rssLimit; 33 $this->feedLimit = $feedLimit;
34 $this->language = $language; 34 $this->language = $language;
35 $this->readingSpeed = $readingSpeed; 35 $this->readingSpeed = $readingSpeed;
36 $this->actionMarkAsRead = $actionMarkAsRead; 36 $this->actionMarkAsRead = $actionMarkAsRead;
@@ -54,7 +54,7 @@ class CreateConfigListener implements EventSubscriberInterface
54 $config = new Config($event->getUser()); 54 $config = new Config($event->getUser());
55 $config->setTheme($this->theme); 55 $config->setTheme($this->theme);
56 $config->setItemsPerPage($this->itemsOnPage); 56 $config->setItemsPerPage($this->itemsOnPage);
57 $config->setRssLimit($this->rssLimit); 57 $config->setFeedLimit($this->feedLimit);
58 $config->setLanguage($this->session->get('_locale', $this->language)); 58 $config->setLanguage($this->session->get('_locale', $this->language));
59 $config->setReadingSpeed($this->readingSpeed); 59 $config->setReadingSpeed($this->readingSpeed);
60 $config->setActionMarkAsRead($this->actionMarkAsRead); 60 $config->setActionMarkAsRead($this->actionMarkAsRead);
diff --git a/src/Wallabag/UserBundle/Repository/UserRepository.php b/src/Wallabag/UserBundle/Repository/UserRepository.php
index be693d3b..4abd55f1 100644
--- a/src/Wallabag/UserBundle/Repository/UserRepository.php
+++ b/src/Wallabag/UserBundle/Repository/UserRepository.php
@@ -9,18 +9,18 @@ use Wallabag\UserBundle\Entity\User;
9class UserRepository extends EntityRepository 9class UserRepository extends EntityRepository
10{ 10{
11 /** 11 /**
12 * Find a user by its username and rss roken. 12 * Find a user by its username and Feed token.
13 * 13 *
14 * @param string $username 14 * @param string $username
15 * @param string $rssToken 15 * @param string $feedToken
16 * 16 *
17 * @return User|null 17 * @return User|null
18 */ 18 */
19 public function findOneByUsernameAndRsstoken($username, $rssToken) 19 public function findOneByUsernameAndFeedtoken($username, $feedToken)
20 { 20 {
21 return $this->createQueryBuilder('u') 21 return $this->createQueryBuilder('u')
22 ->leftJoin('u.config', 'c') 22 ->leftJoin('u.config', 'c')
23 ->where('c.rssToken = :rss_token')->setParameter('rss_token', $rssToken) 23 ->where('c.feedToken = :feed_token')->setParameter('feed_token', $feedToken)
24 ->andWhere('u.username = :username')->setParameter('username', $username) 24 ->andWhere('u.username = :username')->setParameter('username', $username)
25 ->getQuery() 25 ->getQuery()
26 ->getOneOrNullResult(); 26 ->getOneOrNullResult();
diff --git a/src/Wallabag/UserBundle/Resources/config/services.yml b/src/Wallabag/UserBundle/Resources/config/services.yml
index 72cda3f8..2dcf3011 100644
--- a/src/Wallabag/UserBundle/Resources/config/services.yml
+++ b/src/Wallabag/UserBundle/Resources/config/services.yml
@@ -28,7 +28,7 @@ services:
28 - "@doctrine.orm.entity_manager" 28 - "@doctrine.orm.entity_manager"
29 - "%wallabag_core.theme%" 29 - "%wallabag_core.theme%"
30 - "%wallabag_core.items_on_page%" 30 - "%wallabag_core.items_on_page%"
31 - "%wallabag_core.rss_limit%" 31 - "%wallabag_core.feed_limit%"
32 - "%wallabag_core.language%" 32 - "%wallabag_core.language%"
33 - "%wallabag_core.reading_speed%" 33 - "%wallabag_core.reading_speed%"
34 - "%wallabag_core.action_mark_as_read%" 34 - "%wallabag_core.action_mark_as_read%"
diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
index 1090a686..d8478ce3 100644
--- a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
@@ -33,7 +33,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
33 $this->assertCount(1, $crawler->filter('button[id=config_save]')); 33 $this->assertCount(1, $crawler->filter('button[id=config_save]'));
34 $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]')); 34 $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]'));
35 $this->assertCount(1, $crawler->filter('button[id=update_user_save]')); 35 $this->assertCount(1, $crawler->filter('button[id=update_user_save]'));
36 $this->assertCount(1, $crawler->filter('button[id=rss_config_save]')); 36 $this->assertCount(1, $crawler->filter('button[id=feed_config_save]'));
37 } 37 }
38 38
39 public function testUpdate() 39 public function testUpdate()
@@ -297,7 +297,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
297 $this->assertContains('flashes.config.notice.user_updated', $alert[0]); 297 $this->assertContains('flashes.config.notice.user_updated', $alert[0]);
298 } 298 }
299 299
300 public function testRssUpdateResetToken() 300 public function testFeedUpdateResetToken()
301 { 301 {
302 $this->logInAs('admin'); 302 $this->logInAs('admin');
303 $client = $this->getClient(); 303 $client = $this->getClient();
@@ -313,7 +313,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
313 } 313 }
314 314
315 $config = $user->getConfig(); 315 $config = $user->getConfig();
316 $config->setRssToken(null); 316 $config->setFeedToken(null);
317 $em->persist($config); 317 $em->persist($config);
318 $em->flush(); 318 $em->flush();
319 319
@@ -322,7 +322,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
322 $this->assertSame(200, $client->getResponse()->getStatusCode()); 322 $this->assertSame(200, $client->getResponse()->getStatusCode());
323 323
324 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); 324 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
325 $this->assertContains('config.form_rss.no_token', $body[0]); 325 $this->assertContains('config.form_feed.no_token', $body[0]);
326 326
327 $client->request('GET', '/generate-token'); 327 $client->request('GET', '/generate-token');
328 $this->assertSame(302, $client->getResponse()->getStatusCode()); 328 $this->assertSame(302, $client->getResponse()->getStatusCode());
@@ -330,7 +330,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
330 $crawler = $client->followRedirect(); 330 $crawler = $client->followRedirect();
331 331
332 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); 332 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
333 $this->assertNotContains('config.form_rss.no_token', $body[0]); 333 $this->assertNotContains('config.form_feed.no_token', $body[0]);
334 } 334 }
335 335
336 public function testGenerateTokenAjax() 336 public function testGenerateTokenAjax()
@@ -351,7 +351,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
351 $this->assertArrayHasKey('token', $content); 351 $this->assertArrayHasKey('token', $content);
352 } 352 }
353 353
354 public function testRssUpdate() 354 public function testFeedUpdate()
355 { 355 {
356 $this->logInAs('admin'); 356 $this->logInAs('admin');
357 $client = $this->getClient(); 357 $client = $this->getClient();
@@ -360,10 +360,10 @@ class ConfigControllerTest extends WallabagCoreTestCase
360 360
361 $this->assertSame(200, $client->getResponse()->getStatusCode()); 361 $this->assertSame(200, $client->getResponse()->getStatusCode());
362 362
363 $form = $crawler->filter('button[id=rss_config_save]')->form(); 363 $form = $crawler->filter('button[id=feed_config_save]')->form();
364 364
365 $data = [ 365 $data = [
366 'rss_config[rss_limit]' => 12, 366 'feed_config[feed_limit]' => 12,
367 ]; 367 ];
368 368
369 $client->submit($form, $data); 369 $client->submit($form, $data);
@@ -372,31 +372,31 @@ class ConfigControllerTest extends WallabagCoreTestCase
372 372
373 $crawler = $client->followRedirect(); 373 $crawler = $client->followRedirect();
374 374
375 $this->assertContains('flashes.config.notice.rss_updated', $crawler->filter('body')->extract(['_text'])[0]); 375 $this->assertContains('flashes.config.notice.feed_updated', $crawler->filter('body')->extract(['_text'])[0]);
376 } 376 }
377 377
378 public function dataForRssFailed() 378 public function dataForFeedFailed()
379 { 379 {
380 return [ 380 return [
381 [ 381 [
382 [ 382 [
383 'rss_config[rss_limit]' => 0, 383 'feed_config[feed_limit]' => 0,
384 ], 384 ],
385 'This value should be 1 or more.', 385 'This value should be 1 or more.',
386 ], 386 ],
387 [ 387 [
388 [ 388 [
389 'rss_config[rss_limit]' => 1000000000000, 389 'feed_config[feed_limit]' => 1000000000000,
390 ], 390 ],
391 'validator.rss_limit_too_high', 391 'validator.feed_limit_too_high',
392 ], 392 ],
393 ]; 393 ];
394 } 394 }
395 395
396 /** 396 /**
397 * @dataProvider dataForRssFailed 397 * @dataProvider dataForFeedFailed
398 */ 398 */
399 public function testRssFailed($data, $expectedMessage) 399 public function testFeedFailed($data, $expectedMessage)
400 { 400 {
401 $this->logInAs('admin'); 401 $this->logInAs('admin');
402 $client = $this->getClient(); 402 $client = $this->getClient();
@@ -405,7 +405,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
405 405
406 $this->assertSame(200, $client->getResponse()->getStatusCode()); 406 $this->assertSame(200, $client->getResponse()->getStatusCode());
407 407
408 $form = $crawler->filter('button[id=rss_config_save]')->form(); 408 $form = $crawler->filter('button[id=feed_config_save]')->form();
409 409
410 $crawler = $client->submit($form, $data); 410 $crawler = $client->submit($form, $data);
411 411
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
index 28291b5a..caa8929d 100644
--- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
@@ -166,7 +166,7 @@ class EntryControllerTest extends WallabagCoreTestCase
166 $this->assertSame($this->url, $content->getUrl()); 166 $this->assertSame($this->url, $content->getUrl());
167 $this->assertContains('Google', $content->getTitle()); 167 $this->assertContains('Google', $content->getTitle());
168 $this->assertSame('fr', $content->getLanguage()); 168 $this->assertSame('fr', $content->getLanguage());
169 $this->assertSame('2016-04-07 19:01:35', $content->getPublishedAt()->format('Y-m-d H:i:s')); 169 $this->assertSame('2015-03-28 11:43:19', $content->getPublishedAt()->format('Y-m-d H:i:s'));
170 $this->assertArrayHasKey('x-frame-options', $content->getHeaders()); 170 $this->assertArrayHasKey('x-frame-options', $content->getHeaders());
171 $client->getContainer()->get('craue_config')->set('store_article_headers', 0); 171 $client->getContainer()->get('craue_config')->set('store_article_headers', 0);
172 } 172 }
diff --git a/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php b/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php
new file mode 100644
index 00000000..d52d7bb8
--- /dev/null
+++ b/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php
@@ -0,0 +1,261 @@
1<?php
2
3namespace Tests\Wallabag\CoreBundle\Controller;
4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6
7class FeedControllerTest extends WallabagCoreTestCase
8{
9 public function validateDom($xml, $type, $nb = null, $tagValue = null)
10 {
11 $doc = new \DOMDocument();
12 $doc->loadXML($xml);
13
14 $xpath = new \DOMXPath($doc);
15 $xpath->registerNamespace('a', 'http://www.w3.org/2005/Atom');
16
17 if (null === $nb) {
18 $this->assertGreaterThan(0, $xpath->query('//a:entry')->length);
19 } else {
20 $this->assertSame($nb, $xpath->query('//a:entry')->length);
21 }
22
23 $this->assertSame(1, $xpath->query('/a:feed')->length);
24
25 $this->assertSame(1, $xpath->query('/a:feed/a:title')->length);
26 $this->assertContains('favicon.ico', $xpath->query('/a:feed/a:icon')->item(0)->nodeValue);
27 $this->assertContains('logo-square.png', $xpath->query('/a:feed/a:logo')->item(0)->nodeValue);
28
29 $this->assertSame(1, $xpath->query('/a:feed/a:updated')->length);
30
31 $this->assertSame(1, $xpath->query('/a:feed/a:generator')->length);
32 $this->assertSame('wallabag', $xpath->query('/a:feed/a:generator')->item(0)->nodeValue);
33 $this->assertSame('admin', $xpath->query('/a:feed/a:author/a:name')->item(0)->nodeValue);
34
35 $this->assertSame(1, $xpath->query('/a:feed/a:subtitle')->length);
36 if (null !== $tagValue && 0 === strpos($type, 'tag')) {
37 $this->assertSame('wallabag — ' . $type . ' ' . $tagValue . ' feed', $xpath->query('/a:feed/a:title')->item(0)->nodeValue);
38 $this->assertSame('Atom feed for entries tagged with ' . $tagValue, $xpath->query('/a:feed/a:subtitle')->item(0)->nodeValue);
39 } else {
40 $this->assertSame('wallabag — ' . $type . ' feed', $xpath->query('/a:feed/a:title')->item(0)->nodeValue);
41 $this->assertSame('Atom feed for ' . $type . ' entries', $xpath->query('/a:feed/a:subtitle')->item(0)->nodeValue);
42 }
43
44 $this->assertSame(1, $xpath->query('/a:feed/a:link[@rel="self"]')->length);
45 $this->assertContains($type, $xpath->query('/a:feed/a:link[@rel="self"]')->item(0)->getAttribute('href'));
46
47 $this->assertSame(1, $xpath->query('/a:feed/a:link[@rel="last"]')->length);
48
49 foreach ($xpath->query('//a:entry') as $item) {
50 $this->assertSame(1, $xpath->query('a:title', $item)->length);
51 $this->assertSame(1, $xpath->query('a:link[@rel="via"]', $item)->length);
52 $this->assertSame(1, $xpath->query('a:link[@rel="alternate"]', $item)->length);
53 $this->assertSame(1, $xpath->query('a:id', $item)->length);
54 $this->assertSame(1, $xpath->query('a:published', $item)->length);
55 $this->assertSame(1, $xpath->query('a:content', $item)->length);
56 }
57 }
58
59 public function dataForBadUrl()
60 {
61 return [
62 [
63 '/feed/admin/YZIOAUZIAO/unread',
64 ],
65 [
66 '/feed/wallace/YZIOAUZIAO/starred',
67 ],
68 [
69 '/feed/wallace/YZIOAUZIAO/archives',
70 ],
71 [
72 '/feed/wallace/YZIOAUZIAO/all',
73 ],
74 ];
75 }
76
77 /**
78 * @dataProvider dataForBadUrl
79 */
80 public function testBadUrl($url)
81 {
82 $client = $this->getClient();
83
84 $client->request('GET', $url);
85
86 $this->assertSame(404, $client->getResponse()->getStatusCode());
87 }
88
89 public function testUnread()
90 {
91 $client = $this->getClient();
92 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
93 $user = $em
94 ->getRepository('WallabagUserBundle:User')
95 ->findOneByUsername('admin');
96
97 $config = $user->getConfig();
98 $config->setFeedToken('SUPERTOKEN');
99 $config->setFeedLimit(2);
100 $em->persist($config);
101 $em->flush();
102
103 $client->request('GET', '/feed/admin/SUPERTOKEN/unread');
104
105 $this->assertSame(200, $client->getResponse()->getStatusCode());
106
107 $this->validateDom($client->getResponse()->getContent(), 'unread', 2);
108 }
109
110 public function testStarred()
111 {
112 $client = $this->getClient();
113 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
114 $user = $em
115 ->getRepository('WallabagUserBundle:User')
116 ->findOneByUsername('admin');
117
118 $config = $user->getConfig();
119 $config->setFeedToken('SUPERTOKEN');
120 $config->setFeedLimit(1);
121 $em->persist($config);
122 $em->flush();
123
124 $client = $this->getClient();
125 $client->request('GET', '/feed/admin/SUPERTOKEN/starred');
126
127 $this->assertSame(200, $client->getResponse()->getStatusCode(), 1);
128
129 $this->validateDom($client->getResponse()->getContent(), 'starred');
130 }
131
132 public function testArchives()
133 {
134 $client = $this->getClient();
135 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
136 $user = $em
137 ->getRepository('WallabagUserBundle:User')
138 ->findOneByUsername('admin');
139
140 $config = $user->getConfig();
141 $config->setFeedToken('SUPERTOKEN');
142 $config->setFeedLimit(null);
143 $em->persist($config);
144 $em->flush();
145
146 $client = $this->getClient();
147 $client->request('GET', '/feed/admin/SUPERTOKEN/archive');
148
149 $this->assertSame(200, $client->getResponse()->getStatusCode());
150
151 $this->validateDom($client->getResponse()->getContent(), 'archive');
152 }
153
154 public function testAll()
155 {
156 $client = $this->getClient();
157 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
158 $user = $em
159 ->getRepository('WallabagUserBundle:User')
160 ->findOneByUsername('admin');
161
162 $config = $user->getConfig();
163 $config->setFeedToken('SUPERTOKEN');
164 $config->setFeedLimit(null);
165 $em->persist($config);
166 $em->flush();
167
168 $client = $this->getClient();
169 $client->request('GET', '/feed/admin/SUPERTOKEN/all');
170
171 $this->assertSame(200, $client->getResponse()->getStatusCode());
172
173 $this->validateDom($client->getResponse()->getContent(), 'all');
174 }
175
176 public function testPagination()
177 {
178 $client = $this->getClient();
179 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
180 $user = $em
181 ->getRepository('WallabagUserBundle:User')
182 ->findOneByUsername('admin');
183
184 $config = $user->getConfig();
185 $config->setFeedToken('SUPERTOKEN');
186 $config->setFeedLimit(1);
187 $em->persist($config);
188 $em->flush();
189
190 $client = $this->getClient();
191
192 $client->request('GET', '/feed/admin/SUPERTOKEN/unread');
193 $this->assertSame(200, $client->getResponse()->getStatusCode());
194 $this->validateDom($client->getResponse()->getContent(), 'unread');
195
196 $client->request('GET', '/feed/admin/SUPERTOKEN/unread/2');
197 $this->assertSame(200, $client->getResponse()->getStatusCode());
198 $this->validateDom($client->getResponse()->getContent(), 'unread');
199
200 $client->request('GET', '/feed/admin/SUPERTOKEN/unread/3000');
201 $this->assertSame(302, $client->getResponse()->getStatusCode());
202 }
203
204 public function testTags()
205 {
206 $client = $this->getClient();
207 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
208 $user = $em
209 ->getRepository('WallabagUserBundle:User')
210 ->findOneByUsername('admin');
211
212 $config = $user->getConfig();
213 $config->setFeedToken('SUPERTOKEN');
214 $config->setFeedLimit(null);
215 $em->persist($config);
216 $em->flush();
217
218 $client = $this->getClient();
219 $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo');
220
221 $this->assertSame(200, $client->getResponse()->getStatusCode());
222
223 $this->validateDom($client->getResponse()->getContent(), 'tag', 2, 'foo');
224
225 $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo/3000');
226 $this->assertSame(302, $client->getResponse()->getStatusCode());
227 }
228
229 public function dataForRedirect()
230 {
231 return [
232 [
233 '/admin/YZIOAUZIAO/unread.xml',
234 ],
235 [
236 '/admin/YZIOAUZIAO/starred.xml',
237 ],
238 [
239 '/admin/YZIOAUZIAO/archive.xml',
240 ],
241 [
242 '/admin/YZIOAUZIAO/all.xml',
243 ],
244 [
245 '/admin/YZIOAUZIAO/tags/foo.xml',
246 ],
247 ];
248 }
249
250 /**
251 * @dataProvider dataForRedirect
252 */
253 public function testRedirectFromRssToAtom($url)
254 {
255 $client = $this->getClient();
256
257 $client->request('GET', $url);
258
259 $this->assertSame(301, $client->getResponse()->getStatusCode());
260 }
261}
diff --git a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php
deleted file mode 100644
index afa90621..00000000
--- a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php
+++ /dev/null
@@ -1,221 +0,0 @@
1<?php
2
3namespace Tests\Wallabag\CoreBundle\Controller;
4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6
7class RssControllerTest extends WallabagCoreTestCase
8{
9 public function validateDom($xml, $type, $urlPagination, $nb = null)
10 {
11 $doc = new \DOMDocument();
12 $doc->loadXML($xml);
13
14 $xpath = new \DOMXPath($doc);
15
16 if (null === $nb) {
17 $this->assertGreaterThan(0, $xpath->query('//item')->length);
18 } else {
19 $this->assertSame($nb, $xpath->query('//item')->length);
20 }
21
22 $this->assertSame(1, $xpath->query('/rss')->length);
23 $this->assertSame(1, $xpath->query('/rss/channel')->length);
24
25 $this->assertSame(1, $xpath->query('/rss/channel/title')->length);
26 $this->assertSame('wallabag - ' . $type . ' feed', $xpath->query('/rss/channel/title')->item(0)->nodeValue);
27
28 $this->assertSame(1, $xpath->query('/rss/channel/pubDate')->length);
29
30 $this->assertSame(1, $xpath->query('/rss/channel/generator')->length);
31 $this->assertSame('wallabag', $xpath->query('/rss/channel/generator')->item(0)->nodeValue);
32
33 $this->assertSame(1, $xpath->query('/rss/channel/description')->length);
34 $this->assertSame('wallabag ' . $type . ' elements', $xpath->query('/rss/channel/description')->item(0)->nodeValue);
35
36 $this->assertSame(1, $xpath->query('/rss/channel/link[@rel="self"]')->length);
37 $this->assertContains($urlPagination . '.xml', $xpath->query('/rss/channel/link[@rel="self"]')->item(0)->getAttribute('href'));
38
39 $this->assertSame(1, $xpath->query('/rss/channel/link[@rel="last"]')->length);
40 $this->assertContains($urlPagination . '.xml?page=', $xpath->query('/rss/channel/link[@rel="last"]')->item(0)->getAttribute('href'));
41
42 foreach ($xpath->query('//item') as $item) {
43 $this->assertSame(1, $xpath->query('title', $item)->length);
44 $this->assertSame(1, $xpath->query('source', $item)->length);
45 $this->assertSame(1, $xpath->query('link', $item)->length);
46 $this->assertSame(1, $xpath->query('guid', $item)->length);
47 $this->assertSame(1, $xpath->query('pubDate', $item)->length);
48 $this->assertSame(1, $xpath->query('description', $item)->length);
49 }
50 }
51
52 public function dataForBadUrl()
53 {
54 return [
55 [
56 '/admin/YZIOAUZIAO/unread.xml',
57 ],
58 [
59 '/wallace/YZIOAUZIAO/starred.xml',
60 ],
61 [
62 '/wallace/YZIOAUZIAO/archives.xml',
63 ],
64 [
65 '/wallace/YZIOAUZIAO/all.xml',
66 ],
67 ];
68 }
69
70 /**
71 * @dataProvider dataForBadUrl
72 */
73 public function testBadUrl($url)
74 {
75 $client = $this->getClient();
76
77 $client->request('GET', $url);
78
79 $this->assertSame(404, $client->getResponse()->getStatusCode());
80 }
81
82 public function testUnread()
83 {
84 $client = $this->getClient();
85 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
86 $user = $em
87 ->getRepository('WallabagUserBundle:User')
88 ->findOneByUsername('admin');
89
90 $config = $user->getConfig();
91 $config->setRssToken('SUPERTOKEN');
92 $config->setRssLimit(2);
93 $em->persist($config);
94 $em->flush();
95
96 $client->request('GET', '/admin/SUPERTOKEN/unread.xml');
97
98 $this->assertSame(200, $client->getResponse()->getStatusCode());
99
100 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread', 2);
101 }
102
103 public function testStarred()
104 {
105 $client = $this->getClient();
106 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
107 $user = $em
108 ->getRepository('WallabagUserBundle:User')
109 ->findOneByUsername('admin');
110
111 $config = $user->getConfig();
112 $config->setRssToken('SUPERTOKEN');
113 $config->setRssLimit(1);
114 $em->persist($config);
115 $em->flush();
116
117 $client = $this->getClient();
118 $client->request('GET', '/admin/SUPERTOKEN/starred.xml');
119
120 $this->assertSame(200, $client->getResponse()->getStatusCode(), 1);
121
122 $this->validateDom($client->getResponse()->getContent(), 'starred', 'starred');
123 }
124
125 public function testArchives()
126 {
127 $client = $this->getClient();
128 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
129 $user = $em
130 ->getRepository('WallabagUserBundle:User')
131 ->findOneByUsername('admin');
132
133 $config = $user->getConfig();
134 $config->setRssToken('SUPERTOKEN');
135 $config->setRssLimit(null);
136 $em->persist($config);
137 $em->flush();
138
139 $client = $this->getClient();
140 $client->request('GET', '/admin/SUPERTOKEN/archive.xml');
141
142 $this->assertSame(200, $client->getResponse()->getStatusCode());
143
144 $this->validateDom($client->getResponse()->getContent(), 'archive', 'archive');
145 }
146
147 public function testAll()
148 {
149 $client = $this->getClient();
150 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
151 $user = $em
152 ->getRepository('WallabagUserBundle:User')
153 ->findOneByUsername('admin');
154
155 $config = $user->getConfig();
156 $config->setRssToken('SUPERTOKEN');
157 $config->setRssLimit(null);
158 $em->persist($config);
159 $em->flush();
160
161 $client = $this->getClient();
162 $client->request('GET', '/admin/SUPERTOKEN/all.xml');
163
164 $this->assertSame(200, $client->getResponse()->getStatusCode());
165
166 $this->validateDom($client->getResponse()->getContent(), 'all', 'all');
167 }
168
169 public function testPagination()
170 {
171 $client = $this->getClient();
172 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
173 $user = $em
174 ->getRepository('WallabagUserBundle:User')
175 ->findOneByUsername('admin');
176
177 $config = $user->getConfig();
178 $config->setRssToken('SUPERTOKEN');
179 $config->setRssLimit(1);
180 $em->persist($config);
181 $em->flush();
182
183 $client = $this->getClient();
184
185 $client->request('GET', '/admin/SUPERTOKEN/unread.xml');
186 $this->assertSame(200, $client->getResponse()->getStatusCode());
187 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread');
188
189 $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=2');
190 $this->assertSame(200, $client->getResponse()->getStatusCode());
191 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread');
192
193 $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=3000');
194 $this->assertSame(302, $client->getResponse()->getStatusCode());
195 }
196
197 public function testTags()
198 {
199 $client = $this->getClient();
200 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
201 $user = $em
202 ->getRepository('WallabagUserBundle:User')
203 ->findOneByUsername('admin');
204
205 $config = $user->getConfig();
206 $config->setRssToken('SUPERTOKEN');
207 $config->setRssLimit(null);
208 $em->persist($config);
209 $em->flush();
210
211 $client = $this->getClient();
212 $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml');
213
214 $this->assertSame(200, $client->getResponse()->getStatusCode());
215
216 $this->validateDom($client->getResponse()->getContent(), 'tag (foo)', 'tags/foo');
217
218 $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml?page=3000');
219 $this->assertSame(302, $client->getResponse()->getStatusCode());
220 }
221}
diff --git a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
index b03c7550..93019b1f 100644
--- a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
@@ -13,7 +13,7 @@ class SecurityControllerTest extends WallabagCoreTestCase
13 $client->followRedirects(); 13 $client->followRedirects();
14 14
15 $crawler = $client->request('GET', '/config'); 15 $crawler = $client->request('GET', '/config');
16 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(['_text'])[0]); 16 $this->assertContains('config.form_feed.description', $crawler->filter('body')->extract(['_text'])[0]);
17 } 17 }
18 18
19 public function testLoginWithout2Factor() 19 public function testLoginWithout2Factor()
@@ -23,7 +23,7 @@ class SecurityControllerTest extends WallabagCoreTestCase
23 $client->followRedirects(); 23 $client->followRedirects();
24 24
25 $crawler = $client->request('GET', '/config'); 25 $crawler = $client->request('GET', '/config');
26 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(['_text'])[0]); 26 $this->assertContains('config.form_feed.description', $crawler->filter('body')->extract(['_text'])[0]);
27 } 27 }
28 28
29 public function testLoginWith2FactorEmail() 29 public function testLoginWith2FactorEmail()
diff --git a/tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php b/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php
index 800af5c9..92fe38cd 100644
--- a/tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php
+++ b/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php
@@ -5,15 +5,15 @@ namespace Tests\Wallabag\CoreBundle\ParamConverter;
5use PHPUnit\Framework\TestCase; 5use PHPUnit\Framework\TestCase;
6use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; 6use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
7use Symfony\Component\HttpFoundation\Request; 7use Symfony\Component\HttpFoundation\Request;
8use Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter; 8use Wallabag\CoreBundle\ParamConverter\UsernameFeedTokenConverter;
9use Wallabag\UserBundle\Entity\User; 9use Wallabag\UserBundle\Entity\User;
10 10
11class UsernameRssTokenConverterTest extends TestCase 11class UsernameFeedTokenConverterTest extends TestCase
12{ 12{
13 public function testSupportsWithNoRegistry() 13 public function testSupportsWithNoRegistry()
14 { 14 {
15 $params = new ParamConverter([]); 15 $params = new ParamConverter([]);
16 $converter = new UsernameRssTokenConverter(); 16 $converter = new UsernameFeedTokenConverter();
17 17
18 $this->assertFalse($converter->supports($params)); 18 $this->assertFalse($converter->supports($params));
19 } 19 }
@@ -29,7 +29,7 @@ class UsernameRssTokenConverterTest extends TestCase
29 ->will($this->returnValue([])); 29 ->will($this->returnValue([]));
30 30
31 $params = new ParamConverter([]); 31 $params = new ParamConverter([]);
32 $converter = new UsernameRssTokenConverter($registry); 32 $converter = new UsernameFeedTokenConverter($registry);
33 33
34 $this->assertFalse($converter->supports($params)); 34 $this->assertFalse($converter->supports($params));
35 } 35 }
@@ -45,7 +45,7 @@ class UsernameRssTokenConverterTest extends TestCase
45 ->will($this->returnValue(['default' => null])); 45 ->will($this->returnValue(['default' => null]));
46 46
47 $params = new ParamConverter([]); 47 $params = new ParamConverter([]);
48 $converter = new UsernameRssTokenConverter($registry); 48 $converter = new UsernameFeedTokenConverter($registry);
49 49
50 $this->assertFalse($converter->supports($params)); 50 $this->assertFalse($converter->supports($params));
51 } 51 }
@@ -83,7 +83,7 @@ class UsernameRssTokenConverterTest extends TestCase
83 ->will($this->returnValue($em)); 83 ->will($this->returnValue($em));
84 84
85 $params = new ParamConverter(['class' => 'superclass']); 85 $params = new ParamConverter(['class' => 'superclass']);
86 $converter = new UsernameRssTokenConverter($registry); 86 $converter = new UsernameFeedTokenConverter($registry);
87 87
88 $this->assertFalse($converter->supports($params)); 88 $this->assertFalse($converter->supports($params));
89 } 89 }
@@ -121,7 +121,7 @@ class UsernameRssTokenConverterTest extends TestCase
121 ->will($this->returnValue($em)); 121 ->will($this->returnValue($em));
122 122
123 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']); 123 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']);
124 $converter = new UsernameRssTokenConverter($registry); 124 $converter = new UsernameFeedTokenConverter($registry);
125 125
126 $this->assertTrue($converter->supports($params)); 126 $this->assertTrue($converter->supports($params));
127 } 127 }
@@ -129,7 +129,7 @@ class UsernameRssTokenConverterTest extends TestCase
129 public function testApplyEmptyRequest() 129 public function testApplyEmptyRequest()
130 { 130 {
131 $params = new ParamConverter([]); 131 $params = new ParamConverter([]);
132 $converter = new UsernameRssTokenConverter(); 132 $converter = new UsernameFeedTokenConverter();
133 133
134 $res = $converter->apply(new Request(), $params); 134 $res = $converter->apply(new Request(), $params);
135 135
@@ -147,7 +147,7 @@ class UsernameRssTokenConverterTest extends TestCase
147 ->getMock(); 147 ->getMock();
148 148
149 $repo->expects($this->once()) 149 $repo->expects($this->once())
150 ->method('findOneByUsernameAndRsstoken') 150 ->method('findOneByUsernameAndFeedToken')
151 ->with('test', 'test') 151 ->with('test', 'test')
152 ->will($this->returnValue(null)); 152 ->will($this->returnValue(null));
153 153
@@ -170,7 +170,7 @@ class UsernameRssTokenConverterTest extends TestCase
170 ->will($this->returnValue($em)); 170 ->will($this->returnValue($em));
171 171
172 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']); 172 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']);
173 $converter = new UsernameRssTokenConverter($registry); 173 $converter = new UsernameFeedTokenConverter($registry);
174 $request = new Request([], [], ['username' => 'test', 'token' => 'test']); 174 $request = new Request([], [], ['username' => 'test', 'token' => 'test']);
175 175
176 $converter->apply($request, $params); 176 $converter->apply($request, $params);
@@ -185,7 +185,7 @@ class UsernameRssTokenConverterTest extends TestCase
185 ->getMock(); 185 ->getMock();
186 186
187 $repo->expects($this->once()) 187 $repo->expects($this->once())
188 ->method('findOneByUsernameAndRsstoken') 188 ->method('findOneByUsernameAndFeedtoken')
189 ->with('test', 'test') 189 ->with('test', 'test')
190 ->will($this->returnValue($user)); 190 ->will($this->returnValue($user));
191 191
@@ -208,7 +208,7 @@ class UsernameRssTokenConverterTest extends TestCase
208 ->will($this->returnValue($em)); 208 ->will($this->returnValue($em));
209 209
210 $params = new ParamConverter(['class' => 'WallabagUserBundle:User', 'name' => 'user']); 210 $params = new ParamConverter(['class' => 'WallabagUserBundle:User', 'name' => 'user']);
211 $converter = new UsernameRssTokenConverter($registry); 211 $converter = new UsernameFeedTokenConverter($registry);
212 $request = new Request([], [], ['username' => 'test', 'token' => 'test']); 212 $request = new Request([], [], ['username' => 'test', 'token' => 'test']);
213 213
214 $converter->apply($request, $params); 214 $converter->apply($request, $params);
diff --git a/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php b/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
index bb92f745..39fcec16 100644
--- a/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
+++ b/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
@@ -32,6 +32,31 @@ class WallabagExtensionTest extends TestCase
32 $this->assertSame('gist.github.com', $extension->removeWww('gist.github.com')); 32 $this->assertSame('gist.github.com', $extension->removeWww('gist.github.com'));
33 } 33 }
34 34
35 public function testRemoveScheme()
36 {
37 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository')
38 ->disableOriginalConstructor()
39 ->getMock();
40
41 $tagRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\TagRepository')
42 ->disableOriginalConstructor()
43 ->getMock();
44
45 $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')
46 ->disableOriginalConstructor()
47 ->getMock();
48
49 $translator = $this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')
50 ->disableOriginalConstructor()
51 ->getMock();
52
53 $extension = new WallabagExtension($entryRepository, $tagRepository, $tokenStorage, 0, $translator);
54
55 $this->assertSame('lemonde.fr', $extension->removeScheme('lemonde.fr'));
56 $this->assertSame('gist.github.com', $extension->removeScheme('gist.github.com'));
57 $this->assertSame('gist.github.com', $extension->removeScheme('https://gist.github.com'));
58 }
59
35 public function testRemoveSchemeAndWww() 60 public function testRemoveSchemeAndWww()
36 { 61 {
37 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') 62 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository')
diff --git a/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php b/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
index c13bfbea..fd32f380 100644
--- a/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
+++ b/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
@@ -62,7 +62,7 @@ class CreateConfigListenerTest extends TestCase
62 $config = new Config($user); 62 $config = new Config($user);
63 $config->setTheme('baggy'); 63 $config->setTheme('baggy');
64 $config->setItemsPerPage(20); 64 $config->setItemsPerPage(20);
65 $config->setRssLimit(50); 65 $config->setFeedLimit(50);
66 $config->setLanguage('fr'); 66 $config->setLanguage('fr');
67 $config->setReadingSpeed(1); 67 $config->setReadingSpeed(1);
68 68