summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2015-11-26 02:33:53 +0100
committerYorhel <git@yorhel.nl>2015-11-26 02:37:40 +0100
commit6a4311639390e3e7321e3e0725ef33575ad45ec0 (patch)
tree6d5e764655e8b4ea48c58fb8b557b3121db2fadf /lib
parent15fa37550f10f103e20bddfcb2c064b640ab54da (diff)
Handler::VNPage: Move staff tab into main VN page + some styling changes
The styling of the staff info can be a bit awkward at times, but it looks slightly better than a table, IMO. I didn't really know what to do with the the seiyuu info - it wastes a lot of screen space in its current implementation, but I can't think of anything better at the moment.
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/VN.pm10
-rw-r--r--lib/VNDB/Handler/VNPage.pm65
2 files changed, 24 insertions, 51 deletions
diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm
index f7c2dc94..b7474570 100644
--- a/lib/VNDB/DB/VN.pm
+++ b/lib/VNDB/DB/VN.pm
@@ -7,7 +7,7 @@ use Exporter 'import';
use VNDB::Func 'gtintype', 'normalize_query';
use Encode 'decode_utf8';
-our @EXPORT = qw|dbVNGet dbVNGetRev dbVNRevisionInsert dbVNImageId dbScreenshotAdd dbScreenshotGet dbScreenshotRandom dbVNHasChar dbVNHasStaff dbVNImportSeiyuu|;
+our @EXPORT = qw|dbVNGet dbVNGetRev dbVNRevisionInsert dbVNImageId dbScreenshotAdd dbScreenshotGet dbScreenshotRandom dbVNHasChar dbVNImportSeiyuu|;
# Options: id, char, search, length, lang, olang, plat, tag_inc, tag_exc, tagspoil,
@@ -344,14 +344,6 @@ sub dbVNHasChar {
}
-sub dbVNHasStaff {
- my($self, $vid) = @_;
- return $self->dbRow(
- 'SELECT 1 AS exists FROM vn_staff WHERE id = ? UNION ALL SELECT 1 FROM vn_seiyuu WHERE id = ? LIMIT 1', $vid, $vid
- )->{exists};
-}
-
-
# returns seiyuus that voice characters referenced by $cids in VNs other than $vid
sub dbVNImportSeiyuu {
my($self, $vid, $cids) = @_;
diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm
index 02d14139..d5461c1c 100644
--- a/lib/VNDB/Handler/VNPage.pm
+++ b/lib/VNDB/Handler/VNPage.pm
@@ -11,7 +11,8 @@ TUWF::register(
qr{v/rand} => \&rand,
qr{v([1-9]\d*)/rg} => \&rg,
qr{v([1-9]\d*)/releases} => \&releases,
- qr{v([1-9]\d*)/(chars|staff)} => \&page,
+ qr{v([1-9]\d*)/chars} => \&page,
+ qr{v([1-9]\d*)/staff} => sub { $_[0]->resRedirect("/v$_[1]#staff") },
qr{v([1-9]\d*)(?:\.([1-9]\d*))?} => \&page,
);
@@ -330,13 +331,12 @@ sub page {
my($self, $vid, $rev) = @_;
my $char = $rev && $rev eq 'chars';
- my $staff = $rev && $rev eq 'staff';
- $rev = undef if $char || $staff;
+ $rev = undef if $char;
my $method = $rev ? 'dbVNGetRev' : 'dbVNGet';
my $v = $self->$method(
id => $vid,
- what => 'extended anime relations screenshots rating ranking'.($staff || $rev ? ' credits' : ''),
+ what => 'extended anime relations screenshots rating ranking credits',
$rev ? (rev => $rev) : (),
)->[0];
return $self->resNotFound if !$v->{id};
@@ -465,26 +465,15 @@ sub page {
end 'div'; # /mainbox
my $haschar = $self->dbVNHasChar($v->{id});
- my $hasstaff = $self->dbVNHasStaff($v->{id});
- if($haschar || $hasstaff || $self->authCan('edit')) {
+ if($haschar || $self->authCan('edit')) {
clearfloat; # fix tabs placement when tags are hidden
ul class => 'maintabs notfirst';
- if($haschar || $hasstaff) {
- li class => 'left '.(!($char || $staff) && ' tabselected'); a href => "/v$v->{id}#main", name => 'main', mt '_vnpage_tab_main'; end;
- if ($haschar) {
- li class => 'left '.($char ? ' tabselected' : ''); a href => "/v$v->{id}/chars#chars", name => 'chars', mt '_vnpage_tab_chars'; end;
- }
- if ($hasstaff) {
- li class => 'left '.($staff ? ' tabselected' : ''); a href => "/v$v->{id}/staff#staff", name => 'staff', mt '_vnpage_tab_staff'; end;
- }
+ if($haschar) {
+ li class => 'left '.(!$char ? ' tabselected' : ''); a href => "/v$v->{id}#main", name => 'main', mt '_vnpage_tab_main'; end;
+ li class => 'left '.($char ? ' tabselected' : ''); a href => "/v$v->{id}/chars#chars", name => 'chars', mt '_vnpage_tab_chars'; end;
}
if($self->authCan('edit')) {
li; a href => "/c/new?vid=$v->{id}", mt '_vnpage_char_add'; end;
- if(!$v->{locked}) {
- li;
- a href => "/v$v->{id}/edit#vn_staff", mt $hasstaff ? '_vnpage_staff_edit' : '_vnpage_staff_add';
- end;
- }
li; a href => "/v$v->{id}/add", mt '_vnpage_rel_add'; end;
}
end;
@@ -492,10 +481,9 @@ sub page {
if($char) {
_chars($self, $haschar, $v);
- } elsif ($staff) {
- _staff($self, $v) if $hasstaff;
} else {
_releases($self, $v, $r);
+ _staff($self, $v);
_stats($self, $v);
_screenshots($self, $v, $r) if @{$v->{screenshots}};
}
@@ -914,29 +902,22 @@ sub _chars {
sub _staff {
my ($self, $v) = @_;
if(@{$v->{credits}}) {
- div class => 'mainbox staff';
+ div class => 'mainbox staff', id => 'staff';
h1 mt '_vnpage_staff';
- my $has_notes = grep { $_->{note} } @{$v->{credits}};
- table class => 'stripe';
- thead;
- Tr;
- td class => 'tc1', mt '_staff_col_role';
- td class => 'tc2', mt '_staff_col_credit';
- td class => 'tc3', mt '_staff_col_note' if $has_notes;
+ for my $r (@{$self->{staff_roles}}) {
+ my @s = grep $_->{role} eq $r, @{$v->{credits}};
+ next if !@s;
+ ul;
+ li; b mt '_credit_'.$r; end;
+ for(@s) {
+ li;
+ a href => "/s$_->{id}", title => $_->{original}||$_->{name}, $_->{name};
+ b class => 'grayedout', $_->{note} if $_->{note};
+ end;
+ }
end;
- end;
- my $last_role = '';
- for my $s (@{$v->{credits}}) {
- Tr;
- td class => 'tc1', $s->{role} ne $last_role ? mt '_credit_'.$s->{role} : '';
- td class => 'tc2';
- a href => "/s$s->{id}", title => $s->{original}||$s->{name}, $s->{name};
- end;
- td class => 'tc3', $s->{note} if $has_notes;
- end;
- $last_role = $s->{role};
- }
- end 'table';
+ }
+ clearfloat;
end;
}
if(@{$v->{seiyuu}}) {