diff --git a/app/assets/javascripts/discourse/app/components/reviewable-item.hbs b/app/assets/javascripts/discourse/app/components/reviewable-item.hbs
index 254e1b2795d..ea861ab07be 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-item.hbs
+++ b/app/assets/javascripts/discourse/app/components/reviewable-item.hbs
@@ -66,12 +66,10 @@
{{/if}}
- {{#if (eq this.reviewable.type "ReviewableFlaggedPost")}}
- {{#if (eq this.reviewable.status 0)}}
-
- {{this.reviewable.flaggedPostContextQuestion}}
-
- {{/if}}
+ {{#if this.displayContextQuestion}}
+
+ {{this.reviewable.flaggedReviewableContextQuestion}}
+
{{/if}}
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-item.js b/app/assets/javascripts/discourse/app/components/reviewable-item.js
index 20553d66b9b..547da9cb4fe 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-item.js
+++ b/app/assets/javascripts/discourse/app/components/reviewable-item.js
@@ -58,6 +58,11 @@ export default Component.extend({
return classes;
},
+ @discourseComputed("reviewable.created_from_flag", "reviewable.status")
+ displayContextQuestion(createdFromFlag, status) {
+ return createdFromFlag && status === 0;
+ },
+
@discourseComputed(
"reviewable.topic",
"reviewable.topic_id",
diff --git a/app/assets/javascripts/discourse/app/models/reviewable.js b/app/assets/javascripts/discourse/app/models/reviewable.js
index db973283cfa..3150401492a 100644
--- a/app/assets/javascripts/discourse/app/models/reviewable.js
+++ b/app/assets/javascripts/discourse/app/models/reviewable.js
@@ -35,14 +35,23 @@ const Reviewable = RestModel.extend({
return "-" + dasherize(humanType);
},
- @discourseComputed
- flaggedPostContextQuestion() {
+ @discourseComputed("resolvedType")
+ humanNoun(resolvedType) {
+ return I18n.t(`review.types.${underscore(resolvedType)}.noun`, {
+ defaultValue: "reviewable",
+ });
+ },
+
+ @discourseComputed("humanNoun")
+ flaggedReviewableContextQuestion(humanNoun) {
const uniqueReviewableScores =
this.reviewable_scores.uniqBy("score_type.type");
if (uniqueReviewableScores.length === 1) {
if (uniqueReviewableScores[0].score_type.type === "notify_moderators") {
- return I18n.t("review.context_question.something_else_wrong");
+ return I18n.t("review.context_question.something_else_wrong", {
+ reviewable_type: humanNoun,
+ });
}
}
@@ -55,6 +64,7 @@ const Reviewable = RestModel.extend({
return I18n.t("review.context_question.is_this_post", {
reviewable_human_score_types: listOfQuestions,
+ reviewable_type: humanNoun,
});
},
diff --git a/app/serializers/reviewable_flagged_post_serializer.rb b/app/serializers/reviewable_flagged_post_serializer.rb
index 797fe3928db..3ceea699207 100644
--- a/app/serializers/reviewable_flagged_post_serializer.rb
+++ b/app/serializers/reviewable_flagged_post_serializer.rb
@@ -4,6 +4,10 @@ class ReviewableFlaggedPostSerializer < ReviewableSerializer
target_attributes :cooked, :raw, :reply_count, :reply_to_post_number
attributes :blank_post, :post_updated_at, :post_version
+ def created_from_flag?
+ true
+ end
+
def post_version
object.target&.version
end
diff --git a/app/serializers/reviewable_serializer.rb b/app/serializers/reviewable_serializer.rb
index 20c02e4b72e..8bd59b8eec4 100644
--- a/app/serializers/reviewable_serializer.rb
+++ b/app/serializers/reviewable_serializer.rb
@@ -16,6 +16,7 @@ class ReviewableSerializer < ApplicationSerializer
:score,
:version,
:target_created_by_trust_level,
+ :created_from_flag?,
)
attribute :status_for_database, key: :status
@@ -96,6 +97,10 @@ class ReviewableSerializer < ApplicationSerializer
end
end
+ def created_from_flag?
+ false
+ end
+
def topic_tags
object.topic.tags.map(&:name)
end
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index eb0a31c41e6..9f63ffe2f9d 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -618,24 +618,27 @@ en:
title: "Everything"
context_question:
- is_this_post: "Is this post %{reviewable_human_score_types}?"
+ is_this_post: "Is this %{reviewable_type} %{reviewable_human_score_types}?"
delimiter: "or"
- something_else_wrong: "Is there something wrong with this post?"
+ something_else_wrong: "Is there something wrong with this %{reviewable_type}?"
types:
reviewable_flagged_post:
title: "Flagged Post"
flagged_by: "Flagged By"
+ noun: "post"
reviewable_queued_topic:
title: "Queued Topic"
+ noun: "topic"
reviewable_queued_post:
title: "Queued Post"
+ noun: "post"
reviewable_user:
title: "User"
+ noun: "user"
reviewable_post:
title: "Post"
- reviewable_chat_message:
- title: "Flagged chat message"
+ noun: "post"
approval:
title: "Post Needs Approval"
description: "We've received your new post but it needs to be approved by a moderator before it will appear. Please be patient."
diff --git a/plugins/chat/app/serializers/chat/reviewable_message_serializer.rb b/plugins/chat/app/serializers/chat/reviewable_message_serializer.rb
index 41f74e31c81..051a118344e 100644
--- a/plugins/chat/app/serializers/chat/reviewable_message_serializer.rb
+++ b/plugins/chat/app/serializers/chat/reviewable_message_serializer.rb
@@ -10,6 +10,10 @@ module Chat
has_one :chat_channel, serializer: Chat::ChannelSerializer, root: false, embed: :objects
+ def created_from_flag?
+ true
+ end
+
def chat_channel
object.chat_message.chat_channel
end
diff --git a/plugins/chat/config/locales/client.en.yml b/plugins/chat/config/locales/client.en.yml
index 5d39b7b69d5..2bba4bb4ad2 100644
--- a/plugins/chat/config/locales/client.en.yml
+++ b/plugins/chat/config/locales/client.en.yml
@@ -637,6 +637,9 @@ en:
types:
chat_reviewable_message:
title: "Flagged Chat Message"
+ reviewable_chat_message:
+ title: "Flagged chat message"
+ noun: "chat message"
keyboard_shortcuts_help:
chat:
title: "Chat"
diff --git a/spec/serializers/reviewable_flagged_post_serializer_spec.rb b/spec/serializers/reviewable_flagged_post_serializer_spec.rb
index e7c185e0bf5..783ec96a37c 100644
--- a/spec/serializers/reviewable_flagged_post_serializer_spec.rb
+++ b/spec/serializers/reviewable_flagged_post_serializer_spec.rb
@@ -11,6 +11,7 @@ RSpec.describe ReviewableFlaggedPostSerializer do
expect(json[:cooked]).to eq(p0.cooked)
expect(json[:raw]).to eq(p0.raw)
expect(json[:target_url]).to eq(Discourse.base_url + p0.url)
+ expect(json[:created_from_flag]).to eq(true)
end
it "works when the topic is deleted" do
diff --git a/spec/serializers/reviewable_serializer_spec.rb b/spec/serializers/reviewable_serializer_spec.rb
index e76859c95ce..fbaaad7d876 100644
--- a/spec/serializers/reviewable_serializer_spec.rb
+++ b/spec/serializers/reviewable_serializer_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe ReviewableSerializer do
expect(json[:can_edit]).to eq(true)
expect(json[:version]).to eq(0)
expect(json[:removed_topic_id]).to be_nil
+ expect(json[:created_from_flag]).to eq(false)
end
it "Includes the removed topic id when the topis was deleted" do