]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add tags list display
authorNicolas Lœuillet <nicolas@loeuillet.org>
Fri, 7 Aug 2015 16:17:23 +0000 (18:17 +0200)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Fri, 7 Aug 2015 16:17:23 +0000 (18:17 +0200)
src/Wallabag/CoreBundle/Controller/TagController.php [new file with mode: 0644]
src/Wallabag/CoreBundle/Repository/TagRepository.php
src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig [new file with mode: 0644]
src/Wallabag/CoreBundle/Resources/views/base.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/base.html.twig

diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php
new file mode 100644 (file)
index 0000000..8928423
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+
+namespace Wallabag\CoreBundle\Controller;
+
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
+use Symfony\Bundle\FrameworkBundle\Controller\Controller;
+use Symfony\Component\HttpFoundation\Request;
+use Wallabag\CoreBundle\Entity\Tag;
+
+class TagController extends Controller
+{
+    /**
+     * Shows tags for current user.
+     *
+     * @Route("/tag/list", name="tag")
+     *
+     * @return \Symfony\Component\HttpFoundation\Response
+     */
+    public function showTagAction()
+    {
+        $tags = $this->getDoctrine()
+            ->getRepository('WallabagCoreBundle:Tag')
+            ->findTags($this->getUser()->getId());
+
+        return $this->render(
+            'WallabagCoreBundle:Tag:tags.html.twig',
+            array(
+                'tags'       => $tags
+            )
+        );
+    }
+
+}
index 52f319f11158f69315b30650d5ba9ce0782f8fc8..51f1cd42924b22a88eb879fd6b5b3b14cfff058f 100644 (file)
@@ -3,7 +3,25 @@
 namespace Wallabag\CoreBundle\Repository;
 
 use Doctrine\ORM\EntityRepository;
+use Pagerfanta\Adapter\DoctrineORMAdapter;
+use Pagerfanta\Pagerfanta;
 
 class TagRepository extends EntityRepository
 {
+    /**
+     * Find Tags.
+     *
+     * @param int    $userId
+     *
+     * @return array
+     */
+    public function findTags($userId)
+    {
+        $qb = $this->createQueryBuilder('t')
+            ->where('t.user =:userId')->setParameter('userId', $userId);
+
+        $pagerAdapter = new DoctrineORMAdapter($qb);
+
+        return new Pagerfanta($pagerAdapter);
+    }
 }
diff --git a/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/Tag/tags.html.twig
new file mode 100644 (file)
index 0000000..7c2a9f4
--- /dev/null
@@ -0,0 +1,27 @@
+{% extends "WallabagCoreBundle::layout.html.twig" %}
+
+{% block title "Tags" %}
+
+{% block content %}
+    {% block pager %}
+    {% if tags is not empty %}
+        <div class="results">
+            <div class="nb-results">{{ tags.count }} {% trans %}tags{% endtrans %}</div>
+            <div class="pagination">
+                {% for p in range(1, tags.nbPages) %}
+                    <li>
+                        <a href="{{ path(app.request.attributes.get('_route'), {'page': p}) }}" class="{{ currentPage == p ? 'current':''}}" >{{ p }}</a>
+                    </li>
+                {% endfor %}
+            </div>
+        </div>
+    {% endif %}
+    {% endblock %}
+
+    {% if tags is empty %}
+        <div class="messages warning"><p>{% trans %}No tags found.{% endtrans %}</p></div>
+    {% else %}
+        {% for tag in tags %}{{tag.title}}
+        {% endfor %}
+    {% endif %}
+{% endblock %}
index 4f27f413fc23a7fef1449d48555299a288b618d4..223e8433c0a83dab128617d39d6c2f81e7499423 100644 (file)
@@ -71,7 +71,7 @@
                     <li><a href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
                     <li><a href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
                     <li><a href="{{ path('archive') }}"}>{% trans %}archive{% endtrans %}</a></li>
-                    <li><a href="?view=tags">{% trans %}tags{% endtrans %}</a></li>
+                    <li><a href="{{ path ('tag') }}">{% trans %}tags{% endtrans %}</a></li>
                     <li><a href="{{ path('new_entry') }}">{% trans %}save a link{% endtrans %}</a></li>
                     <li style="position: relative;"><a href="javascript: void(null);" id="search">{% trans %}search{% endtrans %}</a>
                         <div id="search-form" class="messages info popup-form">
index 0c8a2a290e078dd71fb4b644379f393c1c11ae89..5f8363ca92ea79d1a16d7ec3d26dcf112697caa7 100644 (file)
@@ -74,7 +74,7 @@
                         <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"><a class="waves-effect" href="{{ path('unread') }}">{% trans %}unread{% endtrans %}</a></li>
                         <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"><a class="waves-effect" href="{{ path('starred') }}">{% trans %}favorites{% endtrans %}</a></li>
                         <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"><a class="waves-effect" href="{{ path('archive') }}">{% trans %}archive{% endtrans %}</a></li>
-                        <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="?view=tags">{% trans %}tags{% endtrans %}</a></li>
+                        <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"><a class="waves-effect" href="{{ path('tag') }}">{% trans %}tags{% endtrans %}</a></li>
                         <li class="bold {% if currentRoute == 'config' %}active{% endif %}"><a class="waves-effect" href="{{ path('config') }}">{% trans %}config{% endtrans %}</a></li>
                         <li class="bold"><a class="waves-effect" class="icon icon-power" href="{{ path('logout') }}" title="{% trans %}logout{% endtrans %}">{% trans %}logout{% endtrans %}</a></li>
                     </ul>