active_scaffold 3.5.3 → 3.6.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{CHANGELOG → CHANGELOG.rdoc} +73 -0
- data/README.md +17 -7
- data/app/assets/javascripts/active_scaffold.js.erb +0 -1
- data/app/assets/javascripts/jquery/active_scaffold.js +97 -6
- data/app/assets/stylesheets/active_scaffold_colors.scss +1 -1
- data/app/assets/stylesheets/active_scaffold_layout.css +52 -29
- data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_form_association.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +3 -2
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +9 -7
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_list_header.html.erb +5 -7
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_list_record.html.erb +4 -5
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -0
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +4 -0
- data/app/views/active_scaffold_overrides/_render_field.js.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_association_horizontal.html.erb +2 -1
- data/app/views/active_scaffold_overrides/_show_columns.html.erb +2 -2
- data/app/views/active_scaffold_overrides/_show_horizontal_record.html.erb +4 -4
- data/app/views/active_scaffold_overrides/_update_calculations.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_column.js.erb +2 -2
- data/app/views/active_scaffold_overrides/_vertical_subform.html.erb +2 -2
- data/app/views/active_scaffold_overrides/action_confirmation.html.erb +2 -2
- data/app/views/active_scaffold_overrides/delete.html.erb +2 -2
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +16 -6
- data/app/views/active_scaffold_overrides/on_update.js.erb +1 -1
- data/app/views/active_scaffold_overrides/row.js.erb +1 -1
- data/app/views/active_scaffold_overrides/update_column.js.erb +2 -2
- data/config/locales/de.yml +2 -1
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/fr.yml +2 -1
- data/config/locales/hu.yml +1 -0
- data/config/locales/ja.yml +1 -0
- data/config/locales/ru.yml +1 -0
- data/lib/active_scaffold.rb +19 -16
- data/lib/active_scaffold/actions/common_search.rb +11 -8
- data/lib/active_scaffold/actions/core.rb +91 -70
- data/lib/active_scaffold/actions/create.rb +28 -28
- data/lib/active_scaffold/actions/delete.rb +3 -3
- data/lib/active_scaffold/actions/field_search.rb +53 -43
- data/lib/active_scaffold/actions/list.rb +111 -27
- data/lib/active_scaffold/actions/nested.rb +65 -48
- data/lib/active_scaffold/actions/search.rb +1 -1
- data/lib/active_scaffold/actions/show.rb +4 -4
- data/lib/active_scaffold/actions/subform.rb +23 -22
- data/lib/active_scaffold/actions/update.rb +96 -77
- data/lib/active_scaffold/active_record_permissions.rb +2 -11
- data/lib/active_scaffold/attribute_params.rb +102 -94
- data/lib/active_scaffold/bridges.rb +8 -8
- data/lib/active_scaffold/bridges/active_storage.rb +6 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_bridge.rb +34 -0
- data/lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb +54 -0
- data/lib/active_scaffold/bridges/active_storage/form_ui.rb +22 -0
- data/lib/active_scaffold/bridges/active_storage/list_ui.rb +36 -0
- data/lib/active_scaffold/bridges/bitfields.rb +1 -0
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +12 -15
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +9 -12
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +2 -2
- data/lib/active_scaffold/bridges/chosen/helpers.rb +11 -9
- data/lib/active_scaffold/bridges/date_picker/ext.rb +0 -13
- data/lib/active_scaffold/bridges/date_picker/helper.rb +49 -44
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +3 -3
- data/lib/active_scaffold/bridges/file_column/test/functional/file_column_keep_test.rb +10 -7
- data/lib/active_scaffold/bridges/paper_trail.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +3 -1
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge_helpers.rb +2 -2
- data/lib/active_scaffold/bridges/record_select/helpers.rb +15 -17
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -19
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +3 -1
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +21 -4
- data/lib/active_scaffold/config/base.rb +133 -41
- data/lib/active_scaffold/config/core.rb +146 -18
- data/lib/active_scaffold/config/delete.rb +14 -1
- data/lib/active_scaffold/config/field_search.rb +7 -1
- data/lib/active_scaffold/config/form.rb +10 -1
- data/lib/active_scaffold/config/list.rb +39 -13
- data/lib/active_scaffold/config/mark.rb +4 -2
- data/lib/active_scaffold/config/nested.rb +16 -17
- data/lib/active_scaffold/config/search.rb +9 -0
- data/lib/active_scaffold/config/show.rb +4 -0
- data/lib/active_scaffold/config/update.rb +4 -0
- data/lib/active_scaffold/configurable.rb +14 -7
- data/lib/active_scaffold/constraints.rb +22 -20
- data/lib/active_scaffold/core.rb +67 -28
- data/lib/active_scaffold/data_structures/action_columns.rb +50 -59
- data/lib/active_scaffold/data_structures/action_link.rb +50 -20
- data/lib/active_scaffold/data_structures/action_links.rb +15 -13
- data/lib/active_scaffold/data_structures/association/abstract.rb +38 -15
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +2 -6
- data/lib/active_scaffold/data_structures/association/active_record.rb +6 -2
- data/lib/active_scaffold/data_structures/association/mongoid.rb +0 -3
- data/lib/active_scaffold/data_structures/column.rb +75 -66
- data/lib/active_scaffold/data_structures/columns.rb +3 -2
- data/lib/active_scaffold/data_structures/nested_info.rb +33 -19
- data/lib/active_scaffold/data_structures/set.rb +8 -0
- data/lib/active_scaffold/data_structures/sorting.rb +10 -2
- data/lib/active_scaffold/delayed_setup.rb +16 -5
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +3 -2
- data/lib/active_scaffold/extensions/action_view_rendering.rb +34 -14
- data/lib/active_scaffold/extensions/cow_proxy.rb +95 -0
- data/lib/active_scaffold/extensions/ice_nine.rb +36 -0
- data/lib/active_scaffold/extensions/left_outer_joins.rb +8 -33
- data/lib/active_scaffold/extensions/localize.rb +3 -1
- data/lib/active_scaffold/extensions/routing_mapper.rb +6 -45
- data/lib/active_scaffold/extensions/to_label.rb +3 -2
- data/lib/active_scaffold/extensions/unsaved_record.rb +2 -4
- data/lib/active_scaffold/finder.rb +110 -77
- data/lib/active_scaffold/helpers/action_link_helpers.rb +62 -36
- data/lib/active_scaffold/helpers/association_helpers.rb +21 -19
- data/lib/active_scaffold/helpers/controller_helpers.rb +34 -10
- data/lib/active_scaffold/helpers/form_column_helpers.rb +196 -124
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/id_helpers.rb +6 -2
- data/lib/active_scaffold/helpers/list_column_helpers.rb +86 -57
- data/lib/active_scaffold/helpers/pagination_helpers.rb +2 -2
- data/lib/active_scaffold/helpers/search_column_helpers.rb +29 -34
- data/lib/active_scaffold/helpers/show_column_helpers.rb +3 -5
- data/lib/active_scaffold/helpers/view_helpers.rb +38 -35
- data/lib/active_scaffold/marked_model.rb +2 -2
- data/lib/active_scaffold/orm_checks.rb +3 -7
- data/lib/active_scaffold/paginator.rb +7 -7
- data/lib/active_scaffold/registry.rb +33 -0
- data/lib/active_scaffold/responds_to_parent.rb +8 -11
- data/lib/active_scaffold/tableless.rb +67 -65
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/generators/active_scaffold/controller_generator.rb +2 -2
- data/lib/generators/active_scaffold/install_generator.rb +1 -1
- data/lib/generators/active_scaffold/resource_generator.rb +2 -2
- data/shoulda_macros/macros.rb +3 -1
- data/test/bridges/date_picker_test.rb +1 -2
- data/test/bridges/paperclip_test.rb +6 -6
- data/test/class_with_finder.rb +2 -2
- data/test/company.rb +4 -4
- data/test/config/create_test.rb +4 -2
- data/test/config/nested_test.rb +1 -1
- data/test/config/show_test.rb +1 -1
- data/test/config/update_test.rb +7 -6
- data/test/data_structures/action_columns_test.rb +2 -2
- data/test/data_structures/action_links_test.rb +1 -1
- data/test/data_structures/column_test.rb +3 -6
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/sorting_test.rb +7 -0
- data/test/extensions/active_record_test.rb +4 -4
- data/test/extensions/routing_mapper_test.rb +2 -2
- data/test/helpers/list_column_helpers_test.rb +3 -1
- data/test/misc/active_record_permissions_test.rb +3 -11
- data/test/misc/attribute_params_test.rb +12 -8
- data/test/misc/calculation_test.rb +1 -1
- data/test/misc/configurable_test.rb +10 -10
- data/test/misc/constraints_test.rb +2 -2
- data/test/misc/convert_numbers_format_test.rb +7 -3
- data/test/misc/lang_test.rb +1 -1
- data/test/misc/parse_datetime_test.rb +3 -4
- data/test/misc/tableless_test.rb +6 -0
- data/test/mock_app/Rakefile +1 -1
- data/test/mock_app/app/assets/config/manifest.js +0 -0
- data/test/mock_app/app/controllers/cars_controller.rb +1 -0
- data/test/mock_app/app/controllers/people_controller.rb +3 -1
- data/test/mock_app/config/application.rb +2 -1
- data/test/mock_app/config/boot.rb +1 -1
- data/test/mock_app/config/environment.rb +2 -2
- data/test/mock_app/config/routes.rb +4 -1
- data/test/mock_app/db/schema.rb +2 -0
- data/test/performance/list_cars_performance_test.rb +34 -0
- data/test/performance/list_people_performance_test.rb +31 -0
- data/test/performance_test_help.rb +3 -0
- data/test/test_helper.rb +10 -2
- metadata +55 -20
- data/app/assets/javascripts/prototype/rico_corner.js +0 -370
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 482104397cc4bcba59938371add5a7d584a23c3f42aa4b8f3f4ba44f0ffa6114
|
4
|
+
data.tar.gz: a140af6343b7a3002740fa8a5af20ddd5da09a0c7a3f384ef31c85a697918cb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89556a2bbb6664fb22291e21bba6108d21c0195788cf5e3fdb6b5d471aab24e7bdef1d40d764f68bb9ecb6e94dfc5c728ac4742b3034a7e74d7e11688933d835
|
7
|
+
data.tar.gz: 2606b28e771d97eb6600fb380c34cace3adfbce11cc7baa470de3821dd2bd82e3acec4e66b1bcef14ff7fa17755e2255d7b977a43e85aea893d70d83c2d0f133
|
@@ -1,3 +1,75 @@
|
|
1
|
+
= 3.6.0.rc2
|
2
|
+
- Fix subform crud in subform subgroup when controller is embedded
|
3
|
+
- Fix sorting for mongoid models, broken in 3.6.0.rc1
|
4
|
+
- Improve add_new option, allow to change subform columns (with helper override calling super and add columns to locals argument)
|
5
|
+
- Support add_new option for record_select or radio form_ui
|
6
|
+
- Support add_new option for polymorphic associations (add_new may be array with class names to allow add new, or true to allow add new for any model)
|
7
|
+
- Support description for columns displayed as subform
|
8
|
+
- Don't mess with history if current page is not using activescaffold when is loaded
|
9
|
+
- Fix changing sort_by per request when threadsafe is enabled
|
10
|
+
|
11
|
+
= 3.6.0.rc1
|
12
|
+
- Cleanup: deprecate ActiveScaffold.set_defaults for ActiveScaffold.defaults, rename some setters
|
13
|
+
- Fix adding new action links on request with threadsafety enabled
|
14
|
+
- Fix iterating in config.columns with threadsafety enabled
|
15
|
+
- Fix changing pagination enabled/disabled with threadsafety enabled
|
16
|
+
- Allow create action in has_many through singular association
|
17
|
+
- Display no options in radio form_ui when no option is available, so column can be refreshed with update_columns
|
18
|
+
- Add as_main_div_data to override data attributes on main div
|
19
|
+
- Add loading indicator to embedded scaffolds, display error if fails
|
20
|
+
- Fix race condition in threadsafe mode with delayed setup
|
21
|
+
- Add ActiveScaffold::Config::Core.after_config_callbacks, so custom methods or procs can be added to be called after active_scaffold config block (used by bitfields bridge)
|
22
|
+
- Display loading indicator at bottom on auto pagination
|
23
|
+
- List rendering speed up
|
24
|
+
- Remove font family from CSS, it was preventing from changing it easily in body
|
25
|
+
- Fix search for mongoid models in with threadsafety enabled
|
26
|
+
- Keep nested params after calling render_field for column in subform
|
27
|
+
- Fix nested for controllers without list action (for example, for nested create on singular assocations)
|
28
|
+
- Fix delayed setup issues with threads
|
29
|
+
- Fix render_field under nested list for polymorphic association
|
30
|
+
- Add foreign_type column to constrained columns in nested list for polymorphic association
|
31
|
+
- Add return_to to action links on nested list for singular associations, so forms would return to list
|
32
|
+
- Case insensitive search with PostGIS adapter
|
33
|
+
- Use clear_storage with around_action and ensure, so empty hash is removed from session storage when exception is raised too
|
34
|
+
- Delete search from session when search is reset
|
35
|
+
- Add cache_column_counts method to get counts with one query for associations which are not preloaded, query per column is overridable with count_query_for_column
|
36
|
+
- ActiveStorage support with bridge
|
37
|
+
- Add list_row_attributes helper so more HTML attributes can be added to tr.record in list, overriding the helper
|
38
|
+
- Support column!=value param for not equal condition (column!= means column is not null)
|
39
|
+
- Don't force to use join for column's includes when sorting by method
|
40
|
+
- Add support for range conditions in url params for numeric (integer, decimal, float, bigint) columns too
|
41
|
+
- Support include_blank option in :radio form_ui
|
42
|
+
- Add add_new option for :select form_ui in singular associations, in column.options, it adds link to toggle between select and subform
|
43
|
+
- Fix subform crud in subform subgroup, when form is on nested scaffold, when record on first subform is persisted
|
44
|
+
- Add association_join_text setting to column, so it can be changed for one column only
|
45
|
+
- Use Arel.sql with sorting.clause before passing to reorder method
|
46
|
+
|
47
|
+
= 3.6.0.pre
|
48
|
+
- Added threadsafety as tech preview, enabled with ActiveScaffold.threadsafe! in initializer.
|
49
|
+
- Added active_scaffold_config.build_action_columns method to easily create action columns for custom form actions.
|
50
|
+
- Replaced each(options) with each_column(options) in ActionColumns
|
51
|
+
- Replaced collect_visible(options, &proc) with visible_columns(options).map(&proc) in ActionColumns
|
52
|
+
- Replaced names with visible_columns_names in ActionColumns
|
53
|
+
- Replaced names_without_auth_check with to_a in ActionColumns
|
54
|
+
- Support rails 5.2, drop support for 4.0 and 4.1
|
55
|
+
- Require ruby 2.3.1, drop support for 2.0, 2.1 and 2.2.
|
56
|
+
- Fix has_one/belongs_to nested for polymorphic associations, leave rails to build conditions from {assoc_name: record} hash
|
57
|
+
- Cast blank into nil for null string columns in conditions_from_params
|
58
|
+
- Support multipart with iframe in process_action_link_action default response
|
59
|
+
- Fix hidding and showing columns based on permissions with update_columns on subforms
|
60
|
+
- Fix subform crud in subform subgroup, when form is on nested scaffold
|
61
|
+
- Fix JS when rails-ujs is used instead of jquery_ujs (rails >= 5.1)
|
62
|
+
- Display flash messages only inside create form, when conf.list.always_show_create is enabled, instead of displaying twice (in form and above list).
|
63
|
+
- Fix default autocomplete value for password form_ui, new-password has to be used because off is ignored by browsers in password fields now
|
64
|
+
|
65
|
+
= 3.5.5
|
66
|
+
- Fix creating new records, when using cancan and allowing access based on id (fixes #617)
|
67
|
+
|
68
|
+
= 3.5.4
|
69
|
+
- Fix chosen form_ui for plural associations
|
70
|
+
- Eager load with includes in association options query, if includes has a hash with own association key, see #612
|
71
|
+
|
72
|
+
= 3.5.3
|
1
73
|
- Fix :text fields for rails >= 5.1
|
2
74
|
- Send empty array in collection associations with select form_ui (checkbox or draggable list) when no option is available
|
3
75
|
|
@@ -49,6 +121,7 @@
|
|
49
121
|
- fix display of association in list when association_limit is nil
|
50
122
|
- fix conversion of i18n date and datetime value, some abbr day and month may be equal in some languages
|
51
123
|
- fix hidden form_ui for collection associations (has_many, habtm)
|
124
|
+
- Drop rails 3.2.x and ruby 1.9 support
|
52
125
|
|
53
126
|
= 3.4.43
|
54
127
|
- Fix human conditions for date and datetime columns, not using date picker
|
data/README.md
CHANGED
@@ -8,10 +8,11 @@ Overview
|
|
8
8
|
[![Inline docs](https://inch-ci.org/github/activescaffold/active_scaffold.svg?branch=master)](https://inch-ci.org/github/activescaffold/active_scaffold)
|
9
9
|
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
|
10
10
|
|
11
|
-
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 >= 4.0
|
11
|
+
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 >= 4.2.0 is supported, ruby >= 2.3 required.
|
12
12
|
|
13
13
|
Branch Details
|
14
14
|
--------------
|
15
|
+
3-5-stable supports rails >= 4.0.x and ruby >= 2.0.0
|
15
16
|
3-4-stable supports rails >= 3.2.x and ruby >= 1.9.3
|
16
17
|
3-3-stable supports rails >= 3.2.x and ruby >= 1.8
|
17
18
|
rails-3.2 supports Rails 3.1 & 3.2, and is the current source of the 3.2.x line of gems.
|
@@ -24,28 +25,37 @@ Added to Gemfile
|
|
24
25
|
|
25
26
|
gem 'active_scaffold'
|
26
27
|
|
27
|
-
For rails >= 5.1, add
|
28
|
+
For rails >= 5.1, add jquery to application.js before rails-ujs (with jquery-rails), or 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).
|
29
|
+
|
30
|
+
//= require jquery
|
28
31
|
|
29
32
|
gem 'jquery-rails'
|
30
33
|
|
31
|
-
Run the following commands
|
34
|
+
Run the following commands, for rails 4.2
|
32
35
|
|
33
36
|
bundle install
|
34
37
|
rails g active_scaffold:install
|
35
38
|
bundle exec rake db:create
|
36
|
-
rails g active_scaffold:resource
|
39
|
+
rails g active_scaffold:resource Model [attrs]
|
37
40
|
bundle exec rake db:migrate
|
38
41
|
|
39
|
-
|
42
|
+
Or run the following commands, for rails 5
|
40
43
|
|
41
44
|
bundle install
|
42
45
|
rails g active_scaffold:install
|
43
46
|
rails db:create
|
44
|
-
rails g active_scaffold:resource
|
47
|
+
rails g active_scaffold:resource Model [attrs]
|
45
48
|
rails db:migrate
|
46
49
|
|
47
50
|
|
48
|
-
Run the app and visit localhost:3000
|
51
|
+
Run the app and visit localhost:3000/<plural_model>
|
52
|
+
|
53
|
+
Threadsafe
|
54
|
+
----------
|
55
|
+
|
56
|
+
Threadsafe can be enabled calling ActiveScaffold.threadsafe! in an initializer.
|
57
|
+
It should be enabled on app start and it can't be disabled. Threadsafety is a
|
58
|
+
new feature and not well tested yet.
|
49
59
|
|
50
60
|
Configuration
|
51
61
|
-------------
|
@@ -61,6 +61,11 @@ jQuery(document).ready(function($) {
|
|
61
61
|
if (e.keyCode == 13) e.preventDefault();
|
62
62
|
});
|
63
63
|
jQuery(document).on('ajax:error', 'form.as_form', function(event, xhr, status, error) {
|
64
|
+
if (event.detail && !xhr) {
|
65
|
+
error = event.detail[0];
|
66
|
+
status = event.detail[1];
|
67
|
+
xhr = event.detail[2];
|
68
|
+
}
|
64
69
|
var as_div = jQuery(this).closest("div.active-scaffold");
|
65
70
|
if (as_div.length) {
|
66
71
|
ActiveScaffold.report_500_response(as_div, xhr);
|
@@ -86,6 +91,7 @@ jQuery(document).ready(function($) {
|
|
86
91
|
return true;
|
87
92
|
});
|
88
93
|
jQuery(document).on('ajax:success', 'a.as_action', function(event, response) {
|
94
|
+
if (event.detail && !response) response = event.detail[0];
|
89
95
|
var action_link = ActiveScaffold.ActionLink.get(jQuery(this));
|
90
96
|
if (action_link) {
|
91
97
|
if (action_link.position) {
|
@@ -105,6 +111,11 @@ jQuery(document).ready(function($) {
|
|
105
111
|
return true;
|
106
112
|
});
|
107
113
|
jQuery(document).on('ajax:error', 'a.as_action', function(event, xhr, status, error) {
|
114
|
+
if (event.detail && !xhr) {
|
115
|
+
error = event.detail[0];
|
116
|
+
status = event.detail[1];
|
117
|
+
xhr = event.detail[2];
|
118
|
+
}
|
108
119
|
var action_link = ActiveScaffold.ActionLink.get(jQuery(this));
|
109
120
|
if (action_link) {
|
110
121
|
ActiveScaffold.report_500_response(action_link.scaffold_id(), xhr);
|
@@ -139,6 +150,11 @@ jQuery(document).ready(function($) {
|
|
139
150
|
return true;
|
140
151
|
});
|
141
152
|
jQuery(document).on('ajax:error', 'a.as_cancel', function(event, xhr, status, error) {
|
153
|
+
if (event.detail && !xhr) {
|
154
|
+
error = event.detail[0];
|
155
|
+
status = event.detail[1];
|
156
|
+
xhr = event.detail[2];
|
157
|
+
}
|
142
158
|
var action_link = ActiveScaffold.find_action_link(jQuery(this));
|
143
159
|
if (action_link) {
|
144
160
|
ActiveScaffold.report_500_response(action_link.scaffold_id(), xhr);
|
@@ -151,6 +167,11 @@ jQuery(document).ready(function($) {
|
|
151
167
|
return true;
|
152
168
|
});
|
153
169
|
jQuery(document).on('ajax:error', 'a.as_sort', function(event, xhr, status, error) {
|
170
|
+
if (event.detail && !xhr) {
|
171
|
+
error = event.detail[0];
|
172
|
+
status = event.detail[1];
|
173
|
+
xhr = event.detail[2];
|
174
|
+
}
|
154
175
|
var as_scaffold = jQuery(this).closest('.active-scaffold');
|
155
176
|
ActiveScaffold.report_500_response(as_scaffold, xhr);
|
156
177
|
jQuery(this).closest('th').removeClass('loading');
|
@@ -179,6 +200,11 @@ jQuery(document).ready(function($) {
|
|
179
200
|
return true;
|
180
201
|
});
|
181
202
|
jQuery(document).on('ajax:error', 'a.as_paginate', function(event, xhr, status, error) {
|
203
|
+
if (event.detail && !xhr) {
|
204
|
+
error = event.detail[0];
|
205
|
+
status = event.detail[1];
|
206
|
+
xhr = event.detail[2];
|
207
|
+
}
|
182
208
|
var as_scaffold = jQuery(this).closest('.active-scaffold');
|
183
209
|
ActiveScaffold.report_500_response(as_scaffold, xhr);
|
184
210
|
return true;
|
@@ -297,6 +323,37 @@ jQuery(document).ready(function($) {
|
|
297
323
|
if (jQuery(this).prop('checked')) color_field.val('');
|
298
324
|
});
|
299
325
|
|
326
|
+
jQuery(document).on('click', '.hide-new-subform, .show-new-subform', function(e) {
|
327
|
+
var $this = jQuery(this), line = $this.closest('.form-element'),
|
328
|
+
subform = line.find('#' + $this.data('subform-id')), radio = false, hide, select;
|
329
|
+
if ($this.is('[type=radio]')) {
|
330
|
+
radio = true;
|
331
|
+
hide = $this.is('.hide-new-subform');
|
332
|
+
} else {
|
333
|
+
e.preventDefault();
|
334
|
+
hide = subform.is(':visible');
|
335
|
+
}
|
336
|
+
if ($this.data('select-id')) {
|
337
|
+
select = line.find('#' + $this.data('select-id'));
|
338
|
+
if (select.hasClass('recordselect') || select.is('.no-options')) select = select.next(':hidden').andSelf();
|
339
|
+
}
|
340
|
+
if (hide) {
|
341
|
+
subform.hide().find("input:enabled,select:enabled,textarea:enabled").prop('disabled', true);
|
342
|
+
if (select) select.show().prop('disabled', false);
|
343
|
+
if (radio) {
|
344
|
+
$this.closest('.form-element').find('[name="' + $this.attr('name') + '"].show-new-subform').prop('disabled', false);
|
345
|
+
} else $this.html($this.data('select-text'));
|
346
|
+
} else {
|
347
|
+
if (select) select.hide().prop('disabled', true);
|
348
|
+
subform.show().find("input:disabled,select:disabled,textarea:disabled").prop('disabled', false);
|
349
|
+
if (radio) $this.prop('disabled', true);
|
350
|
+
else {
|
351
|
+
$this.data('select-text', $this.html());
|
352
|
+
$this.html($this.data('subform-text'));
|
353
|
+
}
|
354
|
+
}
|
355
|
+
});
|
356
|
+
|
300
357
|
jQuery(document).on('turbolinks:before-visit', function() {
|
301
358
|
if (history.state.active_scaffold) {
|
302
359
|
history.replaceState({turbolinks: true, url: document.location.href}, '', document.location.href);
|
@@ -454,8 +511,10 @@ var ActiveScaffold = {
|
|
454
511
|
ActiveScaffold.auto_paginate(container);
|
455
512
|
ActiveScaffold.draggable_lists('.draggable-lists', container);
|
456
513
|
ActiveScaffold.sliders(container);
|
514
|
+
ActiveScaffold.disable_optional_subforms(container);
|
457
515
|
},
|
458
516
|
setup_history_state: function() {
|
517
|
+
if (!jQuery('.active-scaffold').length) return;
|
459
518
|
var data = {}, current_search_item = jQuery('.active-scaffold .filtered-message[data-search]');
|
460
519
|
if (current_search_item.length) {
|
461
520
|
// store user settings enabled, update state with current page, search and sorting
|
@@ -479,7 +538,9 @@ var ActiveScaffold = {
|
|
479
538
|
auto_paginate: function(element) {
|
480
539
|
var paginate_link = jQuery('.active-scaffold-pagination.auto-paginate a:first', element);
|
481
540
|
if (paginate_link.length) {
|
482
|
-
|
541
|
+
var pagination = paginate_link.closest('.auto-paginate');
|
542
|
+
pagination.find('.as_paginate').hide();
|
543
|
+
pagination.find('.loading-indicator').css({visibility: 'visible'});
|
483
544
|
ActiveScaffold.auto_load_page(paginate_link.attr('href'), {auto_pagination: true});
|
484
545
|
}
|
485
546
|
},
|
@@ -489,6 +550,30 @@ var ActiveScaffold = {
|
|
489
550
|
enable_js_form_buttons: function(element) {
|
490
551
|
jQuery('.as-js-button', element).show();
|
491
552
|
},
|
553
|
+
disable_optional_subforms: function(element) {
|
554
|
+
jQuery('.sub-form.optional', element).each(function () {
|
555
|
+
var $this = jQuery(this), toggle = $this.find('>.visibility-toggle');
|
556
|
+
if (toggle.length) {
|
557
|
+
var hide = toggle.text() == toggle.data('show');
|
558
|
+
$this.find('> [id] > .sub-form-record > .associated-record dl:first').each(function (i) {
|
559
|
+
var parent = jQuery(this).parent(), div_id = toggle.data('toggable') + i;
|
560
|
+
parent.children().wrapAll('<div id="' + div_id + '">');
|
561
|
+
if (hide) parent.find('> div').hide();
|
562
|
+
parent.prepend(toggle.clone().data('toggable', div_id));
|
563
|
+
});
|
564
|
+
toggle.remove();
|
565
|
+
}
|
566
|
+
if ($this.is(':visible')) {
|
567
|
+
var line = $this.closest('.form-element'), toggle = line.find('.show-new-subform[data-subform-id="' + $this.attr('id') + '"]').first();
|
568
|
+
if (toggle.is('[type=radio]')) toggle.prop('disabled', true);
|
569
|
+
else if (toggle.data('select-id')) {
|
570
|
+
select = line.find('#' + toggle.data('select-id'));
|
571
|
+
if (select.hasClass('recordselect') || select.is('.no-options')) select = select.next(':hidden').andSelf();
|
572
|
+
select.hide().prop('disabled', true);
|
573
|
+
}
|
574
|
+
} else $this.find("input:enabled,select:enabled,textarea:enabled").prop('disabled', true);
|
575
|
+
});
|
576
|
+
},
|
492
577
|
sliders: function(element) {
|
493
578
|
jQuery('.as-slider', element).each(function() {
|
494
579
|
var opts = $(this).data('slider');
|
@@ -499,8 +584,13 @@ var ActiveScaffold = {
|
|
499
584
|
load_embedded: function(element) {
|
500
585
|
jQuery('.active-scaffold-component .load-embedded', element).each(function(index, item) {
|
501
586
|
item = jQuery(item);
|
502
|
-
item.closest('.active-scaffold-component').
|
503
|
-
|
587
|
+
var indicator = item.closest('.active-scaffold-component').find('.loading-indicator');
|
588
|
+
indicator.css({visibility: 'visible'});
|
589
|
+
item.closest('.active-scaffold-component').load(item.attr('href'), function(response, status, xhr) {
|
590
|
+
if (status == 'error') {
|
591
|
+
indicator.css({visibility: 'hidden'});
|
592
|
+
indicator.after($('<p>').html(item.data('error-msg')).addClass("error-message message server-error"));
|
593
|
+
} else jQuery(this).trigger('as:element_updated');
|
504
594
|
});
|
505
595
|
});
|
506
596
|
},
|
@@ -653,7 +743,7 @@ var ActiveScaffold = {
|
|
653
743
|
|
654
744
|
disable_form: function(as_form, skip_loading_indicator) {
|
655
745
|
if (typeof(as_form) == 'string') as_form = '#' + as_form;
|
656
|
-
as_form = jQuery(as_form)
|
746
|
+
as_form = jQuery(as_form);
|
657
747
|
var loading_indicator = jQuery('#' + as_form.attr('id').replace(/-form$/, '-loading-indicator'));
|
658
748
|
if (!skip_loading_indicator && loading_indicator) loading_indicator.css('visibility','visible');
|
659
749
|
jQuery('input[type=submit]', as_form).attr('disabled', 'disabled');
|
@@ -1023,6 +1113,7 @@ var ActiveScaffold = {
|
|
1023
1113
|
url: url,
|
1024
1114
|
data: params,
|
1025
1115
|
type: 'post',
|
1116
|
+
dataType: 'script',
|
1026
1117
|
beforeSend: function(xhr, settings) {
|
1027
1118
|
element.nextAll('img.loading-indicator').css('visibility','visible');
|
1028
1119
|
/* force to blur and save previous last_focus, because disable_form will trigger
|
@@ -1311,8 +1402,8 @@ ActiveScaffold.ActionLink.Record = ActiveScaffold.ActionLink.Abstract.extend({
|
|
1311
1402
|
ActiveScaffold.update_row(this.target, refreshed_content_or_reload);
|
1312
1403
|
} else if (this.refresh_url) {
|
1313
1404
|
var target = this.target;
|
1314
|
-
jQuery.get(this.refresh_url, function(e, status,
|
1315
|
-
ActiveScaffold.update_row(target,
|
1405
|
+
jQuery.get(this.refresh_url, function(e, status, xhr) {
|
1406
|
+
ActiveScaffold.update_row(target, xhr.responseText);
|
1316
1407
|
});
|
1317
1408
|
}
|
1318
1409
|
}
|
@@ -278,7 +278,7 @@ color: $msg_filtered_color;
|
|
278
278
|
color: $msg_color;
|
279
279
|
}
|
280
280
|
|
281
|
-
.active-scaffold .error-message {
|
281
|
+
.active-scaffold .error-message, .active-scaffold-component .error-message {
|
282
282
|
border-color: $msg_error_border_color;
|
283
283
|
background-color: $msg_error_bg;
|
284
284
|
}
|
@@ -58,13 +58,15 @@ position: relative;
|
|
58
58
|
.active-scaffold-header h2 {
|
59
59
|
padding: 2px 0px;
|
60
60
|
margin: 0;
|
61
|
-
font: bold
|
61
|
+
font-weight: bold;
|
62
|
+
font-size: 160%;
|
62
63
|
}
|
63
64
|
|
64
65
|
.active-scaffold div.actions a,
|
65
66
|
.active-scaffold div.actions {
|
66
67
|
float: right;
|
67
|
-
font: bold
|
68
|
+
font-weight: bold;
|
69
|
+
font-size: 14px;
|
68
70
|
letter-spacing: -1px;
|
69
71
|
text-decoration: none;
|
70
72
|
padding: 1px 2px;
|
@@ -150,7 +152,8 @@ text-align: left;
|
|
150
152
|
.active-scaffold th a,
|
151
153
|
.active-scaffold th p,
|
152
154
|
.active-scaffold .show-view th {
|
153
|
-
font: bold
|
155
|
+
font-weight: bold;
|
156
|
+
font-size: 11px;
|
154
157
|
}
|
155
158
|
.active-scaffold th a,
|
156
159
|
.active-scaffold th p {
|
@@ -192,7 +195,6 @@ display: none;
|
|
192
195
|
padding: 5px 4px;
|
193
196
|
}
|
194
197
|
.active-scaffold tr.record td {
|
195
|
-
font-family: Verdana, sans-serif;
|
196
198
|
font-size: 11px;
|
197
199
|
border: solid 1px;
|
198
200
|
border-width: 0 0 1px 1px;
|
@@ -251,7 +253,8 @@ padding: 0 2px;
|
|
251
253
|
|
252
254
|
.active-scaffold tr.record td.actions a,
|
253
255
|
.active-scaffold tr.record td.actions div {
|
254
|
-
font: bold
|
256
|
+
font-weight: bold;
|
257
|
+
font-size: 11px;
|
255
258
|
letter-spacing: -1px;
|
256
259
|
padding: 2px;
|
257
260
|
margin: 0 2px;
|
@@ -378,7 +381,8 @@ right: 0px;
|
|
378
381
|
|
379
382
|
.active-scaffold .active-scaffold .active-scaffold-header div.actions a,
|
380
383
|
.active-scaffold .active-scaffold .active-scaffold-header div.actions div {
|
381
|
-
font: bold
|
384
|
+
font-weight: bold;
|
385
|
+
font-size: 11px;
|
382
386
|
}
|
383
387
|
|
384
388
|
.active-scaffold .active-scaffold .view {
|
@@ -413,13 +417,15 @@ font-size: 11px;
|
|
413
417
|
|
414
418
|
.active-scaffold-calculations td {
|
415
419
|
border-top: 2px solid;
|
416
|
-
font: bold
|
420
|
+
font-weight: bold;
|
421
|
+
font-size: 12px;
|
417
422
|
}
|
418
423
|
|
419
424
|
.active-scaffold .active-scaffold-footer {
|
420
425
|
padding: 3px 0px 2px 0px;
|
421
426
|
border-bottom: none;
|
422
|
-
font: bold
|
427
|
+
font-weight: bold;
|
428
|
+
font-size: 12px;
|
423
429
|
}
|
424
430
|
.active-scaffold .active-scaffold-footer > br {
|
425
431
|
clear: both;
|
@@ -430,13 +436,17 @@ float: right;
|
|
430
436
|
white-space: nowrap;
|
431
437
|
margin-right: 5px;
|
432
438
|
}
|
439
|
+
.active-scaffold-footer .active-scaffold-pagination.auto-paginate {
|
440
|
+
float: left;
|
441
|
+
}
|
433
442
|
|
434
443
|
.active-scaffold-footer a {
|
435
444
|
text-decoration: none;
|
436
445
|
letter-spacing: 0;
|
437
446
|
padding: 0 2px;
|
438
447
|
margin: 0 -2px;
|
439
|
-
font: bold
|
448
|
+
font-weight: bold;
|
449
|
+
font-size: 12px;
|
440
450
|
}
|
441
451
|
|
442
452
|
.active-scaffold-footer .next {
|
@@ -467,7 +477,7 @@ text-align: center;
|
|
467
477
|
position: relative;
|
468
478
|
}
|
469
479
|
|
470
|
-
.active-scaffold .message {
|
480
|
+
.active-scaffold .message, .active-scaffold-component .message {
|
471
481
|
font-size: 11px;
|
472
482
|
font-weight: bold;
|
473
483
|
padding: 5px 20px 5px 5px;
|
@@ -493,15 +503,16 @@ position: absolute;
|
|
493
503
|
right: 10px;
|
494
504
|
top: 4px;
|
495
505
|
padding: 0;
|
496
|
-
font: bold
|
506
|
+
font-weight: bold;
|
507
|
+
font-size: 11px;
|
497
508
|
letter-spacing: -1px;
|
498
509
|
}
|
499
510
|
|
500
|
-
.active-scaffold .messages-container .message {
|
511
|
+
.active-scaffold .messages-container .message, .active-scaffold-component .message {
|
501
512
|
margin: 0;
|
502
513
|
}
|
503
514
|
|
504
|
-
.active-scaffold .error-message {
|
515
|
+
.active-scaffold .error-message, .active-scaffold-component .error-message {
|
505
516
|
border-left: solid 5px;
|
506
517
|
}
|
507
518
|
|
@@ -529,7 +540,6 @@ padding: 2px 5px;
|
|
529
540
|
font-size: 11px;
|
530
541
|
margin: 0;
|
531
542
|
letter-spacing: 0;
|
532
|
-
font-family: Verdana;
|
533
543
|
}
|
534
544
|
|
535
545
|
.active-scaffold .errorExplanation ul {
|
@@ -541,12 +551,12 @@ list-style: disc;
|
|
541
551
|
.active-scaffold .errorExplanation p {
|
542
552
|
font-size: 11px;
|
543
553
|
padding: 2px 5px;
|
544
|
-
font-family: Verdana;
|
545
554
|
margin: 0;
|
546
555
|
}
|
547
556
|
|
548
557
|
.active-scaffold .errorExplanation ul li {
|
549
|
-
font: bold
|
558
|
+
font-weight: bold;
|
559
|
+
font-size: 11px;
|
550
560
|
letter-spacing: -1px;
|
551
561
|
margin: 0;
|
552
562
|
padding: 0;
|
@@ -590,13 +600,15 @@ clear: both;
|
|
590
600
|
width: 12em;
|
591
601
|
float: left;
|
592
602
|
clear: left;
|
593
|
-
font: normal
|
603
|
+
font-weight: normal;
|
604
|
+
font-size: 11px;
|
594
605
|
line-height: 16px;
|
595
606
|
}
|
596
607
|
|
597
608
|
.active-scaffold .show-view dd {
|
598
609
|
float: left;
|
599
|
-
font: bold
|
610
|
+
font-weight: bold;
|
611
|
+
font-size: 14px;
|
600
612
|
padding-left: 5px;
|
601
613
|
margin-bottom: 5px;
|
602
614
|
}
|
@@ -611,7 +623,6 @@ margin: 0;
|
|
611
623
|
.active-scaffold .submit {
|
612
624
|
font-weight: bold;
|
613
625
|
font-size: 14px;
|
614
|
-
font-family: Arial, sans-serif;
|
615
626
|
letter-spacing: 0;
|
616
627
|
margin: 0;
|
617
628
|
margin-top: 5px;
|
@@ -631,7 +642,8 @@ padding: 2px;
|
|
631
642
|
margin: 0;
|
632
643
|
text-transform: none;
|
633
644
|
letter-spacing: -1px;
|
634
|
-
font: bold
|
645
|
+
font-weight: bold;
|
646
|
+
font-size: 16px;
|
635
647
|
}
|
636
648
|
|
637
649
|
.active-scaffold h5 {
|
@@ -663,7 +675,8 @@ clear: both;
|
|
663
675
|
|
664
676
|
.active-scaffold a.as_cancel,
|
665
677
|
.active-scaffold p.form-footer a {
|
666
|
-
font: bold
|
678
|
+
font-weight: bold;
|
679
|
+
font-size: 14px;
|
667
680
|
letter-spacing: 0;
|
668
681
|
}
|
669
682
|
|
@@ -682,7 +695,8 @@ clear: both;
|
|
682
695
|
}
|
683
696
|
|
684
697
|
.active-scaffold label {
|
685
|
-
font: normal
|
698
|
+
font-weight: normal;
|
699
|
+
font-size: 11px;
|
686
700
|
}
|
687
701
|
|
688
702
|
.active-scaffold li.form-element dt {
|
@@ -717,12 +731,12 @@ font-weight: bold;
|
|
717
731
|
|
718
732
|
.active-scaffold label.example {
|
719
733
|
font-size: 11px;
|
720
|
-
font-family: arial;
|
721
734
|
}
|
722
735
|
|
723
736
|
.active-scaffold input.text-input,
|
724
737
|
.active-scaffold select {
|
725
|
-
font: bold
|
738
|
+
font-weight: bold;
|
739
|
+
font-size: 16px;
|
726
740
|
letter-spacing: -1px;
|
727
741
|
border: solid 1px;
|
728
742
|
}
|
@@ -746,7 +760,6 @@ padding: 1px;
|
|
746
760
|
|
747
761
|
|
748
762
|
.active-scaffold textarea {
|
749
|
-
font-family: Arial, sans-serif;
|
750
763
|
font-size: 12px;
|
751
764
|
padding: 1px;
|
752
765
|
border: solid 1px;
|
@@ -828,6 +841,12 @@ clear: left;
|
|
828
841
|
padding: 5px 0;
|
829
842
|
padding-left: 5px;
|
830
843
|
}
|
844
|
+
.active-scaffold .form-element .sub-form.optional {
|
845
|
+
float: none;
|
846
|
+
}
|
847
|
+
.active-scaffold .form-element .show-new-subform {
|
848
|
+
margin-left: 5px;
|
849
|
+
}
|
831
850
|
|
832
851
|
.active-scaffold .sub-form h5 {
|
833
852
|
margin-left: -5px;
|
@@ -840,7 +859,8 @@ background: none;
|
|
840
859
|
}
|
841
860
|
|
842
861
|
.active-scaffold .sub-form table th {
|
843
|
-
font: normal
|
862
|
+
font-weight: normal;
|
863
|
+
font-size: 10px;
|
844
864
|
padding: 0 5px 0 1px;
|
845
865
|
background: none;
|
846
866
|
}
|
@@ -891,13 +911,15 @@ display: none;
|
|
891
911
|
}
|
892
912
|
|
893
913
|
.active-scaffold .sub-form .association-record a {
|
894
|
-
font: bold
|
914
|
+
font-weight: bold;
|
915
|
+
font-size: 12px;
|
895
916
|
}
|
896
917
|
|
897
918
|
.active-scaffold .sub-form input.text-input,
|
898
919
|
.active-scaffold .sub-form select {
|
899
920
|
letter-spacing: 0;
|
900
|
-
font: bold
|
921
|
+
font-weight: bold;
|
922
|
+
font-size: 12px;
|
901
923
|
}
|
902
924
|
|
903
925
|
.active-scaffold .sub-form .footer-wrapper {
|
@@ -983,7 +1005,8 @@ padding: 4px 0px;
|
|
983
1005
|
|
984
1006
|
.as_touch .active-scaffold div.actions a,
|
985
1007
|
.as_touch .active-scaffold div.actions div {
|
986
|
-
|
1008
|
+
font-weight: bold;
|
1009
|
+
font-size: 14px;
|
987
1010
|
}
|
988
1011
|
|
989
1012
|
.as_touch .active-scaffold div.actions {
|