decidim-meetings 0.27.8 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +32 -0
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +21 -0
  4. data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +10 -13
  5. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +2 -2
  6. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +8 -18
  7. data/app/cells/decidim/meetings/dates_and_map/show.erb +25 -0
  8. data/app/cells/decidim/meetings/dates_and_map/static_map.erb +1 -0
  9. data/app/cells/decidim/meetings/dates_and_map_cell.rb +35 -0
  10. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +32 -30
  11. data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +76 -16
  12. data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +25 -0
  13. data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +4 -0
  14. data/app/cells/decidim/meetings/join_meeting_button/show.erb +6 -4
  15. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +3 -7
  16. data/app/cells/decidim/meetings/meeting_activity_cell.rb +1 -12
  17. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +64 -0
  18. data/app/cells/decidim/meetings/meeting_cell.rb +2 -6
  19. data/app/cells/decidim/meetings/meeting_l/image.erb +5 -0
  20. data/app/cells/decidim/meetings/meeting_l_cell.rb +33 -0
  21. data/app/cells/decidim/meetings/meeting_month/show.erb +33 -0
  22. data/app/cells/decidim/meetings/meeting_month_cell.rb +72 -0
  23. data/app/cells/decidim/meetings/meeting_s_cell.rb +5 -37
  24. data/app/cells/decidim/meetings/meetings_map/show.erb +9 -24
  25. data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
  26. data/app/cells/decidim/meetings/online_meeting_cell.rb +1 -0
  27. data/app/cells/decidim/meetings/online_meeting_link/show.erb +18 -41
  28. data/app/cells/decidim/meetings/public_participants_list/show.erb +4 -15
  29. data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -1
  30. data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
  31. data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +5 -5
  32. data/app/commands/decidim/meetings/admin/publish_meeting.rb +1 -1
  33. data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +1 -1
  34. data/app/commands/decidim/meetings/create_meeting.rb +14 -3
  35. data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
  36. data/app/commands/decidim/meetings/join_meeting.rb +5 -5
  37. data/app/commands/decidim/meetings/update_meeting.rb +13 -3
  38. data/app/controllers/concerns/decidim/meetings/component_filterable.rb +4 -4
  39. data/app/controllers/decidim/meetings/admin/agenda_controller.rb +6 -6
  40. data/app/controllers/decidim/meetings/admin/invites_controller.rb +3 -3
  41. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -4
  42. data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +3 -3
  43. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +7 -7
  44. data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +4 -4
  45. data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -6
  46. data/app/controllers/decidim/meetings/application_controller.rb +11 -0
  47. data/app/controllers/decidim/meetings/calendars_controller.rb +0 -1
  48. data/app/controllers/decidim/meetings/directory/application_controller.rb +12 -0
  49. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +5 -30
  50. data/app/controllers/decidim/meetings/live_events_controller.rb +1 -0
  51. data/app/controllers/decidim/meetings/meeting_closes_controller.rb +2 -3
  52. data/app/controllers/decidim/meetings/meetings_controller.rb +75 -7
  53. data/app/controllers/decidim/meetings/polls/answers_controller.rb +2 -2
  54. data/app/controllers/decidim/meetings/polls/questions_controller.rb +1 -1
  55. data/app/controllers/decidim/meetings/registrations_controller.rb +5 -5
  56. data/app/events/decidim/meetings/close_meeting_event.rb +1 -1
  57. data/app/events/decidim/meetings/meeting_event.rb +1 -1
  58. data/app/events/decidim/meetings/meeting_registration_notification_event.rb +3 -3
  59. data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -1
  60. data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +1 -1
  61. data/app/events/decidim/meetings/registration_code_validated_event.rb +1 -1
  62. data/app/forms/decidim/meetings/admin/meeting_form.rb +5 -1
  63. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
  64. data/app/forms/decidim/meetings/admin/validate_registration_code_form.rb +1 -1
  65. data/app/forms/decidim/meetings/base_meeting_form.rb +1 -1
  66. data/app/forms/decidim/meetings/meeting_form.rb +3 -3
  67. data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -0
  68. data/app/helpers/decidim/meetings/application_helper.rb +18 -25
  69. data/app/helpers/decidim/meetings/directory/application_helper.rb +11 -59
  70. data/app/helpers/decidim/meetings/map_helper.rb +2 -9
  71. data/app/helpers/decidim/meetings/meetings_helper.rb +6 -5
  72. data/app/jobs/decidim/meetings/hide_all_created_by_author_job.rb +13 -0
  73. data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
  74. data/app/mailers/decidim/meetings/registration_mailer.rb +1 -1
  75. data/app/models/decidim/meetings/meeting.rb +11 -32
  76. data/app/models/decidim/meetings/question.rb +1 -1
  77. data/app/packs/entrypoints/decidim_meetings.js +3 -0
  78. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg +42 -1
  79. data/app/packs/src/decidim/meetings/admin/agendas.js +3 -4
  80. data/app/packs/src/decidim/meetings/admin/registrations_form.js +12 -4
  81. data/app/packs/src/decidim/meetings/meetings_form.js +1 -1
  82. data/app/packs/src/decidim/meetings/poll.component.js +1 -28
  83. data/app/packs/stylesheets/decidim/meetings/_calendar.scss +47 -0
  84. data/app/packs/stylesheets/decidim/meetings/_item.scss +177 -0
  85. data/app/packs/stylesheets/decidim/meetings/_list.scss +58 -0
  86. data/app/packs/stylesheets/decidim/meetings/_live_event.scss +128 -0
  87. data/app/packs/stylesheets/decidim/meetings/meetings.scss +4 -0
  88. data/app/permissions/decidim/meetings/permissions.rb +15 -12
  89. data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
  90. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +6 -2
  91. data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
  92. data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
  93. data/app/presenters/decidim/meetings/log/resource_presenter.rb +18 -0
  94. data/app/presenters/decidim/meetings/meeting_presenter.rb +8 -2
  95. data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
  96. data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +7 -13
  97. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +1 -1
  98. data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -21
  99. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +12 -12
  100. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +8 -8
  101. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +1 -1
  102. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
  103. data/app/views/decidim/meetings/admin/agenda/_form.html.erb +54 -50
  104. data/app/views/decidim/meetings/admin/agenda/edit.html.erb +18 -6
  105. data/app/views/decidim/meetings/admin/agenda/new.html.erb +17 -5
  106. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +11 -2
  107. data/app/views/decidim/meetings/admin/invites/_form.html.erb +38 -28
  108. data/app/views/decidim/meetings/admin/invites/index.html.erb +77 -81
  109. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +26 -28
  110. data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +17 -5
  111. data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +17 -6
  112. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +76 -83
  113. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +14 -10
  114. data/app/views/decidim/meetings/admin/meetings/_services.html.erb +9 -5
  115. data/app/views/decidim/meetings/admin/meetings/edit.html.erb +17 -7
  116. data/app/views/decidim/meetings/admin/meetings/index.html.erb +133 -129
  117. data/app/views/decidim/meetings/admin/meetings/new.html.erb +16 -6
  118. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
  119. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
  120. data/app/views/decidim/meetings/admin/poll/_form.html.erb +17 -32
  121. data/app/views/decidim/meetings/admin/poll/_question.html.erb +81 -75
  122. data/app/views/decidim/meetings/admin/poll/edit.html.erb +28 -8
  123. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +32 -55
  124. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +59 -26
  125. data/app/views/decidim/meetings/directory/meetings/index.html.erb +15 -20
  126. data/app/views/decidim/meetings/directory/meetings/index.js.erb +1 -23
  127. data/app/views/decidim/meetings/layouts/_aside_block.html.erb +8 -0
  128. data/app/views/decidim/meetings/layouts/live_event.html.erb +20 -19
  129. data/app/views/decidim/meetings/live_events/show.html.erb +4 -5
  130. data/app/views/decidim/meetings/meeting_closes/_form.html.erb +3 -10
  131. data/app/views/decidim/meetings/meeting_closes/edit.html.erb +17 -21
  132. data/app/views/decidim/meetings/meetings/_actions.html.erb +6 -0
  133. data/app/views/decidim/meetings/meetings/_add_to_calendar_modal.html.erb +17 -0
  134. data/app/views/decidim/meetings/meetings/_form.html.erb +26 -34
  135. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +3 -22
  136. data/app/views/decidim/meetings/meetings/_meeting.html.erb +74 -0
  137. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +28 -26
  138. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +98 -0
  139. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +23 -36
  140. data/app/views/decidim/meetings/meetings/edit.html.erb +17 -21
  141. data/app/views/decidim/meetings/meetings/index.html.erb +15 -33
  142. data/app/views/decidim/meetings/meetings/index.js.erb +1 -23
  143. data/app/views/decidim/meetings/meetings/new.html.erb +17 -21
  144. data/app/views/decidim/meetings/meetings/show.html.erb +8 -167
  145. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +9 -13
  146. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -4
  147. data/app/views/decidim/meetings/polls/answers/create.js.erb +1 -1
  148. data/app/views/decidim/meetings/polls/questions/_index.html.erb +1 -1
  149. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +5 -5
  150. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +9 -11
  151. data/app/views/decidim/meetings/polls/questions/_question.html.erb +3 -3
  152. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +1 -1
  153. data/app/views/decidim/meetings/shared/_filters.html.erb +20 -0
  154. data/app/views/decidim/meetings/shared/_index.html.erb +24 -0
  155. data/app/views/decidim/meetings/shared/_index.js.erb +16 -0
  156. data/app/views/decidim/meetings/shared/_meetings.html.erb +33 -0
  157. data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +18 -0
  158. data/app/views/decidim/meetings/versions/show.html.erb +14 -4
  159. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +13 -15
  160. data/config/assets.rb +0 -2
  161. data/config/locales/ar.yml +6 -94
  162. data/config/locales/bg.yml +0 -673
  163. data/config/locales/ca.yml +52 -75
  164. data/config/locales/cs.yml +49 -71
  165. data/config/locales/de.yml +53 -76
  166. data/config/locales/el.yml +48 -51
  167. data/config/locales/en.yml +51 -74
  168. data/config/locales/es-MX.yml +50 -73
  169. data/config/locales/es-PY.yml +48 -71
  170. data/config/locales/es.yml +53 -76
  171. data/config/locales/eu.yml +52 -75
  172. data/config/locales/fi-plain.yml +46 -69
  173. data/config/locales/fi.yml +44 -67
  174. data/config/locales/fr-CA.yml +43 -69
  175. data/config/locales/fr.yml +48 -71
  176. data/config/locales/ga-IE.yml +2 -16
  177. data/config/locales/gl.yml +5 -63
  178. data/config/locales/hu.yml +6 -92
  179. data/config/locales/id-ID.yml +4 -60
  180. data/config/locales/is-IS.yml +1 -22
  181. data/config/locales/it.yml +6 -86
  182. data/config/locales/ja.yml +44 -73
  183. data/config/locales/lb.yml +6 -67
  184. data/config/locales/lt.yml +42 -65
  185. data/config/locales/lv.yml +4 -61
  186. data/config/locales/nl.yml +4 -92
  187. data/config/locales/no.yml +4 -80
  188. data/config/locales/pl.yml +2 -199
  189. data/config/locales/pt-BR.yml +4 -200
  190. data/config/locales/pt.yml +5 -85
  191. data/config/locales/ro-RO.yml +11 -81
  192. data/config/locales/ru.yml +5 -60
  193. data/config/locales/sk.yml +4 -61
  194. data/config/locales/sl.yml +0 -3
  195. data/config/locales/sr-CS.yml +0 -6
  196. data/config/locales/sv.yml +10 -90
  197. data/config/locales/tr-TR.yml +5 -78
  198. data/config/locales/uk.yml +5 -53
  199. data/config/locales/zh-CN.yml +3 -70
  200. data/config/locales/zh-TW.yml +24 -51
  201. data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
  202. data/db/migrate/20230427105701_change_types_and_registration_types_on_meetings.rb +49 -0
  203. data/lib/decidim/meetings/admin_engine.rb +2 -2
  204. data/lib/decidim/meetings/component.rb +4 -216
  205. data/lib/decidim/meetings/content_blocks/registry_manager.rb +17 -0
  206. data/lib/decidim/meetings/directory_engine.rb +4 -6
  207. data/lib/decidim/meetings/engine.rb +62 -27
  208. data/lib/decidim/meetings/meeting_serializer.rb +3 -3
  209. data/lib/decidim/meetings/seeds.rb +188 -0
  210. data/lib/decidim/meetings/test/factories.rb +124 -54
  211. data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
  212. data/lib/decidim/meetings/test/translated_event.rb +1 -1
  213. data/lib/decidim/meetings/version.rb +1 -1
  214. metadata +58 -58
  215. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +0 -16
  216. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +0 -1
  217. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +0 -26
  218. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +0 -63
  219. data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +0 -31
  220. data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +0 -21
  221. data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +0 -10
  222. data/app/cells/decidim/meetings/meeting_list_item/show.erb +0 -14
  223. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +0 -44
  224. data/app/cells/decidim/meetings/meeting_m/address.erb +0 -5
  225. data/app/cells/decidim/meetings/meeting_m/data.erb +0 -2
  226. data/app/cells/decidim/meetings/meeting_m/date.erb +0 -8
  227. data/app/cells/decidim/meetings/meeting_m/footer.erb +0 -9
  228. data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +0 -17
  229. data/app/cells/decidim/meetings/meeting_m/single_date.erb +0 -9
  230. data/app/cells/decidim/meetings/meeting_m/tags.erb +0 -1
  231. data/app/cells/decidim/meetings/meeting_m_cell.rb +0 -121
  232. data/app/cells/decidim/meetings/meeting_s/show.erb +0 -27
  233. data/app/controllers/concerns/decidim/meetings/filterable.rb +0 -27
  234. data/app/controllers/decidim/meetings/widgets_controller.rb +0 -30
  235. data/app/packs/stylesheets/decidim/meetings/_header.scss +0 -52
  236. data/app/packs/stylesheets/decidim/meetings/_main.scss +0 -178
  237. data/app/packs/stylesheets/decidim/meetings/_meetings.scss +0 -2
  238. data/app/queries/decidim/meetings/admin/invites.rb +0 -60
  239. data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +0 -1
  240. data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +0 -34
  241. data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +0 -26
  242. data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +0 -1
  243. data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +0 -26
  244. data/app/views/decidim/meetings/meetings/_filters.html.erb +0 -40
  245. data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +0 -18
  246. data/app/views/decidim/meetings/meetings/_meetings.html.erb +0 -48
  247. data/app/views/decidim/meetings/versions/index.html.erb +0 -8
  248. data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +0 -4
  249. data/config/locales/he-IL.yml +0 -1
  250. data/decidim-meetings.gemspec +0 -36
  251. data/lib/decidim/meetings/seeds/city.jpeg +0 -0
