Add feature to reflect the theme on public pages
This commit is contained in:
parent
04c3a50e3c
commit
3a9977ed5d
12 changed files with 36 additions and 7 deletions
|
@ -135,6 +135,7 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def current_theme
|
def current_theme
|
||||||
|
return @account&.user&.setting_theme if @account&.local? && @account&.user&.setting_theme_public && Themes.instance.names.include?(@account&.user&.setting_theme)
|
||||||
return Setting.theme unless Themes.instance.names.include? current_user&.setting_theme
|
return Setting.theme unless Themes.instance.names.include? current_user&.setting_theme
|
||||||
current_user.setting_theme
|
current_user.setting_theme
|
||||||
end
|
end
|
||||||
|
|
|
@ -80,6 +80,7 @@ class Settings::PreferencesController < Settings::BaseController
|
||||||
:setting_disable_joke_appearance,
|
:setting_disable_joke_appearance,
|
||||||
:setting_new_features_policy,
|
:setting_new_features_policy,
|
||||||
:setting_theme_instance_ticker,
|
:setting_theme_instance_ticker,
|
||||||
|
:setting_theme_public,
|
||||||
:setting_hexagon_avatar,
|
:setting_hexagon_avatar,
|
||||||
:setting_enable_status_reference,
|
:setting_enable_status_reference,
|
||||||
:setting_match_visibility_of_references,
|
:setting_match_visibility_of_references,
|
||||||
|
|
|
@ -118,13 +118,15 @@ module AccountsHelper
|
||||||
end.join("\n")
|
end.join("\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
def account_theme_valiables
|
def account_theme_valiables(account)
|
||||||
return if current_user.nil?
|
user = account&.user&.setting_theme_public && account&.user || current_user
|
||||||
|
|
||||||
|
return if user.nil?
|
||||||
|
|
||||||
":root {
|
":root {
|
||||||
--content-font-size: #{h(current_user.setting_content_font_size)}px;
|
--content-font-size: #{h(user.setting_content_font_size)}px;
|
||||||
--info-font-size: #{h(current_user.setting_info_font_size)}px;
|
--info-font-size: #{h(user.setting_info_font_size)}px;
|
||||||
--content-emoji-reaction-size: #{h(current_user.setting_content_emoji_reaction_size)}px;
|
--content-emoji-reaction-size: #{h(user.setting_content_emoji_reaction_size)}px;
|
||||||
}"
|
}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ class UserSettingsDecorator
|
||||||
user.settings['disable_joke_appearance'] = disable_joke_appearance_preference if change?('setting_disable_joke_appearance')
|
user.settings['disable_joke_appearance'] = disable_joke_appearance_preference if change?('setting_disable_joke_appearance')
|
||||||
user.settings['new_features_policy'] = new_features_policy if change?('setting_new_features_policy')
|
user.settings['new_features_policy'] = new_features_policy if change?('setting_new_features_policy')
|
||||||
user.settings['theme_instance_ticker'] = theme_instance_ticker if change?('setting_theme_instance_ticker')
|
user.settings['theme_instance_ticker'] = theme_instance_ticker if change?('setting_theme_instance_ticker')
|
||||||
|
user.settings['theme_public'] = theme_public if change?('setting_theme_public')
|
||||||
user.settings['enable_status_reference'] = enable_status_reference_preference if change?('setting_enable_status_reference')
|
user.settings['enable_status_reference'] = enable_status_reference_preference if change?('setting_enable_status_reference')
|
||||||
user.settings['match_visibility_of_references'] = match_visibility_of_references_preference if change?('setting_match_visibility_of_references')
|
user.settings['match_visibility_of_references'] = match_visibility_of_references_preference if change?('setting_match_visibility_of_references')
|
||||||
user.settings['hexagon_avatar'] = hexagon_avatar_preference if change?('setting_hexagon_avatar')
|
user.settings['hexagon_avatar'] = hexagon_avatar_preference if change?('setting_hexagon_avatar')
|
||||||
|
@ -280,6 +281,10 @@ end
|
||||||
settings['setting_theme_instance_ticker']
|
settings['setting_theme_instance_ticker']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def theme_public
|
||||||
|
boolean_cast_setting 'setting_theme_public'
|
||||||
|
end
|
||||||
|
|
||||||
def hexagon_avatar_preference
|
def hexagon_avatar_preference
|
||||||
boolean_cast_setting 'setting_hexagon_avatar'
|
boolean_cast_setting 'setting_hexagon_avatar'
|
||||||
end
|
end
|
||||||
|
|
|
@ -133,7 +133,7 @@ class User < ApplicationRecord
|
||||||
:show_reply_tree_button,
|
:show_reply_tree_button,
|
||||||
:hide_statuses_count, :hide_following_count, :hide_followers_count, :disable_joke_appearance,
|
:hide_statuses_count, :hide_following_count, :hide_followers_count, :disable_joke_appearance,
|
||||||
:new_features_policy,
|
:new_features_policy,
|
||||||
:theme_instance_ticker,
|
:theme_instance_ticker, :theme_public,
|
||||||
:enable_status_reference, :match_visibility_of_references,
|
:enable_status_reference, :match_visibility_of_references,
|
||||||
:post_reference_modal, :add_reference_modal, :unselect_reference_modal,
|
:post_reference_modal, :add_reference_modal, :unselect_reference_modal,
|
||||||
:hexagon_avatar, :enable_empty_column,
|
:hexagon_avatar, :enable_empty_column,
|
||||||
|
|
|
@ -59,6 +59,7 @@ class InitialStateSerializer < ActiveModel::Serializer
|
||||||
store[:disable_joke_appearance] = object.current_account.user.setting_disable_joke_appearance
|
store[:disable_joke_appearance] = object.current_account.user.setting_disable_joke_appearance
|
||||||
store[:new_features_policy] = object.current_account.user.setting_new_features_policy
|
store[:new_features_policy] = object.current_account.user.setting_new_features_policy
|
||||||
store[:theme_instance_ticker] = object.current_account.user.setting_theme_instance_ticker
|
store[:theme_instance_ticker] = object.current_account.user.setting_theme_instance_ticker
|
||||||
|
store[:theme_public] = object.current_account.user.setting_theme_public
|
||||||
store[:enable_status_reference] = object.current_account.user.setting_enable_status_reference
|
store[:enable_status_reference] = object.current_account.user.setting_enable_status_reference
|
||||||
store[:match_visibility_of_references] = object.current_account.user.setting_match_visibility_of_references
|
store[:match_visibility_of_references] = object.current_account.user.setting_match_visibility_of_references
|
||||||
store[:post_reference_modal] = object.current_account.user.setting_post_reference_modal
|
store[:post_reference_modal] = object.current_account.user.setting_post_reference_modal
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
%style{ nonce: request.content_security_policy_nonce }
|
%style{ nonce: request.content_security_policy_nonce }
|
||||||
!= account_cat_styles
|
!= account_cat_styles
|
||||||
!= account_theme_valiables
|
!= account_theme_valiables(@account)
|
||||||
|
|
||||||
= yield :header_tags
|
= yield :header_tags
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,9 @@
|
||||||
-# = f.input :setting_mobile_content_font_size, as: :range, input_html: { min: 10, max: 24, list: 'content_font_size_label' }, wrapper: :with_label, hint: false, fedibird_features: true
|
-# = f.input :setting_mobile_content_font_size, as: :range, input_html: { min: 10, max: 24, list: 'content_font_size_label' }, wrapper: :with_label, hint: false, fedibird_features: true
|
||||||
-# = f.input :setting_mobile_content_emoji_reaction_size, as: :range, input_html: { min: 10, max: 48 }, wrapper: :with_label, false: true, fedibird_features: true
|
-# = f.input :setting_mobile_content_emoji_reaction_size, as: :range, input_html: { min: 10, max: 48 }, wrapper: :with_label, false: true, fedibird_features: true
|
||||||
|
|
||||||
|
.fields-group
|
||||||
|
= f.input :setting_theme_public, as: :boolean, wrapper: :with_label, hint: true, fedibird_features: true
|
||||||
|
|
||||||
%h4= t 'appearance.advanced_web_interface'
|
%h4= t 'appearance.advanced_web_interface'
|
||||||
|
|
||||||
%p.hint= t 'appearance.advanced_web_interface_hint'
|
%p.hint= t 'appearance.advanced_web_interface_hint'
|
||||||
|
|
|
@ -93,6 +93,7 @@ en:
|
||||||
setting_theme_instance_ticker_type-1: Type-1 (Favicon)
|
setting_theme_instance_ticker_type-1: Type-1 (Favicon)
|
||||||
setting_theme_instance_ticker_type-2: Type-2 (Favicon + BG White)
|
setting_theme_instance_ticker_type-2: Type-2 (Favicon + BG White)
|
||||||
setting_theme_instance_ticker_type-3: Type-3 (Favicon + BG Black)
|
setting_theme_instance_ticker_type-3: Type-3 (Favicon + BG Black)
|
||||||
|
setting_theme_public: Your public pages will reflect the theme currently in use
|
||||||
setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
|
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
|
setting_use_pending_items: Hide timeline updates behind a click instead of automatically scrolling the feed
|
||||||
username: Your username will be unique on %{domain}
|
username: Your username will be unique on %{domain}
|
||||||
|
@ -260,6 +261,7 @@ en:
|
||||||
setting_system_font_ui: Use system's default font
|
setting_system_font_ui: Use system's default font
|
||||||
setting_theme: Site theme
|
setting_theme: Site theme
|
||||||
setting_theme_instance_ticker: '#InstanceTicker'
|
setting_theme_instance_ticker: '#InstanceTicker'
|
||||||
|
setting_theme_public: Reflecting the theme on the public page
|
||||||
setting_trends: Show today's trends
|
setting_trends: Show today's trends
|
||||||
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
|
||||||
setting_unsubscribe_modal: Show confirmation dialog before unsubscribing someone
|
setting_unsubscribe_modal: Show confirmation dialog before unsubscribing someone
|
||||||
|
|
|
@ -93,6 +93,7 @@ ja:
|
||||||
setting_theme_instance_ticker_type-1: Type-1 (Favicon)
|
setting_theme_instance_ticker_type-1: Type-1 (Favicon)
|
||||||
setting_theme_instance_ticker_type-2: Type-2 (Favicon + 白背景)
|
setting_theme_instance_ticker_type-2: Type-2 (Favicon + 白背景)
|
||||||
setting_theme_instance_ticker_type-3: Type-3 (Favicon + 黒背景)
|
setting_theme_instance_ticker_type-3: Type-3 (Favicon + 黒背景)
|
||||||
|
setting_theme_public: あなたの公開ページに現在使用中のテーマを反映します
|
||||||
setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています
|
setting_use_blurhash: ぼかしはメディアの色を元に生成されますが、細部は見えにくくなっています
|
||||||
setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします
|
setting_use_pending_items: 新着があってもタイムラインを自動的にスクロールしないようにします
|
||||||
username: あなたのユーザー名は %{domain} の中で重複していない必要があります
|
username: あなたのユーザー名は %{domain} の中で重複していない必要があります
|
||||||
|
@ -260,6 +261,7 @@ ja:
|
||||||
setting_system_font_ui: システムのデフォルトフォントを使う
|
setting_system_font_ui: システムのデフォルトフォントを使う
|
||||||
setting_theme: サイトテーマ
|
setting_theme: サイトテーマ
|
||||||
setting_theme_instance_ticker: インスタンス・ティッカー
|
setting_theme_instance_ticker: インスタンス・ティッカー
|
||||||
|
setting_theme_public: 公開ページにテーマを反映する
|
||||||
setting_trends: 本日のトレンドタグを表示する
|
setting_trends: 本日のトレンドタグを表示する
|
||||||
setting_unfollow_modal: フォローを解除する前に確認ダイアログを表示する
|
setting_unfollow_modal: フォローを解除する前に確認ダイアログを表示する
|
||||||
setting_unsubscribe_modal: 購読を解除する前に確認ダイアログを表示する
|
setting_unsubscribe_modal: 購読を解除する前に確認ダイアログを表示する
|
||||||
|
|
|
@ -34,6 +34,7 @@ defaults: &defaults
|
||||||
noindex: false
|
noindex: false
|
||||||
theme: 'default'
|
theme: 'default'
|
||||||
theme_instance_ticker: 'none'
|
theme_instance_ticker: 'none'
|
||||||
|
theme_public: true
|
||||||
aggregate_reblogs: true
|
aggregate_reblogs: true
|
||||||
advanced_layout: false
|
advanced_layout: false
|
||||||
use_blurhash: true
|
use_blurhash: true
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
class ConservativeSettingToThemePublic < ActiveRecord::Migration[6.1]
|
||||||
|
def up
|
||||||
|
User.joins('join settings on users.id = settings.thing_id').where(settings: {thing_type: :User, var: :new_features_policy, value: "--- conservative\n"}).find_each do |user|
|
||||||
|
user.settings['theme_public'] = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
# nothing to do
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue