decidim-decidim_awesome 0.6.5 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -8
  3. data/app/assets/config/decidim_admin_decidim_awesome_manifest.css +2 -2
  4. data/app/assets/config/decidim_admin_decidim_awesome_manifest.js +1 -1
  5. data/app/assets/config/decidim_decidim_awesome_manifest.css +2 -2
  6. data/app/assets/config/decidim_decidim_awesome_manifest.js +3 -2
  7. data/app/assets/config/legacy_decidim_admin_decidim_awesome_manifest.js +2 -0
  8. data/app/assets/config/legacy_decidim_decidim_awesome_manifest.js +4 -0
  9. data/app/assets/javascripts/decidim/decidim_awesome/admin/auto_edit.js.es6 +77 -0
  10. data/app/assets/javascripts/decidim/decidim_awesome/admin/codemirror.js.es6 +14 -0
  11. data/app/assets/javascripts/decidim/decidim_awesome/admin/form_builder.js.es6 +80 -0
  12. data/app/assets/javascripts/decidim/decidim_awesome/admin/legacy_form_builder.js.es6 +80 -0
  13. data/app/assets/javascripts/decidim/decidim_awesome/admin/user_picker.js.es6 +24 -0
  14. data/app/assets/javascripts/decidim/decidim_awesome/awesome_admin.js +7 -0
  15. data/app/assets/javascripts/decidim/decidim_awesome/{application.js → awesome_application.js} +1 -2
  16. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/hashtags.js.es6 +48 -0
  17. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/layers.js.es6 +107 -0
  18. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/load_map.js.es6 +15 -0
  19. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/map.js.es6 +170 -178
  20. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/markers.js.es6 +56 -0
  21. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/meetings.js.es6 +7 -6
  22. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/proposals.js.es6 +18 -5
  23. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/utilities.js.es6 +57 -0
  24. data/app/assets/javascripts/decidim/decidim_awesome/editors/legacy_quill_editor.js.es6 +172 -0
  25. data/app/assets/javascripts/decidim/decidim_awesome/editors/quill_editor.js.es6 +34 -9
  26. data/app/assets/javascripts/decidim/decidim_awesome/editors/tabs_focus.js.es6 +24 -0
  27. data/app/assets/javascripts/decidim/decidim_awesome/forms/custom_fields_builder.js.es6 +211 -0
  28. data/app/assets/javascripts/decidim/decidim_awesome/forms/rich_text_plugin.js.es6 +106 -0
  29. data/app/assets/javascripts/decidim/decidim_awesome/legacy_admin.js +7 -0
  30. data/app/assets/javascripts/decidim/decidim_awesome/legacy_application.js +3 -0
  31. data/app/assets/javascripts/decidim/decidim_awesome/proposals/custom_fields.js.es6 +21 -0
  32. data/app/assets/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +15 -0
  33. data/app/assets/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +27 -0
  34. data/app/assets/stylesheets/decidim/decidim_awesome/admin/constraints.scss +12 -0
  35. data/app/assets/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +66 -0
  36. data/app/assets/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +35 -0
  37. data/app/assets/stylesheets/decidim/decidim_awesome/{admin.scss → awesome_admin.scss} +19 -4
  38. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_application.scss +22 -0
  39. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/leaflet.scss.erb +9 -0
  40. data/app/assets/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +95 -1
  41. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +1 -1
  42. data/app/assets/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +16 -1
  43. data/app/awesome_overrides/forms/decidim/proposals/proposal_wizard_create_step_form_override.rb +28 -0
  44. data/app/awesome_overrides/presenters/decidim/menu_presenter_override.rb +11 -3
  45. data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +74 -0
  46. data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +54 -0
  47. data/app/cells/decidim/decidim_awesome/content_blocks/map_form/show.erb +61 -0
  48. data/app/cells/decidim/decidim_awesome/content_blocks/map_form_cell.rb +19 -0
  49. data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +32 -0
  50. data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +45 -0
  51. data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +38 -0
  52. data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +4 -0
  53. data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +40 -0
  54. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +40 -0
  55. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +1 -1
  56. data/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +58 -0
  57. data/app/commands/decidim/decidim_awesome/admin/update_config.rb +5 -1
  58. data/app/controllers/concerns/decidim/decidim_awesome/admin_not_found_redirect.rb +39 -0
  59. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +1 -1
  60. data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +33 -20
  61. data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +4 -0
  62. data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +2 -2
  63. data/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +38 -0
  64. data/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +38 -0
  65. data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +38 -0
  66. data/app/controllers/decidim/decidim_awesome/map_component/map_controller.rb +1 -4
  67. data/app/forms/decidim/decidim_awesome/admin/config_form.rb +50 -0
  68. data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +3 -1
  69. data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +11 -7
  70. data/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +48 -0
  71. data/app/helpers/decidim/decidim_awesome/map_helper.rb +66 -53
  72. data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +78 -0
  73. data/app/middleware/decidim/decidim_awesome/current_config.rb +182 -0
  74. data/app/models/decidim/decidim_awesome/awesome_config.rb +15 -0
  75. data/app/models/decidim/decidim_awesome/user_override.rb +25 -0
  76. data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +2 -0
  77. data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +0 -5
  78. data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +2 -2
  79. data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +7 -0
  80. data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +2 -2
  81. data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +21 -0
  82. data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +0 -3
  83. data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +25 -0
  84. data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +0 -2
  85. data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +4 -6
  86. data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +1 -2
  87. data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +4 -0
  88. data/app/views/decidim/decidim_awesome/custom_fields/_form_render.html.erb +6 -0
  89. data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +3 -32
  90. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +101 -0
  91. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +83 -0
  92. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -0
  93. data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +25 -11
  94. data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +8 -1
  95. data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
  96. data/app/views/v0.23/decidim/proposals/collaborative_drafts/_show.html.erb +134 -0
  97. data/app/views/v0.23/layouts/decidim/_head.html.erb +2 -2
  98. data/app/views/v0.23/layouts/decidim/admin/_header.html.erb +2 -2
  99. data/app/views/v0.24/decidim/proposals/collaborative_drafts/_show.html.erb +128 -0
  100. data/app/views/{v0.22 → v0.24}/layouts/decidim/_head.html.erb +4 -2
  101. data/app/views/{v0.22 → v0.24}/layouts/decidim/admin/_header.html.erb +3 -2
  102. data/config/locales/ca.yml +75 -3
  103. data/config/locales/cs.yml +75 -3
  104. data/config/locales/en.yml +104 -11
  105. data/config/locales/es.yml +74 -2
  106. data/config/locales/eu.yml +76 -4
  107. data/config/locales/fr.yml +214 -142
  108. data/config/locales/it.yml +284 -0
  109. data/config/locales/ja.yml +284 -0
  110. data/config/locales/nl.yml +208 -136
  111. data/config/locales/sv.yml +109 -37
  112. data/db/migrate/20210628150825_change_awesome_config_var_type.rb +12 -0
  113. data/lib/decidim/decidim_awesome/admin_engine.rb +16 -4
  114. data/lib/decidim/decidim_awesome/awesome_helpers.rb +17 -10
  115. data/lib/decidim/decidim_awesome/checksums.yml +19 -9
  116. data/lib/decidim/decidim_awesome/config.rb +54 -9
  117. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +27 -21
  118. data/lib/decidim/decidim_awesome/custom_fields.rb +94 -0
  119. data/lib/decidim/decidim_awesome/engine.rb +64 -8
  120. data/lib/decidim/decidim_awesome/iframe_component/component.rb +1 -1
  121. data/lib/decidim/decidim_awesome/map_component/component.rb +8 -2
  122. data/lib/decidim/decidim_awesome/menu_hacker.rb +17 -15
  123. data/lib/decidim/decidim_awesome/system_checker.rb +1 -1
  124. data/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb +116 -0
  125. data/lib/decidim/decidim_awesome/test/shared_examples/current_config_examples.rb +143 -0
  126. data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +4 -0
  127. data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +428 -0
  128. data/lib/decidim/decidim_awesome/version.rb +2 -2
  129. data/lib/decidim/decidim_awesome.rb +41 -8
  130. data/vendor/assets/javascripts/codemirror.js +9801 -0
  131. data/vendor/assets/javascripts/delta.min.js +405 -0
  132. data/vendor/assets/javascripts/delta.min.js.map +1 -0
  133. data/vendor/assets/javascripts/europa.min.js +4 -0
  134. data/vendor/assets/javascripts/form-builder.min.js +19 -0
  135. data/vendor/assets/javascripts/form-render.min.js +19 -0
  136. data/vendor/assets/javascripts/inscrybmde.min.js +1 -1
  137. data/vendor/assets/javascripts/jquery-ui.min.js +13 -0
  138. data/vendor/assets/javascripts/jquery.truncate.js +105 -0
  139. data/vendor/assets/javascripts/keymap/sublime.js +720 -0
  140. data/vendor/assets/javascripts/mode/css/css.js +864 -0
  141. data/vendor/assets/javascripts/select2.js +6147 -0
  142. data/vendor/assets/langs/en-US.lang +110 -0
  143. data/vendor/assets/stylesheets/codemirror.css +350 -0
  144. data/vendor/assets/stylesheets/inscrybmde.min.scss +194 -0
  145. data/vendor/assets/stylesheets/jquery-ui.min.css +7 -0
  146. data/vendor/assets/stylesheets/select2-foundation-theme.css +249 -0
  147. data/vendor/assets/stylesheets/select2.css +515 -0
  148. metadata +101 -34
  149. data/app/assets/images/decidim/decidim_awesome/loading.gif +0 -0
  150. data/app/assets/javascripts/decidim/decidim_awesome/admin.js +0 -2
  151. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_map.js.es6 +0 -225
  152. data/app/assets/javascripts/decidim/decidim_awesome/awesome_map/legacy_proposals.js.es6 +0 -82
  153. data/app/assets/javascripts/decidim/decidim_awesome/editors/markdown_view.js.es6 +0 -12
  154. data/app/assets/stylesheets/decidim/decidim_awesome/application.scss +0 -8
  155. data/app/assets/stylesheets/decidim/decidim_awesome/editors/markdown_view.scss +0 -27
  156. data/app/awesome_overrides/presenters/decidim/proposals/proposal_presenter_override.rb +0 -64
  157. data/lib/decidim/decidim_awesome/content_renderers/markdown_renderer.rb +0 -18
  158. data/lib/decidim/decidim_awesome/content_renderers.rb +0 -9
  159. data/vendor/assets/stylesheets/inscrybmde.min.css +0 -8