@@ -1,180 +1,21 @@
1
1
  <% provide(:title, present(meeting).title) %>
2
2
 
3
3
  <% add_decidim_meta_tags({
4
- title: present(meeting).title,
5
- description: present(meeting).description,
6
- url: meeting_url(meeting.id)
7
- }) %>
4
+ title: present(meeting).title,
5
+ description: present(meeting).description,
6
+ url: meeting_url(meeting.id)
7
+ }) %>
8
8
 
9
9
  <%
10
10
  edit_link(
11
11
  resource_locator(meeting).edit,
12
12
  :update,
13
13
  :meeting,
14
- meeting: meeting
14
+ meeting:
15
15
  )
16
16
  %>
17
17
 
18
- <div class="row column view-header">
19
- <div class="m-bottom">
20
- <%= link_to meetings_path, class: "small hollow js-back-to-list" do %>
21
- <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
22
- <%= t(".back") %>
23
- <% end %>
24
- </div>
18
+ <%= append_stylesheet_pack_tag "decidim_meetings", media: "all" %>
19
+ <%= append_javascript_pack_tag "decidim_meetings" %>
25
20
 
26
- <h2 class="heading2"><%= present(meeting).title(links: true, html_escape: true ) %></h2>
27
-
28
- <%= cell "decidim/author", author_presenter_for(meeting.normalized_author), has_actions: true, from: meeting, context: { extra_classes: ["author-data--small"] } %>
29
-
30
- </div>
31
- <div class="row">
32
- <div class="columns section view-side mediumlarge-4 mediumlarge-push-8
33
- large-3 large-push-9">
34
-
35
- <% if allowed_to?(:update, :meeting, meeting: meeting) %>
36
- <%= link_to t(".edit_meeting"), edit_meeting_path(meeting), class: "button secondary hollow expanded button-sc button--icon follow-button" %>
37
- <% end %>
38
-
39
- <% if allowed_to?(:close, :meeting, meeting: meeting) %>
40
- <% caption = meeting.closed? ? t(".edit_close_meeting") : t(".close_meeting") %>
41
- <%= link_to caption, edit_meeting_meeting_close_path(meeting_id: meeting.id, id: meeting.id), class: "button hollow expanded button-sc button--icon follow-button" %>
42
- <% end %>
43
-
44
- <div class="card extra">
45
- <div class="card__content">
46
- <%= cell("decidim/date_range", { start: meeting.start_time, end: meeting.end_time }) %>
47
-
48
- <%= cell "decidim/meetings/join_meeting_button", meeting, big_button: true, show_remaining_slots: true %>
49
- <%= render partial: "decidim/shared/follow_button", locals: { followable: meeting, large: false } %>
50
- </div>
51
- <% if meeting.closed? && meeting.closing_visible? %>
52
- <% double = meeting.has_contributions? && meeting.has_attendees? %>
53
- <div class="card card--secondary extra definition-data">
54
- <% if meeting.has_contributions? %>
55
- <div class="definition-data__item <%= "definition-data__item--double" if double %>">
56
- <span class="definition-data__title"><%= t(".contributions") %></span>
57
- <span class="definition-data__number"><%= meeting.contributions_count %></span>
58
- </div>
59
- <% end %>
60
- <% if meeting.has_attendees? %>
61
- <div class="definition-data__item <%= "definition-data__item--double" if double %>">
62
- <span class="definition-data__title"><%= t(".attendees") %></span>
63
- <span class="definition-data__number"><%= meeting.attendees_count %></span>
64
- </div>
65
- <% end %>
66
- <% if meeting.attending_organizations.present? %>
67
- <div class="definition-data__item">
68
- <span class="definition-data__title"><%= t(".organizations") %></span>
69
- <span class="definition-data__text"><%= simple_format(meeting.attending_organizations) %></span>
70
- </div>
71
- <% end %>
72
- </div>
73
- <% end %>
74
- </div>
75
-
76
- <% if registration.present? && registration.meeting.component.settings.registration_code_enabled %>
77
- <div class="card extra">
78
- <div class="card__content">
79
- <div class="registration_code">
80
- <span><%= registration_code_help_text %></span>
81
- <span><strong><%= registration.code %></strong></span>
82
- <div class="text-small"><%= validation_state_for(registration) %></div>
83
- </div>
84
- </div>
85
- </div>
86
- <% end %>
87
-
88
- <% if meeting.services.any? %>
89
- <div class="card card--list">
90
- <% meeting.services.each do |service| %>
91
- <div class="card--list__item">
92
- <div class="card--list__text card--list__text--top">
93
- <%= icon "actions", class: "card--list__icon alert", role: "img", "aria-hidden": true %>
94
- <div>
95
- <h3 class="card--list__heading heading-small"><%= translated_attribute(service["title"]) %></h3>
96
- <span class="text-medium"><%= translated_attribute(service["description"]) %></span>
97
- </div>
98
- </div>
99
- </div>
100
- <% end %>
101
- </div>
102
- <% end %>
103
-
104
- <%= resource_reference(meeting) %>
105
- <%= resource_version(meeting, versions_path: meeting_versions_path(meeting)) %>
106
- <%= cell "decidim/meetings/cancel_registration_meeting_button", meeting %>
107
- <%= render partial: "decidim/shared/share_modal" %>
108
- <% if allowed_to? :embed, :meeting, meeting: @meeting %>
109
- <%= embed_modal_for meeting_widget_url(meeting, format: :js) %>
110
- <% end %>
111
- <%= render partial: "calendar_modal", locals: { ics_url: calendar_meeting_url(meeting), google_url: google_calendar_event_url(meeting) } %>
112
- </div>
113
- <div class="columns mediumlarge-8 mediumlarge-pull-4">
114
- <div class="section">
115
- <% if meeting.private_meeting? %>
116
- <span class="<%= meeting_type_badge_css_class("private") %> label proposal-status">
117
- <%= t("private_meeting", scope: "decidim.meetings.types") %>
118
- </span>
119
- <% end %>
120
- <% if meeting.private_meeting? and meeting.transparent? %>
121
- <span class="<%= meeting_type_badge_css_class("transparent") %> label proposal-status">
122
- <%= t("transparent", scope: "decidim.meetings.types") %>
123
- </span>
124
- <% end %>
125
- <% if meeting.withdrawn? %>
126
- <span class="<%= meeting_type_badge_css_class("withdraw") %> label proposal-status">
127
- <%= t("withdraw", scope: "decidim.meetings.types") %>
128
- </span>
129
- <% end %>
130
- <%= render_meeting_body(@meeting) %>
131
-
132
- <% if meeting.maps_enabled? && !meeting.online_meeting? %>
133
- <%= render partial: "decidim/shared/static_map", locals: { icon_name: "meetings", geolocalizable: meeting } %>
134
- <% end %>
135
-
136
- <% unless meeting.in_person_meeting? || meeting.withdrawn? %>
137
- <%= cell "decidim/meetings/online_meeting_link", meeting %>
138
- <% end %>
139
-
140
- <%= render partial: "decidim/shared/tags", locals: { resource: meeting, tags_class_extra: "tags--meeting" } %>
141
- </div>
142
-
143
- <% if meeting.agenda.present? && meeting.agenda.visible? %>
144
- <%= render "meeting_agenda" %>
145
- <% end %>
146
-
147
- <%= cell "decidim/meetings/public_participants_list", meeting %>
148
-
149
- <% if !meeting.closed? && meeting.user_group_registrations.any? %>
150
- <% user_group_ids = meeting.user_group_registrations.user_group_ids %>
151
- <div class="section">
152
- <h4 class="section-heading"><%= t(".organizations") %></h4>
153
- <div class="card card--list">
154
- <% Decidim::UserGroup.where(id: user_group_ids).each do |group| %>
155
- <div class="card--list__item">
156
- <div class="card--list__text card--list__text--top">
157
- <%= cell "decidim/author", present(group) %>
158
- </div>
159
- </div>
160
- <% end %>
161
- </div>
162
- </div>
163
- <% end %>
164
-
165
- <% if meeting.closed? && meeting.closing_visible? %>
166
- <div class="section">
167
- <h3 class="section-heading"><%= t(".meeting_minutes") %></h3>
168
- <%= decidim_sanitize_editor translated_attribute meeting.closing_report %>
169
- </div>
170
- <% end %>
171
-
172
- <%= linked_resources_for meeting, :proposals, "proposals_from_meeting" %>
173
- <%= linked_resources_for meeting, :results, "meetings_through_proposals" %>
174
- </div>
175
- </div>
176
- <%= attachments_for meeting %>
177
- <%= comments_for meeting %>
178
- <%= pad_iframe_for meeting %>
179
-
180
- <%= cell("decidim/flag_modal", meeting) %>
21
+ <%= render partial: "meeting", locals: { meeting: } %>
@@ -1,17 +1,13 @@
1
- <div class="answer-questionnaire__single-option js-check-box-collection">
2
- <% question.answer_options.each_with_index do |answer_option, idx| %>
3
- <% choice = answer.choices.find { |choice| choice.decidim_answer_option_id == answer_option.id } if answer %>
1
+ <% question.answer_options.each_with_index do |answer_option, idx| %>
2
+ <% choice = answer.choices.find { |choice| choice.decidim_answer_option_id == answer_option.id } if answer %>
4
3
 
