decidim-meetings 0.29.2 → 0.30.0.rc2

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +1 -1
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +3 -1
  4. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -1
  5. data/app/cells/decidim/meetings/dates_and_map/show.erb +1 -1
  6. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +1 -1
  7. data/app/cells/decidim/meetings/join_meeting_button/show.erb +5 -2
  8. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +3 -3
  9. data/app/cells/decidim/meetings/meeting_l_cell.rb +12 -0
  10. data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -2
  11. data/app/commands/decidim/meetings/admin/create_meeting.rb +8 -2
  12. data/app/commands/decidim/meetings/admin/update_meeting.rb +8 -2
  13. data/app/commands/decidim/meetings/create_meeting.rb +2 -2
  14. data/app/commands/decidim/meetings/update_meeting.rb +2 -3
  15. data/app/controllers/concerns/decidim/meetings/admin/filterable.rb +9 -5
  16. data/app/controllers/concerns/decidim/meetings/component_filterable.rb +1 -2
  17. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +14 -22
  18. data/app/controllers/decidim/meetings/admin/registration_form_controller.rb +8 -0
  19. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +2 -4
  20. data/app/controllers/decidim/meetings/meetings_controller.rb +40 -6
  21. data/app/forms/decidim/meetings/admin/meeting_form.rb +16 -30
  22. data/app/forms/decidim/meetings/base_meeting_form.rb +6 -0
  23. data/app/forms/decidim/meetings/meeting_form.rb +2 -30
  24. data/app/helpers/decidim/meetings/admin/application_helper.rb +11 -1
  25. data/app/helpers/decidim/meetings/application_helper.rb +35 -1
  26. data/app/helpers/decidim/meetings/directory/application_helper.rb +9 -48
  27. data/app/helpers/decidim/meetings/meetings_helper.rb +5 -0
  28. data/app/models/decidim/meetings/invite.rb +10 -0
  29. data/app/models/decidim/meetings/meeting.rb +23 -1
  30. data/app/models/decidim/meetings/meeting_link.rb +25 -0
  31. data/app/packs/entrypoints/decidim_meetings_admin.js +1 -0
  32. data/app/packs/src/decidim/meetings/admin/meetings_components_form.js +77 -0
  33. data/app/packs/src/decidim/meetings/admin/meetings_form.js +8 -0
  34. data/app/permissions/decidim/meetings/admin/permissions.rb +1 -1
  35. data/app/permissions/decidim/meetings/permissions.rb +13 -9
  36. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +1 -1
  37. data/app/presenters/decidim/meetings/meeting_presenter.rb +13 -1
  38. data/app/queries/decidim/meetings/filtered_meetings.rb +2 -2
  39. data/app/queries/decidim/meetings/metrics/meeting_followers_metric_measure.rb +2 -2
  40. data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +6 -6
  41. data/app/serializers/decidim/meetings/base_download_your_data_serializer.rb +32 -0
  42. data/app/serializers/decidim/meetings/download_your_data_invite_serializer.rb +6 -26
  43. data/app/serializers/decidim/meetings/download_your_data_meeting_serializer.rb +15 -0
  44. data/app/serializers/decidim/meetings/download_your_data_registration_serializer.rb +6 -24
  45. data/app/views/decidim/meetings/admin/meetings/_component.html.erb +15 -0
  46. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +7 -9
  47. data/app/views/decidim/meetings/admin/meetings/_linked_spaces.html.erb +53 -0
  48. data/app/views/decidim/meetings/admin/meetings/_meeting-tr.html.erb +42 -0
  49. data/app/views/decidim/meetings/admin/meetings/_meeting_actions.html.erb +70 -0
  50. data/app/views/decidim/meetings/admin/meetings/_meetings-thead.html.erb +26 -0
  51. data/app/views/decidim/meetings/admin/meetings/index.html.erb +16 -142
  52. data/app/views/decidim/meetings/admin/meetings/manage_trash.html.erb +23 -0
  53. data/app/views/decidim/meetings/admin/registration_form/edit_questions.html.erb +44 -0
  54. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +1 -0
  55. data/app/views/decidim/meetings/directory/meetings/index.html.erb +1 -2
  56. data/app/views/decidim/meetings/live_events/show.html.erb +5 -5
  57. data/app/views/decidim/meetings/meetings/_form.html.erb +4 -8
  58. data/app/views/decidim/meetings/meetings/_meeting.html.erb +51 -26
  59. data/app/views/decidim/meetings/meetings/_meeting_actions.html.erb +34 -0
  60. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +20 -59
  61. data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +2 -5
  62. data/app/views/decidim/meetings/meetings/_schema_org_event_meeting.html.erb +3 -0
  63. data/app/views/decidim/meetings/meetings/index.html.erb +10 -2
  64. data/app/views/decidim/meetings/meetings/show.html.erb +5 -5
  65. data/app/views/decidim/meetings/polls/answers/index.html.erb +5 -5
  66. data/app/views/decidim/meetings/shared/_filters.html.erb +1 -13
  67. data/app/views/decidim/meetings/shared/_index.html.erb +1 -1
  68. data/app/views/decidim/meetings/shared/_index.js.erb +3 -2
  69. data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +2 -2
  70. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +1 -1
  71. data/config/locales/ar.yml +17 -17
  72. data/config/locales/bg.yml +5 -25
  73. data/config/locales/ca.yml +137 -25
  74. data/config/locales/cs.yml +138 -28
  75. data/config/locales/de.yml +138 -26
  76. data/config/locales/el.yml +1 -22
  77. data/config/locales/en.yml +133 -21
  78. data/config/locales/es-MX.yml +137 -25
  79. data/config/locales/es-PY.yml +137 -25
  80. data/config/locales/es.yml +137 -25
  81. data/config/locales/eu.yml +138 -26
  82. data/config/locales/fi-plain.yml +138 -26
  83. data/config/locales/fi.yml +138 -26
  84. data/config/locales/fr-CA.yml +79 -26
  85. data/config/locales/fr.yml +79 -26
  86. data/config/locales/ga-IE.yml +0 -13
  87. data/config/locales/gl.yml +1 -12
  88. data/config/locales/hu.yml +1 -19
  89. data/config/locales/id-ID.yml +1 -13
  90. data/config/locales/is-IS.yml +0 -12
  91. data/config/locales/it.yml +1 -17
  92. data/config/locales/ja.yml +95 -25
  93. data/config/locales/lb.yml +0 -11
  94. data/config/locales/lt.yml +1 -23
  95. data/config/locales/lv.yml +1 -13
  96. data/config/locales/nl.yml +1 -17
  97. data/config/locales/no.yml +1 -16
  98. data/config/locales/pl.yml +5 -21
  99. data/config/locales/pt-BR.yml +1 -21
  100. data/config/locales/pt.yml +1 -17
  101. data/config/locales/ro-RO.yml +30 -17
  102. data/config/locales/ru.yml +1 -13
  103. data/config/locales/sk.yml +1 -13
  104. data/config/locales/sv.yml +74 -26
  105. data/config/locales/tr-TR.yml +1 -19
  106. data/config/locales/uk.yml +0 -12
  107. data/config/locales/zh-CN.yml +1 -18
  108. data/config/locales/zh-TW.yml +1 -21
  109. data/db/migrate/20181107175558_add_questionnaire_to_existing_meetings.rb +1 -1
  110. data/db/migrate/20200827153856_add_commentable_counter_cache_to_meetings.rb +1 -1
  111. data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
  112. data/db/migrate/20210310120731_add_followable_counter_cache_to_meetings.rb +1 -1
  113. data/db/migrate/20240712104245_create_decidim_meetings_meeting_link.rb +12 -0
  114. data/db/migrate/20240828103603_add_deleted_at_to_decidim_meetings_meetings.rb +8 -0
  115. data/decidim-meetings.gemspec +1 -1
  116. data/lib/decidim/api/agenda_item_type.rb +6 -7
  117. data/lib/decidim/api/agenda_type.rb +3 -4
  118. data/lib/decidim/api/meeting_type.rb +33 -41
  119. data/lib/decidim/api/meetings_type.rb +4 -5
  120. data/lib/decidim/api/service_type.rb +1 -1
  121. data/lib/decidim/meetings/admin_engine.rb +9 -1
  122. data/lib/decidim/meetings/component.rb +14 -4
  123. data/lib/decidim/meetings/download_your_data_user_answers_serializer.rb +13 -7
  124. data/lib/decidim/meetings/meeting_serializer.rb +70 -59
  125. data/lib/decidim/meetings/schema_org_event_meeting_serializer.rb +151 -0
  126. data/lib/decidim/meetings/seeds.rb +2 -4
  127. data/lib/decidim/meetings/test/factories.rb +8 -0
  128. data/lib/decidim/meetings/test/translated_event.rb +3 -3
  129. data/lib/decidim/meetings/version.rb +1 -1
  130. data/lib/decidim/meetings.rb +1 -0
  131. metadata +32 -21
  132. data/app/cells/decidim/meetings/meetings_map/show.erb +0 -16
  133. data/app/cells/decidim/meetings/meetings_map_cell.rb +0 -32
  134. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +0 -21
  135. data/app/helpers/decidim/meetings/map_helper.rb +0 -21
  136. data/app/views/decidim/meetings/meetings/_actions.html.erb +0 -6
