diff options
author | Yorhel <git@yorhel.nl> | 2008-11-12 14:46:42 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2008-11-12 14:46:42 +0100 |
commit | 727714378e8eb8a8c1ebd8a4b7d69df0148a1e4e (patch) | |
tree | f409cdee87a24fae87ad95cf70a9d57b3645d0c8 /lib | |
parent | 55639ecf1be3a69f77f836daa1cc017ad6e8d4b1 (diff) |
Expanded producer page with VN info and created a nice page layout
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB/DB/Producers.pm | 22 | ||||
-rw-r--r-- | lib/VNDB/Handler/Producers.pm | 30 |
2 files changed, 49 insertions, 3 deletions
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; } |