@@ -8,13 +8,10 @@
8
8
  <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: key, constraints: constraints_for(key) }) %>
9
9
  <% end %>
10
10
 
11
- <h2 class="card-title"><%= t("experimental", scope: "decidim.decidim_awesome.admin.config") %></h2>
12
-
13
11
  <% enabled_configs([:use_markdown_editor, :allow_images_in_markdown_editor]).each do |key| %>
14
12
  <%= form.check_box key %>
15
13
  <p class="help-text"><%= t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %></p>
16
14
 
17
15
  <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: key, constraints: constraints_for(key) }) %>
18
16
  <% end %>
19
-
20
17
  </div>
@@ -0,0 +1,25 @@
1
+ <div class="callout warning"><%= t("caution", scope: "decidim.decidim_awesome.admin.config") %></div>
2
+ <div class="row column decidim_awesome-form">
3
+ <% if config_enabled? :proposal_custom_fields %>
4
+ <p class="help-text"><%= t("help.proposal_custom_fields", scope: "decidim.decidim_awesome.admin.config.form") %></p>
5
+ <p class="help-text"><%= t("help.proposal_custom_fields_example", scope: "decidim.decidim_awesome.admin.config.form") %></p>
6
+ <p class="help-text"><%= t("help.proposal_custom_fields_translations", scope: "decidim.decidim_awesome.admin.config.form") %></p>
7
+
8
+ <% form.object.proposal_custom_fields&.each do |key, value| %>
9
+ <div class="proposal_custom_fields_container" data-key="<%= key %>">
10
+ <%= render(partial: "decidim/decidim_awesome/admin/config/autoedit_box_label", locals: { var: "proposal_custom_fields", key: key, scope: "proposal_custom_field_#{key}", delete_path: decidim_admin_decidim_awesome.proposal_custom_field_path(key: key) }) %>
11
+ <p class="form-error is-visible"><%= errors[key.to_sym].join("<br>") if errors %></p>
12
+ <%= hidden_field_tag key, value, name: "config[proposal_custom_fields][#{key}]" %>
13
+ <div class="proposal_custom_fields_editor">
14
+ <div class="loading-spinner"></div>
15
+ </div>
16
+ <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: "proposal_custom_field_#{key}", constraints: constraints_for("proposal_custom_field_#{key}") }) %>
17
+ </div>
18
+ <% end %>
19
+
20
+ <%= link_to t(".new"), decidim_admin_decidim_awesome.proposal_custom_fields_path, method: :post %>
21
+
22
+ <% end %>
23
+ </div>
24
+
25
+ <%= javascript_include_tag "decidim/decidim_awesome/admin/form_exit_warn" %>
@@ -1,6 +1,4 @@
1
1
  <div class="row column decidim_awesome-form">
