decidim-meetings 0.28.2 → 0.29.0.rc2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-meetings might be problematic. Click here for more details.

Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +1 -1
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -2
  4. data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
  5. data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
  6. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
  7. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
  8. data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
  9. data/app/cells/decidim/meetings/meeting_l_cell.rb +0 -2
  10. data/app/cells/decidim/meetings/meeting_url/show.erb +5 -5
  11. data/app/cells/decidim/meetings/meeting_url_cell.rb +0 -1
  12. data/app/cells/decidim/meetings/online_meeting_link_cell.rb +0 -2
  13. data/app/cells/decidim/meetings/question_responses/show.erb +7 -3
  14. data/app/cells/decidim/meetings/question_responses_cell.rb +0 -2
  15. data/app/commands/decidim/meetings/admin/copy_meeting.rb +2 -2
  16. data/app/commands/decidim/meetings/admin/create_agenda.rb +9 -37
  17. data/app/commands/decidim/meetings/admin/create_meeting.rb +28 -61
  18. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +4 -33
  19. data/app/commands/decidim/meetings/admin/update_agenda.rb +7 -35
  20. data/app/commands/decidim/meetings/admin/update_meeting.rb +30 -68
  21. data/app/commands/decidim/meetings/admin/update_question_status.rb +1 -1
  22. data/app/commands/decidim/meetings/admin/update_questionnaire.rb +19 -11
  23. data/app/commands/decidim/meetings/admin/update_registrations.rb +20 -46
  24. data/app/commands/decidim/meetings/create_answer.rb +5 -4
  25. data/app/commands/decidim/meetings/create_meeting.rb +38 -62
  26. data/app/commands/decidim/meetings/join_meeting.rb +18 -19
  27. data/app/commands/decidim/meetings/update_meeting.rb +6 -7
  28. data/app/commands/decidim/meetings/withdraw_meeting.rb +1 -1
  29. data/app/controllers/concerns/decidim/meetings/admin/invites/filterable.rb +33 -0
  30. data/app/controllers/decidim/meetings/admin/agenda_controller.rb +1 -1
  31. data/app/controllers/decidim/meetings/admin/invites_controller.rb +6 -6
  32. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +2 -2
  33. data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +12 -0
  34. data/app/controllers/decidim/meetings/application_controller.rb +1 -1
  35. data/app/controllers/decidim/meetings/live_events_controller.rb +1 -1
  36. data/app/controllers/decidim/meetings/meetings_controller.rb +3 -33
  37. data/app/controllers/decidim/meetings/polls/answers_controller.rb +10 -2
  38. data/app/controllers/decidim/meetings/registrations_controller.rb +3 -3
  39. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +1 -1
  40. data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
  41. data/app/forms/decidim/meetings/answer_form.rb +4 -4
  42. data/app/forms/decidim/meetings/meeting_form.rb +1 -1
  43. data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
  44. data/app/models/decidim/meetings/meeting.rb +10 -4
  45. data/app/models/decidim/meetings/poll.rb +8 -0
  46. data/app/models/decidim/meetings/question.rb +1 -0
  47. data/app/models/decidim/meetings/questionnaire.rb +0 -6
  48. data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
  49. data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
  50. data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
  51. data/app/packs/src/decidim/meetings/poll.component.js +32 -4
  52. data/app/packs/stylesheets/decidim/meetings/_item.scss +109 -1
  53. data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
  54. data/app/permissions/decidim/meetings/permissions.rb +20 -0
  55. data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
  56. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
  57. data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +1 -1
  58. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
  59. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
  60. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
  61. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
  62. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
  63. data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
  64. data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
  65. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
  66. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
  67. data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
  68. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
  69. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
  70. data/app/views/decidim/meetings/admin/poll/_form.html.erb +26 -25
  71. data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
  72. data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
  73. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +1 -1
  74. data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
  75. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
  76. data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
  77. data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
  78. data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
  79. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  80. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -1
  81. data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
  82. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
  83. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
  84. data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
  85. data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
  86. data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
  87. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
  88. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
  89. data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
  90. data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
  91. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
  92. data/app/views/devise/mailer/join_meeting.html.erb +3 -1
  93. data/app/views/devise/mailer/join_meeting.text.erb +3 -1
  94. data/config/locales/ar.yml +0 -10
  95. data/config/locales/bg.yml +44 -12
  96. data/config/locales/ca.yml +44 -12
  97. data/config/locales/cs.yml +24 -11
  98. data/config/locales/de.yml +44 -12
  99. data/config/locales/el.yml +0 -10
  100. data/config/locales/en.yml +44 -12
  101. data/config/locales/es-MX.yml +44 -12
  102. data/config/locales/es-PY.yml +44 -12
  103. data/config/locales/es.yml +44 -12
  104. data/config/locales/eu.yml +44 -12
  105. data/config/locales/fi-plain.yml +44 -12
  106. data/config/locales/fi.yml +44 -12
  107. data/config/locales/fr-CA.yml +44 -12
  108. data/config/locales/fr.yml +44 -12
  109. data/config/locales/ga-IE.yml +0 -5
  110. data/config/locales/gl.yml +0 -4
  111. data/config/locales/hu.yml +0 -7
  112. data/config/locales/id-ID.yml +0 -3
  113. data/config/locales/is-IS.yml +0 -3
  114. data/config/locales/it.yml +0 -8
  115. data/config/locales/ja.yml +44 -12
  116. data/config/locales/lb.yml +0 -3
  117. data/config/locales/lt.yml +0 -10
  118. data/config/locales/lv.yml +0 -3
  119. data/config/locales/nl.yml +0 -10
  120. data/config/locales/no.yml +0 -9
  121. data/config/locales/pl.yml +44 -12
  122. data/config/locales/pt-BR.yml +17 -12
  123. data/config/locales/pt.yml +0 -8
  124. data/config/locales/ro-RO.yml +0 -10
  125. data/config/locales/ru.yml +0 -3
  126. data/config/locales/sk.yml +0 -3
  127. data/config/locales/sv.yml +0 -9
  128. data/config/locales/tr-TR.yml +0 -4
  129. data/config/locales/uk.yml +0 -3
  130. data/config/locales/zh-CN.yml +0 -4
  131. data/config/locales/zh-TW.yml +0 -10
  132. data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
  133. data/decidim-meetings.gemspec +1 -1
  134. data/lib/decidim/api/meeting_type.rb +3 -0
  135. data/lib/decidim/meetings/component.rb +2 -2
  136. data/lib/decidim/meetings/engine.rb +5 -1
  137. data/lib/decidim/meetings/meeting_serializer.rb +3 -1
  138. data/lib/decidim/meetings/seeds.rb +25 -15
  139. data/lib/decidim/meetings/test/factories.rb +1 -1
  140. data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
  141. data/lib/decidim/meetings/version.rb +1 -1
  142. data/lib/tasks/decidim_meetings.rake +1 -1
  143. metadata +22 -18
  144. data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