5
- <div class="js-collection-input">
6
- <%= label_tag do %>
7
- <%= check_box_tag "answer[choices][#{idx}][body]",
8
- translated_attribute(answer_option.body),
9
- choice.present?, disabled: disabled %>
4
+ <%= label_tag do %>
5
+ <%= check_box_tag "answer[choices][#{idx}][body]",
6
+ translated_attribute(answer_option.body),
7
+ choice.present?, disabled: %>
10
8
 
11
- <%= translated_attribute(answer_option.body) %>
9
+ <%= translated_attribute(answer_option.body) %>
12
10
 
13
- <%= hidden_field_tag "answer[choices][#{idx}][answer_option_id]", answer_option.id, disabled: disabled %>
14
- <% end %>
15
- </div>
11
+ <%= hidden_field_tag "answer[choices][#{idx}][answer_option_id]", answer_option.id, disabled: %>
16
12
  <% end %>
17
- </div>
13
+ <% end %>
@@ -4,16 +4,16 @@
4
4
  <% choice_id = "#{field_id}_choices_#{idx}" %>
5
5
 
6
6
  <%= label_tag "#{choice_id}_body" do %>
7
- <%= radio_button_tag "answer[choices][#{question.id}][body]",
7
+ <%= radio_button_tag "answer[choices][#{idx}][body]",
8
8
  translated_attribute(answer_option.body),
