Moved flavour UI into own prefs tab

This commit is contained in:
kibigo!
2017-12-10 17:56:17 -08:00
parent 08b0861b96
commit dabf66e676
11 changed files with 68 additions and 15 deletions

View File

@@ -0,0 +1,35 @@
# frozen_string_literal: true
class Settings::FlavoursController < Settings::BaseController
def index
redirect_to action: 'show', flavour: current_flavour
end
def show
unless Themes.instance.flavours.include?(params[:flavour]) or params[:flavour] == current_flavour
redirect_to action: 'show', flavour: current_flavour
end
@listing = Themes.instance.flavours
@selected = params[:flavour]
end
def update
user_settings.update(user_settings_params(params[:flavour]).to_h)
redirect_to action: 'show', flavour: params[:flavour]
end
private
def user_settings
UserSettingsDecorator.new(current_user)
end
def user_settings_params(flavour)
params.require(:user).merge({ setting_flavour: flavour }).permit(
:setting_flavour,
:setting_skin
)
end
end

View File

@@ -39,8 +39,6 @@ class Settings::PreferencesController < Settings::BaseController
:setting_reduce_motion,
:setting_system_font_ui,
:setting_noindex,
:setting_flavour,
:setting_skin,
notification_emails: %i(follow follow_request reblog favourite mention digest),
interactions: %i(must_be_follower must_be_following)
)

View File

@@ -37,7 +37,3 @@ delegate(document, '#account_header', 'change', ({ target }) => {
header.style.backgroundImage = `url(${url})`;
});
delegate(document, '#user_setting_flavour, #user_setting_skin', 'change', ({ target }) => {
target.form.submit();
});

View File

@@ -1,6 +1,8 @@
en:
flavours:
glitch: Glitch Edition
glitch:
description: The default flavour for GlitchSoc instances.
name: Glitch Edition
skins:
glitch:
default: Default

View File

@@ -1,6 +1,8 @@
en:
flavours:
vanilla: Vanilla Mastodon
vanilla:
description: The theme used by vanilla Mastodon instances. This theme might not support all of the features of GlitchSoc.
name: Vanilla Mastodon
skins:
vanilla:
default: Default

View File

@@ -0,0 +1,16 @@
- content_for :page_title do
= t "flavours.#{@selected}.name", default: @selected
= simple_form_for current_user, url: settings_flavour_path(@selected), html: { method: :put } do |f|
= render 'shared/error_messages', object: current_user
.flavour-description
= t "flavours.#{@selected}.description", default: ''
%hr/
.fields-group
= f.input :setting_skin, collection: Themes.instance.skins_for(@selected), label_method: lambda { |skin| I18n.t("skins.#{@selected}.#{skin}", default: skin) }, wrapper: :with_label, include_blank: false
.actions
= f.button :button, t('generic.use_this'), type: :submit

View File

@@ -26,10 +26,6 @@
%h4= t 'preferences.web'
.fields-group
- if Themes.instance.flavours.size > 1
= f.input :setting_flavour, collection: Themes.instance.flavours, label_method: lambda { |flavour| I18n.t("flavours.#{flavour}", default: flavour) }, wrapper: :with_label, include_blank: false
= f.input :setting_skin, collection: Themes.instance.skins_for(current_flavour), label_method: lambda { |skin| I18n.t("skins.#{current_flavour}.#{skin}", default: skin) }, wrapper: :with_label, include_blank: false
= f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
= f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
= f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label