@@ -12,7 +12,7 @@
12
12
  <span><%= display_duration_agenda_items(agenda_item.id, index, agenda_items_times) %></span>
13
13
  </h3>
14
14
 
15
- <div class="meeting__agenda-item__description editor-content"><%= decidim_sanitize(translated_attribute(agenda_item.description)).html_safe %></div>
15
+ <div class="meeting__agenda-item__description editor-content"><%= decidim_sanitize_translated(agenda_item.description).html_safe %></div>
16
16
 
17
17
  <% if agenda_item.agenda_item_children.presence %>
18
18
  <% parent_start_time = agenda_items_times[index][:start_time] %>
@@ -24,7 +24,7 @@
24
24
  <span><%= translated_attribute(agenda_item_child.title) %></span>
25
25
  <span><%= display_duration_agenda_items(agenda_item_child.id, index_child, agenda_item_children_times) %></span>
26
26
  </h4>
27
- <div class="meeting__agenda-item__description"><%= decidim_sanitize(translated_attribute(agenda_item_child.description)).html_safe %></div>
27
+ <div class="meeting__agenda-item__description"><%= decidim_sanitize_translated(agenda_item_child.description).html_safe %></div>
28
28
  </div>
29
29
  <% end %>
30
30
  <% end %>
@@ -1,5 +1,7 @@
1
+ <%= render partial: "meeting_poll_actions" %>
2
+
1
3
  <% if meeting.can_be_joined_by?(current_user) || meeting.on_different_platform? %>