@@ -1,31 +1,48 @@
1
1
  <%= render layout: "layouts/decidim/shared/layout_item" do %>
2
+
3
+ <%= render partial: "schema_org_event_meeting" %>
4
+
2
5
  <section class="layout-main__section layout-main__heading">
3
- <h1 class="h2 decorator"><%= present(meeting).title(links: true, html_escape: true ) %></h1>
4
-
5
- <%= cell "decidim/meetings/dates_and_map", meeting %>
6
- <%= render partial: "meeting_poll_actions", locals: { mobile: true } %>
7
-
8
- <div class="layout-author">
9
- <%= cell "decidim/author", author_presenter_for(meeting.normalized_author), from: meeting, context_actions: nil, layout: :compact %>
10
-
11
- <% if meeting.private_meeting? %>
12
- <span class="<%= meeting_type_badge_css_class("private") %> label">
13
- <%= t("private_meeting", scope: "decidim.meetings.types") %>
14
- </span>
15
- <% end %>
16
- <% if meeting.private_meeting? and meeting.transparent? %>
17
- <span class="<%= meeting_type_badge_css_class("transparent") %> label">
18
- <%= t("transparent", scope: "decidim.meetings.types") %>
19
- </span>
20
- <% end %>
21
- <% if meeting.withdrawn? %>
22
- <span class="<%= meeting_type_badge_css_class("withdraw") %> label">
23
- <%= t("withdraw", scope: "decidim.meetings.types") %>
24
- </span>
25
- <% end %>
6
+ <h1 class="h2 decorator"><%= present(meeting).title(links: true, html_escape: true ) %></h1>
7
+ <%= cell "decidim/meetings/dates_and_map", meeting %>
8
+ <div class="block md:hidden">
9
+ <%= render partial: "meeting_aside", locals: { hide_modal: true } %>
10
+ </div>
11
+
12
+ <%= render partial: "meeting_poll_actions", locals: { mobile: true } %>
13
+
14
+ <% if meeting.private_meeting? || meeting.withdrawn? %>
15
+ <div class="layout-author has_status">
16
+ <% if meeting.private_meeting? %>
17
+ <span class="<%= meeting_type_badge_css_class("private") %> label">
18
+ <%= t("private_meeting", scope: "decidim.meetings.types") %>
19
+ </span>
20
+ <% end %>
21
+ <% if meeting.private_meeting? and meeting.transparent? %>
22
+ <span class="<%= meeting_type_badge_css_class("transparent") %> label">
23
+ <%= t("transparent", scope: "decidim.meetings.types") %>
24
+ </span>
25
+ <% end %>
26
+ <% if meeting.withdrawn? %>
27
+ <span class="<%= meeting_type_badge_css_class("withdraw") %> label">
28
+ <%= t("withdraw", scope: "decidim.meetings.types") %>
29
+ </span>
30
+ <% end %>
31
+ </div>
32
+ <% end %>
33
+
34
+ <div class="layout-author <%= "has_status" if meeting.private_meeting? || meeting.withdrawn? %>">
35
+ <div class="relative flex items-center justify-center w-full">
36
+ <div class="w-10/12 flex items-center gap-4">
37
+ <%= cell "decidim/author", author_presenter_for(meeting.normalized_author), from: meeting, context_actions: nil, layout: :compact %>
38
+ </div>
39
+ <%= render "decidim/shared/resource_actions", resource: meeting do %>
40
+ <%= render "decidim/meetings/meetings/meeting_actions" %>
41
+ <% end %>
42
+ </div>
26
43
  </div>
