summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Discussions
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2021-11-07 15:44:55 +0100
committerYorhel <git@yorhel.nl>2021-11-07 15:45:03 +0100
commit8c1fcdb94b46373c4e9c8d533e645edf6aba6f7a (patch)
tree63a08451cec8be2741e609d82157032364881bc7 /lib/VNWeb/Discussions
parent1ed63d7ba7b9d22300d15828dce142c2d5d1c15d (diff)
Add mod option to set deletion reason for forum posts
Diffstat (limited to 'lib/VNWeb/Discussions')
-rw-r--r--lib/VNWeb/Discussions/PostEdit.pm4
-rw-r--r--lib/VNWeb/Discussions/Search.pm2
-rw-r--r--lib/VNWeb/Discussions/Thread.pm13
-rw-r--r--lib/VNWeb/Discussions/UPosts.pm8
4 files changed, 15 insertions, 12 deletions
diff --git a/lib/VNWeb/Discussions/PostEdit.pm b/lib/VNWeb/Discussions/PostEdit.pm
index e740c029..42cd60bc 100644
--- a/lib/VNWeb/Discussions/PostEdit.pm
+++ b/lib/VNWeb/Discussions/PostEdit.pm
@@ -10,7 +10,7 @@ my $FORM = {
num => { id => 1 },
can_mod => { anybool => 1, _when => 'out' },
- hidden => { anybool => 1 }, # When can_mod
+ hidden => { required => 0 }, # When can_mod
nolastmod => { anybool => 1, _when => 'in' }, # When can_mod
delete => { anybool => 1 }, # When can_mod
@@ -44,7 +44,7 @@ elm_api DiscussionsPostEdit => $FORM_OUT, $FORM_IN, sub {
return tuwf->resNotFound if !$t->{id};
return elm_Unauth if !can_edit t => $t;
- tuwf->dbExeci(q{DELETE FROM notifications WHERE iid =}, \$id, 'AND num =', \$num) if auth->permBoardmod && ($data->{delete} || $data->{hidden});
+ tuwf->dbExeci(q{DELETE FROM notifications WHERE iid =}, \$id, 'AND num =', \$num) if auth->permBoardmod && ($data->{delete} || defined $data->{hidden});
if($data->{delete} && auth->permBoardmod) {
auth->audit($t->{user_id}, 'post delete', "deleted $id.$num");
diff --git a/lib/VNWeb/Discussions/Search.pm b/lib/VNWeb/Discussions/Search.pm
index 3922e4e4..1925dc8a 100644
--- a/lib/VNWeb/Discussions/Search.pm
+++ b/lib/VNWeb/Discussions/Search.pm
@@ -78,7 +78,7 @@ sub posts_ {
FROM threads_posts tp
JOIN threads t ON t.id = tp.tid
LEFT JOIN users u ON u.id = tp.uid
- WHERE NOT t.hidden AND NOT t.private AND NOT tp.hidden
+ WHERE NOT t.hidden AND NOT t.private AND tp.hidden IS NULL
AND bb_tsvector(tp.msg) @@ to_tsquery(}, \$ts, ')',
$filt->{b}->@* < keys %BOARD_TYPE ? ('AND t.id IN(SELECT tid FROM threads_boards WHERE type IN', $filt->{b}, ')') : (), q{
ORDER BY tp.date DESC
diff --git a/lib/VNWeb/Discussions/Thread.pm b/lib/VNWeb/Discussions/Thread.pm
index 26cfcff8..84ce9977 100644
--- a/lib/VNWeb/Discussions/Thread.pm
+++ b/lib/VNWeb/Discussions/Thread.pm
@@ -102,10 +102,10 @@ sub posts_ {
paginate_ \&url, $page, [ $t->{count}, 25 ], 't';
div_ class => 'mainbox thread', id => 'threadstart', sub {
table_ class => 'stripe', sub {
- tr_ mkclass(deleted => $_->{hidden}), id => $_->{num}, sub {
+ tr_ mkclass(deleted => defined $_->{hidden}), id => $_->{num}, sub {
td_ class => 'tc1', $_ == $posts->[$#$posts] ? (id => 'last') : (), sub {
a_ href => "/$t->{id}.$_->{num}", "#$_->{num}";
- if(!$_->{hidden} || auth->permBoard) {
+ if(!defined $_->{hidden} || auth->permBoard) {
txt_ ' by ';
user_ $_;
br_;
@@ -121,9 +121,12 @@ sub posts_ {
}
a_ href => "/report/$t->{id}.$_->{num}", 'report';
txt_ ' >';
- } if !$_->{hidden} || can_edit t => $_;
- if($_->{hidden}) {
- i_ class => 'deleted', 'Post deleted.';
+ } if !defined $_->{hidden} || can_edit t => $_;
+ if(defined $_->{hidden}) {
+ i_ class => 'deleted', sub {
+ txt_ 'Post deleted';
+ lit_ length $_->{hidden} ? ': '.bb_format $_->{hidden}, inline => 1 : '.';
+ };
} else {
lit_ bb_format $_->{msg};
i_ class => 'lastmod', 'Last modified on '.fmtdate($_->{edited}, 'full') if $_->{edited};
diff --git a/lib/VNWeb/Discussions/UPosts.pm b/lib/VNWeb/Discussions/UPosts.pm
index ff21a056..a8cb437c 100644
--- a/lib/VNWeb/Discussions/UPosts.pm
+++ b/lib/VNWeb/Discussions/UPosts.pm
@@ -41,16 +41,16 @@ TUWF::get qr{/$RE{uid}/posts}, sub {
my $page = tuwf->validate(get => p => { upage => 1 })->data;
my $sql = sql '(
- SELECT tp.tid, tp.num, tp.msg, t.title, tp.date, t.hidden OR tp.hidden
+ SELECT tp.tid, tp.num, tp.msg, t.title, tp.date, t.hidden OR tp.hidden IS NOT NULL
FROM threads_posts tp
JOIN threads t ON t.id = tp.tid
- WHERE tp.uid =', \$u->{id}, 'AND NOT t.private', auth->permBoardmod ? () : 'AND NOT t.hidden AND NOT tp.hidden', '
+ WHERE tp.uid =', \$u->{id}, 'AND NOT t.private', auth->permBoardmod ? () : 'AND NOT t.hidden AND tp.hidden IS NULL', '
UNION ALL
- SELECT rp.id, rp.num, rp.msg, v.title, rp.date, rp.hidden
+ SELECT rp.id, rp.num, rp.msg, v.title, rp.date, rp.hidden IS NOT NULL
FROM reviews_posts rp
JOIN reviews r ON r.id = rp.id
JOIN vn v ON v.id = r.vid
- WHERE rp.uid =', \$u->{id}, auth->permBoardmod ? () : 'AND NOT rp.hidden', '
+ WHERE rp.uid =', \$u->{id}, auth->permBoardmod ? () : 'AND rp.hidden IS NULL', '
) p(id,num,msg,title,date,hidden)';
my $count = tuwf->dbVali('SELECT count(*) FROM', $sql);