summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2011-01-25 16:45:45 +0100
committerYorhel <git@yorhel.nl>2011-01-25 17:07:06 +0100
commite46f634c49aa4e174d6cc351b25a60d33c251b25 (patch)
tree7bf39676260b9c266c083f63ad2522faf79c4b0f /lib/VNDB/Handler
parente23b49f3bd6fddca80076f1dc19e5f913400ff48 (diff)
TUWF: Initial convert from YAWF to TUWF
There may still be some bugs present and I've only converted the points where TUWF is incompatible with YAWF. The new TUWF features are not in use yet, I'll do that later on. Note that, in order to run the new code, TUWF must be installed on your system. The configuration for the TransAdmin plugin has also changed. Other than that there shouldn't be any issues.
Diffstat (limited to 'lib/VNDB/Handler')
-rw-r--r--lib/VNDB/Handler/Discussions.pm36
-rw-r--r--lib/VNDB/Handler/Misc.pm34
-rw-r--r--lib/VNDB/Handler/Producers.pm53
-rw-r--r--lib/VNDB/Handler/Releases.pm94
-rw-r--r--lib/VNDB/Handler/Tags.pm90
-rw-r--r--lib/VNDB/Handler/ULists.pm84
-rw-r--r--lib/VNDB/Handler/Users.pm87
-rw-r--r--lib/VNDB/Handler/VNBrowse.pm24
-rw-r--r--lib/VNDB/Handler/VNEdit.pm59
-rw-r--r--lib/VNDB/Handler/VNPage.pm18
10 files changed, 293 insertions, 286 deletions
diff --git a/lib/VNDB/Handler/Discussions.pm b/lib/VNDB/Handler/Discussions.pm
index 0b5daa6c..05053f34 100644
--- a/lib/VNDB/Handler/Discussions.pm
+++ b/lib/VNDB/Handler/Discussions.pm
@@ -3,12 +3,12 @@ package VNDB::Handler::Discussions;
use strict;
use warnings;
-use YAWF ':html', 'xml_escape';
+use TUWF ':html', 'xml_escape';
use POSIX 'ceil';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{t([1-9]\d*)(?:/([1-9]\d*))?} => \&thread,
qr{t([1-9]\d*)\.([1-9]\d*)} => \&redirect,
qr{t/(db|an|ge|[vpu])([1-9]\d*)?} => \&board,
@@ -24,10 +24,10 @@ sub thread {
$page ||= 1;
my $t = $self->dbThreadGet(id => $tid, what => 'boardtitles')->[0];
- return 404 if !$t->{id} || $t->{hidden} && !$self->authCan('boardmod');
+ return $self->resNotFound if !$t->{id} || $t->{hidden} && !$self->authCan('boardmod');
my $p = $self->dbPostGet(tid => $tid, results => 25, page => $page, what => 'user');
- return 404 if !$p->[0];
+ return $self->resNotFound if !$p->[0];
$self->htmlHeader(title => $t->{title}, noindex => 1);
div class => 'mainbox';
@@ -135,7 +135,7 @@ sub edit {
# in case we start a new thread, parse boards
my $board = '';
if($tid !~ /^\d+$/) {
- return 404 if $tid =~ /(db|an|ge)/ && $num || $tid =~ /[vpu]/ && !$num;
+ return $self->resNotFound if $tid =~ /(db|an|ge)/ && $num || $tid =~ /[vpu]/ && !$num;
$board = $tid.($num||'');
$tid = 0;
$num = 0;
@@ -143,10 +143,10 @@ sub edit {
# get thread and post, if any
my $t = $tid && $self->dbThreadGet(id => $tid, what => 'boards')->[0];
- return 404 if $tid && !$t->{id};
+ return $self->resNotFound if $tid && !$t->{id};
my $p = $num && $self->dbPostGet(tid => $tid, num => $num, what => 'user')->[0];
- return 404 if $num && !$p->{num};
+ return $self->resNotFound if $num && !$p->{num};
# are we allowed to perform this action?
return $self->htmlDenied if !$self->authCan('board')
@@ -159,16 +159,16 @@ sub edit {
return if !$self->authCheckCode;
$frm = $self->formValidate(
!$tid || $num == 1 ? (
- { name => 'title', maxlength => 50 },
- { name => 'boards', maxlength => 50 },
+ { post => 'title', maxlength => 50 },
+ { post => 'boards', maxlength => 50 },
) : (),
$self->authCan('boardmod') ? (
- { name => 'locked', required => 0 },
- { name => 'hidden', required => 0 },
- { name => 'nolastmod', required => 0 },
+ { post => 'locked', required => 0 },
+ { post => 'hidden', required => 0 },
+ { post => 'nolastmod', required => 0 },
) : (),
- { name => 'msg', maxlenght => 5000 },
- { name => 'fullreply', required => 0 },
+ { post => 'msg', maxlength => 32768 },
+ { post => 'fullreply', required => 0 },
);
$frm->{_err} = 1 if $frm->{fullreply};
@@ -270,18 +270,18 @@ sub edit {
sub board {
my($self, $type, $iid) = @_;
$iid ||= '';
- return 404 if $type =~ /(db|an|ge)/ && $iid;
+ return $self->resNotFound if $type =~ /(db|an|ge)/ && $iid;
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'p', required => 0, default => 1, template => 'int' },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
my $obj = !$iid ? undef :
$type eq 'u' ? $self->dbUserGet(uid => $iid, what => 'hide_list')->[0] :
$type eq 'p' ? $self->dbProducerGet(id => $iid)->[0] :
$self->dbVNGet(id => $iid)->[0];
- return 404 if $iid && !$obj;
+ return $self->resNotFound if $iid && !$obj;
my $ititle = $obj && ($obj->{title}||$obj->{name}||$obj->{username});
my $title = !$obj ? mt("_dboard_$type") : mt '_disboard_item_title', $ititle;
diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm
index a30f10a4..2e1e0e11 100644
--- a/lib/VNDB/Handler/Misc.pm
+++ b/lib/VNDB/Handler/Misc.pm
@@ -4,12 +4,12 @@ package VNDB::Handler::Misc;
use strict;
use warnings;
-use YAWF ':html', ':xml', 'xml_escape';
+use TUWF ':html', ':xml', 'xml_escape';
use VNDB::Func;
use POSIX 'strftime';
-YAWF::register(
+TUWF::register(
qr{}, \&homepage,
qr{(?:([upvr])([1-9]\d*)/)?hist}, \&history,
qr{d([1-9]\d*)}, \&docpage,
@@ -194,14 +194,14 @@ sub history {
$id ||= 0;
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'm', required => 0, default => !$type, enum => [ 0, 1 ] },
- { name => 'h', required => 0, default => 0, enum => [ -1..1 ] },
- { name => 't', required => 0, default => '', enum => [ 'v', 'r', 'p' ] },
- { name => 'e', required => 0, default => 0, enum => [ -1..1 ] },
- { name => 'r', required => 0, default => 0, enum => [ 0, 1 ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'm', required => 0, default => !$type, enum => [ 0, 1 ] },
+ { get => 'h', required => 0, default => 0, enum => [ -1..1 ] },
+ { get => 't', required => 0, default => '', enum => [ 'v', 'r', 'p' ] },
+ { get => 'e', required => 0, default => 0, enum => [ -1..1 ] },
+ { get => 'r', required => 0, default => 0, enum => [ 0, 1 ] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
# get item object and title
my $obj = $type eq 'u' ? $self->dbUserGet(uid => $id, what => 'hide_list')->[0] :
@@ -209,7 +209,7 @@ sub history {
$type eq 'r' ? $self->dbReleaseGet(id => $id)->[0] :
$type eq 'v' ? $self->dbVNGet(id => $id)->[0] : undef;
my $title = mt $type ? ('_hist_title_item', $obj->{title} || $obj->{name} || $obj->{username}) : '_hist_title';
- return 404 if $type && !$obj->{id};
+ return $self->resNotFound if $type && !$obj->{id};
# get the edit history
my($list, $np) = $self->dbRevisionGet(
@@ -287,7 +287,7 @@ sub docpage {
my $l = '.'.$self->{l10n}->language_tag();
my $f = sprintf('%s/data/docs/%d', $VNDB::ROOT, $did);
my $F;
- open($F, '<:utf8', $f.$l) or open($F, '<:utf8', $f) or return 404;
+ open($F, '<:utf8', $f.$l) or open($F, '<:utf8', $f) or return $self->resNotFound;
my @c = <$F>;
close $F;
@@ -343,8 +343,8 @@ sub docpage {
sub setlang {
my $self = shift;
- my $lang = $self->formValidate({name => 'lang', required => 1, enum => [ VNDB::L10N::languages ]});
- return 404 if $lang->{_err};
+ my $lang = $self->formValidate({get => 'lang', required => 1, enum => [ VNDB::L10N::languages ]});
+ return $self->resNotFound if $lang->{_err};
$lang = $lang->{lang};
my $browser = VNDB::L10N->get_handle()->language_tag();
@@ -422,12 +422,12 @@ sub iemessage {
sub prefs {
my $self = shift;
return if !$self->authCheckCode;
- return 404 if !$self->authInfo->{id};
+ return $self->resNotFound if !$self->authInfo->{id};
my $f = $self->formValidate(
- { name => 'key', enum => [qw|filter_vn filter_release|] },
- { name => 'value', required => 0, maxlength => 2000 },
+ { get => 'key', enum => [qw|filter_vn filter_release|] },
+ { get => 'value', required => 0, maxlength => 2000 },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->authPref($f->{key}, $f->{value});
# doesn't really matter what we return, as long as it's XML
diff --git a/lib/VNDB/Handler/Producers.pm b/lib/VNDB/Handler/Producers.pm
index f7a46c2d..ad947830 100644
--- a/lib/VNDB/Handler/Producers.pm
+++ b/lib/VNDB/Handler/Producers.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::Producers;
use strict;
use warnings;
-use YAWF ':html', ':xml', 'xml_escape';
+use TUWF ':html', ':xml', 'xml_escape', 'html_escape';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{p([1-9]\d*)/rg} => \&rg,
qr{p([1-9]\d*)(?:\.([1-9]\d*))?} => \&page,
qr{p(?:([1-9]\d*)(?:\.([1-9]\d*))?/edit|/new)}
@@ -21,7 +21,7 @@ sub rg {
my($self, $pid) = @_;
my $p = $self->dbProducerGet(id => $pid, what => 'relgraph')->[0];
- return 404 if !$p->{id} || !$p->{rgraph};
+ return $self->resNotFound if !$p->{id} || !$p->{rgraph};
my $title = mt '_prodrg_title', $p->{name};
return if $self->htmlRGHeader($title, 'p', $p);
@@ -40,6 +40,7 @@ sub rg {
$self->htmlFooter;
}
+
sub page {
my($self, $pid, $rev) = @_;
@@ -48,7 +49,7 @@ sub page {
what => 'extended relations'.($rev ? ' changes' : ''),
$rev ? ( rev => $rev ) : ()
)->[0];
- return 404 if !$p->{id};
+ return $self->resNotFound if !$p->{id};
$self->htmlHeader(title => $p->{name}, noindex => $rev);
$self->htmlMainTabs(p => $p);
@@ -82,13 +83,13 @@ sub page {
h2 class => 'alttitle', $p->{original} if $p->{original};
p class => 'center';
txt mt '_prodpage_langtype', mt("_lang_$p->{lang}"), mt "_ptype_$p->{type}";
- txt "\n".mt '_prodpage_aliases', $p->{alias} if $p->{alias};
+ lit '<br />'.html_escape mt '_prodpage_aliases', $p->{alias} if $p->{alias};
my @links = (
$p->{website} ? [ 'homepage', $p->{website} ] : (),
$p->{l_wp} ? [ 'wikipedia', "http://en.wikipedia.org/wiki/$p->{l_wp}" ] : (),
);
- txt "\n" if @links;
+ br if @links;
for(@links) {
a href => $_->[1], mt "_prodpage_$_->[0]";
txt ' - ' if $_ ne $links[$#links];
@@ -100,14 +101,14 @@ sub page {
push @{$rel{$_->{relation}}}, $_
for (sort { $a->{name} cmp $b->{name} } @{$p->{relations}});
p class => 'center';
- txt "\n";
+ br;
for my $r (sort { $self->{prod_relations}{$a}[0] <=> $self->{prod_relations}{$b}[0] } keys %rel) {
txt mt("_prodrel_$r").': ';
for (@{$rel{$r}}) {
a href => "/p$_->{id}", title => $_->{original}||$_->{name}, shorten $_->{name}, 40;
txt ', ' if $_ ne $rel{$r}[$#{$rel{$r}}];
}
- txt "\n";
+ br;
}
end;
}
@@ -200,7 +201,7 @@ sub edit {
my($self, $pid, $rev) = @_;
my $p = $pid && $self->dbProducerGet(id => $pid, what => 'changes extended relations', $rev ? (rev => $rev) : ())->[0];
- return 404 if $pid && !$p->{id};
+ return $self->resNotFound if $pid && !$p->{id};
$rev = undef if !$p || $p->{cid} == $p->{latest};
return $self->htmlDenied if !$self->authCan('edit')
@@ -216,18 +217,18 @@ sub edit {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'type', enum => $self->{producer_types} },
- { name => 'name', maxlength => 200 },
- { name => 'original', required => 0, maxlength => 200, default => '' },
- { name => 'alias', required => 0, maxlength => 500, default => '' },
- { name => 'lang', enum => $self->{languages} },
- { name => 'website', required => 0, maxlength => 250, default => '', template => 'url' },
- { name => 'l_wp', required => 0, maxlength => 150, default => '' },
- { name => 'desc', required => 0, maxlength => 5000, default => '' },
- { name => 'prodrelations', required => 0, maxlength => 5000, default => '' },
- { name => 'editsum', required => 0, maxlength => 5000 },
- { name => 'ihid', required => 0 },
- { name => 'ilock', required => 0 },
+ { post => 'type', enum => $self->{producer_types} },
+ { post => 'name', maxlength => 200 },
+ { post => 'original', required => 0, maxlength => 200, default => '' },
+ { post => 'alias', required => 0, maxlength => 500, default => '' },
+ { post => 'lang', enum => $self->{languages} },
+ { post => 'website', required => 0, maxlength => 250, default => '', template => 'url' },
+ { post => 'l_wp', required => 0, maxlength => 150, default => '' },
+ { post => 'desc', required => 0, maxlength => 5000, default => '' },
+ { post => 'prodrelations', required => 0, maxlength => 5000, default => '' },
+ { post => 'editsum', required => 0, maxlength => 5000 },
+ { post => 'ihid', required => 0 },
+ { post => 'ilock', required => 0 },
);
push @{$frm->{_err}}, 'badeditsum' if !$frm->{editsum} || lc($frm->{editsum}) eq lc($frm->{desc});
if(!$frm->{_err}) {
@@ -344,10 +345,10 @@ sub list {
my($self, $char) = @_;
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'q', required => 0, default => '' },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'q', required => 0, default => '' },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
my($list, $np) = $self->dbProducerGet(
$char ne 'all' ? ( char => $char ) : (),
@@ -401,8 +402,8 @@ sub list {
sub pxml {
my $self = shift;
- my $q = $self->formValidate({ name => 'q', maxlength => 500 });
- return 404 if $q->{_err};
+ my $q = $self->formValidate({ get => 'q', maxlength => 500 });
+ return $self->resNotFound if $q->{_err};
$q = $q->{q};
my($list, $np) = $self->dbProducerGet(
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm
index 06dcfd0a..32608d30 100644
--- a/lib/VNDB/Handler/Releases.pm
+++ b/lib/VNDB/Handler/Releases.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::Releases;
use strict;
use warnings;
-use YAWF ':html';
+use TUWF ':html';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{r([1-9]\d*)(?:\.([1-9]\d*))?} => \&page,
qr{(v)([1-9]\d*)/add} => \&edit,
qr{r} => \&browse,
@@ -24,7 +24,7 @@ sub page {
what => 'vn extended producers platforms media'.($rev ? ' changes' : ''),
$rev ? (rev => $rev) : (),
)->[0];
- return 404 if !$r->{id};
+ return $self->resNotFound if !$r->{id};
$self->htmlHeader(title => $r->{title}, noindex => $rev);
$self->htmlMainTabs('r', $r);
@@ -272,11 +272,11 @@ sub edit {
}
my $r = $rid && $self->dbReleaseGet(id => $rid, what => 'vn extended producers platforms media changes', $rev ? (rev => $rev) : ())->[0];
- return 404 if $rid && !$r->{id};
+ return $self->resNotFound if $rid && !$r->{id};
$rev = undef if !$r || $r->{cid} == $r->{latest};
my $v = $vid && $self->dbVNGet(id => $vid)->[0];
- return 404 if $vid && !$v->{id};
+ return $self->resNotFound if $vid && !$v->{id};
return $self->htmlDenied if !$self->authCan('edit')
|| $rid && ($r->{locked} && !$self->authCan('lock') || $r->{hidden} && !$self->authCan('del'));
@@ -298,31 +298,31 @@ sub edit {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'type', enum => $self->{release_types} },
- { name => 'patch', required => 0, default => 0 },
- { name => 'freeware', required => 0, default => 0 },
- { name => 'doujin', required => 0, default => 0 },
- { name => 'title', maxlength => 250 },
- { name => 'original', required => 0, default => '', maxlength => 250 },
- { name => 'gtin', required => 0, default => '0',
+ { post => 'type', enum => $self->{release_types} },
+ { post => 'patch', required => 0, default => 0 },
+ { post => 'freeware', required => 0, default => 0 },
+ { post => 'doujin', required => 0, default => 0 },
+ { post => 'title', maxlength => 250 },
+ { post => 'original', required => 0, default => '', maxlength => 250 },
+ { post => 'gtin', required => 0, default => '0',
func => [ \&gtintype, 'Not a valid JAN/UPC/EAN code' ] },
- { name => 'catalog', required => 0, default => '', maxlength => 50 },
- { name => 'languages', multi => 1, enum => $self->{languages} },
- { name => 'website', required => 0, default => '', maxlength => 250, template => 'url' },
- { name => 'released', required => 0, default => 0, template => 'int' },
- { name => 'minage' , required => 0, default => -1, enum => $self->{age_ratings} },
- { name => 'notes', required => 0, default => '', maxlength => 10240 },
- { name => 'platforms', required => 0, default => '', multi => 1, enum => $self->{platforms} },
- { name => 'media', required => 0, default => '' },
- { name => 'resolution',required => 0, default => 0, enum => [ 0..$#{$self->{resolutions}} ] },
- { name => 'voiced', required => 0, default => 0, enum => $self->{voiced} },
- { name => 'ani_story', required => 0, default => 0, enum => $self->{animated} },
- { name => 'ani_ero', required => 0, default => 0, enum => $self->{animated} },
- { name => 'producers', required => 0, default => '' },
- { name => 'vn', maxlength => 5000 },
- { name => 'editsum', required => 0, maxlength => 5000 },
- { name => 'ihid', required => 0 },
- { name => 'ilock', required => 0 },
+ { post => 'catalog', required => 0, default => '', maxlength => 50 },
+ { post => 'languages', multi => 1, enum => $self->{languages} },
+ { post => 'website', required => 0, default => '', maxlength => 250, template => 'url' },
+ { post => 'released', required => 0, default => 0, template => 'int' },
+ { post => 'minage' , required => 0, default => -1, enum => $self->{age_ratings} },
+ { post => 'notes', required => 0, default => '', maxlength => 10240 },
+ { post => 'platforms', required => 0, default => '', multi => 1, enum => $self->{platforms} },
+ { post => 'media', required => 0, default => '' },
+ { post => 'resolution',required => 0, default => 0, enum => [ 0..$#{$self->{resolutions}} ] },
+ { post => 'voiced', required => 0, default => 0, enum => $self->{voiced} },
+ { post => 'ani_story', required => 0, default => 0, enum => $self->{animated} },
+ { post => 'ani_ero', required => 0, default => 0, enum => $self->{animated} },
+ { post => 'producers', required => 0, default => '' },
+ { post => 'vn', maxlength => 5000 },
+ { post => 'editsum', required => 0, maxlength => 5000 },
+ { post => 'ihid', required => 0 },
+ { post => 'ilock', required => 0 },
);
push @{$frm->{_err}}, 'badeditsum' if !$frm->{editsum} || lc($frm->{editsum}) eq lc($frm->{notes});
@@ -480,13 +480,13 @@ sub browse {
my $self = shift;
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] },
- { name => 'q', required => 0, default => '', maxlength => 500 },
- { name => 's', required => 0, default => 'title', enum => [qw|released minage title|] },
- { name => 'fil',required => 0, default => '' },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'o', required => 0, default => 'a', enum => ['a', 'd'] },
+ { get => 'q', required => 0, default => '', maxlength => 500 },
+ { get => 's', required => 0, default => 'title', enum => [qw|released minage title|] },
+ { get => 'fil',required => 0, default => '' },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$f->{fil} = $self->authPref('filter_release') if !grep $_ eq 'fil', $self->reqParam();
my %compat = _fil_compat($self);
@@ -561,18 +561,18 @@ sub _fil_compat {
my $self = shift;
my %c;
my $f = $self->formValidate(
- { name => 'ln', required => 0, multi => 1, default => '', enum => $self->{languages} },
- { name => 'pl', required => 0, multi => 1, default => '', enum => $self->{platforms} },
- { name => 'me', required => 0, multi => 1, default => '', enum => [ keys %{$self->{media}} ] },
- { name => 'tp', required => 0, default => '', enum => [ '', @{$self->{release_types}} ] },
- { name => 'pa', required => 0, default => 0, enum => [ 0..2 ] },
- { name => 'fw', required => 0, default => 0, enum => [ 0..2 ] },
- { name => 'do', required => 0, default => 0, enum => [ 0..2 ] },
- { name => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] },
- { name => 'ma_a', required => 0, default => 0, enum => $self->{age_ratings} },
- { name => 'mi', required => 0, default => 0, template => 'int' },
- { name => 'ma', required => 0, default => 99999999, template => 'int' },
- { name => 're', required => 0, multi => 1, default => 0, enum => [ 1..$#{$self->{resolutions}} ] },
+ { get => 'ln', required => 0, multi => 1, default => '', enum => $self->{languages} },
+ { get => 'pl', required => 0, multi => 1, default => '', enum => $self->{platforms} },
+ { get => 'me', required => 0, multi => 1, default => '', enum => [ keys %{$self->{media}} ] },
+ { get => 'tp', required => 0, default => '', enum => [ '', @{$self->{release_types}} ] },
+ { get => 'pa', required => 0, default => 0, enum => [ 0..2 ] },
+ { get => 'fw', required => 0, default => 0, enum => [ 0..2 ] },
+ { get => 'do', required => 0, default => 0, enum => [ 0..2 ] },
+ { get => 'ma_m', required => 0, default => 0, enum => [ 0, 1 ] },
+ { get => 'ma_a', required => 0, default => 0, enum => $self->{age_ratings} },
+ { get => 'mi', required => 0, default => 0, template => 'int' },
+ { get => 'ma', required => 0, default => 99999999, template => 'int' },
+ { get => 're', required => 0, multi => 1, default => 0, enum => [ 1..$#{$self->{resolutions}} ] },
);
return () if $f->{_err};
$c{minage} = [ grep $_ >= 0 && ($f->{ma_m} ? $f->{ma_a} >= $_ : $f->{ma_a} <= $_), @{$self->{age_ratings}} ] if $f->{ma_a} || $f->{ma_m};
diff --git a/lib/VNDB/Handler/Tags.pm b/lib/VNDB/Handler/Tags.pm
index 7fff2a97..65f6a957 100644
--- a/lib/VNDB/Handler/Tags.pm
+++ b/lib/VNDB/Handler/Tags.pm
@@ -4,11 +4,11 @@ package VNDB::Handler::Tags;
use strict;
use warnings;
-use YAWF ':html', ':xml';
+use TUWF ':html', ':xml', 'xml_escape';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{g([1-9]\d*)}, \&tagpage,
qr{g([1-9]\d*)/(edit)}, \&tagedit,
qr{g([1-9]\d*)/(add)}, \&tagedit,
@@ -27,15 +27,15 @@ sub tagpage {
my($self, $tag) = @_;
my $t = $self->dbTagGet(id => $tag, what => 'parents(0) childs(2) aliases')->[0];
- return 404 if !$t;
+ return $self->resNotFound if !$t;
my $f = $self->formValidate(
- { name => 's', required => 0, default => 'tagscore', enum => [ qw|title rel pop tagscore rating| ] },
- { name => 'o', required => 0, default => 'd', enum => [ 'a','d' ] },
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'm', required => 0, default => -1, enum => [qw|0 1 2|] },
+ { 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 => -1, enum => [qw|0 1 2|] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
my $tagspoil = $self->reqCookie($self->{cookie_prefix}.'tagspoil');
$f->{m} = $tagspoil =~ /^[0-2]$/ ? $tagspoil : 0 if $f->{m} == -1;
@@ -84,7 +84,8 @@ sub tagpage {
txt ' > ';
a href => "/g$_->{id}", $_->{name};
}
- txt " > $t->{name}\n";
+ txt " > $t->{name}";
+ br;
}
end;
@@ -95,8 +96,9 @@ sub tagpage {
}
if(@{$t->{aliases}}) {
p class => 'center';
- b mt('_tagp_aliases')."\n";
- txt "$_\n" for (@{$t->{aliases}});
+ b mt('_tagp_aliases');
+ br;
+ lit xml_escape($_).'<br />' for (@{$t->{aliases}});
end;
}
end;
@@ -112,8 +114,10 @@ sub tagpage {
a href => "/g$t->{id}?m=1", $f->{m} == 1 ? (class => 'optselected') : (), onclick => "setCookie('tagspoil', 1);return true;", mt '_tagp_spoil1';
a href => "/g$t->{id}?m=2", $f->{m} == 2 ? (class => 'optselected') : (), onclick => "setCookie('tagspoil', 2);return true;", mt '_tagp_spoil2';
end;
- p "\n\n".mt '_tagp_novn' if !@$list;
- p "\n".mt '_tagp_cached';
+ if(!@$list) {
+ p; br; br; txt mt '_tagp_novn'; end;
+ }
+ p; br; txt mt '_tagp_cached'; end;
end;
$self->htmlBrowseVN($list, $f, $np, "/g$t->{id}?m=$f->{m}", 1) if @$list;
}
@@ -179,7 +183,7 @@ sub tagedit {
my($frm, $par);
if($act && $act eq 'add') {
$par = $self->dbTagGet(id => $tag)->[0];
- return 404 if !$par;
+ return $self->resNotFound if !$par;
$frm->{parents} = $par->{name};
$tag = undef;
}
@@ -187,18 +191,18 @@ sub tagedit {
return $self->htmlDenied if !$self->authCan('tag') || $tag && !$self->authCan('tagmod');
my $t = $tag && $self->dbTagGet(id => $tag, what => 'parents(1) aliases addedby')->[0];
- return 404 if $tag && !$t;
+ return $self->resNotFound if $tag && !$t;
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'name', required => 1, maxlength => 250, regex => [ qr/^[^,]+$/, 'A comma is not allowed in tag names' ] },
- { name => 'state', required => 0, default => 0, enum => [ 0..2 ] },
- { name => 'meta', required => 0, default => 0 },
- { name => 'alias', required => 0, maxlength => 1024, default => '', regex => [ qr/^[^,]+$/s, 'No comma allowed in aliases' ] },
- { name => 'description', required => 0, maxlength => 10240, default => '' },
- { name => 'parents', required => !$self->authCan('tagmod'), default => '' },
- { name => 'merge', required => 0, default => '' },
+ { post => 'name', required => 1, maxlength => 250, regex => [ qr/^[^,]+$/, 'A comma is not allowed in tag names' ] },
+ { post => 'state', required => 0, default => 0, enum => [ 0..2 ] },
+ { post => 'meta', required => 0, default => 0 },
+ { post => 'alias', required => 0, maxlength => 1024, default => '', regex => [ qr/^[^,]+$/s, 'No comma allowed in aliases' ] },
+ { post => 'description', required => 0, maxlength => 10240, default => '' },
+ { post => 'parents', required => !$self->authCan('tagmod'), default => '' },
+ { post => 'merge', required => 0, default => '' },
);
my @aliases = split /[\t\s]*\n[\t\s]*/, $frm->{alias};
my @parents = split /[\t\s]*,[\t\s]*/, $frm->{parents};
@@ -289,13 +293,13 @@ sub taglist {
my $self = shift;
my $f = $self->formValidate(
- { name => 's', required => 0, default => 'name', enum => ['added', 'name'] },
- { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] },
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 't', required => 0, default => -1, enum => [ -1..2 ] },
- { name => 'q', required => 0, default => '' },
+ { get => 's', required => 0, default => 'name', enum => ['added', 'name'] },
+ { get => 'o', required => 0, default => 'a', enum => ['a', 'd'] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 't', required => 0, default => -1, enum => [ -1..2 ] },
+ { get => 'q', required => 0, default => '' },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
my($t, $np) = $self->dbTagGet(
sort => $f->{s}, reverse => $f->{o} eq 'd',
@@ -357,14 +361,14 @@ sub taglinks {
my $self = shift;
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'o', required => 0, default => 'd', enum => ['a', 'd'] },
- { name => 's', required => 0, default => 'date', enum => [qw|date tag|] },
- { name => 'v', required => 0, default => 0, template => 'int' },
- { name => 'u', required => 0, default => 0, template => 'int' },
- { name => 't', required => 0, default => 0, template => 'int' },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'o', required => 0, default => 'd', enum => ['a', 'd'] },
+ { get => 's', required => 0, default => 'date', enum => [qw|date tag|] },
+ { get => 'v', required => 0, default => 0, template => 'int' },
+ { get => 'u', required => 0, default => 0, template => 'int' },
+ { get => 't', required => 0, default => 0, template => 'int' },
);
- return 404 if $f->{_err} || $f->{p} > 100;
+ return $self->resNotFound if $f->{_err} || $f->{p} > 100;
my($list, $np) = $self->dbTagLinks(
what => 'details',
@@ -473,7 +477,7 @@ sub vntagmod {
my($self, $vid) = @_;
my $v = $self->dbVNGet(id => $vid)->[0];
- return 404 if !$v || $v->{hidden};
+ return $self->resNotFound if !$v || $v->{hidden};
return $self->htmlDenied if !$self->authCan('tag');
@@ -483,10 +487,10 @@ sub vntagmod {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'taglinks', required => 0, default => '', maxlength => 10240, regex => [ qr/^[1-9][0-9]*,-?[1-3],-?[0-2]( [1-9][0-9]*,-?[1-3],-?[0-2])*$/, 'meh' ] },
- { name => 'overrule', required => 0, multi => 1, template => 'int' },
+ { post => 'taglinks', required => 0, default => '', maxlength => 10240, regex => [ qr/^[1-9][0-9]*,-?[1-3],-?[0-2]( [1-9][0-9]*,-?[1-3],-?[0-2])*$/, 'meh' ] },
+ { post => 'overrule', required => 0, multi => 1, template => 'int' },
);
- return 404 if $frm->{_err};
+ return $self->resNotFound if $frm->{_err};
# convert some data in a more convenient structure for faster lookup
my %tags = map +($_->{id} => $_), @$tags;
@@ -670,7 +674,7 @@ sub tagindex {
end;
}
li;
- txt "\n";
+ br;
a href => '/g/list?t=0;o=d;s=added', mt '_tagidx_queue_link';
txt ' - ';
a href => '/g/list?t=1;o=d;s=added', mt '_tagidx_denied';
@@ -718,10 +722,10 @@ sub tagxml {
my $self = shift;
my $f = $self->formValidate(
- { name => 'q', required => 0, maxlength => 500 },
- { name => 'id', required => 0, multi => 1, template => 'int' },
+ { get => 'q', required => 0, maxlength => 500 },
+ { get => 'id', required => 0, multi => 1, template => 'int' },
);
- return 404 if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]);
+ return $self->resNotFound if $f->{_err} || (!$f->{q} && !$f->{id} && !$f->{id}[0]);
my($list, $np) = $self->dbTagGet(
!$f->{q} ? () : $f->{q} =~ /^g([1-9]\d*)/ ? (id => $1) : $f->{q} =~ /^name:(.+)$/ ? (name => $1) : (search => $f->{q}),
diff --git a/lib/VNDB/Handler/ULists.pm b/lib/VNDB/Handler/ULists.pm
index 764d515b..2657481e 100644
--- a/lib/VNDB/Handler/ULists.pm
+++ b/lib/VNDB/Handler/ULists.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::ULists;
use strict;
use warnings;
-use YAWF ':html', ':xml';
+use TUWF ':html', ':xml';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{v([1-9]\d*)/vote}, \&vnvote,
qr{v([1-9]\d*)/wish}, \&vnwish,
qr{v([1-9]\d*)/list}, \&vnlist_e,
@@ -27,9 +27,9 @@ sub vnvote {
return if !$self->authCheckCode;
my $f = $self->formValidate(
- { name => 'v', enum => [ -1, 1..10 ] }
+ { get => 'v', enum => [ -1, 1..10 ] }
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->dbVoteDel($uid, $id) if $f->{v} == -1;
$self->dbVoteAdd($id, $uid, $f->{v}) if $f->{v} > 0;
@@ -46,9 +46,9 @@ sub vnwish {
return if !$self->authCheckCode;
my $f = $self->formValidate(
- { name => 's', enum => [ -1, @{$self->{wishlist_status}} ] }
+ { get => 's', enum => [ -1, @{$self->{wishlist_status}} ] }
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->dbWishListDel($uid, $id) if $f->{s} == -1;
$self->dbWishListAdd($id, $uid, $f->{s}) if $f->{s} != -1;
@@ -65,9 +65,9 @@ sub vnlist_e {
return if !$self->authCheckCode;
my $f = $self->formValidate(
- { name => 'e', enum => [ -1, @{$self->{vnlist_status}} ] }
+ { get => 'e', enum => [ -1, @{$self->{vnlist_status}} ] }
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->dbVNListDel($uid, $id) if $f->{e} == -1;
$self->dbVNListAdd($uid, $id, $f->{e}) if $f->{e} != -1;
@@ -82,9 +82,9 @@ sub rlist_e {
my $rid = $id;
if(!$rid) {
my $f = $self->formValidate(
- { name => 'id', required => 1, template => 'int' }
+ { get => 'id', required => 1, template => 'int' }
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$rid = $f->{id};
}
@@ -93,9 +93,9 @@ sub rlist_e {
return if !$self->authCheckCode;
my $f = $self->formValidate(
- { name => 'e', required => 1, enum => [ -1, @{$self->{rlist_status}} ] }
+ { get => 'e', required => 1, enum => [ -1, @{$self->{rlist_status}} ] }
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->dbRListDel($uid, $rid) if $f->{e} == -1;
$self->dbRListAdd($uid, $rid, $f->{e}) if $f->{e} >= 0;
@@ -116,24 +116,24 @@ sub votelist {
my($self, $type, $id) = @_;
my $obj = $type eq 'v' ? $self->dbVNGet(id => $id)->[0] : $self->dbUserGet(uid => $id, what => 'hide_list')->[0];
- return 404 if !$obj->{id};
+ return $self->resNotFound if !$obj->{id};
my $own = $type eq 'u' && $self->authInfo->{id} && $self->authInfo->{id} == $id;
- return 404 if $type eq 'u' && !$own && !(!$obj->{hide_list} || $self->authCan('usermod'));
+ return $self->resNotFound if $type eq 'u' && !$own && !(!$obj->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'o', required => 0, default => 'd', enum => ['a', 'd'] },
- { name => 's', required => 0, default => 'date', enum => [qw|date title vote|] },
- { name => 'c', required => 0, default => 'all', enum => [ 'all', 'a'..'z', 0 ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'o', required => 0, default => 'd', enum => ['a', 'd'] },
+ { get => 's', required => 0, default => 'date', enum => [qw|date title vote|] },
+ { get => 'c', required => 0, default => 'all', enum => [ 'all', 'a'..'z', 0 ] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
if($own && $self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'vid', required => 1, multi => 1, template => 'int' },
- { name => 'batchedit', required => 1, enum => [ -2, -1, 1..10 ] },
+ { post => 'vid', required => 1, multi => 1, template => 'int' },
+ { post => 'batchedit', required => 1, enum => [ -2, -1, 1..10 ] },
);
my @vid = grep $_ && $_ > 0, @{$frm->{vid}};
if(!$frm->{_err} && @vid && $frm->{batchedit} > -2) {
@@ -223,21 +223,21 @@ sub wishlist {
my $own = $self->authInfo->{id} && $self->authInfo->{id} == $uid;
my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
- return 404 if !$u || !$own && !(!$u->{hide_list} || $self->authCan('usermod'));
+ return $self->resNotFound if !$u || !$own && !(!$u->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'o', required => 0, default => 'd', enum => [ 'a', 'd' ] },
- { name => 's', required => 0, default => 'wstat', enum => [qw|title added wstat|] },
- { name => 'f', required => 0, default => -1, enum => [ -1, @{$self->{wishlist_status}} ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'o', required => 0, default => 'd', enum => [ 'a', 'd' ] },
+ { get => 's', required => 0, default => 'wstat', enum => [qw|title added wstat|] },
+ { get => 'f', required => 0, default => -1, enum => [ -1, @{$self->{wishlist_status}} ] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
if($own && $self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'sel', required => 0, default => 0, multi => 1, template => 'int' },
- { name => 'batchedit', required => 1, enum => [ -1, @{$self->{wishlist_status}} ] },
+ { post => 'sel', required => 0, default => 0, multi => 1, template => 'int' },
+ { post => 'batchedit', required => 1, enum => [ -1, @{$self->{wishlist_status}} ] },
);
if(!$frm->{_err} && @{$frm->{sel}} && $frm->{sel}[0]) {
$self->dbWishListDel($uid, $frm->{sel}) if $frm->{batchedit} == -1;
@@ -325,26 +325,26 @@ sub vnlist {
my $own = $self->authInfo->{id} && $self->authInfo->{id} == $uid;
my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
- return 404 if !$u || !$own && !(!$u->{hide_list} || $self->authCan('usermod'));
+ return $self->resNotFound if !$u || !$own && !(!$u->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'o', required => 0, default => 'a', enum => [ 'a', 'd' ] },
- { name => 's', required => 0, default => 'title', enum => [ 'title', 'vote' ] },
- { name => 'c', required => 0, default => 'all', enum => [ 'all', 'a'..'z', 0 ] },
- { name => 'v', required => 0, default => 0, enum => [ -1..1 ] },
- { name => 't', required => 0, default => -1, enum => [ -1, @{$self->{vnlist_status}} ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'o', required => 0, default => 'a', enum => [ 'a', 'd' ] },
+ { get => 's', required => 0, default => 'title', enum => [ 'title', 'vote' ] },
+ { get => 'c', required => 0, default => 'all', enum => [ 'all', 'a'..'z', 0 ] },
+ { get => 'v', required => 0, default => 0, enum => [ -1..1 ] },
+ { get => 't', required => 0, default => -1, enum => [ -1, @{$self->{vnlist_status}} ] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
if($own && $self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'vid', required => 0, default => 0, multi => 1, template => 'int' },
- { name => 'rid', required => 0, default => 0, multi => 1, template => 'int' },
- { name => 'not', required => 0, default => '', maxlength => 2000 },
- { name => 'vns', required => 1, enum => [ -2, -1, @{$self->{vnlist_status}}, 999 ] },
- { name => 'rel', required => 1, enum => [ -2, -1, @{$self->{rlist_status}} ] },
+ { post => 'vid', required => 0, default => 0, multi => 1, template => 'int' },
+ { post => 'rid', required => 0, default => 0, multi => 1, template => 'int' },
+ { post => 'not', required => 0, default => '', maxlength => 2000 },
+ { post => 'vns', required => 1, enum => [ -2, -1, @{$self->{vnlist_status}}, 999 ] },
+ { post => 'rel', required => 1, enum => [ -2, -1, @{$self->{rlist_status}} ] },
);
my @vid = grep $_ > 0, @{$frm->{vid}};
my @rid = grep $_ > 0, @{$frm->{rid}};
diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm
index 044c72b2..fcef3d44 100644
--- a/lib/VNDB/Handler/Users.pm
+++ b/lib/VNDB/Handler/Users.pm
@@ -3,12 +3,12 @@ package VNDB::Handler::Users;
use strict;
use warnings;
-use YAWF ':html', 'xml_escape';
+use TUWF ':html', 'xml_escape';
use VNDB::Func;
use POSIX 'floor';
-YAWF::register(
+TUWF::register(
qr{u([1-9]\d*)} => \&userpage,
qr{u/login} => \&login,
qr{u([1-9]\d*)/logout} => \&logout,
@@ -28,7 +28,7 @@ sub userpage {
my($self, $uid) = @_;
my $u = $self->dbUserGet(uid => $uid, what => 'stats hide_list')->[0];
- return 404 if !$u->{id};
+ return $self->resNotFound if !$u->{id};
my $votes = $u->{c_votes} && $self->dbVoteStats(uid => $uid);
@@ -142,8 +142,8 @@ sub login {
my $frm;
if($self->reqMethod eq 'POST') {
$frm = $self->formValidate(
- { name => 'usrname', required => 1, minlength => 2, maxlength => 15 },
- { name => 'usrpass', required => 1, minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { post => 'usrname', required => 1, minlength => 2, maxlength => 15 },
+ { post => 'usrpass', required => 1, minlength => 4, maxlength => 64, template => 'asciiprint' },
);
(my $ref = $self->reqHeader('Referer')||'/') =~ s/^\Q$self->{url}//;
@@ -166,7 +166,7 @@ sub login {
sub logout {
my $self = shift;
my $uid = shift;
- return 404 if !$self->authInfo->{id} || $self->authInfo->{id} != $uid;
+ return $self->resNotFound if !$self->authInfo->{id} || $self->authInfo->{id} != $uid;
$self->authLogout;
}
@@ -180,7 +180,7 @@ sub newpass {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'mail', required => 1, template => 'mail' },
+ { post => 'mail', required => 1, template => 'mail' },
);
if(!$frm->{_err}) {
$u = $self->dbUserGet(mail => $frm->{mail})->[0];
@@ -238,12 +238,12 @@ sub register {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
- { name => 'mail', template => 'mail' },
- { name => 'usrpass', minlength => 4, maxlength => 64, template => 'asciiprint' },
- { name => 'usrpass2', minlength => 4, maxlength => 64, template => 'asciiprint' },
- { name => 'type', regex => [ qr/^[1-3]$/ ] },
- { name => 'answer', template => 'int' },
+ { post => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
+ { post => 'mail', template => 'mail' },
+ { post => 'usrpass', minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { post => 'usrpass2', minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { post => 'type', regex => [ qr/^[1-3]$/ ] },
+ { post => 'answer', template => 'int' },
);
my $num = $self->{stats}{[qw|vn releases producers|]->[ $frm->{type} - 1 ]};
push @{$frm->{_err}}, 'notanswer' if !$frm->{_err} && ($frm->{answer} > $num || $frm->{answer} < $num*0.995);
@@ -292,7 +292,7 @@ sub edit {
# fetch user info (cached if uid == loggedin uid)
my $u = $self->authInfo->{id} == $uid ? $self->authInfo : $self->dbUserGet(uid => $uid, what => 'extended prefs')->[0];
- return 404 if !$u->{id};
+ return $self->resNotFound if !$u->{id};
# check POST data
my $frm;
@@ -300,17 +300,17 @@ sub edit {
return if !$self->authCheckCode;
$frm = $self->formValidate(
$self->authCan('usermod') ? (
- { name => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
- { name => 'rank', enum => [ 1..$#{$self->{user_ranks}} ] },
- { name => 'ign_votes', required => 0, default => 0 },
+ { post => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
+ { post => 'rank', enum => [ 1..$#{$self->{user_ranks}} ] },
+ { post => 'ign_votes', required => 0, default => 0 },
) : (),
- { name => 'mail', template => 'mail' },
- { name => 'usrpass', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
- { name => 'usrpass2', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
- { name => 'hide_list', required => 0, default => 0, enum => [0,1] },
- { name => 'show_nsfw', required => 0, default => 0, enum => [0,1] },
- { name => 'skin', required => 0, default => '', enum => [ '', keys %{$self->{skins}} ] },
- { name => 'customcss', required => 0, maxlength => 2000, default => '' },
+ { post => 'mail', template => 'mail' },
+ { post => 'usrpass', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { post => 'usrpass2', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { post => 'hide_list', required => 0, default => 0, enum => [0,1] },
+ { post => 'show_nsfw', required => 0, default => 0, enum => [0,1] },
+ { post => 'skin', required => 0, default => '', enum => [ '', keys %{$self->{skins}} ] },
+ { post => 'customcss', required => 0, maxlength => 2000, default => '' },
);
push @{$frm->{_err}}, 'passmatch'
if ($frm->{usrpass} || $frm->{usrpass2}) && (!$frm->{usrpass} || !$frm->{usrpass2} || $frm->{usrpass} ne $frm->{usrpass2});
@@ -379,10 +379,10 @@ sub posts {
# fetch user info (cached if uid == loggedin uid)
my $u = $self->authInfo->{id} && $self->authInfo->{id} == $uid ? $self->authInfo : $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
- return 404 if !$u->{id};
+ return $self->resNotFound if !$u->{id};
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' }
+ { get => 'p', required => 0, default => 1, template => 'int' }
);
my($posts, $np) = $self->dbPostGet(uid => $uid, hide => 1, what => 'thread', page => $f->{p}, sort => 'date', reverse => 1);
@@ -436,7 +436,7 @@ sub delete {
if(!$act) {
my $code = $self->authGetCode("/u$uid/del/o");
my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
- return 404 if !$u->{id};
+ return $self->resNotFound if !$u->{id};
$self->htmlHeader(title => 'Delete user', noindex => 1);
$self->htmlMainTabs('u', $u, 'del');
div class => 'mainbox';
@@ -473,12 +473,12 @@ sub list {
my($self, $char) = @_;
my $f = $self->formValidate(
- { name => 's', required => 0, default => 'username', enum => [ qw|username registered votes changes tags| ] },
- { name => 'o', required => 0, default => 'a', enum => [ 'a','d' ] },
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'q', required => 0, default => '', maxlength => 50 },
+ { get => 's', required => 0, default => 'username', enum => [ qw|username registered votes changes tags| ] },
+ { get => 'o', required => 0, default => 'a', enum => [ 'a','d' ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'q', required => 0, default => '', maxlength => 50 },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$self->htmlHeader(noindex => 1, title => mt '_ulist_title');
@@ -548,21 +548,20 @@ sub notifies {
return $self->htmlDenied if !$u->{id} || $uid != $u->{id};
my $f = $self->formValidate(
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'r', required => 0, default => 0, enum => [0,1] },
-
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'r', required => 0, default => 0, enum => [0,1] },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
# changing the notification settings
my $saved;
if($self->reqMethod() eq 'POST' && $self->reqParam('set')) {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'notify_nodbedit', required => 0, default => 1, enum => [0,1] },
- { name => 'notify_announce', required => 0, default => 0, enum => [0,1] }
+ { post => 'notify_nodbedit', required => 0, default => 1, enum => [0,1] },
+ { post => 'notify_announce', required => 0, default => 0, enum => [0,1] }
);
- return 404 if $frm->{_err};
+ return $self->resNotFound if $frm->{_err};
$self->authPref($_, $frm->{$_}) for ('notify_nodbedit', 'notify_announce');
$saved = 1;
@@ -570,11 +569,11 @@ sub notifies {
} elsif($self->reqMethod() eq 'POST') {
return if !$self->authCheckCode;
my $frm = $self->formValidate(
- { name => 'notifysel', multi => 1, required => 0, template => 'int' },
- { name => 'markread', required => 0 },
- { name => 'remove', required => 0 }
+ { post => 'notifysel', multi => 1, required => 0, template => 'int' },
+ { post => 'markread', required => 0 },
+ { post => 'remove', required => 0 }
);
- return 404 if $frm->{_err};
+ return $self->resNotFound if $frm->{_err};
my @ids = grep $_, @{$frm->{notifysel}};
$self->dbNotifyMarkRead(@ids) if @ids && $frm->{markread};
$self->dbNotifyRemove(@ids) if @ids && $frm->{remove};
@@ -673,7 +672,7 @@ sub readnotify {
my($self, $uid, $nid) = @_;
return $self->htmlDenied if !$self->authInfo->{id} || $uid != $self->authInfo->{id};
my $n = $self->dbNotifyGet(uid => $uid, id => $nid)->[0];
- return 404 if !$n->{iid};
+ return $self->resNotFound if !$n->{iid};
$self->dbNotifyMarkRead($n->{id}) if !$n->{read};
# NOTE: for t+.+ IDs, this will create a double redirect, which is rather awkward...
$self->resRedirect("/$n->{ltype}$n->{iid}".($n->{subid}?".$n->{subid}":''), 'perm');
diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm
index 8a63b79b..16a7edfb 100644
--- a/lib/VNDB/Handler/VNBrowse.pm
+++ b/lib/VNDB/Handler/VNBrowse.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::VNBrowse;
use strict;
use warnings;
-use YAWF ':html';
+use TUWF ':html';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{v/([a-z0]|all)} => \&list,
);
@@ -16,14 +16,14 @@ sub list {
my($self, $char) = @_;
my $f = $self->formValidate(
- { name => 's', required => 0, default => 'tagscore', enum => [ qw|title rel pop tagscore rating| ] },
- { name => 'o', required => 0, enum => [ 'a','d' ] },
- { name => 'p', required => 0, default => 1, template => 'int' },
- { name => 'q', required => 0, default => '' },
- { name => 'sq', required => 0, default => '' },
- { name => 'fil',required => 0, default => '' },
+ { get => 's', required => 0, default => 'tagscore', enum => [ qw|title rel pop tagscore rating| ] },
+ { get => 'o', required => 0, enum => [ 'a','d' ] },
+ { get => 'p', required => 0, default => 1, template => 'int' },
+ { get => 'q', required => 0, default => '' },
+ { get => 'sq', required => 0, default => '' },
+ { get => 'fil',required => 0, default => '' },
);
- return 404 if $f->{_err};
+ return $self->resNotFound if $f->{_err};
$f->{q} ||= $f->{sq};
$f->{fil} = $self->authPref('filter_vn') if !grep $_ eq 'fil', $self->reqParam();
my %compat = _fil_compat($self);
@@ -75,9 +75,9 @@ sub _fil_compat {
my $self = shift;
my %c;
my $f = $self->formValidate(
- { name => 'ln', required => 0, multi => 1, enum => $self->{languages}, default => '' },
- { name => 'pl', required => 0, multi => 1, enum => $self->{platforms}, default => '' },
- { name => 'sp', required => 0, default => $self->reqCookie($self->{cookie_prefix}.'tagspoil') =~ /^([0-2])$/ ? $1 : 0, enum => [0..2] },
+ { get => 'ln', required => 0, multi => 1, enum => $self->{languages}, default => '' },
+ { get => 'pl', required => 0, multi => 1, enum => $self->{platforms}, default => '' },
+ { get => 'sp', required => 0, default => $self->reqCookie($self->{cookie_prefix}.'tagspoil') =~ /^([0-2])$/ ? $1 : 0, enum => [0..2] },
);
return () if $f->{_err};
$c{lang} //= $f->{ln} if $f->{ln}[0];
diff --git a/lib/VNDB/Handler/VNEdit.pm b/lib/VNDB/Handler/VNEdit.pm
index b93c544d..8265aa35 100644
--- a/lib/VNDB/Handler/VNEdit.pm
+++ b/lib/VNDB/Handler/VNEdit.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::VNEdit;
use strict;
use warnings;
-use YAWF ':html', ':xml';
+use TUWF ':html', ':xml';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{v(?:([1-9]\d*)(?:\.([1-9]\d*))?/edit|/new)}
=> \&edit,
qr{xml/vn\.xml} => \&vnxml,
@@ -19,7 +19,7 @@ sub edit {
my($self, $vid, $rev) = @_;
my $v = $vid && $self->dbVNGet(id => $vid, what => 'extended screenshots relations anime changes', $rev ? (rev => $rev) : ())->[0];
- return 404 if $vid && !$v->{id};
+ return $self->resNotFound if $vid && !$v->{id};
$rev = undef if !$vid || $v->{cid} == $v->{latest};
return $self->htmlDenied if !$self->authCan('edit')
@@ -38,23 +38,23 @@ sub edit {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'title', maxlength => 250 },
- { name => 'original', required => 0, maxlength => 250, default => '' },
- { name => 'alias', required => 0, maxlength => 500, default => '' },
- { name => 'desc', required => 0, default => '', maxlength => 10240 },
- { name => 'length', required => 0, default => 0, enum => $self->{vn_lengths} },
- { name => 'l_wp', required => 0, default => '', maxlength => 150 },
- { name => 'l_encubed', required => 0, default => '', maxlength => 100 },
- { name => 'l_renai', required => 0, default => '', maxlength => 100 },
- { name => 'l_vnn', required => 0, default => $b4{l_vnn}||0, template => 'int' },
- { name => 'anime', required => 0, default => '' },
- { name => 'previmage', required => 0, default => 0, template => 'int' },
- { name => 'img_nsfw', required => 0, default => 0 },
- { name => 'vnrelations', required => 0, default => '', maxlength => 5000 },
- { name => 'screenshots', required => 0, default => '', maxlength => 1000 },
- { name => 'editsum', required => 0, maxlength => 5000 },
- { name => 'ihid', required => 0 },
- { name => 'ilock', required => 0 },
+ { post => 'title', maxlength => 250 },
+ { post => 'original', required => 0, maxlength => 250, default => '' },
+ { post => 'alias', required => 0, maxlength => 500, default => '' },
+ { post => 'desc', required => 0, default => '', maxlength => 10240 },
+ { post => 'length', required => 0, default => 0, enum => $self->{vn_lengths} },
+ { post => 'l_wp', required => 0, default => '', maxlength => 150 },
+ { post => 'l_encubed', required => 0, default => '', maxlength => 100 },
+ { post => 'l_renai', required => 0, default => '', maxlength => 100 },
+ { post => 'l_vnn', required => 0, default => $b4{l_vnn}||0, template => 'int' },
+ { post => 'anime', required => 0, default => '' },
+ { post => 'previmage', required => 0, default => 0, template => 'int' },
+ { post => 'img_nsfw', required => 0, default => 0 },
+ { post => 'vnrelations', required => 0, default => '', maxlength => 5000 },
+ { post => 'screenshots', required => 0, default => '', maxlength => 1000 },
+ { post => 'editsum', required => 0, maxlength => 5000 },
+ { post => 'ihid', required => 0 },
+ { post => 'ilock', required => 0 },
);
push @{$frm->{_err}}, 'badeditsum' if !$frm->{editsum} || lc($frm->{editsum}) eq lc($frm->{desc});
@@ -86,7 +86,7 @@ sub edit {
# nothing changed? just redirect
return $self->resRedirect("/v$vid", 'post')
- if $vid && !$self->reqUploadFileName('img') && $image == $v->{image}
+ if $vid && !$self->reqParam('img') && $image == $v->{image}
&& !grep $frm->{$_} ne $b4{$_}, keys %b4;
# perform the edit/add
@@ -123,7 +123,7 @@ sub edit {
sub _uploadimage {
my($self, $v, $frm) = @_;
- return $v ? $frm->{previmage} : 0 if $frm->{_err} || !$self->reqUploadFileName('img');
+ return $v ? $frm->{previmage} : 0 if $frm->{_err} || !$self->reqParam('img');
# save to temporary location
my $tmp = sprintf '%s/static/cv/00/tmp.%d.jpg', $VNDB::ROOT, $$*int(rand(1000)+1);
@@ -187,7 +187,8 @@ sub _form {
h2 mt '_vnedit_image_upload';
input type => 'file', class => 'text', name => 'img', id => 'img';
- p mt('_vnedit_image_upload_msg')."\n\n\n";
+ p mt('_vnedit_image_upload_msg');
+ br; br; br;
h2 mt '_vnedit_image_nsfw';
input type => 'checkbox', class => 'checkbox', id => 'img_nsfw', name => 'img_nsfw',
@@ -292,8 +293,8 @@ sub _updreverse {
sub vnxml {
my $self = shift;
- my $q = $self->formValidate({ name => 'q', maxlength => 500 });
- return 404 if $q->{_err};
+ my $q = $self->formValidate({ get => 'q', maxlength => 500 });
+ return $self->resNotFound if $q->{_err};
$q = $q->{q};
my($list, $np) = $self->dbVNGet(
@@ -321,9 +322,9 @@ sub scrxml {
# fetch information about screenshots
if($self->reqMethod ne 'POST') {
my $ids = $self->formValidate(
- { name => 'id', required => 1, template => 'int', multi => 1 }
+ { get => 'id', required => 1, template => 'int', multi => 1 }
);
- return 404 if $ids->{_err};
+ return $self->resNotFound if $ids->{_err};
my $r = $self->dbScreenshotGet($ids->{id});
xml;
@@ -334,8 +335,8 @@ sub scrxml {
}
# upload new screenshot
- my $num = $self->formValidate({name => 'upload', template => 'int'});
- return 404 if $num->{_err};
+ my $num = $self->formValidate({get => 'upload', template => 'int'});
+ return $self->resNotFound if $num->{_err};
my $tmp = sprintf '%s/static/sf/00/tmp.%d.jpg', $VNDB::ROOT, $$*int(rand(1000)+1);
$self->reqSaveUpload("scr_upl_file_$num->{upload}", $tmp);
diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm
index 5e024424..e0c597d9 100644
--- a/lib/VNDB/Handler/VNPage.pm
+++ b/lib/VNDB/Handler/VNPage.pm
@@ -3,11 +3,11 @@ package VNDB::Handler::VNPage;
use strict;
use warnings;
-use YAWF ':html', 'xml_escape';
+use TUWF ':html', 'xml_escape';
use VNDB::Func;
-YAWF::register(
+TUWF::register(
qr{v/rand} => \&rand,
qr{v([1-9]\d*)/rg} => \&rg,
qr{v([1-9]\d*)(?:\.([1-9]\d*))?} => \&page,
@@ -24,7 +24,7 @@ sub rg {
my($self, $vid) = @_;
my $v = $self->dbVNGet(id => $vid, what => 'relgraph')->[0];
- return 404 if !$v->{id} || !$v->{rgraph};
+ return $self->resNotFound if !$v->{id} || !$v->{rgraph};
my $title = mt '_vnrg_title', $v->{title};
return if $self->htmlRGHeader($title, 'v', $v);
@@ -50,7 +50,7 @@ sub page {
what => 'extended anime relations screenshots rating ranking'.($rev ? ' changes' : ''),
$rev ? (rev => $rev) : (),
)->[0];
- return 404 if !$v->{id};
+ return $self->resNotFound if !$v->{id};
my $r = $self->dbReleaseGet(vid => $vid, what => 'producers platforms');
@@ -80,9 +80,11 @@ sub page {
end;
if($v->{img_nsfw}) {
p id => 'nsfw_show', $self->authPref('show_nsfw') ? (style => 'display: none') : ();
- txt mt('_vnpage_imgnsfw_msg')."\n\n";
+ txt mt('_vnpage_imgnsfw_msg');
+ br; br;
a href => '#', mt '_vnpage_imgnsfw_show';
- txt "\n\n".mt '_vnpage_imgnsfw_note';
+ br; br;
+ txt mt '_vnpage_imgnsfw_note';
end;
}
}
@@ -268,7 +270,7 @@ sub _producers {
a href => "/p$_->{id}", title => $_->{original}||$_->{name}, shorten $_->{name}, 30;
txt ' & ' if $_ != $p[$#p];
}
- txt "\n";
+ br;
}
end;
end;
@@ -331,7 +333,7 @@ sub _anime {
end;
acronym title => $_->{title_kanji}||$_->{title_romaji}, shorten $_->{title_romaji}, 50;
b ' ('.(defined $_->{type} ? mt("_animetype_$_->{type}").', ' : '').$_->{year}.')';
- txt "\n";
+ br;
}
}
end;