27
- </section>
28
44
 
45
+ </section>
29
46
  <section class="layout-main__section">
30
47
  <div class="editor-content">
31
48
  <%= render_meeting_body(@meeting) %>
@@ -52,14 +69,22 @@
52
69
  </section>
53
70
  <% end %>
54
71
 
72
+ <%= cell("decidim/tags", meeting) %>
73
+
55
74
  <section class="layout-main__section layout-main__buttons" data-buttons>
56
- <%= render partial: "actions" %>
75
+ <%= cell "decidim/comments_button", nil %>
76
+
77
+ <div class="ml-auto lg:ml-0">
78
+ <%= cell "decidim/share_widget", meeting %>
79
+ </div>
57
80
  </section>
58
81
 
59
82
  <%= pad_iframe_for meeting %>
60
83
 
61
84
  <% content_for :aside do %>
62
- <%= render partial: "meeting_aside" %>
85
+ <div class="hidden md:block">
86
+ <%= render partial: "meeting_aside" %>
87
+ </div>
63
88
  <% end %>
64
89
 
65
90
  <% content_for :item_footer do %>
@@ -0,0 +1,34 @@
1
+ <% if allowed_to?(:update, :meeting, meeting: meeting) %>
2
+ <li role="menuitem">
3
+ <%= link_to edit_meeting_path(meeting), class: "button button__sm button__text button__text-secondary" do %>
4
+ <span><%= t("edit_meeting", scope: "decidim.meetings.meetings.meeting") %></span>
5
+ <%= icon "pencil-line" %>
6
+ <% end %>
7
+ </li>
8
+ <% end %>
9
+
10
+ <% if allowed_to?(:close, :meeting, meeting: meeting) %>
11
+ <% caption = meeting.closed? ? t("edit_close_meeting", scope: "decidim.meetings.meetings.meeting") : t("close_meeting", scope: "decidim.meetings.meetings.meeting") %>
12
+ <li role="menuitem">
13
+ <%= link_to edit_meeting_meeting_close_path(meeting_id: meeting.id, id: meeting.id), class: "button button__sm button__text button__text-secondary" do %>
14
+ <span><%= caption %></span>
15
+ <%= icon "lock-line" %>
16
+ <% end %>
17
+ </li>
18
+ <% end %>
19
+
20
+ <% if meeting.withdrawable_by?(current_user) %>
21
+ <li role="menuitem">
22
+ <%= action_authorized_link_to(
23
+ :withdraw,
24
+ withdraw_meeting_path(meeting),
25
+ method: :put,
26
+ class: "button button__sm button__text button__text-secondary" ,
27
+ title: t("withdraw_btn_hint", scope: "decidim.meetings.meetings.show"),
28
+ data: { confirm: t("withdraw_confirmation_html", scope: "decidim.meetings.meetings.show") }
29
+ ) do %>
30
+ <span><%= t("withdraw_meeting", scope:"decidim.meetings.meetings.show") %></span>
31
+ <%= icon "arrow-go-back-line" %>
32
+ <% end %>
33
+ </li>
34
+ <% end %>
@@ -2,40 +2,7 @@
2
2
 
