mirror of
https://github.com/flarum/framework.git
synced 2025-02-21 07:38:08 +08:00
Combine route/query params in route construction
One params object is passed, and then route params are extracted into the route and the rest are appended as query params.
This commit is contained in:
parent
5d4d031f59
commit
bdf71abf23
@ -62,7 +62,7 @@ export default class ComposerDiscussion extends ComposerBody {
|
||||
app.store.createRecord('discussions').save(data).then(discussion => {
|
||||
app.composer.hide();
|
||||
app.cache.discussionList.discussions().unshift(discussion);
|
||||
m.route(app.route('discussion', discussion));
|
||||
m.route(app.route('discussion', { id: discussion.id(), slug: discussion.slug() }));
|
||||
}, response => {
|
||||
this.loading(false);
|
||||
m.redraw();
|
||||
|
@ -115,7 +115,7 @@ export default class DiscussionList extends Component {
|
||||
|
||||
var controls = this.controlItems(discussion).toArray();
|
||||
|
||||
var discussionRoute = app.route('discussion', discussion);
|
||||
var discussionRoute = app.route('discussion', { id: discussion.id(), slug: discussion.slug() });
|
||||
var active = m.route().substr(0, discussionRoute.length) === discussionRoute;
|
||||
|
||||
return m('li.discussion-summary'+(isUnread ? '.unread' : '')+(active ? '.active' : ''), {key: discussion.id()}, [
|
||||
@ -126,7 +126,7 @@ export default class DiscussionList extends Component {
|
||||
menuClass: 'pull-right'
|
||||
}) : '',
|
||||
m('a.author', {
|
||||
href: app.route('user', startUser),
|
||||
href: app.route('user', { username: startUser.username() }),
|
||||
config: function(element, isInitialized, context) {
|
||||
$(element).tooltip({ placement: 'right' })
|
||||
m.route.call(this, element)
|
||||
|
@ -103,7 +103,7 @@ export default class DiscussionPage extends Component {
|
||||
// stream to jump to the new 'near' param.
|
||||
var discussion = this.discussion();
|
||||
if (discussion) {
|
||||
var discussionRoute = app.route('discussion', discussion);
|
||||
var discussionRoute = app.route('discussion', { id: discussion.id(), slug: discussion.slug() });
|
||||
if (m.route().substr(0, discussionRoute.length) === discussionRoute) {
|
||||
e.preventDefault();
|
||||
if (m.route.param('near') != this.currentNear) {
|
||||
|
@ -143,7 +143,7 @@ export default class IndexPage extends Component {
|
||||
|
||||
items.add('allDiscussions',
|
||||
NavItem.component({
|
||||
href: app.route('index', {}, params),
|
||||
href: app.route('index', params),
|
||||
label: 'All Discussions',
|
||||
icon: 'comments-o'
|
||||
})
|
||||
|
@ -33,7 +33,7 @@ export default class PostDiscussionRenamed extends Component {
|
||||
}) : '',
|
||||
icon('pencil post-icon'),
|
||||
m('div.post-activity-info', [
|
||||
m('a.post-user', {href: app.route('user', post.user()), config: m.route}, username(post.user())),
|
||||
m('a.post-user', {href: app.route('user', { username: post.user().username() }), config: m.route}, username(post.user())),
|
||||
' changed the title from ', m('strong.old-title', oldTitle), ' to ', m('strong.new-title', newTitle), '.'
|
||||
]),
|
||||
m('div.post-activity-time', humanTime(post.time()))
|
||||
|
@ -21,7 +21,7 @@ export default class PostHeaderUser extends Component {
|
||||
return m('div.post-user', {config: this.onload.bind(this)}, [
|
||||
m('h3',
|
||||
user ? [
|
||||
m('a', {href: app.route('user', user), config: m.route}, [
|
||||
m('a', {href: app.route('user', {username: user.username()}), config: m.route}, [
|
||||
avatar(user),
|
||||
username(user)
|
||||
]),
|
||||
|
@ -27,7 +27,7 @@ export default class UserCard extends Component {
|
||||
m('div.user-profile', [
|
||||
m('h2.user-identity', this.props.editable
|
||||
? [AvatarEditor.component({user, className: 'user-avatar'}), username(user)]
|
||||
: m('a', {href: app.route('user', user), config: m.route}, [
|
||||
: m('a', {href: app.route('user', {username: user.username()}), config: m.route}, [
|
||||
avatar(user, {className: 'user-avatar'}),
|
||||
username(user)
|
||||
])
|
||||
|
@ -26,7 +26,7 @@ export default class UserDropdown extends Component {
|
||||
ActionButton.component({
|
||||
icon: 'user',
|
||||
label: 'Profile',
|
||||
href: app.route('user', user),
|
||||
href: app.route('user', {username: user.username()}),
|
||||
config: m.route
|
||||
})
|
||||
);
|
||||
|
@ -86,7 +86,7 @@ export default class UserPage extends Component {
|
||||
|
||||
items.add('activity',
|
||||
NavItem.component({
|
||||
href: app.route('user.activity', user),
|
||||
href: app.route('user.activity', {username: user.username()}),
|
||||
label: 'Activity',
|
||||
icon: 'user'
|
||||
})
|
||||
@ -94,7 +94,7 @@ export default class UserPage extends Component {
|
||||
|
||||
items.add('discussions',
|
||||
NavItem.component({
|
||||
href: app.route('user.discussions', user),
|
||||
href: app.route('user.discussions', {username: user.username()}),
|
||||
label: 'Discussions',
|
||||
icon: 'reorder',
|
||||
badge: user.discussionsCount()
|
||||
@ -103,7 +103,7 @@ export default class UserPage extends Component {
|
||||
|
||||
items.add('posts',
|
||||
NavItem.component({
|
||||
href: app.route('user.posts', user),
|
||||
href: app.route('user.posts', {username: user.username()}),
|
||||
label: 'Posts',
|
||||
icon: 'comment-o',
|
||||
badge: user.commentsCount()
|
||||
|
@ -10,11 +10,14 @@ class App {
|
||||
this.initializers.toArray().forEach((initializer) => initializer(this));
|
||||
}
|
||||
|
||||
route(name, args, queryParams) {
|
||||
var queryString = m.route.buildQueryString(queryParams);
|
||||
return this.routes[name][0].replace(/:([^\/]+)/g, function(m, t) {
|
||||
return typeof args[t] === 'function' ? args[t]() : args[t];
|
||||
}) + (queryString ? '?'+queryString : '');
|
||||
route(name, params) {
|
||||
var url = this.routes[name][0].replace(/:([^\/]+)/g, function(m, t) {
|
||||
var value = params[t];
|
||||
delete params[t];
|
||||
return value;
|
||||
});
|
||||
var queryString = m.route.buildQueryString(params);
|
||||
return url+(queryString ? '?'+queryString : '');
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user