1
0
mirror of https://github.com/flarum/core.git synced 2025-08-11 10:55:47 +02:00

infrastructure: Add routing to common/Application

This commit is contained in:
Matthew Kilgore
2020-08-07 20:40:31 -04:00
committed by Franz Liedke
parent 3b6e5a0caf
commit 94fe3236d7

View File

@@ -195,7 +195,7 @@ export default class Application {
// this.drawer = new Drawer();
// m.route(document.getElementById('content'), basePath + '/', mapRoutes(this.routes, basePath));
m.route(document.getElementById('content'), basePath + '/', mapRoutes(this.routes, basePath));
// Add a class to the body which indicates that the page has been scrolled
// down.
@@ -432,9 +432,19 @@ export default class Application {
* @public
*/
route(name, params = {}) {
const url = this.routes[name].path.replace(/:([^\/]+)/g, (m, key) => extract(params, key));
const queryString = m.route.buildQueryString(params);
const prefix = m.route.mode === 'pathname' ? app.forum.attribute('basePath') : '';
const route = this.routes[name];
if (!route) throw new Error(`Route '${name}' does not exist`);
const url = route.path.replace(/:([^\/]+)/g, (m, key) => extract(params, key));
// Remove falsy values in params to avoid having urls like '/?sort&q'
for (const key in params) {
if (params.hasOwnProperty(key) && !params[key]) delete params[key];
}
const queryString = m.buildQueryString(params);
const prefix = m.route.prefix === '' ? this.forum.attribute('basePath') : '';
return prefix + url + (queryString ? '?' + queryString : '');
}