3
3
  <% if meeting.can_be_joined_by?(current_user) || meeting.on_different_platform? %>
4
4
  <section class="layout-aside__section layout-aside__buttons layout-aside__ctas-buttons" data-sticky-buttons>
5
- <%= cell "decidim/meetings/join_meeting_button", meeting, show_remaining_slots: true %>
6
- </section>
7
- <% end %>
8
-
9
- <% if allowed_to?(:update, :meeting, meeting: meeting) || allowed_to?(:close, :meeting, meeting: meeting) || meeting.withdrawable_by?(current_user) %>
10
- <section class="layout-aside__section layout-aside__buttons">
11
- <% if allowed_to?(:update, :meeting, meeting: meeting) %>
12
- <%= link_to edit_meeting_path(meeting), class: "button button__sm button__transparent-secondary w-full" do %>
13
- <span><%= t("edit_meeting", scope: "decidim.meetings.meetings.meeting") %></span>
14
- <%= icon "pencil-line" %>
15
- <% end %>
16
- <% end %>
17
-
18
- <% if allowed_to?(:close, :meeting, meeting: meeting) %>
19
- <% caption = meeting.closed? ? t("edit_close_meeting", scope: "decidim.meetings.meetings.meeting") : t("close_meeting", scope: "decidim.meetings.meetings.meeting") %>
20
-
21
- <%= link_to edit_meeting_meeting_close_path(meeting_id: meeting.id, id: meeting.id), class: "button button__sm button__transparent-secondary w-full" do %>
22
- <span><%= caption %></span>
23
- <%= icon "pencil-line" %>
24
- <% end %>
25
- <% end %>
26
-
27
- <% if meeting.withdrawable_by?(current_user) %>
28
- <%= action_authorized_link_to(
29
- :withdraw,
30
- withdraw_meeting_path(meeting),
31
- method: :put,
32
- class: "button button__sm button__transparent-secondary w-full",
33
- title: t("withdraw_btn_hint", scope: "decidim.meetings.meetings.show"),
34
- data: { confirm: t("withdraw_confirmation_html", scope: "decidim.meetings.meetings.show") }
35
- ) do %>
36
- <span><%= t("withdraw_meeting", scope:"decidim.meetings.meetings.show") %></span>
37
- <% end %>
38
- <% end %>
5
+ <%= cell "decidim/meetings/join_meeting_button", meeting, show_remaining_slots: true, hide_modal: local_assigns[:hide_modal] %>
39
6
  </section>
40
7
  <% end %>
41
8
 
@@ -63,37 +30,31 @@
63
30
  <% meeting.attending_organizations.split("\n").each do |organizations| %>
64
31
  <li><%= organizations %></li>
65
32
  <% end %>
66
- </ul>
33
+ </ul>
34
+ <% end %>
67
35
  <% end %>
68
36
  <% end %>
69
- <% end %>
70
37
 
71
- <% if registration.present? && registration.meeting.component.settings.registration_code_enabled %>
72
- <%= render layout: "decidim/meetings/layouts/aside_block", locals: { emoji: "coupon-line" } do %>
73
- <h3 class="meeting__aside-block__title"><%= registration_code_help_text %></h3>
74
- <div class="meeting__aside-block__large"><%= registration.code %></div>
75
- <% if registration.validated? %>
76
- <div class="label success"><%= t("validated", scope: "decidim.meetings.meetings.show.registration_state") %></div>
77
- <% else %>
78
- <div class="label warning"><%= t("validation_pending", scope: "decidim.meetings.meetings.show.registration_state") %></div>
38
+ <% if registration.present? && registration.meeting.component.settings.registration_code_enabled %>
39
+ <%= render layout: "decidim/meetings/layouts/aside_block", locals: { emoji: "coupon-line" } do %>
40
+ <h3 class="meeting__aside-block__title"><%= registration_code_help_text %></h3>
41
+ <div class="meeting__aside-block__large"><%= registration.code %></div>
42
+ <% if registration.validated? %>
43
+ <div class="label success"><%= t("validated", scope: "decidim.meetings.meetings.show.registration_state") %></div>
44
+ <% else %>
45
+ <div class="label warning"><%= t("validation_pending", scope: "decidim.meetings.meetings.show.registration_state") %></div>
46
+ <% end %>
79
47
  <% end %>
80
48
  <% end %>
81
- <% end %>
82
49
 
83
- <% if meeting.services.any? %>
84
- <% meeting.services.each do |service| %>
85
- <%= render layout: "decidim/meetings/layouts/aside_block", locals: { emoji: "star-line" } do %>
86
- <h3 class="meeting__aside-block__title"><%= translated_attribute(service["title"]) %></h3>
87
- <div class="meeting__aside-block__text"><%= translated_attribute(service["description"]) %></div>
50
+ <% if meeting.services.any? %>
51
+ <% meeting.services.each do |service| %>
52
+ <%= render layout: "decidim/meetings/layouts/aside_block", locals: { emoji: "star-line" } do %>
53
+ <h3 class="meeting__aside-block__title"><%= translated_attribute(service["title"]) %></h3>
54
+ <div class="meeting__aside-block__text"><%= translated_attribute(service["description"]) %></div>
55
+ <% end %>
88
56
  <% end %>
