active_scaffold 4.3.1 → 4.4.0

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +26 -1
  3. data/README.md +1 -1
  4. data/app/assets/javascripts/active_scaffold/active_scaffold.js +107 -16
  5. data/app/assets/javascripts/active_scaffold/draggable_lists.js +4 -3
  6. data/app/assets/javascripts/active_scaffold/load.js +20 -5
  7. data/app/assets/stylesheets/active_scaffold/_images.scss +53 -1
  8. data/app/assets/stylesheets/active_scaffold/_layout.scss +1 -66
  9. data/app/views/active_scaffold_overrides/_add_existing_form.html.erb +17 -11
  10. data/app/views/active_scaffold_overrides/_base_form.html.erb +29 -19
  11. data/app/views/active_scaffold_overrides/_field_search.html.erb +9 -9
  12. data/app/views/active_scaffold_overrides/_field_search_columns.html.erb +29 -33
  13. data/app/views/active_scaffold_overrides/_form.html.erb +43 -34
  14. data/app/views/active_scaffold_overrides/_form_association.html.erb +3 -3
  15. data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +20 -16
  16. data/app/views/active_scaffold_overrides/_form_association_record.html.erb +3 -4
  17. data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +2 -1
  18. data/app/views/active_scaffold_overrides/_list.html.erb +6 -4
  19. data/app/views/active_scaffold_overrides/_list_calculations.html.erb +1 -1
  20. data/app/views/active_scaffold_overrides/_list_header.html.erb +3 -3
  21. data/app/views/active_scaffold_overrides/_list_messages.html.erb +19 -19
  22. data/app/views/active_scaffold_overrides/_list_messages_content.html.erb +5 -5
  23. data/app/views/active_scaffold_overrides/_list_pagination.html.erb +7 -5
  24. data/app/views/active_scaffold_overrides/_list_pagination_links.html.erb +5 -3
  25. data/app/views/active_scaffold_overrides/_list_record.html.erb +13 -8
  26. data/app/views/active_scaffold_overrides/_list_with_header.html.erb +8 -8
  27. data/app/views/active_scaffold_overrides/_messages.html.erb +3 -3
  28. data/app/views/active_scaffold_overrides/_render_field.js.erb +8 -11
  29. data/app/views/active_scaffold_overrides/_search.html.erb +7 -6
  30. data/app/views/active_scaffold_overrides/_show.html.erb +4 -4
  31. data/app/views/active_scaffold_overrides/_show_actions.html.erb +2 -2
  32. data/app/views/active_scaffold_overrides/_show_columns.html.erb +28 -30
  33. data/app/views/active_scaffold_overrides/add_existing.js.erb +7 -4
  34. data/app/views/active_scaffold_overrides/add_tab.js.erb +2 -3
  35. data/app/views/active_scaffold_overrides/render_field.js.erb +1 -1
  36. data/config/locales/de.yml +2 -1
  37. data/config/locales/en.yml +33 -32
  38. data/config/locales/es.yml +15 -14
  39. data/config/locales/fr.yml +3 -2
  40. data/config/locales/hu.yml +3 -2
  41. data/config/locales/ja.yml +2 -1
  42. data/config/locales/ro.yml +169 -0
  43. data/config/locales/ru.yml +8 -7
  44. data/config/locales/ta.yml +7 -6
  45. data/config/locales/zh_Hans.yml +14 -13
  46. data/lib/active_scaffold/actions/common_search.rb +1 -14
  47. data/lib/active_scaffold/actions/core.rb +55 -16
  48. data/lib/active_scaffold/actions/field_search.rb +2 -2
  49. data/lib/active_scaffold/actions/list.rb +35 -13
  50. data/lib/active_scaffold/actions/nested.rb +31 -7
  51. data/lib/active_scaffold/actions/show.rb +1 -1
  52. data/lib/active_scaffold/active_record_permissions.rb +1 -1
  53. data/lib/active_scaffold/attribute_params.rb +2 -1
  54. data/lib/active_scaffold/bridges/date_picker/helper.rb +14 -0
  55. data/lib/active_scaffold/bridges/date_picker.rb +10 -0
  56. data/lib/active_scaffold/config/list.rb +10 -1
  57. data/lib/active_scaffold/core.rb +9 -6
  58. data/lib/active_scaffold/data_structures/action_columns.rb +2 -0
  59. data/lib/active_scaffold/data_structures/column.rb +27 -6
  60. data/lib/active_scaffold/data_structures/filter.rb +4 -0
  61. data/lib/active_scaffold/data_structures/nested_info.rb +8 -1
  62. data/lib/active_scaffold/data_structures/sorting.rb +1 -1
  63. data/lib/active_scaffold/extensions/action_view_rendering.rb +1 -1
  64. data/lib/active_scaffold/finder.rb +66 -21
  65. data/lib/active_scaffold/helpers/action_link_helpers.rb +43 -18
  66. data/lib/active_scaffold/helpers/assets_helpers.rb +4 -4
  67. data/lib/active_scaffold/helpers/filter_helpers.rb +3 -3
  68. data/lib/active_scaffold/helpers/form_column_helpers.rb +34 -22
  69. data/lib/active_scaffold/helpers/form_ui_helpers.rb +15 -10
  70. data/lib/active_scaffold/helpers/framework_ui_helpers.rb +22 -0
  71. data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -0
  72. data/lib/active_scaffold/helpers/list_column_helpers.rb +19 -0
  73. data/lib/active_scaffold/helpers/pagination_helpers.rb +28 -7
  74. data/lib/active_scaffold/helpers/search_column_helpers.rb +32 -5
  75. data/lib/active_scaffold/helpers/tabs_helpers.rb +4 -6
  76. data/lib/active_scaffold/helpers/view_helpers.rb +12 -0
  77. data/lib/active_scaffold/tableless.rb +11 -8
  78. data/lib/active_scaffold/version.rb +2 -2
  79. data/lib/active_scaffold.rb +169 -0
  80. data/lib/tasks/bundle.rake +2 -1
  81. data/lib/tasks/mock_app.rake +43 -0
  82. metadata +20 -7
  83. data/shoulda_macros/macros.rb +0 -145
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.3.1
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Many, see README
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-07-17 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: html_attrs
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.1'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: ice_nine
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -190,6 +203,7 @@ files:
190
203
  - config/locales/fr.yml
