summaryrefslogtreecommitdiff
path: root/lib/VNWeb/Reviews/VNTab.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNWeb/Reviews/VNTab.pm')
-rw-r--r--lib/VNWeb/Reviews/VNTab.pm84
1 files changed, 45 insertions, 39 deletions
diff --git a/lib/VNWeb/Reviews/VNTab.pm b/lib/VNWeb/Reviews/VNTab.pm
index 796193b1..c0e6cbbb 100644
--- a/lib/VNWeb/Reviews/VNTab.pm
+++ b/lib/VNWeb/Reviews/VNTab.pm
@@ -9,69 +9,75 @@ sub reviews_ {
# TODO: Better order, pagination, option to show flagged reviews
my $lst = tuwf->dbAlli(
- 'SELECT r.id, r.rid, r.text, r.spoiler, r.c_count, r.c_up, r.c_down, uv.vote, rv.vote AS my, COALESCE(rv.overrule,false) AS overrule, NOT r.isfull AND rm.id IS NULL AS can
+ 'SELECT r.id, r.rid, r.modnote, r.text, r.spoiler, r.c_count, r.c_up, r.c_down, uv.vote, rv.vote AS my
+ , COALESCE(rv.overrule,false) AS overrule, NOT r.isfull AND rm.id IS NULL AS can
, ', sql_totime('r.date'), 'AS date, ', sql_user(), '
FROM reviews r
LEFT JOIN users u ON r.uid = u.id
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_votes rv ON rv.id = r.id AND', auth ? ('rv.uid =', \auth->uid) : ('rv.ip =', \norm_ip tuwf->reqIP), '
LEFT JOIN reviews rm ON rm.vid = r.vid AND rm.uid =', \auth->uid, '
WhERE NOT r.c_flagged AND r.vid =', \$v->{id}, 'AND', ($mini ? 'NOT' : ''), 'r.isfull
ORDER BY r.c_up-r.c_down DESC'
);
return if !@$lst;
- div_ class => 'mainbox', sub {
+ article_ sub {
h1_ $mini ? 'Mini reviews' : 'Full reviews';
debug_ $lst;
- div_ class => 'reviews', sub {
- article_ class => 'reviewbox', sub {
- my $r = $_;
- div_ sub {
- span_ sub { txt_ 'By '; user_ $r; txt_ ' on '.fmtdate $r->{date}, 'compact' };
- a_ href => "/r$r->{rid}", "r$r->{rid}" if $r->{rid};
- span_ "Vote: ".fmtvote($r->{vote}) if $r->{vote};
+ };
+ div_ class => 'reviews', sub {
+ article_ sub {
+ my $r = $_;
+ div_ sub {
+ span_ sub {
+ txt_ 'By '; user_ $r; txt_ ' on '.fmtdate $r->{date}, 'compact';
+ small_ ' contains spoilers' if $r->{spoiler} && (auth->pref('spoilers')||0) == 2;
};
- div_ sub {
- span_ sub {
- txt_ '<';
- if(can_edit w => $r) {
- a_ href => "/$r->{id}/edit", 'edit';
- txt_ ' - ';
- }
- a_ href => "/report/$r->{id}", 'report';
- txt_ '>';
- };
- my $html = reviews_format $r, maxlength => $mini ? undef : 700;
- $html .= '...' if !$mini;
- if($r->{spoiler}) {
- label_ class => 'review_spoil', sub {
- input_ type => 'checkbox', class => 'visuallyhidden', (auth->pref('spoilers')||0) == 2 ? ('checked', 'checked') : (), undef;
- div_ sub { lit_ $html };
- span_ class => 'fake_link', 'This review contains spoilers, click to view.';
- }
- } else {
- lit_ $html;
+ a_ href => "/$r->{rid}", $r->{rid} if $r->{rid};
+ span_ "Vote: ".fmtvote($r->{vote}) if $r->{vote};
+ };
+ div_ sub {
+ p_ sub { lit_ bb_format $r->{modnote} } if $r->{modnote};
+ };
+ div_ sub {
+ span_ sub {
+ txt_ '<';
+ if(can_edit w => $r) {
+ a_ href => "/$r->{id}/edit", 'edit';
+ txt_ ' - ';
}
+ a_ href => "/report/$r->{id}", 'report';
+ txt_ '>';
};
- div_ sub {
- a_ href => "/$r->{id}#review", 'Full review »' if !$mini;
- a_ href => "/$r->{id}#threadstart", $r->{c_count} == 1 ? '1 comment' : "$r->{c_count} comments";
- reviews_vote_ $r;
- };
- } for @$lst;
- }
+ my $html = reviews_format $r, maxlength => $mini ? undef : 700;
+ $html .= xml_string sub { txt_ '... '; a_ href => "/$r->{id}#review", ' Read more »' } if !$mini;
+ if($r->{spoiler}) {
+ label_ class => 'review_spoil', sub {
+ input_ type => 'checkbox', class => 'hidden', (auth->pref('spoilers')||0) == 2 ? ('checked', 'checked') : (), undef;
+ div_ sub { lit_ $html };
+ span_ class => 'fake_link', 'This review contains spoilers, click to view.';
+ }
+ } else {
+ lit_ $html;
+ }
+ };
+ div_ sub {
+ a_ href => "/$r->{id}#threadstart", $r->{c_count} == 1 ? '1 comment' : "$r->{c_count} comments";
+ reviews_vote_ $r;
+ };
+ } for @$lst;
};
}
TUWF::get qr{/$RE{vid}/(?<mini>mini|full)?reviews}, sub {
my $mini = !tuwf->capture('mini') ? undef : tuwf->capture('mini') eq 'mini' ? 1 : 0;
- my $v = db_entry v => tuwf->capture('id');
+ my $v = db_entry tuwf->capture('id');
return tuwf->resNotFound if !$v;
VNWeb::VN::Page::enrich_vn($v);
- framework_ title => ($mini?'Mini reviews':'Reviews')." for $v->{title}", index => 1, type => 'v', dbobj => $v, hiddenmsg => 1,
+ framework_ title => ($mini?'Mini reviews':'Reviews')." for $v->{title}[1]", index => 1, dbobj => $v, hiddenmsg => 1,
sub {
VNWeb::VN::Page::infobox_($v);
VNWeb::VN::Page::tabs_($v, !defined $mini ? 'reviews' : $mini ? 'minireviews' : 'fullreviews');