Add admin setting to disable followers count

This commit is contained in:
Thibaut Girka 2018-12-17 20:36:30 +01:00 committed by ThibG
parent 0cd367e295
commit a1c56fcef1
10 changed files with 29 additions and 11 deletions

View File

@ -29,6 +29,7 @@ module Admin
preview_sensitive_media preview_sensitive_media
custom_css custom_css
profile_directory profile_directory
hide_followers_count
).freeze ).freeze
BOOLEAN_SETTINGS = %w( BOOLEAN_SETTINGS = %w(
@ -41,6 +42,7 @@ module Admin
show_known_fediverse_at_about_page show_known_fediverse_at_about_page
preview_sensitive_media preview_sensitive_media
profile_directory profile_directory
hide_followers_count
).freeze ).freeze
UPLOAD_SETTINGS = %w( UPLOAD_SETTINGS = %w(

View File

@ -37,7 +37,7 @@ class FollowerAccountsController < ApplicationController
def collection_presenter def collection_presenter
options = { type: :ordered } options = { type: :ordered }
options[:size] = @account.followers_count options[:size] = @account.followers_count unless Setting.hide_followers_count
if params[:page].present? if params[:page].present?
ActivityPub::CollectionPresenter.new( ActivityPub::CollectionPresenter.new(
id: account_followers_url(@account, page: params.fetch(:page, 1)), id: account_followers_url(@account, page: params.fetch(:page, 1)),

View File

@ -61,7 +61,7 @@ module StreamEntriesHelper
end end
def account_description(account) def account_description(account)
prepend_str = [ prepend_stats = [
[ [
number_to_human(account.statuses_count, strip_insignificant_zeros: true), number_to_human(account.statuses_count, strip_insignificant_zeros: true),
I18n.t('accounts.posts', count: account.statuses_count), I18n.t('accounts.posts', count: account.statuses_count),
@ -71,14 +71,16 @@ module StreamEntriesHelper
number_to_human(account.following_count, strip_insignificant_zeros: true), number_to_human(account.following_count, strip_insignificant_zeros: true),
I18n.t('accounts.following', count: account.following_count), I18n.t('accounts.following', count: account.following_count),
].join(' '), ].join(' '),
]
[ unless Setting.hide_followers_count
prepend_stats << [
number_to_human(account.followers_count, strip_insignificant_zeros: true), number_to_human(account.followers_count, strip_insignificant_zeros: true),
I18n.t('accounts.followers', count: account.followers_count), I18n.t('accounts.followers', count: account.followers_count),
].join(' '), ].join(' ')
].join(', ') end
[prepend_str, account.note].join(' · ') [prepend_stats.join(', '), account.note].join(' · ')
end end
def media_summary(status) def media_summary(status)

View File

@ -30,6 +30,8 @@ class Form::AdminSettings
:show_staff_badge=, :show_staff_badge=,
:bootstrap_timeline_accounts, :bootstrap_timeline_accounts,
:bootstrap_timeline_accounts=, :bootstrap_timeline_accounts=,
:hide_followers_count,
:hide_followers_count=,
:flavour, :flavour,
:flavour=, :flavour=,
:skin, :skin,

View File

@ -51,4 +51,8 @@ class REST::AccountSerializer < ActiveModel::Serializer
def moved_and_not_nested? def moved_and_not_nested?
object.moved? && object.moved_to_account.moved_to_account_id.nil? object.moved? && object.moved_to_account.moved_to_account_id.nil?
end end
def followers_count
Setting.hide_followers_count ? -1 : object.followers_count
end
end end

View File

@ -24,8 +24,8 @@
%span.counter-label= t('accounts.following', count: account.following_count) %span.counter-label= t('accounts.following', count: account.following_count)
.counter{ class: active_nav_class(account_followers_url(account)) } .counter{ class: active_nav_class(account_followers_url(account)) }
= link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do = link_to account_followers_url(account), title: Setting.hide_followers_count ? nil : number_with_delimiter(account.followers_count) do
%span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true %span.counter-number= Setting.hide_followers_count ? '-' : (number_to_human account.followers_count, strip_insignificant_zeros: true)
%span.counter-label= t('accounts.followers', count: account.followers_count) %span.counter-label= t('accounts.followers', count: account.followers_count)
.spacer .spacer
.public-account-header__tabs__tabs__buttons .public-account-header__tabs__tabs__buttons

View File

@ -65,6 +65,9 @@
.fields-group .fields-group
= f.input :profile_directory, as: :boolean, wrapper: :with_label, label: t('admin.settings.profile_directory.title'), hint: t('admin.settings.profile_directory.desc_html') = f.input :profile_directory, as: :boolean, wrapper: :with_label, label: t('admin.settings.profile_directory.title'), hint: t('admin.settings.profile_directory.desc_html')
.fields-group
= f.input :hide_followers_count, as: :boolean, wrapper: :with_label, label: t('admin.settings.hide_followers_count.title'), hint: t('admin.settings.hide_followers_count.desc_html')
%hr.spacer/ %hr.spacer/
.fields-group .fields-group

View File

@ -28,9 +28,10 @@
%td.accounts-table__count.optional %td.accounts-table__count.optional
= number_to_human account.statuses_count, strip_insignificant_zeros: true = number_to_human account.statuses_count, strip_insignificant_zeros: true
%small= t('accounts.posts', count: account.statuses_count).downcase %small= t('accounts.posts', count: account.statuses_count).downcase
%td.accounts-table__count.optional - unless Setting.hide_followers_count
= number_to_human account.followers_count, strip_insignificant_zeros: true %td.accounts-table__count.optional
%small= t('accounts.followers', count: account.followers_count).downcase = number_to_human account.followers_count, strip_insignificant_zeros: true
%small= t('accounts.followers', count: account.followers_count).downcase
%td.accounts-table__count %td.accounts-table__count
- if account.last_status_at.present? - if account.last_status_at.present?
%time.time-ago{ datetime: account.last_status_at.iso8601, title: l(account.last_status_at) }= l account.last_status_at %time.time-ago{ datetime: account.last_status_at.iso8601, title: l(account.last_status_at) }= l account.last_status_at

View File

@ -370,6 +370,9 @@ en:
hero: hero:
desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
title: Hero image title: Hero image
hide_followers_count:
desc_html: Do not show followers count on user profiles
title: Hide followers count
mascot: mascot:
desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot
title: Mascot image title: Mascot image

View File

@ -34,6 +34,7 @@ defaults: &defaults
reduce_motion: false reduce_motion: false
system_font_ui: false system_font_ui: false
noindex: false noindex: false
hide_followers_count: false
flavour: 'glitch' flavour: 'glitch'
skin: 'default' skin: 'default'
aggregate_reblogs: true aggregate_reblogs: true