summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/Handler/Chars.pm9
-rw-r--r--lib/VNDB/Handler/Tags.pm10
-rw-r--r--lib/VNDB/Handler/Traits.pm10
-rw-r--r--lib/VNDB/Handler/Users.pm9
-rw-r--r--lib/VNDB/Handler/VNBrowse.pm5
-rw-r--r--lib/VNDB/Handler/VNPage.pm18
6 files changed, 30 insertions, 31 deletions
diff --git a/lib/VNDB/Handler/Chars.pm b/lib/VNDB/Handler/Chars.pm
index f667d41b..c59d44b9 100644
--- a/lib/VNDB/Handler/Chars.pm
+++ b/lib/VNDB/Handler/Chars.pm
@@ -66,10 +66,9 @@ sub page {
div class => 'mainbox';
$self->htmlItemMessage('c', $r);
+ my $spoil = $self->authPref('spoilers')||0;
p id => 'charspoil_sel';
- a href => '#', class => 'sel', mt '_spoilset_0';
- a href => '#', mt '_spoilset_1';
- a href => '#', mt '_spoilset_2';
+ a href => '#', $spoil == $_ ? (class => 'sel') : (), mt "_spoilset_$_" for (0..2);
end;
h1 $r->{name};
h2 class => 'alttitle', $r->{original} if $r->{original};
@@ -487,7 +486,9 @@ sub list {
);
return $self->resNotFound if $f->{_err};
- my($list, $np) = $self->filFetchDB(char => $f->{fil}, {}, {
+ my($list, $np) = $self->filFetchDB(char => $f->{fil}, {
+ tagspoil => $self->authPref('spoilers')||0,
+ }, {
$fch ne 'all' ? ( char => $fch ) : (),
$f->{q} ? ( search => $f->{q} ) : (),
results => 50,
diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm
index 8d982767..f4f8cec3 100644
--- a/lib/VNDB/Handler/Tags.pm
+++ b/lib/VNDB/Handler/Tags.pm
@@ -33,12 +33,10 @@ sub tagpage {
{ get => 's', required => 0, default => 'tagscore', enum => [ qw|title rel pop tagscore rating| ] },
{ get => 'o', required => 0, default => 'd', enum => [ 'a','d' ] },
{ get => 'p', required => 0, default => 1, template => 'int' },
- { get => 'm', required => 0, default => undef, enum => [qw|0 1 2|] },
+ { get => 'm', required => 0, default => $self->authPref('spoilers') || 0, enum => [qw|0 1 2|] },
{ get => 'fil', required => 0 },
);
return $self->resNotFound if $f->{_err};
- my $tagspoil = $self->reqCookie('tagspoil')||'';
- $f->{m} //= $tagspoil =~ /^[0-2]$/ ? $tagspoil : 0;
$f->{fil} //= $self->authPref('filter_vn');
my($list, $np) = $t->{meta} || $t->{state} != 2 ? ([],0) : $self->filFetchDB(vn => $f->{fil}, undef, {
@@ -108,9 +106,9 @@ sub tagpage {
h1 mt '_tagp_vnlist';
p class => 'browseopts';
- a href => "/g$t->{id}?fil=$f->{fil};m=0", $f->{m} == 0 ? (class => 'optselected') : (), id => 'tagspoil_0', mt '_spoilset_0';
- a href => "/g$t->{id}?fil=$f->{fil};m=1", $f->{m} == 1 ? (class => 'optselected') : (), id => 'tagspoil_1', mt '_spoilset_1';
- a href => "/g$t->{id}?fil=$f->{fil};m=2", $f->{m} == 2 ? (class => 'optselected') : (), id => 'tagspoil_2', mt '_spoilset_2';
+ a href => "/g$t->{id}?fil=$f->{fil};m=0", $f->{m} == 0 ? (class => 'optselected') : (), mt '_spoilset_0';
+ a href => "/g$t->{id}?fil=$f->{fil};m=1", $f->{m} == 1 ? (class => 'optselected') : (), mt '_spoilset_1';
+ a href => "/g$t->{id}?fil=$f->{fil};m=2", $f->{m} == 2 ? (class => 'optselected') : (), mt '_spoilset_2';
end;
a id => 'filselect', href => '#v';
diff --git a/lib/VNDB/Handler/Traits.pm b/lib/VNDB/Handler/Traits.pm
index c5bf6da0..a69e8763 100644
--- a/lib/VNDB/Handler/Traits.pm
+++ b/lib/VNDB/Handler/Traits.pm
@@ -26,12 +26,10 @@ sub traitpage {
my $f = $self->formValidate(
{ get => 'p', required => 0, default => 1, template => 'int' },
- { get => 'm', required => 0, default => undef, enum => [qw|0 1 2|] },
+ { get => 'm', required => 0, default => $self->authPref('spoilers')||0, enum => [qw|0 1 2|] },
{ get => 'fil', required => 0, default => '' },
);
return $self->resNotFound if $f->{_err};
- my $tagspoil = $self->reqCookie('tagspoil')||'';
- $f->{m} //= $tagspoil =~ /^[0-2]$/ ? $tagspoil : 0;
my $title = mt '_traitp_title', $t->{meta}?0:1, $t->{name};
$self->htmlHeader(title => $title, noindex => $t->{state} != 2);
@@ -97,9 +95,9 @@ sub traitpage {
h1 mt '_traitp_charlist';
p class => 'browseopts';
- a href => "/i$trait?m=0", $f->{m} == 0 ? (class => 'optselected') : (), id => 'tagspoil_0', mt '_spoilset_0';
- a href => "/i$trait?m=1", $f->{m} == 1 ? (class => 'optselected') : (), id => 'tagspoil_1', mt '_spoilset_1';
- a href => "/i$trait?m=2", $f->{m} == 2 ? (class => 'optselected') : (), id => 'tagspoil_2', mt '_spoilset_2';
+ a href => "/i$trait?m=0", $f->{m} == 0 ? (class => 'optselected') : (), mt '_spoilset_0';
+ a href => "/i$trait?m=1", $f->{m} == 1 ? (class => 'optselected') : (), mt '_spoilset_1';
+ a href => "/i$trait?m=2", $f->{m} == 2 ? (class => 'optselected') : (), mt '_spoilset_2';
end;
a id => 'filselect', href => '#c';
diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm
index 0068768d..293a91b5 100644
--- a/lib/VNDB/Handler/Users.pm
+++ b/lib/VNDB/Handler/Users.pm
@@ -376,6 +376,7 @@ sub edit {
{ post => 'show_nsfw', required => 0, default => 0, enum => [0,1] },
{ post => 'tags_all', required => 0, default => 0, enum => [0,1] },
{ post => 'tags_cat', required => 0, multi => 1, enum => [qw|cont ero tech|] },
+ { post => 'spoilers', required => 0, default => 0, enum => [0..2] },
{ post => 'skin', required => 0, default => $self->{skin_default}, enum => [ keys %{$self->{skins}} ] },
{ post => 'customcss', required => 0, maxlength => 2000, default => '' },
);
@@ -383,7 +384,7 @@ sub edit {
if ($frm->{usrpass} || $frm->{usrpass2}) && (!$frm->{usrpass} || !$frm->{usrpass2} || $frm->{usrpass} ne $frm->{usrpass2});
if(!$frm->{_err}) {
$frm->{skin} = '' if $frm->{skin} eq $self->{skin_default};
- $self->dbUserPrefSet($uid, $_ => $frm->{$_}) for (qw|skin customcss show_nsfw tags_all hide_list |);
+ $self->dbUserPrefSet($uid, $_ => $frm->{$_}) for (qw|skin customcss show_nsfw tags_all hide_list spoilers|);
my $tags_cat = join(',', sort @{$frm->{tags_cat}}) || 'none';
$self->dbUserPrefSet($uid, tags_cat => $tags_cat eq $self->{default_tags_cat} ? '' : $tags_cat);
@@ -405,7 +406,7 @@ sub edit {
$frm->{usrname} ||= $u->{username};
$frm->{mail} ||= $u->{mail};
$frm->{perms} ||= [ grep $u->{perm} & $self->{permissions}{$_}, keys %{$self->{permissions}} ];
- $frm->{$_} //= $u->{prefs}{$_} for(qw|skin customcss show_nsfw tags_all hide_list|);
+ $frm->{$_} //= $u->{prefs}{$_} for(qw|skin customcss show_nsfw tags_all hide_list spoilers|);
$frm->{tags_cat} ||= [ split /,/, $u->{prefs}{tags_cat}||$self->{default_tags_cat} ];
$frm->{ign_votes} = $u->{ign_votes} if !defined $frm->{ign_votes};
$frm->{skin} ||= $self->{skin_default};
@@ -442,8 +443,8 @@ sub edit {
[ check => short => 'hide_list', name => mt '_usere_flist', "/u$uid/list", "/u$uid/votes", "/u$uid/wish" ],
[ check => short => 'show_nsfw', name => mt '_usere_fnsfw' ],
[ check => short => 'tags_all', name => mt '_usere_ftags' ],
- [ select => short => 'tags_cat', name => mt('_usere_tagcats'), multi => 1, size => 3, options => [
- map [ $_, mt '_tagcat_'.$_ ], qw|cont ero tech| ] ],
+ [ select => short => 'tags_cat', name => mt('_usere_tagcats'), multi => 1, size => 3, options => [ map [ $_, mt '_tagcat_'.$_ ], qw|cont ero tech| ] ],
+ [ select => short => 'spoilers', name => mt('_usere_spoilers'), options => [ map [ $_, mt '_spoilset_'.$_ ], 0..2 ] ],
[ select => short => 'skin', name => mt('_usere_skin'), width => 300, options => [
map [ $_, $self->{skins}{$_}[0].($self->debug?" [$_]":'') ], sort { $self->{skins}{$a}[0] cmp $self->{skins}{$b}[0] } keys %{$self->{skins}} ] ],
[ textarea => short => 'customcss', name => mt '_usere_css' ],
diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm
index 3323722c..c2a923b5 100644
--- a/lib/VNDB/Handler/VNBrowse.pm
+++ b/lib/VNDB/Handler/VNBrowse.pm
@@ -50,7 +50,10 @@ sub list {
$f->{s} = 'title' if $f->{fil} !~ /tag_inc-/ && $f->{s} eq 'tagscore';
$f->{o} = $f->{s} eq 'tagscore' ? 'd' : 'a' if !$f->{o};
- my($list, $np) = $self->filFetchDB(vn => $f->{fil}, \%compat, {
+ my($list, $np) = $self->filFetchDB(vn => $f->{fil}, {
+ %compat,
+ tagspoil => $self->authPref('spoilers')||0,
+ }, {
what => ' rating' .
($f->{vnlist} ? ' vnlist' : '').
($f->{wish} ? ' wishlist' : ''),
diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm
index 9a97cd41..183d56a4 100644
--- a/lib/VNDB/Handler/VNPage.pm
+++ b/lib/VNDB/Handler/VNPage.pm
@@ -627,9 +627,10 @@ sub page {
# NOTE: order of these links is hardcoded in JS
my $tags_cat = $self->authPref('tags_cat') || $self->{default_tags_cat};
a href => "#$_", $tags_cat =~ /\Q$_/ ? (class => 'tsel') : (), lc mt "_tagcat_$_" for qw|cont ero tech|;
- a href => '#', class => 'sec tsel', lc mt '_spoilset_0';
- a href => '#', lc mt '_spoilset_1';
- a href => '#', lc mt '_spoilset_2';
+ my $spoiler = $self->authPref('spoilers') || 0;
+ a href => '#', class => 'sec'.($spoiler == 0 ? ' tsel' : ''), lc mt '_spoilset_0';
+ a href => '#', $spoiler == 1 ? (class => 'tsel') : (), lc mt '_spoilset_1';
+ a href => '#', $spoiler == 2 ? (class => 'tsel') : (), lc mt '_spoilset_2';
a href => '#', class => 'sec'.($self->authPref('tags_all') ? '': ' tsel'), mt '_vnpage_tags_summary';
a href => '#', $self->authPref('tags_all') ? (class => 'tsel') : (), mt '_vnpage_tags_all';
end;
@@ -1070,7 +1071,6 @@ sub _chars {
my($self, $has, $v) = @_;
my $l = $has && $self->dbCharGet(vid => $v->{id}, what => "extended vns($v->{id}) seiyuu traits", results => 100);
return if !$has;
- # TODO: spoiler handling + hide unimportant roles by default
my %done;
my %rol;
for my $r (@{$self->{char_roles}}) {
@@ -1081,10 +1081,9 @@ sub _chars {
next if !@{$rol{$r}};
div class => 'mainbox';
if(!$first++) {
+ my $spoil = $self->authPref('spoilers')||0;
p id => 'charspoil_sel';
- a href => '#', class => 'sel', mt '_spoilset_0';
- a href => '#', mt '_spoilset_1';
- a href => '#', mt '_spoilset_2';
+ a href => '#', $spoil == $_ ? (class => 'sel') : (), mt "_spoilset_$_" for (0..2);
end;
}
h1 mt "_charrole_$r", scalar @{$rol{$r}};
@@ -1132,10 +1131,9 @@ sub _staff {
$has_spoilers ||= $_->{spoil}, $has_notes ||= $_->{note} for @{$v->{seiyuu}};
div class => 'mainbox staff cast';
if($has_spoilers) {
+ my $spoil = $self->authPref('spoilers')||0;
p id => 'charspoil_sel';
- a href => '#', class => 'sel', mt '_spoilset_0';
- a href => '#', mt '_spoilset_1';
- a href => '#', mt '_spoilset_2';
+ a href => '#', $spoil == $_ ? (class => 'sel') : (), mt "_spoilset_$_" for (0..2);
end;
}
h1 mt '_vnpage_cast';