- {{#if this.user.featured_user_badges}}
-
- {{#each this.user.featured_user_badges as |ub|}}
-
- {{/each}}
- {{#if this.showMoreBadges}}
-
-
- {{i18n "badges.more_badges" count=this.moreBadgesCount}}
-
-
- {{/if}}
-
- {{/if}}
+
+ {{#if this.user.featured_user_badges}}
+
+ {{#each this.user.featured_user_badges as |ub|}}
+
+ {{/each}}
+ {{#if this.showMoreBadges}}
+
+
+ {{i18n "badges.more_badges" count=this.moreBadgesCount}}
+
+
+ {{/if}}
+
+ {{/if}}
+
{{/if}}
{{/if}}
diff --git a/app/assets/javascripts/discourse/app/lib/transformer/registry.js b/app/assets/javascripts/discourse/app/lib/transformer/registry.js
index 985246e89e1..33bc05e79d3 100644
--- a/app/assets/javascripts/discourse/app/lib/transformer/registry.js
+++ b/app/assets/javascripts/discourse/app/lib/transformer/registry.js
@@ -2,4 +2,5 @@ export const VALUE_TRANSFORMERS = Object.freeze([
// use only lowercase names
"header-notifications-avatar-size",
"home-logo-href",
+ "small-user-attrs",
]);
diff --git a/app/assets/javascripts/discourse/app/lib/user-list-attrs.js b/app/assets/javascripts/discourse/app/lib/user-list-attrs.js
new file mode 100644
index 00000000000..dd03989ec00
--- /dev/null
+++ b/app/assets/javascripts/discourse/app/lib/user-list-attrs.js
@@ -0,0 +1,16 @@
+import { applyValueTransformer } from "discourse/lib/transformer";
+import { userPath } from "discourse/lib/url";
+
+export function smallUserAttrs(user) {
+ const defaultAttrs = {
+ template: user.avatar_template,
+ username: user.username,
+ post_url: user.post_url,
+ url: userPath(user.username_lower),
+ unknown: user.unknown,
+ };
+
+ return applyValueTransformer("small-user-attrs", defaultAttrs, {
+ user,
+ });
+}
diff --git a/app/assets/javascripts/discourse/app/templates/user/badges.hbs b/app/assets/javascripts/discourse/app/templates/user/badges.hbs
index 4419f262f56..65ba2aaeb71 100644
--- a/app/assets/javascripts/discourse/app/templates/user/badges.hbs
+++ b/app/assets/javascripts/discourse/app/templates/user/badges.hbs
@@ -1,30 +1,40 @@
{{body-class "user-badges-page"}}
-
- {{i18n
- "badges.favorite_count"
- count=this.favoriteBadges.length
- max=this.siteSettings.max_favorite_badges
+
-
-
- {{#each this.sortedBadges as |ub|}}
-
+
+ {{i18n
+ "badges.favorite_count"
+ count=this.favoriteBadges.length
+ max=this.siteSettings.max_favorite_badges
+ }}
+
+
+ {{#each this.sortedBadges as |ub|}}
+
+ {{/each}}
+
- {{/each}}
-
-
+
+
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/widgets/post-menu.js b/app/assets/javascripts/discourse/app/widgets/post-menu.js
index 54795d9e253..7fedbc7fbf4 100644
--- a/app/assets/javascripts/discourse/app/widgets/post-menu.js
+++ b/app/assets/javascripts/discourse/app/widgets/post-menu.js
@@ -6,7 +6,7 @@ import AdminPostMenu from "discourse/components/admin-post-menu";
import DeleteTopicDisallowedModal from "discourse/components/modal/delete-topic-disallowed";
import { formattedReminderTime } from "discourse/lib/bookmark";
import { recentlyCopied, showAlert } from "discourse/lib/post-action-feedback";
-import { userPath } from "discourse/lib/url";
+import { smallUserAttrs } from "discourse/lib/user-list-attrs";
import {
NO_REMINDER_ICON,
WITH_REMINDER_ICON,
@@ -53,16 +53,6 @@ function registerButton(name, builder) {
_builders[name] = builder;
}
-function smallUserAtts(user) {
- return {
- template: user.avatar_template,
- username: user.username,
- post_url: user.post_url,
- url: userPath(user.username_lower),
- unknown: user.unknown,
- };
-}
-
export function buildButton(name, widget) {
let { attrs, state, siteSettings, settings, currentUser } = widget;
@@ -904,14 +894,13 @@ export default createWidget("post-menu", {
getWhoLiked() {
const { attrs, state } = this;
-
return this.store
.find("post-action-user", {
id: attrs.id,
post_action_type_id: LIKE_ACTION,
})
.then((users) => {
- state.likedUsers = users.map(smallUserAtts);
+ state.likedUsers = users.map(smallUserAttrs);
state.total = users.totalRows;
});
},
@@ -920,7 +909,7 @@ export default createWidget("post-menu", {
const { attrs, state } = this;
return this.store.find("post-reader", { id: attrs.id }).then((users) => {
- state.readers = users.map(smallUserAtts);
+ state.readers = users.map(smallUserAttrs);
state.totalReaders = users.totalRows;
});
},