2
- <section class="layout-aside__section layout-aside__buttons">
4
+ <section class="layout-aside__section layout-aside__buttons layout-aside__ctas-buttons" data-sticky-buttons>
3
5
  <%= cell "decidim/meetings/join_meeting_button", meeting, show_remaining_slots: true %>
4
6
  </section>
5
7
  <% end %>
@@ -0,0 +1,15 @@
1
+ <% extra_classes = local_assigns.fetch(:mobile, false) ? " block md:hidden" : " hidden md:block" %>
2
+ <% if meeting.poll&.has_questions? %>
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 %>
9
+ <% if !allowed_to?(:reply_poll, :meeting, meeting:) && allowed_to?(:update, :poll, meeting:) %>
10
+ <%= link_to admin_meeting_polls_answers_path(meeting), class: "button button__sm button__transparent-secondary w-full" do %>
11
+ <span><%= t("administrate", scope: "decidim.meetings.polls.answers.index") %></span>
12
+ <% end %>
13
+ <% end %>
14
+ </section>
15
+ <% end %>
@@ -2,16 +2,12 @@
2
2
  <% question.answer_options.each_with_index do |answer_option, idx| %>
3
3
  <% choice = answer.choices.find { |choice| choice.decidim_answer_option_id == answer_option.id } if answer %>
4
4
 
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: %>
5
+ <%= label_tag "answer[choices][#{answer_option.id}][answer_option_id]", nil, class: "js-collection-input" do %>
6
+ <%= check_box_tag "answer[choices][#{answer_option.id}][answer_option_id]",
7
+ answer_option.id,
8
+ choice.present?, disabled: %>
10
9
 
11
- <%= translated_attribute(answer_option.body) %>
12
-
13
- <%= hidden_field_tag "answer[choices][#{idx}][answer_option_id]", answer_option.id, disabled: %>
14
- <% end %>
15
- </div>
10
+ <%= translated_attribute(answer_option.body) %>
11
+ <% end %>
16
12
  <% end %>
17
13
  </div>
@@ -3,17 +3,11 @@
3
3
  <% question.answer_options.each_with_index do |answer_option, idx| %>
4
4
  <% choice_id = "#{field_id}_choices_#{idx}" %>
5
5
 
6
- <%= label_tag "#{choice_id}_body" do %>
7
- <%= radio_button_tag "answer[choices][#{question.id}][body]",
8
- translated_attribute(answer_option.body),
6
+ <%= label_tag "#{choice_id}_answer_option" do %>
7
+ <%= radio_button_tag "answer[choices][#{question.id}][answer_option_id]",
8
+ answer_option.id,
9
9
  answer_option.id == choice.try(:decidim_answer_option_id),
10
- id: "#{choice_id}_body", disabled: %>
11
-
10
+ id: "#{choice_id}_answer_option", disabled: %>
12
11
  <%= translated_attribute(answer_option.body) %>
13
-
14
- <%= hidden_field_tag "answer[choices][#{question.id}][answer_option_id]",
15
- answer_option.id,
16
- id: "#{choice_id}_answer_option",
17
- disabled: %>
18
12
  <% end %>
19
13
  <% end %>
