summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-05-22 09:46:41 +0200
committerYorhel <git@yorhel.nl>2009-05-22 09:46:41 +0200
commit6a5b24e04aadbb5a0327c4ce335f37f1506000a1 (patch)
tree1fa9532911d2dcb0287d9528e1b776239f7d0a9c
parent1ee636e3a68f9d03509563e2a833e11ed332fccb (diff)
Added medium filter on /r
-rw-r--r--ChangeLog4
-rw-r--r--lib/VNDB/DB/Releases.pm4
-rw-r--r--lib/VNDB/Handler/Releases.pm13
3 files changed, 20 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index d9512765..1b19ca29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2.4 - ?
+ - Release search + browser + filters
+ - Javascript date input
+
2.3 - 2009-04-01
- No page reload needed when changing rlist status from vn page
- Random VN quotes to the footer of every page
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm
index a4db2fc0..3831b0c8 100644
--- a/lib/VNDB/DB/Releases.pm
+++ b/lib/VNDB/DB/Releases.pm
@@ -9,7 +9,7 @@ use Exporter 'import';
our @EXPORT = qw|dbReleaseGet dbReleaseAdd dbReleaseEdit|;
-# Options: id vid rev order unreleased page results what date platforms languages type minage search
+# Options: id vid rev order unreleased page results what date media platforms languages type minage search
# What: extended changes vn producers platforms media
sub dbReleaseGet {
my($self, %o) = @_;
@@ -42,6 +42,8 @@ sub dbReleaseGet {
'(rr.minage !s ? AND rr.minage <> -1)' => [ $o{minage}[0] ? '<=' : '>=', $o{minage}[1] ] ) : (),
$o{patch} ? (
'rr.patch = ?', $o{patch} == 1 ? 1 : 0) : (),
+ $o{media} ? (
+ 'rr.id IN(SELECT irm.rid FROM releases_media irm JOIN releases ir ON ir.latest = irm.rid WHERE irm.medium IN(!l))' => [ $o{media} ] ) : (),
);
if($o{search}) {
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm
index 5dec02ec..30fede3d 100644
--- a/lib/VNDB/Handler/Releases.pm
+++ b/lib/VNDB/Handler/Releases.pm
@@ -413,6 +413,7 @@ sub browse {
{ name => 'q', required => 0, default => '', maxlength => 500 },
{ name => 'ln', required => 0, multi => 1, default => '', enum => [ keys %{$self->{languages}} ] },
{ name => 'pl', required => 0, multi => 1, default => '', enum => [ keys %{$self->{platforms}} ] },
+ { name => 'me', required => 0, multi => 1, default => '', enum => [ keys %{$self->{media}} ] },
{ name => 'tp', required => 0, default => -1, enum => [ -1..$#{$self->{release_types}} ] },
{ name => 'pa', required => 0, default => 0, enum => [ 0..2 ] },
{ name => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] },
@@ -430,6 +431,7 @@ sub browse {
$f->{q} ? (search => $f->{q}) : (),
$f->{pl}[0] ? (platforms => $f->{pl}) : (),
$f->{ln}[0] ? (languages => $f->{ln}) : (),
+ $f->{me}[0] ? (media => $f->{me}) : (),
$f->{tp} >= 0 ? (type => $f->{tp}) : (),
$f->{ma_a} || $f->{ma_m} ? (minage => [$f->{ma_m}, $f->{ma_a}]) : (),
$f->{pa} ? (patch => $f->{pa}) : (),
@@ -546,6 +548,17 @@ sub _filters {
end;
}
+ h2;
+ lit 'Media <b>(boolean or, selecting more gives more results)</b>';
+ end;
+ for my $i (sort keys %{$self->{media}}) {
+ next if $i eq 'otc';
+ span;
+ input type => 'checkbox', name => 'me', value => $i, id => "med_$i", grep($_ eq $i, @{$f->{me}}) ? (checked => 'checked') : ();
+ label for => "med_$i", $self->{media}{$i}[0];
+ end;
+ }
+
div style => 'text-align: center; clear: left;';
input type => 'submit', value => 'Apply', class => 'submit';
end;