active_scaffold 3.0.25 → 3.0.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ <% new_row = render :partial => 'list_record', :locals => {:record => @record} %>
2
+ ActiveScaffold.create_record_row('<%= active_scaffold_id %>', '<%= escape_javascript(new_row) %>', <%= {:insert_at => :top}.to_json.html_safe %>);
3
+
4
+ <% if active_scaffold_config.list.columns.any? {|c| c.calculation?} %>
5
+ ActiveScaffold.replace('<%= active_scaffold_calculations_id %>', '<%= escape_javascript(render(:partial => 'list_calculations')) %>');
6
+ <%end%>
7
+
8
+ <% if form_stays_open ||= true %>
9
+ <%# why not just re-render the form? that wouldn't utilize a possible do_new override which sets default values.%>
10
+ ActiveScaffold.reset_form('<%= element_form_id %>');
11
+ ActiveScaffold.replace_html('<%= element_messages_id(:action => :add_existing) %>', '<%= escape_javascript(render(:partial => 'form_messages')) %>');
12
+ <%# have to delay the focus, because there's no "firstElement" in prototype until at least one element is not disabled%>
13
+ <% if ActiveScaffold.js_framework == :prototype %>
14
+ ActiveScaffold.focus_first_element_of_form.defer('<%= element_form_id %>');
15
+ <% end %>
16
+ <% else %>
17
+ ActiveScaffold.find_action_link('<%element_form_id(:action => :new_existing)%>').close();
18
+ <% end %>
@@ -2,9 +2,6 @@ module ActiveScaffold::Actions
2
2
  module Create
3
3
  def self.included(base)
4
4
  base.before_filter :create_authorized_filter, :only => [:new, :create]
5
- base.verify :method => :post,
6
- :only => :create,
7
- :redirect_to => { :action => :index }
8
5
  end
9
6
 
10
7
  def new
@@ -106,6 +103,8 @@ module ActiveScaffold::Actions
106
103
  create_save
107
104
  end
108
105
  rescue ActiveRecord::RecordInvalid
106
+ self.successful = false
107
+ flash[:error] = $!.messages
109
108
  end
110
109
  end
111
110
 
@@ -18,7 +18,7 @@ module ActiveScaffold::Actions
18
18
  # for inline (inlist) editing
19
19
  def update_column
20
20
  do_update_column
21
- render :action => 'update_column', :locals => {:column_span_id => params[:editor_id] || params[:editorId]}
21
+ @column_span_id = params[:editor_id] || params[:editorId]
22
22
  end
23
23
 
24
24
  protected
@@ -92,9 +92,11 @@ module ActiveScaffold::Actions
92
92
  end
93
93
  end
94
94
  rescue ActiveRecord::RecordInvalid
95
+ self.successful = false
96
+ flash[:error] = $!.message
95
97
  rescue ActiveRecord::StaleObjectError
96
98
  @record.errors.add(:base, as_(:version_inconsistency))
97
- self.successful=false
99
+ self.successful = false
98
100
  rescue ActiveRecord::RecordNotSaved
99
101
  @record.errors.add(:base, as_(:record_not_saved)) if @record.errors.empty?
100
102
  self.successful = false
@@ -33,17 +33,10 @@ class ActiveScaffold::Bridges::RecordSelect
33
33
  params.merge!({column.association.primary_key_name => ''})
34
34
  end
35
35
 
