active_scaffold 4.3.2 → 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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +19 -0
  3. data/README.md +1 -1
  4. data/app/assets/javascripts/active_scaffold/active_scaffold.js +98 -11
  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/extensions/action_view_rendering.rb +1 -1
  63. data/lib/active_scaffold/finder.rb +66 -21
  64. data/lib/active_scaffold/helpers/action_link_helpers.rb +43 -18
  65. data/lib/active_scaffold/helpers/assets_helpers.rb +4 -4
  66. data/lib/active_scaffold/helpers/filter_helpers.rb +3 -3
  67. data/lib/active_scaffold/helpers/form_column_helpers.rb +34 -22
  68. data/lib/active_scaffold/helpers/form_ui_helpers.rb +15 -10
  69. data/lib/active_scaffold/helpers/framework_ui_helpers.rb +22 -0
  70. data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -0
  71. data/lib/active_scaffold/helpers/list_column_helpers.rb +19 -0
  72. data/lib/active_scaffold/helpers/pagination_helpers.rb +28 -7
  73. data/lib/active_scaffold/helpers/search_column_helpers.rb +32 -5
  74. data/lib/active_scaffold/helpers/tabs_helpers.rb +3 -5
  75. data/lib/active_scaffold/helpers/view_helpers.rb +12 -0
  76. data/lib/active_scaffold/tableless.rb +11 -8
  77. data/lib/active_scaffold/version.rb +2 -2
  78. data/lib/active_scaffold.rb +169 -0
  79. data/lib/tasks/bundle.rake +2 -1
  80. data/lib/tasks/mock_app.rake +43 -0
  81. metadata +20 -7
  82. data/shoulda_macros/macros.rb +0 -145
@@ -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