mirror of
https://github.com/flarum/framework.git
synced 2025-05-21 06:12:34 +08:00
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');
|
|
}
|
|
}
|
|
});
|