2
- <h2 class="card-title"><%= t("experimental", scope: "decidim.decidim_awesome.admin.config") %></h2>
3
-
4
2
  <% if config_enabled? :allow_images_in_proposals %>
5
3
  <p class="text-info"><%= t("rich_text_editor_in_public_views", scope: "decidim.decidim_awesome.admin.config") if current_organization.rich_text_editor_in_public_views %></p>
6
4
 
@@ -9,17 +9,15 @@
9
9
  </p>
10
10
 
11
11
  <% form.object.scoped_styles&.each do |key, value| %>
12
- <div class="scoped-style" data-key="<%= key %>">
13
- <%= label_tag :scoped_styles do %>
14
- <%= t("config.scoped_styles", scope: "activemodel.attributes", id: key) %>
15
- <%= link_to t(".remove"), decidim_admin_decidim_awesome.destroy_scoped_style_path(key: key), method: :post, class: "float-right", data: { confirm: t(".sure_to_remove") } %>
16
- <% end %>
12
+ <div class="scoped_styles_container" data-key="<%= key %>">
13
+ <%= render(partial: "decidim/decidim_awesome/admin/config/autoedit_box_label", locals: { var: "scoped_styles", key: key, scope: "scoped_style_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_style_path(key: key) }) %>
14
+ <p class="form-error is-visible" id="custom-style-error-<%= key %>"><%= errors[key.to_sym].join("<br>") if errors %></p>
17
15
  <%= text_area_tag key, value, name: "config[scoped_styles][#{key}]", rows: 5 %>
18
16
  <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: "scoped_style_#{key}", constraints: constraints_for("scoped_style_#{key}") }) %>
19
17
  </div>
20
18
  <% end %>
21
19
 
22
- <%= link_to t(".new"), decidim_admin_decidim_awesome.new_scoped_style_path, method: :post %>
20
+ <%= link_to t("new", scope: "decidim.decidim_awesome.admin.config.form_scoped_styles"), decidim_admin_decidim_awesome.scoped_styles_path, method: :post %>
23
21
 
24
22
  <% end %>
25
23
  </div>
@@ -4,12 +4,11 @@
4
4
  <h2 class="card-title"><%= t(".title", setting: params[:var]) %></h2>
5
5
  </div>
