diff options
author | Yorhel <git@yorhel.nl> | 2010-11-21 12:21:32 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2010-11-21 12:21:32 +0100 |
commit | 66e8cbc808775356ea5beeea2f53ab6958ab6c2e (patch) | |
tree | 7c0c882fe225645d341e794226ca8006b7f8b2eb /lib/VNDB/Handler/Releases.pm | |
parent | d93c2ae8db73c8936cc7261306886dcf3f64ccf9 (diff) |
Implemented the client side of the new release filter system
This isn't entirely functional yet, the server side will need to be
rewritten as well. And after that new filters should be added and this
system should also be used for VN/producer search.
script.js is getting quite large with all those new translation strings,
it may be an idea to generate a separate .js file for each language and
only load the one being used.
I won't have a valid reason to feel bored anytime soon, at least...
Diffstat (limited to 'lib/VNDB/Handler/Releases.pm')
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 117 |
1 files changed, 11 insertions, 106 deletions
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index f9c600bd..735491f2 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -531,7 +531,17 @@ sub browse { $_&&($url .= ";me=$_") for @{$f->{me}}; $self->htmlHeader(title => mt('_rbrowse_title')); - _filters($self, $f, !@filters || !@$list); + + form method => 'get', action => '/r', 'accept-charset' => 'UTF-8'; + div class => 'mainbox'; + h1 mt '_rbrowse_title'; + $self->htmlSearchBox('r', $f->{q}); + a id => 'filselect', href => '#'; + lit '<i>▸</i> '.mt('_rbrowse_filters').'<i></i>'; + end; + input type => 'hidden', class => 'hidden', name => 'fil', id => 'fil', value => ''; + end; + $self->htmlBrowse( class => 'relbrowse', items => $list, @@ -576,110 +586,5 @@ sub browse { } -sub _filters { - my($self, $f, $shown) = @_; - - form method => 'get', action => '/r', 'accept-charset' => 'UTF-8'; - div class => 'mainbox'; - h1 mt '_rbrowse_title'; - - $self->htmlSearchBox('r', $f->{q}); - - a id => 'advselect', href => '#'; - lit '<i>'.($shown?'▾':'▸').'</i> '.mt('_rbrowse_filters'); - end; - div id => 'advoptions', !$shown ? (class => 'hidden') : (); - - h2 mt '_rbrowse_filters'; - table class => 'formtable', style => 'margin-left: 0'; - Tr class => 'newfield'; - td class => 'label'; label for => 'ma_m', mt '_rbrowse_minage'; end; - td class => 'field'; - Select id => 'ma_m', name => 'ma_m', style => 'width: 160px'; - option value => 0, $f->{ma_m} == 0 ? ('selected' => 'selected') : (), mt '_rbrowse_ge'; - option value => 1, $f->{ma_m} == 1 ? ('selected' => 'selected') : (), mt '_rbrowse_le'; - end; - Select id => 'ma_a', name => 'ma_a', style => 'width: 80px; text-align: center'; - defined($_) && option value => $_, $f->{ma_a} == $_ ? ('selected' => 'selected') : (), minage $_ - for (@{$self->{age_ratings}}); - end; - end; - td rowspan => 5, style => 'padding-left: 40px'; - label for => 're', mt '_rbrowse_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 => mt('_rbrowse_type'), - options => [ ['', mt '_rbrowse_all'], map [ $_, mt "_rtype_$_" ], @{$self->{release_types}} ]]); - $self->htmlFormPart($f, [ select => short => 'pa', name => mt('_rbrowse_patch'), - options => [ [0, mt '_rbrowse_all' ], [1, mt '_rbrowse_patchonly'], [2, mt '_rbrowse_patchnone']]]); - $self->htmlFormPart($f, [ select => short => 'fw', name => mt('_rbrowse_freeware'), - options => [ [0, mt '_rbrowse_all' ], [1, mt '_rbrowse_freewareonly'], [2, mt '_rbrowse_freewarenone']]]); - $self->htmlFormPart($f, [ select => short => 'do', name => mt('_rbrowse_doujin'), - options => [ [0, mt '_rbrowse_all' ], [1, mt '_rbrowse_doujinonly'], [2, mt '_rbrowse_doujinnone']]]); - $self->htmlFormPart($f, [ date => short => 'mi', name => mt '_rbrowse_dateafter' ]); - $self->htmlFormPart($f, [ date => short => 'ma', name => mt '_rbrowse_datebefore' ]); - end; - - h2; - txt mt '_rbrowse_languages'; - b ' ('.mt('_rbrowse_boolor').')'; - end; - for my $i (@{$self->{languages}}) { - span; - input type => 'checkbox', name => 'ln', value => $i, id => "lang_$i", grep($_ eq $i, @{$f->{ln}}) ? (checked => 'checked') : (); - label for => "lang_$i"; - cssicon "lang $i", mt "_lang_$i"; - txt mt "_lang_$i"; - end; - end; - } - - h2; - txt mt '_rbrowse_platforms'; - b ' ('.mt('_rbrowse_boolor').')'; - end; - for my $i (sort @{$self->{platforms}}) { - span; - input type => 'checkbox', name => 'pl', value => $i, id => "plat_$i", grep($_ eq $i, @{$f->{pl}}) ? (checked => 'checked') : (); - label for => "plat_$i"; - cssicon $i, mt "_plat_$i"; - txt mt "_plat_$i"; - end; - end; - } - - h2; - txt mt '_rbrowse_media'; - b ' ('.mt('_rbrowse_boolor').')'; - end; - for my $i (sort keys %{$self->{media}}) { - span; - input type => 'checkbox', name => 'me', value => $i, id => "med_$i", grep($_ eq $i, @{$f->{me}}) ? (checked => 'checked') : (); - label for => "med_$i", mt "_med_$i", 1; - end; - } - - div style => 'text-align: center; clear: left;'; - input type => 'submit', value => mt('_rbrowse_apply'), class => 'submit'; - input type => 'reset', value => mt('_rbrowse_clear'), class => 'submit', onclick => 'location.href="/r"'; - end; - end; - end; - end; -} - - 1; |