discourse/app/assets/javascripts/admin/addon/controllers/admin-site-text-edit.js
Ted Johansson 341acacba8
DEV: Add endpoint for dismissing outdated translations (#22509)
Recently we started giving admins a notice in the advice panel when their translations have become outdated due to changes in core. However, we didn't include any additional information.

This PR adds more information about the outdated translation inside the site text edit page, together with an option to dismiss the warning.
2023-07-19 23:06:13 +08:00

71 lines
1.7 KiB
JavaScript

import Controller from "@ember/controller";
import I18n from "I18n";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import discourseComputed from "discourse-common/utils/decorators";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
export default Controller.extend(bufferedProperty("siteText"), {
dialog: service(),
saved: false,
queryParams: ["locale"],
@discourseComputed("buffered.value")
saveDisabled(value) {
return this.siteText.value === value;
},
@discourseComputed("siteText.status")
isOutdated(status) {
return status === "outdated";
},
@action
saveChanges() {
const attrs = this.buffered.getProperties("value");
attrs.locale = this.locale;
this.siteText
.save(attrs)
.then(() => {
this.commitBuffer();
this.set("saved", true);
})
.catch(popupAjaxError);
},
@action
revertChanges() {
this.set("saved", false);
this.dialog.yesNoConfirm({
message: I18n.t("admin.site_text.revert_confirm"),
didConfirm: () => {
this.siteText
.revert(this.locale)
.then((props) => {
const buffered = this.buffered;
buffered.setProperties(props);
this.commitBuffer();
})
.catch(popupAjaxError);
},
});
},
@action
dismissOutdated() {
this.siteText
.dismissOutdated(this.locale)
.then(() => {
this.siteText.set("status", "up_to_date");
})
.catch(popupAjaxError);
},
get interpolationKeys() {
return this.siteText.interpolation_keys.join(", ");
},
});