9
9
  answer_option.id == choice.try(:decidim_answer_option_id),
10
- id: "#{choice_id}_body", disabled: disabled %>
10
+ id: "#{choice_id}_body", disabled: %>
11
11
 
12
12
  <%= translated_attribute(answer_option.body) %>
13
13
 
14
- <%= hidden_field_tag "answer[choices][#{question.id}][answer_option_id]",
14
+ <%= hidden_field_tag "answer[choices][#{idx}][answer_option_id]",
15
15
  answer_option.id,
16
16
  id: "#{choice_id}_answer_option",
17
- disabled: disabled %>
17
+ disabled: %>
18
18
  <% end %>
19
19
  <% end %>
@@ -1,5 +1,5 @@
1
1
  var $question = $("[data-question=\"<%= question.id %>\"]");
2
2
 
3
3
  if($question.length){
4
- $question.replaceWith('<%= j(render partial: "decidim/meetings/polls/questions/question", locals: { form: @form, question: question, open_question: question }).strip.html_safe %>');
4
+ $question.replaceWith('<%= j(render partial: "decidim/meetings/polls/questions/question", locals: { form: @form, question:, open_question: question }).strip.html_safe %>');
5
5
  }
@@ -1,5 +1,5 @@
1
1
  <% if questionnaire.all_questions_unpublished? %>
