summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2020-08-31 12:00:32 +0200
committerYorhel <git@yorhel.nl>2020-08-31 12:00:32 +0200
commit16547941c340ba21566e358d8d9541c8e59fffac (patch)
treea8d649b6a6eec55e511246851792548bc1d33865
parent152e7ec465525b294cb88ee46ffc3aec0930509c (diff)
Reviews in public beta: public visibility but allow only one review per user
-rw-r--r--lib/VNWeb/Reviews/Edit.pm1
-rw-r--r--lib/VNWeb/Reviews/List.pm2
-rw-r--r--lib/VNWeb/Reviews/Page.pm1
-rw-r--r--lib/VNWeb/Reviews/VNTab.pm6
-rw-r--r--lib/VNWeb/VN/Page.pm4
5 files changed, 6 insertions, 8 deletions
diff --git a/lib/VNWeb/Reviews/Edit.pm b/lib/VNWeb/Reviews/Edit.pm
index 3472d790..60b72111 100644
--- a/lib/VNWeb/Reviews/Edit.pm
+++ b/lib/VNWeb/Reviews/Edit.pm
@@ -72,6 +72,7 @@ elm_api ReviewsEdit => $FORM_OUT, $FORM_IN, sub {
return elm_Unauth if tuwf->dbVali('SELECT 1 FROM reviews WHERE vid =', \$data->{vid}, 'AND uid =', \auth->uid);
$data->{uid} = auth->uid;
$id = tuwf->dbVali('INSERT INTO reviews', $data, 'RETURNING id');
+ tuwf->dbExeci('UPDATE users SET perm_review = false WHERE id =', \auth->uid) if !auth->isMod; # XXX: While in beta, 1 review per user.
}
elm_Redirect "/$id"
diff --git a/lib/VNWeb/Reviews/List.pm b/lib/VNWeb/Reviews/List.pm
index f37dc375..a9dc9b41 100644
--- a/lib/VNWeb/Reviews/List.pm
+++ b/lib/VNWeb/Reviews/List.pm
@@ -43,8 +43,6 @@ sub tablebox_ {
TUWF::get qr{/w}, sub {
- return tuwf->resNotFound if !auth->permReview; #XXX:While in beta
-
my $opt = tuwf->validate(get =>
p => { page => 1 },
s => { onerror => 'id', enum => [qw[id lastpost rating]] },
diff --git a/lib/VNWeb/Reviews/Page.pm b/lib/VNWeb/Reviews/Page.pm
index 35557c3c..cab028e4 100644
--- a/lib/VNWeb/Reviews/Page.pm
+++ b/lib/VNWeb/Reviews/Page.pm
@@ -72,7 +72,6 @@ sub review_ {
TUWF::get qr{/$RE{wid}(?:(?<sep>[\./])$RE{num})?}, sub {
- return tuwf->resNotFound if !auth->permReview; #XXX:While in beta
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_up, r.c_down, uv.vote, rm.id IS NULL AS can
diff --git a/lib/VNWeb/Reviews/VNTab.pm b/lib/VNWeb/Reviews/VNTab.pm
index b91cd2ca..cd729832 100644
--- a/lib/VNWeb/Reviews/VNTab.pm
+++ b/lib/VNWeb/Reviews/VNTab.pm
@@ -7,7 +7,7 @@ use VNWeb::Reviews::Lib;
sub reviews_ {
my($v, $mini) = @_;
- # TODO: Order, pagination
+ # TODO: Better order, pagination
my $lst = tuwf->dbAlli(
'SELECT r.id, r.rid, r.text, r.spoiler, r.c_up, r.c_down, r.c_count, uv.vote, rv.vote AS my, NOT r.isfull AND rm.id IS NULL AS can
, ', sql_totime('r.date'), 'AS date, ', sql_user(), '
@@ -16,7 +16,8 @@ sub reviews_ {
LEFT JOIN ulist_vns uv ON uv.uid = r.uid AND uv.vid = r.vid
LEFT JOIN reviews_votes rv ON rv.uid =', \auth->uid, ' AND rv.id = r.id
LEFT JOIN reviews rm ON rm.vid = r.vid AND rm.uid =', \auth->uid, '
- WhERE r.vid =', \$v->{id}, 'AND', ($mini ? 'NOT' : ''), 'r.isfull'
+ WhERE r.vid =', \$v->{id}, 'AND', ($mini ? 'NOT' : ''), 'r.isfull
+ ORDER BY r.c_up-r.c_down DESC'
);
div_ class => 'mainbox', sub {
@@ -64,7 +65,6 @@ sub reviews_ {
TUWF::get qr{/$RE{vid}/(?<mini>mini)?reviews}, sub {
- return tuwf->resNotFound if !auth->permReview; #XXX:While in beta
my $mini = !!tuwf->capture('mini');
my $v = db_entry v => tuwf->capture('id');
return tuwf->resNotFound if !$v;
diff --git a/lib/VNWeb/VN/Page.pm b/lib/VNWeb/VN/Page.pm
index 435f02c2..0692a076 100644
--- a/lib/VNWeb/VN/Page.pm
+++ b/lib/VNWeb/VN/Page.pm
@@ -319,7 +319,7 @@ sub infobox_useroptions_ {
vote => fmtvote($lst->{vote}),
notes => $lst->{notes}||'',
review => $review,
- canreview=> canvote($v) && can_edit(w => {}),
+ canreview=> $review || (canvote($v) && can_edit(w => {})),
labels => $labels,
selected => [ map $_->{id}, grep $_->{assigned}, @$labels ],
};
@@ -390,7 +390,7 @@ sub infobox_ {
sub tabs_ {
my($v, $tab) = @_;
my $chars = tuwf->dbVali('SELECT COUNT(DISTINCT c.id) FROM chars c JOIN chars_vns cv ON cv.id = c.id WHERE NOT c.hidden AND cv.vid =', \$v->{id});
- my $reviews = auth->permReview ? tuwf->dbRowi('SELECT COUNT(*) FILTER(WHERE isfull) AS full, COUNT(*) FILTER(WHERE NOT isfull) AS mini FROM reviews WHERE vid =', \$v->{id}) : {};
+ my $reviews = tuwf->dbRowi('SELECT COUNT(*) FILTER(WHERE isfull) AS full, COUNT(*) FILTER(WHERE NOT isfull) AS mini FROM reviews WHERE vid =', \$v->{id});
return if !$chars && !$reviews->{full} && !$reviews->{mini} && !auth->permEdit && !auth->permReview;
$tab ||= '';