Skip to content

Commit

Permalink
FIX: Respect "display name on posts" site setting (#239)
Browse files Browse the repository at this point in the history
When displaying the accepted answer in the OP.
  • Loading branch information
pmusaraj committed Jun 1, 2023
1 parent 306f39c commit e0cd3d1
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 3 deletions.
Expand Up @@ -57,6 +57,7 @@ function acceptPost(post) {

topic.set("accepted_answer", {
username: post.username,
name: post.name,
post_number: post.post_number,
excerpt: post.cooked,
});
Expand Down Expand Up @@ -214,16 +215,22 @@ export default {
// keeping this here cause there is complex localization
acceptedAnswerHtml: computed("accepted_answer", "id", function () {
const username = this.get("accepted_answer.username");
const name = this.get("accepted_answer.name");
const postNumber = this.get("accepted_answer.post_number");

if (!username || !postNumber) {
return "";
}

const displayedUser =
this.siteSettings.display_name_on_posts && name
? name
: formatUsername(username);

return I18n.t("solved.accepted_html", {
icon: iconHTML("check-square", { class: "accepted" }),
username_lower: username.toLowerCase(),
username: formatUsername(username),
username: displayedUser,
post_path: `${this.url}/${postNumber}`,
post_number: postNumber,
user_path: User.create({ username }).path,
Expand Down
6 changes: 4 additions & 2 deletions plugin.rb
Expand Up @@ -444,7 +444,7 @@ def include_accepted_answer?

def accepted_answer
if info = accepted_answer_post_info
{ post_number: info[0], username: info[1], excerpt: info[2] }
{ post_number: info[0], username: info[1], excerpt: info[2], name: info[3] }
end
end

Expand All @@ -454,7 +454,7 @@ def accepted_answer_post_info
Post
.where(id: accepted_answer_post_id, topic_id: object.topic.id)
.joins(:user)
.pluck("post_number", "username", "cooked")
.pluck("post_number", "username", "cooked", "name")
.first

if postInfo
Expand All @@ -463,6 +463,8 @@ def accepted_answer_post_info
else
nil
end

postInfo[3] = SiteSetting.display_name_on_posts ? postInfo[3] : nil
postInfo
end
end
Expand Down
26 changes: 26 additions & 0 deletions spec/requests/topics_controller_spec.rb
Expand Up @@ -64,6 +64,32 @@ def schema_json(answerCount)

expect(response.body).to include('"text":"This is a quoted text."')
end

it "should include user name in output with the corresponding site setting" do
SiteSetting.display_name_on_posts = true
p2.custom_fields["is_accepted_answer"] = true
p2.save_custom_fields
topic.custom_fields["accepted_answer_post_id"] = p2.id
topic.save_custom_fields

get "/t/#{topic.slug}/#{topic.id}.json"

expect(response.parsed_body["accepted_answer"]["name"]).to eq(p2.user.name)
expect(response.parsed_body["accepted_answer"]["username"]).to eq(p2.user.username)
end

it "should not include user name when site setting is disabled" do
SiteSetting.display_name_on_posts = false
p2.custom_fields["is_accepted_answer"] = true
p2.save_custom_fields
topic.custom_fields["accepted_answer_post_id"] = p2.id
topic.save_custom_fields

get "/t/#{topic.slug}/#{topic.id}.json"

expect(response.parsed_body["accepted_answer"]["name"]).to eq(nil)
expect(response.parsed_body["accepted_answer"]["username"]).to eq(p2.user.username)
end
end

context "with solved enabled for topics with specific tags" do
Expand Down

0 comments on commit e0cd3d1

Please sign in to comment.