mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-23 11:23:27 +08:00
* 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
84 lines
2.1 KiB
JavaScript
Vendored
84 lines
2.1 KiB
JavaScript
Vendored
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),
|
|
});
|
|
}
|
|
}
|
|
}
|