Skip to content

Commit b5c231a

Browse files
committed
We don't need all crudify stuff for form generated settings controller so write edit and update actions ourselves.
1 parent 8dd122c commit b5c231a

File tree

4 files changed

+28
-34
lines changed

4 files changed

+28
-34
lines changed

Diff for: core/lib/generators/refinery/form/templates/app/controllers/refinery/namespace/admin/settings_controller.rb.erb

+24-30
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,40 @@ module Refinery
33
module Admin
44
class SettingsController < Refinery::AdminController
55

6-
crudify :'refinery/setting',
7-
:title_attribute => 'name',
8-
:order => 'name ASC',
9-
:redirect_to_url => 'refinery.<%= namespacing.underscore %>_admin_<%= plural_name %>_path'
6+
before_filter :check_setting, :only => [:edit, :update]
7+
after_filter :save_subject_for_confirmation, :save_message_for_confirmation, :only => :update
108

11-
before_filter :redirect_back_to_<%= plural_name %>?, :only => [:index]
12-
before_filter :set_url_override?, :only => [:edit, :update]
13-
after_filter :save_subject_for_confirmation?, :only => [:create, :update]
14-
around_filter :rewrite_flash?, :only => [:create, :update]
9+
def edit
10+
@setting = Refinery::Setting.find(params[:id])
11+
end
1512

16-
protected
17-
def rewrite_flash?
18-
yield
13+
def update
14+
@setting = Refinery::Setting.find(params[:id])
1915

20-
flash[:notice] = flash[:notice].to_s.gsub(/(\'.*\')/) {|m| m.titleize}.gsub('<%= class_name %> ', '')
21-
end
16+
if @setting.update_attributes(params[:setting])
17+
flash[:notice] = t('refinery.crudify.updated', :what => @setting.name.gsub("<%= singular_name %>_", "").titleize)
2218

23-
def save_subject_for_confirmation?
24-
Refinery::<%= namespacing %>::Setting.confirmation_subject = params[:subject] if params.keys.include?('subject')
19+
unless request.xhr? or from_dialog?
20+
redirect_back_or_default(refinery.<%= namespacing.underscore %>_admin_<%= plural_name %>_path)
21+
else
22+
render :text => "<script type='text/javascript'>parent.window.location = '#{refinery.<%= namespacing.underscore %>_admin_<%= plural_name %>_path}';</script>"
23+
end
24+
end
2525
end
2626

27-
def redirect_back_to_<%= plural_name %>?
28-
redirect_to refinery.<%= namespacing.underscore %>_admin_<%= plural_name %>_path
29-
end
27+
protected
28+
def check_setting
29+
setting = params[:id].gsub("<%= singular_name %>_", "")
3030

31-
def set_url_override?
32-
@url_override = refinery.<%= namespacing.underscore %>_admin_setting_url(@setting, :dialog => from_dialog?)
31+
Refinery::<%= namespacing %>::Setting.send(setting) if Refinery::<%= namespacing %>::Setting.respond_to?(setting)
3332
end
3433

35-
def find_setting
36-
# ensure that we're dealing with the name of the setting, not the id.
37-
if params[:id].to_s.to_i.to_s == params[:id]
38-
params[:id] = Refinery::Setting.find(params[:id]).name.to_s
39-
end
34+
def save_subject_for_confirmation
35+
Refinery::<%= namespacing %>::Setting.confirmation_subject = params[:subject] if params.keys.include?('subject')
36+
end
4037

41-
# prime the setting first, if it's valid.
42-
if Refinery::<%= namespacing %>::Setting.methods.map(&:to_sym).include?(params[:id].to_s.gsub('<%= singular_name %>_', '').to_sym)
43-
Refinery::<%= namespacing %>::Setting.send(params[:id].to_s.gsub('<%= singular_name %>_', '').to_sym)
44-
end
45-
@setting = Refinery::Setting.find_by_name(params[:id])
38+
def save_message_for_confirmation
39+
Refinery::<%= namespacing %>::Setting.confirmation_message = params[:message] if params.keys.include?('message')
4640
end
4741

4842
end

Diff for: core/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_confirmation_email_form.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<%%= form_for([refinery, :admin, @setting], :url => (@url_override || @url)) do |f| %>
1+
<%%= form_for @setting, :url => refinery.<%= namespacing.underscore %>_admin_setting_path do |f| %>
22

33
<p>
44
<%%= t('.explanation') %>

Diff for: core/lib/generators/refinery/form/templates/app/views/refinery/namespace/admin/settings/_notification_recipients_form.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<%%= form_for([refinery, :admin, @setting], :url => (@url_override || @url)) do |f| %>
1+
<%%= form_for @setting, :url => refinery.<%= namespacing.underscore %>_admin_setting_path do |f| %>
22

33
<div class='field'>
44
<span class='label_with_help'>

Diff for: core/lib/generators/refinery/form/templates/config/routes.rb.erb

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Refinery::Core::Engine.routes.append do
1+
Refinery::Core::Engine.routes.draw do
22
# Frontend routes
33
namespace :<%= namespacing.underscore %> do
44
resources :<%= plural_name %><%= ", :path => ''" if namespacing.underscore == plural_name %>, :only => [:new, :create] do
@@ -19,7 +19,7 @@ Refinery::Core::Engine.routes.append do
1919
get :toggle_spam
2020
end
2121
end<% end %>
22-
resources :settings
22+
resources :settings, :only => [:edit, :update]
2323
end
2424
end
2525
end

0 commit comments

Comments
 (0)