mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 08:54:36 +08:00
dc996a1e5c
* FIX: Locale mismatch at theme translations picker Before, the theme translations picker value was set to the site's default locale, which mismatches from the user's locale. This commit changes the picker value to the user locale. relates to https://meta.discourse.org/t/locale-mismatch-at-theme-translations/302879 * DEV: Address code review feedback. - https://github.com/discourse/discourse/pull/26687#discussion_r1572516758 - https://github.com/discourse/discourse/pull/26687#discussion_r1572524059
85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
import { action } from "@ember/object";
|
|
import Route from "@ember/routing/route";
|
|
import { service } from "@ember/service";
|
|
import { scrollTop } from "discourse/mixins/scroll-top";
|
|
import I18n from "discourse-i18n";
|
|
import { COMPONENTS, THEMES } from "admin/models/theme";
|
|
|
|
export default class AdminCustomizeThemesShowRoute extends Route {
|
|
@service dialog;
|
|
@service router;
|
|
|
|
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));
|
|
if (model) {
|
|
return model;
|
|
} else {
|
|
this.router.replaceWith("adminCustomizeThemes.index");
|
|
}
|
|
}
|
|
|
|
setupController(controller, model) {
|
|
super.setupController(...arguments);
|
|
|
|
const parentController = this.controllerFor("adminCustomizeThemes");
|
|
|
|
parentController.setProperties({
|
|
editingTheme: false,
|
|
currentTab: model.get("component") ? COMPONENTS : THEMES,
|
|
});
|
|
|
|
controller.setProperties({
|
|
model,
|
|
parentController,
|
|
allThemes: parentController.get("model"),
|
|
colorSchemeId: model.get("color_scheme_id"),
|
|
colorSchemes: parentController.get("model.extras.color_schemes"),
|
|
editingName: false,
|
|
editingThemeSetting: false,
|
|
userLocale: parentController.get("model.extras.locale"),
|
|
});
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
@action
|
|
didTransition() {
|
|
scrollTop();
|
|
}
|
|
|
|
@action
|
|
willTransition(transition) {
|
|
const model = this.controller.model;
|
|
if (model.warnUnassignedComponent) {
|
|
transition.abort();
|
|
|
|
this.dialog.yesNoConfirm({
|
|
message: I18n.t("admin.customize.theme.unsaved_parent_themes"),
|
|
didConfirm: () => {
|
|
model.set("recentlyInstalled", false);
|
|
transition.retry();
|
|
},
|
|
didCancel: () => model.set("recentlyInstalled", false),
|
|
});
|
|
}
|
|
}
|
|
}
|