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'}}
- {{input type="text" name="name" value=name}} + {{input type="text" name="name" value=name disabled=readOnly}}
- {{#if controller.showDisplayName}} -
- {{i18n admin.badges.display_name}} - {{displayName}} -
+ {{#if showDisplayName}} +
+ {{i18n admin.badges.display_name}} + {{displayName}} +
{{/if}}
@@ -38,7 +38,8 @@ {{view Ember.Select name="badge_type_id" value=badge_type_id content=controller.badgeTypes optionValuePath="content.id" - optionLabelPath="content.name"}} + optionLabelPath="content.name" + disabled=readOnly}}
@@ -50,18 +51,20 @@ {{/if}}
-
- - {{input type="checkbox" checked=allow_title}} - {{i18n admin.badges.allow_title}} - -
+ {{#unless readOnly}} +
+ + {{input type="checkbox" checked=allow_title}} + {{i18n admin.badges.allow_title}} + +
-
- - {{savingStatus}} - {{i18n admin.badges.delete}} -
+
+ + {{savingStatus}} + {{i18n admin.badges.delete}} +
+ {{/unless}}
{{/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({}));