Make the back button a functional link

This commit is contained in:
Toby Zerner 2015-08-02 17:26:57 +09:30
parent 262cfb84f0
commit 2f3d9402c9
3 changed files with 25 additions and 4 deletions

View File

@ -31,7 +31,10 @@ export default function boot(app) {
app.alerts = m.mount(document.getElementById('alerts'), AlertManager.component());
app.history = {
canGoBack: () => true,
back: () => window.location = '/'
backUrl: () => app.forum.attribute('baseUrl'),
back: function() {
window.location = this.backUrl();
}
};
m.route.mode = 'hash';

View File

@ -85,6 +85,17 @@ export default class History {
m.route(this.getTop().url);
}
/**
* Get the URL of the previous page.
*
* @public
*/
backUrl() {
const secondTop = this.stack[this.stack.length - 2];
return secondTop.url;
}
/**
* Go to the first route in the history stack.
*

View File

@ -1,5 +1,6 @@
import Component from 'flarum/Component';
import Button from 'flarum/components/Button';
import LinkButton from 'flarum/components/LinkButton';
/**
* The `Navigation` component displays a set of navigation buttons. Typically
@ -47,10 +48,16 @@ export default class Navigation extends Component {
getBackButton() {
const {history} = app;
return Button.component({
return LinkButton.component({
className: 'Button Button--icon Navigation-back',
onclick: history.back.bind(history),
icon: 'chevron-left'
href: history.backUrl(),
icon: 'chevron-left',
config: () => {},
onclick: e => {
if (e.shiftKey || e.ctrlKey || e.metaKey || e.which === 2) return;
e.preventDefault();
history.back();
}
});
}