From 8bcb7f2e61a65c680d813fac5c32be067e55878b Mon Sep 17 00:00:00 2001 From: obog Date: Fri, 13 Jan 2023 18:49:06 +0300 Subject: [PATCH 1/2] all handles of users with this role will be displayed in purple --- Topcoder/class.topcoder.plugin.php | 32 ++++++++++++++++++++++++++++++ Topcoder/design/topcoder.css | 15 +++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/Topcoder/class.topcoder.plugin.php b/Topcoder/class.topcoder.plugin.php index 631cc91..043e508 100644 --- a/Topcoder/class.topcoder.plugin.php +++ b/Topcoder/class.topcoder.plugin.php @@ -2065,6 +2065,24 @@ public static function getTopcoderUser($user) { return $topcoderUser; } + /** + * Get Topcoder User Details (PhotoUrl, Rating, IsAdmin and others) + * @param $user + * @return array|false|mixed|void + */ + public static function hasCustomerRole($user) { + $userModel = new UserModel(); + if(is_numeric($user)) { + $user = $userModel->getID($user, DATASET_TYPE_ARRAY); + } + $userID = val('UserID', $user); + + $userRoleData = $userModel->getRoles($userID)->resultArray(); + $roleNames = array_column($userRoleData, 'Name'); + $customerRoleName = c('ColorizedRole', null); + return count(array_intersect($roleNames, [$customerRoleName])) > 0; + } + private static function getTopcoderUserFromCache($userID) { if(!Gdn_Cache::activeEnabled()) { return false; @@ -2801,6 +2819,10 @@ function userAnchor($user, $cssClass = null, $options = null) { $attributes['class'] = $attributes['class'].' '. 'disabledLink' ; } + $hasRole = TopcoderPlugin::hasCustomerRole($userID); + if($hasRole) { + $attributes['class'] = $attributes['class'].' '. 'purple' ; + } Gdn::controller()->EventArguments['User'] = $user; Gdn::controller()->EventArguments['IsTopcoderAdmin'] =$isTopcoderAdmin; @@ -3042,6 +3064,16 @@ function topcoderMentionAnchor($mention, $cssClass = null, $options = null) { if($isTopcoderAdmin) { $attributes['class'] = $attributes['class'].' '. 'topcoderAdmin' ; } + + $userModel = new UserModel(); + $user = $userModel->getByUsername($handle, false); + if ($user) { + $userID = val('UserID', $user); + $hasRole = TopcoderPlugin::hasCustomerRole($userID); + if($hasRole) { + $attributes['class'] = $attributes['class'].' '. 'purple' ; + } + } return '@'.$handle.''; } } diff --git a/Topcoder/design/topcoder.css b/Topcoder/design/topcoder.css index 83cced0..a0ac25a 100644 --- a/Topcoder/design/topcoder.css +++ b/Topcoder/design/topcoder.css @@ -163,4 +163,17 @@ a:hover span.challengeRoles { .disabledLink { pointer-events:none -} \ No newline at end of file +} + +/* Customer Role */ +.purple, .purple:link, .purple:visited, .purple:hover, .purple:active{ + color: #652385 +} + +.DataList .MItem a.purple, .DataList .MItem a.purple:link, .DataList .MItem a.purple:hover, .DataList .MItem a.purple:visited, +.MessageList .ItemDiscussion .Username.purple, .MessageList .ItemDiscussion .Username.purple:hover, +.Content.MainContent .MessageList.DataList.Comments li.Item .Item-Header.CommentHeader .Username.purple, +.Flyout.Flyout a.purple, .Flyout.Flyout a.purple:link,.Flyout.Flyout a.purple:visited, .Flyout.Flyout a.purple:hover, .Flyout.Flyout a.purple:active, +.userContent p a.purple, .userContent p a.purple:link, .userContent p a.purple:visited, .userContent p a.purple:hover, .userContent p a.purple:active, +.InformMessages .InformMessage .purple, .InformMessages .InformMessage .purple:link, .InformMessages .InformMessage .purple:hover, .InformMessages .InformMessage .purple:active, .InformMessages .InformMessage .purple:visited +{ color: #652385 !important; } \ No newline at end of file From 254a3e455497e518e7311fc4a01f933f39e3a545 Mon Sep 17 00:00:00 2001 From: obog Date: Fri, 13 Jan 2023 19:11:47 +0300 Subject: [PATCH 2/2] all handles of users with this role will be displayed in purple --- Topcoder/class.topcoder.plugin.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Topcoder/class.topcoder.plugin.php b/Topcoder/class.topcoder.plugin.php index 043e508..a7a5055 100644 --- a/Topcoder/class.topcoder.plugin.php +++ b/Topcoder/class.topcoder.plugin.php @@ -2070,7 +2070,7 @@ public static function getTopcoderUser($user) { * @param $user * @return array|false|mixed|void */ - public static function hasCustomerRole($user) { + public static function hasColorizedRole($user) { $userModel = new UserModel(); if(is_numeric($user)) { $user = $userModel->getID($user, DATASET_TYPE_ARRAY); @@ -2819,7 +2819,7 @@ function userAnchor($user, $cssClass = null, $options = null) { $attributes['class'] = $attributes['class'].' '. 'disabledLink' ; } - $hasRole = TopcoderPlugin::hasCustomerRole($userID); + $hasRole = TopcoderPlugin::hasColorizedRole($userID); if($hasRole) { $attributes['class'] = $attributes['class'].' '. 'purple' ; } @@ -3069,7 +3069,7 @@ function topcoderMentionAnchor($mention, $cssClass = null, $options = null) { $user = $userModel->getByUsername($handle, false); if ($user) { $userID = val('UserID', $user); - $hasRole = TopcoderPlugin::hasCustomerRole($userID); + $hasRole = TopcoderPlugin::hasColorizedRole($userID); if($hasRole) { $attributes['class'] = $attributes['class'].' '. 'purple' ; }