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