Эх сурвалжийг харах

Update homepage and some URLs

Jordi Boggiano 13 жил өмнө
parent
commit
3caf869d3e

+ 22 - 18
src/Packagist/WebBundle/Controller/WebController.php

@@ -20,6 +20,7 @@ use Packagist\WebBundle\Entity\Version;
 use Packagist\WebBundle\Form\Type\PackageType;
 use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
@@ -43,6 +44,23 @@ class WebController extends Controller
      */
     public function indexAction()
     {
+        return array('page' => 'home');
+    }
+
+    /**
+     * @Template()
+     * @Route("/packages/", name="browse")
+     */
+    public function browseAction(Request $req)
+    {
+        if ($tag = $req->query->get('tag')) {
+            $packages = $this->getDoctrine()
+                ->getRepository('PackagistWebBundle:Package')
+                ->findByTag($tag);
+
+            return $this->render('PackagistWebBundle:Web:tag.html.twig', array('packages' => $packages, 'tag' => $name));
+        }
+
         $packages = $this->getDoctrine()
             ->getRepository('PackagistWebBundle:Package')
             ->findAll();
@@ -51,12 +69,12 @@ class WebController extends Controller
         $paginator->setMaxPerPage(20);
         $paginator->setCurrentPage($this->get('request')->query->get('page', 1), false, true);
 
-        return array('packages' => $paginator, 'page' => 'home');
+        return $this->render('PackagistWebBundle:Web:browse.html.twig', array('packages' => $packages));
     }
 
     /**
      * @Template()
-     * @Route("/submit", name="submit")
+     * @Route("/packages/submit", name="submit")
      */
     public function submitPackageAction()
     {
@@ -89,7 +107,7 @@ class WebController extends Controller
     }
 
     /**
-     * @Route("/submit/fetch-info", name="submit.fetch_info", defaults={"_format"="json"})
+     * @Route("/packages/fetch-info", name="submit.fetch_info", defaults={"_format"="json"})
      */
     public function fetchInfoAction()
     {
@@ -119,23 +137,9 @@ class WebController extends Controller
         return new Response(json_encode($response));
     }
 