@@ -0,0 +1,34 @@
1
+ <% add_decidim_meta_tags({
2
+ title: present(meeting).title,
3
+ description: present(meeting).description,
4
+ url: meeting_url(meeting.id)
5
+ }) %>
6
+
7
+ <%= append_javascript_pack_tag "decidim_meetings" %>
8
+ <%= append_stylesheet_pack_tag "decidim_meetings" %>
9
+ <%= append_javascript_pack_tag "decidim_forms" %>
10
+
11
+ <% add_body_classes "meeting-poll__layout" %>
12
+
13
+ <%= render layout: "layouts/decidim/shared/layout_center" do %>
14
+ <div class="meeting-polls__topbar is-admin">
15
+ <%= link_to meeting_path(meeting), class: "button button__sm button__text md:button__text-secondary" do %>
16
+ <%= icon "arrow-left-line" %>
17
+ <%= t("back_to_meeting", scope: "decidim.meetings.polls.answers.index_admin") %>
18
+ <% end %>
19
+
20
+ <%= action_authorized_link_to :reply_poll, meeting_polls_answers_path(meeting), class: "button button__sm button__secondary", data: { "redirect_url" => meeting_polls_answers_path(meeting) }, resource: meeting do %>
21
+ <%= t("view_poll", scope: "decidim.meetings.polls.answers.index_admin") %>
22
+ <% end %>
23
+ </div>
24
+
25
+ <div class="text-center">
26
+ <h1 class="title-decorator inline-block text-left">
27
+ <%= t("title", scope: "decidim.meetings.polls.answers.index_admin") %>
28
+ </h1>
29
+ </div>
30
+
31
+ <div class="meeting-polls" id="admin-meeting-poll" data-decidim-admin-meetings-poll='{"questionsUrl":"<%= meeting_polls_questions_path(meeting, admin: true) %>"}'>
32
+ <%= render partial: "decidim/meetings/polls/questions/index_admin", locals: { open_question: nil } %>
33
+ </div>
34
+ <% end %>
@@ -0,0 +1,36 @@
1
+ <% add_decidim_meta_tags({
2
+ title: present(meeting).title,
3
+ description: present(meeting).description,
4
+ url: meeting_url(meeting.id)
5
+ }) %>
6
+
7
+ <%= append_javascript_pack_tag "decidim_meetings" %>
8
+ <%= append_stylesheet_pack_tag "decidim_meetings" %>
9
+ <%= append_javascript_pack_tag "decidim_forms" %>
10
+
11
+ <% add_body_classes "meeting-poll__layout" %>
12
+
13
+ <%= render layout: "layouts/decidim/shared/layout_center" do %>
14
+ <div class="meeting-polls__topbar">
15
+ <%= link_to meeting_path(meeting), class: "button button__sm button__text-secondary" do %>
16
+ <%= icon "arrow-left-line" %>
17
+ <%= t("back_to_meeting", scope: "decidim.meetings.polls.answers.index_admin") %>
18
+ <% end %>
19
+
20
+ <% if admin_allowed_to?(:update, :poll, meeting: meeting, poll: poll) %>
21
+ <%= link_to admin_meeting_polls_answers_path(meeting), class: "button button__sm button__primary" do %>
22
+ <%= t("administrate", scope: "decidim.meetings.polls.answers.index") %>
23
+ <% end %>
24
+ <% end %>
25
+ </div>
26
+
27
+ <div class="text-center">
28
+ <h1 class="title-decorator inline-block text-left">
29
+ <%= t("title", scope: "decidim.meetings.polls.answers.index") %>
30
+ </h1>
31
+ </div>
32
+
33
+ <div class="meeting-polls" id="meeting-poll" data-decidim-meetings-poll='{"questionsUrl":"<%= meeting_polls_questions_path(meeting) %>"}'>
34
+ <%= render partial: "decidim/meetings/polls/questions/index" %>
35
+ </div>
36
+ <% end %>
@@ -1,7 +1,13 @@
1
- <summary><%= t(".question_results") %></summary>
1
+ <summary>
2
+ <span><%= t(".question") %></span>
3
+ <span><%= t(".question_results") %></span>
4
+ </summary>
2
5
 
3
6
  <div>
4
- <p><%= translated_attribute(question.body) %></p>
7
+ <p class="h3"><%= translated_attribute(question.body) %></p>
8
+ <span id="<%= "closed-announcement-#{question.id}" %>" hidden>
9
+ <%= cell "decidim/announcement", t("announcement", scope: "decidim.meetings.polls.questions.closed_question"), callout_class: "warning" %>
10
+ </span>
5
11
 
6
12
  <%= cell "decidim/meetings/question_responses", question %>
7
13
  </div>
@@ -1,40 +1,43 @@
1
- <div class="meeting-polls__admin-label"><%= t(".admin_dashboard") %></div>
2
-
3
1
  <% questionnaire.questions.includes([:questionnaire]).each do |question| %>
4
2
  <details class="meeting-polls__question meeting-polls__question--admin open" data-question="<%= question.id %>" <%= "open" if open_question == question.id %>>
