feat: wiki badge and /wiki links in global search results
Override Harmony's search partials so results tagged by the wiki plugin (isWikiArticle + wikiPath) show a gold Wiki badge and link to /wiki/... instead of /post/..., in the quick-search dropdown and both /search views. Forum results render unchanged; posts_list_item is shared with account and group pages, where the flags are never set and the conditional no-ops. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<li component="post" class="posts-list-item {{{ if ./deleted }}} deleted{{{ else }}}{{{ if ./topic.deleted }}} deleted{{{ end }}}{{{ end }}}{{{ if ./topic.scheduled }}} scheduled{{{ end }}}" data-pid="{./pid}" data-uid="{./uid}">
|
||||
<hr/>
|
||||
<a class="topic-title fw-semibold fs-5 mb-2 text-reset text-break d-block" href="{{{ if ./isWikiArticle }}}{config.relative_path}{./wikiPath}{{{ else }}}{config.relative_path}/post/{encodeURIComponent(./pid)}{{{ end }}}">
|
||||
{{{ if ./isWikiArticle }}}<span class="badge westgate-wiki-badge"><i class="fa fa-book-open"></i> [[westgate:wiki-badge]]</span> {{{ else }}}{{{ if ./isMainPost }}}<i class="fa fa-book text-muted" title="[[topic:topic]]"></i> {{{ end }}}{{{ end }}}{./topic.title}
|
||||
</a>
|
||||
|
||||
<div class="post-body d-flex flex-column gap-1 mb-2">
|
||||
<div class="d-flex gap-2 post-info text-sm align-items-center">
|
||||
<div class="post-author d-flex align-items-center gap-1">
|
||||
<a class="lh-1 text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "16px", true, "not-responsive")}</a>
|
||||
<a class="lh-1 fw-semibold" href="{config.relative_path}/user/{./user.userslug}">{../user.displayname}</a>
|
||||
</div>
|
||||
<span class="timeago text-muted lh-1" title="{./timestampISO}"></span>
|
||||
</div>
|
||||
|
||||
<div component="post/content" class="content text-sm text-break">
|
||||
{./content}
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 d-flex flex-wrap gap-1 w-100">
|
||||
{buildCategoryLabel(./category, "a", "border")}
|
||||
<span data-tid="{./topic.tid}" component="topic/tags" class="lh-1 tag-list d-flex flex-wrap gap-1 {{{ if !./topic.tags.length }}}hidden{{{ end }}}">
|
||||
{{{ each ./topic.tags }}}
|
||||
<a href="{config.relative_path}/tags/{./valueEncoded}"><span class="badge border border-gray-300 fw-normal tag tag-class-{./class}" data-tag="{./value}">{./valueEscaped}</span></a>
|
||||
{{{ end }}}
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
@@ -0,0 +1,50 @@
|
||||
{{{ if (multiplePages && !config.theme.topMobilebar) }}}
|
||||
<div class="show-more-container">
|
||||
<div class="text-center d-block d-md-none">
|
||||
<a href="{url}" class="btn btn-sm btn-primary">[[search:see-more-results, {matchCount}]]</a>
|
||||
</div>
|
||||
<li role="separator" class="dropdown-divider d-block d-md-none"></li>
|
||||
</div>
|
||||
{{{ end }}}
|
||||
|
||||
<ul id="quick-search-results" class="quick-search-results list-unstyled mb-0 p-0 pe-1 overflow-auto overscroll-behavior-contain ff-base ghost-scrollbar" style="max-width: {dropdown.maxWidth}; max-height: {dropdown.maxHeight};">
|
||||
<li role="separator" class="dropdown-divider d-none d-md-block"></li>
|
||||
{{{ each posts }}}
|
||||
<li data-tid="{posts.topic.tid}" data-pid="{posts.pid}" class="d-flex flex-column gap-1">
|
||||
<a href="{{{ if posts.isWikiArticle }}}{config.relative_path}{posts.wikiPath}{{{ else }}}{config.relative_path}/post/{encodeURIComponent(posts.pid)}{{{ end }}}"
|
||||
class="btn btn-ghost btn-sm ff-secondary rounded-1 text-start text-reset d-block text-truncate px-2 py-1">
|
||||
{{{ if posts.isWikiArticle }}}<span class="badge westgate-wiki-badge"><i class="fa fa-book-open"></i> [[westgate:wiki-badge]]</span> {{{ end }}}<span class="quick-search-title fw-semibold text-sm">{posts.topic.title}</span>
|
||||
<br/>
|
||||
<p class="snippet text-xs text-break text-wrap mb-0">
|
||||
{posts.snippet}
|
||||
</p>
|
||||
</a>
|
||||
<div class="d-flex gap-2 post-info px-2 text-xs">
|
||||
<div class="category-item d-inline-block ff-secondary">
|
||||
{buildCategoryLabel(posts.category, "span")}
|
||||
</div>
|
||||
<span class="timeago text-muted" title="{posts.timestampISO}"></span>
|
||||
</div>
|
||||
</li>
|
||||
{{{ if !@last }}}
|
||||
<li role="separator" class="dropdown-divider"></li>
|
||||
{{{ end }}}
|
||||
{{{ end }}}
|
||||
|
||||
</ul>
|
||||
|
||||
{{{ if multiplePages }}}
|
||||
<div class="text-center mt-2 d-none d-md-block">
|
||||
<a href="{url}" class="btn btn-sm btn-primary">[[search:see-more-results, {matchCount}]]</a>
|
||||
</div>
|
||||
{{{ end }}}
|
||||
{{{ if (multiplePages && config.theme.topMobilebar) }}}
|
||||
<div class="text-center mt-2 d-block d-md-none">
|
||||
<a href="{url}" class="btn btn-sm btn-primary">[[search:see-more-results, {matchCount}]]</a>
|
||||
</div>
|
||||
{{{ end }}}
|
||||
|
||||
{{{if !posts.length}}}
|
||||
<div class="text-center no-results py-2 py-md-0">[[search:no-matches]]</li>
|
||||
<li role="separator" class="dropdown-divider d-block d-md-none"></li>
|
||||
{{{end}}}
|
||||
@@ -0,0 +1,55 @@
|
||||
{{{ if matchCount }}}
|
||||
<div class="card card-header text-xs px-2 py-1 fw-semibold border-0 align-self-start">[[search:results-matching, {matchCount}, {search_query}, {time}]] </div>
|
||||
{{{ else }}}
|
||||
{{{ if search_query }}}
|
||||
<div class="badge text-bg-warning align-self-start">[[search:no-matches]]</div>
|
||||
{{{ end }}}
|
||||
{{{ end }}}
|
||||
|
||||
<div id="results" class="search-results" data-search-query="{search_query}">
|
||||
{{{ if showAsPosts }}}
|
||||
{{{ if posts.length }}}
|
||||
<!-- IMPORT partials/posts_list.tpl -->
|
||||
{{{ end }}}
|
||||
{{{ end }}}
|
||||
|
||||
{{{ if showAsTopics }}}
|
||||
{{{ each posts }}}
|
||||
<hr/>
|
||||
<div class="topic-row mb-3">
|
||||
<a class="topic-title fw-semibold fs-5 text-reset text-break" href="{{{ if ./isWikiArticle }}}{config.relative_path}{./wikiPath}{{{ else }}}{config.relative_path}/post/{encodeURIComponent(./pid)}{{{ end }}}">
|
||||
{{{ if ./isWikiArticle }}}<span class="badge westgate-wiki-badge"><i class="fa fa-book-open"></i> [[westgate:wiki-badge]]</span> {{{ end }}}{{{ if !./isMainPost }}}RE: {{{ end }}}{./topic.title}
|
||||
</a>
|
||||
<div class="post-body d-flex flex-column gap-1">
|
||||
<div class="d-flex gap-3 post-info">
|
||||
<div class="post-author d-flex gap-1">
|
||||
<a class="lh-1 text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "16px", true, "not-responsive")}</a>
|
||||
<a class="fw-semibold text-sm" href="{config.relative_path}/user/{./user.userslug}">{../user.displayname}</a>
|
||||
</div>
|
||||
<span class="timeago text-sm text-muted" title="{./timestampISO}"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{{ end }}}
|
||||
{{{ end }}}
|
||||
|
||||
{{{ if users.length }}}
|
||||
<!-- IMPORT partials/users_list.tpl -->
|
||||
{{{ end }}}
|
||||
|
||||
{{{ if tags.length }}}
|
||||
<div class="tag-list row row-cols-2 row-cols-lg-3 row-cols-xl-4 gx-3 gy-2">
|
||||
<!-- IMPORT partials/tags_list.tpl -->
|
||||
</div>
|
||||
{{{ end }}}
|
||||
|
||||
{{{ if categories.length }}}
|
||||
<ul class="categories list-unstyled">
|
||||
{{{each categories}}}
|
||||
<!-- IMPORT partials/categories/item.tpl -->
|
||||
{{{end}}}
|
||||
</ul>
|
||||
{{{ end }}}
|
||||
|
||||
<!-- IMPORT partials/paginator.tpl -->
|
||||
</div>
|
||||
Reference in New Issue
Block a user