From a979409bd60aa04593dfd3fa1c1bbc5eb5248e8a Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 9 May 2009 12:39:11 +0200 Subject: Started on a release browser This browser is still -very- basic, more filters and options will be added later. --- lib/VNDB/DB/Releases.pm | 4 ++- lib/VNDB/Handler/Releases.pm | 62 ++++++++++++++++++++++++++++++++++++++++++++ lib/VNDB/Util/LayoutHTML.pm | 1 + 3 files changed, 66 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 1df13894..ddf9a66c 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 +# Options: id vid rev order unreleased page results what date # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -29,6 +29,8 @@ sub dbReleaseGet { 'rv.vid = ?' => $o{vid} ) : (), defined $o{unreleased} ? ( q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), + $o{date} ? ( + '(rr.released > ? AND rr.released < ?)' => [ $o{date}*100, $o{date}*100+99 ] ) : (), ); my @join = ( diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 8cd2eb43..ffe9ddc2 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -11,6 +11,7 @@ use POSIX 'strftime'; YAWF::register( qr{r([1-9]\d*)(?:\.([1-9]\d*))?} => \&page, qr{(v)([1-9]\d*)/add} => \&edit, + qr{r} => \&browse, qr{r(?:([1-9]\d*)(?:\.([1-9]\d*))?/edit)} => \&edit, ); @@ -423,5 +424,66 @@ sub _form { } +sub browse { + my $self = shift; + + my $f = $self->formValidate( + { name => 'p', required => 0, default => 1, template => 'int' }, + { name => 't', required => 0, default => ((gmtime)[5]+1900)*100+(gmtime)[4]+1, template => 'int' }, + ); + return 404 if $f->{_err}; + + + my($list, $np) = $self->dbReleaseGet( + page => $f->{p}, + results => 100, + date => $f->{t}, + what => 'platforms', + ); + + $self->htmlHeader(title => 'Browse releases'); + div class => 'mainbox'; + h1 'Browse releases'; + p class => 'center'; + # you know, date calculation on strangely formatted integers really isn't so bad :-) + my $t = $f->{t}; + $t = $t-100+12 if (--$t % 100) == 0; + a href => "/r?t=$t", '<- previous month'; + txt ' | '; + $t = $f->{t}; + $t = $t+100-12 if (++$t % 100) == 13; + a href => "/r?t=$t", 'next month ->'; + end; + end; + + $self->htmlBrowse( + class => 'relbrowse', + items => $list, + options => $f, + nextpage => $np, + pageurl => "/r?t=$f->{t}", + row => sub { + my($s, $n, $l) = @_; + Tr $n % 2 ? (class => 'odd') : (); + td class => 'tc1'; + lit datestr $l->{released}; + end; + td class => 'tc2', $l->{minage} > -1 ? $self->{age_ratings}{$l->{minage}} : ''; + td class => 'tc3'; + $_ ne 'oth' && cssicon $_, $self->{platforms}{$_} for (@{$l->{platforms}}); + cssicon "lang $l->{language}", $self->{languages}{$l->{language}}; + cssicon lc(substr($self->{release_types}[$l->{type}],0,3)), $self->{release_types}[$l->{type}]; + end; + td class => 'tc4'; + a href => "/r$l->{id}", title => $l->{original}||$l->{title}, shorten $l->{title}, 90; + b class => 'grayedout', ' (patch)' if $l->{patch}; + end; + end; + }, + ); + $self->htmlFooter; +} + + 1; diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index fcd088a4..c8208967 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -57,6 +57,7 @@ sub _menu { div; a href => '/', 'Home'; br; a href => '/v/all', 'Visual novels'; br; + a href => '/r', 'Releases'; br; a href => '/g', 'Tags'; br; a href => '/p/all', 'Producers'; br; a href => '/u/all', 'Users'; br; -- cgit v1.2.3 From 31c7f61c58686e39645a45fa2feeb435ac023e7f Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 10 May 2009 14:23:57 +0200 Subject: Advanced filtering for the release browser --- lib/VNDB/DB/Releases.pm | 13 ++++- lib/VNDB/Handler/Releases.pm | 133 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 125 insertions(+), 21 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index ddf9a66c..da50a6d8 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 +# Options: id vid rev order unreleased page results what date platforms languages type minage # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -31,6 +31,17 @@ sub dbReleaseGet { q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), $o{date} ? ( '(rr.released > ? AND rr.released < ?)' => [ $o{date}*100, $o{date}*100+99 ] ) : (), + $o{languages} ? ( + 'rr.language IN(!l)', => [ $o{languages} ] ) : (), + $o{platforms} ? ( + #'EXISTS(SELECT 1 FROM releases_platforms rp WHERE rp.rid = rr.id AND rp.platform IN(!l))' => [ $o{platforms} ] ) : (), + 'rr.id IN(SELECT irp.rid FROM releases_platforms irp JOIN releases ir ON ir.latest = irp.rid WHERE irp.platform IN(!l))' => [ $o{platforms} ] ) : (), + defined $o{type} ? ( + 'rr.type = ?' => $o{type} ) : (), + $o{minage} ? ( + '(rr.minage !s ? AND rr.minage <> -1)' => [ $o{minage}[0] ? '<=' : '>=', $o{minage}[1] ] ) : (), + $o{patch} ? ( + 'rr.patch = ?', $o{patch} == 1 ? 1 : 0) : (), ); my @join = ( diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index ffe9ddc2..8ad8396a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -428,41 +428,53 @@ sub browse { my $self = shift; my $f = $self->formValidate( - { name => 'p', required => 0, default => 1, template => 'int' }, - { name => 't', required => 0, default => ((gmtime)[5]+1900)*100+(gmtime)[4]+1, template => 'int' }, + { name => 'p', required => 0, default => 1, template => 'int' }, + { name => 's', required => 0, default => 'title', enum => [qw|released minage title|] }, + { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] }, + #{ name => 't', required => 0, default => ((gmtime)[5]+1900)*100+(gmtime)[4]+1, template => 'int' }, + { name => 'ln', required => 0, multi => 1, default => '', enum => [ keys %{$self->{languages}} ] }, + { name => 'pl', required => 0, multi => 1, default => '', enum => [ keys %{$self->{platforms}} ] }, + { 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 ] }, + { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, ); return 404 if $f->{_err}; my($list, $np) = $self->dbReleaseGet( + order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, - results => 100, - date => $f->{t}, + results => 50, + #date => $f->{t}, + $f->{pl}[0] ? (platforms => $f->{pl}) : (), + $f->{ln}[0] ? (languages => $f->{ln}) : (), + $f->{tp} >= 0 ? (type => $f->{tp}) : (), + $f->{ma_a} || $f->{ma_m} ? (minage => [$f->{ma_m}, $f->{ma_a}]) : (), + $f->{pa} ? (patch => $f->{pa}) : (), what => 'platforms', ); - $self->htmlHeader(title => 'Browse releases'); - div class => 'mainbox'; - h1 'Browse releases'; - p class => 'center'; - # you know, date calculation on strangely formatted integers really isn't so bad :-) - my $t = $f->{t}; - $t = $t-100+12 if (--$t % 100) == 0; - a href => "/r?t=$t", '<- previous month'; - txt ' | '; - $t = $f->{t}; - $t = $t+100-12 if (++$t % 100) == 13; - a href => "/r?t=$t", 'next month ->'; - end; - end; + my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a}"; + $_&&($url .= ";ln=$_") for @{$f->{ln}}; + $_&&($url .= ";pl=$_") for @{$f->{pl}}; + $self->htmlHeader(title => 'Browse releases'); + _filters($self, $f); $self->htmlBrowse( class => 'relbrowse', items => $list, options => $f, nextpage => $np, - pageurl => "/r?t=$f->{t}", - row => sub { + pageurl => "$url;s=$f->{s};o=$f->{o}", + sorturl => $url, + header => [ + [ 'Released', 'released' ], + [ 'Rating', 'minage' ], + [ '', '' ], + [ 'Title', 'title' ], + ], + row => sub { my($s, $n, $l) = @_; Tr $n % 2 ? (class => 'odd') : (); td class => 'tc1'; @@ -485,5 +497,86 @@ sub browse { } +sub _filters { + my($self, $f) = @_; + + form method => 'get', action => '/r'; + div class => 'mainbox'; + h1 'Browse releases'; + + #p class => 'center'; + # # you know, date calculation on strangely formatted integers really isn't so bad :-) + # my $t = $f->{t}; + # $t = $t-100+12 if (--$t % 100) == 0; + # a href => "/r?t=$t", '<- previous month'; + # txt ' | '; + # $t = $f->{t}; + # $t = $t+100-12 if (++$t % 100) == 13; + # a href => "/r?t=$t", 'next month ->'; + #end; + + a id => 'advselect', href => '#'; + lit ' filters'; + end; + div id => 'advoptions', class => 'hidden'; + + 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'; + Select id => 'ma_m', name => 'ma_m', style => 'width: 70px'; + option value => 0, $f->{ma_m} == 0 ? ('selected' => 'selected') : (), 'greater'; + option value => 1, $f->{ma_m} == 1 ? ('selected' => 'selected') : (), 'smaller'; + end; + txt ' than or equal to '; + Select id => 'ma_a', name => 'ma_a', style => 'width: 80px; text-align: center'; + $_>=0 && option value => $_, $f->{ma_a} == $_ ? ('selected' => 'selected') : (), $self->{age_ratings}{$_} + for (sort { $a <=> $b } keys %{$self->{age_ratings}}); + end; + end; + end; + end; + + h2; + lit 'Languages (boolean or, selecting more gives more results)'; + end; + for my $i (sort @{$self->dbLanguages}) { + 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", $self->{languages}{$i}; + txt $self->{languages}{$i}; + end; + end; + } + + h2; + lit 'Platforms (boolean or, selecting more gives more results)'; + end; + for my $i (sort keys %{$self->{platforms}}) { + next if $i eq 'oth'; + span; + input type => 'checkbox', name => 'pl', value => $i, id => "plat_$i", grep($_ eq $i, @{$f->{pl}}) ? (checked => 'checked') : (); + label for => "plat_$i"; + cssicon $i, $self->{platforms}{$i}; + txt $self->{platforms}{$i}; + end; + end; + } + + div style => 'text-align: center; clear: left;'; + input type => 'submit', value => 'Apply', class => 'submit'; + end; + end; + end; + end; +} + + 1; -- cgit v1.2.3 From d3e270d6987cfe696ee2c2e25bb344f242f53a1e Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 10 May 2009 14:48:34 +0200 Subject: Added search field on release browser --- lib/VNDB/DB/Releases.pm | 20 +++++++++++++++++--- lib/VNDB/Handler/Producers.pm | 4 ++-- lib/VNDB/Handler/Releases.pm | 11 +++++++++-- lib/VNDB/Handler/Tags.pm | 8 ++++---- lib/VNDB/Handler/VNBrowse.pm | 4 ++-- 5 files changed, 34 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index da50a6d8..4aa844a8 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 +# Options: id vid rev order unreleased page results what date platforms languages type minage search # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -18,7 +18,7 @@ sub dbReleaseGet { $o{what} ||= ''; $o{order} ||= 'rr.released ASC'; - my %where = ( + my @where = ( !$o{id} && !$o{rev} ? ( 'r.hidden = FALSE' => 0 ) : (), $o{id} ? ( @@ -44,6 +44,20 @@ sub dbReleaseGet { 'rr.patch = ?', $o{patch} == 1 ? 1 : 0) : (), ); + if($o{search}) { + for (split /[ -,._]/, $o{search}) { + s/%//g; + next if length($_) < 2; + if(/^\d+$/ && gtintype($_)) { + push @where, 'rr.gtin = ?', $_; + } else { + $_ = "%$_%"; + push @where, '(rr.title ILIKE ? OR rr.original ILIKE ? OR rr.catalog = ?)', + [ $_, $_, $_ ]; + } + } + } + my @join = ( $o{rev} ? 'JOIN releases r ON r.id = rr.rid' : 'JOIN releases r ON rr.id = r.latest', $o{vid} ? 'JOIN releases_vn rv ON rv.rid = rr.id' : (), @@ -66,7 +80,7 @@ sub dbReleaseGet { !s !W ORDER BY !s|, - join(', ', @select), join(' ', @join), \%where, $o{order} + join(', ', @select), join(' ', @join), \@where, $o{order} ); if(@$r && $o{what} =~ /(vn|producers|platforms|media)/) { diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index 7f43dd78..2aaa241d 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -171,8 +171,8 @@ sub list { div class => 'mainbox'; h1 'Browse producers'; - form class => 'search', action => '/p/all', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset; + form action => '/p/all', 'accept-charset' => 'UTF-8', method => 'get'; + fieldset class => 'search'; input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; input type => 'submit', class => 'submit', value => 'Search!'; end; diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 8ad8396a..2a2ea21b 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -431,6 +431,7 @@ sub browse { { name => 'p', required => 0, default => 1, template => 'int' }, { name => 's', required => 0, default => 'title', enum => [qw|released minage title|] }, { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] }, + { name => 'q', required => 0, default => '', maxlength => 500 }, #{ name => 't', required => 0, default => ((gmtime)[5]+1900)*100+(gmtime)[4]+1, template => 'int' }, { name => 'ln', required => 0, multi => 1, default => '', enum => [ keys %{$self->{languages}} ] }, { name => 'pl', required => 0, multi => 1, default => '', enum => [ keys %{$self->{platforms}} ] }, @@ -447,6 +448,7 @@ sub browse { page => $f->{p}, results => 50, #date => $f->{t}, + $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), $f->{tp} >= 0 ? (type => $f->{tp}) : (), @@ -455,7 +457,7 @@ sub browse { what => 'platforms', ); - my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a}"; + my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a};q=$f->{q}"; $_&&($url .= ";ln=$_") for @{$f->{ln}}; $_&&($url .= ";pl=$_") for @{$f->{pl}}; @@ -500,10 +502,15 @@ sub browse { sub _filters { my($self, $f) = @_; - form method => 'get', action => '/r'; + form method => 'get', action => '/r', 'accept-charset' => 'UTF-8'; div class => 'mainbox'; h1 'Browse releases'; + fieldset class => 'search'; + input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; + input type => 'submit', class => 'submit', value => 'Search!'; + end; + #p class => 'center'; # # you know, date calculation on strangely formatted integers really isn't so bad :-) # my $t = $f->{t}; diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index d10de195..6838e7c7 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -367,8 +367,8 @@ sub taglist { $self->htmlHeader(title => $title); div class => 'mainbox'; h1 $title; - form class => 'search', action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset; + form action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; + fieldset class => 'search'; input type => 'hidden', name => 't', value => $f->{t}; input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; input type => 'submit', class => 'submit', value => 'Search!'; @@ -589,8 +589,8 @@ sub tagindex { div class => 'mainbox'; a class => 'addnew', href => "/g/new", ($self->authCan('tagmod')?'Create':'Request').' new tag' if $self->authCan('tag'); h1 'Search tags'; - form class => 'search', action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset; + form action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; + fieldset class => 'search'; input type => 'text', name => 'q', id => 'q', class => 'text'; input type => 'submit', class => 'submit', value => 'Search!'; end; diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index f50a8500..03c4a8ce 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -117,8 +117,8 @@ sub _filters { div class => 'mainbox'; h1 'Browse visual novels'; - form class => 'search', action => '/v/all', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset; + form action => '/v/all', 'accept-charset' => 'UTF-8', method => 'get'; + fieldset class => 'search'; input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; input type => 'submit', class => 'submit', value => 'Search!'; end; -- cgit v1.2.3 From dca26d601127d6c3e5761bce4e60b9f5ef4f3d1d Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 10 May 2009 15:16:05 +0200 Subject: Use ceil() when determining average vote status thingy on /v+ --- lib/VNDB/Util/CommonHTML.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index 744216c1..b9405941 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -8,6 +8,7 @@ use Exporter 'import'; use Algorithm::Diff::XS 'compact_diff'; use VNDB::Func; use Encode 'encode_utf8', 'decode_utf8'; +use POSIX 'ceil'; our @EXPORT = qw| htmlMainTabs htmlDenied htmlHiddenMessage htmlBrowse htmlBrowseNavigate @@ -419,7 +420,7 @@ sub htmlVoteStats { end; end; tfoot; Tr; td colspan => 2, sprintf '%d vote%s total, average %.2f%s', $count, $count != 1 ? 's' : '', $total/$count, - $type eq 'v' ? ' ('.$self->{votes}[sprintf '%.0f', $total/$count-1].')' : ''; + $type eq 'v' ? ' ('.$self->{votes}[ceil($total/$count-1)].')' : ''; end; end; for (reverse 0..$#$stats) { Tr; -- cgit v1.2.3 From e7f34568a82dce5f54de860451db7a6ab995e338 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 10 May 2009 16:18:16 +0200 Subject: Moved date input field from Handler/Releases.pm to Util/FormHTML.pm --- lib/VNDB/Handler/Releases.pm | 19 +------------------ lib/VNDB/Util/FormHTML.pm | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 18 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 2a2ea21b..c7b2cb60 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -5,7 +5,6 @@ use strict; use warnings; use YAWF ':html'; use VNDB::Func; -use POSIX 'strftime'; YAWF::register( @@ -341,23 +340,7 @@ sub _form { [ input => short => 'gtin', name => 'JAN/UPC/EAN' ], [ input => short => 'catalog', name => 'Catalog number' ], [ input => short => 'website', name => 'Official website' ], - [ static => label => 'Release date', content => sub { - Select id => 'released', name => 'released'; - option value => $_, $frm->{released} && $frm->{released}[0] == $_ ? (selected => 'selected') : (), - !$_ ? '-year-' : $_ < 9999 ? $_ : 'TBA' - for (0, 1980..((localtime())[5]+1905), 9999); - end; - Select id => 'released_m', name => 'released'; - option value => $_, $frm->{released} && $frm->{released}[1] == $_ ? (selected => 'selected') : (), - !$_ ? '-month-' : strftime '%B', 0, 0, 0, 0, $_, 0, 0, 0 - for(0..12); - end; - Select id => 'released_d', name => 'released'; - option value => $_, $frm->{released} && $frm->{released}[2] == $_ ? (selected => 'selected') : (), - !$_ ? '-day-' : $_ - for(0..31); - end; - }], + [ date => short => 'released', name => 'Release date' ], [ static => content => 'Leave month or day blank if they are unknown' ], [ select => short => 'minage', name => 'Age rating', options => [ map [ $_, $self->{age_ratings}{$_} ], sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index 17de6663..cc4f7411 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -5,6 +5,7 @@ use strict; use warnings; use YAWF ':html'; use Exporter 'import'; +use POSIX 'strftime'; our @EXPORT = qw| htmlFormError htmlFormPart htmlForm |; @@ -116,6 +117,7 @@ sub htmlFormError { # check name, short, (value) # select name, short, options, (width) # text name, short, (rows, cols) +# date name, short # part title # TODO: Find a way to write this function in a readable way... sub htmlFormPart { @@ -189,6 +191,23 @@ sub htmlFormPart { for @{$o{options}}; end; } + if(/date/) { + Select name => $o{short}, id => $o{short}, style => 'width: 70px'; + option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[0] == $_ ? (selected => 'selected') : (), + !$_ ? '-year-' : $_ < 9999 ? $_ : 'TBA' + for (0, 1980..((localtime())[5]+1905), 9999); + end; + Select id => "$o{short}_m", name => $o{short}, style => 'width: 100px'; + option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[1] == $_ ? (selected => 'selected') : (), + !$_ ? '-month-' : strftime '%B', 0, 0, 0, 0, $_, 0, 0, 0 + for(0..12); + end; + Select id => "$o{short}_d", name => $o{short}, style => 'width: 70px'; + option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[2] == $_ ? (selected => 'selected') : (), + !$_ ? '-day-' : $_ + for(0..31); + end; + } if(/text/) { (my $txt = $frm->{$o{short}}||'') =~ s/&/&/; $txt =~ s/ Date: Sun, 10 May 2009 16:32:14 +0200 Subject: Release browser: Added date filter --- lib/VNDB/DB/Releases.pm | 2 +- lib/VNDB/Handler/Releases.pm | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 4aa844a8..a4db2fc0 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -30,7 +30,7 @@ sub dbReleaseGet { defined $o{unreleased} ? ( q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), $o{date} ? ( - '(rr.released > ? AND rr.released < ?)' => [ $o{date}*100, $o{date}*100+99 ] ) : (), + '(rr.released >= ? AND rr.released <= ?)' => [ $o{date}[0], $o{date}[1] ] ) : (), $o{languages} ? ( 'rr.language IN(!l)', => [ $o{languages} ] ) : (), $o{platforms} ? ( diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index c7b2cb60..011e1ca4 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -415,22 +415,29 @@ sub browse { { name => 's', required => 0, default => 'title', enum => [qw|released minage title|] }, { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] }, { name => 'q', required => 0, default => '', maxlength => 500 }, - #{ name => 't', required => 0, default => ((gmtime)[5]+1900)*100+(gmtime)[4]+1, template => 'int' }, { name => 'ln', required => 0, multi => 1, default => '', enum => [ keys %{$self->{languages}} ] }, { name => 'pl', required => 0, multi => 1, default => '', enum => [ keys %{$self->{platforms}} ] }, { 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 ] }, { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, + { name => 'mi', required => 0, default => 0, multi => 1, template => 'int' }, + { name => 'ma', required => 0, default => 9999, multi => 1, template => 'int' }, ); return 404 if $f->{_err}; + $f->{mi}[1] ||= 0; $f->{mi}[2] ||= 0; + $f->{ma}[1] ||= 0; $f->{ma}[2] ||= 0; + my $mindate = !$f->{mi}[0] ? 0 : $f->{mi}[0] == 9999 ? 99999999 : + sprintf '%04d%02d%02d', $f->{mi}[0], $f->{mi}[1]||99, $f->{mi}[2]||99; + my $maxdate = !$f->{ma}[0] ? 0 : $f->{ma}[0] == 9999 ? 99999999 : + sprintf '%04d%02d%02d', $f->{ma}[0], $f->{ma}[1]||99, $f->{ma}[2]||99; my($list, $np) = $self->dbReleaseGet( order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, results => 50, - #date => $f->{t}, + date => [ $mindate, $maxdate ], $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), @@ -440,7 +447,8 @@ sub browse { what => 'platforms', ); - my $url = "/r?tp=$f->{tp};pa=$f->{pa};ma_m=$f->{ma_m};ma_a=$f->{ma_a};q=$f->{q}"; + 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}[0];mi=$f->{mi}[1];mi=$f->{mi}[2];ma=$f->{ma}[0];ma=$f->{ma}[1];ma=$f->{ma}[2]"; $_&&($url .= ";ln=$_") for @{$f->{ln}}; $_&&($url .= ";pl=$_") for @{$f->{pl}}; @@ -494,17 +502,6 @@ sub _filters { input type => 'submit', class => 'submit', value => 'Search!'; end; - #p class => 'center'; - # # you know, date calculation on strangely formatted integers really isn't so bad :-) - # my $t = $f->{t}; - # $t = $t-100+12 if (--$t % 100) == 0; - # a href => "/r?t=$t", '<- previous month'; - # txt ' | '; - # $t = $f->{t}; - # $t = $t+100-12 if (++$t % 100) == 13; - # a href => "/r?t=$t", 'next month ->'; - #end; - a id => 'advselect', href => '#'; lit ' filters'; end; @@ -530,6 +527,8 @@ sub _filters { end; end; end; + $self->htmlFormPart($f, [ date => short => 'mi', name => 'Released after' ]); + $self->htmlFormPart($f, [ date => short => 'ma', name => 'Released before' ]); end; h2; -- cgit v1.2.3 From cc9183bfec6e459ea94da0b5dc32976757f715a4 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 10 May 2009 16:41:43 +0200 Subject: Don't apply release date filter when it covers the full range Performance improvement of ~20ms --- lib/VNDB/Handler/Releases.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 011e1ca4..32629131 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -437,7 +437,7 @@ sub browse { order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, results => 50, - date => [ $mindate, $maxdate ], + $mindate > 0 || $maxdate < 99990000 ? (date => [ $mindate, $maxdate ]) : (), $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), -- cgit v1.2.3 From 1ee636e3a68f9d03509563e2a833e11ed332fccb Mon Sep 17 00:00:00 2001 From: Yorhel Date: Thu, 21 May 2009 15:16:11 +0200 Subject: Implemented the date selector in JavaScript This way, we can just use our internal database date format for client-side communication as well. The calculation is now done in a centralized place in script.js, rather than all over the place in the Perl code. This'll also make it possible to make the date selector more interactive. But that doesn't have a very high priority at the moment, the good old three-selection-boxes-thing works fine. Current implementation has only been tested on FF3, though I doubt other browsers will complain. --- lib/VNDB/Handler/Releases.pm | 30 +++++++++--------------------- lib/VNDB/Util/FormHTML.pm | 16 +--------------- 2 files changed, 10 insertions(+), 36 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 32629131..5dec02ec 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -247,8 +247,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin catalog language website notes minage platforms patch|), - released => $r->{released} =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/ ? [ $1, $2, $3 ] : [ 0, 0, 0 ], + (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -266,7 +265,7 @@ sub edit { { name => 'catalog', required => 0, default => '', maxlength => 50 }, { name => 'language', enum => [ keys %{$self->{languages}} ] }, { name => 'website', required => 0, default => '', template => 'url' }, - { name => 'released', required => 0, default => 0, multi => 1, template => 'int' }, + { name => 'released', required => 0, default => 0, template => 'int' }, { name => 'minage' , required => 0, default => -1, enum => [ keys %{$self->{age_ratings}} ] }, { name => 'notes', required => 0, default => '', maxlength => 10240 }, { name => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %{$self->{platforms}} ] }, @@ -277,8 +276,6 @@ sub edit { ); if(!$frm->{_err}) { # de-serialize - my $released = !$frm->{released}[0] ? 0 : $frm->{released}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $frm->{released}[0], $frm->{released}[1]||99, $frm->{released}[2]||99; my $media = [ map [ split / / ], split /,/, $frm->{media} ]; my $producers = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{producers} ]; my $new_vn = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{vn} ]; @@ -286,18 +283,17 @@ sub edit { $frm->{patch} = $frm->{patch} ? 1 : 0; return $self->resRedirect("/r$rid", 'post') - if $rid && $released == $r->{released} && + if $rid && (join(',', sort @{$b4{platforms}}) eq join(',', sort @{$frm->{platforms}})) && (join(',', sort @$producers) eq join(',', sort map $_->{id}, @{$r->{producers}})) && (join(',', sort @$new_vn) eq join(',', sort map $_->{vid}, @$vn)) && - !grep !/^(released|platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; + !grep !/^(platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website notes minage platforms editsum patch|), + (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms editsum patch |), vn => $new_vn, producers => $producers, media => $media, - released => $released, ); $rev = 1; @@ -421,23 +417,16 @@ sub browse { { name => 'pa', required => 0, default => 0, enum => [ 0..2 ] }, { name => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] }, { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, - { name => 'mi', required => 0, default => 0, multi => 1, template => 'int' }, - { name => 'ma', required => 0, default => 9999, multi => 1, template => 'int' }, + { name => 'mi', required => 0, default => 0, template => 'int' }, + { name => 'ma', required => 0, default => 99999999, template => 'int' }, ); return 404 if $f->{_err}; - $f->{mi}[1] ||= 0; $f->{mi}[2] ||= 0; - $f->{ma}[1] ||= 0; $f->{ma}[2] ||= 0; - my $mindate = !$f->{mi}[0] ? 0 : $f->{mi}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $f->{mi}[0], $f->{mi}[1]||99, $f->{mi}[2]||99; - my $maxdate = !$f->{ma}[0] ? 0 : $f->{ma}[0] == 9999 ? 99999999 : - sprintf '%04d%02d%02d', $f->{ma}[0], $f->{ma}[1]||99, $f->{ma}[2]||99; - my($list, $np) = $self->dbReleaseGet( order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, results => 50, - $mindate > 0 || $maxdate < 99990000 ? (date => [ $mindate, $maxdate ]) : (), + $f->{mi} > 0 || $f->{ma} < 99990000 ? (date => [ $f->{mi}, $f->{ma} ]) : (), $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), $f->{ln}[0] ? (languages => $f->{ln}) : (), @@ -447,8 +436,7 @@ sub browse { what => 'platforms', ); - 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}[0];mi=$f->{mi}[1];mi=$f->{mi}[2];ma=$f->{ma}[0];ma=$f->{ma}[1];ma=$f->{ma}[2]"; + 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}}; diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index cc4f7411..ed4443cc 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -192,21 +192,7 @@ sub htmlFormPart { end; } if(/date/) { - Select name => $o{short}, id => $o{short}, style => 'width: 70px'; - option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[0] == $_ ? (selected => 'selected') : (), - !$_ ? '-year-' : $_ < 9999 ? $_ : 'TBA' - for (0, 1980..((localtime())[5]+1905), 9999); - end; - Select id => "$o{short}_m", name => $o{short}, style => 'width: 100px'; - option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[1] == $_ ? (selected => 'selected') : (), - !$_ ? '-month-' : strftime '%B', 0, 0, 0, 0, $_, 0, 0, 0 - for(0..12); - end; - Select id => "$o{short}_d", name => $o{short}, style => 'width: 70px'; - option value => $_, $frm->{$o{short}} && $frm->{$o{short}}[2] == $_ ? (selected => 'selected') : (), - !$_ ? '-day-' : $_ - for(0..31); - end; + input type => 'hidden', id => $o{short}, name => $o{short}, value => $frm->{$o{short}}||'', class => 'dateinput'; } if(/text/) { (my $txt = $frm->{$o{short}}||'') =~ s/&/&/; -- cgit v1.2.3 From 6a5b24e04aadbb5a0327c4ce335f37f1506000a1 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 09:46:41 +0200 Subject: Added medium filter on /r --- lib/VNDB/DB/Releases.pm | 4 +++- lib/VNDB/Handler/Releases.pm | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'lib') 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 (boolean or, selecting more gives more results)'; + 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; -- cgit v1.2.3 From 55e67a4c4f690b14c06e2a6b2c6608e2305dceb6 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 14:51:15 +0200 Subject: support for the select input type in FormHTML The third argument in the options item list is considered as the label for the optgroup the item is in. --- lib/VNDB/Util/FormHTML.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index ed4443cc..111fa5a6 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -186,9 +186,17 @@ sub htmlFormPart { lit ref $o{content} eq 'CODE' ? $o{content}->($self, \%o) : $o{content}; } if(/select/) { + my $l=''; Select name => $o{short}, id => $o{short}, $o{width} ? (style => "width: $o{width}px") : (); - option value => $_->[0], defined $frm->{$o{short}} && $frm->{$o{short}} eq $_->[0] ? (selected => 'selected') : (), $_->[1] - for @{$o{options}}; + for (@{$o{options}}) { + if($_->[2] && $l ne $_->[2]) { + end if $l; + $l = $_->[2]; + optgroup label => $l; + } + option value => $_->[0], defined $frm->{$o{short}} && $frm->{$o{short}} eq $_->[0] ? (selected => 'selected') : (), $_->[1]; + } + end if $l; end; } if(/date/) { -- cgit v1.2.3 From aaf5fba44b029ed83f290e6d4c5b9ed872d504b5 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 14:53:37 +0200 Subject: Added resolution field to release entries TODO: - Update d3 - Add filter to /r --- lib/VNDB/DB/Releases.pm | 6 +++--- lib/VNDB/Handler/Releases.pm | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 3831b0c8..fa352c1e 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -72,7 +72,7 @@ sub dbReleaseGet { my @select = ( qw|r.id rr.title rr.original rr.language rr.website rr.released rr.minage rr.type rr.patch|, 'rr.id AS cid', - $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin r.hidden r.locked| : (), + $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution r.hidden r.locked| : (), $o{what} =~ /changes/ ? qw|c.added c.requester c.comments r.latest u.username c.rev| : (), ); @@ -167,9 +167,9 @@ sub insert_rev { my($self, $cid, $rid, $o) = @_; $self->dbExec(q| - INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, notes, minage, type, patch) + INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, notes, minage, type, patch, resolution) VALUES (!l)|, - [ $cid, $rid, @$o{qw| title original gtin catalog language website released notes minage type patch|} ]); + [ $cid, $rid, @$o{qw| title original gtin catalog language website released notes minage type patch resolution|} ]); $self->dbExec(q| INSERT INTO releases_producers (rid, pid) diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 30fede3d..69f406d6 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -57,6 +57,7 @@ sub page { $med->[1] ? sprintf('%d %s%s', $_->{qty}, $med->[0], $_->{qty}>1?'s':'') : $med->[0] } @{$_[0]}; } ], + [ resolution => 'Resolution', serialize => sub { $self->{resolutions}[$_[0]][0] } ], [ producers => 'Producers', join => '
', split => sub { map sprintf('%s', $_->{id}, $_->{original}||$_->{name}, shorten $_->{name}, 50), @{$_[0]}; } ], @@ -149,6 +150,13 @@ sub _infotable { end; } + if($r->{resolution}) { + Tr ++$i % 2 ? (class => 'odd') : (); + td 'Resolution'; + td $self->{resolutions}[$r->{resolution}][0]; + end; + } + Tr ++$i % 2 ? (class => 'odd') : (); td 'Released'; td; @@ -247,7 +255,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch|), + (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch resolution|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -270,6 +278,7 @@ sub edit { { name => 'notes', required => 0, default => '', maxlength => 10240 }, { name => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %{$self->{platforms}} ] }, { name => 'media', required => 0, default => '' }, + { name => 'resolution',required => 0, default => 0 }, { name => 'producers', required => 0, default => '' }, { name => 'vn', maxlength => 5000 }, { name => 'editsum', maxlength => 5000 }, @@ -290,7 +299,7 @@ sub edit { !grep !/^(platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms editsum patch |), + (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms resolution editsum patch |), vn => $new_vn, producers => $producers, media => $media, @@ -340,6 +349,8 @@ sub _form { [ static => content => 'Leave month or day blank if they are unknown' ], [ select => short => 'minage', name => 'Age rating', options => [ map [ $_, $self->{age_ratings}{$_} ], sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], + [ select => short => 'resolution', name => 'Resolution', options => [ + map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], [ textarea => short => 'notes', name => 'Notes' ], [ static => content => 'Miscellaneous notes/comments, information that does not fit in the above fields. ' .'E.g.: Censored/uncensored or for which releases this patch applies. Max. 250 characters.' ], -- cgit v1.2.3 From 671b015a2e2a425fbaf8b800737902af65027036 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 16:16:53 +0200 Subject: Proper input checking for the resolution field --- lib/VNDB/Handler/Releases.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 69f406d6..6656dedb 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -278,7 +278,7 @@ sub edit { { name => 'notes', required => 0, default => '', maxlength => 10240 }, { name => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %{$self->{platforms}} ] }, { name => 'media', required => 0, default => '' }, - { name => 'resolution',required => 0, default => 0 }, + { name => 'resolution',required => 0, default => 0, enum => [ 0..$#{$self->{resolutions}} ] }, { name => 'producers', required => 0, default => '' }, { name => 'vn', maxlength => 5000 }, { name => 'editsum', maxlength => 5000 }, -- cgit v1.2.3 From 3ad040d6d210fcd7415ddbabd4782a92c23c913e Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 16:38:40 +0200 Subject: Voiced field for releases TODO: filter on /r --- lib/VNDB/DB/Releases.pm | 6 +++--- lib/VNDB/Handler/Releases.pm | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index fa352c1e..89b3d671 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -72,7 +72,7 @@ sub dbReleaseGet { my @select = ( qw|r.id rr.title rr.original rr.language rr.website rr.released rr.minage rr.type rr.patch|, 'rr.id AS cid', - $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution r.hidden r.locked| : (), + $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution rr.voiced r.hidden r.locked| : (), $o{what} =~ /changes/ ? qw|c.added c.requester c.comments r.latest u.username c.rev| : (), ); @@ -167,9 +167,9 @@ sub insert_rev { my($self, $cid, $rid, $o) = @_; $self->dbExec(q| - INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, notes, minage, type, patch, resolution) + INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, notes, minage, type, patch, resolution, voiced) VALUES (!l)|, - [ $cid, $rid, @$o{qw| title original gtin catalog language website released notes minage type patch resolution|} ]); + [ $cid, $rid, @$o{qw| title original gtin catalog language website released notes minage type patch resolution voiced|} ]); $self->dbExec(q| INSERT INTO releases_producers (rid, pid) diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 6656dedb..19de1e4a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -58,6 +58,7 @@ sub page { } @{$_[0]}; } ], [ resolution => 'Resolution', serialize => sub { $self->{resolutions}[$_[0]][0] } ], + [ voiced => 'Voiced', serialize => sub { $self->{voiced}[$_[0]] } ], [ producers => 'Producers', join => '
', split => sub { map sprintf('%s', $_->{id}, $_->{original}||$_->{name}, shorten $_->{name}, 50), @{$_[0]}; } ], @@ -157,6 +158,13 @@ sub _infotable { end; } + if($r->{voiced}) { + Tr ++$i % 2 ? (class => 'odd') : (); + td 'Voiced'; + td $self->{voiced}[$r->{voiced}]; + end; + } + Tr ++$i % 2 ? (class => 'odd') : (); td 'Released'; td; @@ -255,7 +263,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch resolution|), + (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch resolution voiced|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -279,6 +287,7 @@ sub edit { { name => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %{$self->{platforms}} ] }, { name => 'media', required => 0, default => '' }, { name => 'resolution',required => 0, default => 0, enum => [ 0..$#{$self->{resolutions}} ] }, + { name => 'voiced', required => 0, default => 0, enum => [ 0..$#{$self->{voiced}} ] }, { name => 'producers', required => 0, default => '' }, { name => 'vn', maxlength => 5000 }, { name => 'editsum', maxlength => 5000 }, @@ -299,7 +308,7 @@ sub edit { !grep !/^(platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms resolution editsum patch |), + (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms resolution editsum patch voiced |), vn => $new_vn, producers => $producers, media => $media, @@ -351,6 +360,8 @@ sub _form { options => [ map [ $_, $self->{age_ratings}{$_} ], sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], [ select => short => 'resolution', name => 'Resolution', options => [ map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], + [ select => short => 'voiced', name => 'Voiced', options => [ + map [ $_, $self->{voiced}[$_] ], 0..$#{$self->{voiced}} ] ], [ textarea => short => 'notes', name => 'Notes' ], [ static => content => 'Miscellaneous notes/comments, information that does not fit in the above fields. ' .'E.g.: Censored/uncensored or for which releases this patch applies. Max. 250 characters.' ], -- cgit v1.2.3 From 63fb2bab0519357d78846107e6fe3acf42a65122 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 22 May 2009 17:20:57 +0200 Subject: Show comparable CERO ratings on /r+/edit input field --- lib/VNDB/Handler/Releases.pm | 9 +++++---- lib/VNDB/Handler/VNPage.pm | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 19de1e4a..501c90e9 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -175,7 +175,7 @@ sub _infotable { if($r->{minage} >= 0) { Tr ++$i % 2 ? (class => 'odd') : (); td 'Age rating'; - td $self->{age_ratings}{$r->{minage}}; + td $self->{age_ratings}{$r->{minage}}[0]; end; } @@ -357,7 +357,8 @@ sub _form { [ date => short => 'released', name => 'Release date' ], [ static => content => 'Leave month or day blank if they are unknown' ], [ select => short => 'minage', name => 'Age rating', - options => [ map [ $_, $self->{age_ratings}{$_} ], sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], + options => [ map [ $_, $self->{age_ratings}{$_}[0].($self->{age_ratings}{$_}[1]?" (e.g. $self->{age_ratings}{$_}[1])":'') ], + sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], [ select => short => 'resolution', name => 'Resolution', options => [ map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], [ select => short => 'voiced', name => 'Voiced', options => [ @@ -485,7 +486,7 @@ sub browse { td class => 'tc1'; lit datestr $l->{released}; end; - td class => 'tc2', $l->{minage} > -1 ? $self->{age_ratings}{$l->{minage}} : ''; + td class => 'tc2', $l->{minage} > -1 ? $self->{age_ratings}{$l->{minage}}[0] : ''; td class => 'tc3'; $_ ne 'oth' && cssicon $_, $self->{platforms}{$_} for (@{$l->{platforms}}); cssicon "lang $l->{language}", $self->{languages}{$l->{language}}; @@ -534,7 +535,7 @@ sub _filters { end; txt ' than or equal to '; Select id => 'ma_a', name => 'ma_a', style => 'width: 80px; text-align: center'; - $_>=0 && option value => $_, $f->{ma_a} == $_ ? ('selected' => 'selected') : (), $self->{age_ratings}{$_} + $_>=0 && option value => $_, $f->{ma_a} == $_ ? ('selected' => 'selected') : (), $self->{age_ratings}{$_}[0] for (sort { $a <=> $b } keys %{$self->{age_ratings}}); end; end; diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm index d5d1c0a1..fac6305b 100644 --- a/lib/VNDB/Handler/VNPage.pm +++ b/lib/VNDB/Handler/VNPage.pm @@ -422,7 +422,7 @@ sub _releases { for my $rel (grep $l eq $_->{language}, @$r) { Tr; td class => 'tc1'; lit datestr $rel->{released}; end; - td class => 'tc2', $rel->{minage} < 0 ? '' : $self->{age_ratings}{$rel->{minage}}; + td class => 'tc2', $rel->{minage} < 0 ? '' : $self->{age_ratings}{$rel->{minage}}[0]; td class => 'tc3'; for (sort @{$rel->{platforms}}) { next if $_ eq 'oth'; -- cgit v1.2.3 From fbd24e0c11ccd0fae499a38b4c1ab7b971a42094 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 11:03:02 +0200 Subject: Added freeware and doujin information to releases TODO: - update d3 - filters on /r --- lib/VNDB/DB/Releases.pm | 8 +++++--- lib/VNDB/Handler/Releases.pm | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 89b3d671..63c99019 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -72,7 +72,7 @@ sub dbReleaseGet { my @select = ( qw|r.id rr.title rr.original rr.language rr.website rr.released rr.minage rr.type rr.patch|, 'rr.id AS cid', - $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution rr.voiced r.hidden r.locked| : (), + $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution rr.voiced rr.freeware rr.doujin r.hidden r.locked| : (), $o{what} =~ /changes/ ? qw|c.added c.requester c.comments r.latest u.username c.rev| : (), ); @@ -167,9 +167,11 @@ sub insert_rev { my($self, $cid, $rid, $o) = @_; $self->dbExec(q| - INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, notes, minage, type, patch, resolution, voiced) + INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, + notes, minage, type, patch, resolution, voiced, freeware, doujin) VALUES (!l)|, - [ $cid, $rid, @$o{qw| title original gtin catalog language website released notes minage type patch resolution voiced|} ]); + [ $cid, $rid, @$o{qw| title original gtin catalog language website released + notes minage type patch resolution voiced freeware doujin|} ]); $self->dbExec(q| INSERT INTO releases_producers (rid, pid) diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 501c90e9..05c8b161 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -41,6 +41,8 @@ sub page { } ], [ type => 'Type', serialize => sub { $self->{release_types}[$_[0]] } ], [ patch => 'Patch', serialize => sub { $_[0] ? 'Patch' : 'Not a patch' } ], + [ freeware => 'Freeware', serialize => sub { $_[0] ? 'yes' : 'nope' } ], + [ doujin => 'Non-commercial', serialize => sub { $_[0] ? 'yups' : 'nope' } ], [ title => 'Title (romaji)', diff => 1 ], [ original => 'Original title', diff => 1 ], [ gtin => 'JAN/UPC/EAN', serialize => sub { $_[0]||'[none]' } ], @@ -128,6 +130,11 @@ sub _infotable { end; end; + Tr ++$i % 2 ? (class => 'odd') : (); + td 'Publication'; + td ''.($r->{freeware} ? 'Freeware' : 'Non-free').', '.($r->{doujin} ? 'non-commercial' : 'commercial'); + end; + if(@{$r->{platforms}}) { Tr ++$i % 2 ? (class => 'odd') : (); td 'Platform'.($#{$r->{platforms}} ? 's' : ''); @@ -263,7 +270,8 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( - (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released notes minage platforms patch resolution voiced|), + (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released + notes minage platforms patch resolution voiced freeware doujin|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -274,6 +282,8 @@ sub edit { $frm = $self->formValidate( { name => 'type', enum => [ 0..$#{$self->{release_types}} ] }, { name => 'patch', required => 0, default => 0 }, + { name => 'freeware', required => 0, default => 0 }, + { name => 'doujin', required => 0, default => 0 }, { name => 'title', maxlength => 250 }, { name => 'original', required => 0, default => '', maxlength => 250 }, { name => 'gtin', required => 0, default => '0', @@ -298,7 +308,7 @@ sub edit { my $producers = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{producers} ]; my $new_vn = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{vn} ]; $frm->{platforms} = [ grep $_, @{$frm->{platforms}} ]; - $frm->{patch} = $frm->{patch} ? 1 : 0; + $frm->{$_} = $frm->{$_} ? 1 : 0 for (qw|patch freeware doujin|); return $self->resRedirect("/r$rid", 'post') if $rid && @@ -308,7 +318,8 @@ sub edit { !grep !/^(platforms|producers|vn)$/ && $frm->{$_} ne $b4{$_}, keys %b4; my %opts = ( - (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released notes minage platforms resolution editsum patch voiced |), + (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released + notes minage platforms resolution editsum patch voiced freeware doujin|), vn => $new_vn, producers => $producers, media => $media, @@ -346,6 +357,8 @@ sub _form { [ select => short => 'type', name => 'Type', options => [ map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ] ], [ check => short => 'patch', name => 'This release is a patch to another release.' ], + [ check => short => 'freeware', name => 'Freeware (i.e. available at no cost)' ], + [ check => short => 'doujin', name => 'Non-commercial (released without the intent of making money. e.g. as a doujin group)' ], [ input => short => 'title', name => 'Title (romaji)', width => 300 ], [ input => short => 'original', name => 'Original title', width => 300 ], [ static => content => 'The original title of this release, leave blank if it already is in the Latin alphabet.' ], -- cgit v1.2.3 From 9d88ab54413a0546da5420409f7bd23e8db4970d Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 11:04:37 +0200 Subject: Switched producers <-> tags in main menu This way VNs, releases and producers are grouped together, which are the three main database components. (The rest is all extra) --- lib/VNDB/Util/LayoutHTML.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index c8208967..1e6d8a60 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -58,8 +58,8 @@ sub _menu { a href => '/', 'Home'; br; a href => '/v/all', 'Visual novels'; br; a href => '/r', 'Releases'; br; - a href => '/g', 'Tags'; br; a href => '/p/all', 'Producers'; br; + a href => '/g', 'Tags'; br; a href => '/u/all', 'Users'; br; a href => '/hist', 'Recent changes'; br; a href => '/t', 'Discussion board'; br; -- cgit v1.2.3 From c8044c9a0697456d00f6383e9124d8bc4df444df Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 11:08:48 +0200 Subject: s/doujin group/doujin circle/ <@EchoMateria> doujin circle is a more fitting term then the doujin group as far as I know <~Yorhel> 2k vs. 12k, so at least it's a more popular term <~Yorhel> (on google...) --- lib/VNDB/Handler/Releases.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 05c8b161..029ae9b1 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -358,7 +358,7 @@ sub _form { options => [ map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ] ], [ check => short => 'patch', name => 'This release is a patch to another release.' ], [ check => short => 'freeware', name => 'Freeware (i.e. available at no cost)' ], - [ check => short => 'doujin', name => 'Non-commercial (released without the intent of making money. e.g. as a doujin group)' ], + [ check => short => 'doujin', name => 'Non-commercial (released without the intent of making money. e.g. as a doujin circle)' ], [ input => short => 'title', name => 'Title (romaji)', width => 300 ], [ input => short => 'original', name => 'Original title', width => 300 ], [ static => content => 'The original title of this release, leave blank if it already is in the Latin alphabet.' ], -- cgit v1.2.3 From e6e567652c3cbe7e7c812ce536216dfc5ed8d4de Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 11:39:05 +0200 Subject: Renamed "Platforms & Media" tab on /r+/edit to "Format" and moved some fields --- lib/VNDB/Handler/Releases.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 029ae9b1..007cf7d3 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -372,16 +372,16 @@ sub _form { [ select => short => 'minage', name => 'Age rating', options => [ map [ $_, $self->{age_ratings}{$_}[0].($self->{age_ratings}{$_}[1]?" (e.g. $self->{age_ratings}{$_}[1])":'') ], sort { $a <=> $b } keys %{$self->{age_ratings}} ] ], - [ select => short => 'resolution', name => 'Resolution', options => [ - map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], - [ select => short => 'voiced', name => 'Voiced', options => [ - map [ $_, $self->{voiced}[$_] ], 0..$#{$self->{voiced}} ] ], [ textarea => short => 'notes', name => 'Notes' ], [ static => content => 'Miscellaneous notes/comments, information that does not fit in the above fields. ' .'E.g.: Censored/uncensored or for which releases this patch applies. Max. 250 characters.' ], ], - 'Platforms & Media' => [ + 'Format' => [ + [ select => short => 'resolution', name => 'Resolution', options => [ + map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], + [ select => short => 'voiced', name => 'Voiced', options => [ + map [ $_, $self->{voiced}[$_] ], 0..$#{$self->{voiced}} ] ], [ hidden => short => 'media' ], [ static => nolabel => 1, content => sub { h2 'Platforms'; -- cgit v1.2.3 From e01567fb9703c18f20a3c3f3fcecfdb5bc680701 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 13:39:29 +0200 Subject: s/non-commercial/doujin/ and d3 update --- lib/VNDB/Handler/Releases.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 007cf7d3..a217a8f8 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -42,7 +42,7 @@ sub page { [ type => 'Type', serialize => sub { $self->{release_types}[$_[0]] } ], [ patch => 'Patch', serialize => sub { $_[0] ? 'Patch' : 'Not a patch' } ], [ freeware => 'Freeware', serialize => sub { $_[0] ? 'yes' : 'nope' } ], - [ doujin => 'Non-commercial', serialize => sub { $_[0] ? 'yups' : 'nope' } ], + [ doujin => 'Doujin', serialize => sub { $_[0] ? 'yups' : 'nope' } ], [ title => 'Title (romaji)', diff => 1 ], [ original => 'Original title', diff => 1 ], [ gtin => 'JAN/UPC/EAN', serialize => sub { $_[0]||'[none]' } ], @@ -132,7 +132,7 @@ sub _infotable { Tr ++$i % 2 ? (class => 'odd') : (); td 'Publication'; - td ''.($r->{freeware} ? 'Freeware' : 'Non-free').', '.($r->{doujin} ? 'non-commercial' : 'commercial'); + td ''.($r->{freeware} ? 'Freeware' : 'Non-free').', '.($r->{doujin} ? 'doujin' : 'commercial'); end; if(@{$r->{platforms}}) { @@ -358,7 +358,7 @@ sub _form { options => [ map [ $_, $self->{release_types}[$_] ], 0..$#{$self->{release_types}} ] ], [ check => short => 'patch', name => 'This release is a patch to another release.' ], [ check => short => 'freeware', name => 'Freeware (i.e. available at no cost)' ], - [ check => short => 'doujin', name => 'Non-commercial (released without the intent of making money. e.g. as a doujin circle)' ], + [ check => short => 'doujin', name => 'Doujin (self-published / not by a commercial company)' ], [ input => short => 'title', name => 'Title (romaji)', width => 300 ], [ input => short => 'original', name => 'Original title', width => 300 ], [ static => content => 'The original title of this release, leave blank if it already is in the Latin alphabet.' ], -- cgit v1.2.3 From 68b74a26c9c866c0a5ae2c4f269ad6f56037f5d9 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 23 May 2009 18:37:01 +0200 Subject: Animation fields for releases --- lib/VNDB/DB/Releases.pm | 6 +++--- lib/VNDB/Handler/Releases.pm | 24 +++++++++++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 63c99019..d6510322 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -72,7 +72,7 @@ sub dbReleaseGet { my @select = ( qw|r.id rr.title rr.original rr.language rr.website rr.released rr.minage rr.type rr.patch|, 'rr.id AS cid', - $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution rr.voiced rr.freeware rr.doujin r.hidden r.locked| : (), + $o{what} =~ /extended/ ? qw|rr.notes rr.catalog rr.gtin rr.resolution rr.voiced rr.freeware rr.doujin rr.ani_story rr.ani_ero r.hidden r.locked| : (), $o{what} =~ /changes/ ? qw|c.added c.requester c.comments r.latest u.username c.rev| : (), ); @@ -168,10 +168,10 @@ sub insert_rev { $self->dbExec(q| INSERT INTO releases_rev (id, rid, title, original, gtin, catalog, language, website, released, - notes, minage, type, patch, resolution, voiced, freeware, doujin) + notes, minage, type, patch, resolution, voiced, freeware, doujin, ani_story, ani_ero) VALUES (!l)|, [ $cid, $rid, @$o{qw| title original gtin catalog language website released - notes minage type patch resolution voiced freeware doujin|} ]); + notes minage type patch resolution voiced freeware doujin ani_story ani_ero|} ]); $self->dbExec(q| INSERT INTO releases_producers (rid, pid) diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index a217a8f8..4dbabf5e 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -61,6 +61,8 @@ sub page { } ], [ resolution => 'Resolution', serialize => sub { $self->{resolutions}[$_[0]][0] } ], [ voiced => 'Voiced', serialize => sub { $self->{voiced}[$_[0]] } ], + [ ani_story => 'Story animation',serialize => sub { $self->{animated}[$_[0]] } ], + [ ani_ero => 'Ero animation', serialize => sub { $self->{animated}[$_[0]] } ], [ producers => 'Producers', join => '
', split => sub { map sprintf('%s', $_->{id}, $_->{original}||$_->{name}, shorten $_->{name}, 50), @{$_[0]}; } ], @@ -172,6 +174,15 @@ sub _infotable { end; } + if($r->{ani_story} || $r->{ani_ero}) { + Tr ++$i % 2 ? (class => 'odd') : (); + td 'Animation'; + td join ', ', + $r->{ani_story} ? ('Story: ' .$self->{animated}[$r->{ani_story}]):(), + $r->{ani_ero} ? ('Ero scenes: '.$self->{animated}[$r->{ani_ero} ]):(); + end; + } + Tr ++$i % 2 ? (class => 'odd') : (); td 'Released'; td; @@ -271,7 +282,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( (map { $_ => $r->{$_} } qw|type title original gtin catalog language website released - notes minage platforms patch resolution voiced freeware doujin|), + notes minage platforms patch resolution voiced freeware doujin ani_story ani_ero|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map "$_->{id},$_->{name}", sort { $a->{id} <=> $b->{id} } @{$r->{producers}}), ); @@ -298,6 +309,8 @@ sub edit { { name => 'media', required => 0, default => '' }, { name => 'resolution',required => 0, default => 0, enum => [ 0..$#{$self->{resolutions}} ] }, { name => 'voiced', required => 0, default => 0, enum => [ 0..$#{$self->{voiced}} ] }, + { name => 'ani_story', required => 0, default => 0, enum => [ 0..$#{$self->{animated}} ] }, + { name => 'ani_ero', required => 0, default => 0, enum => [ 0..$#{$self->{animated}} ] }, { name => 'producers', required => 0, default => '' }, { name => 'vn', maxlength => 5000 }, { name => 'editsum', maxlength => 5000 }, @@ -319,7 +332,7 @@ sub edit { my %opts = ( (map { $_ => $frm->{$_} } qw| type title original gtin catalog language website released - notes minage platforms resolution editsum patch voiced freeware doujin|), + notes minage platforms resolution editsum patch voiced freeware doujin ani_story ani_ero|), vn => $new_vn, producers => $producers, media => $media, @@ -380,8 +393,13 @@ sub _form { 'Format' => [ [ select => short => 'resolution', name => 'Resolution', options => [ map [ $_, @{$self->{resolutions}[$_]} ], 0..$#{$self->{resolutions}} ] ], - [ select => short => 'voiced', name => 'Voiced', options => [ + [ select => short => 'voiced', name => 'Voiced', options => [ map [ $_, $self->{voiced}[$_] ], 0..$#{$self->{voiced}} ] ], + [ select => short => 'ani_story', name => 'Story animation', options => [ + map [ $_, $self->{animated}[$_] ], 0..$#{$self->{animated}} ] ], + [ select => short => 'ani_ero', name => 'Ero animation', options => [ + map [ $_, $self->{animated}[$_] ], 0..$#{$self->{animated}} ] ], + [ static => content => 'Animation in erotic scenes, leave to unkown if there are no ero scenes.' ], [ hidden => short => 'media' ], [ static => nolabel => 1, content => sub { h2 'Platforms'; -- cgit v1.2.3 From 8844486e8eb350185d76cde64105e85251c08040 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 24 May 2009 09:02:31 +0200 Subject: Allow search queries with only one character --- lib/VNDB/DB/Releases.pm | 1 - lib/VNDB/DB/VN.pm | 1 - 2 files changed, 2 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index d6510322..bc64b880 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -49,7 +49,6 @@ sub dbReleaseGet { if($o{search}) { for (split /[ -,._]/, $o{search}) { s/%//g; - next if length($_) < 2; if(/^\d+$/ && gtintype($_)) { push @where, 'rr.gtin = ?', $_; } else { diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index dcd1d06a..54e2f510 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -55,7 +55,6 @@ sub dbVNGet { ); for (split /[ -,._]/, $o{search}) { s/%//g; - next if length($_) < 2; if(/^\d+$/ && gtintype($_)) { push @w, 'irr.gtin = ?', $_; } else { -- cgit v1.2.3 From dcec270729b0a4a9bfc35b73744a0383a2036728 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 24 May 2009 09:07:52 +0200 Subject: Don't perform search subquery when there are no keywords to search on --- lib/VNDB/DB/Releases.pm | 2 +- lib/VNDB/DB/VN.pm | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index bc64b880..9491d213 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -51,7 +51,7 @@ sub dbReleaseGet { s/%//g; if(/^\d+$/ && gtintype($_)) { push @where, 'rr.gtin = ?', $_; - } else { + } elsif(length($_) > 0) { $_ = "%$_%"; push @where, '(rr.title ILIKE ? OR rr.original ILIKE ? OR rr.catalog = ?)', [ $_, $_, $_ ]; diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index 54e2f510..4798e16f 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -50,19 +50,18 @@ sub dbVNGet { ); if($o{search}) { - my @w = ( - '(irr.id IS NULL OR ir.latest = irr.id)' => 1 - ); + my @w; for (split /[ -,._]/, $o{search}) { s/%//g; if(/^\d+$/ && gtintype($_)) { push @w, 'irr.gtin = ?', $_; - } else { + } elsif(length($_) > 0) { $_ = "%$_%"; push @w, '(ivr.title ILIKE ? OR ivr.original ILIKE ? OR ivr.alias ILIKE ? OR irr.title ILIKE ? OR irr.original ILIKE ?)', [ $_, $_, $_, $_, $_ ]; } } + push @w, '(irr.id IS NULL OR ir.latest = irr.id)' => 1 if @w; $where{ q| v.id IN(SELECT iv.id FROM vn iv -- cgit v1.2.3 From 1e960aae90bc7a94365bdd1578a7852f996c8d93 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 24 May 2009 09:15:52 +0200 Subject: Removed category filters from /v/all The tags work fine already. I'll keep the categories on the VN pages and in the history for now, though. --- lib/VNDB/DB/VN.pm | 15 +-------------- lib/VNDB/Handler/VNBrowse.pm | 33 +-------------------------------- 2 files changed, 2 insertions(+), 46 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index 4798e16f..dcb3bd39 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -9,7 +9,7 @@ use VNDB::Func 'gtintype'; our @EXPORT = qw|dbVNGet dbVNAdd dbVNEdit dbVNImageId dbVNCache dbScreenshotAdd dbScreenshotGet dbScreenshotRandom|; -# Options: id, rev, char, search, cati, cate, lang, platform, results, page, order, what +# Options: id, rev, char, search, lang, platform, results, page, order, what # What: extended categories anime relations screenshots relgraph ranking changes sub dbVNGet { my($self, %o) = @_; @@ -27,19 +27,6 @@ sub dbVNGet { 'LOWER(SUBSTR(vr.title, 1, 1)) = ?' => $o{char} ) : (), defined $o{char} && !$o{char} ? ( '(ASCII(vr.title) < 97 OR ASCII(vr.title) > 122) AND (ASCII(vr.title) < 65 OR ASCII(vr.title) > 90)' => 1 ) : (), - $o{cati} && @{$o{cati}} ? ( q| - v.id IN(SELECT iv.id - FROM vn_categories ivc - JOIN vn iv ON iv.latest = ivc.vid - WHERE cat IN(!l) - GROUP BY iv.id - HAVING COUNT(cat) = ?)| => [ $o{cati}, $#{$o{cati}}+1 ] ) : (), - $o{cate} && @{$o{cate}} ? ( q| - v.id NOT IN(SELECT iv.id - FROM vn_categories ivc - JOIN vn iv ON iv.latest = ivc.vid - WHERE cat IN(!l) - GROUP BY iv.id)| => [ $o{cate} ] ) : (), $o{lang} && @{$o{lang}} ? ( '('.join(' OR ', map "v.c_languages ILIKE '%%$_%%'", @{$o{lang}}).')' => 1 ) : (), $o{platform} && @{$o{platform}} ? ( diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index 03c4a8ce..24fa8508 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -25,11 +25,7 @@ sub list { return 404 if $f->{_err}; $f->{q} ||= $f->{sq}; - # NOTE: this entire search thingy can also be done using a PgSQL fulltext search, - # which is faster and requires less code. It does require an extra database - # column, index and some triggers, though - - my(@cati, @cate, @plat, @lang); + my(@plat, @lang); my $q = $f->{q}; if($q) { # VNDBID @@ -37,15 +33,6 @@ sub list { if $q =~ /^([gvrptud])([0-9]+)(?:\.([0-9]+))?$/; if(!($q =~ s/^title://)) { - # categories - my %catl = map { - my $ic = $_; - map { $ic.$_ => $self->{categories}{$ic}[1]{$_} } keys %{$self->{categories}{$ic}[1]} - } keys %{$self->{categories}}; - - $q =~ s/-(?:$catl{$_}|c:$_)//ig && push @cate, $_ for keys %catl; - $q =~ s/(?:$catl{$_}|c:$_)//ig && push @cati, $_ for keys %catl; - # platforms $_ ne 'oth' && $q =~ s/(?:$self->{platforms}{$_}|p:$_)//ig && push @plat, $_ for keys %{$self->{platforms}}; @@ -62,8 +49,6 @@ sub list { results => 50, page => $f->{p}, order => ($f->{s} eq 'rel' ? 'c_released' : $f->{s} eq 'pop' ? 'c_popularity' : 'title').($f->{o} eq 'a' ? ' ASC' : ' DESC'), - @cati ? ( cati => \@cati ) : (), - @cate ? ( cate => \@cate ) : (), @lang ? ( lang => \@lang ) : (), @plat ? ( platform => \@plat ) : (), ); @@ -132,22 +117,6 @@ sub _filters { lit ' advanced search'; end; div id => 'advoptions', class => 'hidden'; - - h2; - lit 'Categories (boolean and, selecting more gives less results. The categories are explained on this page)'; - end; - ul id => 'catselect'; - for my $c (qw| e g t p h l s |) { - $c !~ /[thl]/ ? li : br; - txt $self->{categories}{$c}[0]; - ul; - li id => "cat_$c$_", $self->{categories}{$c}[1]{$_} - for (sort keys %{$self->{categories}{$c}[1]}); - end; - end if $c !~ /[gph]/; - } - end; - h2; lit 'Languages (boolean or, selecting more gives more results)'; end; -- cgit v1.2.3 From ce482a878851d5aa6d11f7a46e8a68ec480b82c6 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 24 May 2009 10:32:57 +0200 Subject: /r: Automatically display filters when nothing is set or no results were found And don't perform a search when no filters are set. --- lib/VNDB/Handler/Releases.pm | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 4dbabf5e..db874b1f 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -477,10 +477,7 @@ sub browse { ); return 404 if $f->{_err}; - my($list, $np) = $self->dbReleaseGet( - order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), - page => $f->{p}, - results => 50, + my @filters = ( $f->{mi} > 0 || $f->{ma} < 99990000 ? (date => [ $f->{mi}, $f->{ma} ]) : (), $f->{q} ? (search => $f->{q}) : (), $f->{pl}[0] ? (platforms => $f->{pl}) : (), @@ -489,7 +486,13 @@ sub browse { $f->{tp} >= 0 ? (type => $f->{tp}) : (), $f->{ma_a} || $f->{ma_m} ? (minage => [$f->{ma_m}, $f->{ma_a}]) : (), $f->{pa} ? (patch => $f->{pa}) : (), + ); + my($list, $np) = !@filters ? (undef, 0) : $self->dbReleaseGet( + order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), + page => $f->{p}, + results => 50, what => 'platforms', + @filters, ); 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}"; @@ -497,7 +500,7 @@ sub browse { $_&&($url .= ";pl=$_") for @{$f->{pl}}; $self->htmlHeader(title => 'Browse releases'); - _filters($self, $f); + _filters($self, $f, !@filters || !$list); $self->htmlBrowse( class => 'relbrowse', items => $list, @@ -529,13 +532,13 @@ sub browse { end; end; }, - ); + ) if $list; $self->htmlFooter; } sub _filters { - my($self, $f) = @_; + my($self, $f, $shown) = @_; form method => 'get', action => '/r', 'accept-charset' => 'UTF-8'; div class => 'mainbox'; @@ -547,9 +550,9 @@ sub _filters { end; a id => 'advselect', href => '#'; - lit ' filters'; + lit ''.($shown?'▾':'▸').' filters'; end; - div id => 'advoptions', class => 'hidden'; + div id => 'advoptions', !$shown ? (class => 'hidden') : (); h2 'Filters'; table class => 'formtable', style => 'margin-left: 0'; -- cgit v1.2.3 From aa2f9e6b013e87c181569ce66c35cf962ea6f739 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 30 May 2009 16:55:26 +0200 Subject: Screen resolution filter on /r --- lib/VNDB/DB/Releases.pm | 4 +++- lib/VNDB/Handler/Releases.pm | 27 +++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'lib') 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; -- cgit v1.2.3 From 1253d602e9c8c5ef0e8c49c61465332f758e9dd9 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 30 May 2009 17:06:32 +0200 Subject: Freeware and doujin filters on /r --- lib/VNDB/DB/Releases.pm | 20 +++++++++----------- lib/VNDB/Handler/Releases.pm | 8 ++++++++ 2 files changed, 17 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 659f8f27..bd5d8fcb 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -9,7 +9,8 @@ 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 resolutions +# Options: id vid rev order unreleased page results what date media +# platforms languages type minage search resolutions freeware doujin # What: extended changes vn producers platforms media sub dbReleaseGet { my($self, %o) = @_; @@ -19,14 +20,13 @@ sub dbReleaseGet { $o{order} ||= 'rr.released ASC'; my @where = ( - !$o{id} && !$o{rev} ? ( - 'r.hidden = FALSE' => 0 ) : (), - $o{id} ? ( - 'r.id = ?' => $o{id} ) : (), - $o{rev} ? ( - 'c.rev = ?' => $o{rev} ) : (), - $o{vid} ? ( - 'rv.vid = ?' => $o{vid} ) : (), + !$o{id} && !$o{rev} ? ( 'r.hidden = FALSE' => 0 ) : (), + $o{id} ? ( 'r.id = ?' => $o{id} ) : (), + $o{rev} ? ( 'c.rev = ?' => $o{rev} ) : (), + $o{vid} ? ( 'rv.vid = ?' => $o{vid} ) : (), + $o{patch} ? ( 'rr.patch = ?' => $o{patch} == 1 ? 1 : 0) : (), + $o{freeware} ? ( 'rr.freeware = ?' => $o{freeware} == 1 ? 1 : 0) : (), + $o{doujin} ? ( 'rr.doujin = ?' => $o{doujin} == 1 ? 1 : 0) : (), defined $o{unreleased} ? ( q|rr.released !s ?| => [ $o{unreleased} ? '>' : '<=', strftime('%Y%m%d', gmtime) ] ) : (), $o{date} ? ( @@ -40,8 +40,6 @@ sub dbReleaseGet { 'rr.type = ?' => $o{type} ) : (), $o{minage} ? ( '(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} ] ) : (), $o{resolutions} ? ( diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index b9ca71a7..1f2b2ac6 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -470,6 +470,8 @@ sub browse { { 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 => 'fw', required => 0, default => 0, enum => [ 0..2 ] }, + { name => 'do', required => 0, default => 0, enum => [ 0..2 ] }, { name => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] }, { name => 'ma_a', required => 0, default => 0, enum => [ keys %{$self->{age_ratings}} ] }, { name => 'mi', required => 0, default => 0, template => 'int' }, @@ -488,6 +490,8 @@ sub browse { $f->{tp} >= 0 ? (type => $f->{tp}) : (), $f->{ma_a} || $f->{ma_m} ? (minage => [$f->{ma_m}, $f->{ma_a}]) : (), $f->{pa} ? (patch => $f->{pa}) : (), + $f->{fw} ? (freeware => $f->{fw}) : (), + $f->{do} ? (doujin => $f->{do}) : (), ); my($list, $np) = !@filters ? (undef, 0) : $self->dbReleaseGet( order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), @@ -593,6 +597,10 @@ sub _filters { 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, [ select => short => 'fw', name => 'Freeware', + options => [ [0, 'All'], [1, 'Freeware only'], [2, 'Only non-free releases']]]); + $self->htmlFormPart($f, [ select => short => 'do', name => 'Doujin', + options => [ [0, 'All'], [1, 'Only doujin releases'], [2, 'Only commercial releases']]]); $self->htmlFormPart($f, [ date => short => 'mi', name => 'Released after' ]); $self->htmlFormPart($f, [ date => short => 'ma', name => 'Released before' ]); end; -- cgit v1.2.3 From 055a05ea4d7ec0956a36e18bc79d46aa54b2ab9c Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 09:40:36 +0200 Subject: Ignore doujin flag for patch release types --- lib/VNDB/Handler/Releases.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 1f2b2ac6..3933217a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -134,7 +134,7 @@ sub _infotable { Tr ++$i % 2 ? (class => 'odd') : (); td 'Publication'; - td ''.($r->{freeware} ? 'Freeware' : 'Non-free').', '.($r->{doujin} ? 'doujin' : 'commercial'); + td join ', ', $r->{freeware} ? 'Freeware' : 'Non-free', $r->{patch} ? () : $r->{doujin} ? 'doujin' : 'commercial'; end; if(@{$r->{platforms}}) { @@ -322,6 +322,7 @@ sub edit { my $new_vn = [ map { /^([0-9]+)/ ? $1 : () } split /\|\|\|/, $frm->{vn} ]; $frm->{platforms} = [ grep $_, @{$frm->{platforms}} ]; $frm->{$_} = $frm->{$_} ? 1 : 0 for (qw|patch freeware doujin|); + $frm->{doujin} = 0 if $frm->{patch}; return $self->resRedirect("/r$rid", 'post') if $rid && -- cgit v1.2.3 From 82aea85bad2913a1e9f25751cbe998dc671bd520 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 10:44:36 +0200 Subject: Option to expand/collapse edit summaries on history browser Makes use of cookies to store the users' preference. Might be a good idea to store this in the DB for logged in users, together with the tagspoil cookie. --- lib/VNDB/Util/CommonHTML.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index b9405941..1d6ae43b 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -484,7 +484,7 @@ sub htmlHistory { sub { td colspan => 2, class => 'tc1', 'Rev.' }, [ 'Date' ], [ 'User' ], - [ 'Page' ], + sub { td; a href => '#', id => 'history_comments', 'expand'; txt 'Page'; end; } ], row => sub { my($s, $n, $i) = @_; @@ -507,8 +507,8 @@ sub htmlHistory { end; end; if($i->{comments}) { - Tr $n % 2 ? ( class => 'odd' ) : (); - td colspan => 5, class => 'editsum'; + Tr class => $n % 2 ? 'editsum odd hidden' : 'editsum hidden'; + td colspan => 5; lit bb2html $i->{comments}, 150; end; end; -- cgit v1.2.3 From b3df3d4432841ac57c4667ac008cec73522b892d Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 11:03:42 +0200 Subject: Added clear button on /r --- lib/VNDB/Handler/Releases.pm | 1 + 1 file changed, 1 insertion(+) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 3933217a..0390b40e 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -646,6 +646,7 @@ sub _filters { div style => 'text-align: center; clear: left;'; input type => 'submit', value => 'Apply', class => 'submit'; + input type => 'reset', value => 'Clear', class => 'submit', onclick => 'location.href="/r"'; end; end; end; -- cgit v1.2.3 From 98e289f53ee3e2c6da7e03c9265c1781c2d5f9da Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 11:04:21 +0200 Subject: Correctly handle zero results and display friendly message on /r --- lib/VNDB/Handler/Releases.pm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 0390b40e..e816b080 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -494,7 +494,7 @@ sub browse { $f->{fw} ? (freeware => $f->{fw}) : (), $f->{do} ? (doujin => $f->{do}) : (), ); - my($list, $np) = !@filters ? (undef, 0) : $self->dbReleaseGet( + my($list, $np) = !@filters ? ([], 0) : $self->dbReleaseGet( order => $f->{s}.($f->{o}eq'd'?' DESC':' ASC'), page => $f->{p}, results => 50, @@ -509,7 +509,7 @@ sub browse { $_&&($url .= ";me=$_") for @{$f->{me}}; $self->htmlHeader(title => 'Browse releases'); - _filters($self, $f, !@filters || !$list); + _filters($self, $f, !@filters || !@$list); $self->htmlBrowse( class => 'relbrowse', items => $list, @@ -541,7 +541,17 @@ sub browse { end; end; }, - ) if $list; + ) if @$list; + if(@filters && !@$list) { + div class => 'mainbox'; + h1 'No results found'; + div class => 'notice'; + p qq|Sorry, couldn't find anything that comes through your filters. You might want to disable a few filters to get more results.\n\n| + .qq|Also, keep in mind that we don't have all information about all releases. So e.g. filtering on screen resolution will exclude | + .qq|all releases of which we don't know it's resolution, even though it might in fact be in the resolution you're looking for.|; + end; + end; + } $self->htmlFooter; } -- cgit v1.2.3 From 64fc83df49a9538a7d4f445fd6b3fa932080add3 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 12:08:42 +0200 Subject: Don't give a 500 when inputting the same anime ID twice on /v+/edit --- lib/VNDB/Handler/VNEdit.pm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/VNEdit.pm b/lib/VNDB/Handler/VNEdit.pm index 8363b500..3b0619ab 100644 --- a/lib/VNDB/Handler/VNEdit.pm +++ b/lib/VNDB/Handler/VNEdit.pm @@ -55,11 +55,11 @@ sub edit { if(!$frm->{_err}) { # parse and re-sort fields that have multiple representations of the same information - my $anime = [ grep /^[0-9]+$/, split /[ ,]+/, $frm->{anime} ]; + my $anime = { map +($_=>1), grep /^[0-9]+$/, split /[ ,]+/, $frm->{anime} }; my $relations = [ map { /^([0-9]+),([0-9]+),(.+)$/ && (!$vid || $2 != $vid) ? [ $1, $2, $3 ] : () } split /\|\|\|/, $frm->{relations} ]; my $screenshots = [ map /^[0-9]+,[01],[0-9]+$/ ? [split /,/] : (), split / +/, $frm->{screenshots} ]; - $frm->{anime} = join ' ', sort { $a <=> $b } @$anime; + $frm->{anime} = join ' ', sort { $a <=> $b } keys %$anime; $frm->{relations} = join '|||', map $_->[0].','.$_->[1].','.$_->[2], sort { $a->[1] <=> $b->[1]} @{$relations}; $frm->{img_nsfw} = $frm->{img_nsfw} ? 1 : 0; $frm->{screenshots} = join ' ', map sprintf('%d,%d,%d', $_->[0], $_->[1]?1:0, $_->[2]), sort { $a->[0] <=> $b->[0] } @$screenshots; @@ -71,7 +71,7 @@ sub edit { # execute the edit/add my %args = ( (map { $_ => $frm->{$_} } qw|title original alias desc length l_wp l_encubed l_renai l_vnn editsum img_nsfw|), - anime => $anime, + anime => [ keys %$anime ], categories => $v->{categories}, relations => $relations, image => $image, -- cgit v1.2.3 From 776743c0b8f1adb6f6335b7c1bb30323879cf98c Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 15:09:28 +0200 Subject: Func::monthstr: Output date in italics if the day is unknown yorhel, in the browse view, can you put the date in italics when the first complete release date is not "fully qualified" ? e.g. 2008-08 --- lib/VNDB/Func.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index 0a5a9038..e64527ef 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -66,11 +66,12 @@ sub datestr { # e.g.: 'Jan 2009', '2009', 'unknown', 'TBA' sub monthstr { my $date = sprintf '%08d', shift||0; - my($y, $m) = ($1, $2) if $date =~ /^([0-9]{4})([0-9]{2})/; + my($y, $m, $d) = ($1, $2, $3) if $date =~ /^([0-9]{4})([0-9]{2})([0-9]{2})/; return 'TBA' if $y == 9999; return 'unknown' if $y == 0; return $y if $m == 99; - return sprintf '%s %d', [qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)]->[$m-1], $y; + my $r = sprintf '%s %d', [qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)]->[$m-1], $y; + return $d == 99 ? "$r" : $r; } -- cgit v1.2.3 From 2573d3d310e3636f466e1d0bd97c52882fb8b7c0 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sun, 31 May 2009 17:47:10 +0200 Subject: Tabs on v/r/p/g search fields This should make a nice connection between the few kinds of database entries we have. --- lib/VNDB/Handler/Producers.pm | 5 +---- lib/VNDB/Handler/Releases.pm | 5 +---- lib/VNDB/Handler/Tags.pm | 12 +++--------- lib/VNDB/Handler/VNBrowse.pm | 5 +---- lib/VNDB/Util/CommonHTML.pm | 19 ++++++++++++++++++- 5 files changed, 24 insertions(+), 22 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index 2aaa241d..5977ac1e 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -172,10 +172,7 @@ sub list { div class => 'mainbox'; h1 'Browse producers'; form action => '/p/all', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset class => 'search'; - input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; - input type => 'submit', class => 'submit', value => 'Search!'; - end; + $self->htmlSearchBox('p', $f->{q}); end; p class => 'browseopts'; for ('all', 'a'..'z', 0) { diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index e816b080..6b773c9f 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -563,10 +563,7 @@ sub _filters { div class => 'mainbox'; h1 'Browse releases'; - fieldset class => 'search'; - input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; - input type => 'submit', class => 'submit', value => 'Search!'; - end; + $self->htmlSearchBox('r', $f->{q}); a id => 'advselect', href => '#'; lit ''.($shown?'▾':'▸').' filters'; diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm index 6838e7c7..a6d02698 100644 --- a/lib/VNDB/Handler/Tags.pm +++ b/lib/VNDB/Handler/Tags.pm @@ -368,11 +368,8 @@ sub taglist { div class => 'mainbox'; h1 $title; form action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset class => 'search'; - input type => 'hidden', name => 't', value => $f->{t}; - input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; - input type => 'submit', class => 'submit', value => 'Search!'; - end; + input type => 'hidden', name => 't', value => $f->{t}; + $self->htmlSearchBox('g', $f->{q}); end; p class => 'browseopts'; a href => "/g/list?q=$f->{q};t=-1", $f->{t} == -1 ? (class => 'optselected') : (), 'All'; @@ -590,10 +587,7 @@ sub tagindex { a class => 'addnew', href => "/g/new", ($self->authCan('tagmod')?'Create':'Request').' new tag' if $self->authCan('tag'); h1 'Search tags'; form action => '/g/list', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset class => 'search'; - input type => 'text', name => 'q', id => 'q', class => 'text'; - input type => 'submit', class => 'submit', value => 'Search!'; - end; + $self->htmlSearchBox('g', ''); end; end; diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index 24fa8508..5eb8e4f8 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -103,10 +103,7 @@ sub _filters { div class => 'mainbox'; h1 'Browse visual novels'; form action => '/v/all', 'accept-charset' => 'UTF-8', method => 'get'; - fieldset class => 'search'; - input type => 'text', name => 'q', id => 'q', class => 'text', value => $f->{q}; - input type => 'submit', class => 'submit', value => 'Search!'; - end; + $self->htmlSearchBox('v', $f->{q}); end; p class => 'browseopts'; for ('all', 'a'..'z', 0) { diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index 1d6ae43b..7421b1c0 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -12,7 +12,7 @@ use POSIX 'ceil'; our @EXPORT = qw| htmlMainTabs htmlDenied htmlHiddenMessage htmlBrowse htmlBrowseNavigate - htmlRevision htmlEditMessage htmlItemMessage htmlVoteStats htmlHistory + htmlRevision htmlEditMessage htmlItemMessage htmlVoteStats htmlHistory htmlSearchBox |; @@ -518,4 +518,21 @@ sub htmlHistory { } +sub htmlSearchBox { + my($self, $sel, $v) = @_; + + p class => 'searchtabs'; + a href => '/v/all', $sel eq 'v' ? (class => 'sel') : (), 'Visual novels'; + a href => '/r', $sel eq 'r' ? (class => 'sel') : (), 'Releases'; + a href => '/p/all', $sel eq 'p' ? (class => 'sel') : (), 'Producers'; + a href => '/g', $sel eq 'g' ? (class => 'sel') : (), 'Tags'; + end; + fieldset class => 'search'; + input type => 'text', name => 'q', id => 'q', class => 'text', value => $v; + input type => 'submit', class => 'submit', value => 'Search!'; + end; +} + + + 1; -- cgit v1.2.3 From 36c03eb517b5765daff67d8a726e18657c07da09 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Mon, 1 Jun 2009 14:23:03 +0200 Subject: Display edit history for hidden items --- lib/VNDB/Handler/Misc.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm index a9a5ad14..dacc0f9c 100644 --- a/lib/VNDB/Handler/Misc.pm +++ b/lib/VNDB/Handler/Misc.pm @@ -212,7 +212,7 @@ sub history { page => $f->{p}, results => 50, auto => $f->{m}, - hidden => $f->{h}, + hidden => $type && $type ne 'u' ? 0 : $f->{h}, edit => $f->{e}, releases => $f->{r}, ); -- cgit v1.2.3 From 719bf4201192dbde43470c747eeef0855c676939 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 6 Jun 2009 13:54:35 +0200 Subject: Improved in the release resolution options + typo fix: unkown -> unknown --- lib/VNDB/Func.pm | 4 ++-- lib/VNDB/Handler/Releases.pm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index e64527ef..4ca20dc5 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -42,9 +42,9 @@ sub date { # argument: database release date format (yyyymmdd) -# y = 0000 -> unkown +# y = 0000 -> unknown # y = 9999 -> TBA -# m = 99 -> month+day unkown +# m = 99 -> month+day unknown # d = 99 -> day unknown # return value: (unknown|TBA|yyyy|yyyy-mm|yyyy-mm-dd) # if date > now: str diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 6b773c9f..d031340d 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -399,8 +399,8 @@ sub _form { [ select => short => 'ani_story', name => 'Story animation', options => [ map [ $_, $self->{animated}[$_] ], 0..$#{$self->{animated}} ] ], [ select => short => 'ani_ero', name => 'Ero animation', options => [ - map [ $_, $self->{animated}[$_] ], 0..$#{$self->{animated}} ] ], - [ static => content => 'Animation in erotic scenes, leave to unkown if there are no ero scenes.' ], + map [ $_, $_ ? $self->{animated}[$_] : 'Unknown / no ero scenes' ], 0..$#{$self->{animated}} ] ], + [ static => content => 'Animation in erotic scenes, leave to unknown if there are no ero scenes.' ], [ hidden => short => 'media' ], [ static => nolabel => 1, content => sub { h2 'Platforms'; -- cgit v1.2.3 From 4349ffcf0596a4c0f90dd848d84de87cd37864d4 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 6 Jun 2009 14:04:26 +0200 Subject: Removed some leftover code of the category filters on /v --- lib/VNDB/Handler/VNBrowse.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index 5eb8e4f8..d5791907 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -113,7 +113,7 @@ sub _filters { a id => 'advselect', href => '#'; lit ' advanced search'; end; - div id => 'advoptions', class => 'hidden'; + div id => 'advoptions', class => 'hidden vnoptions'; h2; lit 'Languages (boolean or, selecting more gives more results)'; end; -- cgit v1.2.3