5
- <summary><%= t(".question") %></summary>
3
+ <summary>
4
+ <span><%= t(".question") %></span>
5
+ <span><%= t(question.status, scope: "decidim.meetings.polls.questions.index_admin.statuses") %></span>
6
+ </summary>
6
7
 
7
8
  <%= form_tag(meeting_polls_question_path(meeting, question), method: :patch, remote: true) do %>
8
- <div>
9
- <p><%= translated_attribute(question.body) %></p>
9
+ <p class="h3"><%= translated_attribute(question.body) %></p>
10
10
 
11
- <%= link_to t(".edit"), Decidim::EngineRouter.admin_proxy(meeting.component).edit_meeting_poll_path(meeting), target: "_blank", rel: "noopener noreferrer" %>
11
+ <% if question.unpublished? %>
12
+ <%= link_to(
13
+ t(".edit"),
14
+ Decidim::EngineRouter.admin_proxy(meeting.component).edit_meeting_poll_path(meeting),
15
+ class: "button button__xs button__secondary mr-auto mt-2",
16
+ target: "_blank",
17
+ rel: "noopener noreferrer"
18
+ ) %>
19
+ <% end %>
12
20
 
21
+ <div>
13
22
  <div class="meeting-polls__admin-action meeting-polls__admin-action-question">
14
- <div><%= t(".question") %></div>
15
- <div>
16
- <% if question.unpublished? %>
17
- <button class="button button__sm button__secondary"><%= t(".send") %></button>
18
- <% else %>
19
- <div><strong><%= t(".sent") %></strong></div>
20
- <div><%= pluralize(question.answers_count, t(".received_answer"), t(".received_answers")) %></div>
21
- <% end %>
22
- </div>
23
+ <div class="h4"><%= t(".question") %><%= " · " + t(".sent") if question.published? %></div>
24
+
25
+ <% if question.unpublished? %>
26
+ <button class="button button__sm button__secondary"><%= t(".send") %></button>
27
+ <% else %>
28
+ <div><%= pluralize(question.answers_count, t(".received_answer"), t(".received_answers")) %></div>
29
+ <% end %>
23
30
  </div>
31
+
24
32
  <div class="meeting-polls__admin-action meeting-polls__admin-action-results">
25
- <div><%= t(".results") %></div>
33
+ <div class="h4"><%= t(".results") %></div>
34
+
35
+ <button class="button button__sm button__secondary" <%= question.published? ? "" : "disabled" %>><%= question.closed? ? t(".sent") : t(".send") %></button>
36
+
26
37
  <div>
27
38
  <% unless question.unpublished? %>
28
39
  <%= cell "decidim/meetings/question_responses", question %>
29
40
  <% end %>
30
-
31
- <% if question.unpublished? %>
32
- <button class="button button__sm button__secondary" disabled><%= t(".send") %></button>
33
- <% elsif question.published? %>
34
- <button class="button button__sm button__secondary"><%= t(".send") %></button>
35
- <% elsif question.closed? %>
36
- <div class="mt-1"><strong><%= t(".sent") %></strong></div>
37
- <% end %>
38
41
  </div>
39
42
  </div>
40
43
  </div>
@@ -1,11 +1,15 @@
1
- <summary><%= t(".question") %></summary>
1
+ <summary>
2
+ <span><%= t(".question") %></span>
3
+ </summary>
2
4
 
3
5
  <div>
4
- <p><%= translated_attribute(question.body) %></p>
5
6
 
6
7
  <% @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 %>">
8
+
9
+ <p class="h3"><%= @form.label %></p>
10
+
11
+ <%= decidim_form_for(@form, url: meeting_polls_answers_path(meeting), method: :post, remote: true, html: { class: "form-defaults" }, data: { "safe-path" => meeting_live_event_path(meeting) }) do |form| %>
12
+ <div class="meeting-polls__answer" data-max-choices="<%= question.max_choices %>">
9
13
  <p class="form-error max-choices-alert mt-0 mb-4"><%= t(".max_choices_alert") %></p>
10
14
 
11
15
  <%= 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 } %>
@@ -15,13 +19,12 @@
15
19
  <% @form.errors.full_messages.each do |msg| %>
16
20
  <small class="form-error is-visible mt-1"><%= msg %></small>
17
21
  <% end %>
