Skip to content

Commit d3c84b6

Browse files
committed
Add an All Results tab when filtering the site settings
1 parent 97bc187 commit d3c84b6

5 files changed

Lines changed: 22 additions & 3 deletions

File tree

app/assets/javascripts/admin/controllers/admin_site_settings_category_controller.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ Discourse.AdminSiteSettingsCategoryController = Ember.ObjectController.extend({
1616
}
1717
}.property('controllers.adminSiteSettings.content', 'categoryNameKey'),
1818

19+
emptyContentHandler: function() {
20+
if (this.get('filteredContent').length < 1) {
21+
if ( this.get('controllers.adminSiteSettings.filtered') ) {
22+
this.transitionToRoute('adminSiteSettingsCategory', 'all_results');
23+
} else {
24+
this.transitionToRoute('adminSiteSettings');
25+
}
26+
}
27+
}.observes('filteredContent'),
28+
1929
actions: {
2030

2131
/**

app/assets/javascripts/admin/controllers/admin_site_settings_controller.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.Presence, {
1010
filter: null,
1111
onlyOverridden: false,
12+
filtered: Ember.computed.notEmpty('filter'),
1213

1314
/**
1415
The list of settings based on the current filters
@@ -32,7 +33,7 @@ Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.P
3233

3334
var self = this,
3435
matches,
35-
matchesGroupedByCategory = Em.A();
36+
matchesGroupedByCategory = Em.A([{nameKey: 'all_results', name: I18n.t('admin.site_settings.categories.all_results'), siteSettings: []}]);
3637

3738
_.each(this.get('allSiteSettings'), function(settingsCategory) {
3839
matches = settingsCategory.siteSettings.filter(function(item) {
@@ -47,6 +48,7 @@ Discourse.AdminSiteSettingsController = Ember.ArrayController.extend(Discourse.P
4748
}
4849
});
4950
if (matches.length > 0) {
51+
matchesGroupedByCategory[0].siteSettings.pushObjects(matches);
5052
matchesGroupedByCategory.pushObject({
5153
nameKey: settingsCategory.nameKey,
5254
name: settingsCategory.name,

app/assets/javascripts/admin/routes/admin_site_settings_category_route.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@
88
**/
99
Discourse.AdminSiteSettingsCategoryRoute = Discourse.Route.extend({
1010
model: function(params) {
11+
// The model depends on user input, so let the controller do the work:
1112
this.controllerFor('adminSiteSettingsCategory').set('categoryNameKey', params.category_id);
12-
return this.modelFor('adminSiteSettings').find(function(category) {
13-
return category.nameKey === params.category_id;
13+
return Em.Object.create({
14+
nameKey: params.category_id,
15+
name: I18n.t('admin.site_settings.categories.' + params.category_id),
16+
siteSettings: this.controllerFor('adminSiteSettingsCategory').get('filteredContent')
1417
});
1518
}
1619
});

app/assets/javascripts/admin/templates/site_settings.js.handlebars

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
<li {{bindAttr class="category.nameKey"}}>
1717
{{#link-to 'adminSiteSettingsCategory' category.nameKey class=category.nameKey}}
1818
{{category.name}}
19+
{{#if filtered}}
20+
<span class="count">({{category.siteSettings.length}})</span>
21+
{{/if}}
1922
<span class='icon-chevron-right'></span>
2023
{{/link-to}}
2124
</li>

config/locales/client.en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,7 @@ en:
14181418
reset: 'reset to default'
14191419
none: 'none'
14201420
categories:
1421+
all_results: 'All Results'
14211422
required: 'Required'
14221423
basic: 'Basic Setup'
14231424
users: 'Users'

0 commit comments

Comments
 (0)