diff --git a/app/assets/javascripts/admin/templates/components/penalty-post-action.hbs b/app/assets/javascripts/admin/templates/components/penalty-post-action.hbs
index 1a672329cd2..a6c848541ff 100644
--- a/app/assets/javascripts/admin/templates/components/penalty-post-action.hbs
+++ b/app/assets/javascripts/admin/templates/components/penalty-post-action.hbs
@@ -1,7 +1,7 @@
{{combo-box
diff --git a/app/assets/javascripts/admin/templates/components/silence-details.hbs b/app/assets/javascripts/admin/templates/components/silence-details.hbs
index 3f7c19d5ba5..af1b4980d5b 100644
--- a/app/assets/javascripts/admin/templates/components/silence-details.hbs
+++ b/app/assets/javascripts/admin/templates/components/silence-details.hbs
@@ -1,7 +1,7 @@
{{text-field
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/bool.hbs b/app/assets/javascripts/admin/templates/components/site-settings/bool.hbs
index 1c6c2101ae8..11384580c13 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/bool.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/bool.hbs
@@ -1,5 +1,5 @@
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/category-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/category-list.hbs
index 6d8871b306c..b9609e28432 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/category-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/category-list.hbs
@@ -3,5 +3,5 @@
onChange=(action "onChangeSelectedCategories")
}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
{{setting-validation-message message=validationMessage}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/category.hbs b/app/assets/javascripts/admin/templates/components/site-settings/category.hbs
index 4f23fcc0211..4358b408de6 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/category.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/category.hbs
@@ -4,4 +4,4 @@
onChange=(action (mut value))
}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/color.hbs b/app/assets/javascripts/admin/templates/components/site-settings/color.hbs
index baf81ab3894..7b9b5bf2a88 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/color.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/color.hbs
@@ -6,4 +6,4 @@
onChangeColor=(action "onChangeColor")
}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs
index 621baec0b16..1e7e369b93d 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/compact-list.hbs
@@ -8,4 +8,4 @@
}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/enum.hbs b/app/assets/javascripts/admin/templates/components/site-settings/enum.hbs
index dc33e28df5a..0b4104086e2 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/enum.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/enum.hbs
@@ -15,5 +15,5 @@
{{setting-validation-message message=validationMessage}}
- {{{setting.description}}}
+ {{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
index 8f4263a72eb..091573eb533 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
@@ -7,4 +7,4 @@
onChange=(action "onChangeGroupListSetting")
}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/host-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/host-list.hbs
index 5277c26c69d..70366aba38c 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/host-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/host-list.hbs
@@ -1,3 +1,3 @@
{{value-list values=value addKey="admin.site_settings.add_host"}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/list.hbs
index 268723c92d4..090cc2a5f15 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/list.hbs
@@ -1,3 +1,3 @@
{{value-list values=value inputDelimiter="|" choices=setting.choices}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/secret-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/secret-list.hbs
index a4ff6f1bd4a..74519598419 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/secret-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/secret-list.hbs
@@ -1,3 +1,3 @@
{{secret-value-list setting=setting values=value isSecret=isSecret}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/string.hbs b/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
index d71278f7236..160f041df91 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/string.hbs
@@ -7,4 +7,4 @@
{{/if}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
index 271e4d03264..21e7e1ab0a5 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/tag-list.hbs
@@ -1,3 +1,3 @@
{{tag-chooser tags=selectedTags}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
{{setting-validation-message message=validationMessage}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/upload.hbs b/app/assets/javascripts/admin/templates/components/site-settings/upload.hbs
index 86940d8633b..2758b7be5a0 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/upload.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/upload.hbs
@@ -1,2 +1,2 @@
{{site-settings-image-uploader imageUrl=value placeholderUrl=setting.placeholder type="site_setting"}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/uploaded-image-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/uploaded-image-list.hbs
index 82dc38d6533..146c9d3722b 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/uploaded-image-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/uploaded-image-list.hbs
@@ -1,2 +1,2 @@
{{d-button label="admin.site_settings.uploaded_image_list.label" action=(action "showUploadModal") actionParam=(hash value=value setting=setting)}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/url-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/url-list.hbs
index 67db58f8ea6..7a6cdc517ba 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/url-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/url-list.hbs
@@ -1,3 +1,3 @@
{{value-list values=value addKey="admin.site_settings.add_url"}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/value-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/value-list.hbs
index 3003b375ee2..234ec83f3c5 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/value-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/value-list.hbs
@@ -1,3 +1,3 @@
{{value-list values=value}}
{{setting-validation-message message=validationMessage}}
-
{{{setting.description}}}
+
{{html-safe setting.description}}
diff --git a/app/assets/javascripts/admin/templates/components/suspension-details.hbs b/app/assets/javascripts/admin/templates/components/suspension-details.hbs
index 0f2aa0fc848..4dcc606b2b9 100644
--- a/app/assets/javascripts/admin/templates/components/suspension-details.hbs
+++ b/app/assets/javascripts/admin/templates/components/suspension-details.hbs
@@ -2,9 +2,9 @@
diff --git a/app/assets/javascripts/admin/templates/components/themes-list-item.hbs b/app/assets/javascripts/admin/templates/components/themes-list-item.hbs
index 1286937f8ab..0c253e02143 100644
--- a/app/assets/javascripts/admin/templates/components/themes-list-item.hbs
+++ b/app/assets/javascripts/admin/templates/components/themes-list-item.hbs
@@ -28,14 +28,14 @@
{{#if displayComponents}}
-
{{{childrenString}}}
+
{{html-safe childrenString}}
{{#if displayHasMore}}
{{#if childrenExpanded}}
- {{I18n "admin.customize.theme.collapse"}}
+ {{i18n "admin.customize.theme.collapse"}}
{{else}}
- {{I18n "admin.customize.theme.and_x_more" count=moreCount}}
+ {{i18n "admin.customize.theme.and_x_more" count=moreCount}}
{{/if}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/components/themes-list.hbs b/app/assets/javascripts/admin/templates/components/themes-list.hbs
index 29935b95b8c..4654371a234 100644
--- a/app/assets/javascripts/admin/templates/components/themes-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/themes-list.hbs
@@ -25,9 +25,9 @@
{{#if themesTabActive}}
- {{I18n "admin.customize.theme.inactive_themes"}}
+ {{i18n "admin.customize.theme.inactive_themes"}}
{{else}}
- {{I18n "admin.customize.theme.inactive_components"}}
+ {{i18n "admin.customize.theme.inactive_components"}}
{{/if}}
@@ -41,7 +41,7 @@
{{/if}}
{{else}}
- {{I18n "admin.customize.theme.empty"}}
+ {{i18n "admin.customize.theme.empty"}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/customize-themes-index.hbs b/app/assets/javascripts/admin/templates/customize-themes-index.hbs
index 0a6060724b2..32ad33db105 100644
--- a/app/assets/javascripts/admin/templates/customize-themes-index.hbs
+++ b/app/assets/javascripts/admin/templates/customize-themes-index.hbs
@@ -1,7 +1,7 @@
-
{{I18n "admin.customize.theme.themes_intro"}}
+
{{i18n "admin.customize.theme.themes_intro"}}
{{d-button action=(route-action "installModal") icon="upload" label="admin.customize.install" class="btn-primary"}}
@@ -9,7 +9,7 @@
{{#each externalResources as |resource|}}
{{d-icon resource.icon}}
- {{I18n resource.key}}
+ {{i18n resource.key}}
{{/each}}
diff --git a/app/assets/javascripts/admin/templates/customize-themes-show.hbs b/app/assets/javascripts/admin/templates/customize-themes-show.hbs
index 9fb7fcb4cf3..b4c4e9a8f46 100644
--- a/app/assets/javascripts/admin/templates/customize-themes-show.hbs
+++ b/app/assets/javascripts/admin/templates/customize-themes-show.hbs
@@ -89,7 +89,7 @@
{{#if showRemoteError}}
- {{d-icon "exclamation-triangle"}} {{I18n "admin.customize.theme.repo_unreachable"}}
+ {{d-icon "exclamation-triangle"}} {{i18n "admin.customize.theme.repo_unreachable"}}
{{model.remoteError}}
diff --git a/app/assets/javascripts/admin/templates/dashboard-problems.hbs b/app/assets/javascripts/admin/templates/dashboard-problems.hbs
index 0f0b1f9d290..5f95987e738 100644
--- a/app/assets/javascripts/admin/templates/dashboard-problems.hbs
+++ b/app/assets/javascripts/admin/templates/dashboard-problems.hbs
@@ -12,7 +12,7 @@
{{#each problems as |problem|}}
- - {{{problem}}}
+ - {{html-safe problem}}
{{/each}}
diff --git a/app/assets/javascripts/admin/templates/dashboard_general.hbs b/app/assets/javascripts/admin/templates/dashboard_general.hbs
index 19f892ab0f6..d190b7664b7 100644
--- a/app/assets/javascripts/admin/templates/dashboard_general.hbs
+++ b/app/assets/javascripts/admin/templates/dashboard_general.hbs
@@ -142,7 +142,7 @@
filters=trendingSearchFilters
isEnabled=logSearchQueriesEnabled
disabledLabel=trendingSearchDisabledLabel}}
- {{{i18n "admin.dashboard.reports.trending_search.more" basePath=basePath}}}
+ {{i18n "admin.dashboard.reports.trending_search.more" basePath=basePath}}
diff --git a/app/assets/javascripts/admin/templates/email-advanced-test.hbs b/app/assets/javascripts/admin/templates/email-advanced-test.hbs
index 97a479e2c5e..f0dcaa5c6af 100644
--- a/app/assets/javascripts/admin/templates/email-advanced-test.hbs
+++ b/app/assets/javascripts/admin/templates/email-advanced-test.hbs
@@ -14,13 +14,13 @@
{{i18n 'admin.email.advanced_test.text'}}
-
{{{text}}}
+
{{html-safe text}}
{{i18n 'admin.email.advanced_test.elided'}}
-
{{{elided}}}
+
{{html-safe elided}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/email-preview-digest.hbs b/app/assets/javascripts/admin/templates/email-preview-digest.hbs
index 078b642dd4c..7a695659c54 100644
--- a/app/assets/javascripts/admin/templates/email-preview-digest.hbs
+++ b/app/assets/javascripts/admin/templates/email-preview-digest.hbs
@@ -53,7 +53,7 @@
{{/if}}
{{else}}
-
{{{model.text_content}}}
+
{{html-safe model.text_content}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/embedding.hbs b/app/assets/javascripts/admin/templates/embedding.hbs
index f4ada49e1be..17772636745 100644
--- a/app/assets/javascripts/admin/templates/embedding.hbs
+++ b/app/assets/javascripts/admin/templates/embedding.hbs
@@ -23,7 +23,7 @@
{{#if showSecondary}}
-
{{{i18n "admin.embedding.sample"}}}
+
{{i18n "admin.embedding.sample"}}
{{highlighted-code code=embeddingCode lang="html"}}
diff --git a/app/assets/javascripts/admin/templates/logs/staff-action-logs.hbs b/app/assets/javascripts/admin/templates/logs/staff-action-logs.hbs
index 02c4160b6ac..ab4c70d39e4 100644
--- a/app/assets/javascripts/admin/templates/logs/staff-action-logs.hbs
+++ b/app/assets/javascripts/admin/templates/logs/staff-action-logs.hbs
@@ -88,7 +88,7 @@
{{age-with-tooltip item.created_at}} |
- {{{item.formattedDetails}}}
+ {{html-safe item.formattedDetails}}
{{#if item.useCustomModalForDetails}}
{{d-icon "info-circle"}} {{i18n 'admin.logs.staff_actions.show'}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/modal/admin-badge-preview.hbs b/app/assets/javascripts/admin/templates/modal/admin-badge-preview.hbs
index ef36e4aa059..528ed5af240 100644
--- a/app/assets/javascripts/admin/templates/modal/admin-badge-preview.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin-badge-preview.hbs
@@ -17,9 +17,9 @@
{{else}}
{{#if count}}
- {{{i18n "admin.badges.preview.grant_count" count=count}}}
+ {{i18n "admin.badges.preview.grant_count" count=count}}
{{else}}
- {{{i18n "admin.badges.preview.no_grant_count"}}}
+ {{i18n "admin.badges.preview.no_grant_count"}}
{{/if}}
@@ -41,14 +41,14 @@
{{#each processedSample as |html|}}
- - {{{html}}}
+ - {{html-safe html}}
{{/each}}
{{/if}}
{{#if hasQueryPlan}}
- {{{queryPlanHtml}}}
+ {{html-safe queryPlanHtml}}
{{/if}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/modal/admin-install-theme.hbs b/app/assets/javascripts/admin/templates/modal/admin-install-theme.hbs
index aab0b17d71d..5ed497ae577 100644
--- a/app/assets/javascripts/admin/templates/modal/admin-install-theme.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin-install-theme.hbs
@@ -24,7 +24,7 @@
@@ -85,10 +85,10 @@
{{#if create}}
|
{{i18n 'admin.users.last_emailed'}}
- {{{format-duration user.last_emailed_age}}}
+ {{format-duration user.last_emailed_age}}
|
{{i18n 'last_seen'}}
- {{{format-duration user.last_seen_age}}}
+ {{format-duration user.last_seen_age}}
|
{{i18n 'admin.user.topics_entered'}}
@@ -69,12 +69,12 @@
|
{{i18n 'admin.user.time_read'}}
- {{{format-duration user.time_read}}}
+ {{format-duration user.time_read}}
|
{{i18n 'created'}}
- {{{format-duration user.created_at_age}}}
+ {{format-duration user.created_at_age}}
|
{{#if siteSettings.must_approve_users}}
diff --git a/app/assets/javascripts/discourse-common/helpers/html-safe.js.es6 b/app/assets/javascripts/discourse-common/helpers/html-safe.js.es6
new file mode 100644
index 00000000000..dc6d5daf745
--- /dev/null
+++ b/app/assets/javascripts/discourse-common/helpers/html-safe.js.es6
@@ -0,0 +1,6 @@
+import { registerUnbound } from "discourse-common/lib/helpers";
+import { htmlSafe } from "@ember/template";
+
+registerUnbound("html-safe", function(string) {
+ return htmlSafe(string);
+});
diff --git a/app/assets/javascripts/discourse-common/helpers/i18n.js.es6 b/app/assets/javascripts/discourse-common/helpers/i18n.js.es6
index 902ed699bfd..c3d7f1e448c 100644
--- a/app/assets/javascripts/discourse-common/helpers/i18n.js.es6
+++ b/app/assets/javascripts/discourse-common/helpers/i18n.js.es6
@@ -1,6 +1,7 @@
import { registerUnbound } from "discourse-common/lib/helpers";
+import { htmlSafe } from "@ember/template";
-registerUnbound("i18n", (key, params) => I18n.t(key, params));
+registerUnbound("i18n", (key, params) => htmlSafe(I18n.t(key, params)));
registerUnbound("i18n-yes-no", (value, params) =>
I18n.t(value ? "yes_value" : "no_value", params)
);
diff --git a/app/assets/javascripts/discourse/components/text-overflow.js.es6 b/app/assets/javascripts/discourse/components/text-overflow.js.es6
index 90a9cc21a27..201172f1efe 100644
--- a/app/assets/javascripts/discourse/components/text-overflow.js.es6
+++ b/app/assets/javascripts/discourse/components/text-overflow.js.es6
@@ -1,8 +1,19 @@
import { next } from "@ember/runloop";
+import { htmlSafe } from "@ember/template";
import Component from "@ember/component";
+
export default Component.extend({
+ text: null,
+
+ init() {
+ this._super(...arguments);
+
+ this.set("text", htmlSafe(this.text));
+ },
+
didInsertElement() {
this._super(...arguments);
+
next(null, () => {
const $this = $(this.element);
diff --git a/app/assets/javascripts/discourse/helpers/application.js.es6 b/app/assets/javascripts/discourse/helpers/application.js.es6
index 71baa92c914..27727c1d846 100644
--- a/app/assets/javascripts/discourse/helpers/application.js.es6
+++ b/app/assets/javascripts/discourse/helpers/application.js.es6
@@ -4,14 +4,12 @@ import {
autoUpdatingRelativeAge,
number
} from "discourse/lib/formatter";
+import { htmlSafe } from "@ember/template";
-const safe = Handlebars.SafeString;
+registerUnbound("raw-date", dt => htmlSafe(longDate(new Date(dt))));
-registerUnbound("raw-date", dt => longDate(new Date(dt)));
-
-registerUnbound(
- "age-with-tooltip",
- dt => new safe(autoUpdatingRelativeAge(new Date(dt), { title: true }))
+registerUnbound("age-with-tooltip", dt =>
+ htmlSafe(autoUpdatingRelativeAge(new Date(dt), { title: true }))
);
registerUnbound("number", (orig, params) => {
@@ -48,5 +46,5 @@ registerUnbound("number", (orig, params) => {
result += ">" + n + "";
- return new safe(result);
+ return htmlSafe(result);
});
diff --git a/app/assets/javascripts/discourse/helpers/dir-span.js.es6 b/app/assets/javascripts/discourse/helpers/dir-span.js.es6
index d41f1a332e3..e210c471fd5 100644
--- a/app/assets/javascripts/discourse/helpers/dir-span.js.es6
+++ b/app/assets/javascripts/discourse/helpers/dir-span.js.es6
@@ -1,5 +1,6 @@
import { registerUnbound } from "discourse-common/lib/helpers";
import { isRTL } from "discourse/lib/text-direction";
+import { htmlSafe } from "@ember/template";
function setDir(text) {
let content = text ? text : "";
@@ -11,5 +12,5 @@ function setDir(text) {
}
export default registerUnbound("dir-span", function(str) {
- return new Handlebars.SafeString(setDir(str));
+ return htmlSafe(setDir(str));
});
diff --git a/app/assets/javascripts/discourse/helpers/format-age.js.es6 b/app/assets/javascripts/discourse/helpers/format-age.js.es6
index 3141a0da858..b8874820edc 100644
--- a/app/assets/javascripts/discourse/helpers/format-age.js.es6
+++ b/app/assets/javascripts/discourse/helpers/format-age.js.es6
@@ -1,11 +1,12 @@
import { autoUpdatingRelativeAge, durationTiny } from "discourse/lib/formatter";
import { registerUnbound } from "discourse-common/lib/helpers";
+import { htmlSafe } from "@ember/template";
registerUnbound("format-age", function(dt) {
dt = new Date(dt);
- return new Handlebars.SafeString(autoUpdatingRelativeAge(dt));
+ return htmlSafe(autoUpdatingRelativeAge(dt));
});
registerUnbound("format-duration", function(seconds) {
- return new Handlebars.SafeString(durationTiny(seconds));
+ return htmlSafe(durationTiny(seconds));
});
diff --git a/app/assets/javascripts/discourse/lib/computed.js.es6 b/app/assets/javascripts/discourse/lib/computed.js.es6
index acd6cde60ba..e238320a389 100644
--- a/app/assets/javascripts/discourse/lib/computed.js.es6
+++ b/app/assets/javascripts/discourse/lib/computed.js.es6
@@ -1,5 +1,6 @@
import { computed } from "@ember/object";
import addonFmt from "ember-addons/fmt";
+import { htmlSafe as htmlSafeTemplateHelper } from "@ember/template";
/**
Returns whether two properties are equal to each other.
@@ -56,6 +57,21 @@ export function i18n(...args) {
return I18n.t(addonFmt(format, ...args.map(a => this.get(a))));
});
}
+/**
+ Returns htmlSafe version of a string.
+
+ @method htmlSafe
+ @params {String} properties* to htmlify
+ @return {Function} discourseComputedProperty function
+**/
+export function htmlSafe(...args) {
+ return computed(...args, {
+ get() {
+ const path = args.pop();
+ return htmlSafeTemplateHelper(this.get(path));
+ }
+ });
+}
/**
Uses an Ember String `fmt` call to format a string. See:
diff --git a/app/assets/javascripts/discourse/templates/about.hbs b/app/assets/javascripts/discourse/templates/about.hbs
index 6e75a04a6df..ad65dbb57e5 100644
--- a/app/assets/javascripts/discourse/templates/about.hbs
+++ b/app/assets/javascripts/discourse/templates/about.hbs
@@ -112,7 +112,7 @@
{{#if contactInfo}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/templates/account-created/index.hbs b/app/assets/javascripts/discourse/templates/account-created/index.hbs
index 8c9babb1f98..8122270cd69 100644
--- a/app/assets/javascripts/discourse/templates/account-created/index.hbs
+++ b/app/assets/javascripts/discourse/templates/account-created/index.hbs
@@ -1,5 +1,5 @@
- {{{accountCreated.message}}}
+ {{html-safe accountCreated.message}}
{{#if accountCreated.show_controls}}
{{activation-controls sendActivationEmail=(action "sendActivationEmail")
diff --git a/app/assets/javascripts/discourse/templates/account-created/resent.hbs b/app/assets/javascripts/discourse/templates/account-created/resent.hbs
index 8647596a048..5ad9168986f 100644
--- a/app/assets/javascripts/discourse/templates/account-created/resent.hbs
+++ b/app/assets/javascripts/discourse/templates/account-created/resent.hbs
@@ -1,6 +1,6 @@
{{#if email}}
- {{{i18n 'login.sent_activation_email_again' currentEmail=email}}}
+ {{i18n 'login.sent_activation_email_again' currentEmail=email}}
{{else}}
{{i18n 'login.sent_activation_email_again_generic'}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/templates/badges/show.hbs b/app/assets/javascripts/discourse/templates/badges/show.hbs
index 09ded422b37..fe7b489159a 100644
--- a/app/assets/javascripts/discourse/templates/badges/show.hbs
+++ b/app/assets/javascripts/discourse/templates/badges/show.hbs
@@ -42,7 +42,7 @@
{{#user-info user=ub.user size="medium" class="badge-info" date=ub.granted_at}}
{{i18n 'badges.granted_on' date=(inline-date ub.granted_at)}}
{{#if ub.post_number}}
-
{{{ub.topic.fancyTitle}}}
+
{{html-safe ub.topic.fancyTitle}}
{{/if}}
{{/user-info}}
{{/each}}
diff --git a/app/assets/javascripts/discourse/templates/components/about-page-users.hbs b/app/assets/javascripts/discourse/templates/components/about-page-users.hbs
index f7bfd9886b5..4b7161ba185 100644
--- a/app/assets/javascripts/discourse/templates/components/about-page-users.hbs
+++ b/app/assets/javascripts/discourse/templates/components/about-page-users.hbs
@@ -3,7 +3,7 @@
diff --git a/app/assets/javascripts/discourse/templates/components/badge-card.hbs b/app/assets/javascripts/discourse/templates/components/badge-card.hbs
index 0fdc3bd2753..4fb6aa77c02 100644
--- a/app/assets/javascripts/discourse/templates/components/badge-card.hbs
+++ b/app/assets/javascripts/discourse/templates/components/badge-card.hbs
@@ -11,7 +11,7 @@
-
{{{summary}}}
+
{{html-safe summary}}
diff --git a/app/assets/javascripts/discourse/templates/components/categories-boxes.hbs b/app/assets/javascripts/discourse/templates/components/categories-boxes.hbs
index 5dc594c6910..232edea06b7 100644
--- a/app/assets/javascripts/discourse/templates/components/categories-boxes.hbs
+++ b/app/assets/javascripts/discourse/templates/components/categories-boxes.hbs
@@ -24,7 +24,7 @@
- {{{text-overflow class="overflow" text=c.description_excerpt}}}
+ {{text-overflow class="overflow" text=c.description_excerpt}}
{{#if c.isGrandParent}}
{{#each c.subcategories as |subcategory|}}
diff --git a/app/assets/javascripts/discourse/templates/components/categories-only.hbs b/app/assets/javascripts/discourse/templates/components/categories-only.hbs
index 4f153b4e7fa..ae71465bf07 100644
--- a/app/assets/javascripts/discourse/templates/components/categories-only.hbs
+++ b/app/assets/javascripts/discourse/templates/components/categories-only.hbs
@@ -16,7 +16,7 @@
{{category-title-link category=c}}
{{#if c.description_excerpt}}
- {{{dir-span c.description_excerpt}}}
+ {{dir-span c.description_excerpt}}
{{/if}}
{{#if c.isGrandParent}}
@@ -28,7 +28,7 @@
{{category-title-link tagName="h4" category=subcategory}}
{{#if subcategory.description_excerpt}}
- {{{dir-span subcategory.description_excerpt}}}
+ {{dir-span subcategory.description_excerpt}}
{{/if}}
{{#if subcategory.subcategories}}
@@ -45,7 +45,7 @@
{{else}}
{{#if subcategory.description_excerpt}}
- {{{dir-span subcategory.description_excerpt}}}
+ {{dir-span subcategory.description_excerpt}}
{{/if}}
{{/if}}
@@ -69,7 +69,7 @@
{{/if}}
{{#if showTopics}}
diff --git a/app/assets/javascripts/discourse/templates/components/d-button.hbs b/app/assets/javascripts/discourse/templates/components/d-button.hbs
index 755e4ea857f..aeb5f6b6f65 100644
--- a/app/assets/javascripts/discourse/templates/components/d-button.hbs
+++ b/app/assets/javascripts/discourse/templates/components/d-button.hbs
@@ -3,7 +3,7 @@
{{/if}}
{{#if translatedLabel}}
-
{{/if}}
{{yield}}
diff --git a/app/assets/javascripts/discourse/templates/components/d-editor.hbs b/app/assets/javascripts/discourse/templates/components/d-editor.hbs
index f868131b63b..97effd78d47 100644
--- a/app/assets/javascripts/discourse/templates/components/d-editor.hbs
+++ b/app/assets/javascripts/discourse/templates/components/d-editor.hbs
@@ -46,7 +46,7 @@