decidim-meetings 0.29.2 → 0.30.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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 +106 -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: