summaryrefslogtreecommitdiff
path: root/lib/VNWeb/HTML.pm
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2019-10-08 18:16:46 +0200
committerYorhel <git@yorhel.nl>2019-10-10 16:40:30 +0200
commitb3a9130763879d60c0e413c724a759860bd396af (patch)
tree2de6f9d21d4ce9f00fc11595906570be43d8ae5c /lib/VNWeb/HTML.pm
parent4c1dfc8bb62171c4c21057c47f238c8747bac3f8 (diff)
rewards: Apply supporters badge and unicode name (almost) everywhere
Only place where this isn't applied (yet?): Sorting user lists still goes by the old username and board names don't use the new unicode names. I have to say, I quite like the sql_user() and user_() pattern. It's not without problems when applied to everything, but it's good enough for several use cases.
Diffstat (limited to 'lib/VNWeb/HTML.pm')
-rw-r--r--lib/VNWeb/HTML.pm42
1 files changed, 31 insertions, 11 deletions
diff --git a/lib/VNWeb/HTML.pm b/lib/VNWeb/HTML.pm
index 8d99f43a..893bbe2b 100644
--- a/lib/VNWeb/HTML.pm
+++ b/lib/VNWeb/HTML.pm
@@ -21,7 +21,7 @@ our @EXPORT = qw/
clearfloat_
debug_
join_
- user_
+ user_ user_displayname
elm_
framework_
revision_
@@ -56,11 +56,32 @@ sub join_($&@) {
}
-# Display a user link.
+# Display a user link, the given object must have the columns as fetched using DB::sql_user().
+# Args: $object, $prefix
sub user_ {
- my($uid, $username) = @_;
- return lit_ '[deleted]' if !$uid;
- a_ href => "/u$uid", $username;
+ my $obj = shift;
+ my $prefix = shift||'user_';
+ my sub f($) { $obj->{"${prefix}$_[0]"} }
+
+ return lit_ '[deleted]' if !f 'id';
+ my $fancy = !(auth->pref('nodistract_can') && auth->pref('nodistract_nofancy'));
+ my $uniname = f 'uniname_can' && f 'uniname';
+ a_ href => '/u'.f('id'),
+ $fancy && $uniname ? (title => f('name'), $uniname) :
+ (!$fancy && $uniname ? (title => $uniname) : (), f 'name');
+ txt_ '⭐' if $fancy && f 'support_can' && f 'support_enabled';
+}
+
+
+# Similar to user_(), but just returns a string. Mainly for use in titles.
+sub user_displayname {
+ my $obj = shift;
+ my $prefix = shift||'user_';
+ my sub f($) { $obj->{"${prefix}$_[0]"} }
+
+ return '[deleted]' if !f 'id';
+ my $fancy = !(auth->pref('nodistract_can') && auth->pref('nodistract_nofancy'));
+ $fancy && f 'uniname_can' && f 'uniname' ? f 'uniname' : f 'name'
}
@@ -160,7 +181,7 @@ sub _menu_ {
div_ class => 'menubox', sub {
my $uid = sprintf '/u%d', auth->uid;
my $nc = auth && tuwf->dbVali('SELECT count(*) FROM notifications WHERE uid =', \auth->uid, 'AND read IS NULL');
- h2_ sub { a_ href => $uid, ucfirst auth->username };
+ h2_ sub { user_ auth->user };
div_ sub {
a_ href => "$uid/edit", 'My Profile'; br_;
a_ href => "$uid/list", 'My Visual Novel List'; br_;
@@ -377,15 +398,15 @@ sub _revision_header_ {
if(auth) {
lit_ ' (';
a_ href => "/$type$obj->{id}.$obj->{chrev}/edit", $obj->{chrev} == $obj->{maxrev} ? 'edit' : 'revert to';
- if($obj->{rev_requester}) {
+ if($obj->{rev_user_id}) {
lit_ ' / ';
- a_ href => "/t/u$obj->{rev_requester}/new?title=Regarding%20$type$obj->{id}.$obj->{chrev}", 'msg user';
+ a_ href => "/t/u$obj->{rev_user_id}/new?title=Regarding%20$type$obj->{id}.$obj->{chrev}", 'msg user';
}
lit_ ')';
}
br_;
lit_ 'By ';
- user_ @{$obj}{'rev_requester', 'rev_username'};
+ user_ $obj, 'rev_user_';
lit_ ' on ';
txt_ fmtdate $obj->{rev_added}, 'full';
}
@@ -540,8 +561,7 @@ sub revision_ {
$enrich->($old) if $old;
enrich_merge chid => sql(
- 'SELECT c.id AS chid, c.comments as rev_comments,', sql_totime('c.added'), 'as rev_added
- , c.requester as rev_requester, u.username as rev_username
+ 'SELECT c.id AS chid, c.comments as rev_comments,', sql_totime('c.added'), 'as rev_added, ', sql_user('u', 'rev_user_'), '
FROM changes c LEFT JOIN users u ON u.id = c.requester
WHERE c.id IN'),
$new, $old||();