2
- <p class="padding-1"><%= t(".empty_questions") %></p>
2
+ <p class="p-4"><%= t(".empty_questions") %></p>
3
3
  <% else %>
4
4
  <%= render partial: "decidim/meetings/polls/questions/question", collection: questionnaire.questions.includes([:questionnaire]).visible %>
5
5
  <% end %>
@@ -1,7 +1,7 @@
1
1
  <div class="meeting-polls__admin-label"><%= t(".admin_dashboard") %></div>
2
2
 
3
3
  <% questionnaire.questions.includes([:questionnaire]).each do |question| %>
4
- <details class="meeting-polls__question--admin text-medium open" data-question="<%= question.id %>" <%= "open" if open_question == question.id %>>
4
+ <details class="meeting-polls__question meeting-polls__question--admin open" data-question="<%= question.id %>" <%= "open" if open_question == question.id %>>
5
5
  <summary><%= t(".question") %></summary>
6
6
 
7
7
  <%= form_tag(meeting_polls_question_path(meeting, question), method: :patch, remote: true) do %>
@@ -14,7 +14,7 @@
14
14
  <div><%= t(".question") %></div>
15
15
  <div>
16
16
  <% if question.unpublished? %>
17
- <button class="button button--nomargin primary small"><%= t(".send") %></button>
17
+ <button class="button button__sm button__secondary"><%= t(".send") %></button>
18
18
  <% else %>
