mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 20:01:11 +08:00
b120728999
* FEATURE: Ability to add components to all themes This is the first and functional step from that topic https://dev.discourse.org/t/adding-a-theme-component-is-too-much-work/15398/16 The idea here is that when a new component is added, the user can easily assign it to all themes (parents). To achieve that, I needed to change a site-setting component to accept `setDefaultValues` action and `setDefaultValuesLabel` translated label. Also, I needed to add `allowAny` option to disable that for theme selector. I also refactored backend to accept both parent and child ids with one method to avoid duplication (Renamed `add_child_theme!` to more general `add_relative_theme!`) * FIX: Improvement after code review * FIX: Improvement after code review2 * FIX: use mapBy and filterBy directly
27 lines
764 B
JavaScript
27 lines
764 B
JavaScript
import Component from "@ember/component";
|
|
import BufferedContent from "discourse/mixins/buffered-content";
|
|
import SettingComponent from "admin/mixins/setting-component";
|
|
|
|
export default Component.extend(BufferedContent, SettingComponent, {
|
|
layoutName: "admin/templates/components/site-setting",
|
|
|
|
_save() {
|
|
return this.model
|
|
.save({ [this.setting.setting]: this.convertNamesToIds() })
|
|
.then(() => this.store.findAll("theme"));
|
|
},
|
|
|
|
convertNamesToIds() {
|
|
return this.get("buffered.value")
|
|
.split("|")
|
|
.filter(Boolean)
|
|
.map(themeName => {
|
|
if (themeName !== "") {
|
|
return this.setting.allThemes.find(theme => theme.name === themeName)
|
|
.id;
|
|
}
|
|
return themeName;
|
|
});
|
|
}
|
|
});
|