From bf951689e8a3c58c0c37c8f08a6fbe56bae56979 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 3 Feb 2014 15:09:35 -0500 Subject: [PATCH] FIX: Don't allow moving a category with children underneath another category (creating grandchildren) --- .../discourse/controllers/edit_category_controller.js | 5 +++++ .../discourse/helpers/application_helpers.js | 6 ++++++ .../templates/modal/edit_category.js.handlebars | 11 +++++++++-- config/locales/client.en.yml | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/edit_category_controller.js b/app/assets/javascripts/discourse/controllers/edit_category_controller.js index 25107c0b9..68b0ffeab 100644 --- a/app/assets/javascripts/discourse/controllers/edit_category_controller.js +++ b/app/assets/javascripts/discourse/controllers/edit_category_controller.js @@ -20,6 +20,11 @@ Discourse.EditCategoryController = Discourse.ObjectController.extend(Discourse.M }); }.property(), + // We can change the parent if there are no children + subCategories: function() { + return Discourse.Category.list().filterBy('parent_category_id', this.get('id')); + }.property('model.id'), + onShow: function() { this.changeSize(); this.titleChanged(); diff --git a/app/assets/javascripts/discourse/helpers/application_helpers.js b/app/assets/javascripts/discourse/helpers/application_helpers.js index da487600c..732f67654 100644 --- a/app/assets/javascripts/discourse/helpers/application_helpers.js +++ b/app/assets/javascripts/discourse/helpers/application_helpers.js @@ -73,6 +73,12 @@ Handlebars.registerHelper('categoryLinkRaw', function(property, options) { return categoryLinkHTML(property, options); }); +Handlebars.registerHelper('categoryBadge', function(property, options) { + var category = Em.Handlebars.get(this, property, options), + style = Discourse.HTML.categoryStyle(category); + return new Handlebars.SafeString("" + category.get('name') + ""); +}); + /** Produces a bound link to a category diff --git a/app/assets/javascripts/discourse/templates/modal/edit_category.js.handlebars b/app/assets/javascripts/discourse/templates/modal/edit_category.js.handlebars index 5671def4f..df18f0de9 100644 --- a/app/assets/javascripts/discourse/templates/modal/edit_category.js.handlebars +++ b/app/assets/javascripts/discourse/templates/modal/edit_category.js.handlebars @@ -22,8 +22,15 @@
- - {{categoryChooser valueAttribute="id" value=parent_category_id categories=parentCategories}} + {{#if subCategories}} + + {{#each subCategories}} + {{categoryBadge this}} + {{/each}} + {{else}} + + {{categoryChooser valueAttribute="id" value=parent_category_id categories=parentCategories}} + {{/if}}
{{#unless isUncategorized}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 0cecfb68a..56deab2f1 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -196,7 +196,7 @@ en: latest: "Latest" latest_by: "latest by" toggle_ordering: "toggle ordering control" - subcategories: "Subcategories:" + subcategories: "Subcategories" topic_stats: "The number of new topics." topic_stat_sentence: one: "%{count} new topic in the past %{unit}."