From 25203e5081c8da21869db1d16610f83f888249b5 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 12:33:58 +0200 Subject: User existing service instead of getDoctrine --- .../CoreBundle/Command/CleanDuplicatesCommand.php | 6 +++--- src/Wallabag/CoreBundle/Command/ExportCommand.php | 5 ++--- src/Wallabag/CoreBundle/Command/ShowUserCommand.php | 2 +- src/Wallabag/CoreBundle/Command/TagAllCommand.php | 2 +- .../CoreBundle/Controller/ConfigController.php | 21 +++++++-------------- .../CoreBundle/Controller/ExportController.php | 13 +++++++------ .../CoreBundle/Controller/RssController.php | 2 +- .../CoreBundle/Controller/TagController.php | 18 ++++++++++-------- 8 files changed, 32 insertions(+), 37 deletions(-) diff --git a/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php b/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php index 65f35d8e..89ae7998 100644 --- a/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php +++ b/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php @@ -46,7 +46,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand return 1; } } else { - $users = $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findAll(); + $users = $this->get('wallabag_user.user_repository')->findAll(); $output->writeln(sprintf('Cleaning through %d user accounts', count($users))); @@ -66,7 +66,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand private function cleanDuplicates(User $user) { $em = $this->getContainer()->get('doctrine.orm.entity_manager'); - $repo = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry'); + $repo = $this->get('wallabag_core.entry_repository'); $entries = $repo->getAllEntriesIdAndUrl($user->getId()); @@ -109,7 +109,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($username); + return $this->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Command/ExportCommand.php b/src/Wallabag/CoreBundle/Command/ExportCommand.php index e3d3b399..e4977e11 100644 --- a/src/Wallabag/CoreBundle/Command/ExportCommand.php +++ b/src/Wallabag/CoreBundle/Command/ExportCommand.php @@ -32,15 +32,14 @@ class ExportCommand extends ContainerAwareCommand protected function execute(InputInterface $input, OutputInterface $output) { try { - $user = $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($input->getArgument('username')); + $user = $this->get('wallabag_user.user_repository')->findOneByUserName($input->getArgument('username')); } catch (NoResultException $e) { $output->writeln(sprintf('User "%s" not found.', $input->getArgument('username'))); return 1; } - $entries = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') + $entries = $this->get('wallabag_core.entry_repository') ->getBuilderForAllByUser($user->getId()) ->getQuery() ->getResult(); diff --git a/src/Wallabag/CoreBundle/Command/ShowUserCommand.php b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php index 0eeaabc4..90a7e03f 100644 --- a/src/Wallabag/CoreBundle/Command/ShowUserCommand.php +++ b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php @@ -67,7 +67,7 @@ class ShowUserCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($username); + return $this->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Command/TagAllCommand.php b/src/Wallabag/CoreBundle/Command/TagAllCommand.php index 3f9bb04d..5a6dc04e 100644 --- a/src/Wallabag/CoreBundle/Command/TagAllCommand.php +++ b/src/Wallabag/CoreBundle/Command/TagAllCommand.php @@ -59,7 +59,7 @@ class TagAllCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->getDoctrine()->getRepository('WallabagUserBundle:User')->findOneByUserName($username); + return $this->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Controller/ConfigController.php b/src/Wallabag/CoreBundle/Controller/ConfigController.php index 89d27425..d4170d39 100644 --- a/src/Wallabag/CoreBundle/Controller/ConfigController.php +++ b/src/Wallabag/CoreBundle/Controller/ConfigController.php @@ -152,8 +152,7 @@ class ConfigController extends Controller ], 'twofactor_auth' => $this->getParameter('twofactor_auth'), 'wallabag_url' => $this->getParameter('domain_name'), - 'enabled_users' => $this->getDoctrine() - ->getRepository('WallabagUserBundle:User') + 'enabled_users' => $this->get('wallabag_user.user_repository') ->getSumEnabledUsers(), ]); } @@ -257,9 +256,7 @@ class ConfigController extends Controller // manually remove tags to avoid orphan tag $this->removeAllTagsByUserId($this->getUser()->getId()); - $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->removeAllByUserId($this->getUser()->getId()); + $this->get('wallabag_core.entry_repository')->removeAllByUserId($this->getUser()->getId()); break; case 'archived': if ($this->get('doctrine')->getConnection()->getDatabasePlatform() instanceof \Doctrine\DBAL\Platforms\SqlitePlatform) { @@ -269,9 +266,7 @@ class ConfigController extends Controller // manually remove tags to avoid orphan tag $this->removeTagsForArchivedByUserId($this->getUser()->getId()); - $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->removeArchivedByUserId($this->getUser()->getId()); + $this->get('wallabag_core.entry_repository')->removeArchivedByUserId($this->getUser()->getId()); break; } @@ -295,8 +290,7 @@ class ConfigController extends Controller return; } - $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') + $this->get('wallabag_core.entry_repository') ->removeTags($userId, $tags); // cleanup orphan tags @@ -318,7 +312,7 @@ class ConfigController extends Controller */ private function removeAllTagsByUserId($userId) { - $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findAllTags($userId); + $tags = $this->get('wallabag_core.tag_repository')->findAllTags($userId); $this->removeAllTagsByStatusAndUserId($tags, $userId); } @@ -329,7 +323,7 @@ class ConfigController extends Controller */ private function removeTagsForArchivedByUserId($userId) { - $tags = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findForArchivedArticlesByUser($userId); + $tags = $this->get('wallabag_core.tag_repository')->findForArchivedArticlesByUser($userId); $this->removeAllTagsByStatusAndUserId($tags, $userId); } @@ -393,8 +387,7 @@ class ConfigController extends Controller */ public function deleteAccountAction(Request $request) { - $enabledUsers = $this->getDoctrine() - ->getRepository('WallabagUserBundle:User') + $enabledUsers = $this->get('wallabag_user.user_repository') ->getSumEnabledUsers(); if ($enabledUsers <= 1) { diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index abc3336a..b9e5a974 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php @@ -57,16 +57,17 @@ class ExportController extends Controller { $method = ucfirst($category); $methodBuilder = 'getBuilderFor'.$method.'ByUser'; + $epository = $this->get('wallabag_core.entry_repository'); if ($category == 'tag_entries') { - $tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneBySlug($request->query->get('tag')); + $tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag')); - $entries = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->findAllByTagId($this->getUser()->getId(), $tag->getId()); + $entries = $epository->findAllByTagId( + $this->getUser()->getId(), + $tag->getId() + ); } else { - $entries = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') + $entries = $epository ->$methodBuilder($this->getUser()->getId()) ->getQuery() ->getResult(); diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php index 92f18707..5f7502fc 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/RssController.php @@ -66,7 +66,7 @@ class RssController extends Controller */ private function showEntries($type, User $user, $page = 1) { - $repository = $this->getDoctrine()->getRepository('WallabagCoreBundle:Entry'); + $repository = $this->get('wallabag_core.entry_repository'); switch ($type) { case 'starred': diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index 9422bae4..72822479 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php @@ -84,16 +84,17 @@ class TagController extends Controller */ public function showTagAction() { - $tags = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Tag') + $repository = $this->get('wallabag_core.entry_repository'); + $tags = $this->get('wallabag_core.tag_repository') ->findAllTags($this->getUser()->getId()); $flatTags = []; foreach ($tags as $tag) { - $nbEntries = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->countAllEntriesByUserIdAndTagId($this->getUser()->getId(), $tag->getId()); + $nbEntries = $repository->countAllEntriesByUserIdAndTagId( + $this->getUser()->getId(), + $tag->getId() + ); $flatTags[] = [ 'id' => $tag->getId(), @@ -119,9 +120,10 @@ class TagController extends Controller */ public function showEntriesForTagAction(Tag $tag, $page, Request $request) { - $entriesByTag = $this->getDoctrine() - ->getRepository('WallabagCoreBundle:Entry') - ->findAllByTagId($this->getUser()->getId(), $tag->getId()); + $entriesByTag = $this->get('wallabag_core.entry_repository')->findAllByTagId( + $this->getUser()->getId(), + $tag->getId() + ); $pagerAdapter = new ArrayAdapter($entriesByTag); -- cgit v1.2.3 From 18c38dffc67d04e59a9cc26b6910d9b9a4a49cd6 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 13:11:08 +0200 Subject: Add RSS tags feeds --- app/config/security.yml | 1 + .../CoreBundle/Controller/RssController.php | 81 ++++++++++++++++++++-- .../CoreBundle/Helper/PreparePagerForEntries.php | 8 ++- .../views/themes/common/Entry/entries.xml.twig | 6 +- .../CoreBundle/Controller/RssControllerTest.php | 41 ++++++++--- 5 files changed, 117 insertions(+), 20 deletions(-) diff --git a/app/config/security.yml b/app/config/security.yml index ffb1d356..e14a0bd1 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -61,6 +61,7 @@ security: - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: /tags/(.*).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/share, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/settings, roles: ROLE_SUPER_ADMIN } - { path: ^/annotations, roles: ROLE_USER } diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php index 5f7502fc..090eccab 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/RssController.php @@ -3,13 +3,16 @@ namespace Wallabag\CoreBundle\Controller; use Pagerfanta\Adapter\DoctrineORMAdapter; +use Pagerfanta\Adapter\ArrayAdapter; use Pagerfanta\Exception\OutOfRangeCurrentPageException; use Pagerfanta\Pagerfanta; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Wallabag\CoreBundle\Entity\Entry; +use Wallabag\CoreBundle\Entity\Tag; use Wallabag\UserBundle\Entity\User; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; @@ -31,7 +34,7 @@ class RssController extends Controller /** * Shows read entries for current user. * - * @Route("/{username}/{token}/archive.xml", name="archive_rss") + * @Route("/{username}/{token}/archive.xml", name="archive_rss", defaults={"_format"="xml"}) * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") * * @return \Symfony\Component\HttpFoundation\Response @@ -44,7 +47,7 @@ class RssController extends Controller /** * Shows starred entries for current user. * - * @Route("/{username}/{token}/starred.xml", name="starred_rss") + * @Route("/{username}/{token}/starred.xml", name="starred_rss", defaults={"_format"="xml"}) * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") * * @return \Symfony\Component\HttpFoundation\Response @@ -54,6 +57,65 @@ class RssController extends Controller return $this->showEntries('starred', $user, $request->query->get('page', 1)); } + /** + * Shows entries associated to a tag for current user. + * + * @Route("/{username}/{token}/tags/{slug}.xml", name="tag_rss", defaults={"_format"="xml"}) + * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") + * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function showTagsAction(Request $request, User $user, Tag $tag) + { + $page = $request->query->get('page', 1); + + $url = $this->generateUrl( + 'tag_rss', + [ + 'username' => $user->getUsername(), + 'token' => $user->getConfig()->getRssToken(), + 'slug' => $tag->getSlug(), + ], + UrlGeneratorInterface::ABSOLUTE_URL + ); + + $entriesByTag = $this->get('wallabag_core.entry_repository')->findAllByTagId( + $user->getId(), + $tag->getId() + ); + + $pagerAdapter = new ArrayAdapter($entriesByTag); + + $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries')->prepare( + $pagerAdapter, + $user + ); + + if (null === $entries) { + throw $this->createNotFoundException('No entries found?'); + } + + try { + $entries->setCurrentPage($page); + } catch (OutOfRangeCurrentPageException $e) { + if ($page > 1) { + return $this->redirect($url.'?page='.$entries->getNbPages(), 302); + } + } + + return $this->render( + '@WallabagCore/themes/common/Entry/entries.xml.twig', + [ + 'url_html' => $this->generateUrl('tag_entries', ['slug' => $tag->getSlug()], UrlGeneratorInterface::ABSOLUTE_URL), + 'type' => 'tag ('.$tag->getLabel().')', + 'url' => $url, + 'entries' => $entries, + ], + new Response('', 200, ['Content-Type' => 'application/rss+xml']) + ); + } + /** * Global method to retrieve entries depending on the given type * It returns the response to be send. @@ -108,10 +170,15 @@ class RssController extends Controller } } - return $this->render('@WallabagCore/themes/common/Entry/entries.xml.twig', [ - 'type' => $type, - 'url' => $url, - 'entries' => $entries, - ]); + return $this->render( + '@WallabagCore/themes/common/Entry/entries.xml.twig', + [ + 'url_html' => $this->generateUrl($type, [], UrlGeneratorInterface::ABSOLUTE_URL), + 'type' => $type, + 'url' => $url, + 'entries' => $entries, + ], + new Response('', 200, ['Content-Type' => 'application/rss+xml']) + ); } } diff --git a/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php index df579ebd..231a0b52 100644 --- a/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php +++ b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php @@ -4,6 +4,7 @@ namespace Wallabag\CoreBundle\Helper; use Pagerfanta\Adapter\AdapterInterface; use Pagerfanta\Pagerfanta; +use Wallabag\UserBundle\Entity\User; use Symfony\Component\Routing\Router; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -20,12 +21,15 @@ class PreparePagerForEntries /** * @param AdapterInterface $adapter + * @param User $user If user isn't logged in, we can force it (like for rss) * * @return null|Pagerfanta */ - public function prepare(AdapterInterface $adapter) + public function prepare(AdapterInterface $adapter, User $user = null) { - $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; + if (null === $user) { + $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; + } if (null === $user || !is_object($user)) { return; 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 12e8c79f..d70aa5dc 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,8 +1,8 @@ - wallabag — {{type}} feed - {{ url(type) }} + wallabag - {{ type }} feed + {{ url_html }} {% if entries.hasPreviousPage -%} @@ -13,7 +13,7 @@ {{ "now"|date('D, d M Y H:i:s') }} wallabag - wallabag {{type}} elements + wallabag {{ type }} elements {% for entry in entries %} diff --git a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php index 5a59654d..b46f3f9d 100644 --- a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php @@ -6,7 +6,7 @@ use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; class RssControllerTest extends WallabagCoreTestCase { - public function validateDom($xml, $type, $nb = null) + public function validateDom($xml, $type, $urlPagination, $nb = null) { $doc = new \DOMDocument(); $doc->loadXML($xml); @@ -34,10 +34,10 @@ class RssControllerTest extends WallabagCoreTestCase $this->assertEquals('wallabag '.$type.' elements', $xpath->query('/rss/channel/description')->item(0)->nodeValue); $this->assertEquals(1, $xpath->query('/rss/channel/link[@rel="self"]')->length); - $this->assertContains($type.'.xml', $xpath->query('/rss/channel/link[@rel="self"]')->item(0)->getAttribute('href')); + $this->assertContains($urlPagination.'.xml', $xpath->query('/rss/channel/link[@rel="self"]')->item(0)->getAttribute('href')); $this->assertEquals(1, $xpath->query('/rss/channel/link[@rel="last"]')->length); - $this->assertContains($type.'.xml?page=', $xpath->query('/rss/channel/link[@rel="last"]')->item(0)->getAttribute('href')); + $this->assertContains($urlPagination.'.xml?page=', $xpath->query('/rss/channel/link[@rel="last"]')->item(0)->getAttribute('href')); foreach ($xpath->query('//item') as $item) { $this->assertEquals(1, $xpath->query('title', $item)->length); @@ -94,7 +94,7 @@ class RssControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->validateDom($client->getResponse()->getContent(), 'unread', 2); + $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread', 2); } public function testStarred() @@ -116,7 +116,7 @@ class RssControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode(), 1); - $this->validateDom($client->getResponse()->getContent(), 'starred'); + $this->validateDom($client->getResponse()->getContent(), 'starred', 'starred'); } public function testArchives() @@ -138,7 +138,7 @@ class RssControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->validateDom($client->getResponse()->getContent(), 'archive'); + $this->validateDom($client->getResponse()->getContent(), 'archive', 'archive'); } public function testPagination() @@ -159,13 +159,38 @@ class RssControllerTest extends WallabagCoreTestCase $client->request('GET', '/admin/SUPERTOKEN/unread.xml'); $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->validateDom($client->getResponse()->getContent(), 'unread'); + $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread'); $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=2'); $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->validateDom($client->getResponse()->getContent(), 'unread'); + $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread'); $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=3000'); $this->assertEquals(302, $client->getResponse()->getStatusCode()); } + + public function testTags() + { + $client = $this->getClient(); + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + $config = $user->getConfig(); + $config->setRssToken('SUPERTOKEN'); + $config->setRssLimit(null); + $em->persist($config); + $em->flush(); + + $client = $this->getClient(); + $client->request('GET', '/admin/SUPERTOKEN/tags/foo-bar.xml'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->validateDom($client->getResponse()->getContent(), 'tag (foo bar)', 'tags/foo-bar'); + + $client->request('GET', '/admin/SUPERTOKEN/tags/foo-bar.xml?page=3000'); + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + } } -- cgit v1.2.3 From 03ce43d466daf9d085f5b521b223cb8b351a1c0e Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 13:19:43 +0200 Subject: Fix getContainer in command --- src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php | 6 +++--- src/Wallabag/CoreBundle/Command/ExportCommand.php | 4 ++-- src/Wallabag/CoreBundle/Command/ShowUserCommand.php | 2 +- src/Wallabag/CoreBundle/Command/TagAllCommand.php | 2 +- src/Wallabag/CoreBundle/Controller/ExportController.php | 1 - 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php b/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php index 89ae7998..74da1e5f 100644 --- a/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php +++ b/src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php @@ -46,7 +46,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand return 1; } } else { - $users = $this->get('wallabag_user.user_repository')->findAll(); + $users = $this->getContainer()->get('wallabag_user.user_repository')->findAll(); $output->writeln(sprintf('Cleaning through %d user accounts', count($users))); @@ -66,7 +66,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand private function cleanDuplicates(User $user) { $em = $this->getContainer()->get('doctrine.orm.entity_manager'); - $repo = $this->get('wallabag_core.entry_repository'); + $repo = $this->getContainer()->get('wallabag_core.entry_repository'); $entries = $repo->getAllEntriesIdAndUrl($user->getId()); @@ -109,7 +109,7 @@ class CleanDuplicatesCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->get('wallabag_user.user_repository')->findOneByUserName($username); + return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Command/ExportCommand.php b/src/Wallabag/CoreBundle/Command/ExportCommand.php index e4977e11..ebb2b4cf 100644 --- a/src/Wallabag/CoreBundle/Command/ExportCommand.php +++ b/src/Wallabag/CoreBundle/Command/ExportCommand.php @@ -32,14 +32,14 @@ class ExportCommand extends ContainerAwareCommand protected function execute(InputInterface $input, OutputInterface $output) { try { - $user = $this->get('wallabag_user.user_repository')->findOneByUserName($input->getArgument('username')); + $user = $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($input->getArgument('username')); } catch (NoResultException $e) { $output->writeln(sprintf('User "%s" not found.', $input->getArgument('username'))); return 1; } - $entries = $this->get('wallabag_core.entry_repository') + $entries = $this->getContainer()->get('wallabag_core.entry_repository') ->getBuilderForAllByUser($user->getId()) ->getQuery() ->getResult(); diff --git a/src/Wallabag/CoreBundle/Command/ShowUserCommand.php b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php index 90a7e03f..eef04988 100644 --- a/src/Wallabag/CoreBundle/Command/ShowUserCommand.php +++ b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php @@ -67,7 +67,7 @@ class ShowUserCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->get('wallabag_user.user_repository')->findOneByUserName($username); + return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Command/TagAllCommand.php b/src/Wallabag/CoreBundle/Command/TagAllCommand.php index 5a6dc04e..9843674e 100644 --- a/src/Wallabag/CoreBundle/Command/TagAllCommand.php +++ b/src/Wallabag/CoreBundle/Command/TagAllCommand.php @@ -59,7 +59,7 @@ class TagAllCommand extends ContainerAwareCommand */ private function getUser($username) { - return $this->get('wallabag_user.user_repository')->findOneByUserName($username); + return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username); } private function getDoctrine() diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index b9e5a974..e61b6d32 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php @@ -7,7 +7,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Wallabag\CoreBundle\Entity\Entry; -use Wallabag\CoreBundle\Entity\Tag; /** * The try/catch can be removed once all formats will be implemented. -- cgit v1.2.3 From 11b8695663b3a649a452b8a4d2ee3ccd70202e9e Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sat, 10 Jun 2017 14:24:42 +0200 Subject: Fix tests --- tests/Wallabag/CoreBundle/Controller/RssControllerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php index b46f3f9d..530c8bbf 100644 --- a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php @@ -23,7 +23,7 @@ class RssControllerTest extends WallabagCoreTestCase $this->assertEquals(1, $xpath->query('/rss/channel')->length); $this->assertEquals(1, $xpath->query('/rss/channel/title')->length); - $this->assertEquals('wallabag — '.$type.' feed', $xpath->query('/rss/channel/title')->item(0)->nodeValue); + $this->assertEquals('wallabag - '.$type.' feed', $xpath->query('/rss/channel/title')->item(0)->nodeValue); $this->assertEquals(1, $xpath->query('/rss/channel/pubDate')->length); -- cgit v1.2.3 From 8c59809432928781b8ba3d43bc300cca6860771f Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 13 Jun 2017 14:17:04 +0200 Subject: add rss icon Signed-off-by: Thomas Citharel --- .../CoreBundle/Resources/views/themes/material/Tag/tags.html.twig | 3 +++ 1 file changed, 3 insertions(+) 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 c83543ac..98d7b037 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 @@ -14,6 +14,9 @@ {% for tag in tags %}
  • {{tag.label}} ({{ tag.nbEntries }}) + {% if app.user.config.rssToken %} + rss_feed + {% endif %}
  • {% endfor %} -- cgit v1.2.3 From ebf2d9232798111ea4762f1d8b1cc05533238eb2 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Sun, 18 Jun 2017 14:58:50 +0200 Subject: Fix typo --- src/Wallabag/CoreBundle/Controller/ExportController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index e61b6d32..fda04cfb 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php @@ -56,17 +56,17 @@ class ExportController extends Controller { $method = ucfirst($category); $methodBuilder = 'getBuilderFor'.$method.'ByUser'; - $epository = $this->get('wallabag_core.entry_repository'); + $repository = $this->get('wallabag_core.entry_repository'); if ($category == 'tag_entries') { $tag = $this->get('wallabag_core.tag_repository')->findOneBySlug($request->query->get('tag')); - $entries = $epository->findAllByTagId( + $entries = $repository->findAllByTagId( $this->getUser()->getId(), $tag->getId() ); } else { - $entries = $epository + $entries = $repository ->$methodBuilder($this->getUser()->getId()) ->getQuery() ->getResult(); -- cgit v1.2.3 From bd40f1af88979cb5257206d178d26819e350a24c Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 20 Jun 2017 18:29:46 +0200 Subject: Add all entries RSS feed and put links on tag page itself and baggy too Signed-off-by: Thomas Citharel --- .../CoreBundle/Controller/RssController.php | 23 +++++++++++++++++++--- .../CoreBundle/Controller/TagController.php | 2 +- .../Resources/translations/messages.da.yml | 7 ++++--- .../Resources/translations/messages.de.yml | 1 + .../Resources/translations/messages.en.yml | 7 ++++--- .../Resources/translations/messages.es.yml | 1 + .../Resources/translations/messages.fa.yml | 1 + .../Resources/translations/messages.fr.yml | 9 +++++---- .../Resources/translations/messages.it.yml | 7 ++++--- .../Resources/translations/messages.oc.yml | 9 +++++---- .../Resources/translations/messages.pl.yml | 7 ++++--- .../Resources/translations/messages.pt.yml | 7 ++++--- .../Resources/translations/messages.ro.yml | 7 ++++--- .../Resources/translations/messages.tr.yml | 7 ++++--- .../views/themes/baggy/Config/index.html.twig | 11 ++++++----- .../views/themes/baggy/Entry/entries.html.twig | 13 ++++++++++-- .../views/themes/baggy/Tag/tags.html.twig | 7 ++++++- .../views/themes/common/Entry/_rss_link.html.twig | 6 ++++++ .../views/themes/material/Config/index.html.twig | 1 + .../views/themes/material/Entry/entries.html.twig | 16 ++++++++++++--- .../views/themes/material/Tag/tags.html.twig | 2 +- 21 files changed, 106 insertions(+), 45 deletions(-) create mode 100644 src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_rss_link.html.twig diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php index 090eccab..e87dd9a1 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/RssController.php @@ -26,7 +26,7 @@ class RssController extends Controller * * @return \Symfony\Component\HttpFoundation\Response */ - public function showUnreadAction(Request $request, User $user) + public function showUnreadRSSAction(Request $request, User $user) { return $this->showEntries('unread', $user, $request->query->get('page', 1)); } @@ -39,7 +39,7 @@ class RssController extends Controller * * @return \Symfony\Component\HttpFoundation\Response */ - public function showArchiveAction(Request $request, User $user) + public function showArchiveRSSAction(Request $request, User $user) { return $this->showEntries('archive', $user, $request->query->get('page', 1)); } @@ -52,11 +52,24 @@ class RssController extends Controller * * @return \Symfony\Component\HttpFoundation\Response */ - public function showStarredAction(Request $request, User $user) + public function showStarredRSSAction(Request $request, User $user) { return $this->showEntries('starred', $user, $request->query->get('page', 1)); } + /** + * Shows all entries for current user. + * + * @Route("/{username}/{token}/all.xml", name="all_rss", defaults={"_format"="xml"}) + * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_rsstoken_converter") + * + * @return \Symfony\Component\HttpFoundation\Response + */ + public function showAllRSSAction(Request $request, User $user) + { + return $this->showEntries('all', $user, $request->query->get('page', 1)); + } + /** * Shows entries associated to a tag for current user. * @@ -143,6 +156,10 @@ class RssController extends Controller $qb = $repository->getBuilderForUnreadByUser($user->getId()); break; + case 'all': + $qb = $repository->getBuilderForAllByUser($user->getId()); + break; + default: throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type)); } diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index 72822479..a8b1eadd 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php @@ -144,7 +144,7 @@ class TagController extends Controller 'form' => null, 'entries' => $entries, 'currentPage' => $page, - 'tag' => $tag->getSlug(), + 'tag' => $tag, ]); } } diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index a91a0ce4..52904d25 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml @@ -90,9 +90,10 @@ config: token_reset: 'Nulstil token' rss_links: 'RSS-Links' rss_link: - unread: 'ulæst' - starred: 'favoritter' - archive: 'arkiv' + unread: 'Ulæst' + starred: 'Favoritter' + archive: 'Arkiv' + # all: 'All' # rss_limit: 'Number of items in the feed' form_user: # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index e77cdca3..481b5d05 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml @@ -93,6 +93,7 @@ config: unread: 'Ungelesene' starred: 'Favoriten' archive: 'Archivierte' + # all: 'All' rss_limit: 'Anzahl der Einträge pro Feed' form_user: two_factor_description: "Wenn du die Zwei-Faktor-Authentifizierung aktivierst, erhältst du eine E-Mail mit einem Code bei jeder nicht vertrauenswürdigen Verbindung" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index 50edab3a..98888d05 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml @@ -90,9 +90,10 @@ config: token_reset: 'Regenerate your token' rss_links: 'RSS links' rss_link: - unread: 'unread' - starred: 'starred' - archive: 'archived' + unread: 'Unread' + starred: 'Starred' + archive: 'Archived' + all: 'All' rss_limit: 'Number of items in the feed' form_user: two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connection." diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 6fbf00eb..310a00de 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml @@ -93,6 +93,7 @@ config: unread: 'sin leer' starred: 'favoritos' archive: 'archivados' + # all: 'All' rss_limit: 'Límite de artículos en feed RSS' form_user: two_factor_description: "Con la autenticación en dos pasos recibirá código por e-mail en cada nueva conexión que no sea de confianza." diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index ad7d6cd9..d5247fc3 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml @@ -93,6 +93,7 @@ config: unread: 'خوانده‌نشده' starred: 'برگزیده' archive: 'بایگانی' + # all: 'All' rss_limit: 'محدودیت آر-اس-اس' form_user: two_factor_description: "با فعال‌کردن تأیید ۲مرحله‌ای هر بار که اتصال تأییدنشده‌ای برقرار شد، به شما یک کد از راه ایمیل فرستاده می‌شود" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index c4b029c3..b338eba4 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml @@ -88,11 +88,12 @@ config: no_token: "Aucun jeton généré" token_create: "Créez votre jeton" token_reset: "Réinitialisez votre jeton" - rss_links: "Adresse de vos flux RSS" + rss_links: "Adresses de vos flux RSS" rss_link: - unread: "non lus" - starred: "favoris" - archive: "lus" + unread: "Non lus" + starred: "Favoris" + archive: "Lus" + all: "Tous" rss_limit: "Nombre d’articles dans le flux" form_user: two_factor_description: "Activer l’authentification double-facteur veut dire que vous allez recevoir un code par courriel à chaque nouvelle connexion non approuvée." diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index 4bd04aad..a3ff5495 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml @@ -90,9 +90,10 @@ config: token_reset: 'Rigenera il tuo token' rss_links: 'Collegamenti RSS' rss_link: - unread: 'non letti' - starred: 'preferiti' - archive: 'archiviati' + unread: 'Non letti' + starred: 'Preferiti' + archive: 'Archiviati' + # all: 'All' rss_limit: 'Numero di elementi nel feed' form_user: two_factor_description: "Abilitando l'\autenticazione a due fattori riceverai una e-mail con un codice per ogni nuova connesione non verificata" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index a6dd4dcd..a6566a12 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml @@ -88,11 +88,12 @@ config: no_token: 'Pas cap de geton generat' token_create: 'Creatz vòstre geton' token_reset: 'Reïnicializatz vòstre geton' - rss_links: 'URL de vòstres fluxes RSS' + rss_links: 'URLs de vòstres fluxes RSS' rss_link: - unread: 'pas legits' - starred: 'favorits' - archive: 'legits' + unread: 'Pas legits' + starred: 'Favorits' + archive: 'Legits' + # all: 'All' rss_limit: "Nombre d'articles dins un flux RSS" form_user: two_factor_description: "Activar l'autentificacion doble-factor vòl dire que recebretz un còdi per corrièl per cada novèla connexion pas aprovada." diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index 7312abd7..8e1276d9 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml @@ -90,9 +90,10 @@ config: token_reset: 'Zresetuj swojego tokena' rss_links: 'RSS links' rss_link: - unread: 'nieprzeczytane' - starred: 'oznaczone gwiazdką' - archive: 'archiwum' + unread: 'Nieprzeczytane' + starred: 'Oznaczone gwiazdką' + archive: 'Archiwum' + # all: 'All' rss_limit: 'Link do RSS' form_user: two_factor_description: "Włączenie autoryzacji dwuetapowej oznacza, że będziesz otrzymywał maile z kodem przy każdym nowym, niezaufanym połączeniu" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml index 18090352..953c86bb 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml @@ -90,9 +90,10 @@ config: token_reset: 'Gerar novamente seu token' rss_links: 'Links RSS' rss_link: - unread: 'não lido' - starred: 'destacado' - archive: 'arquivado' + unread: 'Não lido' + starred: 'Destacado' + archive: 'Arquivado' + # all: 'All' rss_limit: 'Número de itens no feed' form_user: two_factor_description: 'Habilitar autenticação de dois passos significa que você receberá um e-mail com um código a cada nova conexão desconhecida.' diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index f8866fdc..51dbbcaf 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml @@ -90,9 +90,10 @@ config: token_reset: 'Resetează-ți token-ul' rss_links: 'Link-uri RSS' rss_link: - unread: 'unread' - starred: 'starred' - archive: 'archived' + unread: 'Unread' + starred: 'Starred' + archive: 'Archived' + # all: 'All' rss_limit: 'Limită RSS' form_user: # two_factor_description: "Enabling two factor authentication means you'll receive an email with a code on every new untrusted connexion" diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index 4d01e7f7..ff19e9d9 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml @@ -90,9 +90,10 @@ config: token_reset: 'Belirteci (token) sıfırla' rss_links: 'RSS akış bağlantıları' rss_link: - unread: 'okunmayan' - starred: 'favoriler' - archive: 'arşiv' + unread: 'Okunmayan' + starred: 'Favoriler' + archive: 'Arşiv' + # all: 'All' rss_limit: 'RSS içeriğinden talep edilecek makale limiti' form_user: two_factor_description: "İki adımlı doğrulamayı aktifleştirdiğinizde, her yeni güvenilmeyen bağlantılarda size e-posta ile bir kod alacaksınız." 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 01f63a7b..2bf64cd6 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 @@ -82,7 +82,7 @@

    {{ 'config.form_settings.android_configuration'|trans }}

    - Touch here to prefill your Android application + Touch here to prefill your Android application