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

Add abandoned status to search results + some minor tweaks, refs #421

Jordi Boggiano 11 жил өмнө
parent
commit
a6b6d8084b

+ 2 - 0
doc/schema.xml

@@ -238,6 +238,8 @@
    <field name="type" type="text_general_rev" indexed="true" stored="true"/>
    <field name="type" type="text_general_rev" indexed="true" stored="true"/>
    <field name="trendiness" type="float" indexed="true" stored="true" />
    <field name="trendiness" type="float" indexed="true" stored="true" />
    <field name="repository" type="string" indexed="false" stored="true" />
    <field name="repository" type="string" indexed="false" stored="true" />
+   <field name="abandoned" type="integer" indexed="false" stored="true" />
+   <field name="replacementPackage" type="string" indexed="false" stored="true" />
 
 
    <!-- catchall field, containing all other searchable text fields (implemented
    <!-- catchall field, containing all other searchable text fields (implemented
         via copyField further on in this schema  -->
         via copyField further on in this schema  -->

+ 9 - 0
src/Packagist/WebBundle/Command/IndexPackagesCommand.php

@@ -142,6 +142,8 @@ class IndexPackagesCommand extends ContainerAwareCommand
                                 $document->setField('type', 'virtual-package');
                                 $document->setField('type', 'virtual-package');
                                 $document->setField('trendiness', 100);
                                 $document->setField('trendiness', 100);
                                 $document->setField('repository', '');
                                 $document->setField('repository', '');
+                                $document->setField('abandoned', 0);
+                                $document->setField('replacementPackage', '');
                                 $update->addDocument($document);
                                 $update->addDocument($document);
                             } catch (\Exception $e) {
                             } catch (\Exception $e) {
                                 $output->writeln('<error>Exception: '.$e->getMessage().', skipping package '.$package->getName().':provide:'.$provide->getPackageName().'</error>');
                                 $output->writeln('<error>Exception: '.$e->getMessage().', skipping package '.$package->getName().':provide:'.$provide->getPackageName().'</error>');
@@ -170,6 +172,13 @@ class IndexPackagesCommand extends ContainerAwareCommand
         $document->setField('type', $package->getType());
         $document->setField('type', $package->getType());
         $document->setField('trendiness', $redis->zscore('downloads:trending', $package->getId()));
         $document->setField('trendiness', $redis->zscore('downloads:trending', $package->getId()));
         $document->setField('repository', $package->getRepository());
         $document->setField('repository', $package->getRepository());
+        if ($package->isAbandoned()) {
+            $document->setField('abandoned', 1);
+            $document->setField('replacementPackage', $package->getReplacementPackage() ?: '');
+        } else {
+            $document->setField('abandoned', 0);
+            $document->setField('replacementPackage', '');
+        }
 
 
         $tags = array();
         $tags = array();
         foreach ($package->getVersions() as $version) {
         foreach ($package->getVersions() as $version) {

+ 3 - 9
src/Packagist/WebBundle/Controller/PackageController.php

@@ -71,10 +71,6 @@ class PackageController extends Controller
     }
     }
 
 
     /**
     /**
-     * @param Request $request
-     * @param string $name
-     * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
-     *
      * @Route(
      * @Route(
      *      "/packages/{name}/abandon",
      *      "/packages/{name}/abandon",
      *      name="abandon_package",
      *      name="abandon_package",
@@ -102,9 +98,9 @@ class PackageController extends Controller
         $form->handleRequest($request);
         $form->handleRequest($request);
 
 
         if ($form->isValid()) {
         if ($form->isValid()) {
-
             $package->setAbandoned(true);
             $package->setAbandoned(true);
             $package->setReplacementPackage($form->get('replacement')->getData());
             $package->setReplacementPackage($form->get('replacement')->getData());
+            $package->setIndexedAt(null);
 
 
             $em = $this->getDoctrine()->getManager();
             $em = $this->getDoctrine()->getManager();
             $em->persist($package);
             $em->persist($package);
@@ -120,11 +116,8 @@ class PackageController extends Controller
     }
     }
 
 
     /**
     /**
-     * @param string $name
-     * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
-     *
      * @Route(
      * @Route(
-     *      "/packages/{name}/un-abandon",
+     *      "/packages/{name}/unabandon",
      *      name="unabandon_package",
      *      name="unabandon_package",
      *      requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?"}
      *      requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?"}
      * )
      * )
@@ -147,6 +140,7 @@ class PackageController extends Controller
 
 
         $package->setAbandoned(false);
         $package->setAbandoned(false);
         $package->setReplacementPackage(null);
         $package->setReplacementPackage(null);
+        $package->setIndexedAt(null);
 
 
         $em = $this->getDoctrine()->getManager();
         $em = $this->getDoctrine()->getManager();
         $em->persist($package);
         $em->persist($package);

+ 1 - 0
src/Packagist/WebBundle/Resources/public/css/main.css

@@ -342,6 +342,7 @@ ul.packages .abandoned {
   color: #800;
   color: #800;
   font-size: 12px;
   font-size: 12px;
   margin-right: 10px;
   margin-right: 10px;
+  margin-top: 5px;
 }
 }
 
 
 ul.packages li {
 ul.packages li {

+ 11 - 17
src/Packagist/WebBundle/Resources/views/Package/abandon.html.twig

@@ -4,25 +4,19 @@
 
 
 {% block content %}
 {% block content %}
     <div class="box">
     <div class="box">
-        <div class="package">
-            <h1>
-                {% if is_favorite is defined %}
-                    <i class="mark-favorite icon-star{% if not is_favorite %}-empty{% endif %}" data-remove-url="{{ path('user_remove_fav', {name: app.user.username, package: package.name}) }}" data-add-url="{{ path('user_add_fav', {name: app.user.username}) }}" data-package="{{ package.name }}"></i>
-                {% endif %}
-                <a href="{{ path("view_vendor", {"vendor": package.vendor}) }}">{{ package.vendor }}/</a>{{ package.packageName }}
-                <a id="copy" data-clipboard-text="{{ package.name }}" title="Copy to clipboard"><i class="icon-copy"></i></a>
-            </h1>
+        <h1>
+            <a href="{{ path("view_vendor", {vendor: package.vendor}) }}">{{ package.vendor }}/</a><a href="{{ path("view_package", {name: package.name}) }}">{{ package.packageName }}</a>
+        </h1>
 
 
-            <p>You are about to mark this package as abandoned. This will alert users that this package will no longer be maintained.</p>
-            <p>If you are handing this project over to a new maintainer or know of a package that replaces it, please use
-                the field below to point users to the new package. In case you cannot point them to a new package, this one
-                will be tagged as abandoned and a replacement can be added later.</p>
+        <p>You are about to mark this package as abandoned. This will alert users that this package will no longer be maintained.</p>
+        <p>If you are handing this project over to a new maintainer or know of a package that replaces it, please use
+            the field below to point users to the new package. In case you cannot point them to a new package, this one
+            will be tagged as abandoned and a replacement can be added later.</p>
 
 
-            <form method="post" {{ form_enctype(form) }}>
-                {{ form_widget(form) }}
+        <form method="post" {{ form_enctype(form) }}>
+            {{ form_widget(form) }}
 
 
-                <input type="submit" value="Abandon Package" />
-            </form>
-        </div>
+            <input type="submit" value="Abandon Package" />
+        </form>
     </div>
     </div>
 {% endblock %}
 {% endblock %}

+ 2 - 2
src/Packagist/WebBundle/Resources/views/Web/viewPackage.html.twig

@@ -35,12 +35,12 @@
                     <input type="submit" value="Delete" />
                     <input type="submit" value="Delete" />
                 </form>
                 </form>
             {% endif %}
             {% endif %}
-            {% if is_granted('ROLE_EDIT_PACKAGES') or package.maintainers.contains(app.user) and not package.abandoned %}
+            {% if (is_granted('ROLE_EDIT_PACKAGES') or package.maintainers.contains(app.user)) and (not package.abandoned or package.replacementPackage is empty)%}
                 <form class="action abandon" action="{{ path('abandon_package', {name: package.name}) }}">
                 <form class="action abandon" action="{{ path('abandon_package', {name: package.name}) }}">
                     <input type="submit" value="Abandon" />
                     <input type="submit" value="Abandon" />
                 </form>
                 </form>
             {% endif %}
             {% endif %}
-            {% if is_granted('ROLE_EDIT_PACKAGES') or package.maintainers.contains(app.user) and package.abandoned %}
+            {% if (is_granted('ROLE_EDIT_PACKAGES') or package.maintainers.contains(app.user)) and package.abandoned %}
                 <form class="action un-abandon" action="{{ path('unabandon_package', {name: package.name}) }}">
                 <form class="action un-abandon" action="{{ path('unabandon_package', {name: package.name}) }}">
                     <input type="submit" value="Un-abandon" />
                     <input type="submit" value="Un-abandon" />
                 </form>
                 </form>

+ 2 - 2
src/Packagist/WebBundle/Resources/views/macros.html.twig

@@ -22,9 +22,9 @@
                         [Not auto-updated]
                         [Not auto-updated]
                     {% endif %}
                     {% endif %}
                 </h1>
                 </h1>
-                {% if package.abandoned %}
+                {% if package.abandoned is defined and package.abandoned %}
                 <span class="abandoned">
                 <span class="abandoned">
-                    <i class="icon-warning-sign"></i> Abandoned! {% if package.replacementPackage is not empty %}Use: <a href="{{ path('view_package', {name: package.replacementPackage}) }}">{{ package.replacementPackage }}</a>{% endif %}
+                    <i class="icon-warning-sign"></i> Abandoned! {% if package.replacementPackage %}Use: <a href="{{ path('view_package', {name: package.replacementPackage}) }}">{{ package.replacementPackage }}</a>{% endif %}
                 </span>
                 </span>
                 {% endif %}
                 {% endif %}
                 {% if package.description is defined and package.description %}
                 {% if package.description is defined and package.description %}