Group reports by target account (#8674)
* Group reports by target account * Improve CSS
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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}
|
@ -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)
|
@ -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
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user