diff --git a/app/assets/javascripts/admin/controllers/admin_badge_controller.js b/app/assets/javascripts/admin/controllers/admin_badge_controller.js
index d45f280d1e..cdc06cfe74 100644
--- a/app/assets/javascripts/admin/controllers/admin_badge_controller.js
+++ b/app/assets/javascripts/admin/controllers/admin_badge_controller.js
@@ -15,5 +15,21 @@ Discourse.AdminBadgeController = Discourse.ObjectController.extend({
@property selected
@type {Boolean}
**/
- selected: Discourse.computed.propertyEqual('model.name', 'parentController.selectedItem.name')
+ selected: Discourse.computed.propertyEqual('model.name', 'parentController.selectedItem.name'),
+
+ /**
+ Show the displayName only if it is different from the name.
+
+ @property showDisplayName
+ @type {Boolean}
+ **/
+ showDisplayName: Discourse.computed.propertyNotEqual('selectedItem.name', 'selectedItem.displayName'),
+
+ /**
+ Don't allow editing if this is a system badge.
+
+ @property readOnly
+ @type {Boolean}
+ **/
+ readOnly: Ember.computed.lt('model.id', 100)
});
diff --git a/app/assets/javascripts/admin/controllers/admin_badges_controller.js b/app/assets/javascripts/admin/controllers/admin_badges_controller.js
index 1cf2615ad6..c41479ca5b 100644
--- a/app/assets/javascripts/admin/controllers/admin_badges_controller.js
+++ b/app/assets/javascripts/admin/controllers/admin_badges_controller.js
@@ -10,16 +10,8 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({
itemController: 'adminBadge',
/**
- Show the displayName only if it is different from the name.
-
- @property showDisplayName
- @type {Boolean}
- **/
- showDisplayName: Discourse.computed.propertyNotEqual('selectedItem.name', 'selectedItem.displayName'),
-
- /**
- We don't allow setting a description if a translation for the given badge name
- exists.
+ We don't allow setting a description if a translation for the given badge
+ name exists.
@property canEditDescription
@type {Boolean}
diff --git a/app/assets/javascripts/admin/routes/admin_badges_route.js b/app/assets/javascripts/admin/routes/admin_badges_route.js
index 39b2f97e84..1c606b5578 100644
--- a/app/assets/javascripts/admin/routes/admin_badges_route.js
+++ b/app/assets/javascripts/admin/routes/admin_badges_route.js
@@ -1,11 +1,7 @@
Discourse.AdminBadgesRoute = Discourse.Route.extend({
model: function() {
- return Discourse.Badge.findAll().then(function(badges) {
- return badges.filter(function(badge) {
- return badge.id >= 100;
- });
- });
+ return Discourse.Badge.findAll();
},
setupController: function(controller, model) {
diff --git a/app/assets/javascripts/admin/templates/badges.js.handlebars b/app/assets/javascripts/admin/templates/badges.js.handlebars
index 1ecdfe977b..e888b2d896 100644
--- a/app/assets/javascripts/admin/templates/badges.js.handlebars
+++ b/app/assets/javascripts/admin/templates/badges.js.handlebars
@@ -18,19 +18,19 @@
{{#if selectedItem}}
- {{#with selectedItem}}
+ {{#with selectedItem controller='adminBadge'}}
{{/with}}
diff --git a/test/javascripts/admin/controllers/admin_badges_controller_test.js b/test/javascripts/admin/controllers/admin_badges_controller_test.js
index 532c8cb362..f310d78527 100644
--- a/test/javascripts/admin/controllers/admin_badges_controller_test.js
+++ b/test/javascripts/admin/controllers/admin_badges_controller_test.js
@@ -1,30 +1,15 @@
module("Discourse.AdminBadgesController");
-test("showDisplayName", function() {
- var badge, controller;
-
- badge = Discourse.Badge.create({name: "Test Badge"});
- controller = testController(Discourse.AdminBadgesController, [badge]);
- controller.send('selectBadge', badge);
- ok(!controller.get('showDisplayName'), "does not show displayName when it is the same as the name");
-
- this.stub(I18n, "t").returns("translated string");
- badge = Discourse.Badge.create({name: "Test Badge"});
- controller = testController(Discourse.AdminBadgesController, [badge]);
- controller.send('selectBadge', badge);
- ok(controller.get('showDisplayName'), "shows the displayName when it is different from the name");
-});
-
test("canEditDescription", function() {
var badge, controller;
- badge = Discourse.Badge.create({name: "Test Badge"});
+ badge = Discourse.Badge.create({id: 101, name: "Test Badge"});
controller = testController(Discourse.AdminBadgesController, [badge]);
controller.send('selectBadge', badge);
ok(controller.get('canEditDescription'), "allows editing description when a translation exists for the badge name");
this.stub(I18n, "t").returns("translated string");
- badge = Discourse.Badge.create({name: "Test Badge"});
+ badge = Discourse.Badge.create({id: 102, name: "Test Badge"});
controller = testController(Discourse.AdminBadgesController, [badge]);
controller.send('selectBadge', badge);
ok(!controller.get('canEditDescription'), "shows the displayName when it is different from the name");
@@ -38,7 +23,7 @@ test("newBadge", function() {
});
test("selectBadge", function() {
- var badge = Discourse.Badge.create({name: "Test Badge"}),
+ var badge = Discourse.Badge.create({id: 101, name: "Test Badge"}),
controller = testController(Discourse.AdminBadgesController, [badge]);
controller.send('selectBadge', badge);
@@ -46,8 +31,8 @@ test("selectBadge", function() {
});
test("save", function() {
- var badge = Discourse.Badge.create({name: "Test Badge"}),
- otherBadge = Discourse.Badge.create({name: "Other Badge"}),
+ var badge = Discourse.Badge.create({id: 101, name: "Test Badge"}),
+ otherBadge = Discourse.Badge.create({id: 102, name: "Other Badge"}),
controller = testController(Discourse.AdminBadgesController, [badge, otherBadge]);
controller.send('selectBadge', badge);
@@ -57,8 +42,8 @@ test("save", function() {
});
test("destroy", function() {
- var badge = Discourse.Badge.create({name: "Test Badge"}),
- otherBadge = Discourse.Badge.create({name: "Other Badge"}),
+ var badge = Discourse.Badge.create({id: 101, name: "Test Badge"}),
+ otherBadge = Discourse.Badge.create({id: 102, name: "Other Badge"}),
controller = testController(Discourse.AdminBadgesController, [badge, otherBadge]);
this.stub(badge, 'destroy').returns(Ember.RSVP.resolve({}));