191
204
  - config/locales/hu.yml
192
205
  - config/locales/ja.yml
206
+ - config/locales/ro.yml
193
207
  - config/locales/ru.yml
194
208
  - config/locales/ta.yml
195
209
  - config/locales/zh_Hans.yml
@@ -328,6 +342,7 @@ files:
328
342
  - lib/active_scaffold/helpers/filter_helpers.rb
329
343
  - lib/active_scaffold/helpers/form_column_helpers.rb
330
344
  - lib/active_scaffold/helpers/form_ui_helpers.rb
345
+ - lib/active_scaffold/helpers/framework_ui_helpers.rb
331
346
  - lib/active_scaffold/helpers/human_condition_helpers.rb
332
347
  - lib/active_scaffold/helpers/id_helpers.rb
333
348
  - lib/active_scaffold/helpers/list_column_helpers.rb
@@ -356,8 +371,8 @@ files:
356
371
  - lib/tasks/active_scaffold/assets.rake
357
372
  - lib/tasks/brakeman.rake
358
373
  - lib/tasks/bundle.rake
374
+ - lib/tasks/mock_app.rake
359
375
  - public/blank.html
360
- - shoulda_macros/macros.rb
361
376
  - vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png
362
377
  - vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png
363
378
  - vendor/assets/images/jquery-ui/ui-bg_flat_10_000000_40x100.png
@@ -383,7 +398,6 @@ licenses:
383
398
  - MIT
384
399
  metadata:
385
400
  rubygems_mfa_required: 'true'
386
- post_install_message:
387
401
  rdoc_options: []
388
402
  require_paths:
389
403
  - lib
@@ -398,8 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
412
  - !ruby/object:Gem::Version
399
413
  version: '0'
400
414
  requirements: []
401
- rubygems_version: 3.5.11
402
- signing_key:
415
+ rubygems_version: 3.6.9
403
416
  specification_version: 4
404
417
  summary: Rails 4.x and 5.x versions of ActiveScaffold supporting prototype and jquery
405
418
  test_files: []
