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.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +19 -0
- data/README.md +1 -1
- data/app/assets/javascripts/active_scaffold/active_scaffold.js +98 -11
- data/app/assets/javascripts/active_scaffold/draggable_lists.js +4 -3
- data/app/assets/javascripts/active_scaffold/load.js +20 -5
- data/app/assets/stylesheets/active_scaffold/_images.scss +53 -1
- data/app/assets/stylesheets/active_scaffold/_layout.scss +1 -66
- data/app/views/active_scaffold_overrides/_add_existing_form.html.erb +17 -11
- data/app/views/active_scaffold_overrides/_base_form.html.erb +29 -19
- data/app/views/active_scaffold_overrides/_field_search.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_field_search_columns.html.erb +29 -33
- data/app/views/active_scaffold_overrides/_form.html.erb +43 -34
- data/app/views/active_scaffold_overrides/_form_association.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +20 -16
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +3 -4
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list.html.erb +6 -4
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_header.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +19 -19
- data/app/views/active_scaffold_overrides/_list_messages_content.html.erb +5 -5
- data/app/views/active_scaffold_overrides/_list_pagination.html.erb +7 -5
- data/app/views/active_scaffold_overrides/_list_pagination_links.html.erb +5 -3
- data/app/views/active_scaffold_overrides/_list_record.html.erb +13 -8
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +8 -8
- data/app/views/active_scaffold_overrides/_messages.html.erb +3 -3
- data/app/views/active_scaffold_overrides/_render_field.js.erb +8 -11
- data/app/views/active_scaffold_overrides/_search.html.erb +7 -6
- data/app/views/active_scaffold_overrides/_show.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_show_actions.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +28 -30
- data/app/views/active_scaffold_overrides/add_existing.js.erb +7 -4
- data/app/views/active_scaffold_overrides/render_field.js.erb +1 -1
- data/config/locales/de.yml +2 -1
- data/config/locales/en.yml +33 -32
- data/config/locales/es.yml +15 -14
- data/config/locales/fr.yml +3 -2
- data/config/locales/hu.yml +3 -2
- data/config/locales/ja.yml +2 -1
- data/config/locales/ro.yml +169 -0
- data/config/locales/ru.yml +8 -7
- data/config/locales/ta.yml +7 -6
- data/config/locales/zh_Hans.yml +14 -13
- data/lib/active_scaffold/actions/common_search.rb +1 -14
- data/lib/active_scaffold/actions/core.rb +55 -16
- data/lib/active_scaffold/actions/field_search.rb +2 -2
- data/lib/active_scaffold/actions/list.rb +35 -13
- data/lib/active_scaffold/actions/nested.rb +31 -7
- data/lib/active_scaffold/actions/show.rb +1 -1
- data/lib/active_scaffold/active_record_permissions.rb +1 -1
- data/lib/active_scaffold/attribute_params.rb +2 -1
- data/lib/active_scaffold/bridges/date_picker/helper.rb +14 -0
- data/lib/active_scaffold/bridges/date_picker.rb +10 -0
- data/lib/active_scaffold/config/list.rb +10 -1
- data/lib/active_scaffold/core.rb +9 -6
- data/lib/active_scaffold/data_structures/action_columns.rb +2 -0
- data/lib/active_scaffold/data_structures/column.rb +27 -6
- data/lib/active_scaffold/data_structures/filter.rb +4 -0
- data/lib/active_scaffold/data_structures/nested_info.rb +8 -1
- data/lib/active_scaffold/data_structures/sorting.rb +1 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +1 -1
- data/lib/active_scaffold/finder.rb +66 -21
- data/lib/active_scaffold/helpers/action_link_helpers.rb +43 -18
- data/lib/active_scaffold/helpers/assets_helpers.rb +4 -4
- data/lib/active_scaffold/helpers/filter_helpers.rb +3 -3
- data/lib/active_scaffold/helpers/form_column_helpers.rb +34 -22
- data/lib/active_scaffold/helpers/form_ui_helpers.rb +15 -10
- data/lib/active_scaffold/helpers/framework_ui_helpers.rb +22 -0
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -0
- data/lib/active_scaffold/helpers/list_column_helpers.rb +19 -0
- data/lib/active_scaffold/helpers/pagination_helpers.rb +28 -7
- data/lib/active_scaffold/helpers/search_column_helpers.rb +32 -5
- data/lib/active_scaffold/helpers/tabs_helpers.rb +3 -5
- data/lib/active_scaffold/helpers/view_helpers.rb +12 -0
- data/lib/active_scaffold/tableless.rb +11 -8
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/active_scaffold.rb +169 -0
- data/lib/tasks/bundle.rake +2 -1
- data/lib/tasks/mock_app.rake +43 -0
- metadata +20 -7
- data/shoulda_macros/macros.rb +0 -145
data/shoulda_macros/macros.rb
DELETED
|
@@ -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
|