22
+
23
+ <% if question.answered_by?(current_user) %>
24
+ <%= cell("decidim/announcement", t(".question_replied"), callout_class: "success" ) %>
25
+ <% else %>
26
+ <button class="ml-auto mt-8 button button__lg button__secondary"><%= t(".reply_question") %></button>
27
+ <% end %>
18
28
  </div>
19
- <% if question.answered_by?(current_user) %>
20
- <%= cell("decidim/announcement", t(".question_replied"), callout_class: "success" ) %>
21
- <% else %>
22
- <div class="text-right">
23
- <button class="ml-auto button button button__sm button__secondary"><%= t(".reply_question") %></button>
24
- </div>
25
- <% end %>
26
29
  <% end %>
27
30
  </div>
@@ -1,4 +1,4 @@
1
- <details class="meeting-polls__question" data-question="<%= question.id %>" <%= "open" if local_assigns.fetch(:open_question, nil) == question %>>
1
+ <details class="meeting-polls__question" data-question="<%= question.id %>" data-status="<%= question.status %>" <%= "open" if local_assigns.fetch(:open_question, nil) == question %>>
2
2
  <% if question.published? %>
3
3
  <%= render partial: "decidim/meetings/polls/questions/published_question", locals: { question:, form: local_assigns.fetch(:form, nil) } %>
4
4
  <% elsif question.closed? %>
@@ -1,5 +1,5 @@
1
- var $aside = $("#meeting-poll-aside");
1
+ var $meetingPoll = $("[data-decidim-meetings-poll]");
2
2
 
3
- if($aside.length){
4
- $aside.html('<%= j(render partial: "decidim/meetings/polls/questions/index").strip.html_safe %>');
3
+ if($meetingPoll.length){
4
+ $meetingPoll.html('<%= j(render partial: "decidim/meetings/polls/questions/index").strip.html_safe %>');
5
5
  }
@@ -1,5 +1,5 @@
1
- var $aside = $("#admin-meeting-poll-aside");
1
+ var $adminMeetingPoll = $("[data-decidim-admin-meetings-poll]");
2
2
 
3
- if($aside.length){
4
- $aside.html('<%= j(render partial: "decidim/meetings/polls/questions/index_admin", locals: { open_question: }).strip.html_safe %>');
3
+ if($adminMeetingPoll.length){
4
+ $adminMeetingPoll.html('<%= j(render partial: "decidim/meetings/polls/questions/index_admin", locals: { open_question: }).strip.html_safe %>');
5
5
  }
@@ -1,7 +1,9 @@
1
1
  <p class="email-greeting"><%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %></p>
2
2
 
3
3
  <p class="email-instructions">
4
- <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
4
+ <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting",
5
+ invited_by: @resource.invited_by.name,
6
+ application: translated_attribute(@resource.organization.name)) %>
5
7
  </p>
6
8
 
7
9
  <p class="email-button email-button__cta cta-decline"><%= link_to t("devise.mailer.invitation_instructions.decline"), accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].component).decline_invitation_meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].component.participatory_space), host: @resource.organization.host) %></p>
@@ -1,6 +1,8 @@
1
1
  <%= t("devise.mailer.invitation_instructions.hello", email: @resource.name) %>
2
2
 
3
- <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting", invited_by: @resource.invited_by.name, application: @resource.organization.name) %>
3
+ <%= t("decidim.meetings.admin.invite_join_meeting_mailer.invite.invited_you_to_join_a_meeting",
4
+ invited_by: @resource.invited_by.name,
5
+ application: translated_attribute(@resource.organization.name)) %>
4
6
 
5
7
  <%= t("devise.mailer.invitation_instructions.decline") %>:
6
8
  <% accept_invitation_url(@resource, invitation_token: @token, invite_redirect: Decidim::EngineRouter.main_proxy(@opts[:meeting].component).decline_invitation_meeting_registration_path(meeting_id: @opts[:meeting], participatory_space_id: @opts[:meeting].component.participatory_space), host: @resource.organization.host) %>
@@ -267,12 +267,8 @@ ar:
267
267
  non_user: مشارك غير موجود
268
268
  select_user: اختر المشارك
269
269
  index:
270
- filter:
271
- all: الكل
272
- sent: أرسلت
273
270
  invite_attendee: دعوة الحضور
