1
0
mirror of https://github.com/flarum/core.git synced 2025-07-23 17:51:24 +02:00
Files
php-flarum/ember/app/controllers/application.js
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

60 lines
1.5 KiB
JavaScript

import Ember from 'ember';
export default Ember.Controller.extend({
// The title of the forum.
// TODO: Preload this value in the index.html payload from Laravel config.
forumTitle: 'Flarum Demo Forum',
// The title of the current page. This should be set as appropriate in
// controllers/views.
pageTitle: '',
backButtonTarget: null,
searchQuery: '',
searchActive: false,
history: null,
init: function() {
this._super();
this.set('history', []);
this.pushHistory('index', '/');
},
pushHistory: function(name, url) {
var url = url || this.get('target.url');
var last = this.get('history').get('lastObject');
if (last && last.name === name) {
last.url = url;
} else {
this.get('history').pushObject({name: name, url: url});
}
},
popHistory: function(name) {
var last = this.get('history').get('lastObject');
if (last && last.name === name) {
this.get('history').popObject();
}
},
canGoBack: Ember.computed('history.length', function() {
return this.get('history.length') > 1;
}),
actions: {
goBack: function() {
this.get('history').popObject();
var history = this.get('history').get('lastObject');
this.transitionToRoute.call(this, history.url);
},
search: function(query) {
this.transitionToRoute('index', {queryParams: {searchQuery: query, sort: query ? 'relevance' : 'recent'}});
},
toggleDrawer: function() {
this.toggleProperty('drawerShowing');
}
}
});