diff options
author | Yorhel <git@yorhel.nl> | 2021-11-07 15:44:55 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2021-11-07 15:45:03 +0100 |
commit | 8c1fcdb94b46373c4e9c8d533e645edf6aba6f7a (patch) | |
tree | 63a08451cec8be2741e609d82157032364881bc7 /lib/VNWeb/Discussions | |
parent | 1ed63d7ba7b9d22300d15828dce142c2d5d1c15d (diff) |
Add mod option to set deletion reason for forum posts
Diffstat (limited to 'lib/VNWeb/Discussions')
-rw-r--r-- | lib/VNWeb/Discussions/PostEdit.pm | 4 | ||||
-rw-r--r-- | lib/VNWeb/Discussions/Search.pm | 2 | ||||
-rw-r--r-- | lib/VNWeb/Discussions/Thread.pm | 13 | ||||
-rw-r--r-- | lib/VNWeb/Discussions/UPosts.pm | 8 |
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); |