6
6
  <div class="card-section">
7
- <%= render partial: "form_#{params[:var]}", locals: { form: f } %>
7
+ <%= render partial: "form_#{params[:var]}", locals: { form: f, errors: defined?(errors) ? errors : nil } %>
8
8
  </div>
9
9
  </div>
10
10
  <div class="button--double form-general-submit">
11
11
  <%= f.submit t(".update") %>
12
12
  </div>
13
13
  <% end %>
14
-
15
14
  <%= render partial: "modal" %>
@@ -0,0 +1,4 @@
1
+ <%= admin_editor_for_proposal_body(form) %>
2
+ <div class="proposal_custom_field">
3
+ <div class="loading-spinner"></div>
4
+ </div>
@@ -0,0 +1,6 @@
1
+ <div class="proposal_custom_field" id="proposa-custom-field-<%= name %>" data-spec="<%= spec.to_json %>" data-name="<%= "#{form.object_name}[#{name}]" %>">
2
+ <div class="loading-spinner"></div>
3
+ </div>
4
+
5
+ <%= form.hidden_field name %>
6
+ <%= form.error_for name %>
@@ -2,33 +2,11 @@
2
2
 
3
3
  <%= awesome_map_for map_components do %>
4
4
 
5
- <script id="legacy-marker-proposal-popup" type="text/x-jsrender">
6
- <div class="map-info__content">
7
- <h3>{{>title}}</h3>
8
- <div id="bodyContent">
9
- <p>{{:body}}</p>
10
- <div class="map__date-adress">
11
- <div class="address card__extra">
12
- <div class="address__icon">{{:icon}}</div>
13
- <div class="address__details">
14
- <span>{{>address}}</span><br>
15
- </div>
16
- </div>
17
- </div>
18
- <div class="map-info__button">
19
- <a href="{{>link}}" class="button button--sc">
20
- <%= t(".view_proposal") %>
21
- </a>
22
- </div>
23
- </div>
24
- </div>
25
- </script>
26
-
27
5
  <script id="marker-proposal-popup" type="text/x-jsrender">
28
6
  <div class="map-info__content">
29
7
  <h3>{{>title.translation}}</h3>
30
8
  <div id="bodyContent">
31
- <p>{{:body.translation}}</p>
9
+ <div class="description">{{:body.translation}}</div>
32
10
  <div class="map__date-adress">
33
11
  <div class="address card__extra">
34
12
  <div class="address__icon">{{:icon}}</div>
@@ -50,7 +28,7 @@
50
28
  <div class="map-info__content">
51
29
  <h3>{{>title.translation}}</h3>
52
30
  <div id="bodyContent">
53
- <p>{{:description.translation}}</p>
31
+ <div class="description">{{:description.translation}}</div>
54
32
  <div class="map__date-adress">
55
33
  <div class="card__datetime">
56
34
  <div class="card__datetime__date">
@@ -76,15 +54,13 @@
76
54
  </div>
77
55
  </script>
78
56
 
79
- <%= stylesheet_link_tag "decidim/decidim_awesome/awesome_map/map" %>
80
57
  <style type="text/css">
81
- #map {
58
+ #map, .wrapper #map {
82
59
  height: <%= current_component.settings.map_height %>px;
83
60
  }
84
61
  <% current_categories.each do |category| %>
85
62
  .awesome_map-category_<%= category[:id] %> {
86
63
  background-color: <%= category[:color] %> !important;
87
- margin-left: <%= category[:parent] ? "1" : "0" %>em;
88
64
  }
89
65
  <% end %>
90
66
  </style>
@@ -92,9 +68,4 @@
92
68
  window.AwesomeMap = window.AwesomeMap || {};
93
69
  window.AwesomeMap.categories = <%= current_categories.to_json.html_safe %>;
94
70
  </script>
95
- <% if version_prefix == "v0.23" %>
96
- <%= javascript_include_tag "decidim/decidim_awesome/awesome_map/map" %>
97
- <% else %>
98
- <%= javascript_include_tag "decidim/decidim_awesome/awesome_map/legacy_map" %>
99
- <% end %>
100
71
  <% end %>
