active_scaffold_vho 3.2.8 → 3.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODYyNmNhOThiNDY0MmRhYWIzNmM2ZjBlYzM1MzdhOTI0ZTc2M2U2Nw==
4
+ NmNjMTRjZWFkYWM5ZWJjZDU1NGJkZGI0MWM0ZDZjNDQ3OTZmMzQ5Mw==
5
5
  data.tar.gz: !binary |-
6
- NGQ1YzFjNGNkZDg5MDQ3ZWIyZDc4YjI0YzNmMDQ0YjZkZmIzYTcxOA==
6
+ ZDE2MGFlYmRmNWQ3ZmE1N2EwYjMwNTU2ZTc1YTlmMDVjY2E3MDIzNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmM3Zjk1YWJiMTIwZGQ0ZjNmNmM0YjBlZWE0NzZhZWQ3OWU3NWRiODVjYTUw
10
- OWI2ZThkNzcwOWY3ZGQ2ZGRjNmRiYTViYWIyNTlhNGYwZWY4NjZkNzUzMGYw
11
- MjU4NmRkMmQ3MmFmYTFhNTUwYzkxY2FhNzNjMWZiNTU5MWY0Njc=
9
+ MDI2ODUyN2U4NTY0ZTFkYWYxZGMyZDcyMzIwNWE2N2E0ZGUyZmI5ZjdmZTJi
10
+ ODFmY2JmOTFjMmM2YmMzODU0ZDZmYzcwNzBlOTM5OGJiMTk5NjM0OTk5ZmYz
11
+ MzQ3NzNlZGZiMWM5MDBlMDMzYTQyODdmMGNjY2VmNmMxN2JmYTg=
12
12
  data.tar.gz: !binary |-
13
- NmJiNTZhM2VlYmJhN2QzZWIxMTc1OTRmMDhjZmE4ZTdjYzRlNTBmMjliYmQ3
14
- ZmE1OTJhYmQxMTdmMjcxNWNjYmQ5NTE5MjUwMWRmNTQ0ZWNkZjZiZjcxMmYy
15
- MTg0Y2Q5NDQ0YzNiNGE3ZTU4YmEyMmM0NWZmNTYwMWVhOGVjOTc=
13
+ OTJiMTcwMTRlYzNlMDk2OWFhODFhM2RhNDhiOTY5MjMxYWJmMTEwZGY2M2Nl
14
+ NjM2YjNmZDNkYzhmMzJkZDNjMjg2N2JmYmQ2YTUxM2U4Mzc2ODY4NTIwYWEz
15
+ NGNhYjYzOTIwOTRlZjMyNzk5NzdhZjIxZGVhNGJkNDYyOTc1YTQ=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_scaffold_vho (3.2.7)
4
+ active_scaffold_vho (3.2.8)
5
5
  kaminari
6
6
  rails (>= 3.1.0)
7
7
 
@@ -201,44 +201,22 @@ $(document).ready(function() {
201
201
  return false;
202
202
  });
203
203
 
