Port templates to NodeBB 4.14 benchpress escaping

NodeBB 4.14 registers a real __escape for template rendering (4.13 used
identity), so raw-HTML output must use the double-brace forms:
- HTML helpers: {{buildAvatar(...)}}, {{buildCategoryIcon(...)}}, etc.
- Pre-rendered HTML fields: {{txEscape(content)}} / {{./descriptionParsed}}
- Token-bearing text (nav labels, category names): {{tx(...)}}
- emails/partials/post-queue-body.tpl also adopts the 4.14 data shape
  (notification.category/topic/user/content).

Mirrors the harmony 2.2.72 -> 3.0.15 and core 4.13.2 -> 4.14.0 diffs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 20:24:50 +02:00
co-authored by Claude Fable 5
parent 882c086a6d
commit a8c9bd80ad
14 changed files with 43 additions and 43 deletions
+3 -3
View File
@@ -6,10 +6,10 @@
<div class="category-header d-flex flex-column gap-2">
<div class="d-flex gap-3 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center flex-column{{{ end }}}">
<div class="westgate-category-header-icon flex-shrink-0 {./class}">
{buildCategoryIcon(@value, "60px", "rounded-1")}
{{buildCategoryIcon(@value, "60px", "rounded-1")}}
</div>
<div class="d-flex flex-column gap-1">
<h1 class="tracking-tight fs-3 fw-semibold mb-0">{./name}</h1>
<h1 class="tracking-tight fs-3 fw-semibold mb-0">{{tx(./name)}}</h1>
<div class="d-flex flex-wrap gap-2 align-items-center {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
<span class="badge text-body border border-gray-300 stats text-xs">
<span title="{formattedNumber(totalTopicCount)}" class="fw-bold">{humanReadableNumber(totalTopicCount)}</span>
@@ -33,7 +33,7 @@
</div>
{{{ if ./descriptionParsed }}}
<div class="description text-secondary text-sm lh-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}} line-clamp-4 clamp-fade-sm-4">
{./descriptionParsed}
{{./descriptionParsed}}
</div>
{{{ end }}}
{{{ if ./handleFull }}}