mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 00:55:06 +08:00
341acacba8
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.
71 lines
1.7 KiB
JavaScript
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(", ");
|
|
},
|
|
});
|