summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2015-05-13 13:59:04 +0200
committerYorhel <git@yorhel.nl>2015-05-13 13:59:04 +0200
commit3921fe19c6b0bd5125bc488a338a8968dc2f2f81 (patch)
treee52e50e3aacc0d44ee4fc815ea77c8d15b3581a9
parent2a783edbab51aa490884814c9c45f919886d70ef (diff)
Changed layour of staff pages
Not entirely sure if this is an improvement, but it's slightly more consistent with other layouts (combination of user page, release page and character page), and leaves more room for the credit/cast listings.
-rw-r--r--data/lang.txt16
-rw-r--r--data/style.css13
-rw-r--r--lib/VNDB/Handler/Staff.pm232
-rw-r--r--lib/VNDB/Util/BrowseHTML.pm4
4 files changed, 113 insertions, 152 deletions
diff --git a/data/lang.txt b/data/lang.txt
index ab178cfd..3c76b8bf 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -5831,8 +5831,8 @@ tr*:
uk*:
it*:
-:_staff_as
-en : as [_1]
+:_staff_col_as
+en : As
ru*:
cs*:
hu*:
@@ -5939,18 +5939,6 @@ tr*:
uk*:
it*:
-:_staff_bio
-en : Info
-ru*:
-cs*:
-hu*:
-nl*:
-de*:
-es*:
-tr*:
-uk*:
-it*:
-
:_staff_col_title
en : Title
ru*:
diff --git a/data/style.css b/data/style.css
index 863f84ba..3e4576c1 100644
--- a/data/style.css
+++ b/data/style.css
@@ -571,16 +571,11 @@ div.staffbrowse { padding-bottom: 10px }
.staffbrowse ul { float: left; margin-top: -5px; margin-left: 3%; width: 28%; }
.staffbrowse ul li { list-style-type: none; margin-bottom: 2px; }
.staffbrowse ul li acronym { margin-right: 5px; margin-top: 1px; }
-.staffinfo { position: relative; float: left; margin-right: 3%; margin-bottom: 20px; }
-.staffinfo acronym { vertical-align: bottom; }
-.staffdesc h2, .staffroles h2 { margin: 0; padding: 5px 0; }
-.staffdesc { display: table; margin-bottom: 10px; }
-.staffdesc p { padding: 0 5px; }
-.staffroles td { padding-left: 20px; padding-right: 20px; }
-.staffroles td.tc1 { white-space: nowrap; }
-.staffroles td.tc2 { min-width: 100px; }
+.staffpage table.stripe { width: 400px; margin: 0 auto; }
+.staffpage .key { width: 70px; }
+.staffroles td.tc2 { white-space: nowrap; width: 80px }
table.aliases td { padding: 0 5px; }
-table.aliases td.key { padding: 0 5px 0 0; }
+table.aliases td.key { padding: 0 5px 0 0; width: auto }
/***** Staff display *****/
diff --git a/lib/VNDB/Handler/Staff.pm b/lib/VNDB/Handler/Staff.pm
index e17e5319..3c8fd7af 100644
--- a/lib/VNDB/Handler/Staff.pm
+++ b/lib/VNDB/Handler/Staff.pm
@@ -15,6 +15,7 @@ TUWF::register(
qr{xml/staff\.xml} => \&staffxml,
);
+
sub page {
my($self, $id, $rev) = @_;
@@ -51,153 +52,130 @@ sub page {
div class => 'mainbox staffpage';
$self->htmlItemMessage('s', $s);
- div class => 'staffinfo';
- h1 $s->{name};
- h2 class => 'alttitle';
- span style => 'margin-right: 10px', $s->{original} if $s->{original};
- cssicon "gen $s->{gender}", mt "_gender_$s->{gender}" if $s->{gender} ne 'unknown';
- end;
-
- # info table
- table class => 'stripe';
+ h1 $s->{name};
+ h2 class => 'alttitle', $s->{original} if $s->{original};
+ # info table
+ table class => 'stripe';
+ thead;
Tr;
- td class => 'key', mt '_staff_language';
- td mt "_lang_$s->{lang}";
+ td colspan => 2;
+ b style => 'margin-right: 10px', $s->{name};
+ b class => 'grayedout', style => 'margin-right: 10px', $s->{original} if $s->{original};
+ cssicon "gen $s->{gender}", mt "_gender_$s->{gender}" if $s->{gender} ne 'unknown';
+ end;
end;
- if (@{$s->{aliases}}) {
- Tr;
- td class => 'key', mt('_staff_aliases', scalar @{$s->{aliases}});
- td;
- table class => 'aliases';
- foreach my $alias (@{$s->{aliases}}) {
- Tr class => 'nostripe';
- td $alias->{original} ? () : (colspan => 2), class => 'key';
- txt $alias->{name};
- end;
- td $alias->{original} if $alias->{original};
+ end;
+ Tr;
+ td class => 'key', mt '_staff_language';
+ td mt "_lang_$s->{lang}";
+ end;
+ if(@{$s->{aliases}}) {
+ Tr;
+ td class => 'key', mt('_staff_aliases', scalar @{$s->{aliases}});
+ td;
+ table class => 'aliases';
+ for my $alias (@{$s->{aliases}}) {
+ Tr class => 'nostripe';
+ td $alias->{original} ? () : (colspan => 2), class => 'key';
+ txt $alias->{name};
end;
- }
- end;
- end;
- end;
- }
- my @links = (
- $s->{l_site} ? [ 'site', $s->{l_site} ] : (),
- $s->{l_wp} ? [ 'wp', "http://en.wikipedia.org/wiki/$s->{l_wp}" ] : (),
- $s->{l_twitter} ? [ 'twitter', "https://twitter.com/$s->{l_twitter}" ] : (),
- $s->{l_anidb} ? [ 'anidb', "http://anidb.net/cr$s->{l_anidb}" ] : (),
- );
- if(@links) {
- Tr;
- td class => 'key', mt '_staff_links';
- td;
- for(@links) {
- a href => $_->[1], mt "_staff_l_$_->[0]";
- br if $_ != $links[$#links];
+ td $alias->{original} if $alias->{original};
+ end;
}
end;
end;
- }
- end 'table';
- end;
-
- # description
- div class => 'staffdesc';
- if($s->{desc}) {
- h2 mt '_staff_bio';
- p;
- lit bb2html $s->{desc}, 0, 1;
- end;
- br;
- }
-
- if (@{$s->{roles}}) {
- h2 mt '_staff_credits';
- my $has_notes = first { $_->{note} || $_->{name} ne $s->{name} } @{$s->{roles}};
- table class => 'staffroles';
- thead;
- Tr;
- td class => 'tc2', mt '_staff_col_title';
- td class => 'tc3', mt '_staff_col_released';
- td class => 'tc1', mt '_staff_col_role';
- td class => 'tc4', mt '_staff_col_note' if $has_notes;
- end;
- end;
- tbody;
- my($last_vid, $row_count, $num) = (0) x 3;
- for my $i (0..$#{$s->{roles}}) {
- my $r = $s->{roles}->[$i];
- if($r->{vid} != $last_vid) {
- ++$num;
- $row_count = 1;
- for my $j (1+$i..$#{$s->{roles}}) {
- last if $r->{vid} != $s->{roles}->[$j]->{vid};
- ++$row_count;
- }
- }
- Tr $num&1 ? (class => 'odd') : ();
- if($last_vid != $r->{vid}) {
- td class => 'tc2', $row_count > 1 ? (rowspan => $row_count) : ();
- a href => "/v$r->{vid}", title => $r->{t_original}||$r->{title}, shorten $r->{title}, 60;
- end;
- td class => 'tc3', $row_count > 1 ? (rowspan => $row_count) : ();
- lit $self->{l10n}->datestr($r->{c_released});
- end;
- }
- td class => 'tc1', mt '_credit_'.$r->{role};
- if($has_notes) {
- td class => 'tc4';
- txt '('.mt('_staff_as', $r->{name}).') ' if $r->{name} ne $s->{name};
- txt $r->{note};
- end;
- }
- end;
- $last_vid = $r->{vid};
- }
- end;
end;
- br;
}
- if (@{$s->{cast}}) {
- h2 mt('_staff_voiced', scalar @{$s->{cast}});
- my $has_notes = first { $_->{note} || $_->{name} ne $s->{name} } @{$s->{cast}};
- table class => 'stripe staffroles';
- thead;
- Tr;
- td class => 'tc2', mt '_staff_col_title';
- td class => 'tc3', mt '_staff_col_released';
- td class => 'tc1', mt '_staff_col_cast';
- td class => 'tc4', mt '_staff_col_note' if $has_notes;
- end;
- end;
- tbody;
- foreach my $r (@{$s->{cast}}) {
- Tr;
- td class => 'tc2';
- a href => "/v$r->{vid}", title => $r->{t_original}||$r->{title}, shorten $r->{title}, 60;
- end;
- td class => 'tc3'; lit $self->{l10n}->datestr($r->{c_released}); end;
- td class => 'tc1'; a href => "/c$r->{cid}", title => $r->{c_original}, $r->{c_name}; end;
- if($has_notes) {
- td class => 'tc4';
- txt '('.mt('_staff_as', $r->{name}).') ' if $r->{name} ne $s->{name};
- txt $r->{note};
- end;
- }
- end;
+ my @links = (
+ $s->{l_site} ? [ 'site', $s->{l_site} ] : (),
+ $s->{l_wp} ? [ 'wp', "http://en.wikipedia.org/wiki/$s->{l_wp}" ] : (),
+ $s->{l_twitter} ? [ 'twitter', "https://twitter.com/$s->{l_twitter}" ] : (),
+ $s->{l_anidb} ? [ 'anidb', "http://anidb.net/cr$s->{l_anidb}" ] : (),
+ );
+ if(@links) {
+ Tr;
+ td class => 'key', mt '_staff_links';
+ td;
+ for(@links) {
+ a href => $_->[1], mt "_staff_l_$_->[0]";
+ br if $_ != $links[$#links];
}
end;
end;
}
+ end 'table';
+
+ # description
+ p class => 'description';
+ lit bb2html $s->{desc}, 0, 1;
end;
- clearfloat;
end;
+ _roles($self, $s);
+ _cast($self, $s);
$self->htmlFooter;
}
+sub _roles {
+ my($self, $s) = @_;
+ return if !@{$s->{roles}};
+
+ h1 class => 'boxtitle', mt '_staff_credits';
+ $self->htmlBrowse(
+ items => $s->{roles},
+ class => 'staffroles',
+ header => [
+ [ mt '_staff_col_title' ],
+ [ mt '_staff_col_released' ],
+ [ mt '_staff_col_role' ],
+ [ mt '_staff_col_as' ],
+ [ mt '_staff_col_note' ],
+ ],
+ row => sub {
+ my($r, $n, $l) = @_;
+ Tr;
+ td class => 'tc1'; a href => "/v$l->{vid}", title => $l->{t_original}||$l->{title}, shorten $l->{title}, 60; end;
+ td class => 'tc2'; lit $self->{l10n}->datestr($l->{c_released}); end;
+ td class => 'tc3', mt '_credit_'.$l->{role};
+ td class => 'tc4', title => $l->{original}||$l->{name}, $l->{name};
+ td class => 'tc5', $l->{note};
+ end;
+ },
+ );
+}
+
+
+sub _cast {
+ my($self, $s) = @_;
+ return if !@{$s->{cast}};
+
+ h1 class => 'boxtitle', mt '_staff_voiced', scalar @{$s->{cast}};
+ $self->htmlBrowse(
+ items => $s->{cast},
+ class => 'staffroles',
+ header => [
+ [ mt '_staff_col_title' ],
+ [ mt '_staff_col_released' ],
+ [ mt '_staff_col_cast' ],
+ [ mt '_staff_col_as' ],
+ [ mt '_staff_col_note' ],
+ ],
+ row => sub {
+ my($r, $n, $l) = @_;
+ Tr;
+ td class => 'tc1'; a href => "/v$l->{vid}", title => $l->{t_original}||$l->{title}, shorten $l->{title}, 60; end;
+ td class => 'tc2'; lit $self->{l10n}->datestr($l->{c_released}); end;
+ td class => 'tc3'; a href => "/c$l->{cid}", title => $l->{c_original}, $l->{c_name}; end;
+ td class => 'tc4', title => $l->{original}||$l->{name}, $l->{name};
+ td class => 'tc5', $l->{note};
+ end;
+ },
+ );
+}
+
+
sub edit {
my($self, $sid, $rev) = @_;
diff --git a/lib/VNDB/Util/BrowseHTML.pm b/lib/VNDB/Util/BrowseHTML.pm
index 40cc3270..aca7b8e6 100644
--- a/lib/VNDB/Util/BrowseHTML.pm
+++ b/lib/VNDB/Util/BrowseHTML.pm
@@ -35,7 +35,7 @@ sub htmlBrowse {
$opt{sorturl} .= $opt{sorturl} =~ /\?/ ? ';' : '?' if $opt{sorturl};
# top navigation
- $self->htmlBrowseNavigate($opt{pageurl}, $opt{options}{p}, $opt{nextpage}, 't');
+ $self->htmlBrowseNavigate($opt{pageurl}, $opt{options}{p}, $opt{nextpage}, 't') if $opt{pageurl};
div class => 'mainbox browse'.($opt{class} ? ' '.$opt{class} : '');
table class => 'stripe';
@@ -79,7 +79,7 @@ sub htmlBrowse {
end 'div';
# bottom navigation
- $self->htmlBrowseNavigate($opt{pageurl}, $opt{options}{p}, $opt{nextpage}, 'b');
+ $self->htmlBrowseNavigate($opt{pageurl}, $opt{options}{p}, $opt{nextpage}, 'b') if $opt{pageurl};
}