Improve UI of admin site settings (#4163)

This commit is contained in:
Eugen Rochko
2017-07-12 03:24:04 +02:00
committed by GitHub
parent 1764c32b9e
commit 056b5ed72f
29 changed files with 151 additions and 161 deletions

View File

@ -22,7 +22,7 @@ module Admin
).freeze
def edit
@settings = Setting.all_as_records
@admin_settings = Form::AdminSettings.new
end
def update
@ -38,12 +38,12 @@ module Admin
private
def settings_params
params.permit(ADMIN_SETTINGS)
params.require(:form_admin_settings).permit(ADMIN_SETTINGS)
end
def value_for_update(key, value)
if BOOLEAN_SETTINGS.include?(key)
value == 'true'
value == '1'
else
value
end

View File

@ -57,10 +57,7 @@ code {
}
}
.input.file,
.input.select,
.input.radio_buttons,
.input.check_boxes {
.input.with_label {
padding: 15px 0;
margin-bottom: 0;
@ -71,6 +68,44 @@ code {
display: block;
padding-top: 5px;
}
&.boolean {
padding: initial;
margin-bottom: initial;
.label_input > label {
font-family: inherit;
font-size: 14px;
color: $primary-text-color;
display: block;
width: auto;
}
label.checkbox {
position: relative;
padding-left: 25px;
flex: 1 1 auto;
}
}
}
.input.with_block_label {
& > label {
font-family: inherit;
font-size: 16px;
color: $primary-text-color;
display: block;
padding-top: 5px;
}
.hint {
margin-bottom: 15px;
}
li {
float: left;
width: 50%;
}
}
.fields-group {
@ -106,7 +141,7 @@ code {
input[type=checkbox] {
position: absolute;
left: 0;
top: 1px;
top: 5px;
margin: 0;
}
@ -116,6 +151,29 @@ code {
}
}
.check_boxes {
.checkbox {
label {
font-family: inherit;
font-size: 14px;
color: $primary-text-color;
display: block;
width: auto;
position: relative;
padding-top: 5px;
padding-left: 25px;
flex: 1 1 auto;
}
input[type=checkbox] {
position: absolute;
left: 0;
top: 5px;
margin: 0;
}
}
}
input[type=text],
input[type=number],
input[type=email],
@ -390,25 +448,6 @@ code {
}
}
.user_filtered_languages {
& > label {
font-family: inherit;
font-size: 16px;
color: $primary-text-color;
display: block;
padding-top: 5px;
}
.hint {
margin-bottom: 15px;
}
li {
float: left;
width: 50%;
}
}
.post-follow-actions {
text-align: center;
color: $ui-primary-color;

View File

@ -0,0 +1,29 @@
# frozen_string_literal: true
class Form::AdminSettings
include ActiveModel::Model
delegate(
:site_contact_username,
:site_contact_username=,
:site_contact_email,
:site_contact_email=,
:site_title,
:site_title=,
:site_description,
:site_description=,
:site_extended_description,
:site_extended_description=,
:site_terms,
:site_terms=,
:open_registrations,
:open_registrations=,
:closed_registrations_message,
:closed_registrations_message=,
:open_deletion,
:open_deletion=,
:timeline_preview,
:timeline_preview=,
to: Setting
)
end

View File

@ -1,64 +1,32 @@
- content_for :page_title do
= t('admin.settings.title')
= form_tag(admin_settings_path, method: :put, class: 'simple_form', style: 'max-width: 100%') do
%table.table
%thead
%tr
%th{ width: '40%' }
= t('admin.settings.setting')
%th
%tbody
%tr
%td
%strong= t('admin.settings.contact_information.label')
%td= text_field_tag :site_contact_username, @settings['site_contact_username'].value, place_holder: t('admin.settings.contact_information.username')
%tr
%td
%strong= t('admin.accounts.email')
%td= text_field_tag :site_contact_email, @settings['site_contact_email'].value, place_holder: t('admin.settings.contact_information.email')
%tr
%td
%strong= t('admin.settings.site_title')
%td= text_field_tag :site_title, @settings['site_title'].value
%tr
%td
%strong= t('admin.settings.site_description.title')
%p= t('admin.settings.site_description.desc_html')
%td= text_area_tag :site_description, @settings['site_description'].value, rows: 8
%tr
%td
%strong= t('admin.settings.site_description_extended.title')
%p= t('admin.settings.site_description_extended.desc_html')
%td= text_area_tag :site_extended_description, @settings['site_extended_description'].value, rows: 8
%tr
%td
%strong= t('admin.settings.site_terms.title')
%p= t('admin.settings.site_terms.desc_html')
%td= text_area_tag :site_terms, @settings['site_terms'].value, rows: 8
%tr
%td
%strong= t('admin.settings.registrations.open.title')
%p= t('admin.settings.registrations.open.desc_html')
%td
= select_tag :open_registrations, options_for_select({ t('simple_form.no') => false, t('simple_form.yes') => true }, @settings['open_registrations'].value)
%tr
%td
%strong= t('admin.settings.registrations.closed_message.title')
%p= t('admin.settings.registrations.closed_message.desc_html')
%td= text_area_tag :closed_registrations_message, @settings['closed_registrations_message'].value, rows: 8
%tr
%td
%strong= t('admin.settings.registrations.deletion.title')
%p= t('admin.settings.registrations.deletion.desc_html')
%td
= select_tag :open_deletion, options_for_select({ t('simple_form.no') => false, t('simple_form.yes') => true }, @settings['open_deletion'].value)
%tr
%td
%strong= t('admin.settings.timeline_preview.title')
%p= t('admin.settings.timeline_preview.desc_html')
%td
= select_tag :timeline_preview, options_for_select({ t('simple_form.no') => false, t('simple_form.yes') => true }, @settings['timeline_preview'].value)
= simple_form_for @admin_settings, url: admin_settings_path, html: { method: :patch } do |f|
.fields-group
= f.input :site_title, placeholder: t('admin.settings.site_title')
= f.input :site_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description.title'), hint: t('admin.settings.site_description.desc_html'), input_html: { rows: 8 }
= f.input :site_contact_username, placeholder: t('admin.settings.contact_information.username')
= f.input :site_contact_email, placeholder: t('admin.settings.contact_information.email')
.simple_form.actions
= button_tag t('generic.save_changes'), type: :submit, class: :btn
%hr/
.fields-group
= f.input :timeline_preview, as: :boolean, wrapper: :with_label, label: t('admin.settings.timeline_preview.title'), hint: t('admin.settings.timeline_preview.desc_html')
.fields-group
= f.input :open_registrations, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.open.title'), hint: t('admin.settings.registrations.open.desc_html')
.fields-group
= f.input :open_deletion, as: :boolean, wrapper: :with_label, label: t('admin.settings.registrations.deletion.title'), hint: t('admin.settings.registrations.deletion.desc_html')
.fields-group
= f.input :closed_registrations_message, as: :text, wrapper: :with_block_label, label: t('admin.settings.registrations.closed_message.title'), hint: t('admin.settings.registrations.closed_message.desc_html'), input_html: { rows: 8 }
%hr/
.fields-group
= f.input :site_extended_description, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_description_extended.title'), hint: t('admin.settings.site_description_extended.desc_html'), input_html: { rows: 8 }
= f.input :site_terms, wrapper: :with_block_label, as: :text, label: t('admin.settings.site_terms.title'), hint: t('admin.settings.site_terms.desc_html'), input_html: { rows: 8 }
.actions
= f.button :button, t('generic.save_changes'), type: :submit