Browse Source

Report errors to user on Force Update instead of confusing message, fixes #126

Jordi Boggiano 12 years ago
parent
commit
99dd18af9d

+ 2 - 2
src/Packagist/WebBundle/Command/UpdatePackagesCommand.php

@@ -85,7 +85,7 @@ class UpdatePackagesCommand extends ContainerAwareCommand
         $input->setInteractive(false);
         $input->setInteractive(false);
         $io = $verbose ? new ConsoleIO($input, $output, $this->getApplication()->getHelperSet()) : new NullIO;
         $io = $verbose ? new ConsoleIO($input, $output, $this->getApplication()->getHelperSet()) : new NullIO;
         $config = Factory::createConfig();
         $config = Factory::createConfig();
-        $loader = new ValidatingArrayLoader(new ArrayLoader());
+        $loader = new ValidatingArrayLoader(new ArrayLoader(), false);
 
 
         while ($ids) {
         while ($ids) {
             $packages = $doctrine->getRepository('PackagistWebBundle:Package')->getPackagesWithVersions(array_splice($ids, 0, 50));
             $packages = $doctrine->getRepository('PackagistWebBundle:Package')->getPackagesWithVersions(array_splice($ids, 0, 50));
@@ -99,7 +99,7 @@ class UpdatePackagesCommand extends ContainerAwareCommand
                     $repository->setLoader($loader);
                     $repository->setLoader($loader);
                     $updater->update($package, $repository, $flags, $start);
                     $updater->update($package, $repository, $flags, $start);
                 } catch (\Exception $e) {
                 } catch (\Exception $e) {
-                    $output->writeln('<error>Exception: '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().', skipping package '.$router->generate('view_package', array('name' => $package->getName()), true).'</error>');
+                    $output->writeln('<error>Error updating '.$router->generate('view_package', array('name' => $package->getName()), true).' ['.get_class($e).']: '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().'</error>');
                 }
                 }
             }
             }
 
 

+ 8 - 2
src/Packagist/WebBundle/Controller/ApiController.php

@@ -169,7 +169,7 @@ class ApiController extends Controller
 
 
         $updated = false;
         $updated = false;
         $config = Factory::createConfig();
         $config = Factory::createConfig();
-        $loader = new ValidatingArrayLoader(new ArrayLoader());
+        $loader = new ValidatingArrayLoader(new ArrayLoader(), false);
         $updater = $this->get('packagist.package_updater');
         $updater = $this->get('packagist.package_updater');
         $em = $this->get('doctrine.orm.entity_manager');
         $em = $this->get('doctrine.orm.entity_manager');
 
 
@@ -182,7 +182,13 @@ class ApiController extends Controller
                 $repository->setLoader($loader);
                 $repository->setLoader($loader);
                 $package->setAutoUpdated(true);
                 $package->setAutoUpdated(true);
                 $em->flush();
                 $em->flush();
-                $updater->update($package, $repository);
+                try {
+                    $updater->update($package, $repository);
+                } catch (\Exception $e) {
+                    // TODO send email to maintainer
+
+                    return new Response(json_encode(array('status' => 'error', 'message' => '['.get_class($e).'] '.$e->getMessage())), 400);
+                }
             }
             }
         }
         }
 
 

+ 15 - 4
src/Packagist/WebBundle/Controller/WebController.php

@@ -12,7 +12,7 @@
 
 
 namespace Packagist\WebBundle\Controller;
 namespace Packagist\WebBundle\Controller;
 
 
-use Composer\IO\NullIO;
+use Composer\IO\ArrayIO;
 use Composer\Factory;
 use Composer\Factory;
 use Composer\Repository\VcsRepository;
 use Composer\Repository\VcsRepository;
 use Composer\Package\Loader\ValidatingArrayLoader;
 use Composer\Package\Loader\ValidatingArrayLoader;
@@ -32,6 +32,7 @@ use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Symfony\Component\Console\Output\OutputInterface;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
@@ -418,11 +419,21 @@ class WebController extends Controller
                 set_time_limit(3600);
                 set_time_limit(3600);
                 $updater = $this->get('packagist.package_updater');
                 $updater = $this->get('packagist.package_updater');
 
 
+                $io = new ArrayIO('', OutputInterface::VERBOSITY_VERBOSE);
                 $config = Factory::createConfig();
                 $config = Factory::createConfig();
-                $repository = new VcsRepository(array('url' => $package->getRepository()), new NullIO, $config);
-                $loader = new ValidatingArrayLoader(new ArrayLoader());
+                $repository = new VcsRepository(array('url' => $package->getRepository()), $io, $config);
+                $loader = new ValidatingArrayLoader(new ArrayLoader(), false);
                 $repository->setLoader($loader);
                 $repository->setLoader($loader);
-                $updater->update($package, $repository, Updater::UPDATE_TAGS);
+
+                try {
+                    $updater->update($package, $repository, Updater::UPDATE_TAGS);
+                } catch (\Exception $e) {
+                    return new Response(json_encode(array(
+                        'status' => 'error',
+                        'message' => '['.get_class($e).'] '.$e->getMessage(),
+                        'details' => '<pre>'.$io->getOutput().'</pre>'
+                    )), 400);
+                }
             }
             }
 
 
             return new Response('{"status": "success"}', 202);
             return new Response('{"status": "success"}', 202);

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

@@ -632,6 +632,10 @@ pre {
   margin: 10px 0;
   margin: 10px 0;
 }
 }
 
 
+.humane pre {
+  text-align: left;
+}
+
 /*
 /*
     // ========================================== \\
     // ========================================== \\
    ||                                              ||
    ||                                              ||

+ 28 - 10
src/Packagist/WebBundle/Resources/public/js/layout.js

@@ -1,10 +1,28 @@
-"use strict";
-
-/**
- * Ajax error handler
- */
-$.ajaxSetup({
-    error: function (xhr) {
-        humane.info("We're so sorry, something is wrong on our end.");
-    }
-});
+(function ($, humane) {
+    "use strict";
+
+    /**
+     * Ajax error handler
+     */
+    $.ajaxSetup({
+        error: function (xhr) {
+            var resp, message, details = '';
+
+            humane.remove();
+
+            if (xhr.responseText) {
+                try {
+                    resp = JSON.parse(xhr.responseText);
+                    if (resp.status && resp.status === 'error') {
+                        message = resp.message;
+                        details = resp.details;
+                    }
+                } catch (e) {
+                    message = "We're so sorry, something is wrong on our end.";
+                }
+            }
+
+            humane.log(details ? [message, details] : message, {timeout: 0, clickToClose: true});
+        }
+    });
+})(jQuery, humane);

+ 3 - 3
src/Packagist/WebBundle/Resources/public/js/view.js

@@ -34,7 +34,7 @@
                 window.location.href = window.location.href;
                 window.location.href = window.location.href;
             },
             },
             context: this
             context: this
-        });
+        }).complete(function () { submit.removeClass('loading'); });
         submit.addClass('loading');
         submit.addClass('loading');
     });
     });
     $('.package .mark-favorite').click(function (e) {
     $('.package .mark-favorite').click(function (e) {
@@ -42,7 +42,7 @@
             dataType: 'json',
             dataType: 'json',
             cache: false,
             cache: false,
             success: function (data) {
             success: function (data) {
-                $(this).removeClass('loading').toggleClass('is-favorite');
+                $(this).toggleClass('is-favorite');
             },
             },
             context: this
             context: this
         };
         };
@@ -58,7 +58,7 @@
             options.data = {"package": $(this).data('package')};
             options.data = {"package": $(this).data('package')};
             options.url = $(this).data('add-url');
             options.url = $(this).data('add-url');
         }
         }
-        $.ajax(options);
+        $.ajax(options).complete(function () { $(this).removeClass('loading'); });
         $(this).addClass('loading');
         $(this).addClass('loading');
     });
     });
     $('.package .force-delete').submit(function (e) {
     $('.package .force-delete').submit(function (e) {

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

@@ -9,7 +9,7 @@
 {% endblock %}
 {% endblock %}
 
 
 {% block scripts %}
 {% block scripts %}
-    <script src="{{ asset('bundles/packagistweb/js/view.js?v=6')}}"></script>
+    <script src="{{ asset('bundles/packagistweb/js/view.js?v=7')}}"></script>
 {% endblock %}
 {% endblock %}
 
 
 {% block content %}
 {% block content %}

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

@@ -18,7 +18,7 @@
         <![endif]-->
         <![endif]-->
 
 
         <link rel="stylesheet" href="{{ asset('bundles/packagistweb/css/main.css?v=9') }}" />
         <link rel="stylesheet" href="{{ asset('bundles/packagistweb/css/main.css?v=9') }}" />
-        <link rel="stylesheet" href="{{ asset('css/humane/jackedup.css?v=2') }}" />
+        <link rel="stylesheet" href="{{ asset('css/humane/jackedup.css?v=3') }}" />
 
 
         {% block head_feeds %}
         {% block head_feeds %}
         <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="{{ url('feed_packages', {_format: 'rss'}) }}" />
         <link rel="alternate" type="application/rss+xml" title="Newly Submitted Packages - Packagist" href="{{ url('feed_packages', {_format: 'rss'}) }}" />
@@ -110,8 +110,8 @@
 
 
         <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
         <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
         <script>!window.jQuery && document.write(unescape('%3Cscript src="{{ asset('js/libs/jquery-1.8.2.min.js') }}"%3E%3C/script%3E'))</script>
         <script>!window.jQuery && document.write(unescape('%3Cscript src="{{ asset('js/libs/jquery-1.8.2.min.js') }}"%3E%3C/script%3E'))</script>
-        <script src="{{ asset('js/libs/humane.min.js') }}"></script>
-        <script src="{{ asset('bundles/packagistweb/js/layout.js') }}"></script>
+        <script src="{{ asset('js/libs/humane.min.js?v=2') }}"></script>
+        <script src="{{ asset('bundles/packagistweb/js/layout.js?v=2') }}"></script>
         <script src="{{ asset('bundles/packagistweb/js/search.js')}}"></script>
         <script src="{{ asset('bundles/packagistweb/js/search.js')}}"></script>
 
 
         {% if not app.debug and google_analytics.ga_key %}
         {% if not app.debug and google_analytics.ga_key %}

+ 42 - 41
web/css/humane/jackedup.css

@@ -1,51 +1,45 @@
 html,
 html,
 body {
 body {
-  height: 100%;
+  min-height: 100%;
 }
 }
-.humane {
+.humane,
+.humane-jackedup {
   position: fixed;
   position: fixed;
   -moz-transition: all 0.6s ease-in-out;
   -moz-transition: all 0.6s ease-in-out;
   -webkit-transition: all 0.6s ease-in-out;
   -webkit-transition: all 0.6s ease-in-out;
   -ms-transition: all 0.6s ease-in-out;
   -ms-transition: all 0.6s ease-in-out;
   -o-transition: all 0.6s ease-in-out;
   -o-transition: all 0.6s ease-in-out;
   transition: all 0.6s ease-in-out;
   transition: all 0.6s ease-in-out;
-  z-index: -1;
-}
-.humane.humane-animate,
-.humane.humane-js-animate {
   z-index: 100000;
   z-index: 100000;
+  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
 }
 }
-.humane {
+.humane,
+.humane-jackedup {
   font-family: Helvetica Neue, Helvetica, san-serif;
   font-family: Helvetica Neue, Helvetica, san-serif;
   font-size: 18px;
   font-size: 18px;
   letter-spacing: -1px;
   letter-spacing: -1px;
   top: 20px;
   top: 20px;
   left: 30%;
   left: 30%;
   opacity: 0;
   opacity: 0;
-  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
   width: 40%;
   width: 40%;
   color: #333;
   color: #333;
   padding: 10px;
   padding: 10px;
   text-align: center;
   text-align: center;
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAACWCAYAAAAfduJyAAAABmJLR0QA/wD/AP+gvaeTAAAAIklEQVQokWNgYGCQZGJgYGDARTDSQnboGDqsnDt0DKWNLAAkiQFdC+vZNQAAAABJRU5ErkJggg==');
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAACWCAYAAAAfduJyAAAABmJLR0QA/wD/AP+gvaeTAAAAIklEQVQokWNgYGCQZGJgYGDARTDSQnboGDqsnDt0DKWNLAAkiQFdC+vZNQAAAABJRU5ErkJggg==');
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.10)), color-stop(1, rgba(0,0,0,0.20))) no-repeat;
-  background: -moz-linear-gradient(top, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.20) 100%) no-repeat;
-  background: -webkit-linear-gradient(top, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.20) 100%) no-repeat;
-  background: -ms-linear-gradient(top, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.20) 100%) no-repeat;
-  background: -o-linear-gradient(top, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.20) 100%) no-repeat;
-  background: linear-gradient(top, rgba(0,0,0,0.10) 0%, rgba(0,0,0,0.20) 100%) no-repeat;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.1)), color-stop(1, rgba(0,0,0,0.2))) no-repeat;
+  background: -moz-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.2) 100%) no-repeat;
+  background: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.2) 100%) no-repeat;
+  background: -ms-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.2) 100%) no-repeat;
+  background: -o-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.2) 100%) no-repeat;
+  background: linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.2) 100%) no-repeat;
   background-color: #fff;
   background-color: #fff;
   -moz-border-radius: 3px;
   -moz-border-radius: 3px;
   -webkit-border-radius: 3px;
   -webkit-border-radius: 3px;
