Skip to content

Commit 23f2e0c

Browse files
authored
Merge pull request #120 from topcoder-platform/develop
Different username colors for client admin handles in forums
2 parents 99c0a1f + 180a75d commit 23f2e0c

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

Topcoder/class.topcoder.plugin.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2065,6 +2065,24 @@ public static function getTopcoderUser($user) {
20652065
return $topcoderUser;
20662066
}
20672067

2068+
/**
2069+
* Get Topcoder User Details (PhotoUrl, Rating, IsAdmin and others)
2070+
* @param $user
2071+
* @return array|false|mixed|void
2072+
*/
2073+
public static function hasColorizedRole($user) {
2074+
$userModel = new UserModel();
2075+
if(is_numeric($user)) {
2076+
$user = $userModel->getID($user, DATASET_TYPE_ARRAY);
2077+
}
2078+
$userID = val('UserID', $user);
2079+
2080+
$userRoleData = $userModel->getRoles($userID)->resultArray();
2081+
$roleNames = array_column($userRoleData, 'Name');
2082+
$customerRoleName = c('ColorizedRole', null);
2083+
return count(array_intersect($roleNames, [$customerRoleName])) > 0;
2084+
}
2085+
20682086
private static function getTopcoderUserFromCache($userID) {
20692087
if(!Gdn_Cache::activeEnabled()) {
20702088
return false;
@@ -2801,6 +2819,10 @@ function userAnchor($user, $cssClass = null, $options = null) {
28012819
$attributes['class'] = $attributes['class'].' '. 'disabledLink' ;
28022820
}
28032821

2822+
$hasRole = TopcoderPlugin::hasColorizedRole($userID);
2823+
if($hasRole) {
2824+
$attributes['class'] = $attributes['class'].' '. 'purple' ;
2825+
}
28042826

28052827
Gdn::controller()->EventArguments['User'] = $user;
28062828
Gdn::controller()->EventArguments['IsTopcoderAdmin'] =$isTopcoderAdmin;
@@ -3042,6 +3064,16 @@ function topcoderMentionAnchor($mention, $cssClass = null, $options = null) {
30423064
if($isTopcoderAdmin) {
30433065
$attributes['class'] = $attributes['class'].' '. 'topcoderAdmin' ;
30443066
}
3067+
3068+
$userModel = new UserModel();
3069+
$user = $userModel->getByUsername($handle, false);
3070+
if ($user) {
3071+
$userID = val('UserID', $user);
3072+
$hasRole = TopcoderPlugin::hasColorizedRole($userID);
3073+
if($hasRole) {
3074+
$attributes['class'] = $attributes['class'].' '. 'purple' ;
3075+
}
3076+
}
30453077
return '<a href="'.htmlspecialchars(url($userUrl)).'"'.attribute($attributes).'>@'.$handle.'</a>';
30463078
}
30473079
}

Topcoder/design/topcoder.css

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,17 @@ a:hover span.challengeRoles {
163163

164164
.disabledLink {
165165
pointer-events:none
166-
}
166+
}
167+
168+
/* Customer Role */
169+
.purple, .purple:link, .purple:visited, .purple:hover, .purple:active{
170+
color: #652385
171+
}
172+
173+
.DataList .MItem a.purple, .DataList .MItem a.purple:link, .DataList .MItem a.purple:hover, .DataList .MItem a.purple:visited,
174+
.MessageList .ItemDiscussion .Username.purple, .MessageList .ItemDiscussion .Username.purple:hover,
175+
.Content.MainContent .MessageList.DataList.Comments li.Item .Item-Header.CommentHeader .Username.purple,
176+
.Flyout.Flyout a.purple, .Flyout.Flyout a.purple:link,.Flyout.Flyout a.purple:visited, .Flyout.Flyout a.purple:hover, .Flyout.Flyout a.purple:active,
177+
.userContent p a.purple, .userContent p a.purple:link, .userContent p a.purple:visited, .userContent p a.purple:hover, .userContent p a.purple:active,
178+
.InformMessages .InformMessage .purple, .InformMessages .InformMessage .purple:link, .InformMessages .InformMessage .purple:hover, .InformMessages .InformMessage .purple:active, .InformMessages .InformMessage .purple:visited
179+
{ color: #652385 !important; }

0 commit comments

Comments
 (0)