]> git.sesse.net Git - pr0n/blobdiff - perl/Sesse/pr0n/Index.pm
Fix tons of JSLint issues.
[pr0n] / perl / Sesse / pr0n / Index.pm
index ee4c0f967a838c8ef2ea4ed9f84b9dfcaf45a09d..72fd824943d93ca9b460ba0a2cb756463b6fe4da 100644 (file)
@@ -29,7 +29,7 @@ sub handler {
        }
 
        # Fix common error: pr0n.sesse.net/event -> pr0n.sesse.net/event/
-       if ($r->uri !~ m#/$#) {
+       if ($r->uri !~ /\/$/) {
                $r->headers_out->{'location'} = "/$event/";
                return Apache2::Const::REDIRECT;
        }
@@ -115,17 +115,17 @@ sub handler {
 
                if ($model eq '') {
                        # no defined model
-                       $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE tag='Model' AND TRIM(value)<>'' )";
+                       $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE key='Model' AND TRIM(value)<>'' )";
                } else {
-                       $where .= " AND id IN ( SELECT image FROM exif_info WHERE tag='Model' AND TRIM(value)=$mq )";
+                       $where .= " AND id IN ( SELECT image FROM exif_info WHERE key='Model' AND TRIM(value)=$mq )";
                }
        
                # This doesn't match 1:1 if there's both lens and lensspec, but it should be OK in practice
                if ($lens eq '') {
                        # no defined lens
-                       $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE (tag='Lens' OR tag='LensSpec') AND TRIM(value)<>'' )";
+                       $where .= " AND id NOT IN ( SELECT image FROM exif_info WHERE (key='Lens' OR key='LensSpec') AND TRIM(value)<>'' )";
                } else {
-                       $where .= " AND id IN ( SELECT image FROM exif_info WHERE (tag='Lens' OR tag='LensSpec') AND TRIM(value)=$lq )";
+                       $where .= " AND id IN ( SELECT image FROM exif_info WHERE (key='Lens' OR key='LensSpec') AND TRIM(value)=$lq )";
                }
        }
 
@@ -173,8 +173,16 @@ sub handler {
        if ($settings{'fullscreen'}) {
                $r->content_type("text/html; charset=utf-8");
                Sesse::pr0n::Templates::print_template($r, "fullscreen-header", { title => "$name [$event]" });
+
+               my @files = ();
                while (my $ref = $q->fetchrow_hashref()) {
-                       $r->print("        [ \"" . $ref->{'event'} . "\", \"" . $ref->{'filename'} . "\" ],\n");
+                       push @files, [ $ref->{'event'}, $ref->{'filename'} ];
+               }
+               
+               for my $i (0..$#files) {
+                       $r->print("        [ \"" . $files[$i]->[0] . "\", \"" . $files[$i]->[1] . "\" ]");
+                       $r->print(",") unless ($i == $#files);
+                       $r->print("\n");
                }
 
                my %settings_no_fullscreen = %settings;
@@ -220,9 +228,9 @@ sub handler {
                                        COUNT(*) AS num
                                FROM ( SELECT * FROM images WHERE vhost=? $where ) i
                                        LEFT JOIN exif_info model ON i.id=model.image
-                                       LEFT JOIN ( SELECT * FROM exif_info WHERE tag='Lens' ) lens ON i.id=lens.image
-                                       LEFT JOIN ( SELECT * FROM exif_info WHERE tag='LensSpec') lens_spec ON i.id=lens_spec.image
-                               WHERE model.tag='Model'
+                                       LEFT JOIN ( SELECT * FROM exif_info WHERE key='Lens' ) lens ON i.id=lens.image
+                                       LEFT JOIN ( SELECT * FROM exif_info WHERE key='LensSpec') lens_spec ON i.id=lens_spec.image
+                               WHERE model.key='Model'
                                GROUP BY 1,2
                                ORDER BY 1,2")
                                or die "Couldn't prepare to find equipment: $!";
@@ -251,17 +259,28 @@ sub handler {
                                for my $e (@equipment) {
                                        my $eqspec = $e->{'model'};
                                        $eqspec .= ', ' . $e->{'lens'} if (defined($e->{'lens'}));
+                                       $eqspec = HTML::Entities::encode_entities($eqspec);
 
-                                       my %newsettings = %defsettings;
-                                       $newsettings{'model'} = $e->{'model'};
-                                       $newsettings{'lens'} = defined($e->{'lens'}) ? $e->{'lens'} : '';
+                                       my %newsettings = %settings;
+
+                                       my $action;
+                                       if (defined($model) && defined($lens)) {
+                                               chomp ($action = Sesse::pr0n::Templates::fetch_template($r, "unfilter"));
+                                               $newsettings{'model'} = undef;
+                                               $newsettings{'lens'} = undef;
+                                       } else {
+                                               chomp ($action = Sesse::pr0n::Templates::fetch_template($r, "filter"));
+                                               $newsettings{'model'} = $e->{'model'};
+                                               $newsettings{'lens'} = defined($e->{'lens'}) ? $e->{'lens'} : '';
+                                       }
+                                       
                                        my $url = "/$event/" . Sesse::pr0n::Common::get_query_string(\%newsettings, \%defsettings);
 
                                        # This isn't correct for all languages. Fix if we ever need to care. :-)
                                        if ($e->{'num'} == 1) {
-                                               Sesse::pr0n::Templates::print_template($r, "equipment-item-singular", { eqspec => $eqspec, filterurl => $url });
+                                               Sesse::pr0n::Templates::print_template($r, "equipment-item-singular", { eqspec => $eqspec, filterurl => $url, action => $action });
                                        } else {
-                                               Sesse::pr0n::Templates::print_template($r, "equipment-item", { eqspec => $eqspec, num => $e->{'num'}, filterurl => $url });
+                                               Sesse::pr0n::Templates::print_template($r, "equipment-item", { eqspec => $eqspec, num => $e->{'num'}, filterurl => $url, action => $action });
                                        }
                                }
                                Sesse::pr0n::Templates::print_template($r, "equipment-end");