@@ -1,145 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class ActiveSupport::TestCase
4
- def self.should_have_columns_in(action, *columns)
5
- should "have #{columns.to_sentence} columns in #{action}" do
6
- assert_equal columns, column_names(action)
7
- end
8
- end
9
-
10
- def self.should_include_columns_in(action, *columns)
11
- should "include #{columns.to_sentence} columns in #{action}" do
12
- action_columns = column_names(action)
13
- columns.each do |column|
14
- assert action_columns.include?(column.to_sym), "#{column} is not included in #{action}"
15
- end
16
- end
17
- end
18
-
19
- def self.should_not_include_columns_in(action, *columns)
20
- should "not include #{columns.to_sentence} columns in #{action}" do
21
- action_columns = column_names(action)
22
- columns.each do |column|
23
- assert action_columns.exclude?(column.to_sym), "#{column} is included in #{action}"
24
- end
25
- end
26
- end
27
-
28
- def self.should_render_as_form_ui(column_name, form_ui)
29
- before_block = lambda do
30
- @rendered_columns = []
31
- @controller.view_context_class.any_instance.expects(:"active_scaffold_input_#{form_ui}").at_least_once.with do |column, _|
32
- @rendered_columns << column.name
33
- true
34
- end
35
- end
36
- should "render column #{column_name} as #{form_ui} form_ui", before: before_block do
37
- assert_equal form_ui, @controller.active_scaffold_config.columns[column_name].form_ui
38
- assert @rendered_columns.include?(column_name)
39
- end
40
- end
41
-
42
- def self.should_render_with_options_for_select(column_name, *options)
43
- should "render column #{column_name} with options for select" do
44
- converting_sort = ->(a, b) { a.to_s <=> b.to_s }
45
- assert_equal options.sort(&converting_sort), @controller.active_scaffold_config.columns[column_name].options[:options].sort(&converting_sort)
46
- end
47
- end
48
-
49
- def self.should_render_as_form_override(column_name)
50
- should "render column #{column_name} as form override" do
51
- column = @controller.active_scaffold_config.columns[column_name]
52
- assert @response.template.override_form_field?(column)
53
- assert_template partial: "_#{column_name}_form_column", count: 0
54
- end
55
- end
56
-
57
- def self.should_render_as_form_partial_override(column_name)
58
- should "render column #{column_name} as form partial override" do
59
- assert_template partial: "_#{column_name}_form_column"
60
- end
61
- end
62
-
63
- def self.should_render_as_form_hidden(column_name)
64
- before_block = lambda do
65
- @rendered_columns = []
66
- @controller.view_context_class.any_instance.expects(:hidden_field).at_least_once.with do |_, method, _|
67
- @rendered_columns << method
68
- true
69
- end
70
- end
71
- should "render column #{column_name} as form hidden", before: before_block do
72
- assert_template partial: '_form_hidden_attribute'
73
- assert @rendered_columns.include?(column_name)
74
- end
75
- end
76
-
77
- def self.should_render_as_list_ui(column_name, list_ui)
78
- before_block = lambda do
79
- @rendered_columns = []
80
- @controller.view_context_class.any_instance.expects(:"active_scaffold_column_#{list_ui}").at_least_once.with do |column, _|
81
- @rendered_columns << column.name
82
- true
83
- end
84
- end
85
- should "render column #{column_name} as #{list_ui} list_ui", before: before_block do
86
- assert_equal list_ui, @controller.active_scaffold_config.columns[column_name].list_ui
87
- assert @rendered_columns.include?(column_name)
88
- end
89
- end
90
-
91
- def self.should_render_as_field_override(column_name)
92
- should "render column #{column_name} as field override" do
93
- column = @controller.active_scaffold_config.columns[column_name]
94
- assert @response.template.override_form_field?(column)
95
- assert_template partial: "_#{column_name}_column", count: 0
96
- end
97
- end
98
-
99
- def self.should_render_as_field_partial_override(column_name)
100
- should "render column #{column_name} as field partial override" do
101
- assert_template partial: "_#{column_name}_column"
102
- end
103
- end
104
-
105
- def self.should_render_as_inplace_edit(column_name)
106
- before_block = lambda do
107
- @column = @controller.active_scaffold_config.columns[column_name]
108
- @rendered_columns = []
109
- method = @column.list_ui == :checkbox ? :format_column_checkbox : :active_scaffold_inplace_edit
110
- @controller.view_context_class.any_instance.expects(method).at_least_once.with do |_, column, _|
111
- @rendered_columns << column.name
112
- true
113
- end
114
- end
115
- should "render column #{column_name} as inplace edit", before: before_block do
116
- assert @column.inplace_edit
117
- assert @rendered_columns.include?(column_name)
118
- end
119
- end
120
-
121
- def self.should_respond_to_parent_redirecting_to(description, &block)
122
- should_respond_to_parent("redirecting to #{description}") { "document.location.href = \"#{instance_eval(&block)}\"" }
123
- end
124
-
125
- def self.should_respond_to_parent(description = nil, &block)
126
- should "respond to parent #{description}" do
127
- script = block ? instance_eval(&block) : /.*/
128
- script = script.is_a?(Regexp) ? script.source : Regexp.quote(script)
129
- script = script.gsub('\n', '\\\\\\n')
130
- .gsub(/['"]/, '\\\\\\\\\&')
131
- .gsub('</script>', '</scr"+"ipt>')
132
- pre_regex = Regexp.quote("with(window.parent) { setTimeout(function() { window.eval('")
133
- post_regex = Regexp.quote("'); if (typeof(loc) !== 'undefined') loc.replace('about:blank'); }, 1) };")
134
- assert_select 'script[type=text/javascript]', Regexp.new(".*#{pre_regex}#{script}#{post_regex}.*")
135
- end
136
- end
137
-
138
- private
139
-
140
- def column_names(action)
141
- columns = []
142
- @controller.active_scaffold_config.send(action).columns.each(flatten: true) { |col| columns << col.name }
143
- columns
144
- end
145
- end