From 727714378e8eb8a8c1ebd8a4b7d69df0148a1e4e Mon Sep 17 00:00:00 2001 From: Yorhel Date: Wed, 12 Nov 2008 14:46:42 +0100 Subject: Expanded producer page with VN info and created a nice page layout --- data/global.pl | 29 ++++++++++++++++++++++++++++- lib/VNDB/DB/Producers.pm | 22 +++++++++++++++++++++- lib/VNDB/Handler/Producers.pm | 30 ++++++++++++++++++++++++++++-- static/f/style.css | 19 +++++++++++++++++++ 4 files changed, 96 insertions(+), 4 deletions(-) diff --git a/data/global.pl b/data/global.pl index e6702d6f..3889628a 100644 --- a/data/global.pl +++ b/data/global.pl @@ -19,6 +19,7 @@ our %S = ( url_static => 'http://s.vndb.org', cookie_domain => '.vndb.org', cookie_key => 'any-private-string-here', + sharedmem_key => 'VNDB', user_ranks => [ # rankname allowed actions # DB number [qw| visitor hist |], # 0 @@ -27,7 +28,31 @@ our %S = ( [qw| mod hist board boardmod edit mod lock del |], # 3 [qw| admin hist board boardmod edit mod lock del usermod |], # 4 ], - sharedmem_key => 'VNDB', + languages => { + cs => q|Czech|, + da => q|Danish|, + de => q|German|, + en => q|English|, + es => q|Spanish|, + fi => q|Finnish|, + fr => q|French|, + it => q|Italian|, + ja => q|Japanese|, + ko => q|Korean|, + nl => q|Dutch|, + no => q|Norwegian|, + pl => q|Polish|, + pt => q|Portuguese|, + ru => q|Russian|, + sv => q|Swedish|, + tr => q|Turkish|, + zh => q|Chinese|, + }, + producer_types => { + co => 'Company', + in => 'Individual', + ng => 'Amateur group', + }, ); @@ -50,3 +75,5 @@ our %M = ( require $ROOT.'/data/config.pl' if -f $ROOT.'/data/config.pl'; 1; + + diff --git a/lib/VNDB/DB/Producers.pm b/lib/VNDB/DB/Producers.pm index fda367f5..d8a46774 100644 --- a/lib/VNDB/DB/Producers.pm +++ b/lib/VNDB/DB/Producers.pm @@ -53,7 +53,27 @@ sub dbProducerGet { $select, join(' ', @join), \%where, ); - # TODO: get vn + if(@$r && $o{what} =~ /vn/) { + my %r = map { + $r->[$_]{vn} = []; + ($r->[$_]{id}, $_) + } 0..$#$r; + + push @{$r->[$r{$_->{pid}}]{vn}}, $_ for (@{$self->dbAll(q| + SELECT MAX(vp.pid) AS pid, v.id, MAX(vr.title) AS title, MAX(vr.original) AS original, MIN(rr.released) AS date + FROM releases_producers vp + JOIN releases_rev rr ON rr.id = vp.rid + JOIN releases r ON r.latest = rr.id + JOIN releases_vn rv ON rv.rid = rr.id + JOIN vn v ON v.id = rv.vid + JOIN vn_rev vr ON vr.id = v.latest + WHERE vp.pid IN(!l) + AND v.hidden = FALSE + GROUP BY v.id + ORDER BY date|, + [ keys %r ] + )}); + } return wantarray ? ($r, $np) : $r; } diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm index 0ec582c5..2583ad13 100644 --- a/lib/VNDB/Handler/Producers.pm +++ b/lib/VNDB/Handler/Producers.pm @@ -14,14 +14,40 @@ YAWF::register( sub page { my($self, $pid) = @_; - my $p = $self->dbProducerGet(id => $pid)->[0]; + my $p = $self->dbProducerGet(id => $pid, what => 'vn')->[0]; return 404 if !$p->{id}; $self->htmlHeader(title => $p->{name}); $self->htmlMainTabs(p => $p); - div class => 'mainbox'; + div class => 'mainbox producerpage'; h1 $p->{name}; h2 class => 'alttitle', $p->{original} if $p->{original}; + p class => 'center'; + txt "$self->{languages}{$p->{lang}} \L$self->{producer_types}{$p->{type}}"; + if($p->{website}) { + txt "\n"; + a href => $p->{website}, $p->{website}; + } + end; + + p class => 'description', $p->{desc} + if $p->{desc}; + + end; + div class => 'mainbox producerpage'; + h1 'Visual Novel Relations'; + if(!@{$p->{vn}}) { + p 'We have currently no visual novels related to this producer.'; + } else { + ul; + for (@{$p->{vn}}) { + li; + txt "$_->{date} "; + a href => "/v$_->{id}", title => $_->{original}, $_->{title}; + end; + } + end; + } end; $self->htmlFooter; } diff --git a/static/f/style.css b/static/f/style.css index d492a4a2..52701306 100644 --- a/static/f/style.css +++ b/static/f/style.css @@ -336,6 +336,25 @@ div.vndescription p { +/***** Producer page *******/ + +.producerpage p.description { + margin: 10px 100px!important; +} +.producerpage ul { + margin: 0 50px; +} +.producerpage li { + padding-top: 3px; + list-style-type: none; +} +.producerpage li a { + margin-left: 10px; +} + + + + /***** Warning/Notice Box *****/ div.warning, div.notice { -- cgit v1.2.3