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:
Matt Jankowski
2017-05-04 12:12:44 -04:00
committed by Eugen Rochko
parent 91ddd345f2
commit 2bd132d458
28 changed files with 117 additions and 97 deletions

View File

@ -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

View File

@ -9,6 +9,12 @@ code {
margin: 0 auto;
}
.admin {
input, textarea {
width: 100%;
}
}
.simple_form {
.input {
margin-bottom: 15px;

View 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

View File

@ -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'])