active_scaffold 4.3.2 → 4.4.1

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +26 -0
  3. data/README.md +4 -6
  4. data/app/assets/javascripts/active_scaffold/active_scaffold.js +104 -12
  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/render_field.js.erb +1 -1
  35. data/config/locales/de.yml +2 -1
  36. data/config/locales/en.yml +33 -32
  37. data/config/locales/es.yml +15 -14
  38. data/config/locales/fr.yml +3 -2
  39. data/config/locales/hu.yml +3 -2
  40. data/config/locales/ja.yml +2 -1
  41. data/config/locales/ro.yml +169 -0
  42. data/config/locales/ru.yml +8 -7
  43. data/config/locales/ta.yml +7 -6
  44. data/config/locales/zh_Hans.yml +14 -13
  45. data/lib/active_scaffold/actions/common_search.rb +1 -14
  46. data/lib/active_scaffold/actions/core.rb +55 -16
  47. data/lib/active_scaffold/actions/field_search.rb +2 -2
  48. data/lib/active_scaffold/actions/list.rb +35 -13
  49. data/lib/active_scaffold/actions/nested.rb +31 -7
  50. data/lib/active_scaffold/actions/show.rb +1 -1
  51. data/lib/active_scaffold/active_record_permissions.rb +1 -1
  52. data/lib/active_scaffold/attribute_params.rb +2 -1
  53. data/lib/active_scaffold/bridges/date_picker/helper.rb +14 -0
  54. data/lib/active_scaffold/bridges/date_picker.rb +10 -0
  55. data/lib/active_scaffold/config/list.rb +10 -1
  56. data/lib/active_scaffold/core.rb +9 -6
  57. data/lib/active_scaffold/data_structures/action_columns.rb +2 -0
  58. data/lib/active_scaffold/data_structures/column.rb +27 -6
  59. data/lib/active_scaffold/data_structures/filter.rb +4 -0
  60. data/lib/active_scaffold/data_structures/nested_info.rb +8 -1
  61. data/lib/active_scaffold/data_structures/sorting.rb +1 -1
  62. data/lib/active_scaffold/engine.rb +6 -0
  63. data/lib/active_scaffold/extensions/action_view_rendering.rb +1 -1
  64. data/lib/active_scaffold/extensions/active_record_session_store.rb +49 -0
  65. data/lib/active_scaffold/finder.rb +73 -21
  66. data/lib/active_scaffold/helpers/action_link_helpers.rb +43 -18
  67. data/lib/active_scaffold/helpers/assets_helpers.rb +4 -4
  68. data/lib/active_scaffold/helpers/filter_helpers.rb +3 -3
  69. data/lib/active_scaffold/helpers/form_column_helpers.rb +34 -22
  70. data/lib/active_scaffold/helpers/form_ui_helpers.rb +15 -10
  71. data/lib/active_scaffold/helpers/framework_ui_helpers.rb +22 -0
  72. data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -0
  73. data/lib/active_scaffold/helpers/list_column_helpers.rb +19 -0
  74. data/lib/active_scaffold/helpers/pagination_helpers.rb +28 -7
  75. data/lib/active_scaffold/helpers/search_column_helpers.rb +32 -5
  76. data/lib/active_scaffold/helpers/tabs_helpers.rb +7 -7
  77. data/lib/active_scaffold/helpers/view_helpers.rb +12 -0
  78. data/lib/active_scaffold/tableless.rb +11 -8
  79. data/lib/active_scaffold/version.rb +2 -2
  80. data/lib/active_scaffold.rb +169 -0
  81. data/lib/generators/active_scaffold/install/install_generator.rb +216 -111
  82. data/lib/tasks/bundle.rake +2 -1
  83. data/lib/tasks/mock_app.rake +43 -0
  84. metadata +21 -7
  85. 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.2
4
+ version: 4.4.1
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-08-13 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
@@ -311,6 +325,7 @@ files:
311
325
  - lib/active_scaffold/extensions/action_controller_rendering.rb
312
326
  - lib/active_scaffold/extensions/action_controller_rescueing.rb
313
327
  - lib/active_scaffold/extensions/action_view_rendering.rb
328
+ - lib/active_scaffold/extensions/active_record_session_store.rb
314
329
  - lib/active_scaffold/extensions/connection_adapter.rb
315
330
  - lib/active_scaffold/extensions/ice_nine.rb
316
331
  - lib/active_scaffold/extensions/localize.rb
@@ -328,6 +343,7 @@ files:
328
343
  - lib/active_scaffold/helpers/filter_helpers.rb
329
344
  - lib/active_scaffold/helpers/form_column_helpers.rb
330
345
  - lib/active_scaffold/helpers/form_ui_helpers.rb
346
+ - lib/active_scaffold/helpers/framework_ui_helpers.rb
331
347
  - lib/active_scaffold/helpers/human_condition_helpers.rb
332
348
  - lib/active_scaffold/helpers/id_helpers.rb
333
349
  - lib/active_scaffold/helpers/list_column_helpers.rb
@@ -356,8 +372,8 @@ files:
356
372
  - lib/tasks/active_scaffold/assets.rake
357
373
  - lib/tasks/brakeman.rake
358
374
  - lib/tasks/bundle.rake
375
+ - lib/tasks/mock_app.rake
359
376
  - public/blank.html
360
- - shoulda_macros/macros.rb
361
377
  - vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png
362
378
  - vendor/assets/images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png
363
379
  - vendor/assets/images/jquery-ui/ui-bg_flat_10_000000_40x100.png
@@ -383,7 +399,6 @@ licenses:
383
399
  - MIT
384
400
  metadata:
385
401
  rubygems_mfa_required: 'true'
386
- post_install_message:
387
402
  rdoc_options: []
388
403
  require_paths:
389
404
  - lib
@@ -398,8 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
398
413
  - !ruby/object:Gem::Version
399
414
  version: '0'
400
415
  requirements: []
401
- rubygems_version: 3.5.11
402
- signing_key:
416
+ rubygems_version: 3.6.9
403
417
  specification_version: 4
404
418
  summary: Rails 4.x and 5.x versions of ActiveScaffold supporting prototype and jquery
405
419
  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