19
19
  <div><strong><%= t(".sent") %></strong></div>
20
20
  <div><%= pluralize(question.answers_count, t(".received_answer"), t(".received_answers")) %></div>
@@ -29,11 +29,11 @@
29
29
  <% end %>
30
30
 
31
31
  <% if question.unpublished? %>
32
- <button class="button button--nomargin primary small margin-top-1" disabled><%= t(".send") %></button>
32
+ <button class="button button__sm button__secondary" disabled><%= t(".send") %></button>
33
33
  <% elsif question.published? %>
34
- <button class="button button--nomargin primary small margin-top-1"><%= t(".send") %></button>
34
+ <button class="button button__sm button__secondary"><%= t(".send") %></button>
35
35
  <% elsif question.closed? %>
36
- <div class="margin-top-1"><strong><%= t(".sent") %></strong></div>
36
+ <div class="mt-1"><strong><%= t(".sent") %></strong></div>
37
37
  <% end %>
38
38
  </div>
39
39
  </div>
@@ -3,26 +3,24 @@
3
3
  <div>
4
4
  <p><%= translated_attribute(question.body) %></p>
5
5
 
6
- <% @form = form || Decidim::Meetings::AnswerForm.new(question_id: question.id, current_user: current_user) %>
7
- <%= decidim_form_for(@form, url: meeting_polls_answers_path(meeting), method: :post, remote: true, html: { class: "form answer-questionnaire" }, data: { "safe-path" => meeting_live_event_path(meeting) }) do |form| %>
8
- <div class="row column answer question" data-max-choices="<%= question.max_choices %>">
9
- <small class="form-error max-choices-alert"><%= t(".max_choices_alert") %></small>
10
-
11
- <%= render partial: "decidim/meetings/polls/answers/#{question.question_type}", locals: { answer: @form.answer, question: question, answer_form: form, disabled: question.answered_by?(current_user), field_id: question.id } %>
6
+ <% @form = form || Decidim::Meetings::AnswerForm.new(question_id: question.id, current_user:) %>
7
+ <%= decidim_form_for(@form, url: meeting_polls_answers_path(meeting), method: :post, remote: true, html: { class: "form-defaults mt-4" }, data: { "safe-path" => meeting_live_event_path(meeting) }) do |form| %>
8
+ <div class="answer question" data-max-choices="<%= question.max_choices %>">
9
+ <%= render partial: "decidim/meetings/polls/answers/#{question.question_type}", locals: { answer: @form.answer, question:, answer_form: form, disabled: question.answered_by?(current_user), field_id: question.id } %>
12
10
 
13
11
  <%= form.hidden_field :question_id %>
14
12
 
13
+ <small class="form-error max-choices-alert"><%= t(".max_choices_alert") %></small>
14
+
15
15
  <% @form.errors.full_messages.each do |msg| %>
16
- <small class="form-error is-visible margin-top-1"><%= msg %></small>
16
+ <small class="form-error is-visible mt-1"><%= msg %></small>
17
17
  <% end %>
18
18
  </div>
19
19
  <% if question.answered_by?(current_user) %>
20
- <div class="callout success margin-top-1">
21
- <%= t(".question_replied") %>
22
- </div>
20
+ <%= cell("decidim/announcement", t(".question_replied"), callout_class: "success" ) %>
23
21
  <% else %>
24
22
  <div class="text-right">
25
- <button class="button button--nomargin primary small margin-top-1"><%= t(".reply_question") %></button>
23
+ <button class="ml-auto button button button__sm button__secondary"><%= t(".reply_question") %></button>
26
24
  </div>
27
25
  <% end %>
28
26
  <% end %>
@@ -1,7 +1,7 @@
1
- <details class="meeting-polls__question text-medium" data-question="<%= question.id %>" <%= "open" if local_assigns.fetch(:open_question, nil) == question %>>
1
+ <details class="meeting-polls__question" data-question="<%= question.id %>" <%= "open" if local_assigns.fetch(:open_question, nil) == question %>>
2
2
  <% if question.published? %>
3
- <%= render partial: "decidim/meetings/polls/questions/published_question", locals: { question: question, form: local_assigns.fetch(:form, nil) } %>
3
+ <%= render partial: "decidim/meetings/polls/questions/published_question", locals: { question:, form: local_assigns.fetch(:form, nil) } %>
4
4
  <% elsif question.closed? %>
