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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/para/admin/tabs.coffee +20 -1
  3. data/app/assets/javascripts/para/admin.coffee +1 -0
  4. data/app/assets/javascripts/para/inputs/multi-select-input.coffee +5 -3
  5. data/app/assets/javascripts/para/inputs/nested_many.coffee +35 -1
  6. data/app/assets/javascripts/para/lib/remote-file-forms.coffee +6 -7
  7. data/app/assets/javascripts/para/lib/turbolinks-loading.coffee +1 -1
  8. data/app/assets/stylesheets/para/admin/main.sass +1 -0
  9. data/app/assets/stylesheets/para/admin/src/_affix.sass +4 -0
  10. data/app/assets/stylesheets/para/admin/src/_base.sass +4 -1
  11. data/app/assets/stylesheets/para/admin/src/_breadcrumb.sass +12 -2
  12. data/app/assets/stylesheets/para/admin/src/_form.sass +22 -3
  13. data/app/assets/stylesheets/para/admin/src/_navtabs.sass +23 -6
  14. data/app/assets/stylesheets/para/admin/src/_nested-many.sass +5 -0
  15. data/app/assets/stylesheets/para/admin/src/_nested_one.sass +6 -5
  16. data/app/controllers/para/admin/base_controller.rb +5 -0
  17. data/app/controllers/para/admin/crud_resources_controller.rb +1 -1
  18. data/app/controllers/para/admin/exports_controller.rb +2 -1
  19. data/app/controllers/para/admin/nested_forms_controller.rb +13 -0
  20. data/app/controllers/para/admin/resources_controller.rb +14 -3
  21. data/app/controllers/para/admin/search_controller.rb +7 -5
  22. data/app/decorators/para/component/base_decorator.rb +7 -2
  23. data/app/decorators/para/component/crud_decorator.rb +4 -0
  24. data/app/decorators/para/component/form_decorator.rb +6 -0
  25. data/app/exporters/call_for_projects_votes_exporter.rb +79 -0
  26. data/app/helpers/para/admin/base_helper.rb +2 -3
  27. data/app/helpers/para/admin/history_helper.rb +16 -0
  28. data/app/helpers/para/form_helper.rb +9 -1
  29. data/app/helpers/para/model_helper.rb +0 -2
  30. data/app/models/para/cache/item.rb +4 -0
  31. data/app/models/para/component/base.rb +4 -0
  32. data/app/models/para/component/crud.rb +1 -0
  33. data/app/models/para/component/form.rb +2 -0
  34. data/app/models/para/library/file.rb +40 -12
  35. data/app/models/para/page/section.rb +13 -1
  36. data/app/views/admin/para/exporter/bases/_completed.html.haml +1 -1
  37. data/app/views/layouts/para/admin.html.haml +5 -5
  38. data/app/views/para/admin/form_resources/show.html.haml +6 -2
  39. data/app/views/para/admin/nested_forms/show.html.haml +9 -0
  40. data/app/views/para/admin/resources/_exports_menu.html.haml +2 -2
  41. data/app/views/para/admin/resources/_list.html.haml +26 -21
  42. data/app/views/para/admin/resources/_remote_nested_form.html.haml +1 -0
  43. data/app/views/para/admin/resources/edit.html.haml +7 -2
  44. data/app/views/para/admin/resources/history/_index.html.haml +3 -0
  45. data/app/views/para/admin/shared/_header.html.haml +3 -3
  46. data/app/views/para/admin/shared/_navigation.html.haml +1 -1
  47. data/app/views/para/form/_tabs.html.haml +12 -9
  48. data/app/views/para/inputs/_multi_select.html.haml +6 -2
  49. data/app/views/para/inputs/_nested_many.html.haml +4 -4
  50. data/app/views/para/inputs/_nested_one.html.haml +12 -1
  51. data/app/views/para/inputs/multi_select/_no_items.html.haml +8 -4
  52. data/app/views/para/inputs/nested_many/_add.html.haml +2 -2
  53. data/app/views/para/inputs/nested_many/_add_with_subclasses.html.haml +3 -3
  54. data/app/views/para/inputs/nested_many/_container.html.haml +10 -7
  55. data/lib/generators/para/exporter/templates/csv_exporter.rb +24 -0
  56. data/lib/generators/para/exporter/templates/xls_exporter.rb +24 -0
  57. data/lib/para/attribute_field/belongs_to.rb +4 -1
  58. data/lib/para/attribute_field/nested_field.rb +4 -2
  59. data/lib/para/attribute_field/nested_many.rb +1 -1
  60. data/lib/para/attribute_field/nested_one.rb +1 -1
  61. data/lib/para/cache/database_store.rb +14 -1
  62. data/lib/para/cloneable.rb +44 -2
  63. data/lib/para/component/history.rb +15 -0
  64. data/lib/para/component.rb +1 -0
  65. data/lib/para/components_configuration.rb +8 -3
  66. data/lib/para/engine.rb +8 -0
  67. data/lib/para/exporter/base.rb +49 -1
  68. data/lib/para/ext/request_iframe_xhr.rb +17 -0
  69. data/lib/para/ext.rb +1 -0
  70. data/lib/para/form_builder/attributes_mappings_tracker.rb +15 -3
  71. data/lib/para/form_builder/containers.rb +6 -1
  72. data/lib/para/form_builder/nested_form.rb +7 -4
  73. data/lib/para/form_builder/tabs.rb +49 -8
  74. data/lib/para/iframe_transport/middleware.rb +58 -0
  75. data/lib/para/iframe_transport.rb +7 -0
  76. data/lib/para/importer/base.rb +1 -0
  77. data/lib/para/inputs/multi_select_input.rb +27 -8
  78. data/lib/para/inputs/nested_base_input.rb +26 -0
  79. data/lib/para/inputs/nested_many_input.rb +43 -18
  80. data/lib/para/inputs/nested_one_input.rb +18 -4
  81. data/lib/para/inputs.rb +1 -0
  82. data/lib/para/log_config.rb +14 -0
  83. data/lib/para/markup/resources_table.rb +2 -2
  84. data/lib/para/model_field_parsers/relations.rb +12 -1
  85. data/lib/para/page/model.rb +2 -1
  86. data/lib/para/postgres_extensions_checker.rb +15 -11
  87. data/lib/para/routes.rb +3 -3
  88. data/lib/para/search/distinct.rb +1 -1
  89. data/lib/para/version.rb +1 -1
  90. data/lib/para.rb +2 -0
  91. data/lib/rails/routing_mapper.rb +19 -27
  92. data/vendor/assets/javascripts/jquery.iframe-transport.js +260 -0
  93. data/vendor/assets/javascripts/jquery.remote-modal-form.coffee +80 -2
  94. 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
- @setElement($(modalMarkup).appendTo('body').modal())
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.1
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: 2017-06-15 00:00:00.000000000 Z
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.9'
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.9'
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.8
841
+ rubygems_version: 2.6.11
828
842
  signing_key:
829
843
  specification_version: 4
830
844
  summary: Rails admin engine