From a1c56fcef124b08fc2676d38fd79ed72d660d865 Mon Sep 17 00:00:00 2001 From: Thibaut Girka Date: Mon, 17 Dec 2018 20:36:30 +0100 Subject: [PATCH] Add admin setting to disable followers count --- app/controllers/admin/settings_controller.rb | 2 ++ app/controllers/follower_accounts_controller.rb | 2 +- app/helpers/stream_entries_helper.rb | 12 +++++++----- app/models/form/admin_settings.rb | 2 ++ app/serializers/rest/account_serializer.rb | 4 ++++ app/views/accounts/_header.html.haml | 4 ++-- app/views/admin/settings/edit.html.haml | 3 +++ app/views/directories/index.html.haml | 7 ++++--- config/locales/en.yml | 3 +++ config/settings.yml | 1 + 10 files changed, 29 insertions(+), 11 deletions(-) diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 76b3c3a2b2..9624df96bf 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -29,6 +29,7 @@ module Admin preview_sensitive_media custom_css profile_directory + hide_followers_count ).freeze BOOLEAN_SETTINGS = %w( @@ -41,6 +42,7 @@ module Admin show_known_fediverse_at_about_page preview_sensitive_media profile_directory + hide_followers_count ).freeze UPLOAD_SETTINGS = %w( diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb index 461e6d70e7..13043b1b98 100644 --- a/app/controllers/follower_accounts_controller.rb +++ b/app/controllers/follower_accounts_controller.rb @@ -37,7 +37,7 @@ class FollowerAccountsController < ApplicationController def collection_presenter options = { type: :ordered } - options[:size] = @account.followers_count + options[:size] = @account.followers_count unless Setting.hide_followers_count if params[:page].present? ActivityPub::CollectionPresenter.new( id: account_followers_url(@account, page: params.fetch(:page, 1)), diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb index 033d435c49..e37cfbda48 100644 --- a/app/helpers/stream_entries_helper.rb +++ b/app/helpers/stream_entries_helper.rb @@ -61,7 +61,7 @@ module StreamEntriesHelper end def account_description(account) - prepend_str = [ + prepend_stats = [ [ number_to_human(account.statuses_count, strip_insignificant_zeros: true), I18n.t('accounts.posts', count: account.statuses_count), @@ -71,14 +71,16 @@ module StreamEntriesHelper number_to_human(account.following_count, strip_insignificant_zeros: true), I18n.t('accounts.following', count: account.following_count), ].join(' '), + ] - [ + unless Setting.hide_followers_count + prepend_stats << [ number_to_human(account.followers_count, strip_insignificant_zeros: true), I18n.t('accounts.followers', count: account.followers_count), - ].join(' '), - ].join(', ') + ].join(' ') + end - [prepend_str, account.note].join(' · ') + [prepend_stats.join(', '), account.note].join(' · ') end def media_summary(status) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 34c75e3bfb..d568200ed0 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -30,6 +30,8 @@ class Form::AdminSettings :show_staff_badge=, :bootstrap_timeline_accounts, :bootstrap_timeline_accounts=, + :hide_followers_count, + :hide_followers_count=, :flavour, :flavour=, :skin, diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index 12adc971cb..a3f2ad036c 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -51,4 +51,8 @@ class REST::AccountSerializer < ActiveModel::Serializer def moved_and_not_nested? object.moved? && object.moved_to_account.moved_to_account_id.nil? end + + def followers_count + Setting.hide_followers_count ? -1 : object.followers_count + end end diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml index 370e7e470f..458c86ce50 100644 --- a/app/views/accounts/_header.html.haml +++ b/app/views/accounts/_header.html.haml @@ -24,8 +24,8 @@ %span.counter-label= t('accounts.following', count: account.following_count) .counter{ class: active_nav_class(account_followers_url(account)) } - = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do - %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true + = link_to account_followers_url(account), title: Setting.hide_followers_count ? nil : number_with_delimiter(account.followers_count) do + %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) .spacer .public-account-header__tabs__tabs__buttons diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml index bcf57aac0f..e3ceb4344f 100644 --- a/app/views/admin/settings/edit.html.haml +++ b/app/views/admin/settings/edit.html.haml @@ -65,6 +65,9 @@ .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') + .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/ .fields-group diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml index 88706def7b..7f6ad13e66 100644 --- a/app/views/directories/index.html.haml +++ b/app/views/directories/index.html.haml @@ -28,9 +28,10 @@ %td.accounts-table__count.optional = number_to_human account.statuses_count, strip_insignificant_zeros: true %small= t('accounts.posts', count: account.statuses_count).downcase - %td.accounts-table__count.optional - = number_to_human account.followers_count, strip_insignificant_zeros: true - %small= t('accounts.followers', count: account.followers_count).downcase + - unless Setting.hide_followers_count + %td.accounts-table__count.optional + = number_to_human account.followers_count, strip_insignificant_zeros: true + %small= t('accounts.followers', count: account.followers_count).downcase %td.accounts-table__count - 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 diff --git a/config/locales/en.yml b/config/locales/en.yml index 735a88efdd..e722788fea 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -370,6 +370,9 @@ en: hero: desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail title: Hero image + hide_followers_count: + desc_html: Do not show followers count on user profiles + title: Hide followers count mascot: desc_html: Displayed on multiple pages. At least 293×205px recommended. When not set, falls back to default mascot title: Mascot image diff --git a/config/settings.yml b/config/settings.yml index 2cac28b637..bd6578bd42 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -34,6 +34,7 @@ defaults: &defaults reduce_motion: false system_font_ui: false noindex: false + hide_followers_count: false flavour: 'glitch' skin: 'default' aggregate_reblogs: true