5
- <%= render partial: "decidim/meetings/polls/questions/closed_question", locals: { question: question } %>
5
+ <%= render partial: "decidim/meetings/polls/questions/closed_question", locals: { question: } %>
6
6
  <% end %>
7
7
  </details>
@@ -1,5 +1,5 @@
1
1
  var $aside = $("#admin-meeting-poll-aside");
2
2
 
3
3
  if($aside.length){
4
- $aside.html('<%= j(render partial: "decidim/meetings/polls/questions/index_admin", locals: { open_question: open_question }).strip.html_safe %>');
4
+ $aside.html('<%= j(render partial: "decidim/meetings/polls/questions/index_admin", locals: { open_question: }).strip.html_safe %>');
5
5
  }
@@ -0,0 +1,20 @@
1
+ <% filter_sections = [].tap do |f|
2
+ f.append(method: :with_any_date, collection: filter_date_values, label_scope: "decidim.meetings.meetings.filters", id: "date", type: :radio_buttons) if filter_options[:date]
3
+ f.append(method: :with_any_type, collection: filter_type_values, label_scope: "decidim.meetings.meetings.filters", id: "type") if filter_options[:type]
4
+ f.append(method: :with_any_scope, collection: filter_scopes_values, label_scope: "decidim.shared.participatory_space_filters.filters", id: "scope") if filter_options[:scopes]
5
+ f.append(method: :with_any_scope, collection: filter_global_scopes_values, label_scope: "decidim.shared.participatory_space_filters.filters", id: "scope") if filter_options[:directory_scopes]
6
+ f.append(method: :with_any_category, collection: filter_categories_values, label_scope: "decidim.meetings.meetings.filters", id: "category") if filter_options[:categories]
7
+ f.append(method: :with_any_global_category, collection: directory_filter_categories_values, label_scope: "decidim.meetings.meetings.filters", id: "category") if filter_options[:directory_categories]
8
+ f.append(method: :with_any_origin, collection: filter_origin_values, label_scope: "decidim.meetings.meetings.filters", id: "origin") if filter_options[:origin]
9
+ f.append(method: :with_any_space, collection: directory_meeting_spaces_values, label_scope: "decidim.meetings.directory.meetings.index", id: "space_type") if filter_options[:space_type]
10
+ f.append(method: :activity, collection: activity_filter_values, label_scope: "decidim.meetings.meetings.filters", id: "activity", type: :radio_buttons) if filter_options[:activity]
11
+ end %>
12
+
13
+ <%= render layout: "decidim/shared/filters", locals: { filter_sections:, search_variable:, skip_to_id: "meetings" } do %>
14
+ <%= render partial: "decidim/meetings/calendar_modal", locals: {
15
+ path: short_url(
16
+ route_name: "calendar",
17
+ params: { filter: params.fetch(:filter, {}).try(:to_unsafe_hash) }
18
+ )
19
+ } %>
20
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <% add_decidim_page_title(t("decidim.meetings.directory.meetings.index.meetings")) %>
2
+
3
+ <%= append_stylesheet_pack_tag "decidim_meetings", media: "all" %>
4
+ <%= append_javascript_pack_tag "decidim_meetings" %>
5
+
6
+ <% content_for :aside do %>
7
+ <%= render partial: "decidim/meetings/shared/meetings_aside", locals: { main_action: true, search_variable:, filter_options:, component: } %>
8
+ <% end %>
9
+
10
+ <%= render layout: "layouts/decidim/shared/layout_two_col" do %>
11
+ <% if display_map %>
12
+ <div class="meeting-list__map">
13
+ <%= cell "decidim/meetings/meetings_map", search.result %>
14
+ </div>
15
+ <% end %>
16
+
17
+ <% if display_announcement %>
18
+ <%= render partial: "decidim/shared/component_announcement" %>
19
+ <% end %>
20
+
21
+ <section id="meetings" class="layout-main__section layout-main__heading">
22
+ <%= render partial: "decidim/meetings/shared/meetings", locals: { component: } %>
23
+ </section>
24
+ <% end %>
@@ -0,0 +1,16 @@
1
+ var $meetings = $('#meetings');
2
+ $meetings.html('<%= j(render partial: "decidim/meetings/shared/meetings", locals: { component: }).strip.html_safe %>');
3
+
4
+ var $urlCalendarUrl = $('#urlCalendarUrl');
5
+ $urlCalendarUrl.val("<%= short_url(route_name: "calendar", params: { filter: params.fetch(:filter, {}).try(:to_unsafe_hash) }) %>");
6
+
7
+ var meeting_frame = document.getElementById("meeting_frame");
8
+ meeting_frame.dataset.filteredPath = "<%= request.fullpath %>"
9
+
10
+ var $map = $("#map");
11
+ var controller = $map.data("map-controller");
12
+ if (controller) {
13
+ var markerData = JSON.parse('<%= escape_javascript meetings_data_for_map(search.result).to_json.html_safe %>');
14
+ controller.clearMarkers();
15
+ controller.addMarkers(markerData);
16
+ }
@@ -0,0 +1,33 @@
1
+ <% if params.dig("filter", "with_availability").present? && params["filter"]["with_availability"] == "withdrawn" %>
2
+ <%= cell(
3
+ "decidim/announcement",
4
+ t("decidim.meetings.meetings.index.text_banner",
5
+ go_back_link: link_to(t("decidim.meetings.meetings.index.click_here"), meetings_path("filter[with_availability]" => nil))
6
+ ).html_safe,
7
+ callout_class: "info"
8
+ ) %>
9
+ <% end %>
10
+
11
+ <% if meetings.length.zero? %>
12
+ <%= cell("decidim/announcement", t("decidim.meetings.meetings.meetings.no_meetings_warning"), callout_class: "warning" ) %>
13
+ <% else %>
14
+ <h2 class="h5 md:h3 decorator"><%= t("meetings_count", scope: "decidim.meetings.meetings.count", count: meetings.length) %></h2>
15
+
16
+ <%= cell("decidim/announcement", t("decidim.meetings.meetings.meetings.upcoming_meetings_warning"), callout_class: "warning" ) if @forced_past_meetings %>
17
+
18
+ <div class="card__list-list">
19
+ <% meetings.each do |meeting| %>
20
+ <%= card_for meeting %>
21
+ <% end %>
22
+ </div>
23
+
24
+ <%= decidim_paginate meetings, order_start_time: params[:order_start_time], scope_id: params[:scope_id] %>
25
+ <% end %>
26
+
27
+ <% if component.present? %>
28
+ <% if params.dig("filter", "with_availability").present? && params["filter"]["with_availability"] == "withdrawn" %>
29
+ <%= link_to t("decidim.meetings.meetings.index.see_all"), meetings_path("filter[with_availability]" => nil), class: "button button__sm button__text-secondary" %>
30
+ <% else %>
31
+ <%= link_to t("decidim.meetings.meetings.index.see_all_withdrawn"), meetings_path("filter[with_availability]" => "withdrawn"), class: "button button__sm button__text-secondary" %>
32
+ <% end %>
33
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <% title = component.present? ? translated_attribute(component.name) : t("decidim.components.meetings.name") %>
2
+ <% if local_assigns[:main_action] %>
3
+ <h1 class="title-decorator"><%= title %></h1>
4
+ <% else %>
5
+ <h2 class="title-decorator"><%= t("decidim.components.meetings.name") %></h2>
6
+ <% end %>
7
+
8
+ <% if try(:component_settings) && component_settings&.creation_enabled_for_participants? && current_component.participatory_space.can_participate?(current_user) %>
9
+ <%= action_authorized_link_to :create, new_meeting_path, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_meeting_path } do %>
10
+ <span><%= t("new_meeting", scope: "decidim.meetings.meetings.index") %></span>
11
+ <%= icon "add-line" %>
12
+ <% end %>
13
+ <% end %>
14
+
15
+ <%= render partial: "decidim/meetings/shared/filters", locals: {
16
+ search_variable:,
17
+ filter_options: filter_options || {}
18
+ } %>
@@ -1,10 +1,20 @@
1
- <div class="row">
1
+ <% content_for :aside do %>
2
+ <%= cell(
3
+ "decidim/versions_list",
4
+ versioned_resource,
5
+ version_path: proc { |version_index| url_for(action: :show, id: version_index) },
6
+ i18n_scope: "decidim.meetings.versions"
7
+ ) %>
8
+ <% end %>
9
+
10
+ <%= render layout: "layouts/decidim/shared/layout_item" do %>
2
11
  <%= cell(
3
12
  "decidim/version",
4
13
  current_version,
5
- index: params[:id].to_i,
6
- versioned_resource: versioned_resource,
14
+ index: params[:id],
15
+ versioned_resource:,
16
+ path: proc { |extra_params| url_for(action: :show, id: params[:id], **extra_params) },
7
17
  versions_path: proc { url_for(action: :index) },
8
18
  i18n_scope: "decidim.meetings.versions"
9
19
  ) %>
