discourse/app/assets/javascripts/admin/controllers/admin-site-settings.js.es6

77 lines
2.4 KiB
Plaintext
Raw Normal View History

2015-08-10 17:11:27 -04:00
import debounce from 'discourse/lib/debounce';
2015-04-08 14:17:21 -04:00
export default Ember.Controller.extend({
filter: null,
onlyOverridden: false,
filterContentNow(category) {
// If we have no content, don't bother filtering anything
if (!!Ember.isEmpty(this.get('allSiteSettings'))) return;
2015-03-02 12:12:19 -05:00
let filter;
if (this.get('filter')) {
filter = this.get('filter').toLowerCase();
}
if ((!filter || 0 === filter.length) && !this.get('onlyOverridden')) {
this.set('model', this.get('allSiteSettings'));
this.transitionToRoute('adminSiteSettings');
return;
}
const all = {nameKey: 'all_results', name: I18n.t('admin.site_settings.categories.all_results'), siteSettings: []};
const matchesGroupedByCategory = [all];
const matches = [];
this.get('allSiteSettings').forEach(settingsCategory => {
const siteSettings = settingsCategory.siteSettings.filter(item => {
if (this.get('onlyOverridden') && !item.get('overridden')) return false;
if (filter) {
const setting = item.get('setting').toLowerCase();
return setting.includes(filter) ||
setting.replace(/_/g, ' ').includes(filter) ||
item.get('description').toLowerCase().includes(filter) ||
(item.get('value') || '').toLowerCase().includes(filter);
} else {
return true;
}
});
if (siteSettings.length > 0) {
matches.pushObjects(siteSettings);
2015-06-09 08:34:06 -04:00
matchesGroupedByCategory.pushObject({
nameKey: settingsCategory.nameKey,
name: I18n.t('admin.site_settings.categories.' + settingsCategory.nameKey),
siteSettings,
count: siteSettings.length
2015-06-09 08:34:06 -04:00
});
}
});
all.siteSettings.pushObjects(matches.slice(0, 30));
all.hasMore = matches.length > 30;
all.count = all.hasMore ? '30+' : matches.length;
this.set('model', matchesGroupedByCategory);
this.transitionToRoute('adminSiteSettingsCategory', category || 'all_results');
},
2015-08-10 17:11:27 -04:00
filterContent: debounce(function() {
if (this.get('_skipBounce')) {
this.set('_skipBounce', false);
} else {
this.filterContentNow();
}
}, 250).observes('filter', 'onlyOverridden'),
actions: {
2015-03-02 12:12:19 -05:00
clearFilter() {
this.setProperties({ filter: '', onlyOverridden: false });
2015-08-16 13:35:23 -04:00
},
toggleMenu() {
$('.admin-detail').toggleClass('mobile-closed mobile-open');
}
}
});