Miguel Perez vor 13 Jahren
Ursprung
Commit
981513e01e

+ 1 - 0
app/AppKernel.php

@@ -22,6 +22,7 @@ class AppKernel extends Kernel
             new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
             new FOS\UserBundle\FOSUserBundle(),
             new Packagist\WebBundle\PackagistWebBundle(),
+            new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(), 
         );
 
         if (in_array($this->getEnvironment(), array('dev', 'test'))) {

+ 2 - 0
app/autoload.php

@@ -17,6 +17,8 @@ $loader->registerNamespaces(array(
     'FOS'              => __DIR__.'/../vendor/bundles',
     'Composer'         => __DIR__.'/../vendor/composer/src',
     'Packagist'        => __DIR__.'/../src',
+    'WhiteOctober\PagerfantaBundle' => __DIR__.'/../vendor/bundles',
+    'Pagerfanta'  => __DIR__.'/../vendor/pagerfanta/src',
 ));
 $loader->registerPrefixes(array(
     'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',

+ 10 - 0
deps

@@ -68,3 +68,13 @@
     git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
     target=/bundles/FOS/UserBundle
     version=1.0.0
+[FOSUserBundle]
+    git=git://github.com/FriendsOfSymfony/FOSUserBundle.git
+    target=/bundles/FOS/UserBundle
+    version=1.0.0
+[WhiteOctoberPagerfanta]
+    git=http://github.com/whiteoctober/Pagerfanta.git
+    target=/pagerfanta
+[WhiteOctoberPagerfantaBundle]
+    git=http://github.com/whiteoctober/WhiteOctoberPagerfantaBundle.git
+    target=/bundles/WhiteOctober/PagerfantaBundle

+ 8 - 1
src/Packagist/WebBundle/Controller/WebController.php

@@ -24,6 +24,8 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Symfony\Component\Security\Core\Exception\AccessDeniedException;
+use Pagerfanta\Pagerfanta;
+use Pagerfanta\Adapter\DoctrineORMAdapter;
 
 /**
  * @author Jordi Boggiano <j.boggiano@seld.be>
@@ -45,7 +47,12 @@ class WebController extends Controller
             ->getRepository('PackagistWebBundle:Package')
             ->findAll();
 
-        return array('packages' => $packages, 'page' => 'home');
+        $paginator = new Pagerfanta(new DoctrineORMAdapter($packages));
+        $paginator->setMaxPerPage(20);
+        $paginator->setCurrentPage($this->get('request')->query->get('page', 1),
+        false, true);
+
+        return array('packages' => $paginator, 'page' => 'home');
     }
 
     /**

+ 1 - 1
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -32,7 +32,7 @@ class PackageRepository extends EntityRepository
 
     public function findAll()
     {
-        return $this->getBaseQueryBuilder()->getQuery()->getResult();
+        return $this->getBaseQueryBuilder();
     }
 
     public function findOneByName($name)

+ 33 - 32
src/Packagist/WebBundle/Resources/views/Web/index.html.twig

@@ -4,39 +4,40 @@
     {% block content_title %}<h1>Packages</h1>{% endblock %}
     {% if packages|length %}
     <ul class="packages">
-    {% for package in packages %}
-        <li class="has-popup">
-            <section>
-                {% if package.versions|length and package.versions[0].description|length %}
-                    <h1 class="has-description"><a href="{{ url('view', { 'name' : package.name }) }}">{{ package.name }}</a></h1>
-                    <p class="package-description">{{ package.versions[0].description }}</p>
-                {% else %}
-                    <h1><a href="{{ url('view', { 'name' : package.name }) }}">{{ package.name }}</a></h1>
-                {% endif %}
-                <div class="package-details"><div>
-                {% if package.versions|length %}
-                    <p class="description">{{ package.versions[0].description }}</p>
-                    <p class="license">License: {{ package.versions[0].license ? package.versions[0].license|join(', ') : "Unknown" }}</p>
-                    <p class="links">
-                        {% 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 %}<a href="{{ url("tag", { "name" : tag.name }) }}">{{ tag.name }}</a>{{ loop.last ? '' : ', ' }}{% endfor %}
-                    </p>
-                {% elseif package.crawledAt is null %}
-                    <p>This package has not been crawled yet, some information is missing.</p>
-                {% else %}
-                    <p>This package has no released version yet, and little information is available yet.</p>
-                {% endif %}
+        {% for package in packages %}
+            <li class="has-popup">
+                <section>
+                    {% if package.versions|length and package.versions[0].description|length %}
+                        <h1 class="has-description"><a href="{{ url('view', { 'name' : package.name }) }}">{{ package.name }}</a></h1>
+                        <p class="package-description">{{ package.versions[0].description }}</p>
+                    {% else %}
+                        <h1><a href="{{ url('view', { 'name' : package.name }) }}">{{ package.name }}</a></h1>
+                    {% endif %}
+                    <div class="package-details"><div>
+                    {% if package.versions|length %}
+                        <p class="description">{{ package.versions[0].description }}</p>
+                        <p class="license">License: {{ package.versions[0].license ? package.versions[0].license|join(', ') : "Unknown" }}</p>
+                        <p class="links">
+                            {% 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 %}<a href="{{ url("tag", { "name" : tag.name }) }}">{{ tag.name }}</a>{{ loop.last ? '' : ', ' }}{% endfor %}
+                        </p>
+                    {% elseif package.crawledAt is null %}
+                        <p>This package has not been crawled yet, some information is missing.</p>
+                    {% else %}
+                        <p>This package has no released version yet, and little information is available yet.</p>
+                    {% endif %}
 
-                <p class="maintainers">Maintainer{{ package.maintainers|length > 1 ? 's' : '' }}:
-                {% for maintainer in package.maintainers %}
-                    <a href="{{ url("user_packages", { "name" : maintainer.username }) }}">{{ maintainer.username }}</a>{{ loop.last ? '' : ', ' }}
-                {% endfor %}</p>
-                </div></div>
-            </section>
-        </li>
-    {% endfor %}
+                    <p class="maintainers">Maintainer{{ package.maintainers|length > 1 ? 's' : '' }}:
+                    {% for maintainer in package.maintainers %}
+                        <a href="{{ url("user_packages", { "name" : maintainer.username }) }}">{{ maintainer.username }}</a>{{ loop.last ? '' : ', ' }}
+                    {% endfor %}</p>
+                    </div></div>
+                </section>
+            </li>
+        {% endfor %}
+        {{ pagerfanta(packages, 'default', { 'proximity': 2}) }}
     </ul>
     {% else %}
         <p>No packages found.</p>