From a4461022a3777d1be1acde97b65c9a2701abdc38 Mon Sep 17 00:00:00 2001 From: Vikhyat Korrapati Date: Wed, 19 Mar 2014 09:48:04 +0530 Subject: [PATCH 1/2] Move badges admin tab to after users, show only if enabled. --- .../javascripts/admin/controllers/admin_controller.js | 6 +++++- app/assets/javascripts/admin/templates/admin.js.handlebars | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin_controller.js b/app/assets/javascripts/admin/controllers/admin_controller.js index 9bb77a9aae3..c78b14ee06f 100644 --- a/app/assets/javascripts/admin/controllers/admin_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_controller.js @@ -6,4 +6,8 @@ @namespace Discourse @module Discourse **/ -Discourse.AdminController = Discourse.Controller.extend({}); +Discourse.AdminController = Discourse.Controller.extend({ + showBadges: function() { + return this.get('currentUser.admin') && Discourse.SiteSettings.enable_badges; + }.property() +}); diff --git a/app/assets/javascripts/admin/templates/admin.js.handlebars b/app/assets/javascripts/admin/templates/admin.js.handlebars index 43f18b5e2c1..930c697b605 100644 --- a/app/assets/javascripts/admin/templates/admin.js.handlebars +++ b/app/assets/javascripts/admin/templates/admin.js.handlebars @@ -14,6 +14,9 @@
  • {{#link-to 'adminSiteContents'}}{{i18n admin.site_content.title}}{{/link-to}}
  • {{/if}}
  • {{#link-to 'adminUsersList'}}{{i18n admin.users.title}}{{/link-to}}
  • + {{#if showBadges}} +
  • {{#link-to 'admin.badges'}}{{i18n admin.badges.title}}{{/link-to}}
  • + {{/if}} {{#if currentUser.admin}}
  • {{#link-to 'admin.groups'}}{{i18n admin.groups.title}}{{/link-to}}
  • {{/if}} @@ -24,7 +27,6 @@
  • {{#link-to 'admin.customize'}}{{i18n admin.customize.title}}{{/link-to}}
  • {{#link-to 'admin.api'}}{{i18n admin.api.title}}{{/link-to}}
  • {{#link-to 'admin.backups'}}{{i18n admin.backups.title}}{{/link-to}}
  • -
  • {{#link-to 'admin.badges'}}{{i18n admin.badges.title}}{{/link-to}}
  • {{/if}} From 89d3835d642d268dde957eb9c584c1c1f8ac99fc Mon Sep 17 00:00:00 2001 From: Vikhyat Korrapati Date: Wed, 19 Mar 2014 10:43:38 +0530 Subject: [PATCH 2/2] Badge creation UI improvements. --- .../controllers/admin_badges_controller.js | 16 +++++++++++----- .../admin/templates/badges.js.handlebars | 7 ++++--- .../javascripts/discourse/models/badge.js | 7 +++++++ .../stylesheets/common/admin/admin_base.scss | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/admin/controllers/admin_badges_controller.js b/app/assets/javascripts/admin/controllers/admin_badges_controller.js index 705aad55385..1cf2615ad61 100644 --- a/app/assets/javascripts/admin/controllers/admin_badges_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_badges_controller.js @@ -26,6 +26,14 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({ **/ canEditDescription: Em.computed.none('selectedItem.translatedDescription'), + /** + Disable saving if the currently selected item is being saved. + + @property disableSave + @type {Boolean} + **/ + disableSave: Em.computed.alias('selectedItem.saving'), + actions: { /** @@ -57,11 +65,9 @@ Discourse.AdminBadgesController = Ember.ArrayController.extend({ @method save **/ save: function() { - var badge = this.get('selectedItem'); - badge.set('disableSave', true); - badge.save().then(function() { - badge.set('disableSave', false); - }); + if (!this.get('disableSave')) { + this.get('selectedItem').save(); + } }, /** diff --git a/app/assets/javascripts/admin/templates/badges.js.handlebars b/app/assets/javascripts/admin/templates/badges.js.handlebars index ff39e74181b..e11ba2ff73b 100644 --- a/app/assets/javascripts/admin/templates/badges.js.handlebars +++ b/app/assets/javascripts/admin/templates/badges.js.handlebars @@ -8,7 +8,7 @@ {{displayName}} {{#if newBadge}} - (*) + ({{i18n filters.new.lower_title}}) {{/if}} @@ -19,7 +19,7 @@ {{#if selectedItem}} {{#with selectedItem}} -
    +
    @@ -51,7 +51,8 @@
    - + + {{savingStatus}} {{i18n admin.badges.delete}}
    diff --git a/app/assets/javascripts/discourse/models/badge.js b/app/assets/javascripts/discourse/models/badge.js index 0845892eb12..3a4ad3b8753 100644 --- a/app/assets/javascripts/discourse/models/badge.js +++ b/app/assets/javascripts/discourse/models/badge.js @@ -79,14 +79,19 @@ Discourse.Badge = Discourse.Model.extend({ @returns {Promise} A promise that resolves to the updated `Discourse.Badge` **/ save: function() { + this.set('savingStatus', I18n.t('saving')); + this.set('saving', true); + var url = "/admin/badges", requestType = "POST", self = this; + if (!this.get('newBadge')) { // We are updating an existing badge. url += "/" + this.get('id'); requestType = "PUT"; } + return Discourse.ajax(url, { type: requestType, data: { @@ -96,6 +101,8 @@ Discourse.Badge = Discourse.Model.extend({ } }).then(function(json) { self.updateFromJson(json); + self.set('savingStatus', I18n.t('saved')); + self.set('saving', false); return self; }); }, diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 7a69efcd8eb..932612e1000 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -306,6 +306,25 @@ section.details { margin-left: 15px; margin-top: 5px; } + + input, textarea, select { + width: 350px; + } + + textarea { + height: 200px; + } + } + + .buttons { + float: left; + width: 200px; + .saving { + padding: 5px 0 0 0; + margin-left: 10px; + width: 80px; + color: $secondary_text_color; + } } }