From 3c8ae643b2cd10a9da6022e3d5c34e8988408601 Mon Sep 17 00:00:00 2001 From: Sam <sam.saffron@gmail.com> Date: Tue, 4 Aug 2015 12:56:20 +1000 Subject: [PATCH] UX: improve handling of users in queued-posts - Display an icon on already blocked users - Automatically unblock users that you approve --- .../javascripts/discourse/templates/queued-posts.hbs | 4 +++- app/models/queued_post.rb | 4 ++++ app/serializers/queued_post_serializer.rb | 2 +- config/locales/client.en.yml | 1 + spec/controllers/posts_controller_spec.rb | 9 +++++++++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/templates/queued-posts.hbs b/app/assets/javascripts/discourse/templates/queued-posts.hbs index 400937caf..5fc07e042 100644 --- a/app/assets/javascripts/discourse/templates/queued-posts.hbs +++ b/app/assets/javascripts/discourse/templates/queued-posts.hbs @@ -6,7 +6,6 @@ {{#user-link user=ctrl.post.user}} {{avatar ctrl.post.user imageSize="large"}} {{/user-link}} - </div> <div class='cooked'> <div class='names'> @@ -14,6 +13,9 @@ {{#user-link user=ctrl.post.user}} {{ctrl.post.user.username}} {{/user-link}} + {{#if ctrl.post.user.blocked}} + <i class='fa fa-ban' title='{{i18n "user.blocked_tooltip"}}'></i> + {{/if}} </span> </div> <div class='post-info'> diff --git a/app/models/queued_post.rb b/app/models/queued_post.rb index 39c51a354..b61cab8c3 100644 --- a/app/models/queued_post.rb +++ b/app/models/queued_post.rb @@ -66,6 +66,10 @@ class QueuedPost < ActiveRecord::Base creator = PostCreator.new(user, create_options.merge(skip_validations: true)) created_post = creator.create + + if user.blocked? + user.update_columns(blocked: false) + end end DiscourseEvent.trigger(:approved_post, self) diff --git a/app/serializers/queued_post_serializer.rb b/app/serializers/queued_post_serializer.rb index 86b36bbda..43892fa29 100644 --- a/app/serializers/queued_post_serializer.rb +++ b/app/serializers/queued_post_serializer.rb @@ -13,7 +13,7 @@ class QueuedPostSerializer < ApplicationSerializer :category_id, :can_delete_user - has_one :user, serializer: BasicUserSerializer + has_one :user, serializer: AdminUserListSerializer has_one :topic, serializer: BasicTopicSerializer def category_id diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 0c57a88f2..844729482 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -437,6 +437,7 @@ en: admin: "{{user}} is an admin" moderator_tooltip: "This user is a moderator" admin_tooltip: "This user is an admin" + blocked_tooltip: "This user is blocked" suspended_notice: "This user is suspended until {{date}}." suspended_reason: "Reason: " github_profile: "Github" diff --git a/spec/controllers/posts_controller_spec.rb b/spec/controllers/posts_controller_spec.rb index 183045d42..7e1c617fd 100644 --- a/spec/controllers/posts_controller_spec.rb +++ b/spec/controllers/posts_controller_spec.rb @@ -492,8 +492,17 @@ describe PostsController do expect(parsed["action"]).to eq("enqueued") + user.reload expect(user.blocked).to eq(true) + qp = QueuedPost.first + + mod = Fabricate(:moderator) + qp.approve!(mod) + + user.reload + expect(user.blocked).to eq(false) + end it 'creates the post' do