-  -ms-border-radius: 3px;
-  -o-border-radius: 3px;
   border-radius: 3px;
   border-radius: 3px;
-  text-shadow: 0 1px 1px rgba(255,255,255,0.80);
-  -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.50);
-  -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.50);
-  -ms-box-shadow: 0 1px 2px rgba(0,0,0,0.50);
-  -o-box-shadow: 0 1px 2px rgba(0,0,0,0.50);
-  box-shadow: 0 1px 2px rgba(0,0,0,0.50);
+  text-shadow: 0 1px 1px rgba(255,255,255,0.8);
+  -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5);
+  -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5);
+  box-shadow: 0 1px 2px rgba(0,0,0,0.5);
   -moz-transform: translateY(-100px);
   -moz-transform: translateY(-100px);
   -webkit-transform: translateY(-100px);
   -webkit-transform: translateY(-100px);
   -ms-transform: translateY(-100px);
   -ms-transform: translateY(-100px);
@@ -53,26 +47,31 @@ body {
   transform: translateY(-100px);
   transform: translateY(-100px);
 }
 }
 .humane p,
 .humane p,
-.humane ul {
+.humane-jackedup p,
+.humane ul,
+.humane-jackedup ul {
   margin: 0;
   margin: 0;
   padding: 0;
   padding: 0;
 }
 }
-.humane ul {
+.humane ul,
+.humane-jackedup ul {
   list-style: none;
   list-style: none;
 }
 }
