mirror of
https://github.com/flarum/core.git
synced 2025-10-12 07:24:27 +02:00
- Changes all `app.trans` calls to `app.translator.trans` calls. - Changes existing keys to [three-tier namespace structure](https://github.com/flarum/english/pull/12). - Extracts additional strings for `lib:` namespace. - Extracts two previously missed strings for EditGroupModal.js.
55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
import highlight from 'flarum/helpers/highlight';
|
|
import LinkButton from 'flarum/components/LinkButton';
|
|
|
|
/**
|
|
* The `DiscussionsSearchSource` finds and displays discussion search results in
|
|
* the search dropdown.
|
|
*
|
|
* @implements SearchSource
|
|
*/
|
|
export default class DiscussionsSearchSource {
|
|
constructor() {
|
|
this.results = {};
|
|
}
|
|
|
|
search(query) {
|
|
this.results[query] = [];
|
|
|
|
const params = {
|
|
filter: {q: query},
|
|
page: {limit: 3},
|
|
include: 'relevantPosts,relevantPosts.discussion,relevantPosts.user'
|
|
};
|
|
|
|
return app.store.find('discussions', params).then(results => this.results[query] = results);
|
|
}
|
|
|
|
view(query) {
|
|
const results = this.results[query] || [];
|
|
|
|
return [
|
|
<li className="Dropdown-header">{app.translator.trans('core.forum.search.discussions_heading')}</li>,
|
|
<li>
|
|
{LinkButton.component({
|
|
icon: 'search',
|
|
children: app.translator.trans('core.forum.search.all_discussions_button', {query}),
|
|
href: app.route('index', {q: query})
|
|
})}
|
|
</li>,
|
|
results.map(discussion => {
|
|
const relevantPosts = discussion.relevantPosts();
|
|
const post = relevantPosts && relevantPosts[0];
|
|
|
|
return (
|
|
<li className="DiscussionSearchResult" data-index={'discussions' + discussion.id()}>
|
|
<a href={app.route.discussion(discussion, post && post.number())} config={m.route}>
|
|
<div className="DiscussionSearchResult-title">{highlight(discussion.title(), query)}</div>
|
|
{post ? <div className="DiscussionSearchResult-excerpt">{highlight(post.contentPlain(), query, 100)}</div> : ''}
|
|
</a>
|
|
</li>
|
|
);
|
|
})
|
|
];
|
|
}
|
|
}
|