204
- $(document).on('change', 'input.update_form, textarea.update_form, select.update_form', function(event) {
205
- var element = $(this);
206
- var as_form = element.closest('form.as_form');
207
- var params = null;
208
-
209
- if (element.attr('data-update_send_form')) {
210
- params = as_form.serialize();
211
- params += '&' + $.param({source_id: element.attr('id')});
212
- } else {
213
- if (element.is("input:checkbox")) {
214
- params = {value: element.is(":checked")};
215
- } else {
216
- params = {value: element.val()};
217
- }
218
- params.source_id = element.attr('id');
219
- }
204
+ $(document).on('change', 'input.update_form:not(.recordselect), input.update_form, textarea.update_form, select.update_form', function(event) {
205
+ var form_element = $(this);
206
+ var value, additional_params;
220
207
 
221
- $.ajax({
222
- url: element.attr('data-update_url'),
223
- data: params,
224
- beforeSend: function(xhr, settings) {
225
- element.nextAll('img.loading-indicator').css('visibility','visible');
226
- ActiveScaffold.disable_form(as_form);
227
- if (settings.dataType === undefined || settings.dataType === 'text') {
228
- xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
229
- }
230
- },
231
- complete: function(xhr, status) {
232
- element.nextAll('img.loading-indicator').css('visibility','hidden');
233
- ActiveScaffold.enable_form(as_form)
234
- },
235
- error: function (xhr, status, error) {
236
- var as_div = element.closest("div.active-scaffold");
237
- if (as_div) {
238
- ActiveScaffold.report_500_response(as_div)
239
- }
240
- }
241
- });
208
+ if (form_element.is("input:checkbox")) {
209
+ value = form_element.is(":checked");
210
+ } else {
211
+ value = form_element.val();
212
+ }
213
+ ActiveScaffold.update_column(form_element, form_element.data('update_url'), form_element.data('update_send_form'), form_element.attr('id'), value, additional_params);
214
+ return true;
215
+ });
216
+
217
+ jQuery(document).on('recordselect:change', 'input.recordselect.update_form', function(event, id, label) {
218
+ var element = jQuery(this);
219
+ ActiveScaffold.update_column(element, element.data('update_url'), element.data('update_send_form'), element.attr('id'), id);
242
220
  return true;
243
221
  });
244
222
 
@@ -548,6 +526,46 @@ var ActiveScaffold = {
548
526
  if (even_row === true) replaced.addClass('even-record');
549
527
  ActiveScaffold.highlight(replaced);
550
528
  },
529
+
530
+ update_column: function(element, url, send_form, source_id, val, additional_params) {
531
+ if (!element) element = jQuery('#' + source_id);
532
+ var as_form = element.closest('form.as_form');
533
+ var params = null;
534
+
535
+ if (element.attr('data-update_send_form')) {
536
+ params = as_form.serialize();
537
+ params += '&' + $.param({source_id: source_id});
538
+ } else {
539
+ if (element.is("input:checkbox")) {
540
+ params = {value: element.is(":checked")};
541
+ } else {
542
+ params = {value: val};
543
+ }
544
+ params.source_id = source_id;
545
+ }
546
+
547
+ $.ajax({
548
+ url: url,
549
+ data: params,
550
+ beforeSend: function(xhr, settings) {
551
+ element.nextAll('img.loading-indicator').css('visibility','visible');
552
+ ActiveScaffold.disable_form(as_form);
553
+ if (settings.dataType === undefined || settings.dataType === 'text') {
554
+ xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
555
+ }
556
+ },
557
+ complete: function(xhr, status) {
558
+ element.nextAll('img.loading-indicator').css('visibility','hidden');
559
+ ActiveScaffold.enable_form(as_form)
560
+ },
561
+ error: function (xhr, status, error) {
562
+ var as_div = element.closest("div.active-scaffold");
563
+ if (as_div) {
564
+ ActiveScaffold.report_500_response(as_div)
565
+ }
566
+ }
567
+ });
568
+ },
551
569
 
552
570
  replace: function(element, html, disable_event_trigger) {
553
571
  if (typeof(element) == 'string') element = '#' + element;
@@ -767,10 +785,15 @@ var ActiveScaffold = {
767
785
  if (typeof(source) == 'string') source = '#' + source;
768
786
  var source = $(source);
769
787
  var element = source.closest('.association-record');
788
+
789
+ var element = source.closest('.sub-form-record'), selector = '';
770
790
  if (element.length == 0) {
771
- element = source.closest('ol.form');
791
+ element = source.closest('form > ol.form');
792
+ selector = 'li';
772
793
  }
773
- element = element.find('.' + options.field_class);
794
+ // find without entering new subforms
795
+ selector = options.is_subform ? '' : selector + ':not(.sub-form) ';
796
+ element = element.find(selector + '.' + options.field_class).first();
774
797
 
775
798
  if (element) {
776
799
  if (options.is_subform == false) {
@@ -125,7 +125,7 @@ module ActiveScaffold
125
125
  def column_value_from_param_simple_value(parent_record, column, value)
126
126
  if column.singular_association?
127
127
  # it's a single id
128
- column.association.klass.find(value) if value and not value.empty?
128
+ column.association.klass.where(:id=> value).first if value and not value.empty?
129
129
  elsif column.plural_association?
130
130
  column_plural_assocation_value_from_value(column, value)
131
131
  elsif column.column && column.column.number? && [:i18n_number, :currency].include?(column.options[:format])
@@ -19,13 +19,18 @@ module ActiveScaffold::DataStructures
19
19
  attr_accessor :collapsed
20
20
 
21
21
  # nests a subgroup in the column set
22
- def add_subgroup(label, &proc)
22
+ def add_subgroup(label, insert_index = nil, &proc)
23
23
  columns = ActiveScaffold::DataStructures::ActionColumns.new
24
24
  columns.label = label
25
25
  columns.action = self.action
26
26
  columns.configure &proc
27
27
  self.exclude columns.collect_columns
28
- self.add columns
28
+ if insert_index.nil?
29
+ self.add columns
30
+ else
31
+ self.add columns, insert_index
32
+ end
33
+
29
34
  end
30
35
 
31
36
  def include?(item)
@@ -306,7 +306,11 @@ module ActiveScaffold::DataStructures
306
306
 
307
307
  # default all the configurable variables
308
308
  self.css_class = ''
309
- self.required = active_record_class.validators_on(self.name).map(&:class).include? ActiveModel::Validations::PresenceValidator
309
+ self.required = active_record_class.validators_on(self.name).any? do |val|
310
+ !val.options[:if] && !val.options[:unless] && (ActiveModel::Validations::PresenceValidator === val ||
311
+ (ActiveModel::Validations::InclusionValidator === val && !val.options[:allow_nil] && !val.options[:allow_blank] && !(@form_ui == :checkbox && [[true, false], [false, true]].include?(val.send(:delimiter))))
312
+ )
313
+ end
310
314
  self.sort = true
311
315
  self.search_sql = true
312
316
 
@@ -16,9 +16,19 @@ module ActiveScaffold::DataStructures
16
16
  # the way to add items to the set.
17
17
  def add(*args)
18
18
  args.flatten! # allow [] as a param
19
+
20
+ index = args.pop if args.last().is_a? Numeric
21
+
19
22
  args.each { |arg|
20
23
  arg = arg.to_sym if arg.is_a? String
21
- @set << arg unless @set.include? arg # avoid duplicates
24
+ unless @set.include? arg # avoid duplicates
25
+ if index.nil?
26
+ @set << arg
27
+ else
28
+ @set.insert(index,arg)
29
+ index += 1
30
+ end
31
+ end
22
32
  }
23
33
  end
24
34
  alias_method :<<, :add
@@ -196,6 +196,13 @@ module ActiveScaffold
196
196
  record_select_options = {:controller => remote_controller, :id => options[:id]}
197
197
  record_select_options.merge!(active_scaffold_input_text_options)
198
198
  record_select_options.merge!(column.options)
199
+ record_select_options[:size] ||= ActionView::Helpers::InstanceTag::DEFAULT_FIELD_OPTIONS["size"]
200
+
201
+ unless options['data-update_url'].nil?
202
+ record_select_options['data-update_url'] = options['data-update_url']
203
+ record_select_options['data-update_send_form'] = options['data-update_send_form']
204
+ record_select_options[:class] = "#{record_select_options[:class]} #{options[:class]}".strip
205
+ end
199
206
 
200
207
  if multiple
201
208
  record_multi_select_field(options[:name], value || [], record_select_options)
@@ -2,7 +2,7 @@ module ActiveScaffold
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 2
5
- PATCH = 8
5
+ PATCH = 9
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_vho
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.8
4
+ version: 3.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Many, see README
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-13 00:00:00.000000000 Z
11
+ date: 2014-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoulda