Group reports by target account (#8674)

* Group reports by target account

* Improve CSS
This commit is contained in:
Eugen Rochko
2018-09-13 03:44:08 +02:00
committed by GitHub
parent 7b7c26063e
commit 011437dcb5
48 changed files with 154 additions and 227 deletions

View File

@ -4,7 +4,7 @@ module Admin::AccountModerationNotesHelper
def admin_account_link_to(account)
return if account.nil?
link_to admin_account_path(account.id), class: name_tag_classes(account) do
link_to admin_account_path(account.id), class: name_tag_classes(account), title: account.acct do
safe_join([
image_tag(account.avatar.url, width: 15, height: 15, alt: display_name(account), class: 'avatar'),
content_tag(:span, account.acct, class: 'username'),
@ -15,7 +15,7 @@ module Admin::AccountModerationNotesHelper
def admin_account_inline_link_to(account)
return if account.nil?
link_to admin_account_path(account.id), class: name_tag_classes(account, true) do
link_to admin_account_path(account.id), class: name_tag_classes(account, true), title: account.acct do
content_tag(:span, account.acct, class: 'username')
end
end

View File

@ -7,13 +7,13 @@ module HomeHelper
}
end
def account_link_to(account, button = '')
def account_link_to(account, button = '', size: 36, path: nil)
content_tag(:div, class: 'account') do
content_tag(:div, class: 'account__wrapper') do
section = if account.nil?
content_tag(:div, class: 'account__display-name') do
content_tag(:div, class: 'account__avatar-wrapper') do
content_tag(:div, '', class: 'account__avatar', style: "background-image: url(#{full_asset_url('avatars/original/missing.png', skip_pipeline: true)})")
content_tag(:div, '', class: 'account__avatar', style: "width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px; background-image: url(#{full_asset_url('avatars/original/missing.png', skip_pipeline: true)})")
end +
content_tag(:span, class: 'display-name') do
content_tag(:strong, t('about.contact_missing')) +
@ -21,9 +21,9 @@ module HomeHelper
end
end
else
link_to(TagManager.instance.url_for(account), class: 'account__display-name') do
link_to(path || TagManager.instance.url_for(account), class: 'account__display-name') do
content_tag(:div, class: 'account__avatar-wrapper') do
content_tag(:div, '', class: 'account__avatar', style: "background-image: url(#{account.avatar.url})")
content_tag(:div, '', class: 'account__avatar', style: "width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px; background-image: url(#{account.avatar.url})")
end +
content_tag(:span, class: 'display-name') do
content_tag(:bdi) do

View File

@ -567,3 +567,102 @@ a.name-tag,
color: $dark-text-color;
}
}
.report-card {
background: $ui-base-color;
border-radius: 4px;
margin-bottom: 20px;
&__profile {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px;
.account {
padding: 0;
border: 0;
&__avatar-wrapper {
margin-left: 0;
}
}
&__stats {
flex: 0 0 auto;
font-weight: 500;
color: $darker-text-color;
text-transform: uppercase;
text-align: right;
a {
color: inherit;
text-decoration: none;
&:focus,
&:hover,
&:active {
color: lighten($darker-text-color, 8%);
}
}
.red {
color: $error-value-color;
}
}
}
&__summary {
&__item {
display: flex;
justify-content: flex-start;
border-top: 1px solid darken($ui-base-color, 4%);
&:hover {
background: lighten($ui-base-color, 2%);
}
&__reported-by,
&__assigned {
padding: 15px;
flex: 0 0 auto;
box-sizing: border-box;
width: 150px;
color: $darker-text-color;
&,
.username {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
&__content {
flex: 1 1 auto;
max-width: calc(100% - 300px);
&__icon {
color: $dark-text-color;
margin-right: 4px;
font-weight: 500;
}
}
&__content a {
display: block;
box-sizing: border-box;
width: 100%;
padding: 15px;
text-decoration: none;
color: $darker-text-color;
}
}
}
}
.one-line {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@ -1,19 +0,0 @@
- size ||= 36
.account.compact
.account__wrapper
- if account.nil?
.account__display-name
.account__avatar-wrapper
.account__avatar{ style: "background-image: url(#{full_asset_url('avatars/original/missing.png', skip_pipeline: true)}); width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px" }
%span.display-name
%strong= t 'about.contact_missing'
%span.display-name__account= t 'about.contact_unavailable'
- else
= link_to TagManager.instance.url_for(account), class: 'account__display-name' do
.account__avatar-wrapper
.account__avatar{ style: "background-image: url(#{account.avatar.url}); width: #{size}px; height: #{size}px; background-size: #{size}px #{size}px" }
%span.display-name
%bdi
%strong.display-name__html.emojify= display_name(account, custom_emojify: true)
%span.display-name__account @#{account.acct}

View File

@ -1,29 +0,0 @@
%tr
%td.id
= "##{report.id}"
%td.target
= admin_account_link_to report.target_account
%td.reporter
- if report.account.local?
= admin_account_link_to report.account
- else
= report.account.domain
%td
%div{ title: report.comment }
= truncate(report.comment, length: 30, separator: ' ')
%div
- unless report.statuses.empty?
%span{ title: t('admin.accounts.statuses') }
= fa_icon('comment')
= report.statuses.count
- unless report.media_attachments.empty?
%span{ title: t('admin.accounts.media_attachments') }
= fa_icon('camera')
= report.media_attachments.count
%td
- if report.assigned_account.nil?
\-
- else
= admin_account_link_to report.assigned_account
%td
= table_link_to 'circle', t('admin.reports.view'), admin_report_path(report)

View File

@ -8,17 +8,45 @@
%li= filter_link_to t('admin.reports.unresolved'), resolved: nil
%li= filter_link_to t('admin.reports.resolved'), resolved: '1'
.table-wrapper
%table.table
%thead
%tr
%th= t('admin.reports.id')
%th= t('admin.reports.target')
%th= t('admin.reports.reported_by')
%th= t('admin.reports.report_contents')
%th= t('admin.reports.assigned')
%th
%tbody
= render @reports
- @reports.group_by(&:target_account_id).each do |target_account_id, reports|
- target_account = reports.first.target_account
.report-card
.report-card__profile
= account_link_to target_account, '', size: 36, path: admin_account_path(target_account.id)
.report-card__profile__stats
= link_to pluralize(target_account.targeted_moderation_notes.count, t('admin.reports.account.note')), admin_account_path(target_account.id)
%br/
- if target_account.suspended?
%span.red= t('admin.accounts.suspended')
- elsif target_account.silenced?
%span.red= t('admin.accounts.silenced')
- elsif target_account.user&.disabled?
%span.red= t('admin.accounts.disabled')
- else
%span.neutral= t('admin.accounts.no_limits_imposed')
.report-card__summary
- reports.each do |report|
.report-card__summary__item
.report-card__summary__item__reported-by
- if report.account.local?
= admin_account_link_to report.account
- else
= report.account.domain
.report-card__summary__item__content
= link_to admin_report_path(report) do
.one-line= report.comment.presence || t('admin.reports.comment.none')
%span.report-card__summary__item__content__icon{ title: t('admin.accounts.statuses') }
= fa_icon('comment')
= report.statuses.count
%span.report-card__summary__item__content__icon{ title: t('admin.accounts.media_attachments') }
= fa_icon('camera')
= report.media_attachments.count
.report-card__summary__item__assigned
- if report.assigned_account.present?
= admin_account_link_to report.assigned_account
- else
\-
= paginate @reports

View File

@ -9,7 +9,7 @@
%td= number_to_human_size @export.total_storage
%td
%tr
%th= t('accounts.statuses', count: @export.total_statuses)
%th= t('accounts.posts', count: @export.total_statuses)
%td= number_with_delimiter @export.total_statuses
%td
%tr