diff options
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | lib/VNDB/Func.pm | 5 | ||||
-rw-r--r-- | lib/VNDB/Handler/Discussions.pm | 36 | ||||
-rw-r--r-- | lib/VNDB/Handler/Misc.pm | 34 | ||||
-rw-r--r-- | lib/VNDB/Handler/Producers.pm | 53 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 94 | ||||
-rw-r--r-- | lib/VNDB/Handler/Tags.pm | 90 | ||||
-rw-r--r-- | lib/VNDB/Handler/ULists.pm | 84 | ||||
-rw-r--r-- | lib/VNDB/Handler/Users.pm | 87 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNBrowse.pm | 24 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNEdit.pm | 59 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNPage.pm | 18 | ||||
-rw-r--r-- | lib/VNDB/L10N.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Plugin/TransAdmin.pm | 12 | ||||
-rw-r--r-- | lib/VNDB/Util/Auth.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Util/BrowseHTML.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Util/CommonHTML.pm | 17 | ||||
-rw-r--r-- | lib/VNDB/Util/FormHTML.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Util/LayoutHTML.pm | 7 | ||||
-rw-r--r-- | lib/VNDB/Util/Misc.pm | 2 | ||||
-rwxr-xr-x | util/jsgen.pl | 1 | ||||
-rwxr-xr-x | util/vndb.pl | 28 | ||||
m--------- | yawf | 0 |
26 files changed, 347 insertions, 327 deletions
diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index aeada7bf..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "yawf"] - path = yawf - url = git://g.blicky.net/yawf.git @@ -4,6 +4,7 @@ - Changed order of the filter action buttons - Slightly re-organized lang.txt - Fixed perl warning on /u+/votes batchedit with nothing selected + - Switched to TUWF - Bugfix: Correctly randomize screenshots on homepage with filters - Bugfix: Don't show NSFW screenshots on homepage with filters - Bugfix-API: Use ~ for the get vn search filter instead of = @@ -166,5 +166,5 @@ update-2.16: all update-2.17: all $(multi-stop) - ${runpsql} < util/updates/update_2.16.sql + ${runpsql} < util/updates/update_2.17.sql $(multi-start) @@ -14,16 +14,15 @@ Requirements Linux, or an OS that resembles Linux. Chances are VNDB won't run on Windows. PostgreSQL 9.0+ (don't try older versions or other SQL databases, it won't work) perl 5.12 recommended, 5.10 may also work - A webserver that works with YAWF (lighttpd and Apache are known to work) + A webserver that works with TUWF (lighttpd and Apache are known to work) (perl 5.12 core modules are not listed.) util/vndb.pl: Algorithm::Diff::Fast - CGI::Minimal (required by YAWF) - CGI::Cookie::XS (required by YAWF) DBI DBD::Pg + TUWF (get it from http://g.blicky.net/tuwf.git/) FCGI (optional, for running as a FastCGI script) PerlIO::gzip (optional, for output compression) diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm index 17d69cd5..435f0fec 100644 --- a/lib/VNDB/Func.pm +++ b/lib/VNDB/Func.pm @@ -3,7 +3,7 @@ package VNDB::Func; use strict; use warnings; -use YAWF ':html'; +use TUWF ':html'; use Exporter 'import'; use POSIX 'strftime', 'ceil', 'floor'; use VNDBUtil; @@ -59,9 +59,8 @@ sub tagscore { # short wrapper around maketext() -# (not thread-safe, in the same sense as YAWF::XML. But who cares about threads, anyway?) sub mt { - return $YAWF::OBJ->{l10n}->maketext(@_); + return $TUWF::OBJ->{l10n}->maketext(@_); } 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 => [ \>intype, '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; diff --git a/lib/VNDB/L10N.pm b/lib/VNDB/L10N.pm index b857852d..ee9db838 100644 --- a/lib/VNDB/L10N.pm +++ b/lib/VNDB/L10N.pm @@ -49,7 +49,7 @@ use warnings; package VNDB::L10N::en; use base 'VNDB::L10N'; use POSIX 'strftime'; - use YAWF 'xml_escape'; + use TUWF::XML 'xml_escape'; our %Lexicon; sub quant { diff --git a/lib/VNDB/Plugin/TransAdmin.pm b/lib/VNDB/Plugin/TransAdmin.pm index fa8e98ef..35dd10ce 100644 --- a/lib/VNDB/Plugin/TransAdmin.pm +++ b/lib/VNDB/Plugin/TransAdmin.pm @@ -1,9 +1,9 @@ # This plugin provides a quick and dirty user interface to editing lang.txt, # to use it, add the following to your data/config.pl: # -# if($INC{"YAWF.pm"}) { -# require VNDB::Plugin::TransAdmin; -# $VNDB::S{transadmin} = { +# if($TUWF::OBJ) { +# TUWF::load('VNDB::Plugin::TransAdmin'); +# $TUWF::OBJ->{transadmin} = { # <userid> => 'all' || <language> || <arrayref with languages> # }; # } @@ -16,7 +16,7 @@ package VNDB::Plugin::TransAdmin; use strict; use warnings; -use YAWF ':html'; +use TUWF ':html'; use LangFile; use VNDB::Func; @@ -24,7 +24,7 @@ use VNDB::Func; my $langfile = "$VNDB::ROOT/data/lang.txt"; -YAWF::register( +TUWF::register( qr{tladmin(?:/([a-z]+))?} => \&tladmin ); @@ -41,7 +41,7 @@ sub tladmin { $lang ||= ''; my $intro = $lang =~ s/intro//; - return 404 if $lang && ($lang eq 'en' || !grep $_ eq $lang, $self->{l10n}->languages); + return $self->resNotFound if $lang && ($lang eq 'en' || !grep $_ eq $lang, $self->{l10n}->languages); my $sect = $self->reqParam('sect')||''; my $doc = $self->reqParam('doc')||''; diff --git a/lib/VNDB/Util/Auth.pm b/lib/VNDB/Util/Auth.pm index 9ad76894..864d1c54 100644 --- a/lib/VNDB/Util/Auth.pm +++ b/lib/VNDB/Util/Auth.pm @@ -10,7 +10,7 @@ use Digest::SHA qw|sha1_hex sha256_hex|; use Time::HiRes; use Encode 'encode_utf8'; use POSIX 'strftime'; -use YAWF ':html'; +use TUWF ':html'; use VNDB::Func; diff --git a/lib/VNDB/Util/BrowseHTML.pm b/lib/VNDB/Util/BrowseHTML.pm index 62e01fd1..4cce692c 100644 --- a/lib/VNDB/Util/BrowseHTML.pm +++ b/lib/VNDB/Util/BrowseHTML.pm @@ -3,7 +3,7 @@ package VNDB::Util::BrowseHTML; use strict; use warnings; -use YAWF ':html', 'xml_escape'; +use TUWF ':html', 'xml_escape'; use Exporter 'import'; use VNDB::Func; use POSIX 'ceil'; diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm index a412949a..97dc6ca1 100644 --- a/lib/VNDB/Util/CommonHTML.pm +++ b/lib/VNDB/Util/CommonHTML.pm @@ -3,7 +3,7 @@ package VNDB::Util::CommonHTML; use strict; use warnings; -use YAWF ':html', 'xml_escape'; +use TUWF ':html', 'xml_escape', 'html_escape'; use Exporter 'import'; use Algorithm::Diff::Fast 'compact_diff'; use VNDB::Func; @@ -233,8 +233,8 @@ sub revdiff { if($o{diff} && $ser1 && $ser2) { my $sep = ref $o{diff} ? qr/($o{diff})/ : qr//; - my @ser1 = $o{split} ? $o{split}->($ser1) : map xml_escape($_), split $sep, $ser1; - my @ser2 = $o{split} ? $o{split}->($ser2) : map xml_escape($_), split $sep, $ser2; + my @ser1 = $o{split} ? $o{split}->($ser1) : map html_escape($_), split $sep, $ser1; + my @ser2 = $o{split} ? $o{split}->($ser2) : map html_escape($_), split $sep, $ser2; return if $o{split} && $#ser1 == $#ser2 && !grep $ser1[$_] ne $ser2[$_], 0..$#ser1; $ser1 = $ser2 = ''; @@ -247,8 +247,8 @@ sub revdiff { $ser2 .= ($ser2?$o{join}:'').($i % 2 ? qq|<b class="diff_add">$b</b>| : $b) if $b ne ''; } } elsif(!$o{htmlize}) { - $ser1 = xml_escape $ser1; - $ser2 = xml_escape $ser2; + $ser1 = html_escape $ser1; + $ser2 = html_escape $ser2; } $ser1 = mt '_revision_empty' if !$ser1 && $ser1 ne '0'; @@ -432,9 +432,10 @@ sub htmlRGHeader { $self->resHeader('Content-Type' => 'application/xhtml+xml; charset=UTF-8'); # This is a REALLY ugly hack, need find a proper solution in YAWF + # TODO: TUWF has a proper solution for this, convert this to use it no warnings 'redefine'; - my $sub = \&YAWF::XML::html; - *YAWF::XML::html = sub () { + my $sub = \&TUWF::XML::html; + *VNDB::Util::LayoutHTML::html = sub { lit q|<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">|; @@ -444,7 +445,7 @@ sub htmlRGHeader { 'xmlns:xlink' => 'http://www.w3.org/1999/xlink'; }; $self->htmlHeader(title => $title); - *YAWF::XML::html = $sub; + *VNDB::Util::LayoutHTML::html = $sub; $self->htmlMainTabs($type, $obj, 'rg'); return 0; } diff --git a/lib/VNDB/Util/FormHTML.pm b/lib/VNDB/Util/FormHTML.pm index 41ee0ccc..57ec5b58 100644 --- a/lib/VNDB/Util/FormHTML.pm +++ b/lib/VNDB/Util/FormHTML.pm @@ -3,7 +3,7 @@ package VNDB::Util::FormHTML; use strict; use warnings; -use YAWF ':html'; +use TUWF ':html'; use Exporter 'import'; use POSIX 'strftime'; use VNDB::Func; @@ -227,7 +227,9 @@ sub htmlForm { input type => 'checkbox', name => 'ilock', id => 'ilock', value => 1, $options->{frm}{ilock} ? (checked => 'checked') : (); label for => 'ilock', mt '_form_ilock'; } - txt "\n".mt('_form_hidlock_note')."\n" if $self->authCan('lock') || $self->authCan('del'); + if($self->authCan('lock') || $self->authCan('del')) { + br; txt mt('_form_hidlock_note'); br; + } # edit summary (my $txt = $options->{frm}{editsum}||'') =~ s/&/&/; diff --git a/lib/VNDB/Util/LayoutHTML.pm b/lib/VNDB/Util/LayoutHTML.pm index cc34b874..fe5f0679 100644 --- a/lib/VNDB/Util/LayoutHTML.pm +++ b/lib/VNDB/Util/LayoutHTML.pm @@ -3,7 +3,7 @@ package VNDB::Util::LayoutHTML; use strict; use warnings; -use YAWF ':html'; +use TUWF ':html'; use Exporter 'import'; use VNDB::Func; @@ -143,7 +143,8 @@ sub htmlFooter { # %options => { prefs => [pref1,..] } if($q && $q->{vid}) { lit '"'; a href => "/v$q->{vid}", style => 'text-decoration: none', $q->{quote}; - txt qq|"\n|; + txt '"'; + br; } txt "vndb $self->{version} | "; @@ -174,7 +175,7 @@ sub htmlFooter { # %options => { prefs => [pref1,..] } # write the SQL queries as a HTML comment when debugging is enabled if($self->debug) { lit "\n<!--\n SQL Queries:\n"; - for (@{$self->{_YAWF}{DB}{queries}}) { + for (@{$self->{_TUWF}{DB}{queries}}) { my $q = !ref $_->[0] ? $_->[0] : $_->[0][0].(exists $_->[0][1] ? ' | "'.join('", "', map defined()?$_:'NULL', @{$_->[0]}[1..$#{$_->[0]}]).'"' : ''); $q =~ s/^\s//g; diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm index c64ffe6f..f4f02b57 100644 --- a/lib/VNDB/Util/Misc.pm +++ b/lib/VNDB/Util/Misc.pm @@ -57,7 +57,7 @@ sub filFetchDB { # throwing 500's even for non-browse pages. We have to do some low-level # PostgreSQL stuff with savepoints to ensure that an error won't affect our # existing transaction. - my $dbh = $self->{_YAWF}{DB}{sql}; + my $dbh = $self->dbh; $dbh->pg_savepoint('filter'); my($r, $np); my $OK = eval { diff --git a/util/jsgen.pl b/util/jsgen.pl index 58b0ac9a..75a77504 100755 --- a/util/jsgen.pl +++ b/util/jsgen.pl @@ -13,7 +13,6 @@ BEGIN { ($ROOT = abs_path $0) =~ s{/util/jsgen\.pl$}{}; } require $ROOT.'/data/global.pl'; use lib "$ROOT/lib"; -use lib "$ROOT/yawf/lib"; use LangFile; # The VNDB::L10N module is not really suited to be used outside the VNDB::* diff --git a/util/vndb.pl b/util/vndb.pl index 0fd6e08d..790a17a3 100755 --- a/util/vndb.pl +++ b/util/vndb.pl @@ -12,11 +12,10 @@ our $ROOT; BEGIN { ($ROOT = abs_path $0) =~ s{/util/vndb\.pl$}{}; } -use lib $ROOT.'/yawf/lib'; use lib $ROOT.'/lib'; -use YAWF ':html'; +use TUWF ':html'; use VNDB::L10N; use SkinFile; @@ -42,13 +41,22 @@ require $ROOT.'/data/global.pl'; system "make -sC $ROOT" if $S{regen_static}; -YAWF::init( +$TUWF::OBJ->{$_} = $S{$_} for (keys %S); +TUWF::set( %O, - namespace => 'VNDB', - object_data => \%S, pre_request_handler => \&reqinit, error_404_handler => \&handle404, + # for compatibility with YAWF + validate_templates => { + mail => { regex => qr/^[^@<>]+@[^@.<>]+(?:\.[^@.<>]+)+$/ }, + url => { regex => qr/^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/ }, + asciiprint => { regex => qr/^[\x20-\x7E]*$/ }, + int => { regex => qr/^-?\d+$/ }, + pname => { regex => qr/^[a-z0-9-]*$/ }, + }, ); +TUWF::load_recursive('VNDB::Util', 'VNDB::DB', 'VNDB::Handler'); +TUWF::run(); sub reqinit { @@ -93,12 +101,15 @@ sub reqinit { if($self->reqHeader('User-Agent') && $self->reqHeader('User-Agent') =~ /MSIE [67]/ && !$self->reqCookie('ie-sucks') && $self->reqPath ne 'we-dont-like-ie') { # act as if we're opening /we-dont-like-ie6 (ugly hack, until YAWF supports preventing URL handlers from firing) + # TODO: TUWF has support for this, use it $ENV{HTTP_REFERER} = $ENV{REQUEST_URI}; $ENV{REQUEST_URI} = '/we-dont-like-ie'; } # load some stats (used for about all pageviews, anyway) $self->{stats} = $self->dbStats; + + return 1; } @@ -110,8 +121,11 @@ sub handle404 { h1 'Page not found'; div class => 'warning'; h2 'Oops!'; - p "It seems the page you were looking for does not exist,\n". - "you may want to try using the menu on your left to find what you are looking for."; + p; + txt 'It seems the page you were looking for does not exist,'; + br; + txt 'you may want to try using the menu on your left to find what you are looking for.'; + end; end; end; $self->htmlFooter; diff --git a/yawf b/yawf deleted file mode 160000 -Subproject d7f850931451bf11538fea70b0dac212be346fc |