diff options
Diffstat (limited to 'lib/VNDB/Handler/Discussions.pm')
-rw-r--r-- | lib/VNDB/Handler/Discussions.pm | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/lib/VNDB/Handler/Discussions.pm b/lib/VNDB/Handler/Discussions.pm index 0b5daa6c..6f6cb385 100644 --- a/lib/VNDB/Handler/Discussions.pm +++ b/lib/VNDB/Handler/Discussions.pm @@ -3,15 +3,15 @@ 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, + qr{t/(all|db|an|ge|[vpu])([1-9]\d*)?} => \&board, qr{t([1-9]\d*)/reply} => \&edit, qr{t([1-9]\d*)\.([1-9]\d*)/edit} => \&edit, qr{t/(db|an|ge|[vpu])([1-9]\d*)?/new} => \&edit, @@ -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'; @@ -46,7 +46,7 @@ sub thread { end; } end; - end; + end 'div'; $self->htmlBrowseNavigate("/t$tid/", $page, [ $t->{count}, 25 ], 't', 1); div class => 'mainbox thread'; @@ -82,7 +82,7 @@ sub thread { end; } end; - end; + end 'div'; $self->htmlBrowseNavigate("/t$tid/", $page, [ $t->{count}, 25 ], 'b', 1); if($t->{locked}) { @@ -105,7 +105,7 @@ sub thread { input type => 'submit', value => mt('_thread_quickreply_full'), class => 'submit', name => 'fullreply'; end; end; - end; + end 'form'; } elsif(!$self->authCan('board')) { div class => 'mainbox'; h1 mt '_thread_noreply_title'; @@ -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,23 +270,23 @@ 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|all)/ && $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; + my $title = !$obj ? mt($type eq 'all' ? '_disboard_item_all' : "_dboard_$type") : mt '_disboard_item_title', $ititle; my($list, $np) = $self->dbThreadGet( - type => $type, + $type ne 'all' ? (type => $type) : (), $iid ? (iid => $iid) : (), results => 50, page => $f->{p}, @@ -302,7 +302,7 @@ sub board { p; a href => '/t', mt '_disboard_rootlink'; txt ' > '; - a href => "/t/$type", mt "_dboard_$type"; + a href => "/t/$type", mt $type eq 'all' ? '_disboard_item_all' : "_dboard_$type"; if($iid) { txt ' > '; a style => 'font-weight: bold', href => "/t/$type$iid", "$type$iid"; @@ -316,10 +316,10 @@ sub board { br; br; a href => "/t/$type$iid/new", mt '_disboard_createyourown'; } else { - a href => '/t/'.($iid ? $type.$iid : $type ne 'ge' ? 'db' : $type).'/new', mt '_disboard_startnew'; + a href => '/t/'.($iid ? $type.$iid : $type ne 'ge' ? 'db' : $type).'/new', mt '_disboard_startnew' if $type ne 'all'; } end; - end; + end 'div'; _threadlist($self, $list, $f, $np, "/t/$type$iid", $type.$iid) if @$list; @@ -334,6 +334,7 @@ sub index { div class => 'mainbox'; h1 mt '_disindex_title'; p class => 'browseopts'; + a href => '/t/all', mt '_disboard_item_all'; a href => '/t/'.$_, mt "_dboard_$_" for (@{$self->{discussion_boards}}); end; @@ -400,7 +401,7 @@ sub _threadlist { lit $self->{l10n}->date($o->{ldate}); end; end; - end; + end 'tr'; } ); } |