10
- </div>
20
+ <% end %>
@@ -1,23 +1,21 @@
1
1
  <% if meetings.any? %>
2
- <hr class="reset mt-none mb-m">
3
- <section class="section" id="venues">
4
- <h3 class="section-heading"><%= t("conference_venues", scope: "decidim.meetings") %></h3>
5
- <div class="row">
6
- <div class="column medium-4">
7
- <% meetings.each do |meeting_block| %>
8
- <% next if meeting_block.first.empty? %>
2
+ <section id="venues" class="content-block">
3
+ <h2 class="h2 decorator"><%= t("conference_venues", scope: "decidim.meetings") %></h2>
4
+ <div class="conference__map">
5
+ <div>
6
+ <% meetings.each do |meeting_block| %>
7
+ <% next if meeting_block.first.empty? %>
9
8
 
10
- <% meeting_block.last.each_with_index do |meeting, index| %>
11
- <% next if index != 0 %>
9
+ <% meeting_block.last.each_with_index do |meeting, index| %>
10
+ <% next if index != 0 %>
12
11
 
13
- <%== cell("decidim/conferences/conference_address", meeting) %>
12
+ <div class="conference__map-address">
13
+ <%== cell("decidim/address", meeting) %>
14
+ </div>
15
+ <% end %>
14
16
  <% end %>
15
- <% end %>
16
-
17
17
  </div>
18
- <div class="column medium-8">
19
18
  <%= cell "decidim/meetings/meetings_map", meetings_geocoded %>
20
19
  </div>
21
- </div>
22
- </section>
20
+ </section>
23
21
  <% end %>
data/config/assets.rb CHANGED
@@ -7,5 +7,3 @@ Decidim::Webpacker.register_entrypoints(
7
7
  decidim_meetings: "#{base_path}/app/packs/entrypoints/decidim_meetings.js",
8
8
  decidim_meetings_admin: "#{base_path}/app/packs/entrypoints/decidim_meetings_admin.js"
9
9
  )
10
-
11
- Decidim::Webpacker.register_stylesheet_import("stylesheets/decidim/meetings/meetings")