--- /dev/null
+<?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
+ )
+ );
+ }
+
+}
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);
+ }
}
--- /dev/null
+{% 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 %}
<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">
<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>