summaryrefslogtreecommitdiff
path: root/lib/VNDB/Handler/Discussions.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNDB/Handler/Discussions.pm')
-rw-r--r--lib/VNDB/Handler/Discussions.pm57
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';
}
);
}