summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-05-30 16:55:26 +0200
committerYorhel <git@yorhel.nl>2009-05-30 16:55:26 +0200
commitaa2f9e6b013e87c181569ce66c35cf962ea6f739 (patch)
treef09bcfbcf77c1f0dec050bdc8d979f216a3bb499
parentce482a878851d5aa6d11f7a46e8a68ec480b82c6 (diff)
Screen resolution filter on /r
-rw-r--r--lib/VNDB/DB/Releases.pm4
-rw-r--r--lib/VNDB/Handler/Releases.pm27
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;