Replace best_in_place editor on admin settings page (#2789)
* Remove best_in_place * Replace best_in_place usage with rails helpers * Move admin/settings#index to #edit action * Remove click_to__edit from i18n
This commit is contained in:
committed by
Eugen Rochko
parent
91ddd345f2
commit
2bd132d458
@ -2,38 +2,43 @@
|
||||
|
||||
module Admin
|
||||
class SettingsController < BaseController
|
||||
ADMIN_SETTINGS = %w(
|
||||
site_contact_username
|
||||
site_contact_email
|
||||
site_title
|
||||
site_description
|
||||
site_extended_description
|
||||
open_registrations
|
||||
closed_registrations_message
|
||||
).freeze
|
||||
BOOLEAN_SETTINGS = %w(open_registrations).freeze
|
||||
|
||||
def index
|
||||
def edit
|
||||
@settings = Setting.all_as_records
|
||||
end
|
||||
|
||||
def update
|
||||
@setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id])
|
||||
@setting.update(value: value_for_update)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to admin_settings_path }
|
||||
format.json { respond_with_bip(@setting) }
|
||||
settings_params.each do |key, value|
|
||||
setting = Setting.where(var: key).first_or_initialize(var: key)
|
||||
setting.update(value: value_for_update(key, value))
|
||||
end
|
||||
|
||||
flash[:notice] = 'Success!'
|
||||
redirect_to edit_admin_settings_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def settings_params
|
||||
params.require(:setting).permit(:value)
|
||||
params.permit(ADMIN_SETTINGS)
|
||||
end
|
||||
|
||||
def value_for_update
|
||||
if updating_boolean_setting?
|
||||
settings_params[:value] == 'true'
|
||||
def value_for_update(key, value)
|
||||
if BOOLEAN_SETTINGS.include?(key)
|
||||
value == 'true'
|
||||
else
|
||||
settings_params[:value]
|
||||
value
|
||||
end
|
||||
end
|
||||
|
||||
def updating_boolean_setting?
|
||||
BOOLEAN_SETTINGS.include?(params[:id])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -9,6 +9,12 @@ code {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.admin {
|
||||
input, textarea {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.simple_form {
|
||||
.input {
|
||||
margin-bottom: 15px;
|
||||
|
58
app/views/admin/settings/edit.html.haml
Normal file
58
app/views/admin/settings/edit.html.haml
Normal file
@ -0,0 +1,58 @@
|
||||
- content_for :page_title do
|
||||
= t('admin.settings.title')
|
||||
|
||||
= form_tag(admin_settings_path, method: :put) 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.registrations.open.title')
|
||||
%td
|
||||
= select_tag :open_registrations,
|
||||
options_for_select({ t('admin.settings.registrations.open.disabled') => false, t('admin.settings.registrations.open.enabled') => 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
|
||||
|
||||
.simple_form.actions
|
||||
= button_tag t('generic.save_changes'), type: :submit, class: :btn
|
@ -1,40 +0,0 @@
|
||||
- content_for :page_title do
|
||||
= t('admin.settings.title')
|
||||
|
||||
%table.table
|
||||
%colgroup
|
||||
%col{ width: '35%' }/
|
||||
%thead
|
||||
%tr
|
||||
%th= t('admin.settings.setting')
|
||||
%th= t('admin.settings.click_to_edit')
|
||||
%tbody
|
||||
%tr
|
||||
%td{ rowspan: 2 }
|
||||
%strong= t('admin.settings.contact_information.label')
|
||||
%td= best_in_place @settings['site_contact_username'], :value, url: admin_setting_path(@settings['site_contact_username']), place_holder: t('admin.settings.contact_information.username')
|
||||
%tr
|
||||
%td= best_in_place @settings['site_contact_email'], :value, url: admin_setting_path(@settings['site_contact_email']), place_holder: t('admin.settings.contact_information.email')
|
||||
%tr
|
||||
%td
|
||||
%strong= t('admin.settings.site_title')
|
||||
%td= best_in_place @settings['site_title'], :value, url: admin_setting_path(@settings['site_title'])
|
||||
%tr
|
||||
%td
|
||||
%strong= t('admin.settings.site_description.title')
|
||||
%p= t('admin.settings.site_description.desc_html')
|
||||
%td= best_in_place @settings['site_description'], :value, as: :textarea, url: admin_setting_path(@settings['site_description'])
|
||||
%tr
|
||||
%td
|
||||
%strong= t('admin.settings.site_description_extended.title')
|
||||
%p= t('admin.settings.site_description_extended.desc_html')
|
||||
%td= best_in_place @settings['site_extended_description'], :value, as: :textarea, url: admin_setting_path(@settings['site_extended_description'])
|
||||
%tr
|
||||
%td
|
||||
%strong= t('admin.settings.registrations.open.title')
|
||||
%td= best_in_place @settings['open_registrations'], :value, as: :checkbox, collection: { false: t('admin.settings.registrations.open.disabled'), true: t('admin.settings.registrations.open.enabled')}, url: admin_setting_path(@settings['open_registrations'])
|
||||
%tr
|
||||
%td
|
||||
%strong= t('admin.settings.registrations.closed_message.title')
|
||||
%p= t('admin.settings.registrations.closed_message.desc_html')
|
||||
%td= best_in_place @settings['closed_registrations_message'], :value, as: :textarea, url: admin_setting_path(@settings['closed_registrations_message'])
|
Reference in New Issue
Block a user