para 0.7.1 → 0.7.2
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/app/assets/javascripts/para/admin/tabs.coffee +20 -1
- data/app/assets/javascripts/para/admin.coffee +1 -0
- data/app/assets/javascripts/para/inputs/multi-select-input.coffee +5 -3
- data/app/assets/javascripts/para/inputs/nested_many.coffee +35 -1
- data/app/assets/javascripts/para/lib/remote-file-forms.coffee +6 -7
- data/app/assets/javascripts/para/lib/turbolinks-loading.coffee +1 -1
- data/app/assets/stylesheets/para/admin/main.sass +1 -0
- data/app/assets/stylesheets/para/admin/src/_affix.sass +4 -0
- data/app/assets/stylesheets/para/admin/src/_base.sass +4 -1
- data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +12 -2
- data/app/assets/stylesheets/para/admin/src/_form.sass +22 -3
- data/app/assets/stylesheets/para/admin/src/_navtabs.sass +23 -6
- data/app/assets/stylesheets/para/admin/src/_nested-many.sass +5 -0
- data/app/assets/stylesheets/para/admin/src/_nested_one.sass +6 -5
- data/app/controllers/para/admin/base_controller.rb +5 -0
- data/app/controllers/para/admin/crud_resources_controller.rb +1 -1
- data/app/controllers/para/admin/exports_controller.rb +2 -1
- data/app/controllers/para/admin/nested_forms_controller.rb +13 -0
- data/app/controllers/para/admin/resources_controller.rb +14 -3
- data/app/controllers/para/admin/search_controller.rb +7 -5
- data/app/decorators/para/component/base_decorator.rb +7 -2
- data/app/decorators/para/component/crud_decorator.rb +4 -0
- data/app/decorators/para/component/form_decorator.rb +6 -0
- data/app/exporters/call_for_projects_votes_exporter.rb +79 -0
- data/app/helpers/para/admin/base_helper.rb +2 -3
- data/app/helpers/para/admin/history_helper.rb +16 -0
- data/app/helpers/para/form_helper.rb +9 -1
- data/app/helpers/para/model_helper.rb +0 -2
- data/app/models/para/cache/item.rb +4 -0
- data/app/models/para/component/base.rb +4 -0
- data/app/models/para/component/crud.rb +1 -0
- data/app/models/para/component/form.rb +2 -0
- data/app/models/para/library/file.rb +40 -12
- data/app/models/para/page/section.rb +13 -1
- data/app/views/admin/para/exporter/bases/_completed.html.haml +1 -1
- data/app/views/layouts/para/admin.html.haml +5 -5
- data/app/views/para/admin/form_resources/show.html.haml +6 -2
- data/app/views/para/admin/nested_forms/show.html.haml +9 -0
- data/app/views/para/admin/resources/_exports_menu.html.haml +2 -2
- data/app/views/para/admin/resources/_list.html.haml +26 -21
- data/app/views/para/admin/resources/_remote_nested_form.html.haml +1 -0
- data/app/views/para/admin/resources/edit.html.haml +7 -2
- data/app/views/para/admin/resources/history/_index.html.haml +3 -0
- data/app/views/para/admin/shared/_header.html.haml +3 -3
- data/app/views/para/admin/shared/_navigation.html.haml +1 -1
- data/app/views/para/form/_tabs.html.haml +12 -9
- data/app/views/para/inputs/_multi_select.html.haml +6 -2
- data/app/views/para/inputs/_nested_many.html.haml +4 -4
- data/app/views/para/inputs/_nested_one.html.haml +12 -1
- data/app/views/para/inputs/multi_select/_no_items.html.haml +8 -4
- data/app/views/para/inputs/nested_many/_add.html.haml +2 -2
- data/app/views/para/inputs/nested_many/_add_with_subclasses.html.haml +3 -3
- data/app/views/para/inputs/nested_many/_container.html.haml +10 -7
- data/lib/generators/para/exporter/templates/csv_exporter.rb +24 -0
- data/lib/generators/para/exporter/templates/xls_exporter.rb +24 -0
- data/lib/para/attribute_field/belongs_to.rb +4 -1
- data/lib/para/attribute_field/nested_field.rb +4 -2
- data/lib/para/attribute_field/nested_many.rb +1 -1
- data/lib/para/attribute_field/nested_one.rb +1 -1
- data/lib/para/cache/database_store.rb +14 -1
- data/lib/para/cloneable.rb +44 -2
- data/lib/para/component/history.rb +15 -0
- data/lib/para/component.rb +1 -0
- data/lib/para/components_configuration.rb +8 -3
- data/lib/para/engine.rb +8 -0
- data/lib/para/exporter/base.rb +49 -1
- data/lib/para/ext/request_iframe_xhr.rb +17 -0
- data/lib/para/ext.rb +1 -0
- data/lib/para/form_builder/attributes_mappings_tracker.rb +15 -3
- data/lib/para/form_builder/containers.rb +6 -1
- data/lib/para/form_builder/nested_form.rb +7 -4
- data/lib/para/form_builder/tabs.rb +49 -8
- data/lib/para/iframe_transport/middleware.rb +58 -0
- data/lib/para/iframe_transport.rb +7 -0
- data/lib/para/importer/base.rb +1 -0
- data/lib/para/inputs/multi_select_input.rb +27 -8
- data/lib/para/inputs/nested_base_input.rb +26 -0
- data/lib/para/inputs/nested_many_input.rb +43 -18
- data/lib/para/inputs/nested_one_input.rb +18 -4
- data/lib/para/inputs.rb +1 -0
- data/lib/para/log_config.rb +14 -0
- data/lib/para/markup/resources_table.rb +2 -2
- data/lib/para/model_field_parsers/relations.rb +12 -1
- data/lib/para/page/model.rb +2 -1
- data/lib/para/postgres_extensions_checker.rb +15 -11
- data/lib/para/routes.rb +3 -3
- data/lib/para/search/distinct.rb +1 -1
- data/lib/para/version.rb +1 -1
- data/lib/para.rb +2 -0
- data/lib/rails/routing_mapper.rb +19 -27
- data/vendor/assets/javascripts/jquery.iframe-transport.js +260 -0
- data/vendor/assets/javascripts/jquery.remote-modal-form.coffee +80 -2
- metadata +23 -9
|
@@ -2,10 +2,25 @@
|
|
|
2
2
|
# forms feature, without having to write any extra javascript
|
|
3
3
|
#
|
|
4
4
|
class @RemoteModalForm extends Vertebra.View
|
|
5
|
+
@setLoading = ($el) ->
|
|
6
|
+
return unless $el and $el.length
|
|
7
|
+
|
|
8
|
+
unless $el.data('loading-text')
|
|
9
|
+
$el.data('loading-text', '<i class="fa fa-spinner fa-spin"></i>')
|
|
10
|
+
|
|
11
|
+
$el.button('loading')
|
|
12
|
+
|
|
13
|
+
@resetLoading = ($el) ->
|
|
14
|
+
return unless $el and $el.length
|
|
15
|
+
$el?.button('reset')
|
|
16
|
+
|
|
5
17
|
events:
|
|
6
18
|
'ajax:success form[data-remote]': 'formSuccess'
|
|
7
19
|
'ajax:success a[data-remote]': 'pageLoaded'
|
|
8
20
|
'ajax:error [data-remote]': 'formError'
|
|
21
|
+
'ajax:beforeSend form[data-remote]': 'formBeforeSend'
|
|
22
|
+
'ajax:beforeSend a[data-remote]': 'linkBeforeSend'
|
|
23
|
+
'ajax:aborted:file [data-remote]': 'handleFormWithFiles'
|
|
9
24
|
'hidden.bs.modal': 'modalHidden'
|
|
10
25
|
'hide.bs.modal': 'modalHide'
|
|
11
26
|
|
|
@@ -16,13 +31,50 @@ class @RemoteModalForm extends Vertebra.View
|
|
|
16
31
|
@trigger('shown')
|
|
17
32
|
|
|
18
33
|
formSuccess: (e, response) ->
|
|
19
|
-
@formDidSuccess = true
|
|
20
34
|
@handleModalResponse(response)
|
|
21
35
|
@trigger('success')
|
|
36
|
+
@formDidSuccess = true
|
|
22
37
|
|
|
23
38
|
formError: (e, jqXHR) ->
|
|
24
39
|
@replaceModalWith(jqXHR.responseText)
|
|
25
40
|
@trigger('error')
|
|
41
|
+
@formDidSuccess = false
|
|
42
|
+
|
|
43
|
+
# Intercept form jquery-ujs form submission when there are non-blank file
|
|
44
|
+
# inputs in the `remote` form, so we can submit the form through FormData or
|
|
45
|
+
# jquery.iframe-transport depending on browser support.
|
|
46
|
+
#
|
|
47
|
+
# Note that iframe transport does not allow us to track upload progress.
|
|
48
|
+
#
|
|
49
|
+
handleFormWithFiles: (e) ->
|
|
50
|
+
if RemoteFileForm?.supported
|
|
51
|
+
form = new RemoteFileForm(el: e.target)
|
|
52
|
+
form.on('progress', @onFormUploadProgress)
|
|
53
|
+
else
|
|
54
|
+
@submitWithIframe($(e.currentTarget))
|
|
55
|
+
|
|
56
|
+
return false
|
|
57
|
+
|
|
58
|
+
submitWithIframe: ($form) ->
|
|
59
|
+
jqXHR = jQuery.ajax
|
|
60
|
+
url: $form.attr('action')
|
|
61
|
+
method: $form.attr('method')
|
|
62
|
+
files: $form.find(':file')
|
|
63
|
+
iframe: true
|
|
64
|
+
data: $form.find('input:not(:file), textarea, select').serializeArray()
|
|
65
|
+
processData: false
|
|
66
|
+
|
|
67
|
+
jqXHR
|
|
68
|
+
.done (data) => @formSuccess(null, data)
|
|
69
|
+
.fail (jqXHR) => @formError(null, jqXHR)
|
|
70
|
+
|
|
71
|
+
onFormUploadProgress: (e) =>
|
|
72
|
+
return unless e.originalEvent.lengthComputable
|
|
73
|
+
# Build rounded progress
|
|
74
|
+
progress = (e.originalEvent.loaded / e.originalEvent.total)
|
|
75
|
+
progress = Math.round(progress * 10000) / 100
|
|
76
|
+
# Display it in the submit button
|
|
77
|
+
@$(':submit').text(progress + '%')
|
|
26
78
|
|
|
27
79
|
pageLoaded: (e, response) ->
|
|
28
80
|
@handleModalResponse(response)
|
|
@@ -35,7 +87,20 @@ class @RemoteModalForm extends Vertebra.View
|
|
|
35
87
|
|
|
36
88
|
replaceModalWith: (modalMarkup) ->
|
|
37
89
|
@hideModal()
|
|
38
|
-
|
|
90
|
+
|
|
91
|
+
# We try to find a modal in the returned elements from the server
|
|
92
|
+
$modal = $(modalMarkup).filter('.modal').eq(0)
|
|
93
|
+
# If there are no modal, we try to find a modal inside the returned elements
|
|
94
|
+
$modal = $modal.find('.modal') unless $modal.length
|
|
95
|
+
# If no modal is finally found, we return and don't do anything
|
|
96
|
+
return unless $modal.length
|
|
97
|
+
|
|
98
|
+
# Initialize the returned modal
|
|
99
|
+
$modal.appendTo('body')
|
|
100
|
+
$modal.modal()
|
|
101
|
+
|
|
102
|
+
# Configure the remote modal class to use the new modal and show it
|
|
103
|
+
@setElement($modal)
|
|
39
104
|
@$el.data('remote-modal-form', this)
|
|
40
105
|
@showModal()
|
|
41
106
|
|
|
@@ -53,6 +118,12 @@ class @RemoteModalForm extends Vertebra.View
|
|
|
53
118
|
@trigger('hide')
|
|
54
119
|
@trigger('close') if @$el[0] is $(e.currentTarget)[0]
|
|
55
120
|
|
|
121
|
+
formBeforeSend: (e) ->
|
|
122
|
+
RemoteModalForm.setLoading(@$(':submit'))
|
|
123
|
+
|
|
124
|
+
linkBeforeSend: (e) ->
|
|
125
|
+
RemoteModalForm.setLoading($(e.currentTarget))
|
|
126
|
+
|
|
56
127
|
refreshPage: ->
|
|
57
128
|
Turbolinks.reloadPage() if @refreshOnClose and @formDidSuccess
|
|
58
129
|
|
|
@@ -63,5 +134,12 @@ class @RemoteModalForm extends Vertebra.View
|
|
|
63
134
|
# Lazy initialization when the link target is loaded
|
|
64
135
|
#
|
|
65
136
|
$(document).on 'page:change turbolinks:load', ->
|
|
137
|
+
$('body').on 'ajax:beforeSend', '[data-remote-modal-form]', (e) ->
|
|
138
|
+
RemoteModalForm.setLoading($(e.currentTarget))
|
|
139
|
+
|
|
140
|
+
$('body').on 'ajax:error', '[data-remote-modal-form]', (e) ->
|
|
141
|
+
RemoteModalForm.resetLoading($(e.currentTarget))
|
|
142
|
+
|
|
66
143
|
$('body').on 'ajax:success', '[data-remote-modal-form]', (e, response) ->
|
|
144
|
+
RemoteModalForm.resetLoading($(e.currentTarget))
|
|
67
145
|
new RemoteModalForm(modalMarkup: response, $link: $(e.currentTarget))
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: para
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Valentin Ballestrino
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-12-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -96,14 +96,14 @@ dependencies:
|
|
|
96
96
|
name: simple_form
|
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
|
98
98
|
requirements:
|
|
99
|
-
- - "
|
|
99
|
+
- - ">="
|
|
100
100
|
- !ruby/object:Gem::Version
|
|
101
101
|
version: '3.1'
|
|
102
102
|
type: :runtime
|
|
103
103
|
prerelease: false
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements:
|
|
106
|
-
- - "
|
|
106
|
+
- - ">="
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
108
|
version: '3.1'
|
|
109
109
|
- !ruby/object:Gem::Dependency
|
|
@@ -126,14 +126,14 @@ dependencies:
|
|
|
126
126
|
requirements:
|
|
127
127
|
- - "~>"
|
|
128
128
|
- !ruby/object:Gem::Version
|
|
129
|
-
version: '0
|
|
129
|
+
version: '1.0'
|
|
130
130
|
type: :runtime
|
|
131
131
|
prerelease: false
|
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
|
133
133
|
requirements:
|
|
134
134
|
- - "~>"
|
|
135
135
|
- !ruby/object:Gem::Version
|
|
136
|
-
version: '0
|
|
136
|
+
version: '1.0'
|
|
137
137
|
- !ruby/object:Gem::Dependency
|
|
138
138
|
name: cocoon
|
|
139
139
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -208,14 +208,14 @@ dependencies:
|
|
|
208
208
|
name: deep_cloneable
|
|
209
209
|
requirement: !ruby/object:Gem::Requirement
|
|
210
210
|
requirements:
|
|
211
|
-
- - "
|
|
211
|
+
- - ">="
|
|
212
212
|
- !ruby/object:Gem::Version
|
|
213
213
|
version: 2.2.1
|
|
214
214
|
type: :runtime
|
|
215
215
|
prerelease: false
|
|
216
216
|
version_requirements: !ruby/object:Gem::Requirement
|
|
217
217
|
requirements:
|
|
218
|
-
- - "
|
|
218
|
+
- - ">="
|
|
219
219
|
- !ruby/object:Gem::Version
|
|
220
220
|
version: 2.2.1
|
|
221
221
|
- !ruby/object:Gem::Dependency
|
|
@@ -511,6 +511,7 @@ files:
|
|
|
511
511
|
- app/assets/stylesheets/admin/app.sass
|
|
512
512
|
- app/assets/stylesheets/para/admin.sass
|
|
513
513
|
- app/assets/stylesheets/para/admin/main.sass
|
|
514
|
+
- app/assets/stylesheets/para/admin/src/_affix.sass
|
|
514
515
|
- app/assets/stylesheets/para/admin/src/_alert.sass
|
|
515
516
|
- app/assets/stylesheets/para/admin/src/_base.sass
|
|
516
517
|
- app/assets/stylesheets/para/admin/src/_bootstrap-variables.scss
|
|
@@ -554,6 +555,7 @@ files:
|
|
|
554
555
|
- app/controllers/para/admin/imports_controller.rb
|
|
555
556
|
- app/controllers/para/admin/jobs_controller.rb
|
|
556
557
|
- app/controllers/para/admin/main_controller.rb
|
|
558
|
+
- app/controllers/para/admin/nested_forms_controller.rb
|
|
557
559
|
- app/controllers/para/admin/resources_controller.rb
|
|
558
560
|
- app/controllers/para/admin/search_controller.rb
|
|
559
561
|
- app/controllers/para/admin/settings_component_controller.rb
|
|
@@ -563,10 +565,12 @@ files:
|
|
|
563
565
|
- app/decorators/para/component/form_decorator.rb
|
|
564
566
|
- app/decorators/para/component/settings_decorator.rb
|
|
565
567
|
- app/decorators/para/component_section_decorator.rb
|
|
568
|
+
- app/exporters/call_for_projects_votes_exporter.rb
|
|
566
569
|
- app/helpers/para/admin/base_helper.rb
|
|
567
570
|
- app/helpers/para/admin/component_groups_helper.rb
|
|
568
571
|
- app/helpers/para/admin/components_helper.rb
|
|
569
572
|
- app/helpers/para/admin/decorators_helper.rb
|
|
573
|
+
- app/helpers/para/admin/history_helper.rb
|
|
570
574
|
- app/helpers/para/admin/page_helper.rb
|
|
571
575
|
- app/helpers/para/admin/pagination_helper.rb
|
|
572
576
|
- app/helpers/para/admin/resources_helper.rb
|
|
@@ -609,6 +613,7 @@ files:
|
|
|
609
613
|
- app/views/para/admin/jobs/_progress.html.haml
|
|
610
614
|
- app/views/para/admin/jobs/show.html.haml
|
|
611
615
|
- app/views/para/admin/main/index.html.haml
|
|
616
|
+
- app/views/para/admin/nested_forms/show.html.haml
|
|
612
617
|
- app/views/para/admin/resources/_actions.html.haml
|
|
613
618
|
- app/views/para/admin/resources/_add_button.html.haml
|
|
614
619
|
- app/views/para/admin/resources/_exports_menu.html.haml
|
|
@@ -618,11 +623,13 @@ files:
|
|
|
618
623
|
- app/views/para/admin/resources/_imports_menu.html.haml
|
|
619
624
|
- app/views/para/admin/resources/_list.html.haml
|
|
620
625
|
- app/views/para/admin/resources/_per_page_select.html.haml
|
|
626
|
+
- app/views/para/admin/resources/_remote_nested_form.html.haml
|
|
621
627
|
- app/views/para/admin/resources/_subclassable_add_button.html.haml
|
|
622
628
|
- app/views/para/admin/resources/_table.html.haml
|
|
623
629
|
- app/views/para/admin/resources/_tree.html.haml
|
|
624
630
|
- app/views/para/admin/resources/_tree_item.html.haml
|
|
625
631
|
- app/views/para/admin/resources/edit.html.haml
|
|
632
|
+
- app/views/para/admin/resources/history/_index.html.haml
|
|
626
633
|
- app/views/para/admin/resources/new.html.haml
|
|
627
634
|
- app/views/para/admin/search/_result.html.haml
|
|
628
635
|
- app/views/para/admin/search/index.html.haml
|
|
@@ -715,6 +722,7 @@ files:
|
|
|
715
722
|
- lib/para/cloneable.rb
|
|
716
723
|
- lib/para/component.rb
|
|
717
724
|
- lib/para/component/exportable.rb
|
|
725
|
+
- lib/para/component/history.rb
|
|
718
726
|
- lib/para/component/importable.rb
|
|
719
727
|
- lib/para/component/subclassable.rb
|
|
720
728
|
- lib/para/components_cleaner.rb
|
|
@@ -732,6 +740,7 @@ files:
|
|
|
732
740
|
- lib/para/ext/active_job_status.rb
|
|
733
741
|
- lib/para/ext/active_record_nested_attributes.rb
|
|
734
742
|
- lib/para/ext/paperclip.rb
|
|
743
|
+
- lib/para/ext/request_iframe_xhr.rb
|
|
735
744
|
- lib/para/form_builder.rb
|
|
736
745
|
- lib/para/form_builder/attributes_mappings_tracker.rb
|
|
737
746
|
- lib/para/form_builder/containers.rb
|
|
@@ -748,14 +757,18 @@ files:
|
|
|
748
757
|
- lib/para/helpers.rb
|
|
749
758
|
- lib/para/helpers/attributes_mappings.rb
|
|
750
759
|
- lib/para/helpers/resource_name.rb
|
|
760
|
+
- lib/para/iframe_transport.rb
|
|
761
|
+
- lib/para/iframe_transport/middleware.rb
|
|
751
762
|
- lib/para/importer.rb
|
|
752
763
|
- lib/para/importer/base.rb
|
|
753
764
|
- lib/para/inputs.rb
|
|
754
765
|
- lib/para/inputs/multi_select_input.rb
|
|
766
|
+
- lib/para/inputs/nested_base_input.rb
|
|
755
767
|
- lib/para/inputs/nested_many_input.rb
|
|
756
768
|
- lib/para/inputs/nested_one_input.rb
|
|
757
769
|
- lib/para/job.rb
|
|
758
770
|
- lib/para/job/base.rb
|
|
771
|
+
- lib/para/log_config.rb
|
|
759
772
|
- lib/para/logging.rb
|
|
760
773
|
- lib/para/logging/active_job_log_subscriber.rb
|
|
761
774
|
- lib/para/markup.rb
|
|
@@ -799,6 +812,7 @@ files:
|
|
|
799
812
|
- lib/tasks/para_tasks.rake
|
|
800
813
|
- vendor/assets/javascripts/html5-sortable.js
|
|
801
814
|
- vendor/assets/javascripts/jasny-bootstrap.js
|
|
815
|
+
- vendor/assets/javascripts/jquery.iframe-transport.js
|
|
802
816
|
- vendor/assets/javascripts/jquery.remote-modal-form.coffee
|
|
803
817
|
- vendor/assets/javascripts/jquery.scrollto.js
|
|
804
818
|
- vendor/assets/stylesheets/animate.css
|
|
@@ -824,7 +838,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
824
838
|
version: '0'
|
|
825
839
|
requirements: []
|
|
826
840
|
rubyforge_project:
|
|
827
|
-
rubygems_version: 2.6.
|
|
841
|
+
rubygems_version: 2.6.11
|
|
828
842
|
signing_key:
|
|
829
843
|
specification_version: 4
|
|
830
844
|
summary: Rails admin engine
|