diff --git a/src/controllers/challenges.js b/src/controllers/challenges.js
index f65ca481ef..95fc79e172 100644
--- a/src/controllers/challenges.js
+++ b/src/controllers/challenges.js
@@ -156,7 +156,7 @@ api.create = function(req, res){
var challenge = new Challenge(req.body); // FIXME sanitize
challenge.save(function(err, saved){
if (err) return res.json(500, {err:err});
- Group.findByIdAndUpdate(saved.group, {$addToSet:{challenges:saved._id}}) // fixme error-check, and also better to do in middleware?
+ Group.update({_id:saved.group}, {$addToSet:{challenges:saved._id}}) // fixme error-check, and also better to do in middleware?
res.json(saved);
});
});
diff --git a/src/controllers/groups.js b/src/controllers/groups.js
index f0abfc11b1..2c61c65e88 100644
--- a/src/controllers/groups.js
+++ b/src/controllers/groups.js
@@ -19,6 +19,7 @@ var api = module.exports;
var itemFields = 'items.armor items.head items.shield items.weapon items.currentPet';
var partyFields = 'profile preferences stats achievements party backer flags.rest auth.timestamps ' + itemFields;
var nameFields = 'profile.name';
+var challengeFields = '_id name';
api.getMember = function(req, res) {
User.findById(req.params.uid).select(partyFields).exec(function(err, user){
@@ -106,18 +107,25 @@ api.get = function(req, res) {
// This will be called for the header, we need extra members' details than usuals
if (gid == 'party') {
Group.findOne({type: 'party', members: {'$in': [user._id]}})
- .populate('members invites', partyFields).exec(function(err, group){
+ .populate('members', partyFields)
+ .populate('invites', nameFields)
+ .populate('challenges', challengeFields)
+ .exec(function(err, group){
if (err) return res.json(500,{err:err});
res.json(group);
});
} else {
- Group.findById(gid).populate('members invites', nameFields).exec(function(err, group){
- if ( (group.type == 'guild' && group.privacy == 'private') || group.type == 'party') {
- if(!_.find(group.members, {_id: user._id}))
- return res.json(401, {err: "You don't have access to this group"});
- }
- res.json(group);
- })
+ Group.findById(gid)
+ .populate('members', partyFields)
+ .populate('invites', nameFields)
+ .populate('challenges', challengeFields)
+ .exec(function(err, group){
+ if ( (group.type == 'guild' && group.privacy == 'private') || group.type == 'party') {
+ if(!_.find(group.members, {_id: user._id}))
+ return res.json(401, {err: "You don't have access to this group"});
+ }
+ res.json(group);
+ });
}
};
diff --git a/src/models/group.js b/src/models/group.js
index bf2227ce0d..a124f62dd5 100644
--- a/src/models/group.js
+++ b/src/models/group.js
@@ -31,7 +31,7 @@ var GroupSchema = new Schema({
balance: Number,
logo: String,
leaderMessage: String,
- challenges: [{type:'String', ref:'Challenge'}]
+ challenges: [{type:'String', ref:'Challenge'}] // do we need this? could depend on back-ref instead (Challenge.find({group:GID}))
}, {
strict: 'throw',
minimize: false // So empty objects are returned
diff --git a/views/options/social/group.jade b/views/options/social/group.jade
index a9bfd58ff5..0be372b97a 100644
--- a/views/options/social/group.jade
+++ b/views/options/social/group.jade
@@ -84,17 +84,19 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
.modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;')
.modal-header
- h3 Challenges
+ h3
+ | Challenges
+ a.pull-right(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58')
+ i.icon-question-sign
.modal-body
- a(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58') Details
- div(ng-show='group.challenges')
+ div(ng-if='group.challenges')
table.table.table-striped
tr(ng-repeat='challenge in group.challenges')
td
- | {{challenge.name}}
+ a(ui-sref='options.social.challenges.detail({cid:challenge._id})') {{challenge.name}}
p.
Visit the Challenges for more information.
- div(ng-hid='group.challenges')
+ div(ng-if='!group.challenges')
p.
No challenges yet, visit the Challenges tab to create one.