diff options
author | Yorhel <git@yorhel.nl> | 2009-05-22 09:46:41 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-05-22 09:46:41 +0200 |
commit | 6a5b24e04aadbb5a0327c4ce335f37f1506000a1 (patch) | |
tree | 1fa9532911d2dcb0287d9528e1b776239f7d0a9c | |
parent | 1ee636e3a68f9d03509563e2a833e11ed332fccb (diff) |
Added medium filter on /r
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 13 |
3 files changed, 20 insertions, 1 deletions
@@ -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; |