diff --git a/app/assets/javascripts/discourse/components/reviewable-queued-post.js.es6 b/app/assets/javascripts/discourse/components/reviewable-queued-post.js.es6 new file mode 100644 index 00000000000..1255c5bddc6 --- /dev/null +++ b/app/assets/javascripts/discourse/components/reviewable-queued-post.js.es6 @@ -0,0 +1,9 @@ +import showModal from "discourse/lib/show-modal"; + +export default Ember.Component.extend({ + actions: { + showRawEmail() { + showModal("raw-email").set("rawEmail", this.reviewable.payload.raw_email); + } + } +}); diff --git a/app/assets/javascripts/discourse/templates/components/reviewable-queued-post.hbs b/app/assets/javascripts/discourse/templates/components/reviewable-queued-post.hbs index fb54fe97639..30aff53c6af 100644 --- a/app/assets/javascripts/discourse/templates/components/reviewable-queued-post.hbs +++ b/app/assets/javascripts/discourse/templates/components/reviewable-queued-post.hbs @@ -5,6 +5,11 @@ {{category-badge reviewable.category}} {{reviewable-tags tags=reviewable.payload.tags tagName=''}} + {{#if reviewable.payload.via_email}} + + {{d-icon "far-envelope" title="post.via_email"}} + + {{/if}} {{/reviewable-topic-link}}
diff --git a/app/assets/stylesheets/common/base/reviewables.scss b/app/assets/stylesheets/common/base/reviewables.scss index 018ea923b87..31071ac39d3 100644 --- a/app/assets/stylesheets/common/base/reviewables.scss +++ b/app/assets/stylesheets/common/base/reviewables.scss @@ -364,6 +364,10 @@ } .reviewable-item { + .show-raw-email { + color: $primary-medium; + font-size: $font-down-2; + } .post-title { background-color: yellow; } diff --git a/app/serializers/reviewable_queued_post_serializer.rb b/app/serializers/reviewable_queued_post_serializer.rb index ebdd4d0c683..c2ce6fecf22 100644 --- a/app/serializers/reviewable_queued_post_serializer.rb +++ b/app/serializers/reviewable_queued_post_serializer.rb @@ -16,7 +16,9 @@ class ReviewableQueuedPostSerializer < ReviewableSerializer :is_poll, :typing_duration_msecs, :composer_open_duration_msecs, - :tags + :tags, + :via_email, + :raw_email ) def reply_to_post_number diff --git a/lib/new_post_manager.rb b/lib/new_post_manager.rb index ba5e4684019..26712309cd4 100644 --- a/lib/new_post_manager.rb +++ b/lib/new_post_manager.rb @@ -201,6 +201,8 @@ class NewPostManager %w(typing_duration_msecs composer_open_duration_msecs reply_to_post_number).each do |a| payload[a] = @args[a].to_i if @args[a] end + payload[:via_email] = true if !!@args[:via_email] + payload[:raw_email] = @args[:raw_email] if @args[:raw_email].present? reviewable = ReviewableQueuedPost.new( created_by: @user, diff --git a/spec/components/new_post_manager_spec.rb b/spec/components/new_post_manager_spec.rb index 269ebcbb500..547f30cf62b 100644 --- a/spec/components/new_post_manager_spec.rb +++ b/spec/components/new_post_manager_spec.rb @@ -407,4 +407,34 @@ describe NewPostManager do end end end + + context "via email" do + let(:manager) do + NewPostManager.new( + topic.user, + raw: 'this is emailed content', + topic_id: topic.id, + via_email: true, + raw_email: 'raw email contents' + ) + end + + before do + SiteSetting.approve_post_count = 100 + topic.user.trust_level = 0 + end + + it "will store via_email and raw_email in the enqueued post" do + result = manager.perform + expect(result.action).to eq(:enqueued) + expect(result.reviewable).to be_present + expect(result.reviewable.payload['via_email']).to eq(true) + expect(result.reviewable.payload['raw_email']).to eq('raw email contents') + + post = result.reviewable.perform(Discourse.system_user, :approve_post).created_post + expect(post.via_email).to eq(true) + expect(post.raw_email).to eq("raw email contents") + end + end + end diff --git a/spec/serializers/reviewable_queued_post_serializer_spec.rb b/spec/serializers/reviewable_queued_post_serializer_spec.rb index 83bcaac4dfc..8fa0a5acd29 100644 --- a/spec/serializers/reviewable_queued_post_serializer_spec.rb +++ b/spec/serializers/reviewable_queued_post_serializer_spec.rb @@ -49,6 +49,8 @@ describe ReviewableQueuedPostSerializer do expect(payload['raw']).to eq('hello world post contents.') expect(payload['title']).to be_blank + expect(payload['via_email']).to eq(true) + expect(payload['raw_email']).to eq('store_me') expect(json[:topic_id]).to eq(reviewable.topic_id) expect(json[:topic_url]).to eq(reviewable.topic.url) expect(json[:can_edit]).to eq(true)