@@ -0,0 +1,101 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= title %></h2>
4
+ </div>
5
+
6
+ <div class="card-section">
7
+ <div class="row column hashtags__container">
8
+ <%= form.translated :text_field, :title, autofocus: true, class: "js-hashtags", hashtaggable: true %>
9
+ </div>
10
+
11
+ <div class="row column hashtags__container">
12
+ <%= render partial: "decidim/decidim_awesome/admin/proposals/editor", locals: { form: form } %>
13
+ </div>
14
+
15
+ <% if @form.component_automatic_hashtags.any? %>
16
+ <div class="field">
17
+ <%= form.label :automatic_hashtags %>
18
+ <div class="checkboxes hashtags">
19
+ <% @form.component_automatic_hashtags.each do |hashtag| %>
20
+ <label>
21
+ <%= check_box_tag "", "", { checked: true }, { disabled: true } %>#<%= hashtag %>
22
+ </label>
23
+ <% end %>
24
+ </div>
25
+ </div>
26
+ <% end %>
27
+
28
+ <% if @form.component_suggested_hashtags.any? %>
29
+ <div class="field">
30
+ <%= form.label :suggested_hashtags %>
31
+ <div class="checkboxes hashtags">
32
+ <%= form.collection_check_boxes :suggested_hashtags, @form.component_suggested_hashtags.map {|hashtag| [hashtag.downcase, "##{hashtag}"]}, :first, :last do |option|
33
+ option.label { option.check_box(checked: @form.suggested_hashtag_checked?(option.value)) + option.text }
34
+ end %>
35
+ </div>
36
+ </div>
37
+ <% end %>
38
+
39
+ <% if @form.meetings %>
40
+ <div class="meeting-fields">
41
+ <div class="row column">
42
+ <%= form.check_box :created_in_meeting, label: t(".created_in_meeting") %>
43
+ </div>
44
+
45
+ <div class="row column" id="proposal_meeting">
46
+ <%= form.select :meeting_id,
47
+ options_for_select(@form.meetings&.map { |meeting| [present(meeting).title, meeting.id] }, selected: meetings_as_authors_selected ),
48
+ { include_blank: true, label: t(".select_a_meeting") },
49
+ { multiple: false, class: "chosen-select" } %>
50
+ </div>
51
+ </div>
52
+ <% end %>
53
+
54
+ <% if @form.geocoding_enabled? %>
55
+ <div class="row column">
56
+ <%= form.geocoding_field :address %>
57
+ </div>
58
+ <% end %>
59
+
60
+ <% if @form.categories&.any? %>
61
+ <div class="row column">
62
+ <%= form.categories_select :category_id, @form.categories, include_blank: t(".select_a_category") %>
63
+ </div>
64
+ <% end %>
65
+
66
+ <% if current_component.has_subscopes? %>
67
+ <div class="row column">
68
+ <%= scopes_picker_field form, :scope_id, root: current_component.scope %>
69
+ </div>
70
+ <% end %>
71
+
72
+ <% if component_settings.attachments_allowed? %>
73
+ <%= render partial: "decidim/admin/shared/gallery", locals: { form: form } %>
74
+ <% end %>
75
+
76
+ <% if component_settings.attachments_allowed? %>
77
+ <div class="row column">
78
+ <fieldset>
79
+ <legend><%= t(".attachment_legend") %></legend>
80
+ <%= form.fields_for :attachment, @form.attachment do |form| %>
81
+ <div class="row column">
82
+ <%= form.text_field :title %>
83
+ </div>
84
+
85
+ <div class="row column">
86
+ <%= form.upload :file, optional: false %>
87
+ <% if params[:id].present? %>
88
+ <% if proposal.documents.present? %>
89
+ <%= form.hidden_field :id, value: proposal.documents.first.id %>
90
+ <%= form.check_box :delete_file, label: t(".delete_attachment"), value: proposal.documents.first.id %>
91
+ <% end %>
92
+ <% end %>
93
+ </div>
94
+ <% end %>
95
+ </fieldset>
96
+ </div>
97
+ <% end %>
98
+ </div>
99
+ </div>
100
+
101
+ <%= javascript_include_tag "decidim/proposals/admin/proposals_form" %>
@@ -0,0 +1,83 @@
1
+ <%= form_required_explanation %>
2
+
3
+ <div class="field hashtags__container">
4
+ <%= form.text_field :title, class: "js-hashtags", value: form_presenter.title %>
5
+ </div>
6
+
7
+ <div class="field hashtags__container">
8
+ <%= text_editor_for_proposal_body(form) %>
9
+ </div>
10
+
11
+ <% if @form.component_automatic_hashtags.any? %>
12
+ <div class="field">
13
+ <%= form.label :automatic_hashtags %>
14
+ <div class="checkboxes hashtags">
15
+ <% @form.component_automatic_hashtags.each do |hashtag| %>
16
+ <label>
17
+ <%= check_box_tag "", "", { checked: true }, { disabled: true } %>#<%= hashtag %>
18
+ </label>
19
+ <% end %>
20
+ </div>
21
+ </div>
22
+ <% end %>
23
+
24
+ <% if @form.component_suggested_hashtags.any? %>
25
+ <div class="field">
26
+ <%= form.label :suggested_hashtags, nil, for: nil %>
27
+ <div class="checkboxes hashtags">
28
+ <%= form.collection_check_boxes :suggested_hashtags, @form.component_suggested_hashtags.map {|hashtag| [hashtag.downcase, "##{hashtag}"]}, :first, :last do |option|
29
+ option.label { option.check_box(checked: @form.suggested_hashtag_checked?(option.value)) + option.text }
30
+ end %>
31
+ </div>
32
+ </div>
33
+ <% end %>
34
+
35
+ <% if @form.geocoding_enabled? %>
36
+ <div class="field">
37
+ <%= form.check_box :has_address, checked: form_has_address? %>
38
+ </div>
39
+
40
+ <div class="field" id="address_input">
41
+ <%= form.geocoding_field :address %>
42
+ </div>
43
+ <% end %>
44
+
45
+ <% if @form.categories&.any? %>
46
+ <div class="field">
47
+ <%= form.categories_select :category_id, @form.categories, include_blank: t("decidim.proposals.collaborative_drafts.edit.select_a_category") %>
48
+ </div>
49
+ <% end %>
50
+
51
+ <% if current_component.has_subscopes? %>
52
+ <div class="field">
53
+ <%= scopes_picker_field form, :scope_id, root: current_component.scope %>
54
+ </div>
55
+ <% end %>
56
+
57
+ <% if current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? %>
58
+ <div class="field">
59
+ <%= user_group_select_field form, :user_group_id %>
60
+ </div>
61
+ <% end %>
62
+
63
+ <% if component_settings.attachments_allowed? %>
64
+ <fieldset>
65
+ <legend><%= t("attachment_legend", scope: "decidim.proposals.collaborative_drafts.edit") %></legend>
66
+ <%= form.fields_for :attachment, @form.attachment do |nested_form| %>
67
+ <div class="field">
68
+ <%= nested_form.text_field :title %>
69
+ </div>
70
+
71
+ <div class="field">
72
+ <%= nested_form.upload :file, optional: false %>
73
+ <% if @form.errors[:attachment].present? %>
74
+ <% @form.errors[:attachment].each do |message| %>
75
+ <small class="form-error is-visible">
76
+ <%= message %>
77
+ </small>
78
+ <% end %>
79
+ <% end %>
80
+ </div>
81
+ <% end %>
82
+ </fieldset>
83
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render partial: "#{version_prefix}/decidim/proposals/collaborative_drafts/show" %>
@@ -1,3 +1,7 @@
1
+ <% def icon_aria_selected_link_to(text, link, icon_name, options = {})
2
+ aria_selected_link_to(safe_join([icon(icon_name), text]), link, options)
3
+ end %>
4
+
1
5
  <% content_for :secondary_nav do %>
