summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-09-20 08:21:41 +0200
committerYorhel <git@yorhel.nl>2020-09-20 08:21:41 +0200
commit76181a765d26e6ddb27bdd6987ee1a436df2ff47 (patch)
tree18c0681db33ac49b80afada332e4bb9ca2bc5577 /lib
parent68c0dd38ada2e468810b8b39379356fa0fb840f5 (diff)
Reviews: Add mod option to lock reviews for comments
Diffstat (limited to 'lib')
-rw-r--r--lib/VNWeb/Reviews/Edit.pm13
-rw-r--r--lib/VNWeb/Reviews/Page.pm12
2 files changed, 18 insertions, 7 deletions
diff --git a/lib/VNWeb/Reviews/Edit.pm b/lib/VNWeb/Reviews/Edit.pm
index 34930489..a3323d62 100644
--- a/lib/VNWeb/Reviews/Edit.pm
+++ b/lib/VNWeb/Reviews/Edit.pm
@@ -12,7 +12,9 @@ my $FORM = {
spoiler => { anybool => 1 },
isfull => { anybool => 1 },
text => { maxlength => 100_000, required => 0, default => '' },
+ locked => { anybool => 1 },
+ mod => { _when => 'out', anybool => 1 },
releases => { _when => 'out', $VNWeb::Elm::apis{Releases}[0]->%* },
};
@@ -38,7 +40,9 @@ TUWF::get qr{/$RE{vid}/addreview}, sub {
p_ 'You can only submit 5 reviews per day. Check back later!';
};
} else {
- elm_ 'Reviews.Edit' => $FORM_OUT, { elm_empty($FORM_OUT)->%*, vid => $v->{id}, vntitle => $v->{title}, releases => releases_by_vn $v->{id} };
+ elm_ 'Reviews.Edit' => $FORM_OUT, { elm_empty($FORM_OUT)->%*,
+ vid => $v->{id}, vntitle => $v->{title}, releases => releases_by_vn($v->{id}), mod => auth->permBoardmod()
+ };
}
};
};
@@ -46,13 +50,14 @@ TUWF::get qr{/$RE{vid}/addreview}, sub {
TUWF::get qr{/$RE{wid}/edit}, sub {
my $e = tuwf->dbRowi(
- 'SELECT r.id, r.uid AS user_id, r.vid, r.rid, r.isfull, r.text, r.spoiler, v.title AS vntitle
+ 'SELECT r.id, r.uid AS user_id, r.vid, r.rid, r.isfull, r.text, r.spoiler, r.locked, v.title AS vntitle
FROM reviews r JOIN vn v ON v.id = r.vid WHERE r.id =', \tuwf->capture('id')
);
return tuwf->resNotFound if !$e->{id};
return tuwf->resDenied if !can_edit w => $e;
$e->{releases} = releases_by_vn $e->{vid};
+ $e->{mod} = auth->permBoardmod;
framework_ title => "Edit review for $e->{vntitle}", type => 'w', dbobj => $e, tab => 'edit', sub {
elm_ 'Reviews.Edit' => $FORM_OUT, $e;
};
@@ -64,9 +69,11 @@ elm_api ReviewsEdit => $FORM_OUT, $FORM_IN, sub {
my($data) = @_;
my $id = delete $data->{id};
- my $review = $id ? tuwf->dbRowi('SELECT id, uid AS user_id FROM reviews WHERE id =', \$id) : {};
+ my $review = $id ? tuwf->dbRowi('SELECT id, locked, uid AS user_id FROM reviews WHERE id =', \$id) : {};
return elm_Unauth if !can_edit w => $review;
+ $data->{locked} = $review->{locked}||0 if !auth->permBoardmod;
+
validate_dbid 'SELECT id FROM vn WHERE id IN', $data->{vid};
validate_dbid 'SELECT id FROM releases WHERE id IN', $data->{rid} if defined $data->{rid};
diff --git a/lib/VNWeb/Reviews/Page.pm b/lib/VNWeb/Reviews/Page.pm
index 8822b2ed..927a39f4 100644
--- a/lib/VNWeb/Reviews/Page.pm
+++ b/lib/VNWeb/Reviews/Page.pm
@@ -12,7 +12,7 @@ my $COMMENT = form_compile any => {
elm_api ReviewsComment => undef, $COMMENT, sub {
my($data) = @_;
- my $w = tuwf->dbRowi('SELECT id, false AS locked FROM reviews WHERE id =', \$data->{id});
+ my $w = tuwf->dbRowi('SELECT id, locked FROM reviews WHERE id =', \$data->{id});
return tuwf->resNotFound if !$w->{id};
return elm_Unauth if !can_edit t => $w;
@@ -51,11 +51,15 @@ sub review_ {
my($date, $lastmod) = map $_&&fmtdate($_,'compact'), $w->@{'date', 'lastmod'};
txt_ " on $date";
b_ class => 'grayedout', " last updated on $lastmod" if $lastmod && $date ne $lastmod;
+ br_ if $w->{c_flagged} || $w->{locked};
if($w->{c_flagged}) {
br_;
- br_;
b_ class => 'grayedout', 'Flagged: this review is below the voting threshold and not visible on the VN page.';
}
+ if($w->{locked}) {
+ br_;
+ b_ class => 'grayedout', 'Locked: commenting on this review has been disabled.';
+ }
}
};
tr_ class => 'reviewnotspoil', sub {
@@ -81,7 +85,7 @@ sub review_ {
TUWF::get qr{/$RE{wid}(?:(?<sep>[\./])$RE{num})?}, sub {
my($id, $sep, $num) = (tuwf->capture('id'), tuwf->capture('sep')||'', tuwf->capture('num'));
my $w = tuwf->dbRowi(
- 'SELECT r.id, r.vid, r.rid, r.isfull, r.text, r.spoiler, COALESCE(c.count,0) AS count, r.c_flagged, r.c_up, r.c_down, uv.vote, rm.id IS NULL AS can
+ 'SELECT r.id, r.vid, r.rid, r.isfull, r.text, r.spoiler, r.locked, COALESCE(c.count,0) AS count, r.c_flagged, r.c_up, r.c_down, uv.vote, rm.id IS NULL AS can
, v.title, rel.title AS rtitle, rel.original AS roriginal, rel.type AS rtype, rv.vote AS my, COALESCE(rv.overrule,false) AS overrule
, ', sql_user(), ',', sql_totime('r.date'), 'AS date,', sql_totime('r.lastmod'), 'AS lastmod
FROM reviews r
@@ -135,7 +139,7 @@ TUWF::get qr{/$RE{wid}(?:(?<sep>[\./])$RE{num})?}, sub {
} else {
div_ id => 'threadstart', '';
}
- elm_ 'Reviews.Comment' => $COMMENT, { id => $w->{id}, msg => '' } if $w->{count} <= $page*25 && can_edit t => {%$w,locked=>0};
+ elm_ 'Reviews.Comment' => $COMMENT, { id => $w->{id}, msg => '' } if $w->{count} <= $page*25 && can_edit t => $w;
};
};