From 0db7ddaf9c94beaf1bef1b265e0f483e4cffd060 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Fri, 13 Mar 2015 03:06:17 -0500 Subject: [PATCH] Get settings page working. --- app/controllers/admin_controller.rb | 8 +++++++- app/helpers/admin_helper.rb | 8 ++++---- app/models/admin_setting.rb | 7 ++----- app/views/admin/index.html.erb | 6 +++--- db/seeds.rb | 2 +- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 73ac166..7514495 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -3,7 +3,13 @@ class AdminController < ApplicationController end def update - # respond to form data... + if !params[:settings].nil? + params[:settings].each do |key, value| + ## assert in list of valid settings... + ## only if changed (i.e. not equal to get) + AdminSetting.set(key, value) + end + end render 'index' end end diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 16e5a87..31a55a0 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -1,8 +1,8 @@ module AdminHelper SETTINGS = [ - {:key => :site_name, :label => 'Site name'}, - {:key => :corporation, :label => 'Corporation'}, - {:key => :description, :label => 'Home page description', :textarea => true}, - {:key => :copyright, :label => 'Copyright'}, + {:key => 'site_name', :label => 'Site name'}, + {:key => 'corporation', :label => 'Corporation'}, + {:key => 'description', :label => 'Home page description', :textarea => true}, + {:key => 'copyright', :label => 'Copyright'}, ] end diff --git a/app/models/admin_setting.rb b/app/models/admin_setting.rb index 668989c..63b5c5f 100644 --- a/app/models/admin_setting.rb +++ b/app/models/admin_setting.rb @@ -7,10 +7,7 @@ class AdminSetting < ActiveRecord::Base end def self.set(key, value) - setting = self.find_by(key: key) - setting.update(value: value) - Rails.cache.write("admin_setting/#{key}") do - value - end + self.find_by(key: key).update(value: value) + Rails.cache.write("admin_setting/#{key}", value) end end diff --git a/app/views/admin/index.html.erb b/app/views/admin/index.html.erb index 34a5e1e..2d11cad 100644 --- a/app/views/admin/index.html.erb +++ b/app/views/admin/index.html.erb @@ -8,11 +8,11 @@ <% AdminHelper::SETTINGS.each do |s| %> - + <% if s[:textarea] %> - + <% else %> - + <% end %> <% end %> diff --git a/db/seeds.rb b/db/seeds.rb index 931494a..2aa9002 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -6,7 +6,7 @@ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # Mayor.create(name: 'Emanuel', city: cities.first) -AdminSetting.create(key: 'site_name', value: 'Your Corporation') +AdminSetting.create(key: 'site_name', value: 'Your Corporation Site') AdminSetting.create(key: 'corporation', value: 'Your Corporation') AdminSetting.create(key: 'description', value: 'Your corporation\'s description goes here!') AdminSetting.create(key: 'copyright', value: 'Your Corporation/Your Name')
<%= label_tag(s[:key], s[:label]) %><%= label_tag("settings[#{s[:key]}]", s[:label]) %><%= text_area_tag(s[:key], AdminSetting.get(s[:key].to_s), size: "60x5") %><%= text_area_tag("settings[#{s[:key]}]", AdminSetting.get(s[:key]), size: "60x5") %><%= text_field_tag(s[:key], AdminSetting.get(s[:key].to_s), size: 40) %><%= text_field_tag("settings[#{s[:key]}]", AdminSetting.get(s[:key]), size: 40) %>