2014-06-06 05:18:03 +04:00
|
|
|
var LeaveEditorController = Ember.Controller.extend({
|
|
|
|
args: Ember.computed.alias('model'),
|
|
|
|
|
|
|
|
actions: {
|
|
|
|
confirmAccept: function () {
|
|
|
|
var args = this.get('args'),
|
|
|
|
editorController,
|
|
|
|
model,
|
|
|
|
transition;
|
|
|
|
|
|
|
|
if (Ember.isArray(args)) {
|
|
|
|
editorController = args[0];
|
|
|
|
transition = args[1];
|
|
|
|
model = editorController.get('model');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!transition || !editorController) {
|
2014-06-22 01:59:12 +04:00
|
|
|
this.notifications.showError('Sorry, there was an error in the application. Please let the Ghost team know what happened.');
|
2014-06-06 05:18:03 +04:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
// definitely want to clear the data store and post of any unsaved, client-generated tags
|
2014-06-19 22:31:56 +04:00
|
|
|
model.updateTags();
|
2014-06-06 05:18:03 +04:00
|
|
|
|
|
|
|
if (model.get('isNew')) {
|
|
|
|
// the user doesn't want to save the new, unsaved post, so delete it.
|
|
|
|
model.deleteRecord();
|
|
|
|
} else {
|
|
|
|
// roll back changes on model props
|
|
|
|
model.rollback();
|
|
|
|
}
|
|
|
|
|
|
|
|
// setting isDirty to false here allows willTransition on the editor route to succeed
|
|
|
|
editorController.set('isDirty', false);
|
|
|
|
|
|
|
|
// since the transition is now certain to complete, we can unset window.onbeforeunload here
|
|
|
|
window.onbeforeunload = null;
|
|
|
|
|
|
|
|
transition.retry();
|
|
|
|
},
|
|
|
|
|
|
|
|
confirmReject: function () {
|
|
|
|
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
confirm: {
|
|
|
|
accept: {
|
|
|
|
text: 'Leave',
|
|
|
|
buttonClass: 'button-delete'
|
|
|
|
},
|
|
|
|
reject: {
|
2014-06-26 12:00:50 +04:00
|
|
|
text: 'Stay',
|
2014-06-06 05:18:03 +04:00
|
|
|
buttonClass: 'button'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
export default LeaveEditorController;
|