about summary refs log blame commit diff
path: root/app/controllers/admin/settings_controller.rb
blob: c5e6fe4e50e7472a828ab2f55726874aa678151a (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                             
                                           




                               
                
                                  
                      
                                 




                          
            
 
            
                                               
       
 
              

                                                                       
         
 
                                                          
                                          
       
           
 
                       
                                                                 
       
 
                                       
                    
          
             
         
     
   
# frozen_string_literal: true

module Admin
  class SettingsController < BaseController
    ADMIN_SETTINGS = %w(
      site_contact_username
      site_contact_email
      site_title
      site_description
      site_extended_description
      site_terms
      open_registrations
      closed_registrations_message
      open_deletion
      timeline_preview
      bootstrap_timeline_accounts
    ).freeze

    BOOLEAN_SETTINGS = %w(
      open_registrations
      open_deletion
      timeline_preview
    ).freeze

    def edit
      @admin_settings = Form::AdminSettings.new
    end

    def update
      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] = I18n.t('generic.changes_saved_msg')
      redirect_to edit_admin_settings_path
    end

    private

    def settings_params
      params.require(:form_admin_settings).permit(ADMIN_SETTINGS)
    end

    def value_for_update(key, value)
      if BOOLEAN_SETTINGS.include?(key)
        value == '1'
      else
        value
      end
    end
  end
end