mirror of
https://github.com/flarum/core.git
synced 2025-07-23 17:51:24 +02:00
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).
60 lines
1.5 KiB
JavaScript
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');
|
|
}
|
|
}
|
|
});
|