-.humane.humane-info {
+.humane.humane-jackedup-info,
+.humane-jackedup.humane-jackedup-info {
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAYAAAAp8ov1AAAABmJLR0QA/wD/AP+gvaeTAAAAR0lEQVQokWNISfn/n4mBgeE/EwMDAwMqQYQYmdoGlxgjI4rY//+Dx2nUFRsQZ2ALTrQQp8QL1DWeqASC014y7aCx8QwMDAwA1aZBIulmpvwAAAAASUVORK5CYII=');
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAYAAAAp8ov1AAAABmJLR0QA/wD/AP+gvaeTAAAAR0lEQVQokWNISfn/n4mBgeE/EwMDAwMqQYQYmdoGlxgjI4rY//+Dx2nUFRsQZ2ALTrQQp8QL1DWeqASC014y7aCx8QwMDAwA1aZBIulmpvwAAAAASUVORK5CYII=');
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.70)), color-stop(1, rgba(0,0,0,0.85))) no-repeat;
-  background: -moz-linear-gradient(top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
-  background: -webkit-linear-gradient(top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
-  background: -ms-linear-gradient(top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
-  background: -o-linear-gradient(top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
-  background: linear-gradient(top, rgba(0,0,0,0.70) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0,0,0,0.7)), color-stop(1, rgba(0,0,0,0.85))) no-repeat;
+  background: -moz-linear-gradient(top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
+  background: -webkit-linear-gradient(top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
+  background: -ms-linear-gradient(top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
+  background: -o-linear-gradient(top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
+  background: linear-gradient(top, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.85) 100%) no-repeat;
   background-color: #fff;
   background-color: #fff;
   color: #fff;
   color: #fff;
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
 }
 }
-.humane.humane-success {
+.humane.humane-jackedup-success,
+.humane-jackedup.humane-jackedup-success {
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAYAAAAp8ov1AAAABmJLR0QA/wD/AP+gvaeTAAAASElEQVQokc2SMQ4AIAgDD9/K/79QVzWaENTownAJbWnA5SqACkA/Aiy59hczrGVC30Q7y57EmNU5NL5zwln50IMsfZMel+UBKtFBQSLWM9wLAAAAAElFTkSuQmCC');
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAYAAAAp8ov1AAAABmJLR0QA/wD/AP+gvaeTAAAASElEQVQokc2SMQ4AIAgDD9/K/79QVzWaENTownAJbWnA5SqACkA/Aiy59hczrGVC30Q7y57EmNU5NL5zwln50IMsfZMel+UBKtFBQSLWM9wLAAAAAElFTkSuQmCC');
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #62c462), color-stop(1, #57a957)) no-repeat;
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #62c462), color-stop(1, #57a957)) no-repeat;
   background: -moz-linear-gradient(top, #62c462 0%, #57a957 100%) no-repeat;
   background: -moz-linear-gradient(top, #62c462 0%, #57a957 100%) no-repeat;
@@ -84,7 +83,8 @@ body {
   color: #fff;
   color: #fff;
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
 }
 }
-.humane.humane-error {
+.humane.humane-jackedup-error,
+.humane-jackedup.humane-jackedup-error {
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAIAAACmkByiAAAABmJLR0QA/wD/AP+gvaeTAAAAf0lEQVQokY2TOQ7AIAwER/5mivy/yRc2RQDhA0jhghFYO5bhuS+TZMAoIUMEhhH4loGhfu71cenM3DutWMsaeGKjv3zO5N17KLPJ0+fQD8cpv5uVLPo4vnX0PpXj0nuaaeVzdmw+yXG1O96n2p3kozB757Ni1Z5UPsU9SP8AeAG1kHXE+7RlPAAAAABJRU5ErkJggg==');
   background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADICAIAAACmkByiAAAABmJLR0QA/wD/AP+gvaeTAAAAf0lEQVQokY2TOQ7AIAwER/5mivy/yRc2RQDhA0jhghFYO5bhuS+TZMAoIUMEhhH4loGhfu71cenM3DutWMsaeGKjv3zO5N17KLPJ0+fQD8cpv5uVLPo4vnX0PpXj0nuaaeVzdmw+yXG1O96n2p3kozB757Ni1Z5UPsU9SP8AeAG1kHXE+7RlPAAAAABJRU5ErkJggg==');
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ee5f5b), color-stop(1, #c43c35)) no-repeat;
   background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ee5f5b), color-stop(1, #c43c35)) no-repeat;
   background: -moz-linear-gradient(top, #ee5f5b 0%, #c43c35 100%) no-repeat;
   background: -moz-linear-gradient(top, #ee5f5b 0%, #c43c35 100%) no-repeat;
@@ -96,29 +96,30 @@ body {
   color: #fff;
   color: #fff;
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
   text-shadow: 0 -1px 1px rgba(0,0,0,0.35);
 }
 }
-.humane.humane-animate {
+.humane-animate,
+.humane-jackedup.humane-jackedup-animate {
   opacity: 1;
   opacity: 1;
-  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
   -moz-transform: translateY(0);
   -moz-transform: translateY(0);
   -webkit-transform: translateY(0);
   -webkit-transform: translateY(0);
   -ms-transform: translateY(0);
   -ms-transform: translateY(0);
   -o-transform: translateY(0);
   -o-transform: translateY(0);
   transform: translateY(0);
   transform: translateY(0);
 }
 }
-.humane.humane-animate:hover {
+.humane-animate:hover,
+.humane-jackedup.humane-jackedup-animate:hover {
   opacity: 0.7;
   opacity: 0.7;
-  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
 }
 }
-.humane.humane-js-animate {
+.humane-js-animate,
+.humane-jackedup.humane-jackedup-js-animate {
   opacity: 1;
   opacity: 1;
-  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
   -moz-transform: translateY(0);
   -moz-transform: translateY(0);
   -webkit-transform: translateY(0);
   -webkit-transform: translateY(0);
   -ms-transform: translateY(0);
   -ms-transform: translateY(0);
   -o-transform: translateY(0);
   -o-transform: translateY(0);
   transform: translateY(0);
   transform: translateY(0);
 }
 }
-.humane.humane-js-animate:hover {
+.humane-js-animate:hover,
+.humane-jackedup.humane-jackedup-js-animate:hover {
   opacity: 0.7;
   opacity: 0.7;
   filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
   filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
-}
+}

File diff suppressed because it is too large
+ 0 - 11
web/js/libs/humane.min.js


Some files were not shown because too many files changed in this diff