about summary refs log tree commit diff
path: root/app/controllers/admin
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-01-12 20:46:24 +0100
committerEugen Rochko <eugen@zeonfederated.com>2017-01-12 20:46:24 +0100
commitb11fdc3ae3f90731c01149a5a36dc64e065d4ea2 (patch)
treee00b27c1eb52f6186ac7cf9a72aaa359955d4ad2 /app/controllers/admin
parentbabc6a1528e2f7d777d81a972f2d50c58381f45e (diff)
Migrate from ledermann/rails-settings to rails-settings-cached which allows global settings
with YAML-defined defaults. Add admin page for editing global settings. Add "site_description"
setting that would show as a paragraph on the frontpage
Diffstat (limited to 'app/controllers/admin')
-rw-r--r--app/controllers/admin/settings_controller.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb
new file mode 100644
index 000000000..af0be8823
--- /dev/null
+++ b/app/controllers/admin/settings_controller.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+class Admin::SettingsController < ApplicationController
+  before_action :require_admin!
+
+  layout 'admin'
+
+  def index
+    @settings = Setting.all_as_records
+  end
+
+  def update
+    @setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id])
+
+    if @setting.value != params[:setting][:value]
+      @setting.value = params[:setting][:value]
+      @setting.save
+    end
+
+    respond_to do |format|
+      format.html { redirect_to admin_settings_path }
+      format.json { respond_with_bip(@setting) }
+    end
+  end
+end