mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-05 18:34:39 +03:00
dd50cca97a
Closes #3511, Closes #3512, Closes #3526 - show* methods now close existing passive notifications by default. They also now take an optional options object where existing parameters such as "delayed" and "defaultErrorText" can be passed in as well as the new "doNotClosePassive" flag. - Removed all explicit calls to notifications.closePassive except for the few places where it makes sense to call it separately.
94 lines
3.1 KiB
JavaScript
94 lines
3.1 KiB
JavaScript
import ShortcutsRoute from 'ghost/mixins/shortcuts-route';
|
|
|
|
var ApplicationRoute = Ember.Route.extend(SimpleAuth.ApplicationRouteMixin, ShortcutsRoute, {
|
|
|
|
shortcuts: {
|
|
'esc': 'closePopups'
|
|
},
|
|
|
|
actions: {
|
|
closePopups: function () {
|
|
this.get('popover').closePopovers();
|
|
this.get('notifications').closeAll();
|
|
|
|
this.send('closeModal');
|
|
},
|
|
|
|
signedIn: function () {
|
|
this.send('loadServerNotifications', true);
|
|
},
|
|
|
|
sessionAuthenticationFailed: function (error) {
|
|
this.notifications.showError(error.message);
|
|
},
|
|
|
|
sessionAuthenticationSucceeded: function () {
|
|
var self = this;
|
|
this.store.find('user', 'me').then(function (user) {
|
|
self.send('signedIn', user);
|
|
var attemptedTransition = self.get('session').get('attemptedTransition');
|
|
if (attemptedTransition) {
|
|
attemptedTransition.retry();
|
|
self.get('session').set('attemptedTransition', null);
|
|
} else {
|
|
self.transitionTo(SimpleAuth.Configuration.routeAfterAuthentication);
|
|
}
|
|
});
|
|
},
|
|
|
|
sessionInvalidationFailed: function (error) {
|
|
this.notifications.showError(error.message);
|
|
},
|
|
|
|
openModal: function (modalName, model, type) {
|
|
modalName = 'modals/' + modalName;
|
|
// We don't always require a modal to have a controller
|
|
// so we're skipping asserting if one exists
|
|
if (this.controllerFor(modalName, true)) {
|
|
this.controllerFor(modalName).set('model', model);
|
|
|
|
if (type) {
|
|
this.controllerFor(modalName).set('imageType', type);
|
|
this.controllerFor(modalName).set('src', model.get(type));
|
|
}
|
|
}
|
|
return this.render(modalName, {
|
|
into: 'application',
|
|
outlet: 'modal'
|
|
});
|
|
},
|
|
|
|
closeModal: function () {
|
|
return this.disconnectOutlet({
|
|
outlet: 'modal',
|
|
parentView: 'application'
|
|
});
|
|
},
|
|
|
|
loadServerNotifications: function (isDelayed) {
|
|
var self = this;
|
|
if (this.session.isAuthenticated) {
|
|
this.store.findAll('notification').then(function (serverNotifications) {
|
|
serverNotifications.forEach(function (notification) {
|
|
self.notifications.handleNotification(notification, isDelayed);
|
|
});
|
|
});
|
|
}
|
|
},
|
|
|
|
handleErrors: function (errors) {
|
|
var self = this;
|
|
this.notifications.clear();
|
|
errors.forEach(function (errorObj) {
|
|
self.notifications.showError(errorObj.message || errorObj);
|
|
|
|
if (errorObj.hasOwnProperty('el')) {
|
|
errorObj.el.addClass('input-error');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
export default ApplicationRoute;
|