diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml index 1328a52f02a748..00237d4deab099 100644 --- a/.haml-lint_todo.yml +++ b/.haml-lint_todo.yml @@ -26,6 +26,7 @@ linters: - 'app/views/settings/preferences/other/show.html.haml' - 'app/views/settings/preferences/reaching/show.html.haml' - 'app/views/settings/profiles/show.html.haml' + - 'app/views/settings/privacy_extra/show.html.haml' # Offense count: 9 RuboCop: diff --git a/app/controllers/settings/privacy_extra_controller.rb b/app/controllers/settings/privacy_extra_controller.rb index 85364ec35d5632..49c71d50714f9a 100644 --- a/app/controllers/settings/privacy_extra_controller.rb +++ b/app/controllers/settings/privacy_extra_controller.rb @@ -18,7 +18,7 @@ def update private def account_params - params.require(:account).permit(:dissubscribable, settings: UserSettings.keys) + params.require(:account).permit(:subscription_policy, settings: UserSettings.keys) end def set_account diff --git a/app/models/concerns/account_master_settings.rb b/app/models/concerns/account_master_settings.rb index a107da594e708b..fef64304536eed 100644 --- a/app/models/concerns/account_master_settings.rb +++ b/app/models/concerns/account_master_settings.rb @@ -11,6 +11,10 @@ def subscription_policy :allow end + def subscription_policy=(val) + self.master_settings = (master_settings.nil? ? {} : master_settings).merge({ 'subscription_policy' => val }) + end + def all_subscribable? subscription_policy == :allow end diff --git a/app/views/settings/privacy_extra/show.html.haml b/app/views/settings/privacy_extra/show.html.haml index 5e102f6565b988..2d0927eeb24ded 100644 --- a/app/views/settings/privacy_extra/show.html.haml +++ b/app/views/settings/privacy_extra/show.html.haml @@ -22,7 +22,7 @@ = ff.input :link_preview, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_link_preview'), hint: I18n.t('simple_form.hints.defaults.setting_link_preview') .fields-group - = f.input :dissubscribable, as: :boolean, wrapper: :with_label, kmyblue: true, hint: t('simple_form.hints.defaults.dissubscribable') + = f.input :subscription_policy, kmyblue: true, collection: %w(allow followers_only block), label_method: ->(item) { safe_join([t("simple_form.labels.subscription_policy.#{item}")]) }, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label, label: t('simple_form.labels.defaults.subscription_policy'), hint: t('simple_form.hints.defaults.subscription_policy') .fields-group = ff.input :allow_quote, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_allow_quote'), hint: false diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 6f7df0bb840b2a..6f0705e816ee31 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -47,7 +47,6 @@ en: digest: Only sent after a long period of inactivity and only if you have received any personal messages in your absence discoverable: Allow your account to be discovered by strangers through recommendations, trends and other features discoverable_local: Disable the setting on federated servers. The setting is available this server only for avoiding full-text search on other servers - dissubscribable: Your post is not picked by antenna email: You will be sent a confirmation e-mail group: Reps sent to this account will be automatically BT'd and distributed to all accounts you follow! group_allow_private_message: Posts are duplicated and cannot be edited or deleted by the post @@ -76,6 +75,7 @@ en: setting_single_ref_to_quote: If this server does not have target post, target server maybe cannot read your quote setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed + subscription_policy: Your post is not picked by antenna username: You can use letters, numbers, and underscores whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word domain_allow: @@ -143,6 +143,10 @@ en: settings: indexable: Your profile page may appear in search results on Google, Bing, and others. show_application: You will always be able to see which app published your post regardless. + subscription_policy: + allow: Allow + block: Block + followers_only: Followers only tag: name: You can only change the casing of the letters, for example, to make it more readable user: @@ -208,7 +212,6 @@ en: discoverable: Suggest account to others discoverable_local: Disallow suggesting account on other servers display_name: Display name - dissubscribable: Reject any subscriptions email: E-mail address expires_in: Expire after fields: Extra fields @@ -249,7 +252,7 @@ en: setting_display_media_expand: Show more medias setting_display_media_hide_all: Hide all setting_display_media_show_all: Show all - setting_dtl_force_subscribable: Ignore your dissubscribable setting when using the DTL tag + setting_dtl_force_subscribable: Ignore your subscribability setting when using the DTL tag setting_dtl_force_searchability: Post searchability setting_dtl_force_visibility: Post visibility setting_emoji_reaction_streaming_notify_impl2: Enable stamp notification compat with Nyastodon, Catstodon, glitch-soc @@ -298,6 +301,7 @@ en: setting_use_public_index: Include permitted accounts post to results of search severity: Severity sign_in_token_attempt: Security code + subscription_policy: Subscribability title: Title type: Import type username: Username diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 80b493b3a369f9..3229fb13e5e166 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -49,7 +49,6 @@ ja: digest: 長期間使用していない場合と不在時に返信を受けた場合のみ送信されます discoverable: レコメンド、トレンド、その他の機能により、あなたのアカウントを他の人から見つけられるようにします。なおkmyblueのローカルユーザーはこの設定をオンにしても全文検索結果には掲載されません。全文検索結果への掲載には、投稿の検索許可設定を変更する必要があります discoverable_local: 上記設定を当サーバー内でのみ適用するようにします。他のサーバーの全文検索結果への掲載を回避できますが、レコメンド、トレンドなどその他の機能への掲載も回避されます - dissubscribable: あなたの投稿はすべてのアンテナに掲載されなくなります。Misskeyのアンテナを拒否することはできません。Mastodonの一部のサーバーもこの設定に対応しますが、挙動が一部kmyblueと異なる場合があります email: 確認のメールが送信されます group: このアカウントに送られたメンションは自動でBTされ、フォローしている全てのアカウントに配信されます group_allow_private_message: 投稿は複製されるため、投稿者が編集・削除することはできません @@ -90,6 +89,7 @@ ja: setting_unsafe_limited_distribution: Mastodon 3.5、4.0、4.1のサーバーにも限定投稿(相互のみ)が届くようになりますが、安全でない方法で送信します setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします + subscription_policy: あなたの投稿はこの設定の範囲外にあるアカウントのアンテナに掲載されなくなります。Misskeyのアンテナを拒否することはできません。Mastodonの一部のサーバーもこの設定に対応しますが、挙動が一部kmyblueと異なる場合があります username: アルファベット大文字と小文字、数字、アンダーバー「_」が使えます whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります domain_allow: @@ -222,7 +222,6 @@ ja: discoverable: ディレクトリに掲載する discoverable_local: 他サーバーのディレクトリに掲載しない display_name: 表示名 - dissubscribable: 購読を拒否する email: メールアドレス expires_in: 有効期限 fields: プロフィール補足情報 @@ -314,6 +313,7 @@ ja: setting_use_public_index: Mastodonの標準設定によって検索が許可されたアカウントの公開投稿を検索結果に含める severity: 重大性 sign_in_token_attempt: セキュリティコード + subscription_policy: 購読許可 title: タイトル type: インポートする項目 username: ユーザー名 @@ -420,6 +420,10 @@ ja: settings: indexable: 検索エンジンからアクセスできるようにする show_application: 投稿に使ったアプリを開示する + subscription_policy: + allow: 全員に許可 + block: 全員拒否 + followers_only: フォロワーにのみ許可 tag: listable: 検索とディレクトリへの使用を許可する name: ハッシュタグ