From 4626519cdc1fcbf8620c080cde255122fd579652 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 28 Jan 2014 14:44:26 -0500 Subject: [PATCH] Use an `itemController` for topic lists. This will make bulk operations easier. --- .../discovery_topics_controller.js | 4 ---- .../controllers/topic_list_item_controller.js | 21 +++++++++++++++++++ .../templates/discovery/topics.js.handlebars | 2 +- .../list/topic_list_item.js.handlebars | 10 ++++----- 4 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/discourse/controllers/topic_list_item_controller.js diff --git a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js index a3873ffdd47..a9d4a0e1af7 100644 --- a/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js +++ b/app/assets/javascripts/discourse/controllers/discovery_topics_controller.js @@ -8,10 +8,6 @@ **/ Discourse.DiscoveryTopicsController = Discourse.DiscoveryController.extend({ actions: { - // Star a topic - toggleStar: function(topic) { - topic.toggleStar(); - }, // Show newly inserted topics showInserted: function() { diff --git a/app/assets/javascripts/discourse/controllers/topic_list_item_controller.js b/app/assets/javascripts/discourse/controllers/topic_list_item_controller.js new file mode 100644 index 00000000000..487a42507a0 --- /dev/null +++ b/app/assets/javascripts/discourse/controllers/topic_list_item_controller.js @@ -0,0 +1,21 @@ +/** + Handles displaying of a topic as a list item + + @class TopicListItemController + @extends Discourse.ObjectController + @namespace Discourse + @module Discourse +**/ +Discourse.TopicListItemController = Ember.ObjectController.extend({ + needs: ['discoveryTopics'], + + canStar: Em.computed.alias('controllers.discoveryTopics.currentUser.id'), + hideCategory: Em.computed.alias('controllers.discoveryTopics.hideCategory'), + + actions: { + toggleStar: function() { + this.get('model').toggleStar(); + } + } +}); + diff --git a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars index 80a3a037dca..def3ba0d619 100644 --- a/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars +++ b/app/assets/javascripts/discourse/templates/discovery/topics.js.handlebars @@ -45,7 +45,7 @@ {{/if}} - {{collection contentBinding="topics" tagName="tbody" itemViewClass="Discourse.TopicListItemView"}} + {{each topics itemController="topicListItem" itemViewClass="Discourse.TopicListItemView"}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars b/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars index ca9d6ae98df..8d4585db040 100644 --- a/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars +++ b/app/assets/javascripts/discourse/templates/list/topic_list_item.js.handlebars @@ -1,6 +1,6 @@ -{{#if controller.currentUser.id}} +{{#if canStar}} - + {{/if}} @@ -30,10 +30,8 @@ {{/if}} -{{#unless controller.hideCategory}} - - {{categoryLink category}} - +{{#unless hideCategory}} +{{categoryLink category}} {{/unless}}