active_scaffold 3.6.20 → 3.7.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 +27 -0
- data/README.md +27 -16
- data/app/assets/javascripts/jquery/active_scaffold.js +38 -6
- data/app/assets/javascripts/jquery/active_scaffold_chosen.js +6 -5
- data/app/assets/javascripts/jquery/tiny_mce_bridge.js +18 -4
- data/app/assets/stylesheets/active_scaffold_layout.css +12 -1
- data/app/views/active_scaffold_overrides/_base_form.html.erb +5 -1
- data/app/views/active_scaffold_overrides/_field_search.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_render_field.js.erb +19 -11
- data/config/locales/ja.yml +59 -59
- data/lib/active_scaffold/actions/common_search.rb +2 -2
- data/lib/active_scaffold/actions/core.rb +30 -10
- data/lib/active_scaffold/actions/field_search.rb +9 -6
- data/lib/active_scaffold/actions/nested.rb +7 -7
- data/lib/active_scaffold/attribute_params.rb +19 -57
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +0 -3
- data/lib/active_scaffold/bridges/active_storage/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/active_storage.rb +3 -0
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker/helper.rb +4 -4
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +4 -1
- data/lib/active_scaffold/bridges/record_select/helpers.rb +2 -2
- data/lib/active_scaffold/bridges/tiny_mce.rb +1 -1
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +1 -6
- data/lib/active_scaffold/config/core.rb +1 -1
- data/lib/active_scaffold/config/field_search.rb +9 -1
- data/lib/active_scaffold/config/form.rb +9 -1
- data/lib/active_scaffold/core.rb +2 -8
- data/lib/active_scaffold/data_structures/action_columns.rb +0 -25
- data/lib/active_scaffold/data_structures/action_links.rb +1 -1
- data/lib/active_scaffold/data_structures/association/abstract.rb +8 -0
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +8 -0
- data/lib/active_scaffold/data_structures/association/active_record.rb +1 -13
- data/lib/active_scaffold/data_structures/association/mongoid.rb +21 -8
- data/lib/active_scaffold/data_structures/column.rb +31 -5
- data/lib/active_scaffold/data_structures/columns.rb +12 -12
- data/lib/active_scaffold/data_structures/nested_info.rb +12 -0
- data/lib/active_scaffold/data_structures/sorting.rb +1 -1
- data/lib/active_scaffold/engine.rb +0 -1
- data/lib/active_scaffold/extensions/action_view_rendering.rb +13 -5
- data/lib/active_scaffold/extensions/cow_proxy.rb +1 -1
- data/lib/active_scaffold/extensions/unsaved_record.rb +9 -3
- data/lib/active_scaffold/finder.rb +5 -1
- data/lib/active_scaffold/helpers/action_link_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/form_column_helpers.rb +48 -22
- data/lib/active_scaffold/helpers/list_column_helpers.rb +3 -2
- data/lib/active_scaffold/helpers/search_column_helpers.rb +8 -2
- data/lib/active_scaffold/helpers/view_helpers.rb +1 -1
- data/lib/active_scaffold/registry.rb +10 -15
- data/lib/active_scaffold/tableless.rb +10 -79
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/active_scaffold.rb +0 -7
- data/lib/generators/active_scaffold/install_generator.rb +2 -2
- data/test/bridges/bridge_test.rb +1 -1
- data/test/bridges/paperclip_test.rb +16 -13
- data/test/bridges/tiny_mce_test.rb +1 -1
- data/test/config/base_test.rb +1 -1
- data/test/config/core_test.rb +1 -1
- data/test/config/create_test.rb +1 -1
- data/test/config/delete_test.rb +1 -1
- data/test/config/field_search_test.rb +1 -1
- data/test/config/list_test.rb +1 -1
- data/test/config/nested_test.rb +1 -1
- data/test/config/search_test.rb +1 -1
- data/test/config/show_test.rb +1 -1
- data/test/config/subform_test.rb +1 -1
- data/test/config/update_test.rb +1 -1
- data/test/data_structures/action_columns_test.rb +1 -1
- data/test/data_structures/action_link_test.rb +1 -1
- data/test/data_structures/action_links_test.rb +1 -1
- data/test/data_structures/actions_test.rb +1 -1
- data/test/data_structures/association_column_test.rb +1 -1
- data/test/data_structures/column_test.rb +1 -1
- data/test/data_structures/columns_test.rb +1 -1
- data/test/data_structures/set_test.rb +1 -1
- data/test/data_structures/sorting_test.rb +1 -1
- data/test/data_structures/standard_column_test.rb +1 -1
- data/test/data_structures/validation_reflection_test.rb +1 -1
- data/test/data_structures/virtual_column_test.rb +1 -1
- data/test/extensions/active_record_test.rb +1 -1
- data/test/helpers/pagination_helpers_test.rb +1 -1
- data/test/misc/active_record_permissions_test.rb +1 -1
- data/test/misc/attribute_params_test.rb +1 -1
- data/test/misc/calculation_test.rb +1 -1
- data/test/misc/configurable_test.rb +1 -1
- data/test/misc/constraints_test.rb +1 -1
- data/test/misc/convert_numbers_format_test.rb +1 -1
- data/test/misc/finder_test.rb +1 -1
- data/test/misc/lang_test.rb +1 -1
- data/test/misc/parse_datetime_test.rb +1 -1
- data/test/misc/tableless_test.rb +1 -1
- data/test/test_helper.rb +4 -4
- metadata +5 -13
- data/lib/active_scaffold/delayed_setup.rb +0 -41
- data/lib/active_scaffold/extensions/left_outer_joins.rb +0 -43
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26ce6ce8562249c43e685b6b8bbdf14f7ecb13d245b83431145e7cae5c56ac37
|
|
4
|
+
data.tar.gz: 51e9f055da4ebda5bb2c91ece952095dcb179d263218e510abc94029bc2cc47b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4f93b85f2714ce8f6d845c704a455de9c3d0fa70aa5225d02d106cf190d75942030804cc2a1f13268e658270ca9a6b734fb2c9c2fdb550bf3ef933ae207d8c55
|
|
7
|
+
data.tar.gz: 7a6b39eaf2b2b0f83a809c5bbb98884d9e39373a69fef9a28faf29eeb29d30632cd0fc887024d95d76902a87521edb0289201bcf2014d289d4289087bd235b85
|
data/CHANGELOG.rdoc
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
= 3.7.0
|
|
2
|
+
- Drop support for rails < 5.2 and ruby < 2.5
|
|
3
|
+
- Support adding settings for chosen and tinyMCE in initializer (ActiveScaffold.js_config) or JavaScript code (ActiveScaffold.config, needed for callbacks)
|
|
4
|
+
- Support ruby 3.0 and 3.1
|
|
5
|
+
- Check action link security method in process_action_link_action with no id
|
|
6
|
+
- Add thumbnail_variant setting to ActiveStorage bridge
|
|
7
|
+
- Support Postgres citext column type
|
|
8
|
+
- Fix date picker bridge for ruby >= 2.7
|
|
9
|
+
- Fix keeping_errors for rails >= 6.1
|
|
10
|
+
- Fix usage of field_error_proc on record_select bridge for rails 7
|
|
11
|
+
- Support TinyMCE 6
|
|
12
|
+
- Add hide_form_column_if to columns
|
|
13
|
+
- Re-enable form which is sent to iframe when response is received, e.g. if form is downloading a file
|
|
14
|
+
- Use hash order for bitfields value instead of bit order, so options can be re-ordered as `2**1 => opt1, 2**0 => opt0, 2**2 => opt2`
|
|
15
|
+
- Remove delayed_setup, as it didn't work since rails 5.2
|
|
16
|
+
- Support Turbo
|
|
17
|
+
- Fix detecting when form submit to iframe has ended, for downloads too (using cookie)
|
|
18
|
+
- Fix list deleted records on nested listings using JSON column or serializer in PaperTrail versions table
|
|
19
|
+
- Support procs in description of columns, passing record, column, and scope to the proc
|
|
20
|
+
- Fix displaying errors in forms in rails 7.1
|
|
21
|
+
- Support for mongoid 7
|
|
22
|
+
- Support update_columns in field_search, so cascading behaviour is available to field search as in create or update forms
|
|
23
|
+
- Support floating footer in field_search, create and update, so footer may float to keep it visible when form is too long to fit
|
|
24
|
+
- Support hide/show link in form columns with option :collapsible
|
|
25
|
+
- Improve support for three-state boolean (nullable boolean columns), allowing to change the label for NULL
|
|
26
|
+
- Improve support for nullable boolean columns in field search, allowing to search for NULL
|
|
27
|
+
|
|
1
28
|
= 3.6.20
|
|
2
29
|
- Fix numeric search on field search for rails >= 5.0
|
|
3
30
|
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
Overview
|
|
3
3
|
========
|
|
4
|
-
[](https://travis-ci.com/activescaffold/active_scaffold)
|
|
4
|
+
[](https://app.travis-ci.com/activescaffold/active_scaffold)
|
|
5
5
|
[](https://codeclimate.com/github/activescaffold/active_scaffold)
|
|
6
6
|
[](https://codeclimate.com/github/activescaffold/active_scaffold)
|
|
7
7
|
[](https://gemnasium.com/activescaffold/active_scaffold)
|
|
@@ -9,10 +9,14 @@ Overview
|
|
|
9
9
|
[](https://inch-ci.org/github/activescaffold/active_scaffold)
|
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
|
11
11
|
|
|
12
|
-
ActiveScaffold provides a quick and powerful user interfaces for CRUD (create, read, update, delete) operations for Rails applications. It offers additonal features including searching, pagination & layout control. Rails >=
|
|
12
|
+
ActiveScaffold provides a quick and powerful user interfaces for CRUD (create, read, update, delete) operations for Rails applications. It offers additonal features including searching, pagination & layout control. Rails >= 5.2.0 is supported, ruby >= 2.5 required.
|
|
13
13
|
|
|
14
14
|
Branch Details
|
|
15
15
|
--------------
|
|
16
|
+
3-7-stable supports rails >= 5.2.x and <= 7.1.x, and ruby >= 2.5.0
|
|
17
|
+
|
|
18
|
+
These versions are not supported anymore:
|
|
19
|
+
3-6-stable supports rails >= 4.2.x and <= 6.1.x, and ruby >= 2.3.0
|
|
16
20
|
3-5-stable supports rails >= 4.0.x and <= 5.1.x, and ruby >= 2.0.0
|
|
17
21
|
3-4-stable supports rails >= 3.2.x and <= 4.2.x, and ruby >= 1.9.3
|
|
18
22
|
3-3-stable supports rails 3.2.x and ruby >= 1.8
|
|
@@ -24,30 +28,37 @@ To get started with a new Rails project
|
|
|
24
28
|
|
|
25
29
|
Added to Gemfile
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
```ruby
|
|
32
|
+
gem 'active_scaffold'
|
|
33
|
+
```
|
|
28
34
|
|
|
29
35
|
For rails >= 5.1, add jquery-rails to Gemfile, and install generator will jquery to application.js before rails-ujs. Also it's possible to load jquery in your layout before application.js using CDN (e.g. jquery-rails-cdn). You can replace rails-ujs with jquery_ujs, although rails-ujs should work (never load both).
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
```ruby
|
|
38
|
+
gem 'jquery-rails'
|
|
39
|
+
```
|
|
32
40
|
|
|
33
41
|
For rails >= 6.0, installer generator will create app/assets/javascripts/application.js, add it to assets.precompile array and add javascript_include_tag in layout, as ActiveScaffold doesn't work with webpack yet. Jquery may be loaded by packs or assets pipeline.
|
|
34
42
|
|
|
35
43
|
Run the following commands, for rails 4.2
|
|
36
44
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
45
|
+
```console
|
|
46
|
+
bundle install
|
|
47
|
+
rails g active_scaffold:install
|
|
48
|
+
bundle exec rake db:create
|
|
49
|
+
rails g active_scaffold:resource Model [attrs]
|
|
50
|
+
bundle exec rake db:migrate
|
|
51
|
+
```
|
|
52
|
+
|
|
43
53
|
Or run the following commands, for rails >= 5
|
|
44
54
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
```console
|
|
56
|
+
bundle install
|
|
57
|
+
rails g active_scaffold:install
|
|
58
|
+
rails db:create
|
|
59
|
+
rails g active_scaffold:resource Model [attrs]
|
|
60
|
+
rails db:migrate
|
|
61
|
+
```
|
|
51
62
|
|
|
52
63
|
Run the app and visit localhost:3000/<plural_model>
|
|
53
64
|
|
|
@@ -72,9 +72,26 @@ jQuery(document).ready(function($) {
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
jQuery(document).on('submit', 'form.as_form:not([data-remote])', function(event) {
|
|
75
|
-
var as_form = jQuery(this).closest("form");
|
|
75
|
+
var as_form = jQuery(this).closest("form"), form_id = as_form.attr('id'), iframe, interval, doc, cookie;
|
|
76
76
|
if (as_form.data('loading') == true) {
|
|
77
|
-
setTimeout(
|
|
77
|
+
setTimeout(function() { ActiveScaffold.disable_form(form_id); }, 10);
|
|
78
|
+
if (as_form.attr('target')) {
|
|
79
|
+
cookie = 'as_dl_' + new Date().getTime();
|
|
80
|
+
as_form.append($('<input>', {type: 'hidden', name: '_dl_cookie', value: cookie}));
|
|
81
|
+
iframe = jQuery('iframe[name="' + jQuery(this).attr('target') + '"]')[0];
|
|
82
|
+
interval = setInterval(function() {
|
|
83
|
+
doc = iframe.contentDocument || (iframe.contentWindow && iframe.contentWindow.document);
|
|
84
|
+
if (doc && doc.readyState !== 'loading' && (doc.location.href !== 'about:blank' || document.cookie.split(cookie+'=').length == 2)) {
|
|
85
|
+
ActiveScaffold.enable_form(form_id);
|
|
86
|
+
clearInterval(interval);
|
|
87
|
+
doc.location.replace('about:blank');
|
|
88
|
+
document.cookie = cookie + '=; path=/; expires=' + new Date().toUTCString();
|
|
89
|
+
} else if (!doc) {
|
|
90
|
+
clearInterval(interval);
|
|
91
|
+
document.cookie = cookie + '=; path=/; expires=' + new Date().toUTCString();
|
|
92
|
+
}
|
|
93
|
+
}, 1000);
|
|
94
|
+
}
|
|
78
95
|
}
|
|
79
96
|
return true;
|
|
80
97
|
});
|
|
@@ -358,7 +375,7 @@ jQuery(document).ready(function($) {
|
|
|
358
375
|
jQuery(this).parent().find('[type=submit]').click();
|
|
359
376
|
}));
|
|
360
377
|
|
|
361
|
-
jQuery(document).on('turbolinks:before-visit', function() {
|
|
378
|
+
jQuery(document).on('turbolinks:before-visit turbo:before-visit', function() {
|
|
362
379
|
if (history.state.active_scaffold) {
|
|
363
380
|
history.replaceState({turbolinks: true, url: document.location.href}, '', document.location.href);
|
|
364
381
|
}
|
|
@@ -377,7 +394,7 @@ jQuery(document).ready(function($) {
|
|
|
377
394
|
});
|
|
378
395
|
|
|
379
396
|
// call setup on document.ready if Turbolinks not enabled
|
|
380
|
-
if (typeof(Turbolinks) == 'undefined' || !Turbolinks.supported) {
|
|
397
|
+
if ((typeof(Turbolinks) == 'undefined' || !Turbolinks.supported) && typeof(Turbo) == 'undefined') {
|
|
381
398
|
ActiveScaffold.setup_history_state();
|
|
382
399
|
ActiveScaffold.setup(document);
|
|
383
400
|
}
|
|
@@ -385,6 +402,9 @@ jQuery(document).ready(function($) {
|
|
|
385
402
|
jQuery(document).on('as:element_updated as:element_created', function(e, action_link) {
|
|
386
403
|
ActiveScaffold.setup(e.target);
|
|
387
404
|
});
|
|
405
|
+
jQuery(document).on('as:element_removed', function(e, action_link) {
|
|
406
|
+
setTimeout(ActiveScaffold.update_floating_form_footer); // delay so form is already removed
|
|
407
|
+
});
|
|
388
408
|
jQuery(document).on('as:action_success', 'a.as_action', function(e, action_link) {
|
|
389
409
|
ActiveScaffold.setup(action_link.adapter);
|
|
390
410
|
});
|
|
@@ -395,7 +415,7 @@ jQuery(document).ready(function($) {
|
|
|
395
415
|
});
|
|
396
416
|
});
|
|
397
417
|
|
|
398
|
-
jQuery(document).on('turbolinks:load', function($) {
|
|
418
|
+
jQuery(document).on('turbolinks:load turbo:load', function($) {
|
|
399
419
|
ActiveScaffold.setup(document);
|
|
400
420
|
});
|
|
401
421
|
|
|
@@ -477,6 +497,7 @@ var ActiveScaffold = {
|
|
|
477
497
|
ActiveScaffold.draggable_lists('.draggable-lists', container);
|
|
478
498
|
ActiveScaffold.sliders(container);
|
|
479
499
|
ActiveScaffold.disable_optional_subforms(container);
|
|
500
|
+
ActiveScaffold.update_floating_form_footer(); // check other forms too, state may change
|
|
480
501
|
},
|
|
481
502
|
setup_history_state: function() {
|
|
482
503
|
if (!jQuery('.active-scaffold').length) return;
|
|
@@ -1134,15 +1155,26 @@ var ActiveScaffold = {
|
|
|
1134
1155
|
window.onbeforeunload = function() {
|
|
1135
1156
|
if (jQuery('form.need-confirm').length) return unload_message;
|
|
1136
1157
|
};
|
|
1137
|
-
jQuery(document).on('turbolinks:before-visit', function(e) {
|
|
1158
|
+
jQuery(document).on('turbolinks:before-visit turbolinks:before-visit', function(e) {
|
|
1138
1159
|
if (jQuery('form.need-confirm').length) {
|
|
1139
1160
|
if (!window.confirm(unload_message)) e.preventDefault();
|
|
1140
1161
|
}
|
|
1141
1162
|
});
|
|
1163
|
+
},
|
|
1164
|
+
|
|
1165
|
+
update_floating_form_footer: function() {
|
|
1166
|
+
jQuery('.active-scaffold form.floating-footer .form-footer').each(function () {
|
|
1167
|
+
var $footer = jQuery(this), $form = $footer.closest('form.floating-footer');
|
|
1168
|
+
$footer.removeClass('floating');
|
|
1169
|
+
if ($form.visible(true) && !$footer.visible(true)) $footer.addClass('floating');
|
|
1170
|
+
});
|
|
1142
1171
|
}
|
|
1172
|
+
|
|
1143
1173
|
}
|
|
1144
1174
|
|
|
1145
1175
|
|
|
1176
|
+
jQuery(window).on('scroll resize', ActiveScaffold.update_floating_form_footer);
|
|
1177
|
+
|
|
1146
1178
|
/*
|
|
1147
1179
|
* URL modification support. Incomplete functionality.
|
|
1148
1180
|
*/
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
jQuery(document).ready(function() {
|
|
2
|
+
var chosen_options = ActiveScaffold.config.chosen_options || {};
|
|
2
3
|
jQuery(document).on('as:element_updated as:element_created', function(event) {
|
|
3
|
-
jQuery('select.chosen', event.target).chosen();
|
|
4
|
+
jQuery('select.chosen', event.target).chosen(chosen_options);
|
|
4
5
|
});
|
|
5
6
|
jQuery(document).on('as:action_success', 'a.as_action', function(event, action_link) {
|
|
6
7
|
if (action_link.adapter) {
|
|
7
|
-
jQuery('select.chosen', action_link.adapter).chosen();
|
|
8
|
+
jQuery('select.chosen', action_link.adapter).chosen(chosen_options);
|
|
8
9
|
}
|
|
9
10
|
});
|
|
10
|
-
jQuery('select.chosen').chosen();
|
|
11
|
-
jQuery(document).on('turbolinks:load', function($) {
|
|
12
|
-
|
|
11
|
+
jQuery('select.chosen').chosen(chosen_options);
|
|
12
|
+
jQuery(document).on('turbolinks:load turbo:load', function($) {
|
|
13
|
+
jQuery('select.chosen').chosen(chosen_options);
|
|
13
14
|
});
|
|
14
15
|
});
|
|
@@ -8,9 +8,23 @@
|
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
function loadTinyMCE() {
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
var global_settings = ActiveScaffold.config.tiny_mce_settings || {};
|
|
12
|
+
var local_settings = jQuery(this).data('tinymce');
|
|
13
|
+
var settings = {};
|
|
14
|
+
for (key in global_settings) {
|
|
15
|
+
settings[key] = global_settings[key];
|
|
16
|
+
}
|
|
17
|
+
for (key in local_settings) {
|
|
18
|
+
settings[key] = local_settings[key];
|
|
19
|
+
}
|
|
20
|
+
var id = jQuery(this).attr('id');
|
|
21
|
+
if (tinymce && tinymce.majorVersion >= 6) {
|
|
22
|
+
settings.selector = '#' + id;
|
|
23
|
+
tinymce.init(settings);
|
|
24
|
+
} else { // tinyMCE.majorVersion < 6
|
|
25
|
+
tinyMCE.settings = settings;
|
|
26
|
+
tinyMCE.execCommand('mceAddEditor', false, id);
|
|
27
|
+
}
|
|
14
28
|
}
|
|
15
29
|
|
|
16
30
|
jQuery(document).on('submit', 'form.as_form', function() {
|
|
@@ -28,4 +42,4 @@
|
|
|
28
42
|
jQuery(action_link.adapter).find('textarea.mceEditor').each(loadTinyMCE);
|
|
29
43
|
}
|
|
30
44
|
});
|
|
31
|
-
})();
|
|
45
|
+
})();
|
|
@@ -672,6 +672,17 @@ clear: both;
|
|
|
672
672
|
.active-scaffold p.form-footer {
|
|
673
673
|
clear: both;
|
|
674
674
|
}
|
|
675
|
+
.active-scaffold .form-footer.floating {
|
|
676
|
+
position: fixed;
|
|
677
|
+
bottom: 10px;
|
|
678
|
+
z-index: 10;
|
|
679
|
+
top: auto;
|
|
680
|
+
left: auto;
|
|
681
|
+
border: none;
|
|
682
|
+
padding: 10px;
|
|
683
|
+
background: white;
|
|
684
|
+
}
|
|
685
|
+
|
|
675
686
|
|
|
676
687
|
.active-scaffold a.as_cancel,
|
|
677
688
|
.active-scaffold p.form-footer a {
|
|
@@ -694,7 +705,7 @@ letter-spacing: 0;
|
|
|
694
705
|
clear: both;
|
|
695
706
|
}
|
|
696
707
|
|
|
697
|
-
.active-scaffold label {
|
|
708
|
+
.active-scaffold label, .active-scaffold label + a.visibility-toggle {
|
|
698
709
|
font-weight: normal;
|
|
699
710
|
font-size: 11px;
|
|
700
711
|
}
|
|
@@ -7,11 +7,15 @@
|
|
|
7
7
|
multipart ||= action_config.multipart? unless local_assigns.has_key? :multipart
|
|
8
8
|
columns ||= action_config.columns unless local_assigns.has_key? :columns
|
|
9
9
|
persistent ||= action_config.persistent unless local_assigns.has_key? :persistent
|
|
10
|
+
unless local_assigns.has_key? :floating_footer
|
|
11
|
+
floating_footer ||= action_config.floating_footer if action_config.respond_to? :floating_footer
|
|
12
|
+
end
|
|
10
13
|
else
|
|
11
14
|
multipart ||= false
|
|
12
15
|
columns ||= nil
|
|
13
16
|
persistent ||= false
|
|
14
17
|
end
|
|
18
|
+
floating_footer ||= false
|
|
15
19
|
method ||= :post
|
|
16
20
|
cancel_link = true if cancel_link.nil?
|
|
17
21
|
submit_text ||= form_action
|
|
@@ -26,7 +30,7 @@ options = {:id => form_id,
|
|
|
26
30
|
:method => method,
|
|
27
31
|
'data-loading' => defined?(loading) ? loading : true}
|
|
28
32
|
cancel_options = {:class => 'as_cancel'}
|
|
29
|
-
|
|
33
|
+
options[:class] << ' floating-footer' if floating_footer
|
|
30
34
|
cancel_options[:remote] = true if xhr #cancel link does nt have to care about multipart forms
|
|
31
35
|
if xhr && multipart # file_uploads
|
|
32
36
|
form_remote_upload_tag url_options.merge({:iframe => true}), options
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
data: {loading: true},
|
|
10
10
|
method: :get
|
|
11
11
|
}
|
|
12
|
+
options[:class] << ' floating-footer' if active_scaffold_config.field_search.floating_footer
|
|
12
13
|
|
|
13
14
|
hidden_params = url_options.except(:controller, :action, :id, :search).to_query.split(Rack::Utils::DEFAULT_SEP)
|
|
14
15
|
-%>
|
|
@@ -8,23 +8,31 @@
|
|
|
8
8
|
@rendered ||= Set.new
|
|
9
9
|
return if @rendered.include? column.name
|
|
10
10
|
@rendered << column.name
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
options = {:is_subform => true, :field_class => "#{column.name}-sub-form"}
|
|
11
|
+
if @form_action == :field_search
|
|
12
|
+
form_ui = column.search_ui
|
|
14
13
|
else
|
|
15
|
-
|
|
14
|
+
renders_as = column_renders_as(column)
|
|
15
|
+
form_ui = column.form_ui
|
|
16
16
|
end
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
crud_type = @record.new_record? ? :create : (readonly ? :read : :update)
|
|
20
|
-
# subform.columns.to_a.include? so it doesn't check inside subgroups
|
|
21
|
-
active_scaffold_render_subform_column(column, scope, crud_type, readonly, !active_scaffold_config.subform.columns.to_a.include?(column.name), @record)
|
|
17
|
+
if renders_as == :subform
|
|
18
|
+
options = {is_subform: true, field_class: "#{column.name}-sub-form"}
|
|
22
19
|
else
|
|
23
|
-
|
|
20
|
+
options = {is_subform: false, field_class: "#{column.name}-input", hidden: form_ui == :hidden}
|
|
24
21
|
end
|
|
22
|
+
html =
|
|
23
|
+
if scope
|
|
24
|
+
readonly = @record.readonly? || !@record.authorized_for?(:crud_type => :update)
|
|
25
|
+
crud_type = @record.new_record? ? :create : (readonly ? :read : :update)
|
|
26
|
+
# subform.columns.to_a.include? so it doesn't check inside subgroups
|
|
27
|
+
active_scaffold_render_subform_column(column, scope, crud_type, readonly, !active_scaffold_config.subform.columns.to_a.include?(column.name), @record)
|
|
28
|
+
elsif @form_action == :field_search
|
|
29
|
+
search_attribute(column, @record)
|
|
30
|
+
else
|
|
31
|
+
render_column(column, @record, renders_as, scope)
|
|
32
|
+
end
|
|
25
33
|
-%>
|
|
26
34
|
|
|
27
35
|
ActiveScaffold.render_form_field('<%= source_id %>','<%= escape_javascript(html) %>', <%= options.to_json.html_safe %>);
|
|
28
36
|
<%if column.update_columns && !column.update_columns.empty?%>
|
|
29
|
-
<%= render(:
|
|
37
|
+
<%= render(partial: "render_field", collection: column.update_columns, locals: {source_id: source_id, scope: scope})%>
|
|
30
38
|
<%end%>
|
data/config/locales/ja.yml
CHANGED
|
@@ -11,20 +11,20 @@ ja:
|
|
|
11
11
|
add: 追加
|
|
12
12
|
add_existing: 既存のものを追加
|
|
13
13
|
add_existing_model: 既存の%{model}を追加
|
|
14
|
-
apply:
|
|
15
|
-
are_you_sure_to_delete:
|
|
16
|
-
average:
|
|
17
|
-
begins_with:
|
|
18
|
-
between:
|
|
14
|
+
apply: 適用
|
|
15
|
+
are_you_sure_to_delete: "%{label}を消去してもよろしいですか?"
|
|
16
|
+
average: 平均
|
|
17
|
+
begins_with: 開始時間
|
|
18
|
+
between: 範囲指定
|
|
19
19
|
cancel: キャンセル
|
|
20
|
-
cant_destroy_record: "%{record}
|
|
21
|
-
changes:
|
|
20
|
+
cant_destroy_record: "%{record}を削除できません"
|
|
21
|
+
changes: 差分
|
|
22
22
|
click_to_edit: クリックして編集
|
|
23
|
-
click_to_reset:
|
|
23
|
+
click_to_reset: クリックしてリセット
|
|
24
24
|
close: 閉じる
|
|
25
25
|
config_list: Configure
|
|
26
26
|
config_list_model: Configure Columns for %{model}
|
|
27
|
-
contains:
|
|
27
|
+
contains: 部分一致検索
|
|
28
28
|
create: 作成
|
|
29
29
|
create_another: Create Another %{model}
|
|
30
30
|
create_apply:
|
|
@@ -36,36 +36,36 @@ ja:
|
|
|
36
36
|
firstDay: 0
|
|
37
37
|
isRTL: false
|
|
38
38
|
showMonthAfterYear: false
|
|
39
|
-
weekHeader:
|
|
39
|
+
weekHeader: 週
|
|
40
40
|
datetime_picker_options:
|
|
41
|
-
closeText:
|
|
42
|
-
currentText:
|
|
43
|
-
timeText:
|
|
44
|
-
timezoneText:
|
|
45
|
-
days:
|
|
41
|
+
closeText: 閉じる
|
|
42
|
+
currentText: 現在時刻
|
|
43
|
+
timeText: 時間
|
|
44
|
+
timezoneText: 時間帯
|
|
45
|
+
days: 日分
|
|
46
46
|
delete: 削除
|
|
47
47
|
deleted_model: "%{model}を削除しました"
|
|
48
48
|
deleted_records:
|
|
49
|
-
delimiter:
|
|
49
|
+
delimiter: 区切り文字
|
|
50
50
|
download: ダウンロード
|
|
51
51
|
edit: 編集
|
|
52
|
-
ends_with:
|
|
53
|
-
error_500: "(コード500
|
|
52
|
+
ends_with: 終了時間
|
|
53
|
+
error_500: "(コード500:内部エラー)"
|
|
54
54
|
errors:
|
|
55
55
|
template:
|
|
56
|
-
body: '
|
|
56
|
+
body: '次のフィールドに問題がありました:'
|
|
57
57
|
header:
|
|
58
|
-
one: 1
|
|
59
|
-
other: "%{count}
|
|
60
|
-
export:
|
|
58
|
+
one: 1件のエラーにより、この%{model}が保存できませんでした
|
|
59
|
+
other: "%{count}件のエラーにより、この%{model}が保存できませんでした"
|
|
60
|
+
export: エクスポート
|
|
61
61
|
'false': 'False'
|
|
62
62
|
filtered: "(フィルタ中)"
|
|
63
63
|
found: 個ありました
|
|
64
|
-
future:
|
|
64
|
+
future: 未来
|
|
65
65
|
group_by:
|
|
66
66
|
grouped_by:
|
|
67
|
-
hide: "
|
|
68
|
-
hours:
|
|
67
|
+
hide: "(隠す)"
|
|
68
|
+
hours: 時間分
|
|
69
69
|
human_conditions:
|
|
70
70
|
association: "%{column} = %{value}"
|
|
71
71
|
boolean: "%{column} = %{value}"
|
|
@@ -73,17 +73,17 @@ ja:
|
|
|
73
73
|
internal_error: リクエストが失敗しました
|
|
74
74
|
live_search: その場で検索
|
|
75
75
|
loading: 読み込み中…
|
|
76
|
-
mark_all_records:
|
|
77
|
-
maximum:
|
|
78
|
-
minimum:
|
|
79
|
-
minutes:
|
|
80
|
-
months:
|
|
76
|
+
mark_all_records: すべて選択
|
|
77
|
+
maximum: 最大値
|
|
78
|
+
minimum: 最小値
|
|
79
|
+
minutes: 分間
|
|
80
|
+
months: か月分
|
|
81
81
|
nested_for_model: "%{parent_model}の%{nested_model}"
|
|
82
82
|
nested_of_model: "%{nested_model} of %{parent_model}"
|
|
83
83
|
next: 次
|
|
84
|
-
next_month:
|
|
85
|
-
next_week:
|
|
86
|
-
next_year:
|
|
84
|
+
next_month: 来月
|
|
85
|
+
next_week: 来週
|
|
86
|
+
next_year: 来年
|
|
87
87
|
no_authorization_for_action: No Authorization for action %{action}
|
|
88
88
|
no_color:
|
|
89
89
|
no_entries: 見つかりませんでした
|
|
@@ -94,19 +94,19 @@ ja:
|
|
|
94
94
|
omit_header: Omit Header
|
|
95
95
|
optional_attributes: Further Options
|
|
96
96
|
options: オプション
|
|
97
|
-
past:
|
|
97
|
+
past: 過去
|
|
98
98
|
pdf: PDF
|
|
99
|
-
prev_month:
|
|
100
|
-
prev_week:
|
|
101
|
-
prev_year:
|
|
99
|
+
prev_month: 先月
|
|
100
|
+
prev_week: 先週
|
|
101
|
+
prev_year: 去年
|
|
102
102
|
previous: 前
|
|
103
103
|
print: 印刷
|
|
104
|
-
range:
|
|
105
|
-
record_not_saved:
|
|
104
|
+
range: 範囲検索
|
|
105
|
+
record_not_saved: 不明なエラーによって保存できませんでした
|
|
106
106
|
records_marked:
|
|
107
|
-
one:
|
|
108
|
-
other: "%{
|
|
109
|
-
refresh:
|
|
107
|
+
one: "%{model}を1件選択"
|
|
108
|
+
other: "%{model}を%{count}件選択"
|
|
109
|
+
refresh: 更新
|
|
110
110
|
remove: 削除
|
|
111
111
|
remove_file: ファイルを削除または置換
|
|
112
112
|
remove_files: ファイルを削除または追加する
|
|
@@ -117,32 +117,32 @@ ja:
|
|
|
117
117
|
saving: 保存中…
|
|
118
118
|
search: 検索
|
|
119
119
|
search_terms: 検索単語
|
|
120
|
-
seconds:
|
|
120
|
+
seconds: 秒分
|
|
121
121
|
show: 表示
|
|
122
|
-
show_block: "
|
|
122
|
+
show_block: "(表示)"
|
|
123
123
|
show_model: "%{model}を表示"
|
|
124
|
-
sum:
|
|
125
|
-
this_month:
|
|
126
|
-
this_week:
|
|
127
|
-
this_year:
|
|
128
|
-
today:
|
|
129
|
-
tomorrow:
|
|
124
|
+
sum: 合計値
|
|
125
|
+
this_month: 今月
|
|
126
|
+
this_week: 今週
|
|
127
|
+
this_year: 今年
|
|
128
|
+
today: 今日
|
|
129
|
+
tomorrow: 明日
|
|
130
130
|
'true': 'True'
|
|
131
131
|
update: 更新
|
|
132
132
|
update_apply:
|
|
133
133
|
update_model: "%{model}を更新"
|
|
134
134
|
updated_model: "%{model}を更新しました"
|
|
135
135
|
version_inconsistency: バージョンが一致しません - あなたが編集している間にこのレコードが変更されました。
|
|
136
|
-
weeks:
|
|
137
|
-
years:
|
|
138
|
-
yesterday:
|
|
136
|
+
weeks: 週間分
|
|
137
|
+
years: 年分
|
|
138
|
+
yesterday: 昨日
|
|
139
139
|
date:
|
|
140
140
|
formats:
|
|
141
|
-
month:
|
|
142
|
-
quarter:
|
|
143
|
-
week:
|
|
144
|
-
year_month:
|
|
145
|
-
year_quarter:
|
|
141
|
+
month: "%m月"
|
|
142
|
+
quarter: 第%{quarter}四半期
|
|
143
|
+
week: 週
|
|
144
|
+
year_month: "%Y年%m月"
|
|
145
|
+
year_quarter: "%{year}年第%{quarter}四半期"
|
|
146
146
|
time:
|
|
147
147
|
formats:
|
|
148
|
-
picker: "%a
|
|
148
|
+
picker: "%Y年%m月%d日(%a) %H:%M:%S"
|
|
@@ -31,11 +31,11 @@ module ActiveScaffold::Actions
|
|
|
31
31
|
params_hash params[:search]
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
def set_outer_joins_for_search(columns)
|
|
34
|
+
def set_outer_joins_for_search(columns) # rubocop:disable Naming/AccessorMethodName
|
|
35
35
|
references = []
|
|
36
36
|
outer_joins = []
|
|
37
37
|
columns.each do |column|
|
|
38
|
-
next
|
|
38
|
+
next if column.search_joins.blank?
|
|
39
39
|
if column.includes.present? && list_columns.include?(column)
|
|
40
40
|
references << (column.search_joins & column.includes)
|
|
41
41
|
outer_joins << (column.search_joins - column.includes)
|