-    /**
-     * View all packages with the specified tag.
-     *
-     * @Template()
-     * @Route("/tag/{name}", name="tag")
-     */
-    public function tagAction($name)
-    {
-        $packages = $this->getDoctrine()
-            ->getRepository('PackagistWebBundle:Package')
-            ->findByTag($name);
-        return array('packages' => $packages, 'tag' => $name);
-    }
-
     /**
      * @Template()
-     * @Route("/view/{name}", name="view", requirements={"name"="[A-Za-z0-9/_-]+"})
+     * @Route("/packages/{name}", name="view", requirements={"name"="[A-Za-z0-9/_-]+"})
      */
     public function viewAction($name)
     {

+ 14 - 2
src/Packagist/WebBundle/Resources/public/css/main.css

@@ -254,6 +254,18 @@ p {
   background: #53a51d;
 }
 
+.getting-started {
+  float: left;
+  width: 48%;
+  margin-right: 4%;
+}
+
+.recent-packages, .recent-versions {
+  float: right;
+  width: 48%;
+}
+
+
 .main h1 {
   font-size: 25px;
   margin-bottom: 10px;
@@ -278,7 +290,7 @@ ul.packages li {
   padding-left: 10px;
 }
 ul.packages section {
-  position: relative;  
+  position: relative;
 }
 ul.packages h1 {
   font-family: Verdana;
@@ -299,7 +311,7 @@ ul.packages li.has-popup:hover h1 {
   color: #fff;
   background: url("../img/package_bg.png") 0 0 repeat-x;
 }
-ul.packages li.has-popup:hover h1 a, ul.packages li.has-popup:hover h1 a:visited { 
+ul.packages li.has-popup:hover h1 a, ul.packages li.has-popup:hover h1 a:visited {
   color: #fff;
 }
 

+ 7 - 0
src/Packagist/WebBundle/Resources/views/Web/browse.html.twig

@@ -0,0 +1,7 @@
+{% extends "PackagistWebBundle:Web:list.html.twig" %}
+
+{# TODO:
+
+- Add browsing by tag, type, most required, ..
+
+#}

+ 38 - 0
src/Packagist/WebBundle/Resources/views/Web/index.html.twig

@@ -1,6 +1,7 @@
 {% extends "PackagistWebBundle::layout.html.twig" %}
 
 {% block content %}
+<<<<<<< HEAD
     {% block content_title %}<h1>Packages</h1>{% endblock %}
     {% if packages|length %}
         <ul class="packages">
@@ -42,4 +43,41 @@
     {% else %}
         <p>No packages found.</p>
     {% endif %}
+=======
+    <section class="getting-started">
+        <h1>Getting Started</h1>
+        <div>
+            <h2>Define Your Dependencies</h2>
+            <p>Put a file named <em>composer.json</em> at the root of your project, containing your project dependencies:</p>
+            <pre>
+{
+    "require": {
+        "vendor/package": "1.3.2",
+        "vendor/package2": "1.*",
+        "vendor/package3": ">=2.0.3"
+    }
+}
+</pre>
+            <h2>Installing Composer In Your Project</h2>
+            <p>Run this in your command line:</p>
+            <pre>
+wget http://getcomposer.org/composer.phar
+</pre>
+            <p>Or <a href="http://getcomposer.org/composer.phar">download composer</a> into your project root.</p>
+            <h2>Installing Dependencies</h2>
+            <p>Execute this in your project root.</p>
+            <pre>
+php composer.phar install
+</pre>
+        </div>
+    </section>
+    <section class="recent-packages">
+        <h1>Most Recent Packages</h1>
+        <div></div>
+    </section>
+    <section class="recent-versions">
+        <h1>Most Recent Versions</h1>
+        <div></div>
+    </section>
+>>>>>>> Update homepage and some URLs
 {% endblock %}

+ 44 - 0
src/Packagist/WebBundle/Resources/views/Web/list.html.twig

@@ -0,0 +1,44 @@
+{% extends "PackagistWebBundle::layout.html.twig" %}
+
+{% block content %}
+    {% 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("browse", { "tag" : 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 %}
+    </ul>
+    {% else %}
+        <p>No packages found.</p>
+    {% endif %}
+{% endblock %}

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

@@ -1,4 +1,4 @@
-{% extends "PackagistWebBundle:Web:index.html.twig" %}
+{% extends "PackagistWebBundle:Web:list.html.twig" %}
 
 {% block content_title %}
 <h1>Packages tagged with {{ tag }}</h1>

+ 44 - 37
src/Packagist/WebBundle/Resources/views/Web/view.html.twig

@@ -30,43 +30,50 @@
     {% endif %}
 
     {% if package.versions|length %}
-    <ul class="packages">
-        {% for version in package.versions %}
-        <li{% if loop.index0 > 0 and not ('-dev' in version.version) %} class="has-popup"{% endif %}>
-            <section>
-                <h1>Version {{ version.version }}</h1>
-                {% if loop.index0 > 0 and not ('-dev' in version.version) %}
-                <div class="package-details"><div>
-                {% else %}
-                <div class="package-full-details"><div>
-                {% endif %}
-                <p class="description">{{ version.description }}</p>
-                <p class="license">License: {{ version.license ? version.license|join(', ') : "Unknown" }}</p>
-                <p class="release-date">Date: {{ version.releasedAt|date("Y-m-d") }}</p>
-                <p class="links">
-                    {% if version.homepage %}
-                        Homepage: <a href="{{ version.homepage }}">{{ version.homepage|replace({'http://': ''}) }}</a><br />
-                    {% endif %}
-                    Tags: {% for tag in version.tags %}<a href="{{ url("tag", { "name" : tag.name }) }}">{{ tag.name }}</a>{{ loop.last ? '' : ', ' }}{% endfor %}
-                </p>
-                <p class="authors">Author{{ version.authors|length > 1 ? 's' : '' }}:
-                {% for author in version.authors %}
-                    {% if author.homepage %}
-                        <a href="{{ author.homepage }}">{{ author.name }}</a>
-                    {% else %}
-                        {{ author.name }}
-                    {% endif %}
-                    {% if author.email %}&lt;<a href="mailto:{{ author.email }}">{{ author.email }}</a>&gt;{% endif %}
-                    <br />
-                {% endfor %}</p>
-                <p class="requires">Requirement{{ version.require|length > 1 ? 's' : '' }}:
-                {% for req in version.require %}
-                    {{ req.packageName }} ({{ req.packageVersion }})<br />
-                {% endfor %}</p>
-            </section>
-        </li>
-        {% endfor %}
-    </ul>
+        <ul class="packages">
+            {% for version in package.versions %}
+                <li{% if loop.index0 > 0 and not ('-dev' in version.version) %} class="has-popup"{% endif %}>
+                    <section>
+                        <h1>Version {{ version.version }}</h1>
+                        {% if loop.index0 > 0 and not ('-dev' in version.version) %}
+                            <div class="package-details"><div>
+                        {% else %}
+                            <div class="package-full-details"><div>
+                        {% endif %}
+                        <p class="description">{{ version.description }}</p>
+                        <p class="license">License: {{ version.license ? version.license|join(', ') : "Unknown" }}</p>
+                        <p class="release-date">Date: {{ version.releasedAt|date("Y-m-d") }}</p>
+                        <p class="links">
+                            {% if version.homepage %}
+                                Homepage: <a href="{{ version.homepage }}">{{ version.homepage|replace({'http://': ''}) }}</a><br />
+                            {% endif %}
+                        </p>
+                        <p class="links">
+                            Tags:
+                            {% for tag in version.tags -%}
+                                <a href="{{ url("tag", { "name" : tag.name }) }}">{{ tag.name }}</a>{{ loop.last ? '' : ', ' }}
+                            {%- endfor %}
+                        </p>
+                        <p class="authors">Author{{ version.authors|length > 1 ? 's' : '' }}:
+                            {% for author in version.authors %}
+                                {% if author.homepage %}
+                                    <a href="{{ author.homepage }}">{{ author.name }}</a>
+                                {% else %}
+                                    {{ author.name }}
+                                {% endif %}
+                                {% if author.email %}&lt;<a href="mailto:{{ author.email }}">{{ author.email }}</a>&gt;{% endif %}
+                                <br />
+                            {% endfor %}
+                        </p>
+                        <p class="requires">Requirement{{ version.require|length > 1 ? 's' : '' }}:
+                            {% for req in version.require %}
+                                {{ req.packageName }} ({{ req.packageVersion }})<br />
+                            {% endfor %}
+                        </p>
+                    </section>
+                </li>
+            {% endfor %}
+        </ul>
     {% elseif package.crawledAt is null %}
         <p>This package has not been crawled yet, some information is missing.</p>
     {% else %}

+ 4 - 3
src/Packagist/WebBundle/Resources/views/layout.html.twig

@@ -36,14 +36,15 @@
                     <a href="{{ path('fos_user_security_login') }}">Login</a>
                 {% endif %}
             </div>
+
             <header>
-                {% if page is defined and page != 'submit' %}
+                {% if page is not defined or page != 'submit' %}
                 <a class="submit" href="{{ path('submit') }}">Submit Package</a>
                 {% endif %}
                 <h1><a href="{{ path('home') }}">Packagist</a></h1>
                 <h2>The PHP package archivist.</h2>
-                {% if page is defined and page == 'home' %}
-                <p>Packagist is the main <a href="{{ path('about.composer') }}">Composer</a> repository. It aggregates all sorts of PHP packages that are installable with Composer. Browse packages below or <a href="{{ path('submit') }}">submit your own</a> (<a href="{{ path('about') }}">learn how</a>).</p>
+                {% if page|default('') == 'home' %}
+                    <p>Packagist is the main <a href="{{ path('about.composer') }}">Composer</a> repository. It aggregates all sorts of PHP packages that are installable with Composer.<br /><a href="{{ path('browse') }}">Browse packages</a> or <a href="{{ path('submit') }}">submit your own</a> (<a href="{{ path('about') }}">learn how</a>).</p>
                 {% endif %}
             </header>