2
6
  <div class="secondary-nav">
3
7
  <div class="secondary-nav__title">
@@ -8,36 +12,46 @@
8
12
  <% if config_enabled?([:allow_images_in_full_editor, :allow_images_in_small_editor, :use_markdown_editor,
9
13
  :allow_images_in_markdown_editor]) %>
10
14
  <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:editors)) %> class="is-active" <% end %>>
11
- <%= aria_selected_link_to I18n.t("menu.editors", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:editors) %>
15
+ <%= icon_aria_selected_link_to I18n.t("menu.editors", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:editors), "text" %>
16
+ </li>
17
+ <% end %>
18
+ <% if config_enabled? :allow_images_in_proposals %>
19
+ <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:proposals)) %> class="is-active" <% end %>>
20
+ <%= icon_aria_selected_link_to I18n.t("menu.proposals", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:proposals), "document" %>
12
21
  </li>
13
22
  <% end %>
14
23
  <% if config_enabled? :auto_save_forms %>
15
24
  <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:surveys)) %> class="is-active" <% end %>>
16
- <%= aria_selected_link_to I18n.t("menu.surveys", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:surveys) %>
25
+ <%= icon_aria_selected_link_to I18n.t("menu.surveys", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:surveys), "spreadsheet" %>
17
26
  </li>
18
27
  <% end %>
19
28
  <% if config_enabled? :scoped_styles %>
20
29
  <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:styles)) %> class="is-active" <% end %>>
21
- <%= aria_selected_link_to I18n.t("menu.styles", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:styles) %>
30
+ <%= icon_aria_selected_link_to I18n.t("menu.styles", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:styles), "brush" %>
22
31
  </li>
23
32
  <% end %>
24
- <% if config_enabled? :allow_images_in_proposals %>
25
- <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:proposals)) %> class="is-active" <% end %>>
26
- <%= aria_selected_link_to I18n.t("menu.proposals", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:proposals) %>
33
+ <% if config_enabled? :proposal_custom_fields %>
34
+ <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:proposal_custom_fields)) %> class="is-active" <% end %>>
35
+ <%= icon_aria_selected_link_to I18n.t("menu.proposal_custom_fields", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:proposal_custom_fields), "layers" %>
27
36
  </li>
28
37
  <% end %>
29
- <% if config_enabled?([:intergram_for_admins, :intergram_for_public]) %>
30
- <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:livechat)) %> class="is-active" <% end %>>
31
- <%= aria_selected_link_to I18n.t("menu.livechat", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:livechat) %>
38
+ <% if config_enabled? :scoped_admins %>
39
+ <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:admins)) %> class="is-active" <% end %>>
40
+ <%= icon_aria_selected_link_to I18n.t("menu.admins", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:admins), "people" %>
32
41
  </li>
33
42
  <% end %>
34
43
  <% if config_enabled? :menu %>
35
44
  <li <% if is_active_link?(decidim_admin_decidim_awesome.menu_hacks_path) %> class="is-active" <% end %>>
