Class: RubyCms::Admin::SettingsController

Inherits:
BaseController show all
Defined in:
app/controllers/ruby_cms/admin/settings_controller.rb

Instance Method Summary collapse

Instance Method Details

#indexObject



8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/controllers/ruby_cms/admin/settings_controller.rb', line 8

def index
  RubyCms::Settings.ensure_defaults!

  @registry_entries = sorted_registry_entries
  @categories = @registry_entries.map {|e| e.category.to_s }.uniq
  @active_tab = resolve_active_tab(params[:tab], @categories)
  @entries_for_tab = @registry_entries.select {|entry| entry.category.to_s == @active_tab }

  @values = @entries_for_tab.to_h do |entry|
    [entry.key, RubyCms::Settings.get(entry.key, default: entry.default)]
  end
end

#reset_defaultsObject



30
31
32
33
34
35
36
37
38
39
# File 'app/controllers/ruby_cms/admin/settings_controller.rb', line 30

def reset_defaults
  RubyCms::SettingsRegistry.seed_defaults!

  RubyCms::SettingsRegistry.each do |entry|
    RubyCms::Settings.set(entry.key, entry.default)
  end

  redirect_to ruby_cms_admin_settings_path(redirect_settings_params),
              notice: t("ruby_cms.admin.settings.defaults_reset")
end

#updateObject



21
22
23
24
25
26
27
28
# File 'app/controllers/ruby_cms/admin/settings_controller.rb', line 21

def update
  updated_keys = apply_updates(extract_updates)
  updated_keys = apply_nav_order_update(updated_keys)

  respond_with_update_success(updated_keys)
rescue StandardError => e
  respond_with_update_failure(e)
end

#update_nav_orderObject

Dedicated endpoint for saving nav order only. Reads raw JSON body; writes directly to preferences table.



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'app/controllers/ruby_cms/admin/settings_controller.rb', line 42

def update_nav_order
  order = nav_order_from_raw_body
  unless order.kind_of?(Array) && order.any?
    return render json: {
                    success: false,
                    error: "nav_order_main and nav_order_bottom required"
                  },
                  status: :unprocessable_content
  end

  rec = RubyCms::Preference.find_or_initialize_by(key: "nav_order")
  rec.category = "navigation" if rec.new_record?
  rec.value_type = "json"
  rec.value = order.map(&:to_s).to_json
  rec.save!
  render json: { success: true, updated_keys: ["nav_order"], updated_count: 1 }
rescue StandardError => e
  render json: { success: false, error: e.message }, status: :unprocessable_content
end