discourse/app/assets/javascripts/discourse/controllers/change-timestamp.js.es6
2018-06-15 17:03:24 +02:00

62 lines
1.7 KiB
JavaScript

import ModalFunctionality from "discourse/mixins/modal-functionality";
import computed from "ember-addons/ember-computed-decorators";
import DiscourseURL from "discourse/lib/url";
import Topic from "discourse/models/topic";
// Modal related to changing the timestamp of posts
export default Ember.Controller.extend(ModalFunctionality, {
topicController: Ember.inject.controller("topic"),
saving: false,
date: "",
time: "",
@computed("saving")
buttonTitle(saving) {
return saving ? I18n.t("saving") : I18n.t("topic.change_timestamp.action");
},
@computed("date", "time")
createdAt(date, time) {
return moment(date + " " + time, "YYYY-MM-DD HH:mm:ss");
},
@computed("createdAt")
validTimestamp(createdAt) {
return moment().diff(createdAt, "minutes") < 0;
},
@computed("saving", "date", "validTimestamp")
buttonDisabled() {
if (this.get("saving") || this.get("validTimestamp")) return true;
return Ember.isEmpty(this.get("date"));
},
onShow: function() {
this.setProperties({
date: moment().format("YYYY-MM-DD")
});
},
actions: {
changeTimestamp: function() {
this.set("saving", true);
const self = this,
topic = this.get("topicController.model");
Topic.changeTimestamp(topic.get("id"), this.get("createdAt").unix())
.then(function() {
self.send("closeModal");
self.setProperties({ date: "", time: "", saving: false });
Em.run.next(() => {
DiscourseURL.routeTo(topic.get("url"));
});
})
.catch(function() {
self.flash(I18n.t("topic.change_timestamp.error"), "alert-error");
self.set("saving", false);
});
return false;
}
}
});