36
- <%= aria_selected_link_to I18n.t("menu.menu_hacks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.menu_hacks_path %>
45
+ <%= icon_aria_selected_link_to I18n.t("menu.menu_hacks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.menu_hacks_path, "menu" %>
46
+ </li>
47
+ <% end %>
48
+ <% if config_enabled?([:intergram_for_admins, :intergram_for_public]) %>
49
+ <li <% if is_active_link?(decidim_admin_decidim_awesome.config_path(:livechat)) %> class="is-active" <% end %>>
50
+ <%= icon_aria_selected_link_to I18n.t("menu.livechat", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:livechat), "chat" %>
37
51
  </li>
38
52
  <% end %>
39
53
  <li <% if is_active_link?(decidim_admin_decidim_awesome.checks_path) %> class="is-active" <% end %>>
40
- <%= aria_selected_link_to I18n.t("menu.checks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.checks_path %>
54
+ <%= icon_aria_selected_link_to I18n.t("menu.checks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.checks_path, "pulse" %>
41
55
  </li>
42
56
  </ul>
43
57
  </div>
@@ -1,15 +1,20 @@
1
1
  <script>
2
2
  window.DecidimAwesome = <%= javascript_config_vars %>;
3
+ window.DecidimAwesome.version = "<%= Decidim::DecidimAwesome::VERSION %>";
3
4
  window.DecidimAwesome.editor_uploader_path = "<%= decidim_decidim_awesome.editor_images_path %>";
5
+ window.DecidimAwesome.rename_scope_label_path = "<%= decidim_admin_decidim_awesome.rename_scope_label_path %>";
4
6
  window.DecidimAwesome.texts = {
5
7
  "drag_and_drop_image": "<%= j t(".drag_and_drop_image") %>",
6
8
  "autosaved_success": "<%= j t(".autosaved_success") %>",
7
9
  "autosaved_error": "<%= j t(".autosaved_error") %>",
8
10
  "autosaved_retrieved": "<%= j t(".autosaved_retrieved") %>",
9
11
  "categories": "<%= j t(".categories") %>",
12
+ "hashtags": "<%= j t(".hashtags") %>",
10
13
  "proposals": "<%= j t(".proposals") %>",
11
14
  "meetings": "<%= j t(".meetings") %>",
12
- "amendments": "<%= j t(".amendments") %>"
15
+ "amendments": "<%= j t(".amendments") %>",
16
+ "items": "<%= j t(".items") %>",
17
+ "select_deselect_all": "<%= j t(".select_deselect_all") %>"
13
18
  }
14
19
  <% if defined? questionnaire %>
15
20
  window.DecidimAwesome.current_questionnaire = "edit_questionnaire_<%= questionnaire.id %>";
@@ -18,3 +23,5 @@ window.DecidimAwesome.texts = {
18
23
  <% end %>
19
24
  <% end %>
20
25
  </script>
26
+
27
+ <%= javascript_include_tag "decidim/decidim_awesome/proposals/custom_fields" if awesome_proposal_custom_fields %>
@@ -1,3 +1,3 @@
1
1
  <style media="all">
2
- <%= awesome_custom_styles %>
2
+ <%== awesome_custom_styles.join("\n").html_safe %>
3
3
  </style>
@@ -0,0 +1,134 @@
1
+ <% add_decidim_page_title(Decidim::Proposals::CollaborativeDraft.model_name.human(count: 2)) %>
2
+ <% add_decidim_meta_tags({
3
+ description: present(@collaborative_draft).body,
4
+ title: present(@collaborative_draft).title,
5
+ url: collaborative_draft_url(@collaborative_draft.id)
6
+ }) %>
7
+
8
+ <% if current_user.nil? || allowed_to?(:request_access, :collaborative_draft, collaborative_draft: @collaborative_draft) %>
9
+ <div class="row">
10
+ <div class="columns">
11
+ <div class="callout secondary"><%= t("info-message", scope:"decidim.proposals.collaborative_drafts.show").html_safe %></div>
12
+ </div>
13
+ </div>
14
+ <% end %>
15
+
16
+ <div class="row column view-header">
17
+ <div class="m-bottom">
18
+ <%= link_to collaborative_drafts_path do %>
19
+ <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
20
+ <%= t("back", scope:"decidim.proposals.collaborative_drafts.show") %>
21
+ <% end %>
22
+ </div>
23
+
24
+ <h2 class="heading2">
25
+ <%= present(@collaborative_draft).title(links: true, html_escape: true) %>
26
+ </h2>
27
+
28
+ <%= cell("decidim/coauthorships", @collaborative_draft, has_actions: true, size: 3, context: { current_user: current_user }) %>
29
+ </div>
30
+
31
+ <div class="row">
32
+ <div class="columns mediumlarge-8 large-9">
33
+ <div class="section">
34
+ <%== cell("decidim/proposals/collaborative_draft_m", @collaborative_draft, full_badge: true).badge %>
35
+
36
+ <%= render_proposal_body(@collaborative_draft) %>
37
+
38
+ <% if component_settings.geocoding_enabled? %>
39
+ <%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @collaborative_draft } %>
40
+ <% end %>
41
+
42
+ <%= cell "decidim/tags", @collaborative_draft, context: { extra_classes: ["tags--collaborative-draft"] } %>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="columns section view-side mediumlarge-4 large-3">
47
+ <% if allowed_to?(:publish, :collaborative_draft, collaborative_draft: @collaborative_draft) %>
48
+ <div class="card text-center" id="collaborative_draft_publish">
49
+ <div class="card__content">
50
+ <%= cell "decidim/proposals/irreversible_action_modal", @collaborative_draft, action: :publish %>
51
+ <div class="text-small">
52
+ <%= t("publish_info", scope:"decidim.proposals.collaborative_drafts.show") %>
53
+ <%= cell "decidim/proposals/irreversible_action_modal", @collaborative_draft, action: :withdraw %>
54
+ </div>
55
+ </div>
56
+ </div>
57
+ <% end %>
58
+
59
+ <div class="card text-center">
60
+ <div class="card__content">
61
+ <% if @collaborative_draft.published? %>
62
+ <%= cell "decidim/proposals/collaborative_draft_link_to_proposal", @collaborative_draft %>
63
+ <% else %>
64
+ <div>
65
+ <%= resource_version_number(@collaborative_draft.versions_count, "text-large") %>
66
+ <div class="text-medium">
67
+ <%= resource_version_of(@collaborative_draft.versions_count) %>
68
+ </div>
69
+ </div>
70
+
71
+ <div>
72
+ <span class="text-medium">
73
+ <%= link_to_other_resource_versions(collaborative_draft_versions_path(@collaborative_draft)) %>
74
+ </span>
75
+ </div>
76
+ <% end %>
77
+
78
+ <% if allowed_to?(:edit, :collaborative_draft, collaborative_draft: @collaborative_draft) %>
79
+ <%= link_to t("edit", scope:"decidim.proposals.collaborative_drafts.show"), edit_collaborative_draft_path(@collaborative_draft), class: "button hollow expanded button--sc mt-s", id: "collaborative_draft_edit" %>
80
+ <% end %>
81
+
82
+ <%= render "request_access_form" %>
83
+
84
+ <% if @collaborative_draft.requesters.include? current_user %>
85
+ <button type="button" class="button expanded button--sc mt-s">
86
+ <%= t("requested_access", scope:"decidim.proposals.collaborative_drafts.show") %>
87
+ </button>
88
+ <% end %>
89
+ </div>
90
+
91
+ <div class="card__status">
92
+ <ul class="card-data">
93
+ <li class="card-data__item authors_status">
94
+ <%= with_tooltip t("decidim.proposals.models.collaborative_draft.fields.authors") do %>
95
+ <%= icon("people", class: "icon--small", role: "img", "aria-hidden": true) + " " + "#{@collaborative_draft.versions.group_by(&:whodunnit).size}" %>
96
+ <% end %>
97
+ </li>
98
+
99
+ <li class="card-data__item versions_status">
100
+ <%= link_to collaborative_draft_versions_path(@collaborative_draft) do %>
101
+ <%= with_tooltip t("decidim.proposals.models.collaborative_draft.fields.contributions") do %>
102
+ <%= icon("pencil", class: "icon--small", role: "img", "aria-hidden": true) + " " + "#{@collaborative_draft.versions.count}" %>
103
+ <% end %>
104
+ <% end %>
105
+ </li>
106
+ <li class="card-data__item">
107
+ <%= link_to "#comments" do %>
108
+ <%= with_tooltip t("decidim.proposals.models.collaborative_draft.fields.comments") do %>
109
+ <%= icon("comment-square", class: "icon--small", role: "img", "aria-hidden": true) + " " + "#{@collaborative_draft.comments_count}" %>
110
+ <% end %>
111
+ <% end %>
112
+ </li>
113
+ </ul>
114
+ </div>
115
+ </div>
116
+
117
+ <%= render partial: "collaborator_requests" %>
118
+
119
+ <%= resource_reference(@collaborative_draft) %>
120
+
121
+ <%= render partial: "decidim/shared/share_modal" %>
122
+ </div>
123
+ </div>
124
+
125
+ <%= attachments_for @collaborative_draft %>
126
+ <%= comments_for @collaborative_draft %>
127
+
128
+ <%=
129
+ render partial: "decidim/shared/flag_modal", locals: {
130
+ reportable: @collaborative_draft,
131
+ form: @report_form,
132
+ url: decidim.report_path(sgid: @collaborative_draft.to_sgid.to_s)
133
+ }
134
+ %>
@@ -21,7 +21,7 @@
21
21
  <%= stylesheet_link_tag "application", media: "all" %>
22
22
  <%= invisible_captcha_styles %>
23
23
 
24
- <%= stylesheet_link_tag "decidim/decidim_awesome/application", media: "all" %>
24
+ <%= stylesheet_link_tag "decidim/decidim_awesome/awesome_application", media: "all" %>
25
25
  <%= stylesheet_link_tag(tenant_stylesheets, media: "all") if tenant_stylesheets %>
26
26
  <%= render(partial: "layouts/decidim/decidim_awesome/custom_styles") if awesome_custom_styles %>
27
27
 
@@ -36,4 +36,4 @@
36
36
  <%= content_for :header_snippets %>
37
37
 
38
38
  <%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %>
39
- <%= javascript_include_tag "decidim/decidim_awesome/application" %>
39
+ <%= javascript_include_tag "decidim/decidim_awesome/legacy_application" %>
@@ -8,5 +8,5 @@
8
8
 
9
9
  <%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %>
10
10
 
11
- <%= stylesheet_link_tag "decidim/decidim_awesome/admin", media: "all" %>
12
- <%= javascript_include_tag "decidim/decidim_awesome/admin" %>
11
+ <%= stylesheet_link_tag "decidim/decidim_awesome/awesome_admin", media: "all" %>
12
+ <%= javascript_include_tag "decidim/decidim_awesome/legacy_admin" %>