diff --git a/public/css/game-pane.styl b/public/css/game-pane.styl index 0a60fa1f9d..086e922734 100644 --- a/public/css/game-pane.styl +++ b/public/css/game-pane.styl @@ -26,15 +26,28 @@ label margin-right:5px - .label-elite - background-color: #077409 - color: black - .label-champion - background-color: #125BA2 - color: white - .label-royal - background-color: #7313B4 - color: white + .own-message + border-left: 4px solid #333 + padding-left: 2px + +// Name tags +.label-contributor-1, .label-contributor-2 + background-color: #333; +.label-contributor-3, .label-contributor-4 + background-color: #077409 + color: white +.label-contributor-5, .label-contributor-6 + background-color: #125BA2 + color: white +.label-contributor-7 + background-color: #7313B4 + color: white +.label-contributor-8 + background-color: #ff8000 + color: white +.label-npc + background-color: indianred + color: white #market-tab position relative diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index dddb4ac628..ec0afc3475 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -96,7 +96,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A } $scope.deleteChatMessage = function(group, message){ - if(message.uuid === User.user.id || (User.user.backer && User.user.backer.admin)){ + if(message.uuid === User.user.id || (User.user.backer && User.user.contributor.admin)){ Groups.Group.deleteChatMessage({gid: group._id, messageId: message.id}, undefined, function(){ var i = _.indexOf(group.chat, message); if(i !== -1) group.chat.splice(i, 1); @@ -108,22 +108,6 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A group.$get(); } - $scope.nameTagClasses = function(message){ - if (!message) return; // fixme what's triggering this? - if (message.contributor) { - if (message.contributor.match(/npc/i) || message.contributor.match(/royal/i)) { - return 'label-royal'; - } else if (message.contributor.match(/champion/i)) { - return 'label-champion'; - } else if (message.contributor.match(/elite/i)) { - return 'label-success'; //elite - } - } - if (message.uuid == User.user.id) { - return 'label-inverse'; //self - } - } - }]) .controller("GuildsCtrl", ['$scope', 'Groups', 'User', '$rootScope', '$state', '$location', diff --git a/public/js/controllers/rootCtrl.js b/public/js/controllers/rootCtrl.js index bf8ce25de4..eab96974a5 100644 --- a/public/js/controllers/rootCtrl.js +++ b/public/js/controllers/rootCtrl.js @@ -75,6 +75,16 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$ }); } + $scope.contribText = function(contrib, backer){ + if (!contrib && !backer) return; + if (backer && backer.npc) return backer.npc; + var l = contrib && contrib.level; + if (l && l > 0) { + var level = (l < 3) ? 'Friend' : (l < 5) ? 'Elite' : (l < 7) ? 'Champion' : (l < 8) ? 'Legendary' : 'Heroic'; + return level + ' ' + contrib.text; + } + } + $rootScope.charts = {}; $rootScope.toggleChart = function(id, task) { var history = [], matrix, data, chart, options; diff --git a/src/controllers/groups.js b/src/controllers/groups.js index 88c286bac5..4fd3db2ab6 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -220,8 +220,8 @@ api.postChat = function(req, res, next) { var message = { id: helpers.uuid(), uuid: user._id, - contributor: user.backer && user.backer.contributor, - npc: user.backer && user.backer.npc, + contributor: user.contributor && user.contributor.toObject(), + backer: user.backer && user.backer.toObject(), text: req.query.message, // FIXME this should be body, but ngResource is funky user: user.profile.name, timestamp: +(new Date) @@ -237,7 +237,6 @@ api.postChat = function(req, res, next) { group.save(function(err, saved){ if (err) return res.json(500, {err:err}); - res.json({chat: saved.chat}); }); } @@ -249,7 +248,7 @@ api.deleteChatMessage = function(req, res){ if(!message) return res.json(404, {err: "Message not found!"}); - if(user._id !== message.uuid && !(user.backer && user.backer.admin)) + if(user._id !== message.uuid && !(user.backer && user.contributor.admin)) return res.json(401, {err: "Not authorized to delete this message!"}) Group.update({_id:group._id}, {$pull:{chat:{id: req.params.messageId}}}, function(err){ diff --git a/views/options/social/chat-message.jade b/views/options/social/chat-message.jade index af57fc283d..f1f70b729d 100644 --- a/views/options/social/chat-message.jade +++ b/views/options/social/chat-message.jade @@ -1,10 +1,10 @@ -li(ng-repeat='message in group.chat', ng-class='{highlight: indexOf(message.text, user.profile.name)}') - a.label.chat-message(class='{{nameTagClasses(message)}}', tooltip='{{message.contributor}}', ng-click='clickMember(message.uuid, true)') - | {{message.user}} - span - span(ng-bind-html="message.text | linky:'_blank'") - - span +li(ng-repeat='message in group.chat', ng-class='{highlight: indexOf(message.text, user.profile.name), "own-message": user._id == message.uuid}') + a.label.chat-message(class='label-contributor-{{message.contributor.level}}', ng-class='{"label-npc": message.backer.npc}', ng-click='clickMember(message.uuid, true)') + span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}  + |   + span(ng-bind-html="message.text | linky:'_blank'") + |  -  span.muted.time | {{relativeDate(message.timestamp, _currentTime) + ' '}} - a(ng-show='user.backer.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)') + a(ng-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)') i.icon-remove(tooltip='Delete') diff --git a/views/shared/modals/members.jade b/views/shared/modals/members.jade index 715dc295d7..98e33c1458 100644 --- a/views/shared/modals/members.jade +++ b/views/shared/modals/members.jade @@ -3,7 +3,7 @@ div(ng-controller='MemberModalCtrl') .modal-header h3 span {{profile.profile.name}} - span(ng-show='profile.backer.contributor') - {{profile.backer.contributor}} + span(ng-if='profile.contributor.level') - {{contribText(profile.contributor, profile.backer)}} .modal-body .row-fluid .span6 diff --git a/views/shared/profiles/achievements.jade b/views/shared/profiles/achievements.jade index e85f222929..94ace40920 100644 --- a/views/shared/profiles/achievements.jade +++ b/views/shared/profiles/achievements.jade @@ -16,16 +16,16 @@ div(ng-if='profile.backer.npc') .achievement.achievement-helm h5 - span.label.label-master {{profile.backer.npc}} NPC + span.label.label-npc {{profile.backer.npc}} NPC small Backed the Kickstarter project at the maximum level! hr - div(ng-if='profile.backer.contributor || user._id == profile._id') - .achievement.achievement-firefox(ng-show='profile.backer.contributor') - div(ng-class='{muted: !profile.backer.contributor}') + div(ng-if='profile.contributor.level || user._id == profile._id') + .achievement.achievement-firefox(ng-if='profile.contributor.level') + div(ng-class='{muted: !profile.contributor.level}') h5 - span.label.label-inverse(ng-if='profile.backer.contributor') {{profile.backer.contributor}} - span.label(ng-if='!profile.backer.contributor') Contributor + span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}} + span.label(ng-if='!profile.contributor.level') Contributor small. Has contributed to HabitRPG (code, design, pixel art, legal advice, docs, etc). Want this badge? Fix a bug :) hr