Toby Zerner 976d97877b Improve global back button. Goes back to previous interface.
It’s not quite like the browser’s back button because it doesn’t
necessarily go back to the last URL; rather, it goes back to the last
interface. So if you go into a discussion, then go to a different
discussion via the side pane, the back button will still take you back
to the index (not the previous discussion).
2015-03-20 10:40:42 +10:30

49 lines
1.3 KiB
JavaScript

import Ember from 'ember';
import AddCssClassToBody from 'flarum/mixins/add-css-class-to-body';
import PushesHistory from 'flarum/mixins/pushes-history';
export default Ember.Route.extend(AddCssClassToBody, PushesHistory, {
historyKey: 'index',
cachedModel: null,
model: function() {
if (!this.get('cachedModel')) {
this.set('cachedModel', Ember.ArrayProxy.create());
}
return Ember.RSVP.resolve(this.get('cachedModel'));
},
setupController: function(controller, model) {
this._super(controller, model);
if (!model.get('length')) {
controller.send('loadResults');
}
},
deactivate: function() {
this._super();
this.controllerFor('application').set('backButtonTarget', this.controllerFor('index'));
},
actions: {
refresh: function() {
this.set('cachedModel', null);
this.refresh();
},
didTransition: function() {
var application = this.controllerFor('application');
if (application.get('backButtonTarget') === this.controllerFor('index')) {
application.set('backButtonTarget', null);
}
this.controllerFor('composer').send('minimize');
this.controllerFor('index').set('paned', false);
this.controllerFor('index').set('paneShowing', false);
}
}
});