diff options
author | Yorhel <git@yorhel.nl> | 2020-08-31 12:00:32 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2020-08-31 12:00:32 +0200 |
commit | 16547941c340ba21566e358d8d9541c8e59fffac (patch) | |
tree | a8d649b6a6eec55e511246851792548bc1d33865 | |
parent | 152e7ec465525b294cb88ee46ffc3aec0930509c (diff) |
Reviews in public beta: public visibility but allow only one review per user
-rw-r--r-- | lib/VNWeb/Reviews/Edit.pm | 1 | ||||
-rw-r--r-- | lib/VNWeb/Reviews/List.pm | 2 | ||||
-rw-r--r-- | lib/VNWeb/Reviews/Page.pm | 1 | ||||
-rw-r--r-- | lib/VNWeb/Reviews/VNTab.pm | 6 | ||||
-rw-r--r-- | lib/VNWeb/VN/Page.pm | 4 |
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 ||= ''; |