36
- record_select_options = active_scaffold_input_text_options(
37
- :controller => remote_controller,
38
- :id => options[:id],
39
- :class => options[:class].gsub(/update_form/, '')
36
+ record_select_options = active_scaffold_input_text_options(options).merge(
37
+ :controller => remote_controller
40
38
  )
41
39
  record_select_options.merge!(column.options)
42
- if options['data-update_url']
43
- record_select_options[:onchange] = %|function(id, label) {
44
- ActiveScaffold.update_column(null, "#{options['data-update_url']}", #{options['data-update_send_form'].to_json}, "#{options[:id]}", id);
45
- }|
46
- end
47
40
 
48
41
  html = if multiple
49
42
  record_multi_select_field(options[:name], value || [], record_select_options)
@@ -55,18 +48,11 @@ class ActiveScaffold::Bridges::RecordSelect
55
48
  end
56
49
 
57
50
  def active_scaffold_record_select_autocomplete(column, options)
58
- record_select_options = active_scaffold_input_text_options(
59
- :controller => active_scaffold_controller_for(@record.class).controller_path,
60
- :id => options[:id],
61
- :class => options[:class].gsub(/update_form/, '')
51
+ remote_controller = active_scaffold_controller_for(column.association.klass).controller_path
52
+ record_select_options = active_scaffold_input_text_options(options).merge(
53
+ :controller => remote_controller
62
54
  )
63
- if options['data-update_url']
64
- record_select_options[:onchange] = %|function(id, label) {
65
- ActiveScaffold.update_column(null, "#{options['data-update_url']}", #{options['data-update_send_form'].to_json}, "#{options[:id]}", id);
66
- }|
67
- end
68
-
69
- html = record_select_autocomplete(options[:name], value, record_select_options)
55
+ html = record_select_autocomplete(options[:name], @record, record_select_options)
70
56
  html = self.class.field_error_proc.call(html, self) if @record.errors[column.name].any?
71
57
  html
72
58
  end
@@ -107,7 +107,7 @@ module ActiveScaffold::DataStructures
107
107
  if association.primary_key_name == current.primary_key_name
108
108
  # show columns for has_many and has_one child associationes
109
109
  constrained_fields << current.name.to_sym if current.belongs_to?
110
- @child_association = current
110
+ @child_association = current if current.klass == @parent_model
111
111
  end
112
112
  end
113
113
  end
@@ -6,7 +6,6 @@ module ActiveScaffold::DataStructures
6
6
  else
7
7
  session_info = session_storage[:nested].clone
8
8
  begin
9
- debugger
10
9
  session_info[:parent_scaffold] = "#{session_info[:parent_scaffold].to_s.camelize}Controller".constantize
11
10
  session_info[:parent_model] = session_info[:parent_scaffold].active_scaffold_config.model
12
11
  session_info[:association] = session_info[:parent_model].reflect_on_association(session_info[:name])
@@ -99,13 +98,13 @@ module ActiveScaffold::DataStructures
99
98
 
100
99
  def iterate_model_associations(model)
101
100
  @constrained_fields = []
102
- @constrained_fields << association.foreign_key.to_sym unless association.belongs_to?
101
+ @constrained_fields << association.primary_key_name.to_sym unless association.belongs_to?
103
102
  model.reflect_on_all_associations.each do |current|
104
- if !current.belongs_to? && association.foreign_key == current.association_foreign_key
103
+ if !current.belongs_to? && association.primary_key_name == current.association_foreign_key
105
104
  constrained_fields << current.name.to_sym
106
105
  @child_association = current if current.klass == @parent_model
107
106
  end
108
- if association.foreign_key == current.foreign_key
107
+ if association.primary_key_name == current.primary_key_name
109
108
  # show columns for has_many and has_one child associationes
110
109
  constrained_fields << current.name.to_sym if current.belongs_to?
111
110
  @child_association = current
@@ -0,0 +1,22 @@
1
+ # Bugfix: building an sti model from an association fails
2
+ # https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/6306-collection-associations-build-method-not-supported-for-sti
3
+ # https://github.com/rails/rails/issues/815
4
+ # https://github.com/rails/rails/pull/1686
5
+ ActiveRecord::Reflection::AssociationReflection.class_eval do
6
+ def klass_with_sti(*opts)
7
+ sti_col = klass.inheritance_column
8
+ if (h = opts.first).is_a? Hash and (passed_type = ( h[sti_col] || h[sti_col.to_sym] )) and (new_klass = active_record.send(:compute_type, passed_type)) < klass
9
+ new_klass
10
+ else
11
+ klass
12
+ end
13
+ end
14
+ def build_association(*opts, &block)
15
+ self.original_build_association_called = true
16
+ klass_with_sti(*opts).new(*opts, &block)
17
+ end
18
+ def create_association(*opts, &block)
19
+ self.original_build_association_called = true
20
+ klass_with_sti(*opts).create(*opts, &block)
21
+ end
22
+ end
@@ -33,8 +33,7 @@ module ActiveScaffold
33
33
  parameters[:eid] = params[:parent_controller]
34
34
  end
35
35
  if nested?
36
- parameters[:controller] = nested.parent_scaffold.controller_path
37
- parameters[:eid] = nil
36
+ parameters.merge! nested.to_params
38
37
  end
39
38
  if params[:parent_sti]
40
39
  parameters[:controller] = params[:parent_sti]
@@ -84,17 +83,11 @@ module ActiveScaffold
84
83
  end
85
84
 
86
85
  def build_associated(column, record)
87
- child = column.singular_association? ? record.send(:"build_#{column.name}") : record.send(column.name).build
88
- if record.new_record? && (reflection = record.class.reflect_on_association(column.name)).try(:reverse)
89
- reverse_macro = child.class.reflect_on_association(reflection.reverse).macro
90
- if [:has_one, :belongs_to].include?(reverse_macro) # singular
91
- child.send(:"#{reflection.reverse}=", record)
92
- # TODO: Might want to extend with this branch in the future
93
- # else # plural
94
- # child.send(:"#{reflection.reverse}") << record
95
- end
86
+ if column.singular_association?
87
+ record.send(:"build_#{column.name}")
88
+ else
89
+ record.send(column.name).build
96
90
  end
97
- child
98
91
  end
99
92
  end
100
93
  end
@@ -88,7 +88,7 @@ module ActiveScaffold
88
88
  else
89
89
  options[:include_blank] ||= as_(:_select_)
90
90
  end
91
- select(:record, method, options_for_select, options, html_options)
91
+ select(:record, method, select_options, options, html_options)
92
92
  end
93
93
 
94
94
  def active_scaffold_search_text(column, options)
@@ -2,7 +2,7 @@ module ActiveScaffold
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 0
5
- PATCH = 25
5
+ PATCH = 26
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- hash: 53
4
+ hash: 51
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 0
9
- - 25
10
- version: 3.0.25
9
+ - 26
10
+ version: 3.0.26
11
11
  platform: ruby
12
12
  authors:
13
13
  - Many, see README
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-12 00:00:00 Z
18
+ date: 2011-12-28 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -155,37 +155,37 @@ files:
155
155
  - frontends/default/views/_list_pagination_links.html.erb
156
156
  - frontends/default/views/_list_record.html.erb
157
157
  - frontends/default/views/_action_group.html.erb
158
- - frontends/default/views/_list_messages.html.erb
159
- - frontends/default/views/_row.html.erb
160
158
  - frontends/default/views/_messages.html.erb
159
+ - frontends/default/views/_base_form.html.erb
160
+ - frontends/default/views/_render_field.js.rjs
161
161
  - frontends/default/views/_search.html.erb
162
162
  - frontends/default/views/_show.html.erb
163
163
  - frontends/default/views/list.html.erb
164
- - frontends/default/views/list.js.rjs
165
164
  - frontends/default/views/_show_columns.html.erb
166
165
  - frontends/default/views/_update_actions.html.erb
167
166
  - frontends/default/views/_update_form.html.erb
168
167
  - frontends/default/views/_vertical_subform.html.erb
169
168
  - frontends/default/views/_vertical_subform_record.html.erb
170
- - frontends/default/views/_base_form.html.erb
169
+ - frontends/default/views/_row.html.erb
170
+ - frontends/default/views/list.js.rjs
171
171
  - frontends/default/views/delete.html.erb
172
172
  - frontends/default/views/add_existing_form.html.erb
173
173
  - frontends/default/views/create.html.erb
174
+ - frontends/default/views/_list_messages.html.erb
174
175
  - frontends/default/views/_human_conditions.html.erb
175
- - frontends/default/views/_list_with_header.html.erb
176
176
  - frontends/default/views/field_search.html.erb
177
- - frontends/default/views/_render_field.js.rjs
178
- - frontends/default/views/search.html.erb
179
177
  - frontends/default/views/add_existing.js.rjs
178
+ - frontends/default/views/search.html.erb
179
+ - frontends/default/views/destroy.js.rjs
180
180
  - frontends/default/views/update.html.erb
181
+ - frontends/default/views/_list_with_header.html.erb
181
182
  - frontends/default/views/_list_pagination.html.erb
182
- - frontends/default/views/_list_record_columns.html.erb
183
183
  - frontends/default/views/show.html.erb
184
- - frontends/default/views/destroy.js.rjs
184
+ - frontends/default/views/form_messages.js.rjs
185
+ - frontends/default/views/_list_record_columns.html.erb
186
+ - frontends/default/views/edit_associated.js.rjs
185
187
  - frontends/default/views/_search_attribute.html.erb
186
188
  - frontends/default/views/action_confirmation.html.erb
187
- - frontends/default/views/edit_associated.js.rjs
188
- - frontends/default/views/form_messages.js.rjs
189
189
  - frontends/default/views/on_action_update.js.rjs
190
190
  - frontends/default/views/on_create.js.rjs
191
191
  - frontends/default/views/on_mark_all.js.rjs
@@ -217,6 +217,7 @@ files:
217
217
  - frontends/default/views/_horizontal_subform_record.html.erb~
218
218
  - frontends/default/views/_list_with_header.html.erb~
219
219
  - frontends/default/views/_update_form.html.erb~
220
+ - frontends/default/views/add_existing.js.erb~
220
221
  - lib/active_scaffold.rb
221
222
  - lib/active_scaffold_env.rb
222
223
  - lib/active_scaffold/actions/core.rb
@@ -228,9 +229,9 @@ files:
228
229
  - lib/active_scaffold/actions/show.rb
229
230
  - lib/active_scaffold/actions/nested.rb
230
231
  - lib/active_scaffold/actions/search.rb
231
- - lib/active_scaffold/actions/mark.rb
232
232
  - lib/active_scaffold/actions/subform.rb
233
233
  - lib/active_scaffold/actions/update.rb
234
+ - lib/active_scaffold/actions/mark.rb
234
235
  - lib/active_scaffold/actions/core.rb~
235
236
  - lib/active_scaffold/actions/nested.rb~
236
237
  - lib/active_scaffold/actions/update.rb~
@@ -267,9 +268,9 @@ files:
267
268
  - lib/active_scaffold/data_structures/set.rb
268
269
  - lib/active_scaffold/data_structures/sorting.rb
269
270
  - lib/active_scaffold/data_structures/nested_info.rb
271
+ - lib/active_scaffold/data_structures/nested_info.rb~
270
272
  - lib/active_scaffold/data_structures/action_columns.rb~
271
273
  - lib/active_scaffold/data_structures/action_link.rb~
272
- - lib/active_scaffold/data_structures/nested_info.rb~
273
274
  - lib/active_scaffold/finder.rb
274
275
  - lib/active_scaffold/helpers/association_helpers.rb
275
276
  - lib/active_scaffold/helpers/controller_helpers.rb
@@ -365,6 +366,7 @@ files:
365
366
  - lib/active_scaffold/extensions/reverse_associations.rb~
366
367
  - lib/active_scaffold/extensions/routing_mapper.rb~
367
368
  - lib/active_scaffold/extensions/unsaved_associated.rb~
369
+ - lib/active_scaffold/extensions/active_association_reflection.rb~
368
370
  - lib/active_scaffold/paginator.rb
369
371
  - lib/active_scaffold/responds_to_parent.rb
370
372
  - lib/active_scaffold/attribute_params.rb~