mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-30 01:42:29 +03:00
Merge pull request #3521 from jaswilli/notifications
Prevent stacking of notifications
This commit is contained in:
commit
8662015560
@ -30,12 +30,10 @@ var ForgottenController = Ember.Controller.extend(ValidationEngine, {
|
||||
self.transitionToRoute('signin');
|
||||
}).catch(function (resp) {
|
||||
self.toggleProperty('submitting');
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showAPIError(resp, 'There was a problem logging in, please try again.');
|
||||
self.notifications.showAPIError(resp, { defaultErrorText: 'There was a problem logging in, please try again.' });
|
||||
});
|
||||
}).catch(function (errors) {
|
||||
self.toggleProperty('submitting');
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ var DeletePostController = Ember.Controller.extend({
|
||||
model.destroyRecord().then(function () {
|
||||
self.get('popover').closePopovers();
|
||||
self.transitionToRoute('posts.index');
|
||||
self.notifications.showSuccess('Your post has been deleted.', true);
|
||||
self.notifications.showSuccess('Your post has been deleted.', { delayed: true });
|
||||
}, function () {
|
||||
self.notifications.showError('Your post could not be deleted. Please try again.');
|
||||
});
|
||||
|
@ -38,8 +38,6 @@ var InviteNewUserController = Ember.Controller.extend({
|
||||
newUser.save().then(function () {
|
||||
var notificationText = 'Invitation sent! (' + email + ')';
|
||||
|
||||
self.notifications.closePassive();
|
||||
|
||||
// If sending the invitation email fails, the API will still return a status of 201
|
||||
// but the user's status in the response object will be 'invited-pending'.
|
||||
if (newUser.get('status') === 'invited-pending') {
|
||||
@ -49,7 +47,6 @@ var InviteNewUserController = Ember.Controller.extend({
|
||||
}
|
||||
}).catch(function (errors) {
|
||||
newUser.deleteRecord();
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
|
||||
|
@ -26,10 +26,8 @@ var TransferOwnerController = Ember.Controller.extend({
|
||||
});
|
||||
}
|
||||
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showSuccess('Ownership successfully transferred to ' + user.get('name'));
|
||||
}).catch(function (error) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showAPIError(error);
|
||||
});
|
||||
},
|
||||
|
@ -103,11 +103,9 @@ var PostSettingsMenuController = Ember.ObjectController.extend({
|
||||
|
||||
showErrors: function (errors) {
|
||||
errors = Ember.isArray(errors) ? errors : [errors];
|
||||
this.notifications.closePassive();
|
||||
this.notifications.showErrors(errors);
|
||||
},
|
||||
showSuccess: function (message) {
|
||||
this.notifications.closePassive();
|
||||
this.notifications.showSuccess(message);
|
||||
},
|
||||
actions: {
|
||||
|
@ -9,7 +9,6 @@ var PostController = Ember.ObjectController.extend({
|
||||
|
||||
this.toggleProperty('featured');
|
||||
this.get('model').save(options).catch(function (errors) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
}
|
||||
|
@ -31,12 +31,10 @@ var SettingsGeneralController = Ember.ObjectController.extend({
|
||||
var self = this;
|
||||
|
||||
return this.get('model').save().then(function (model) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showSuccess('Settings successfully saved.');
|
||||
|
||||
return model;
|
||||
}).catch(function (errors) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
},
|
||||
|
@ -69,7 +69,6 @@ var SettingsUserController = Ember.ObjectController.extend({
|
||||
var notificationText = 'Invitation revoked. (' + email + ')';
|
||||
self.notifications.showSuccess(notificationText, false);
|
||||
}).catch(function (error) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showAPIError(error);
|
||||
});
|
||||
},
|
||||
@ -88,7 +87,6 @@ var SettingsUserController = Ember.ObjectController.extend({
|
||||
self.notifications.showSuccess(notificationText, false);
|
||||
}
|
||||
}).catch(function (error) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showAPIError(error);
|
||||
});
|
||||
},
|
||||
@ -98,12 +96,10 @@ var SettingsUserController = Ember.ObjectController.extend({
|
||||
self = this;
|
||||
|
||||
user.save({ format: false }).then(function (model) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showSuccess('Settings successfully saved.');
|
||||
|
||||
return model;
|
||||
}).catch(function (errors) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
},
|
||||
@ -122,12 +118,10 @@ var SettingsUserController = Ember.ObjectController.extend({
|
||||
'ne2Password': ''
|
||||
});
|
||||
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showSuccess('Password updated.');
|
||||
|
||||
return model;
|
||||
}).catch(function (errors) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showAPIError(errors);
|
||||
});
|
||||
} else {
|
||||
|
@ -19,7 +19,6 @@ var SigninController = Ember.Controller.extend(SimpleAuth.AuthenticationControll
|
||||
self.notifications.closePassive();
|
||||
self.send('authenticate');
|
||||
}).catch(function (errors) {
|
||||
self.notifications.closePassive();
|
||||
self.notifications.showErrors(errors);
|
||||
});
|
||||
}
|
||||
|
@ -166,18 +166,16 @@ var EditorControllerMixin = Ember.Mixin.create(MarkerManager, {
|
||||
|
||||
showSaveNotification: function (prevStatus, status, delay) {
|
||||
var message = this.messageMap.success.post[prevStatus][status];
|
||||
this.notifications.closePassive();
|
||||
|
||||
this.notifications.showSuccess(message, delay);
|
||||
this.notifications.showSuccess(message, { delayed: delay });
|
||||
},
|
||||
|
||||
showErrorNotification: function (prevStatus, status, errors, delay) {
|
||||
var message = this.messageMap.errors.post[prevStatus][status];
|
||||
this.notifications.closePassive();
|
||||
|
||||
message += '<br />' + errors[0].message;
|
||||
|
||||
this.notifications.showError(message, delay);
|
||||
this.notifications.showError(message, { delayed: delay });
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
@ -19,7 +19,6 @@ var ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shor
|
||||
},
|
||||
|
||||
sessionAuthenticationFailed: function (error) {
|
||||
this.notifications.closePassive();
|
||||
this.notifications.showError(error.message);
|
||||
},
|
||||
|
||||
@ -38,7 +37,6 @@ var ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, Shor
|
||||
},
|
||||
|
||||
sessionInvalidationFailed: function (error) {
|
||||
this.notifications.closePassive();
|
||||
this.notifications.showError(error.message);
|
||||
},
|
||||
|
||||
|
@ -36,48 +36,84 @@ var Notifications = Ember.ArrayProxy.extend({
|
||||
this.delayedNotifications.push(message);
|
||||
}
|
||||
},
|
||||
showError: function (message, delayed) {
|
||||
showError: function (message, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
this.handleNotification({
|
||||
type: 'error',
|
||||
message: message
|
||||
}, delayed);
|
||||
}, options.delayed);
|
||||
},
|
||||
showErrors: function (errors) {
|
||||
showErrors: function (errors, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
for (var i = 0; i < errors.length; i += 1) {
|
||||
this.showError(errors[i].message || errors[i]);
|
||||
this.showError(errors[i].message || errors[i], { doNotClosePassive: true });
|
||||
}
|
||||
},
|
||||
showAPIError: function (resp, defaultErrorText, delayed) {
|
||||
defaultErrorText = defaultErrorText || 'There was a problem on the server, please try again.';
|
||||
showAPIError: function (resp, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
options.defaultErrorText = options.defaultErrorText || 'There was a problem on the server, please try again.';
|
||||
|
||||
if (resp && resp.jqXHR && resp.jqXHR.responseJSON && resp.jqXHR.responseJSON.error) {
|
||||
this.showError(resp.jqXHR.responseJSON.error, delayed);
|
||||
this.showError(resp.jqXHR.responseJSON.error, options);
|
||||
} else if (resp && resp.jqXHR && resp.jqXHR.responseJSON && resp.jqXHR.responseJSON.errors) {
|
||||
this.showErrors(resp.jqXHR.responseJSON.errors, delayed);
|
||||
this.showErrors(resp.jqXHR.responseJSON.errors, options);
|
||||
} else if (resp && resp.jqXHR && resp.jqXHR.responseJSON && resp.jqXHR.responseJSON.message) {
|
||||
this.showError(resp.jqXHR.responseJSON.message, delayed);
|
||||
this.showError(resp.jqXHR.responseJSON.message, options);
|
||||
} else {
|
||||
this.showError(defaultErrorText, delayed);
|
||||
this.showError(options.defaultErrorText, { doNotClosePassive: true });
|
||||
}
|
||||
},
|
||||
showInfo: function (message, delayed) {
|
||||
showInfo: function (message, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
this.handleNotification({
|
||||
type: 'info',
|
||||
message: message
|
||||
}, delayed);
|
||||
}, options.delayed);
|
||||
},
|
||||
showSuccess: function (message, delayed) {
|
||||
showSuccess: function (message, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
this.handleNotification({
|
||||
type: 'success',
|
||||
message: message
|
||||
}, delayed);
|
||||
}, options.delayed);
|
||||
},
|
||||
// @Todo this function isn't referenced anywhere. Should it be removed?
|
||||
showWarn: function (message, delayed) {
|
||||
showWarn: function (message, options) {
|
||||
options = options || {};
|
||||
|
||||
if (!options.doNotClosePassive) {
|
||||
this.closePassive();
|
||||
}
|
||||
|
||||
this.handleNotification({
|
||||
type: 'warn',
|
||||
message: message
|
||||
}, delayed);
|
||||
}, options.delayed);
|
||||
},
|
||||
displayDelayed: function () {
|
||||
var self = this;
|
||||
|
Loading…
Reference in New Issue
Block a user