diff --git a/app/assets/javascripts/discourse/models/composer.js b/app/assets/javascripts/discourse/models/composer.js
index bb42dc704..bb33e6456 100644
--- a/app/assets/javascripts/discourse/models/composer.js
+++ b/app/assets/javascripts/discourse/models/composer.js
@@ -328,7 +328,7 @@ Discourse.Composer = Discourse.Model.extend({
}
this.setProperties({
- categoryId: opts.categoryId || this.get('topic.category.id'),
+ categoryName: opts.categoryName || this.get('topic.category.name'),
archetypeId: opts.archetypeId || Discourse.Site.currentProp('default_archetype'),
metaData: opts.metaData ? Em.Object.create(opts.metaData) : null,
reply: opts.reply || this.get("reply") || ""
@@ -398,9 +398,16 @@ Discourse.Composer = Discourse.Model.extend({
var topic = this.get('topic');
topic.setProperties({
title: this.get('title'),
- fancy_title: this.get('title'),
- category_id: parseInt(this.get('categoryId'), 10)
+ fancy_title: this.get('title')
});
+
+ var category = Discourse.Category.list().findProperty('name', this.get('categoryName'));
+ if (category) {
+ topic.setProperties({
+ categoryName: category.get('name'),
+ category_id: category.get('id')
+ });
+ }
topic.save();
}
@@ -440,7 +447,7 @@ Discourse.Composer = Discourse.Model.extend({
var createdPost = Discourse.Post.create({
raw: this.get('reply'),
title: this.get('title'),
- category: this.get('categoryId'),
+ category: this.get('categoryName'),
topic_id: this.get('topic.id'),
reply_to_post_number: post ? post.get('post_number') : null,
imageSizes: opts.imageSizes,
@@ -537,7 +544,7 @@ Discourse.Composer = Discourse.Model.extend({
reply: this.get('reply'),
action: this.get('action'),
title: this.get('title'),
- categoryId: this.get('categoryId'),
+ categoryName: this.get('categoryName'),
postId: this.get('post.id'),
archetypeId: this.get('archetypeId'),
metaData: this.get('metaData'),
diff --git a/app/assets/javascripts/discourse/templates/composer.js.handlebars b/app/assets/javascripts/discourse/templates/composer.js.handlebars
index 4cd705ff4..3064aeebf 100644
--- a/app/assets/javascripts/discourse/templates/composer.js.handlebars
+++ b/app/assets/javascripts/discourse/templates/composer.js.handlebars
@@ -46,7 +46,7 @@
{{#unless model.creatingPrivateMessage}}
- {{categoryChooser valueAttribute="id" value=model.categoryId}}
+ {{categoryChooser valueAttribute="name" value=model.categoryName}}
{{popupInputTip validation=view.categoryValidation shownAt=view.showCategoryTip}}
{{#if model.archetype.hasOptions}}
diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb
index 42d0e9127..f11e4a341 100644
--- a/lib/topic_creator.rb
+++ b/lib/topic_creator.rb
@@ -39,14 +39,7 @@ class TopicCreator
topic_params[:archetype] = @opts[:archetype] if @opts[:archetype].present?
topic_params[:subtype] = @opts[:subtype] if @opts[:subtype].present?
- # Temporary fix to allow older clients to create topics.
- # When all clients are updated the category variable should
- # be set directly to the contents of the if statement.
- category = if @opts[:category].is_a? Integer || @opts[:category] =~ /^\d+$/
- Category.where(id: @opts[:category]).first
- else
- Category.where(name: @opts[:category]).first
- end
+ category = Category.where(name: @opts[:category]).first
@guardian.ensure_can_create!(Topic,category)
topic_params[:category_id] = category.id if category.present?
diff --git a/spec/components/post_creator_spec.rb b/spec/components/post_creator_spec.rb
index 528367c01..767e1ca13 100644
--- a/spec/components/post_creator_spec.rb
+++ b/spec/components/post_creator_spec.rb
@@ -17,7 +17,7 @@ describe PostCreator do
let(:image_sizes) { {'http://an.image.host/image.jpg' => {"width" => 111, "height" => 222}} }
let(:creator) { PostCreator.new(user, basic_topic_params) }
- let(:creator_with_category) { PostCreator.new(user, basic_topic_params.merge(category: category.id )) }
+ let(:creator_with_category) { PostCreator.new(user, basic_topic_params.merge(category: category.name )) }
let(:creator_with_meta_data) { PostCreator.new(user, basic_topic_params.merge(meta_data: {hello: "world"} )) }
let(:creator_with_image_sizes) { PostCreator.new(user, basic_topic_params.merge(image_sizes: image_sizes)) }
@@ -75,7 +75,7 @@ describe PostCreator do
reply = nil
messages = MessageBus.track_publish do
- created_post = PostCreator.new(admin, basic_topic_params.merge(category: cat.id)).create
+ created_post = PostCreator.new(admin, basic_topic_params.merge(category: cat.name)).create
reply = PostCreator.new(admin, raw: "this is my test reply 123 testing", topic_id: created_post.topic_id).create
end
diff --git a/spec/models/category_featured_topic_spec.rb b/spec/models/category_featured_topic_spec.rb
index 28119a786..bde98f0ee 100644
--- a/spec/models/category_featured_topic_spec.rb
+++ b/spec/models/category_featured_topic_spec.rb
@@ -8,7 +8,7 @@ describe CategoryFeaturedTopic do
context 'feature_topics_for' do
let(:user) { Fabricate(:user) }
let(:category) { Fabricate(:category) }
- let!(:category_post) { PostCreator.create(user, raw: "I put this post in the category", title: "categorize THIS", category: category.id) }
+ let!(:category_post) { PostCreator.create(user, raw: "I put this post in the category", title: "categorize THIS", category: category.name) }
it "should feature topics for a secure category" do
@@ -26,7 +26,7 @@ describe CategoryFeaturedTopic do
end
it 'should not include invisible topics' do
- invisible_post = PostCreator.create(user, raw: "Don't look at this post because it's awful.", title: "not visible to anyone", category: category.id)
+ invisible_post = PostCreator.create(user, raw: "Don't look at this post because it's awful.", title: "not visible to anyone", category: category.name)
invisible_post.topic.update_status('visible', false, Fabricate(:admin))
CategoryFeaturedTopic.feature_topics_for(category)
CategoryFeaturedTopic.count.should == 1