UI: Blur review queue images. ()

We blur images by default to protect reviewers against NSFW content. To see the image, they'll have to hover over it.
This commit is contained in:
Roman Rizzi 2020-11-11 14:09:42 -03:00 committed by GitHub
parent 80759c9619
commit 331517abe6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 35 additions and 4 deletions
app
assets
javascripts/discourse/app
components
templates/components
stylesheets/common/base
serializers
config

@ -19,9 +19,19 @@ export default Component.extend({
editing: false, editing: false,
_updates: null, _updates: null,
@discourseComputed("reviewable.type") @discourseComputed(
customClass(type) { "reviewable.type",
return type.dasherize(); "siteSettings.blur_tl0_flagged_posts_media",
"reviewable.target_created_by_trust_level"
)
customClasses(type, blurEnabled, trustLevel) {
let classes = type.dasherize();
if (blurEnabled && trustLevel === 0) {
classes = `${classes} blur-images`;
}
return classes;
}, },
@discourseComputed( @discourseComputed(

@ -1,4 +1,4 @@
<div data-reviewable-id={{reviewable.id}} class="reviewable-item {{customClass}}"> <div data-reviewable-id={{reviewable.id}} class="reviewable-item {{customClasses}}">
<div class="reviewable-meta-data"> <div class="reviewable-meta-data">
<span class="reviewable-type">{{reviewable.humanType}}</span> <span class="reviewable-type">{{reviewable.humanType}}</span>
{{#if reviewable.reply_count}} {{#if reviewable.reply_count}}

@ -281,6 +281,18 @@
padding-bottom: 1em; padding-bottom: 1em;
} }
.blur-images {
img:not(.avatar):not(.emoji) {
filter: blur(10px);
transition: 0.2s ease-in-out;
&:hover {
filter: blur(0);
transition: 0.2s ease-in-out;
}
}
}
.reviewable-histories { .reviewable-histories {
margin-top: 1em; margin-top: 1em;
} }

@ -17,6 +17,7 @@ class ReviewableSerializer < ApplicationSerializer
:can_edit, :can_edit,
:score, :score,
:version, :version,
:target_created_by_trust_level
) )
has_one :created_by, serializer: UserWithCustomFieldsSerializer, root: 'users' has_one :created_by, serializer: UserWithCustomFieldsSerializer, root: 'users'
@ -130,4 +131,8 @@ class ReviewableSerializer < ApplicationSerializer
object.category_id.present? object.category_id.present?
end end
def target_created_by_trust_level
object&.target_created_by&.trust_level
end
end end

@ -2161,6 +2161,7 @@ en:
returning_user_notice_tl: "Minimum trust level required to see returning user post notices." returning_user_notice_tl: "Minimum trust level required to see returning user post notices."
returning_users_days: "How many days should pass before a user is considered to be returning." returning_users_days: "How many days should pass before a user is considered to be returning."
review_media_unless_trust_level: "Staff will review posts of users with lower trust levels if they contain embedded media." review_media_unless_trust_level: "Staff will review posts of users with lower trust levels if they contain embedded media."
blur_tl0_flagged_posts_media: "Blur flagged posts images to hide potentially NSFW content."
enable_page_publishing: "Allow staff members to publish topics to new URLs with their own styling." enable_page_publishing: "Allow staff members to publish topics to new URLs with their own styling."
show_published_pages_login_required: "Anonymous users can see published pages, even when login is required." show_published_pages_login_required: "Anonymous users can see published pages, even when login is required."

@ -983,6 +983,9 @@ posting:
review_media_unless_trust_level: review_media_unless_trust_level:
default: 0 default: 0
enum: "TrustLevelSetting" enum: "TrustLevelSetting"
blur_tl0_flagged_posts_media:
default: true
client: true
enable_page_publishing: enable_page_publishing:
default: false default: false
show_published_pages_login_required: show_published_pages_login_required: