From 9ef1688a76d3ccc0e42bd6da945adcd84caf07c1 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Tue, 1 Nov 2016 12:18:31 -0400 Subject: [PATCH] FEATURE: per-category default topic list sort order --- .../components/edit-category-settings.js.es6 | 18 +++++++++++++++++ .../discourse/models/category.js.es6 | 4 +++- .../components/edit-category-settings.hbs | 10 ++++++++++ app/controllers/categories_controller.rb | 2 ++ app/models/category.rb | 2 ++ app/serializers/basic_category_serializer.rb | 4 +++- config/locales/client.en.yml | 13 ++++++++++++ ...031183811_add_sort_fields_to_categories.rb | 6 ++++++ lib/topic_query.rb | 9 +++++++++ spec/components/topic_query_spec.rb | 20 +++++++++++++++++++ 10 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20161031183811_add_sort_fields_to_categories.rb diff --git a/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 b/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 index 049157609e3..41a4d2b20f5 100644 --- a/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 +++ b/app/assets/javascripts/discourse/components/edit-category-settings.js.es6 @@ -1,7 +1,25 @@ import { setting } from 'discourse/lib/computed'; import { buildCategoryPanel } from 'discourse/components/edit-category-panel'; +import computed from "ember-addons/ember-computed-decorators"; export default buildCategoryPanel('settings', { emailInEnabled: setting('email_in'), showPositionInput: setting('fixed_category_positions'), + + isDefaultSortOrder: Em.computed.empty('category.sort_order'), + + @computed + availableSorts() { + return ['likes', 'op_likes', 'views', 'posts', 'activity', 'posters', 'category', 'created'] + .map(s => ({ name: I18n.t('category.sort_options.' + s), value: s })) + .sort((a,b) => { return a.name > b.name; }); + }, + + @computed + sortAscendingOptions() { + return [ + {name: I18n.t('category.sort_ascending'), value: 'true'}, + {name: I18n.t('category.sort_descending'), value: 'false'} + ]; + } }); diff --git a/app/assets/javascripts/discourse/models/category.js.es6 b/app/assets/javascripts/discourse/models/category.js.es6 index 724a2664699..b77a4abdf33 100644 --- a/app/assets/javascripts/discourse/models/category.js.es6 +++ b/app/assets/javascripts/discourse/models/category.js.es6 @@ -98,7 +98,9 @@ const Category = RestModel.extend({ topic_template: this.get('topic_template'), suppress_from_homepage: this.get('suppress_from_homepage'), allowed_tags: this.get('allowed_tags'), - allowed_tag_groups: this.get('allowed_tag_groups') + allowed_tag_groups: this.get('allowed_tag_groups'), + sort_order: this.get('sort_order'), + sort_ascending: this.get('sort_ascending') }, type: id ? 'PUT' : 'POST' }); diff --git a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs index 1a9c68c6b25..72883cba5ad 100644 --- a/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs +++ b/app/assets/javascripts/discourse/templates/components/edit-category-settings.hbs @@ -19,6 +19,16 @@ +
+ +
+ {{#if emailInEnabled}}