89
57
  <% end %>
90
- <% end %>
91
- </section>
58
+ <%= cell "decidim/meetings/cancel_registration_meeting_button", meeting, hide_modal: local_assigns[:hide_modal] %>
59
+ </section>
92
60
  <% end %>
93
-
94
- <section class="layout-aside__section actions__secondary">
95
- <%= cell "decidim/meetings/cancel_registration_meeting_button", meeting %>
96
- <%= follow_button_for(meeting) %>
97
- <%= cell "decidim/share_button", nil %>
98
- <%= cell "decidim/report_button", meeting %>
99
- </section>
@@ -1,11 +1,8 @@
1
1
  <% extra_classes = local_assigns.fetch(:mobile, false) ? " block md:hidden" : " hidden md:block" %>
2
2
  <% if meeting.poll&.has_questions? %>
3
3
  <section class="layout-aside__section layout-aside__buttons<%= extra_classes %>">
4
- <%= action_authorized_link_to :reply_poll, meeting_polls_answers_path(meeting), class: "button button__xl button__secondary w-full", data: { "redirect_url" => meeting_polls_answers_path(meeting) }, resource: meeting do %>
5
- <span>
6
- <%= meeting.poll.has_open_questions? ? t("reply_poll", scope: "decidim.meetings.meetings.meeting") : t("view_poll", scope: "decidim.meetings.meetings.meeting") %>
7
- </span>
8
- <% end %>
4
+ <% reply_text = meeting.poll.has_open_questions? ? t("reply_poll", scope: "decidim.meetings.meetings.meeting") : t("view_poll", scope: "decidim.meetings.meetings.meeting") %>
5
+ <%= action_authorized_link_to :reply_poll, reply_text, meeting_polls_answers_path(meeting), class: "button button__xl button__secondary w-full", data: { "redirect_url" => meeting_polls_answers_path(meeting) }, resource: meeting %>
9
6
  <% if !allowed_to?(:reply_poll, :meeting, meeting:) && allowed_to?(:update, :poll, meeting:) %>
10
7
  <%= link_to admin_meeting_polls_answers_path(meeting), class: "button button__sm button__transparent-secondary w-full" do %>
11
8
  <span><%= t("administrate", scope: "decidim.meetings.polls.answers.index") %></span>
