소스 검색

Merge remote-tracking branch 'xaav/tags_listing'

Jordi Boggiano 14 년 전
부모
커밋
0942c8196c
2개의 변경된 파일27개의 추가작업 그리고 1개의 파일을 삭제
  1. 24 0
      src/Packagist/WebBundle/Controller/WebController.php
  2. 3 1
      src/Packagist/WebBundle/Resources/views/Web/index.html.twig

+ 24 - 0
src/Packagist/WebBundle/Controller/WebController.php

@@ -114,6 +114,30 @@ class WebController extends Controller
         return new Response(json_encode($response));
     }
 
+    /**
+     * View all packages with the specified tag.
+     *
+     * @Template("PackagistWebBundle:Web:index.html.twig")
+     * @Route("/tag/{name}", name="tag")
+     */
+    public function tagAction($name)
+    {
+        $tag = $this->getDoctrine()
+            ->getRepository('PackagistWebBundle:Tag')
+            ->findOneByName($name);
+        if (empty($tag)) {
+            throw new NotFoundHttpException();
+        }
+
+        $versions = $tag->getVersions();
+
+        foreach($versions as $version) {
+            $packages[] = $version->getPackage();
+        }
+
+        return array('packages' => $packages, 'page' => 'home');
+    }
+
     /**
      * @Template()
      * @Route("/view/{name}", name="view")

+ 3 - 1
src/Packagist/WebBundle/Resources/views/Web/index.html.twig

@@ -12,7 +12,7 @@
                     {% if package.versions[0].homepage %}
                         Homepage: <a href="{{ package.versions[0].homepage }}">{{ package.versions[0].homepage|replace({'http://': ''}) }}</a><br />
                     {% endif %}
-                    Tags: {% for tag in package.versions[0].tags %}{{ tag.name }}{{ loop.last ? '' : ', ' }}{% endfor %}
+                    Tags: {% for tag in package.versions[0].tags %}<a href="{{ url("tag", { "name" : tag.name }) }}">{{ tag.name }}</a>{{ loop.last ? '' : ', ' }}{% endfor %}
                 </p>
             {% elseif package.crawledAt is null %}
                 This package has not been crawled yet, some information is missing.
@@ -25,5 +25,7 @@
                 {{ maintainer.username }}{{ loop.last ? '' : ', ' }}
             {% endfor %}</p>
         </section>
+    {% else %}
+        No packages found.
     {% endfor %}
 {% endblock %}