274
271
  invites: تدعو
275
- search: بحث
276
272
  meeting_closes:
277
273
  edit:
278
274
  close: قريب
@@ -372,7 +368,6 @@ ar:
372
368
  body: الاجتماع <a href="%{meeting_path}">"%{meeting_title}"</a> في انتظار إغلاقه. الرجاء إضافة تقرير عن الاجتماع باستخدام زر "إغلاق الاجتماع".
373
369
  greetings: تحيات,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
374
370
  hello: مرحبا %{username}،
375
- subject: يمكنك الآن إغلاق اجتماعك بتقديم تقرير على منصة %{organization_name}
376
371
  conference_venues: أماكن المؤتمر
377
372
  content_blocks:
378
373
  upcoming_meetings:
@@ -389,7 +384,6 @@ ar:
389
384
  iframe_embed_type:
390
385
  embed_in_meeting_page: تضمين في صفحة الاجتماع
391
386
  none: بلا
392
- open_in_live_event_page: فتح في صفحة الحدث المباشر (مع استطلاعات الرأي الاختيارية)
393
387
  open_in_new_tab: فتح عنوان الرابط URL في تبويب جديد
394
388
  last_activity:
395
389
  meeting_updated: 'تم تحديث الاجتماع:'
@@ -397,7 +391,6 @@ ar:
397
391
  layouts:
398
392
  live_event:
399
393
  close: إغلاق
400
- questions: الأسئلة
401
394
  mailer:
402
395
  invite_join_meeting_mailer:
403
396
  invite:
@@ -534,12 +527,9 @@ ar:
534
527
  title: عنوان
535
528
  polls:
536
529
  questions:
537
- closed_question:
538
- question_results: نتائج السؤال
539
530
  index:
540
531
  empty_questions: خلال هذا الاجتماع، سيتم إرسال بعض الأسئلة وسوف تتمكن من الإجابة عليها. سيتم عرضها هنا.
541
532
  index_admin:
542
- admin_dashboard: لوحة المدراء
543
533
  edit: تحرير في لوحة المدراء
544
534
  question: سؤال
545
535
  received_answer: الإجابة المتلقاة
@@ -91,6 +91,11 @@ bg:
91
91
  decidim:
92
92
  admin:
93
93
  filters:
94
+ accepted_at_not_null:
95
+ label: Прието
96
+ values:
97
+ 'false': Не се приема
98
+ 'true': Прието
94
99
  meetings:
95
100
  category_id_eq:
96
101
  label: Категория
@@ -118,6 +123,18 @@ bg:
118
123
  hybrid: Хибрид
119
124
  in_person: Лично
120
125
  online: Онлайн
126
+ rejected_at_not_null:
127
+ label: Отхвърлено
128
+ values:
129
+ 'false': Не е отхвърлено
130
+ 'true': Отхвърлено
131
+ search_placeholder:
132
+ user_name_or_user_email_cont: Търси по име или имейл
133
+ sent_at_not_null:
134
+ label: Изпратено
135
+ values:
136
+ 'false': Не е изпратено
137
+ 'true': Изпратено
121
138
  meeting_copies:
122
139
  create:
123
140
  error: Възникна проблем при дублирането на тази среща.
@@ -130,6 +147,7 @@ bg:
130
147
  actions:
131
148
  comment: Коментар
132
149
  join: Присъединяване
150
+ reply_poll: Отговор на анкета
133
151
  name: Срещи
134
152
  settings:
135
153
  global:
@@ -282,15 +300,9 @@ bg:
282
300
  non_user: Несъществуващ участник
283
301
  select_user: Избор на участник
284
302
  index:
285
- filter:
286
- accepted: Прието
287
- all: Всички
288
- rejected: Отхвърлено
289
- sent: Изпратено
290
303
  invite_attendee: Изпращане на покана на участника
291
304
  invites: Покани
292
305
  registrations_disabled: Не можете да поканите участник, защото регистрациите са изключени.
293
- search: Търсене
294
306
  meeting_closes:
295
307
  edit:
296
308
  close: Затвори
@@ -352,6 +364,13 @@ bg:
352
364
  update:
