diff --git a/app/assets/javascripts/admin/controllers/admin_customize_controller.js b/app/assets/javascripts/admin/controllers/admin_customize_controller.js index abf96904e..bd72a1820 100644 --- a/app/assets/javascripts/admin/controllers/admin_customize_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_customize_controller.js @@ -49,7 +49,7 @@ Discourse.AdminCustomizeController = Ember.Controller.extend({ var selected; if (result) { selected = _this.get('content.selectedItem'); - selected["delete"](); + selected.destroy(); _this.set('content.selectedItem', null); return _this.get('content').removeObject(selected); } diff --git a/app/assets/javascripts/admin/models/site_customization.js b/app/assets/javascripts/admin/models/site_customization.js index 2f7294c70..1dd3627fb 100644 --- a/app/assets/javascripts/admin/models/site_customization.js +++ b/app/assets/javascripts/admin/models/site_customization.js @@ -64,7 +64,7 @@ Discourse.SiteCustomization = Discourse.Model.extend({ }); }, - "delete": function() { + destroy: function() { if (!this.id) return; return $.ajax({ diff --git a/app/assets/javascripts/discourse/controllers/topic_controller.js b/app/assets/javascripts/discourse/controllers/topic_controller.js index 8db9879b7..f32a4d13b 100644 --- a/app/assets/javascripts/discourse/controllers/topic_controller.js +++ b/app/assets/javascripts/discourse/controllers/topic_controller.js @@ -10,6 +10,7 @@ Discourse.TopicController = Discourse.ObjectController.extend({ userFilters: new Em.Set(), multiSelect: false, bestOf: false, + summaryCollapsed: true, needs: ['header', 'modal', 'composer', 'quoteButton'], filter: (function() { @@ -19,9 +20,14 @@ Discourse.TopicController = Discourse.ObjectController.extend({ }).property('userFilters.[]', 'bestOf'), filterDesc: (function() { - var filter; - if (!(filter = this.get('filter'))) return null; - return Em.String.i18n("topic.filters." + filter); + var filter = this.get('filter'); + if (!filter) return null; + + if (filter !== 'user') return Em.String.i18n("topic.filters." + filter); + + // If we're a user filter, include the count + return Em.String.i18n("topic.filters.user", {count: this.get('userFilters.length')}); + }).property('filter'), selectedPosts: (function() { @@ -83,6 +89,10 @@ Discourse.TopicController = Discourse.ObjectController.extend({ this.toggleProperty('multiSelect'); }, + toggleSummary: function() { + this.toggleProperty('summaryCollapsed'); + }, + moveSelected: function() { var _ref; return (_ref = this.get('controllers.modal')) ? _ref.show(Discourse.MoveSelectedView.create({ @@ -148,71 +158,56 @@ Discourse.TopicController = Discourse.ObjectController.extend({ }, toggleParticipant: function(user) { - var userFilters, username; this.set('bestOf', false); - username = Em.get(user, 'username'); - userFilters = this.get('userFilters'); + var username = Em.get(user, 'username'); + var userFilters = this.get('userFilters'); if (userFilters.contains(username)) { userFilters.remove(username); } else { userFilters.add(username); } - return false; }, enableBestOf: function(e) { this.set('bestOf', true); this.get('userFilters').clear(); - return false; }, - showBestOf: (function() { - if (this.get('bestOf') === true) { - return false; - } - return this.get('content.has_best_of') === true; - }).property('bestOf', 'content.has_best_of'), - postFilters: (function() { - if (this.get('bestOf') === true) { - return { - bestOf: true - }; - } - return { - userFilters: this.get('userFilters') - }; + if (this.get('bestOf') === true) return { bestOf: true }; + return { userFilters: this.get('userFilters') }; }).property('userFilters.[]', 'bestOf'), - reloadTopics: (function() { - var posts, topic, - _this = this; - topic = this.get('content'); + reloadPosts: (function() { + var topic = this.get('content'); if (!topic) return; - posts = topic.get('posts'); + + var posts = topic.get('posts'); if (!posts) return; - posts.clear(); - this.set('content.loaded', false); - return Discourse.Topic.find(this.get('content.id'), this.get('postFilters')).then(function(result) { - var first; - first = result.posts.first(); + + // Leave the first post -- we keep it above the filter controls + posts.removeAt(1, posts.length - 1); + var topicController = this; + return Discourse.Topic.find(this.get('id'), this.get('postFilters')).then(function(result) { + var first = result.posts.first(); if (first) { - _this.set('currentPost', first.post_number); + topicController.set('currentPost', first.post_number); } $('#topic-progress .solid').data('progress', false); result.posts.each(function(p) { - return posts.pushObject(Discourse.Post.create(p, topic)); + // Skip the first post + if (p.post_number === 1) return; + posts.pushObject(Discourse.Post.create(p, topic)); }); - return _this.set('content.loaded', true); }); }).observes('postFilters'), deleteTopic: function(e) { - var _this = this; + var topicController = this; this.unsubscribe(); - this.get('content')["delete"](function() { - _this.set('message', Em.String.i18n('topic.deleted')); - _this.set('loaded', false); + this.get('content').destroy().then(function() { + topicController.set('message', Em.String.i18n('topic.deleted')); + topicController.set('loaded', false); }); }, @@ -411,7 +406,7 @@ Discourse.TopicController = Discourse.ObjectController.extend({ post.set('can_delete', false); post.set('version', post.get('version') + 1); } - return post["delete"](); + post.destroy(); }, postRendered: function(post) { diff --git a/app/assets/javascripts/discourse/models/category.js b/app/assets/javascripts/discourse/models/category.js index 8a7f58150..875a1fde2 100644 --- a/app/assets/javascripts/discourse/models/category.js +++ b/app/assets/javascripts/discourse/models/category.js @@ -21,10 +21,7 @@ Discourse.Category = Discourse.Model.extend({ }).property('topic_count'), save: function(args) { - var url, - _this = this; - - url = Discourse.getURL("/categories"); + var url = Discourse.getURL("/categories"); if (this.get('id')) { url = Discourse.getURL("/categories/") + (this.get('id')); } @@ -41,14 +38,8 @@ Discourse.Category = Discourse.Model.extend({ }); }, - "delete": function(callback) { - var _this = this; - return $.ajax(Discourse.getURL("/categories/") + (this.get('slug')), { - type: 'DELETE', - success: function() { - return callback(); - } - }); + destroy: function(callback) { + return $.ajax(Discourse.getURL("/categories/") + (this.get('slug')), { type: 'DELETE' }); } }); diff --git a/app/assets/javascripts/discourse/models/post.js b/app/assets/javascripts/discourse/models/post.js index 63ee6d4a2..91c538258 100644 --- a/app/assets/javascripts/discourse/models/post.js +++ b/app/assets/javascripts/discourse/models/post.js @@ -175,13 +175,8 @@ Discourse.Post = Discourse.Model.extend({ return $.ajax(Discourse.getURL("/posts/") + (this.get('id')) + "/recover", { type: 'PUT', cache: false }); }, - "delete": function(complete) { - return $.ajax(Discourse.getURL("/posts/") + (this.get('id')), { - type: 'DELETE', - success: function(result) { - return typeof complete === "function" ? complete() : void 0; - } - }); + destroy: function(complete) { + return $.ajax(Discourse.getURL("/posts/") + (this.get('id')), { type: 'DELETE' }); }, // Update the properties of this post from an obj, ignoring cooked as we should already diff --git a/app/assets/javascripts/discourse/models/topic.js b/app/assets/javascripts/discourse/models/topic.js index 68b9f145e..2cba0028e 100644 --- a/app/assets/javascripts/discourse/models/topic.js +++ b/app/assets/javascripts/discourse/models/topic.js @@ -197,13 +197,8 @@ Discourse.Topic = Discourse.Model.extend({ }, // Delete this topic - "delete": function(callback) { - return $.ajax(Discourse.getURL("/t/") + (this.get('id')), { - type: 'DELETE', - success: function() { - return typeof callback === "function" ? callback() : void 0; - } - }); + destroy: function() { + return $.ajax(Discourse.getURL("/t/") + (this.get('id')), { type: 'DELETE' }); }, // Load the posts for this topic @@ -420,7 +415,7 @@ Discourse.Topic.reopenClass({ if (opts.userFilters && opts.userFilters.length > 0) { data.username_filters = []; opts.userFilters.forEach(function(username) { - return data.username_filters.push(username); + data.username_filters.push(username); }); } diff --git a/app/assets/javascripts/discourse/templates/participant.js.handlebars b/app/assets/javascripts/discourse/templates/participant.js.handlebars index 130f8ec19..af510cb3b 100644 --- a/app/assets/javascripts/discourse/templates/participant.js.handlebars +++ b/app/assets/javascripts/discourse/templates/participant.js.handlebars @@ -1,4 +1,4 @@ - + {{unbound post_count}} {{avatar this imageSize="medium"}} diff --git a/app/assets/javascripts/discourse/templates/topic_summary/best_of_toggle.js.handlebars b/app/assets/javascripts/discourse/templates/topic_summary/best_of_toggle.js.handlebars index eb9b32fa1..290ec6310 100644 --- a/app/assets/javascripts/discourse/templates/topic_summary/best_of_toggle.js.handlebars +++ b/app/assets/javascripts/discourse/templates/topic_summary/best_of_toggle.js.handlebars @@ -1,4 +1,8 @@
{{{i18n best_of.description count="controller.content.posts_count"}}}
- - +{{#if controller.bestOf}} +{{{i18n best_of.enabled_description}}}
+ +{{else}} +{{{i18n best_of.description count="controller.content.posts_count"}}}
+ +{{/if}} diff --git a/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars b/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars index b2e459c0b..f6c856267 100644 --- a/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars +++ b/app/assets/javascripts/discourse/templates/topic_summary/info.js.handlebars @@ -1,17 +1,17 @@ -{{#if view.summaryView.collapsed}} +{{#if controller.summaryCollapsed}}