mirror of
https://github.com/discourse/discourse.git
synced 2024-12-01 14:35:58 +08:00
eab560fe2a
Co-authored-by: Mark VanLandingham <markvanlan@gmail.com> Co-authored-by: Robin Ward <robin.ward@gmail.com> Co-authored-by: Mark VanLandingham <markvanlan@gmail.com>
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
import I18n from "I18n";
|
|
import Route from "@ember/routing/route";
|
|
import { scrollTop } from "discourse/mixins/scroll-top";
|
|
import { THEMES, COMPONENTS } from "admin/models/theme";
|
|
|
|
export default Route.extend({
|
|
serialize(model) {
|
|
return { theme_id: model.get("id") };
|
|
},
|
|
|
|
model(params) {
|
|
const all = this.modelFor("adminCustomizeThemes");
|
|
const model = all.findBy("id", parseInt(params.theme_id, 10));
|
|
return model ? model : this.replaceWith("adminCustomizeTheme.index");
|
|
},
|
|
|
|
setupController(controller, model) {
|
|
this._super(...arguments);
|
|
|
|
const parentController = this.controllerFor("adminCustomizeThemes");
|
|
|
|
parentController.setProperties({
|
|
editingTheme: false,
|
|
currentTab: model.get("component") ? COMPONENTS : THEMES
|
|
});
|
|
|
|
controller.setProperties({
|
|
model: model,
|
|
parentController: parentController,
|
|
allThemes: parentController.get("model"),
|
|
colorSchemeId: model.get("color_scheme_id"),
|
|
colorSchemes: parentController.get("model.extras.color_schemes"),
|
|
editingName: false
|
|
});
|
|
|
|
this.handleHighlight(model);
|
|
},
|
|
|
|
deactivate() {
|
|
this.handleHighlight();
|
|
},
|
|
|
|
handleHighlight(theme) {
|
|
this.get("controller.allThemes")
|
|
.filter(t => t.get("selected"))
|
|
.forEach(t => t.set("selected", false));
|
|
if (theme) {
|
|
theme.set("selected", true);
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
didTransition() {
|
|
scrollTop();
|
|
},
|
|
willTransition(transition) {
|
|
const model = this.controller.model;
|
|
if (model.recentlyInstalled && !model.hasParents && model.component) {
|
|
transition.abort();
|
|
bootbox.confirm(
|
|
I18n.t("admin.customize.theme.unsaved_parent_themes"),
|
|
I18n.t("admin.customize.theme.discard"),
|
|
I18n.t("admin.customize.theme.stay"),
|
|
result => {
|
|
if (!result) {
|
|
this.controller.model.setProperties({ recentlyInstalled: false });
|
|
transition.retry();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
}
|
|
}
|
|
});
|