diff --git a/app/assets/javascripts/discourse/controllers/topic_controller.js b/app/assets/javascripts/discourse/controllers/topic_controller.js index bae43bbbc..8bd38af64 100644 --- a/app/assets/javascripts/discourse/controllers/topic_controller.js +++ b/app/assets/javascripts/discourse/controllers/topic_controller.js @@ -163,7 +163,8 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected }, togglePinned: function() { - this.get('content').toggleStatus('pinned'); + // Note that this is different than clearPin + this.get('content').setStatus('pinned', this.get('pinned_at') ? false : true); }, toggleArchived: function() { diff --git a/app/assets/javascripts/discourse/models/topic.js b/app/assets/javascripts/discourse/models/topic.js index e13fd0cc5..ca4858cd4 100644 --- a/app/assets/javascripts/discourse/models/topic.js +++ b/app/assets/javascripts/discourse/models/topic.js @@ -134,12 +134,24 @@ Discourse.Topic = Discourse.Model.extend({ toggleStatus: function(property) { this.toggleProperty(property); - if (property === 'closed' && this.get('closed')) { + this.saveStatus(property, this.get(property) ? true : false); + }, + + setStatus: function(property, value) { + this.set(property, value); + this.saveStatus(property, value); + }, + + saveStatus: function(property, value) { + if (property === 'closed' && value === true) { this.set('details.auto_close_at', null); } + if (property === 'pinned') { + this.set('pinned_at', value ? moment() : null); + } return Discourse.ajax(this.get('url') + "/status", { type: 'PUT', - data: {status: property, enabled: this.get(property) ? 'true' : 'false' } + data: {status: property, enabled: value ? 'true' : 'false' } }); }, diff --git a/app/assets/javascripts/discourse/templates/topic_admin_menu.js.handlebars b/app/assets/javascripts/discourse/templates/topic_admin_menu.js.handlebars index 647d5bd71..5c569f98b 100644 --- a/app/assets/javascripts/discourse/templates/topic_admin_menu.js.handlebars +++ b/app/assets/javascripts/discourse/templates/topic_admin_menu.js.handlebars @@ -29,7 +29,7 @@