diff --git a/ghost/admin/controllers/post-settings-menu.js b/ghost/admin/controllers/post-settings-menu.js
index 59e73343f2..f31a0c8243 100644
--- a/ghost/admin/controllers/post-settings-menu.js
+++ b/ghost/admin/controllers/post-settings-menu.js
@@ -109,6 +109,10 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
promise = Ember.RSVP.resolve(afterSave).then(function () {
return self.get('slugGenerator').generateSlug(title).then(function (slug) {
self.set(destination, slug);
+ }).catch(function () {
+ // Nothing to do (would be nice to log this somewhere though),
+ // but a rejected promise needs to be handled here so that a resolved
+ // promise is returned.
});
});
diff --git a/ghost/admin/mixins/editor-base-controller.js b/ghost/admin/mixins/editor-base-controller.js
index 70bad996e3..f3b1b358c1 100644
--- a/ghost/admin/mixins/editor-base-controller.js
+++ b/ghost/admin/mixins/editor-base-controller.js
@@ -116,6 +116,12 @@ EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
return true;
}
+ // if the Adapter failed to save the model isError will be true
+ // and we should consider the model still dirty.
+ if (model.get('isError')) {
+ return true;
+ }
+
// models created on the client always return `isDirty: true`,
// so we need to see which properties have actually changed.
if (model.get('isNew')) {
@@ -182,9 +188,10 @@ EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
},
showErrorNotification: function (prevStatus, status, errors, delay) {
- var message = this.messageMap.errors.post[prevStatus][status];
+ var message = this.messageMap.errors.post[prevStatus][status],
+ error = (errors && errors[0] && errors[0].message) || 'Unknown Error';
- message += '
' + errors[0].message;
+ message += '
' + error;
this.notifications.showError(message, {delayed: delay});
},
@@ -257,7 +264,7 @@ EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
self.set('status', prevStatus);
- return Ember.RSVP.reject(errors);
+ return self.get('model');
});
psmController.set('lastPromise', promise);