qm-acts-as-generic-controller 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ begin
9
9
  gemspec.email = "marcin@saepia.net"
10
10
  gemspec.homepage = "http://q.saepia.net"
11
11
  gemspec.authors = ["Marcin Lewandowski"]
12
- gemspec.version = "0.1.8"
12
+ gemspec.version = "0.1.9"
13
13
  gemspec.files = Rake::FileList.new [ "MIT-LICENSE", "Rakefile", "lib/*", "app/views/generic_controller/*" ]
14
14
  gemspec.add_dependency "qui-common-helpers", ">= 0.0.8"
15
15
  gemspec.add_dependency "qui-index-table", ">= 0.0.8"
@@ -9,6 +9,15 @@
9
9
  <%- end -%>
10
10
 
11
11
  <%- form_for form_for_param, :html => { :multipart => true } do |f| -%>
12
+ <%- if params[:association_attribute] -%>
13
+ <%= hidden_field_tag :association_attribute_name, params[:association_attribute] %>
14
+ <%= hidden_field_tag :association_attribute_value, params[:association_attribute].scan(/[^\[\]]+/).inject(params) { |memo, obj| memo[obj] } %>
15
+
16
+ <%- elsif params[:association_attribute_name] and params[:association_attribute_value] -%>
17
+ <%= hidden_field_tag :association_attribute_name, params[:association_attribute_name] %>
18
+ <%= hidden_field_tag :association_attribute_value, params[:association_attribute_value] %>
19
+ <%- end -%>
20
+
12
21
  <%= f.error_messages %>
13
22
  <%- unless klass.generic_form_fieldsets -%>
14
23
  <fieldset>
@@ -44,7 +44,9 @@
44
44
  <%- if has_privileges and (v[:kind] == :has_many or v[:kind] == :has_and_belongs_to_many) and (v[:generic_create] or not v[:through]) -%>
45
45
  <%- tab_contents[k] = capture do -%>
46
46
  <%- if v[:generic_create] and has_privileges_to_generic_create -%>
47
- <%= link_to t(:"toolbar.create"), url_for([ "new", section, v[:class_name].table_name.singularize ]) + "?#{v[:class_name].table_name.singularize}[#{table_name}_id]=#{record.id}" %>
47
+ <%- association_attribute = "#{v[:class_name].table_name.singularize}[#{table_name}_id]" -%>
48
+ <%= link_to t(:"toolbar.create"), polymorphic_path([ "new", section, v[:class_name].table_name.singularize ], { association_attribute => record.id, :association_attribute => association_attribute }), :class => "create" %>
49
+
48
50
  <%- end -%>
49
51
 
50
52
  <%= render :partial => "generic_controller/index_table", :locals => { :records => record.send(k), :class_name => v[:class_name] } %>
@@ -121,15 +121,42 @@ module QM
121
121
  if instance_variable_get(singular_variable).save
122
122
  flash[:notice] = :savedAsFlash
123
123
  if defined?(section)
124
- format.html { redirect_to [ section, instance_variable_get(singular_variable) ] }
125
- format.xml { render :xml => instance_variable_get(singular_variable), :status => :created, :location => [ section, instance_variable_get(singular_variable) ] }
124
+ format.html {
125
+ if params[:commit_and_create]
126
+ if params[:association_attribute_name] and params[:association_attribute_value]
127
+ redirect_to polymorphic_url([ "new", section, model.table_name.singularize ], params[:association_attribute_name] => params[:association_attribute_value])
128
+ else
129
+ redirect_to polymorphic_url([ "new", section, model.table_name.singularize ])
130
+
131
+ end
132
+ else
133
+ redirect_to [ section, instance_variable_get(singular_variable) ]
134
+ end
135
+ }
136
+
137
+ format.xml { render :xml => instance_variable_get(singular_variable).to_xml(:only => current_user.privileged_attributes(model, :read)), :status => :created, :location => [ section, instance_variable_get(singular_variable) ] }
138
+
139
+
126
140
  else
127
- format.html { redirect_to instance_variable_get(singular_variable) }
141
+ format.html {
142
+ if params[:commit_and_create]
143
+ if params[:association_attribute_name] and params[:association_attribute_value]
144
+ redirect_to polymorphic_url([ "new", model.table_name.singularize ], params[:association_attribute_name] => params[:association_attribute_value])
145
+ else
146
+ redirect_to polymorphic_url([ "new", model.table_name.singularize ])
147
+ end
148
+
149
+ else
150
+ redirect_to instance_variable_get(singular_variable)
151
+ end
152
+
153
+ }
154
+
128
155
  format.xml {
129
156
  if defined?(current_user) and current_user.respond_to? :privileged_attributes
130
157
  render :xml => instance_variable_get(singular_variable).to_xml(:only => current_user.privileged_attributes(model, :read)), :status => :created, :location => instance_variable_get(singular_variable)
131
158
  else
132
- render :xml => instance_variable_get(singular_variable), :status => :created, :location => instance_variable_get(singular_variable)
159
+ render :xml => instance_variable_get(singular_variable).to_xml(:only => current_user.privileged_attributes(model, :read)), :status => :created, :location => instance_variable_get(singular_variable)
133
160
  end
134
161
  }
135
162
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qm-acts-as-generic-controller
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcin Lewandowski