Multiple grant badges.

This commit is contained in:
Vikhyat Korrapati
2014-05-21 12:52:42 +05:30
parent a25087b62a
commit d208e4d517
24 changed files with 137 additions and 36 deletions

View File

@@ -9,14 +9,27 @@
Discourse.AdminBadgesController = Ember.ArrayController.extend({
itemController: 'adminBadge',
queryParams: ['badgeId'],
badgeId: Em.computed.alias('selectedId'),
/**
ID of the currently selected badge.
@property badgeId
@property selectedId
@type {Integer}
**/
badgeId: Em.computed.alias('selectedItem.id'),
selectedId: null,
/**
Badge that is currently selected.
@property selectedItem
@type {Discourse.Badge}
**/
selectedItem: function() {
var selectedId = parseInt(this.get('selectedId'));
return this.get('model').filter(function(badge) {
return badge.get('id') === selectedId;
})[0];
}.property('selectedId'),
/**
We don't allow setting a description if a translation for the given badge
@@ -57,7 +70,7 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({
@param {Discourse.Badge} badge The badge to be selected
**/
selectBadge: function(badge) {
this.set('selectedItem', badge);
this.set('selectedId', badge.get('id'));
},
/**
@@ -80,7 +93,7 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({
// Delete immediately if the selected badge is new.
if (!this.get('selectedItem.id')) {
this.get('model').removeObject(this.get('selectedItem'));
this.set('selectedItem', null);
this.set('selectedId', null);
return;
}
@@ -90,7 +103,7 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({
var selected = self.get('selectedItem');
selected.destroy().then(function() {
// Success.
self.set('selectedItem', null);
self.set('selectedId', null);
self.get('model').removeObject(selected);
}, function() {
// Failure.

View File

@@ -27,7 +27,7 @@ Discourse.AdminUserBadgesController = Ember.ArrayController.extend({
var badges = [];
this.get('badges').forEach(function(badge) {
if (!granted[badge.get('id')]) {
if (badge.get('multiple_grant') || !granted[badge.get('id')]) {
badges.push(badge);
}
});