From 63b221970d05d1be6aa96bcdbb4b66d1fd7217a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Thu, 2 May 2013 23:31:43 +0200 Subject: [PATCH] Add a clear pin link in the list topics view --- .../discourse/controllers/list_topics_controller.js | 5 +++++ app/assets/javascripts/discourse/models/topic.js | 10 +++++++--- .../templates/list/topic_list_item.js.handlebars | 7 +++++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/list_topics_controller.js b/app/assets/javascripts/discourse/controllers/list_topics_controller.js index 19579bd3ba0..39ebbb840b0 100644 --- a/app/assets/javascripts/discourse/controllers/list_topics_controller.js +++ b/app/assets/javascripts/discourse/controllers/list_topics_controller.js @@ -53,6 +53,11 @@ Discourse.ListTopicsController = Discourse.ObjectController.extend({ topic.toggleStar(); }, + // clear a pinned topic + clearPin: function(topic) { + topic.clearPin(); + }, + toggleRankDetails: function() { this.toggleProperty('rankDetailsVisible'); }, diff --git a/app/assets/javascripts/discourse/models/topic.js b/app/assets/javascripts/discourse/models/topic.js index 8fea17f6290..e6529bd303f 100755 --- a/app/assets/javascripts/discourse/models/topic.js +++ b/app/assets/javascripts/discourse/models/topic.js @@ -371,13 +371,17 @@ Discourse.Topic = Discourse.Model.extend({ }, hasExcerpt: function() { - return this.get('excerpt') && this.get('excerpt').length > 0; - }.property('excerpt'), + return this.get('pinned') && this.get('excerpt') && this.get('excerpt').length > 0; + }.property('pinned', 'excerpt'), excerptTruncated: function() { var e = this.get('excerpt'); return( e && e.substr(e.length - 8,8) === '…' ); - }.property('excerpt') + }.property('excerpt'), + + canClearPin: function() { + return this.get('pinned') && (this.get('last_read_post_number') === this.get('highest_post_number')); + }.property('pinned', 'last_read_post_number', 'highest_post_number') }); Discourse.Topic.reopenClass({ 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 860113e344e..f22428dc66d 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 @@ -29,11 +29,14 @@ {{/if}} - {{#if excerpt}} + {{#if hasExcerpt}}
{{excerpt}} {{#if excerptTruncated}} - {{i18n read_more}} + {{#unless canClearPin}}{{i18n read_more}}{{/unless}} + {{/if}} + {{#if canClearPin}} + {{i18n topic.clear_pin.title}} {{/if}}
{{/if}}