Properly assign draft keys to Categories List view.

This commit is contained in:
Robin Ward
2013-05-28 21:15:30 -04:00
parent 33d3f1fdd1
commit 92dc59fba9
6 changed files with 44 additions and 16 deletions

View File

@@ -38,9 +38,14 @@ Discourse.ListController = Discourse.Controller.extend({
if (filterMode === 'categories') { if (filterMode === 'categories') {
return Discourse.CategoryList.list(filterMode).then(function(items) { return Discourse.CategoryList.list(filterMode).then(function(items) {
listController.set('loading', false); listController.setProperties({
listController.set('filterMode', filterMode); loading: false,
listController.set('categoryMode', true); filterMode: filterMode,
categoryMode: true,
draft: items.draft,
draft_key: items.draft_key,
draft_sequence: items.draft_sequence
});
return items; return items;
}); });
} }
@@ -49,10 +54,16 @@ Discourse.ListController = Discourse.Controller.extend({
if (!current) { if (!current) {
current = Discourse.NavItem.create({ name: filterMode }); current = Discourse.NavItem.create({ name: filterMode });
} }
return Discourse.TopicList.list(current).then(function(items) { return Discourse.TopicList.list(current).then(function(items) {
listController.set('filterSummary', items.filter_summary); listController.setProperties({
listController.set('filterMode', filterMode); loading: false,
listController.set('loading', false); filterSummary: items.filter_summary,
filterMode: filterMode,
draft: items.draft,
draft_key: items.draft_key,
draft_sequence: items.draft_sequence
})
return items; return items;
}); });
}, },
@@ -72,13 +83,12 @@ Discourse.ListController = Discourse.Controller.extend({
// Create topic button // Create topic button
createTopic: function() { createTopic: function() {
var topicList = this.get('controllers.listTopics.content');
if (!topicList) return;
this.get('controllers.composer').open({ this.get('controllers.composer').open({
categoryName: this.get('category.name'), categoryName: this.get('category.name'),
action: Discourse.Composer.CREATE_TOPIC, action: Discourse.Composer.CREATE_TOPIC,
draftKey: topicList.get('draft_key'), draft: this.get('draft'),
draftSequence: topicList.get('draft_sequence') draftKey: this.get('draft_key'),
draftSequence: this.get('draft_sequence')
}); });
}, },

View File

@@ -57,10 +57,13 @@ Discourse.CategoryList.reopenClass({
return finder.then(function(result) { return finder.then(function(result) {
var categoryList = Discourse.TopicList.create(); var categoryList = Discourse.TopicList.create();
categoryList.set('can_create_category', result.category_list.can_create_category); categoryList.setProperties({
categoryList.set('can_create_topic', result.category_list.can_create_topic); can_create_category: result.category_list.can_create_category,
categoryList.set('categories', route.categoriesFrom(result)); can_create_topic: result.category_list.can_create_topic,
categoryList.set('loaded', true); categories: route.categoriesFrom(result),
draft_key: result.category_list.draft_key,
draft_sequence: result.category_list.draft_sequence
})
return categoryList; return categoryList;
}); });
} }

View File

@@ -22,6 +22,7 @@ Discourse.ListCategoriesRoute = Discourse.Route.extend({
setupController: function(controller, categoryList) { setupController: function(controller, categoryList) {
this.render('listCategories', { into: 'list', outlet: 'listView' }); this.render('listCategories', { into: 'list', outlet: 'listView' });
this.controllerFor('list').setProperties({ this.controllerFor('list').setProperties({
canCreateCategory: categoryList.get('can_create_category'), canCreateCategory: categoryList.get('can_create_category'),
canCreateTopic: categoryList.get('can_create_topic'), canCreateTopic: categoryList.get('can_create_topic'),

View File

@@ -8,6 +8,11 @@ class CategoriesController < ApplicationController
def index def index
@list = CategoryList.new(guardian) @list = CategoryList.new(guardian)
@list.draft_key = Draft::NEW_TOPIC
@list.draft_sequence = DraftSequence.current(current_user, Draft::NEW_TOPIC)
@list.draft = Draft.get(current_user, @list.draft_key, @list.draft_sequence) if current_user
discourse_expires_in 1.minute discourse_expires_in 1.minute
store_preloaded("categories_list", MultiJson.dump(CategoryListSerializer.new(@list, scope: guardian))) store_preloaded("categories_list", MultiJson.dump(CategoryListSerializer.new(@list, scope: guardian)))

View File

@@ -1,7 +1,12 @@
class CategoryList class CategoryList
include ActiveModel::Serialization include ActiveModel::Serialization
attr_accessor :categories, :topic_users, :uncategorized attr_accessor :categories,
:topic_users,
:uncategorized,
:draft,
:draft_key,
:draft_sequence
def initialize(guardian=nil) def initialize(guardian=nil)
@guardian = guardian || Guardian.new @guardian = guardian || Guardian.new

View File

@@ -1,6 +1,10 @@
class CategoryListSerializer < ApplicationSerializer class CategoryListSerializer < ApplicationSerializer
attributes :can_create_category, :can_create_topic attributes :can_create_category,
:can_create_topic,
:draft,
:draft_key,
:draft_sequence
has_many :categories, serializer: CategoryDetailedSerializer, embed: :objects has_many :categories, serializer: CategoryDetailedSerializer, embed: :objects