FIX: always show filtered site settings

This commit is contained in:
Kyle Zhao 2018-12-10 19:59:59 -05:00 committed by Sam
parent 59cb907f25
commit c9279a118e
6 changed files with 29 additions and 9 deletions

View File

@ -4,7 +4,7 @@ export default Ember.Controller.extend({
categoryNameKey: null, categoryNameKey: null,
adminSiteSettings: Ember.inject.controller(), adminSiteSettings: Ember.inject.controller(),
@computed("adminSiteSettings.model", "categoryNameKey") @computed("adminSiteSettings.visible", "categoryNameKey")
category(categories, nameKey) { category(categories, nameKey) {
return (categories || []).findBy("nameKey", nameKey); return (categories || []).findBy("nameKey", nameKey);
}, },

View File

@ -2,6 +2,8 @@ import debounce from "discourse/lib/debounce";
export default Ember.Controller.extend({ export default Ember.Controller.extend({
filter: null, filter: null,
allSiteSettings: Ember.computed.alias("model"),
visible: null,
onlyOverridden: false, onlyOverridden: false,
filterContentNow(category) { filterContentNow(category) {
@ -14,7 +16,7 @@ export default Ember.Controller.extend({
} }
if ((!filter || 0 === filter.length) && !this.get("onlyOverridden")) { if ((!filter || 0 === filter.length) && !this.get("onlyOverridden")) {
this.set("model", this.get("allSiteSettings")); this.set("visible", this.get("allSiteSettings"));
this.transitionToRoute("adminSiteSettings"); this.transitionToRoute("adminSiteSettings");
return; return;
} }
@ -62,7 +64,7 @@ export default Ember.Controller.extend({
all.hasMore = matches.length > 30; all.hasMore = matches.length > 30;
all.count = all.hasMore ? "30+" : matches.length; all.count = all.hasMore ? "30+" : matches.length;
this.set("model", matchesGroupedByCategory); this.set("visible", matchesGroupedByCategory);
this.transitionToRoute( this.transitionToRoute(
"adminSiteSettingsCategory", "adminSiteSettingsCategory",
category || "all_results" category || "all_results"

View File

@ -6,7 +6,7 @@ export default Discourse.Route.extend({
beforeModel() { beforeModel() {
this.replaceWith( this.replaceWith(
"adminSiteSettingsCategory", "adminSiteSettingsCategory",
this.modelFor("adminSiteSettings")[0].nameKey this.controllerFor("adminSiteSettings").get("visible")[0].nameKey
); );
} }
}); });

View File

@ -10,9 +10,10 @@ export default Discourse.Route.extend({
}, },
afterModel(siteSettings) { afterModel(siteSettings) {
this.controllerFor("adminSiteSettings").set( const controller = this.controllerFor("adminSiteSettings");
"allSiteSettings",
siteSettings if (!controller.get("visible")) {
); controller.set("visible", siteSettings);
}
} }
}); });

View File

@ -15,7 +15,7 @@
<div class="admin-nav pull-left"> <div class="admin-nav pull-left">
<ul class="nav nav-stacked"> <ul class="nav nav-stacked">
{{#each model as |category|}} {{#each visible as |category|}}
<li class="{{category.nameKey}}"> <li class="{{category.nameKey}}">
{{#link-to 'adminSiteSettingsCategory' category.nameKey class=category.nameKey}} {{#link-to 'adminSiteSettingsCategory' category.nameKey class=category.nameKey}}
{{category.name}} {{category.name}}

View File

@ -54,3 +54,20 @@ QUnit.test("changing value updates dirty state", async assert => {
"saving via Enter key marks setting as overriden" "saving via Enter key marks setting as overriden"
); );
}); });
QUnit.test(
"always shows filtered site settings if a filter is set",
async assert => {
await visit("/admin/site_settings");
await fillIn("#setting-filter", "title");
assert.equal(count(".row.setting"), 1);
// navigate away to the "Dashboard" page
await click(".nav.nav-pills li:nth-child(1) a");
assert.equal(count(".row.setting"), 0);
// navigate back to the "Settings" page
await click(".nav.nav-pills li:nth-child(2) a");
assert.equal(count(".row.setting"), 1);
}
);