diff options
author | Yorhel <git@yorhel.nl> | 2009-05-30 16:55:26 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-05-30 16:55:26 +0200 |
commit | aa2f9e6b013e87c181569ce66c35cf962ea6f739 (patch) | |
tree | f09bcfbcf77c1f0dec050bdc8d979f216a3bb499 /lib | |
parent | ce482a878851d5aa6d11f7a46e8a68ec480b82c6 (diff) |
Screen resolution filter on /r
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 27 |
2 files changed, 26 insertions, 5 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 9491d213..659f8f27 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 media platforms languages type minage search +# Options: id vid rev order unreleased page results what date media platforms languages type minage search resolutions # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -44,6 +44,8 @@ sub dbReleaseGet { '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} ] ) : (), + $o{resolutions} ? ( + 'rr.resolution IN(!l)' => [ $o{resolutions} ] ) : (), ); if($o{search}) { diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index db874b1f..b9ca71a7 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -474,6 +474,7 @@ sub browse { { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, { name => 'mi', required => 0, default => 0, template => 'int' }, { name => 'ma', required => 0, default => 99999999, template => 'int' }, + { name => 're', required => 0, multi => 1, default => 0, enum => [ 1..$#{$self->{resolutions}} ] }, ); return 404 if $f->{_err}; @@ -483,6 +484,7 @@ sub browse { $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), $f->{me}[0] ? (media => $f->{me}) : (), + $f->{re}[0] ? (resolutions => $f->{re} ) : (), $f->{tp} >= 0 ? (type => $f->{tp}) : (), $f->{ma_a} || $f->{ma_m} ? (minage => [$f->{ma_m}, $f->{ma_a}]) : (), $f->{pa} ? (patch => $f->{pa}) : (), @@ -498,6 +500,8 @@ sub browse { my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a};q=$f->{q};mi=$f->{mi};ma=$f->{ma}"; $_&&($url .= ";ln=$_") for @{$f->{ln}}; $_&&($url .= ";pl=$_") for @{$f->{pl}}; + $_&&($url .= ";re=$_") for @{$f->{re}}; + $_&&($url .= ";me=$_") for @{$f->{me}}; $self->htmlHeader(title => 'Browse releases'); _filters($self, $f, !@filters || !$list); @@ -556,10 +560,6 @@ sub _filters { h2 'Filters'; table class => 'formtable', style => 'margin-left: 0'; - $self->htmlFormPart($f, [ select => short => 'tp', name => 'Release type', - options => [ [-1, 'All'], map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ]]); - $self->htmlFormPart($f, [ select => short => 'pa', name => 'Patch status', - options => [ [0, 'All'], [1, 'Only patches'], [2, 'Only standalone releases']]]); Tr class => 'newfield'; td class => 'label'; label for => 'ma_m', 'Age rating'; end; td class => 'field'; @@ -573,7 +573,26 @@ sub _filters { for (sort { $a <=> $b } keys %{$self->{age_ratings}}); end; end; + td rowspan => 5, style => 'padding-left: 40px'; + label for => 're', 'Screen resolution'; br; + Select id => 're', name => 're', multiple => 'multiple', size => 8; + my $l=''; + for my $i (1..$#{$self->{resolutions}}) { + if($l ne $self->{resolutions}[$i][1]) { + end if $l; + $l = $self->{resolutions}[$i][1]; + optgroup label => $l; + } + option value => $i, scalar grep($i==$_, @{$f->{re}}) ? (selected => 'selected') : (), $self->{resolutions}[$i][0]; + } + end if $l; + end; + end; end; + $self->htmlFormPart($f, [ select => short => 'tp', name => 'Release type', + options => [ [-1, 'All'], map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ]]); + $self->htmlFormPart($f, [ select => short => 'pa', name => 'Patch status', + options => [ [0, 'All'], [1, 'Only patches'], [2, 'Only standalone releases']]]); $self->htmlFormPart($f, [ date => short => 'mi', name => 'Released after' ]); $self->htmlFormPart($f, [ date => short => 'ma', name => 'Released before' ]); end; |