diff --git a/assets/javascripts/discourse/components/solved-accepted-answer.gjs b/assets/javascripts/discourse/components/solved-accepted-answer.gjs index fda655d..5987f5e 100644 --- a/assets/javascripts/discourse/components/solved-accepted-answer.gjs +++ b/assets/javascripts/discourse/components/solved-accepted-answer.gjs @@ -5,12 +5,13 @@ import { action } from "@ember/object"; import { service } from "@ember/service"; import { htmlSafe } from "@ember/template"; import AsyncContent from "discourse/components/async-content"; +import InterpolatedTranslation from "discourse/components/interpolated-translation"; import PostCookedHtml from "discourse/components/post/cooked-html"; +import UserLink from "discourse/components/user-link"; import concatClass from "discourse/helpers/concat-class"; import icon from "discourse/helpers/d-icon"; import { ajax } from "discourse/lib/ajax"; import escape from "discourse/lib/escape"; -import { iconHTML } from "discourse/lib/icon-library"; import { formatUsername } from "discourse/lib/utilities"; import { i18n } from "discourse-i18n"; @@ -40,10 +41,6 @@ export default class SolvedAcceptedAnswer extends Component { const username = this.acceptedAnswer.accepter_username; const name = this.acceptedAnswer.accepter_name; - if (!this.siteSettings.show_who_marked_solved) { - return; - } - const formattedUsername = this.siteSettings.display_name_on_posts && name ? escape(name) @@ -57,30 +54,45 @@ export default class SolvedAcceptedAnswer extends Component { ); } - get htmlSolvedBy() { + get showMarkedBy() { + return this.siteSettings.show_who_marked_solved; + } + + get showSolvedBy() { + return !(!this.acceptedAnswer.username || !this.acceptedAnswer.post_number); + } + + get postNumber() { + return i18n("solved.accepted_answer_post_number", { + post_number: this.acceptedAnswer.post_number, + }); + } + + get solverUsername() { + return this.acceptedAnswer.username; + } + + get accepterUsername() { + return this.acceptedAnswer.accepter_username; + } + + get solverDisplayName() { const username = this.acceptedAnswer.username; const name = this.acceptedAnswer.name; + + return this.siteSettings.display_name_on_posts && name ? name : username; + } + + get accepterDisplayName() { + const username = this.acceptedAnswer.accepter_username; + const name = this.acceptedAnswer.accepter_name; + + return this.siteSettings.display_name_on_posts && name ? name : username; + } + + get postPath() { const postNumber = this.acceptedAnswer.post_number; - - if (!username || !postNumber) { - return; - } - - const displayedUser = - this.siteSettings.display_name_on_posts && name - ? escape(name) - : formatUsername(username); - - const data = { - icon: iconHTML("square-check", { class: "accepted" }), - username_lower: username.toLowerCase(), - username: displayedUser, - post_path: `${this.topic.url}/${postNumber}`, - post_number: postNumber, - user_path: this.store.createRecord("user", { username }).path, - }; - - return htmlSafe(i18n("solved.accepted_html", data)); + return `${this.topic.url}/${postNumber}`; } @action @@ -119,10 +131,38 @@ export default class SolvedAcceptedAnswer extends Component { >
- {{this.htmlSolvedBy}} + {{#if this.showSolvedBy}} + {{icon "square-check" class="accepted"}} + + + {{this.solverDisplayName}} + + + {{this.postNumber}} + + +
+ {{/if}} +
- {{this.htmlAccepter}} + {{#if this.showMarkedBy}} + + + {{this.accepterDisplayName}} + + + {{/if}}
{{#if this.hasExcerpt}} diff --git a/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs b/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs index ddc5174..8a02581 100644 --- a/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs +++ b/assets/javascripts/discourse/components/solved-unaccept-answer-button.gjs @@ -1,13 +1,12 @@ import Component from "@glimmer/component"; import { action } from "@ember/object"; import { service } from "@ember/service"; -import { htmlSafe } from "@ember/template"; import DButton from "discourse/components/d-button"; +import InterpolatedTranslation from "discourse/components/interpolated-translation"; +import UserLink from "discourse/components/user-link"; import icon from "discourse/helpers/d-icon"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; -import escape from "discourse/lib/escape"; -import { formatUsername } from "discourse/lib/utilities"; import { i18n } from "discourse-i18n"; import DTooltip from "float-kit/components/d-tooltip"; @@ -49,29 +48,27 @@ export default class SolvedUnacceptAnswerButton extends Component { }); } - get solvedBy() { - if (!this.siteSettings.show_who_marked_solved) { - return; - } + get showAcceptedBy() { + return !( + !this.siteSettings.show_who_marked_solved || + !this.args.post.topic.accepted_answer.accepter_username + ); + } + get acceptedByUsername() { + return this.args.post.topic.accepted_answer.accepter_username; + } + + get acceptedByDisplayName() { const username = this.args.post.topic.accepted_answer.accepter_username; const name = this.args.post.topic.accepted_answer.accepter_name; - const displayedName = - this.siteSettings.display_name_on_posts && name - ? escape(name) - : formatUsername(username); - if (this.args.post.topic.accepted_answer.accepter_username) { - return i18n("solved.marked_solved_by", { - username: displayedName, - username_lower: username, - }); - } + return this.siteSettings.display_name_on_posts && name ? name : username; }