summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/lang.txt48
-rw-r--r--data/style.css8
-rw-r--r--lib/VNDB/DB/VN.pm10
-rw-r--r--lib/VNDB/Handler/VNPage.pm65
4 files changed, 30 insertions, 101 deletions
diff --git a/data/lang.txt b/data/lang.txt
index 663b4ed4..2ce45fe5 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -6242,18 +6242,6 @@ tr*:
uk*:
it*:
-:_staff_col_credit
-en : Credit
-ru*:
-cs*:
-hu*:
-nl*:
-de :
-es*:
-tr*:
-uk*:
-it*:
-
:_staff_col_note
en : Note
ru*:
@@ -15586,18 +15574,6 @@ tr : karakterler
uk : персонажі
it : personaggi
-:_vnpage_tab_staff
-en : staff
-ru*:
-cs*:
-hu*:
-nl*:
-de : Stab
-es*:
-tr*:
-uk*:
-it*:
-
:_vnpage_rel
en : Releases
ru : Выпуски
@@ -15733,30 +15709,6 @@ tr*:
uk*:
it*:
-:_vnpage_staff_add
-en : add staff
-ru*:
-cs*:
-hu*:
-nl*:
-de : Stab hinzufügen
-es*:
-tr*:
-uk*:
-it*:
-
-:_vnpage_staff_edit
-en : edit staff
-ru*:
-cs*:
-hu*:
-nl*:
-de : Stab bearbeiten
-es*:
-tr*:
-uk*:
-it*:
-
:_vnpage_rel_add
en : add release
ru : добавить выпуск
diff --git a/data/style.css b/data/style.css
index f42d2a3a..e3404883 100644
--- a/data/style.css
+++ b/data/style.css
@@ -604,9 +604,13 @@ table.aliases td { padding: 0 5px; }
table.aliases td.key { padding: 0 5px 0 0; width: auto }
-/***** Staff display *****/
+/***** Staff display on VN pages *****/
-div.staff td { white-space: nowrap; padding-left: 20px; padding-right: 20px; }
+div.staff ul { list-style: none; margin: 5px 15px; float: left; min-width: 300px }
+div.staff li b.grayedout { margin-left: 10px }
+
+div.staff td.tc1,
+div.staff td.tc2 { white-space: nowrap; padding-left: 20px; padding-right: 20px; }
/***** Staff edit *****/
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}}) {