From 5113ed192a46eac37f8d22872c1ed5d5d9207624 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 6 Sep 2013 21:03:44 -0400 Subject: [PATCH] add GET /groups/:gid, champ/elite/master tiers, chat sync button --- assets/css/game-pane.styl | 10 ++++++++++ assets/js/controllers/groupsCtrl.js | 19 ++++++++++++++++++- src/controllers/groups.js | 22 ++++++++++++++++++++++ src/routes/api.js | 3 +-- views/options/groups/chat-box.jade | 12 ++++++++++-- views/options/groups/chat-message.jade | 2 +- views/options/groups/group.jade | 9 +++++---- views/options/groups/tavern.jade | 2 +- 8 files changed, 68 insertions(+), 11 deletions(-) diff --git a/assets/css/game-pane.styl b/assets/css/game-pane.styl index 8e77a6bc5b..3bd8c85be9 100644 --- a/assets/css/game-pane.styl +++ b/assets/css/game-pane.styl @@ -26,6 +26,16 @@ label margin-right:5px + .label-elite + background-color: #5DF644 + color: black + .label-champion + background-color: #0070dd + color: white + .label-master + background-color: #a335ee + color: white + #market-tab position relative height 500px diff --git a/assets/js/controllers/groupsCtrl.js b/assets/js/controllers/groupsCtrl.js index 8683ab998f..7b57533d62 100644 --- a/assets/js/controllers/groupsCtrl.js +++ b/assets/js/controllers/groupsCtrl.js @@ -22,7 +22,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A } ]) - .controller('ChatCtrl', ['$scope', 'Groups', function($scope, Groups){ + .controller('ChatCtrl', ['$scope', 'Groups', 'User', function($scope, Groups, User){ $scope._chatMessage = ''; $scope.postChat = function(group, message){ if (_.isEmpty(message)) return @@ -33,6 +33,23 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A $('.chat-btn').removeClass('disabled'); }); } + $scope.sync = function(group){ + group.$get(); + } + $scope.nameTagClasses = function(message){ + if (message.contributor) { + if (message.contributor.match(/npc/i) || message.contributor.match(/master/i)) { + return 'label-master'; // master + } else if (message.contributor.match(/champion/i)) { + return 'label-champion'; // champion + } else if (message.contributor.match(/elite/i)) { + return 'label-success'; //elite + } + } + if (message.uuid == User.user.id) { + return 'label-inverse'; //self + } + } }]) diff --git a/src/controllers/groups.js b/src/controllers/groups.js index 2ca84ca675..4c17abcdd5 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -83,6 +83,28 @@ api.getGroups = function(req, res, next) { }) }; +/** + * Get group + */ +api.getGroup = function(req, res, next) { + var user = res.locals.user; + var gid = req.params.gid; + + Group.findById(gid).populate('members', partyFields).exec(function(err, group){ + if ( (group.type == 'guild' && group.privacy == 'private') || group.type == 'party') { + return res.json(401, {err: "You don't have access to this group"}); + } + // Remove self from party (see above failing `match` directive in `populate` + if (group.type == 'party') { + var i = _.findIndex(group.members, {_id:user._id}); + if (~i) group.members.splice(i,1); + } + res.json(group); + + }) +}; + + api.createGroup = function(req, res, next) { var group = new Group(req.body); group.save(function(err, saved){ diff --git a/src/routes/api.js b/src/routes/api.js index c9bb7231b4..493b39745e 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -51,8 +51,7 @@ router.post('/user/buy-gems', auth.auth, user.buyGems); /* Groups*/ router.get('/groups', auth.auth, groups.getGroups); router.post('/groups', auth.auth, groups.createGroup); -//TODO: -//GET /groups/:gid (get group) +router.get('/groups/:gid', auth.auth, groups.getGroup); //PUT /groups/:gid (edit group) //DELETE /groups/:gid diff --git a/views/options/groups/chat-box.jade b/views/options/groups/chat-box.jade index 6c20b3c62d..60d03d9211 100644 --- a/views/options/groups/chat-box.jade +++ b/views/options/groups/chat-box.jade @@ -1,6 +1,14 @@ -form(ng-controller='ChatCtrl', ng-submit='postChat(group,_chatMessage)') +form(ng-submit='postChat(group,_chatMessage)') //FIXME ng-model makes this painfully slow! using jquery for now, which is really non-angular-like //textarea.span6(rows='3', ui-keypress='{13:"postChat(group,_chatMessage)"}', ng-model='_chatMessage') textarea.span6.chat-textarea(rows='3', ui-keypress='{13:"postChat(group,_chatMessage)"}', ng-model='_chatMessage') br - input.btn.chat-btn(type='submit', value='Send Chat') + table + tr + td + input.btn.chat-btn(type='submit', value='Send Chat') + td + button.btn + i(class='pull-right icon-refresh', ng-click='sync(group)', tooltip='Fetch Recent Messages') + + diff --git a/views/options/groups/chat-message.jade b/views/options/groups/chat-message.jade index 6ec1c3ff9d..ea0beb6db1 100644 --- a/views/options/groups/chat-message.jade +++ b/views/options/groups/chat-message.jade @@ -1,5 +1,5 @@ li(ng-repeat='message in group.chat', ng-class='{highlight: message.text.indexOf(username(user.auth,user.profile.name)) != -1}') - span.label.chat-message(ng-class='{"label-success": message.npc, "label-inverse": message.contributor, "label-info": message.uuid == user.id}', tooltip='{{message.contributor}}{{message.npc}}') + span.label.chat-message(class='{{nameTagClasses(message)}}', tooltip='{{message.contributor}}{{message.npc}}') | {{message.user}} span span(ng-bind-html="message.text | linky:'_blank'") - diff --git a/views/options/groups/group.jade b/views/options/groups/group.jade index 8f5b8dec7b..2024b83ae4 100644 --- a/views/options/groups/group.jade +++ b/views/options/groups/group.jade @@ -99,8 +99,9 @@ a.pull-right.gem-wallet(rel='popover', data-trigger='hover', data-title='Guild B .arrow h3.popover-title {{username(_members[group.leader].auth,_members[group.leader].profile.name)}} .popover-content {{group.leaderMessage}} - h3 Chat - include ./chat-box + div(ng-controller='ChatCtrl') + h3 Chat + include ./chat-box - ul.unstyled.tavern-chat - include ./chat-message + ul.unstyled.tavern-chat + include ./chat-message diff --git a/views/options/groups/tavern.jade b/views/options/groups/tavern.jade index 34fc6fbdfd..3ad92c4861 100644 --- a/views/options/groups/tavern.jade +++ b/views/options/groups/tavern.jade @@ -39,7 +39,7 @@ li h4 a(target='_blank', href='http://community.habitrpg.com/forum') Community Forum - .span8 + .span8(ng-controller='ChatCtrl') h3 Tavern Talk & LFG .row-fluid .span3