353
365
  invalid: Възникна проблем при актуализирането на тази анкета за среща.
354
366
  success: Анкетата за среща бе актуализирана успешно.
367
+ poll:
368
+ form:
369
+ announcement_html:
370
+ - Когато даден въпрос получи отговори или бъде публикуван/затворен, той вече не може да бъде редактиран.
371
+ - Можете да добавите въпрос по всяко време.
372
+ - Анкетата ще бъде затворена, когато резултатите от всички създадени въпроси бъдат публикувани.
373
+ - Посетете <a href='%{admin_link}'>страницата за администриране на анкетата</a>, за да изпратите въпроси и да публикувате резултати.
355
374
  registrations:
356
375
  edit:
357
376
  save: Запази
@@ -413,7 +432,7 @@ bg:
413
432
  body: Срещата <a href="%{meeting_path}">"%{meeting_title}"</a> предстои да бъде затворена. Моля, добавете отчет за срещата, като използвате бутона "Затвори срещата".
414
433
  greetings: Поздрав,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
415
434
  hello: Здравейте %{username},
416
- subject: Вече можете да затворите срещата си с отчет в платформата %{organization_name}
435
+ subject: Вече можете да затворите срещата „%{meeting_title}“ с доклад
417
436
  conference_venues: Места за провеждане на конференции
418
437
  content_blocks:
419
438
  upcoming_meetings:
@@ -430,16 +449,14 @@ bg:
430
449
  iframe_embed_type:
431
450
  embed_in_meeting_page: Вграждане в страницата на срещата
432
451
  none: Няма
433
- open_in_live_event_page: Отваряне в страницата на събитието на живо (с незадължителни анкети)
452
+ open_in_live_event_page: Отваряне в страницата на събитието на живо
434
453
  open_in_new_tab: Отваряне в страницата на събитието на живо
435
454
  last_activity:
436
455
  meeting_updated: 'Срещата е актуализирана:'
437
456
  new_meeting: 'Нова среща:'
438
457
  layouts:
439
458
  live_event:
440
- administrate: Администриране
441
459
  close: затваряне
442
- questions: Въпроси
443
460
  mailer:
444
461
  invite_join_meeting_mailer:
445
462
  invite:
@@ -520,6 +537,8 @@ bg:
520
537
  edit_close_meeting: Редактиране на отчета за срещата
521
538
  edit_meeting: Редактиране на срещата
522
539
  join_meeting: Присъединяване към срещата
540
+ reply_poll: Отговор на анкета
541
+ view_poll: Вижте анкетата
523
542
  meetings:
524
543
  no_meetings_warning: Няма срещи, които отговарят на вашите критерии за търсене или няма насрочена среща.
525
544
  upcoming_meetings_warning: Понастоящем няма насрочени срещи, но тук можете да намерите изброени всички минали срещи.
@@ -578,13 +597,22 @@ bg:
578
597
  start_time: Начална дата
579
598
  title: Заглавие
580
599
  polls:
600
+ answers:
601
+ index:
602
+ administrate: Администриране
603
+ title: Анкета
604
+ index_admin:
605
+ back_to_meeting: Назад към срещата
606
+ title: Администриране на анкета
607
+ view_poll: Вижте анкетата
581
608
  questions:
582
609
  closed_question:
583
- question_results: Резултати от въпроси
610
+ announcement: Отговорите на този въпрос са затворени.
611
+ question: Въпрос
612
+ question_results: Резултати
584
613
  index:
585
614
  empty_questions: По време на тази среща ще бъдат изпратени някои въпроси и вие ще можете да отговорите на тях. Те ще бъдат показани тук.
586
615
  index_admin:
587
- admin_dashboard: Администраторско табло
588
616
  edit: Редактирайте в админ панела
589
617
  question: Въпрос
590
618
  received_answer: получен отговор
@@ -592,6 +620,10 @@ bg:
592
620
  results: Резултати
593
621
  send: Изпрати
594
622
  sent: Изпратено
623
+ statuses:
624
+ closed: Резултатите са изпратени (затворено)
625
+ published: Изпратено (отворено)
626
+ unpublished: Чака изпращане
595
627
  published_question:
596
628
  max_choices_alert: Избрани са прекалено много варианти
597
629
  question: Въпрос