@@ -0,0 +1,3 @@
1
+ <script type="application/ld+json">
2
+ <%== render_schema_org_event_meeting(meeting) %>
3
+ </script>
@@ -1,3 +1,12 @@
1
+ <% add_decidim_meta_tags(
2
+ description: translated_attribute(current_component.participatory_space.try(:description)),
3
+ title: t("decidim.components.pagination.page_title",
4
+ component_name: translated_attribute(current_component.name),
5
+ current_page: meetings.current_page,
6
+ total_pages: meetings.total_pages ),
7
+ url: meetings_url,
8
+ resource: current_component) %>
9
+
1
10
  <%= render partial: "decidim/meetings/shared/index", locals: {
2
11
  display_map: Decidim::Map.available?(:geocoding, :dynamic) && current_component.settings.maps_enabled? && search.result.not_online.exists?,
3
12
  display_announcement: true,
@@ -6,8 +15,7 @@
6
15
  filter_options: {
7
16
  date: !@forced_past_meetings,
8
17
  type: true,
9
- scopes: current_component.has_subscopes?,
10
- categories: current_component.categories.any?,
18
+ taxonomies: true,
11
19
  origin: component_settings.creation_enabled_for_participants?,
12
20
  space_type: false,
13
21
  activity: current_user.present?
@@ -1,10 +1,10 @@
1
1
  <% provide(:title, present(meeting).title) %>
2
2
 
3
- <% add_decidim_meta_tags({
4
- title: present(meeting).title,
5
- description: present(meeting).description,
6
- url: meeting_url(meeting.id)
7
- }) %>
3
+ <% add_decidim_meta_tags(
4
+ title: present(meeting).title,
5
+ description: present(meeting).description,
6
+ url: meeting_url(meeting.id),
7
+ resource: meeting) %>
8
8
 
9
9
  <%
10
10
  edit_link(
@@ -1,8 +1,8 @@
1
- <% add_decidim_meta_tags({
2
- title: present(meeting).title,
3
- description: present(meeting).description,
4
- url: meeting_url(meeting.id)
5
- }) %>
1
+ <% add_decidim_meta_tags(
2
+ title: present(meeting).title,
3
+ description: present(meeting).description,
4
+ url: meeting_url(meeting.id),
5
+ resource: meeting) %>
6
6
 
7
7
  <%= append_javascript_pack_tag "decidim_meetings" %>
8
8
  <%= append_stylesheet_pack_tag "decidim_meetings" %>
@@ -1,16 +1,4 @@
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 %>
1
+ <%= render layout: "decidim/shared/filters", locals: { filter_sections: filter_sections(**filter_options), search_variable:, skip_to_id: "meetings" } do %>
14
2
  <%= render partial: "decidim/meetings/calendar_modal", locals: {
15
3
  path: short_url(
16
4
  route_name: "calendar",
@@ -10,7 +10,7 @@
10
10
  <%= render layout: "layouts/decidim/shared/layout_two_col" do %>
11
11
  <% if display_map %>
12
12
  <div class="meeting-list__map">
13
- <%= cell "decidim/meetings/meetings_map", search.result %>
13
+ <%= cell "decidim/map", search.result, metadata_card: "decidim/meetings/meeting_card_metadata" %>
14
14
  </div>
15
15
  <% end %>
16
16
 
@@ -7,9 +7,10 @@ $urlCalendarUrl.val("<%= short_url(route_name: "calendar", params: { filter: par
7
7
  var $map = $("#map");
8
8
  var controller = $map.data("map-controller");
9
9
  if (controller) {
10
- var markerData = JSON.parse('<%= escape_javascript meetings_data_for_map(search.result).to_json.html_safe %>');
10
+ var markerData = JSON.parse('<%= escape_javascript cell("decidim/map", search.result, metadata_card: "decidim/meetings/meeting_card_metadata").geocoded_data.to_json.html_safe %>');
11
11
  controller.clearMarkers();
12
- if (markerData.length > 0){
12
+
13
+ if (markerData.length > 0) {
13
14
  controller.addMarkers(markerData);
14
15
  }
15
16
  }
@@ -5,8 +5,8 @@
5
5
  <h2 class="title-decorator"><%= t("decidim.components.meetings.name") %></h2>
6
6
  <% end %>
7
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 %>
8
+ <% if allowed_to?(:create, :meeting) %>
9
+ <%= action_authorized_link_to :create, new_meeting_path, permissions_holder: current_component, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_meeting_path } do %>
10
10
  <span><%= t("new_meeting", scope: "decidim.meetings.meetings.index") %></span>
11
11
  <%= icon "add-line" %>
12
12
  <% end %>
@@ -15,7 +15,7 @@
15
15
  <% end %>
16
16
  <% end %>
17
17
  </div>
18
- <%= cell "decidim/meetings/meetings_map", meetings_geocoded %>
18
+ <%= cell "decidim/map", meetings_geocoded, metadata_card: "decidim/meetings/meeting_card_metadata" %>
19
19
  </div>
20
20
  </section>
21
21
  <% end %>
@@ -2,6 +2,8 @@
2
2
  ar:
3
3
  activemodel:
4
4
  attributes:
5
+ answer:
6
+ add_documents: أضف مستندات
5
7
  close_meeting:
6
8
  attendees_count: عدد الحضور
7
9
  attending_organizations: قائمة المنظمات التي حضرت
@@ -85,8 +87,6 @@ ar:
85
87
  admin:
86
88
  filters:
87
89
  meetings:
88
- category_id_eq:
89
- label: الفئة
90
90
  closed_at_present:
91
91
  label: الحالة
92
92
  values:
@@ -97,8 +97,6 @@ ar:
97
97
  values:
98
98
  'false': السابق
99
99
  'true': القادم
100
- scope_id_eq:
101
- label: نطاق
102
100
  with_any_origin:
103
101
  label: الأصل
104
102
  values:
@@ -135,8 +133,6 @@ ar:
135
133
  maps_enabled: تم تمكين الخرائط
136
134
  registration_code_enabled: تم تمكين رمز التسجيل
137
135
  resources_permissions_enabled: يمكن تعيين أذونات الإجراءات لكل اجتماع
138
- scope_id: نطاق
139
- scopes_enabled: النطاقات مفعلة
140
136
  terms_and_conditions_url_for_meeting_creators: أحكام وشروط عناوين URL لمنشئي الاجتماع
141
137
  step:
142
138
  announcement: إعلان
@@ -193,7 +189,7 @@ ar:
193
189
  badges:
194
190
  attended_meetings:
195
191
  conditions:
196
- - سجل للاجتماعات التي تريد حضورها
192
+ - سجل للاجتماعات التي تريد حضورها
197
193
  description: تُمنح هذه الشارة عند حضور العديد من الاجتماعات المباشرة.
198
194
  description_another: حضر هذا المشارك %{score} جلسة.
199
195
  description_own: لقد حضرت %{score} اجتماع.
@@ -205,7 +201,6 @@ ar:
205
201
  attachment_collections: المجلدات
206
202
  attachments: مرفقات
207
203
  close: قريب
208
- destroy: حذف
209
204
  edit: تعديل
210
205
  invalid_destroy:
211
206
  proposals_count:
@@ -273,10 +268,10 @@ ar:
273
268
  close: قريب
274
269
  title: اجتماع قريب
275
270
  meetings:
271
+ component:
272
+ unlink: إلغاء الربط
276
273
  create:
277
274
  success: تم إنشاء الاجتماع بنجاح. لاحظ أن هذا غير منشور حتى الآن، تحتاج إلى نشره بنفسك.
278
- destroy:
279
- success: تم حذف الاجتماع بنجاح
280
275
  edit:
281
276
  title: تعديل الاجتماعات
282
277
  update: تحديث
@@ -290,7 +285,18 @@ ar:
290
285
  select_a_registration_type: الرجاء تحديد نوع التسجيل
291
286
  select_an_iframe_access_level: الرجاء تحديد مستوى الوصول إلى iframe
292
287
  index:
288
+ linked_meeting_warning_html: يجب تعديل هذا الاجتماع من <br><a href="%{href}">%{name}</a>
293
289
  title: اجتماعات
290
+ linked_spaces:
291
+ assign: تعيين
292
+ link_a_space: اربط مساحة
293
+ private_meeting_warning: لم يتم تطبيق المساحات المربوطة إذا كان الاجتماع خاص وغير شفاف.
294
+ private_space_warning: لم يتم تطبيق المساحات المربوطة إذا كان الاجتماع ينتمي إلى مساحه خاصة وغير شفافه.
295
+ select: اختر مساحه
296
+ table:
297
+ actions: الإجراءات
298
+ component: مساحات مربوطة
299
+ title: مساحات مربوطة
294
300
  new:
295
301
  create: إنشاء
296
302
  title: إنشاء اجتماع
@@ -350,8 +356,6 @@ ar:
350
356
  questionnaire:
351
357
  update: "قام %{user_name} بتحديث الاستبيان للاجتماع %{meeting_name}"
352
358
  application_helper:
353
- filter_category_values:
354
- all: الكل
355
359
  filter_meeting_space_values:
356
360
  all: الكل
357
361
  calendar_modal:
@@ -454,7 +458,6 @@ ar:
454
458
  location_hints_help: 'توضيح حول الموقع: معلومات إضافية. على سبيل المثال: إدراج طابق المبنى في حال كان الاجتماع شخصيا، أو كلمة مرور الاجتماع إذا كان اجتماعا على الإنترنت يحتوي على تقييد الدخول.'
455
459
  online_meeting_url_help: 'الرابط: السماح للمشاركين بالاتصال مباشرة باجتماعك'
456
460
  registration_url_help: 'الرابط: يتيح للمشاركين استخدام الخدمة الخارجية التي تستخدمها للتسجيل'
457
- select_a_category: يُرجى اختيار فئة
458
461
  select_a_meeting_type: الرجاء تحديد نوع الاجتماع
459
462
  select_a_registration_type: الرجاء تحديد نوع التسجيل
460
463
  select_an_iframe_access_level: الرجاء تحديد مستوى الوصول إلى iframe
@@ -464,9 +467,6 @@ ar:
464
467
  see_all: عرض كافة الاجتماعات
465
468
  see_all_withdrawn: عرض جميع الاجتماعات المسحوبة
466
469
  text_banner: أنت تستعرض قائمة الاجتماعات التي تم سحبها من قبل مؤلفيها. %{go_back_link}.
467
- meeting:
468
- close_meeting: اجتماع قريب
469
- edit_meeting: تعديل الاجتماعات
470
470
  meetings:
471
471
  upcoming_meetings_warning: حاليًا ، لا توجد اجتماعات مجدولة ، ولكن يمكنك هنا العثور على جميع الاجتماعات السابقة المدرجة.
472
472
  new:
@@ -489,6 +489,7 @@ ar:
489
489
  micro_camera_permissions_warning: عند النقر على الزر أدناه، سيتم طلب أذونات الميكروفون و/أو الكاميرا، وسوف تنضم إلى مؤتمر الفيديو
490
490
  no_slots_available: لا فتحات المتاحة
491
491
  organizations: حضور المنظمات
492
+ redirect_notice: هذا الاجتماع جزء من مساحة أخرى، لذلك تم نقلك إلى %{current_space_name}. <br>إذا كنت تفضل، يمكنك العودة إلى <a href="%{previous_space_url}">%{previous_space_name}</a>.
492
493
  registration_code_help_text: رمز التسجيل الخاص بك
493
494
  registration_state:
494
495
  validated: التحقق من صحة
@@ -503,7 +504,6 @@ ar:
503
504
  visit_finished: عرض الاجتماع السابق
504
505
  withdraw_btn_hint: يمكن أن تسحب اجتماعك اذا غيرت رأيك. لا يتم إلغاء الاجتماع بل سيظهر في قائمة الاجتماعات المسحوبة.
505
506
  withdraw_confirmation_html: هل أنت متأكد من أنك تريد سحب هذا الاجتماع؟<br><br><strong>لا يمكن إلغاء هذا الإجراء!</strong>
506
- withdraw_meeting: سحب الاجتماع
507
507
  update:
508
508
  invalid: طرأت مشكلة خلال تحديث الاجتماع.
509
509
  success: لقد قمت بتحديث الاجتماع بنجاح.
@@ -97,8 +97,6 @@ bg:
97
97
  'false': Не се приема
98
98
  'true': Прието
99
99
  meetings:
100
- category_id_eq:
101
- label: Категория
102
100
  closed_at_present:
103
101
  label: Състояние
104
102
  values:
@@ -109,8 +107,6 @@ bg:
109
107
  values:
110
108
  'false': Минали
111
109
  'true': Предстоящо
112
- scope_id_eq:
113
- label: Обхват
114
110
  with_any_origin:
115
111
  label: Произход
116
112
  values:
@@ -160,8 +156,6 @@ bg:
160
156
  maps_enabled: Картите са активирани
161
157
  registration_code_enabled: Регистрационният код е активиран
162
158
  resources_permissions_enabled: Разрешенията за действия могат да се задават за всяка среща
163
- scope_id: Обхват
164
- scopes_enabled: Обхватите са активирани
165
159
  terms_and_conditions_url_for_meeting_creators: URL адрес за правила и условия за създатели на срещи
166
160
  step:
167
161
  announcement: Обявление
@@ -221,7 +215,7 @@ bg:
221
215
  badges:
222
216
  attended_meetings:
223
217
  conditions:
224
- - Регистрирайте се за срещите, които искате да посетите
218
+ - Регистрирайте се за срещите, които искате да посетите
225
219
  description: Тази значка се предоставя, когато посетите няколко срещи на живо.
226
220
  description_another: Този участник е посетил %{score} срещи.
227
221
  description_own: Посетили сте %{score} срещи.
@@ -235,7 +229,6 @@ bg:
235
229
  attachment_collections: Папки
236
230
  attachments: Прикачени файлове
237
231
  close: Затвори
238
- destroy: Изтрий
239
232
  edit: Редактирай
240
233
  invalid_destroy:
241
234
  proposals_count:
@@ -313,12 +306,6 @@ bg:
313
306
  create:
314
307
  invalid: Възникна проблем при създаването на тази среща.
315
308
  success: Срещата е създадена успешно. Забележете, че това все още не е публикувано, трябва да го публикувате ръчно.
316
- destroy:
317
- invalid:
318
- proposals_count:
319
- one: Срещата не може да бъде премахната, понеже има %{count} участник свързан с нея.
320
- other: Срещата не може да бъде премахната, понеже има %{count} участника свързани с нея.
321
- success: Срещата беше изтрита успешно
322
309
  edit:
323
310
  title: Редактиране на срещата
324
311
  update: Актуализация
@@ -366,10 +353,10 @@ bg:
366
353
  poll:
367
354
  form:
368
355
  announcement_html:
369
- - Когато даден въпрос получи отговори или бъде публикуван/затворен, той вече не може да бъде редактиран.
370
- - Можете да добавите въпрос по всяко време.
371
- - Анкетата ще бъде затворена, когато резултатите от всички създадени въпроси бъдат публикувани.
372
- - Посетете <a href='%{admin_link}'>страницата за администриране на анкетата</a>, за да изпратите въпроси и да публикувате резултати.
356
+ - Когато даден въпрос получи отговори или бъде публикуван/затворен, той вече не може да бъде редактиран.
357
+ - Можете да добавите въпрос по всяко време.
358
+ - Анкетата ще бъде затворена, когато резултатите от всички създадени въпроси бъдат публикувани.
359
+ - Посетете <a href='%{admin_link}'>страницата за администриране на анкетата</a>, за да изпратите въпроси и да публикувате резултати.
373
360
  registrations:
374
361
  edit:
375
362
  save: Запази
@@ -410,8 +397,6 @@ bg:
410
397
  questionnaire:
411
398
  update: "%{user_name} актуализира въпросника за срещата %{meeting_name}"
412
399
  application_helper:
413
- filter_category_values:
414
- all: Всички
415
400
  filter_meeting_space_values:
416
401
  all: Всички
417
402
  calendar:
@@ -521,7 +506,6 @@ bg:
521
506
  location_hints_help: 'Съвети за местоположение: допълнителна информация. Пример: етажът на сградата, ако е лична среща, или паролата за среща, ако е онлайн среща с ограничен достъп.'
522
507
  online_meeting_url_help: 'Връзка: позволява на участниците да се свързват директно с вашата среща'
523
508
  registration_url_help: 'Линк: позволете на участниците да отидат на външната услуга, която използвате за регистрации'
524
- select_a_category: Моля, изберете категория
525
509
  select_a_meeting_type: Моля, изберете тип среща
526
510
  select_a_registration_type: Моля, изберете тип регистрация
527
511
  select_an_iframe_access_level: Моля, изберете ниво на достъп до iframe
@@ -532,9 +516,7 @@ bg:
532
516
  see_all_withdrawn: Вижте всички оттеглени срещи
533
517
  text_banner: Разглеждате списъка с оттеглени от авторите срещи. %{go_back_link}.
534
518
  meeting:
535
- close_meeting: Затваряне на срещата
536
519
  edit_close_meeting: Редактиране на отчета за срещата
537
- edit_meeting: Редактиране на срещата
538
520
  join_meeting: Присъединяване към срещата
539
521
  reply_poll: Отговор на анкета
540
522
  view_poll: Вижте анкетата
@@ -571,7 +553,6 @@ bg:
571
553
  visit_finished: Вижте миналата среща
572
554
  withdraw_btn_hint: Можете да отмените срещата си, ако промените решението си. Срещата не се изтрива, тя ще се появи в списъка с оттеглени срещи.
573
555
  withdraw_confirmation_html: Сигурни ли сте, че искате да отмените тази среща?<br><br><strong>Това действие не може да бъде отменено!</strong>
574
- withdraw_meeting: Оттегляне на срещата
575
556
  update:
576
557
  invalid: Възникна проблем при актуализирането на срещата.
577
558
  success: Актуализирахте успешно срещата.
@@ -663,7 +644,6 @@ bg:
663
644
  transparent: Прозрачно
664
645
  withdraw: Оттеглено
665
646
  withdraw:
666
- error: Възникна грешка при оттеглянето на срещата.
667
647
  success: Срещата е оттеглена успешно.
668
648
  metrics:
669
649
  meetings: