decidim-meetings 0.28.1 → 0.29.0.rc1
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.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +1 -1
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -2
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
- data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +1 -1
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
- data/app/cells/decidim/meetings/meeting_l/image.erb +3 -3
- data/app/cells/decidim/meetings/meeting_l_cell.rb +0 -2
- data/app/cells/decidim/meetings/meeting_url/show.erb +5 -5
- data/app/cells/decidim/meetings/meeting_url_cell.rb +0 -1
- data/app/cells/decidim/meetings/online_meeting_link_cell.rb +0 -2
- data/app/cells/decidim/meetings/question_responses/show.erb +7 -3
- data/app/cells/decidim/meetings/question_responses_cell.rb +0 -2
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +2 -2
- data/app/commands/decidim/meetings/admin/create_agenda.rb +9 -37
- data/app/commands/decidim/meetings/admin/create_meeting.rb +28 -61
- data/app/commands/decidim/meetings/admin/destroy_meeting.rb +4 -33
- data/app/commands/decidim/meetings/admin/update_agenda.rb +7 -35
- data/app/commands/decidim/meetings/admin/update_meeting.rb +30 -68
- data/app/commands/decidim/meetings/admin/update_question_status.rb +1 -1
- data/app/commands/decidim/meetings/admin/update_questionnaire.rb +19 -11
- data/app/commands/decidim/meetings/admin/update_registrations.rb +20 -46
- data/app/commands/decidim/meetings/create_answer.rb +5 -4
- data/app/commands/decidim/meetings/create_meeting.rb +38 -62
- data/app/commands/decidim/meetings/join_meeting.rb +18 -19
- data/app/commands/decidim/meetings/update_meeting.rb +6 -7
- data/app/commands/decidim/meetings/withdraw_meeting.rb +1 -1
- data/app/controllers/concerns/decidim/meetings/admin/invites/filterable.rb +33 -0
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +1 -1
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +2 -2
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +12 -0
- data/app/controllers/decidim/meetings/application_controller.rb +1 -1
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -1
- data/app/controllers/decidim/meetings/meetings_controller.rb +3 -33
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +10 -2
- data/app/controllers/decidim/meetings/registrations_controller.rb +3 -3
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
- data/app/forms/decidim/meetings/answer_form.rb +4 -4
- data/app/forms/decidim/meetings/meeting_form.rb +1 -1
- data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +15 -5
- data/app/models/decidim/meetings/poll.rb +8 -0
- data/app/models/decidim/meetings/question.rb +1 -0
- data/app/models/decidim/meetings/questionnaire.rb +0 -6
- data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
- data/app/packs/src/decidim/meetings/poll.component.js +32 -4
- data/app/packs/stylesheets/decidim/meetings/_item.scss +109 -1
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
- data/app/permissions/decidim/meetings/permissions.rb +20 -0
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +0 -4
- data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +12 -6
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
- data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +26 -25
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +1 -1
- data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
- data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
- data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
- data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -2
- data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
- data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
- data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
- data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
- data/app/views/devise/mailer/join_meeting.html.erb +3 -1
- data/app/views/devise/mailer/join_meeting.text.erb +3 -1
- data/config/locales/ar.yml +0 -11
- data/config/locales/bg.yml +682 -0
- data/config/locales/ca.yml +45 -13
- data/config/locales/cs.yml +24 -12
- data/config/locales/de.yml +44 -12
- data/config/locales/el.yml +0 -11
- data/config/locales/en.yml +44 -12
- data/config/locales/es-MX.yml +44 -12
- data/config/locales/es-PY.yml +44 -12
- data/config/locales/es.yml +44 -12
- data/config/locales/eu.yml +44 -12
- data/config/locales/fi-plain.yml +44 -12
- data/config/locales/fi.yml +44 -12
- data/config/locales/fr-CA.yml +44 -12
- data/config/locales/fr.yml +44 -12
- data/config/locales/ga-IE.yml +0 -5
- data/config/locales/gl.yml +0 -5
- data/config/locales/hu.yml +0 -8
- data/config/locales/id-ID.yml +0 -3
- data/config/locales/is-IS.yml +0 -3
- data/config/locales/it.yml +0 -9
- data/config/locales/ja.yml +44 -12
- data/config/locales/lb.yml +0 -3
- data/config/locales/lt.yml +0 -11
- data/config/locales/lv.yml +0 -3
- data/config/locales/nl.yml +0 -11
- data/config/locales/no.yml +0 -10
- data/config/locales/pl.yml +137 -9
- data/config/locales/pt-BR.yml +17 -13
- data/config/locales/pt.yml +0 -9
- data/config/locales/ro-RO.yml +0 -11
- data/config/locales/ru.yml +0 -3
- data/config/locales/sk.yml +0 -3
- data/config/locales/sv.yml +0 -10
- data/config/locales/tr-TR.yml +3 -4
- data/config/locales/uk.yml +0 -3
- data/config/locales/zh-CN.yml +0 -4
- data/config/locales/zh-TW.yml +0 -11
- data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
- data/decidim-meetings.gemspec +1 -1
- data/lib/decidim/api/meeting_type.rb +3 -0
- data/lib/decidim/meetings/component.rb +2 -2
- data/lib/decidim/meetings/engine.rb +5 -1
- data/lib/decidim/meetings/meeting_serializer.rb +3 -1
- data/lib/decidim/meetings/seeds.rb +25 -18
- data/lib/decidim/meetings/test/factories.rb +1 -1
- data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- data/lib/tasks/decidim_meetings.rake +1 -1
- metadata +26 -23
- data/app/presenters/decidim/meetings/log/resource_presenter.rb +0 -18
- data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
@@ -22,7 +22,7 @@ module Decidim
|
|
22
22
|
class MeetingToEvent
|
23
23
|
include ActionView::Helpers::SanitizeHelper
|
24
24
|
|
25
|
-
# Initializes the
|
25
|
+
# Initializes the converter for the given meeting.
|
26
26
|
#
|
27
27
|
# meeting - the Meeting to convert
|
28
28
|
def initialize(meeting)
|
@@ -27,7 +27,7 @@ module Decidim
|
|
27
27
|
Decidim::Meetings::Meeting
|
28
28
|
.published
|
29
29
|
.not_hidden
|
30
|
-
.
|
30
|
+
.not_withdrawn
|
31
31
|
.where(
|
32
32
|
"decidim_component_id = ? AND end_time >= ? AND end_time <= ? AND closed_at IS NULL",
|
33
33
|
component_id,
|
@@ -38,11 +38,9 @@ module Decidim
|
|
38
38
|
|
39
39
|
def send_reminders(component)
|
40
40
|
intervals = Array(reminder_manifest.settings.attributes[:reminder_times].default)
|
41
|
-
space_admins = Decidim::ParticipatoryProcessUserRole.where(decidim_participatory_process_id: component.participatory_space_id, role: "admin").collect(&:user)
|
42
|
-
space_admins = (global_admins + space_admins).uniq
|
43
41
|
intervals.each do |interval|
|
44
42
|
finder_query(component.id, interval).find_each do |meeting|
|
45
|
-
authors = meeting.official? ? space_admins : [meeting.author]
|
43
|
+
authors = meeting.official? ? space_admins(component) : [meeting.author]
|
46
44
|
authors.each do |author|
|
47
45
|
send_notif = author.notification_settings.fetch("close_meeting_reminder", "1")
|
48
46
|
next unless send_notif == "1"
|
@@ -60,8 +58,16 @@ module Decidim
|
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
|
-
def
|
64
|
-
@
|
61
|
+
def space_admins(component)
|
62
|
+
@space_admins ||= begin
|
63
|
+
space_admins = if component.participatory_space.respond_to?(:user_roles)
|
64
|
+
component.participatory_space.user_roles(:admin).collect(&:user)
|
65
|
+
else
|
66
|
+
[]
|
67
|
+
end
|
68
|
+
global_admins = component.organization.admins
|
69
|
+
(global_admins + space_admins).uniq
|
70
|
+
end
|
65
71
|
end
|
66
72
|
end
|
67
73
|
end
|
@@ -5,7 +5,7 @@ require "cgi"
|
|
5
5
|
module Decidim
|
6
6
|
module Meetings
|
7
7
|
# This class handles the streaming url to be included in the iframe present
|
8
|
-
# in the live event. For some services it is required to
|
8
|
+
# in the live event. For some services it is required to transform a bit
|
9
9
|
# the structure of the URL.
|
10
10
|
class MeetingIframeEmbedder
|
11
11
|
# Public: Initializes the service.
|
@@ -55,7 +55,7 @@ module Decidim
|
|
55
55
|
@embeddable_services ||= Meetings.embeddable_services
|
56
56
|
end
|
57
57
|
|
58
|
-
#
|
58
|
+
# YouTube transformation consists on:
|
59
59
|
# 1. extract the video id from the parameter v
|
60
60
|
# 2. Create a new URL using the domain youtube-nocookie.com, converting it to an embed
|
61
61
|
# and appending the video id
|
@@ -6,15 +6,15 @@
|
|
6
6
|
<%== "#{icon("drag-move-2-fill")} #{t(".agenda_item")}" %>
|
7
7
|
</span>
|
8
8
|
|
9
|
-
<button class="button button__sm button__transparent-secondary small alert
|
9
|
+
<button class="button button__sm button__transparent-secondary small alert move-up-agenda-item button--title">
|
10
10
|
<%== "#{icon("arrow-up-line")} #{t(".up")}" %>
|
11
11
|
</button>
|
12
12
|
|
13
|
-
<button class="button button__sm button__transparent-secondary small alert
|
13
|
+
<button class="button button__sm button__transparent-secondary small alert move-down-agenda-item button--title">
|
14
14
|
<%== "#{icon("arrow-down-line")} #{t(".down")}" %>
|
15
15
|
</button>
|
16
16
|
|
17
|
-
<button class="button button__sm button__transparent-secondary small alert
|
17
|
+
<button class="button button__sm button__transparent-secondary small alert remove-agenda-item button--title">
|
18
18
|
<%= t(".remove") %>
|
19
19
|
</button>
|
20
20
|
</h2>
|
@@ -6,15 +6,15 @@
|
|
6
6
|
<%== "#{icon("drag-move-2-fill")} #{t(".agenda_item_child")}" %>
|
7
7
|
</span>
|
8
8
|
|
9
|
-
<button class="button button__sm button__transparent-secondary small alert
|
9
|
+
<button class="button button__sm button__transparent-secondary small alert move-up-agenda-item-child button--title">
|
10
10
|
<%== "#{icon("arrow-up-line")} #{t(".up")}" %>
|
11
11
|
</button>
|
12
12
|
|
13
|
-
<button class="button button__sm button__transparent-secondary small alert
|
13
|
+
<button class="button button__sm button__transparent-secondary small alert move-down-agenda-item-child button--title">
|
14
14
|
<%== "#{icon("arrow-down-line")} #{t(".down")}" %>
|
15
15
|
</button>
|
16
16
|
|
17
|
-
<button class="button button__sm button__transparent-secondary small alert
|
17
|
+
<button class="button button__sm button__transparent-secondary small alert remove-agenda-item-child button--title">
|
18
18
|
<%= t(".remove") %>
|
19
19
|
</button>
|
20
20
|
</h2>
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<div class="grid-x">
|
2
|
-
<div class="cell
|
2
|
+
<div class="cell">
|
3
3
|
<%= form.translated :text_field, :title, tabs_id:, aria: { label: :title } %>
|
4
4
|
</div>
|
5
|
-
<div class="cell
|
5
|
+
<div class="cell">
|
6
6
|
<%= form.number_field :duration, tabs_id:, min: 0 %>
|
7
7
|
</div>
|
8
8
|
</div>
|
9
9
|
|
10
10
|
<div class="grid-x">
|
11
|
-
<div class="cell
|
11
|
+
<div class="cell">
|
12
12
|
<%= form.translated :editor, :description, tabs_id:, rows: 6, aria: { label: :description } %>
|
13
13
|
</div>
|
14
14
|
</div>
|
@@ -1,7 +1,9 @@
|
|
1
1
|
<p class="email-greeting"><%= t("devise.mailer.invitation_instructions.hello", email: @user.name) %></p>
|
2
2
|
|
3
3
|
<p class="email-instructions">
|
4
|
-
<%= t ".invited_you_to_join_a_meeting",
|
4
|
+
<%= t ".invited_you_to_join_a_meeting",
|
5
|
+
invited_by: @invited_by.name,
|
6
|
+
application: translated_attribute(@user.organization.name) %>
|
5
7
|
</p>
|
6
8
|
|
7
9
|
<p class="email-button email-button__cta cta-decline">
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<div id="panel-attendee" class="card-section">
|
13
13
|
|
14
14
|
<div class="row column">
|
15
|
-
<fieldset
|
15
|
+
<fieldset>
|
16
16
|
<%= form.collection_radio_buttons(:existing_user, [[t(".non_user"), false], [t(".existing_user"), true]], :last, :first) %>
|
17
17
|
</fieldset>
|
18
18
|
</div>
|
@@ -22,14 +22,14 @@
|
|
22
22
|
</div>
|
23
23
|
|
24
24
|
<div class="row column">
|
25
|
-
<div class="
|
25
|
+
<div class="cell attendee-fields--new-user">
|
26
26
|
<%= form.text_field :name, disabled: %>
|
27
27
|
</div>
|
28
|
-
<div class="
|
28
|
+
<div class="cell attendee-fields--new-user">
|
29
29
|
<%= form.text_field :email, disabled: %>
|
30
30
|
</div>
|
31
31
|
|
32
|
-
<div class="
|
32
|
+
<div class="cell attendee-fields--user-picker">
|
33
33
|
<% prompt_options = { url: decidim_admin.users_organization_url, placeholder: t(".select_user") } %>
|
34
34
|
<%= form.autocomplete_select(:user_id, form.object.user.presence, { multiple: false, class: "autocomplete-field--results-inline" }, prompt_options) do |user|
|
35
35
|
{ value: user.id, label: "#{user.name} (@#{user.nickname})" }
|
@@ -18,38 +18,8 @@
|
|
18
18
|
<% end %>
|
19
19
|
<% end %>
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
<div class="filters__section mt-4">
|
24
|
-
<div class="fcell">
|
25
|
-
<ul class="dropdown menu" data-dropdown-menu data-click-open="true" data-close-on-click-inside="false">
|
26
|
-
<li class="is-dropdown-submenu-parent">
|
27
|
-
<a href="#" class="dropdown button">
|
28
|
-
<%= t("filter_label", scope: "decidim.admin.filters") %>
|
29
|
-
<%= icon "arrow-down-s-line", class: "dropdown-filter-icon" %>
|
30
|
-
</a>
|
31
|
-
<ul class="menu is-dropdown-submenu">
|
32
|
-
<li><%= link_to t(".filter.sent"), url_for(status: "sent", q: @query) %></li>
|
33
|
-
<li><%= link_to t(".filter.accepted"), url_for(status: "accepted", q: @query) %></li>
|
34
|
-
<li><%= link_to t(".filter.rejected"), url_for(status: "rejected", q: @query) %></li>
|
35
|
-
<li><%= link_to t(".filter.all"), url_for(q: @query) %></li>
|
36
|
-
</ul>
|
37
|
-
</li>
|
38
|
-
</ul>
|
39
|
-
</div>
|
40
|
-
<div class="fcell search">
|
41
|
-
<%= form_tag "", method: :get do %>
|
42
|
-
<div class="input-group">
|
43
|
-
<%= search_field_tag :q, @query,label: false, class: "input-group-field", placeholder: t(".search") %>
|
44
|
-
<%= hidden_field_tag :state, @state %>
|
45
|
-
<div class="input-group-button">
|
46
|
-
<button type="submit" class="text-secondary" aria-label="<%= t("decidim.search.term_input_placeholder") %>">
|
47
|
-
<%= icon "search-line", class: "fill-secondary w-4 h-4" %>
|
48
|
-
</button>
|
49
|
-
</div>
|
50
|
-
</div>
|
51
|
-
<% end %>
|
52
|
-
</div>
|
21
|
+
<div class="mt-4">
|
22
|
+
<%= admin_filter_selector %>
|
53
23
|
</div>
|
54
24
|
|
55
25
|
<div class="card" id="meeting-invites">
|
@@ -67,7 +37,7 @@
|
|
67
37
|
</tr>
|
68
38
|
</thead>
|
69
39
|
<tbody>
|
70
|
-
<% invites.each do |invite| %>
|
40
|
+
<% @invites.each do |invite| %>
|
71
41
|
<% presenter = Decidim::Meetings::InvitePresenter.new(invite) %>
|
72
42
|
<tr data-id="<%= invite.id %>">
|
73
43
|
<td>
|
@@ -90,6 +60,6 @@
|
|
90
60
|
</table>
|
91
61
|
</div>
|
92
62
|
</div>
|
93
|
-
<%= decidim_paginate invites %>
|
63
|
+
<%= decidim_paginate @invites %>
|
94
64
|
</div>
|
95
65
|
</div>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<div class="form__wrapper">
|
2
2
|
<div class="card pt-4">
|
3
3
|
<div class="card-section">
|
4
|
-
<div class="row column
|
4
|
+
<div class="row column">
|
5
5
|
<%= form.translated :text_field, :title, autofocus: true, class: "js-hashtags", hashtaggable: true, aria: { label: :title } %>
|
6
6
|
</div>
|
7
7
|
|
8
|
-
<div class="row column
|
8
|
+
<div class="row column">
|
9
9
|
<%= form.translated :editor, :description, hashtaggable: true, aria: { label: :description } %>
|
10
10
|
</div>
|
11
11
|
|
@@ -16,11 +16,11 @@
|
|
16
16
|
{ multiple: false } %>
|
17
17
|
</div>
|
18
18
|
|
19
|
-
<div class="row column
|
19
|
+
<div class="row column" data-meeting-type="in_person">
|
20
20
|
<%= form.geocoding_field :address, help_text: t(".address_help") %>
|
21
21
|
</div>
|
22
22
|
|
23
|
-
<div class="row column
|
23
|
+
<div class="row column" data-meeting-type="in_person">
|
24
24
|
<%= form.translated :text_area, :location, help_text: t(".location_help") %>
|
25
25
|
</div>
|
26
26
|
|
@@ -28,12 +28,12 @@
|
|
28
28
|
<%= form.translated :text_area, :location_hints, help_text: t(".location_hints_help") %>
|
29
29
|
</div>
|
30
30
|
|
31
|
-
<div class="row column
|
31
|
+
<div class="row column" data-meeting-type="online">
|
32
32
|
<%= form.text_field :online_meeting_url, help_text: t(".online_meeting_url_help") %>
|
33
33
|
</div>
|
34
34
|
|
35
35
|
<div class="iframe-fields">
|
36
|
-
<div class="row column
|
36
|
+
<div class="row column iframe-fields--embed-type" id="meeting_iframe_embed_type" data-meeting-type="online">
|
37
37
|
<%= form.select :iframe_embed_type,
|
38
38
|
@form.iframe_embed_type_select,
|
39
39
|
{
|
@@ -42,7 +42,7 @@
|
|
42
42
|
} %>
|
43
43
|
</div>
|
44
44
|
|
45
|
-
<div class="row column
|
45
|
+
<div class="row column iframe-fields--access-level" data-meeting-type="online-access-level">
|
46
46
|
<%= form.select :iframe_access_level,
|
47
47
|
@form.iframe_access_level_select,
|
48
48
|
{ include_blank: t(".select_an_iframe_access_level") },
|
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
<div class="row column" id="meeting_registration_url">
|
82
82
|
<%= form.text_field :registration_url, help_text: t(".registration_url_help") %>
|
83
|
-
<%= cell("decidim/announcement", t(".disclaimer", organization: current_component.organization
|
83
|
+
<%= cell("decidim/announcement", t(".disclaimer", organization: organization_name(current_component.organization)), callout_class: "alert" ) %>
|
84
84
|
</div>
|
85
85
|
|
86
86
|
<div class="row column" id="private_meeting">
|
@@ -6,17 +6,17 @@
|
|
6
6
|
<span><%= t(".service") %></span>
|
7
7
|
|
8
8
|
<div class="ml-auto flex gap-x-4">
|
9
|
-
<button class="button button__sm button__transparent-secondary small alert
|
9
|
+
<button class="button button__sm button__transparent-secondary small alert move-up-service button--title">
|
10
10
|
<%= icon "arrow-up-line" %>
|
11
11
|
<%= t(".up") %>
|
12
12
|
</button>
|
13
13
|
|
14
|
-
<button class="button button__sm button__transparent-secondary small alert
|
14
|
+
<button class="button button__sm button__transparent-secondary small alert move-down-service button--title">
|
15
15
|
<%= icon "arrow-down-line" %>
|
16
16
|
<%= t(".down") %>
|
17
17
|
</button>
|
18
18
|
|
19
|
-
<button class="button button__sm button__transparent-secondary small alert
|
19
|
+
<button class="button button__sm button__transparent-secondary small alert remove-service button--title">
|
20
20
|
<%= t(".remove") %>
|
21
21
|
</button>
|
22
22
|
</div>
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<%= sort_link(query, :scope_name, t("models.proposal.fields.scope", scope: "decidim.proposals") ) %>
|
38
38
|
</th>
|
39
39
|
<% end %>
|
40
|
-
<th
|
40
|
+
<th><%= t("actions.title", scope: "decidim.meetings") %></th>
|
41
41
|
</tr>
|
42
42
|
</thead>
|
43
43
|
<tbody>
|
@@ -138,7 +138,7 @@
|
|
138
138
|
<% else %>
|
139
139
|
<%=
|
140
140
|
content_tag(:button,
|
141
|
-
class
|
141
|
+
:class => ["action-icon", "action-icon--remove", "destroy-meeting-alert"],
|
142
142
|
"data-invalid-destroy-message" => t("actions.invalid_destroy.proposals_count", count: present(meeting).authored_proposals.size, scope: "decidim.meetings"),
|
143
143
|
"data-proposal-titles" => present(meeting).formatted_proposals_titles) do
|
144
144
|
content_tag(:span,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<h2 class="card-title">
|
6
6
|
<span><%= t("answer_option", scope: "decidim.forms.admin.questionnaires.answer_option") %></span>
|
7
7
|
<% if editable %>
|
8
|
-
<button class="button button__sm button__transparent-secondary small alert
|
8
|
+
<button class="button button__sm button__transparent-secondary small alert remove-answer-option button--title mb-2">
|
9
9
|
<%= icon("delete-bin-line") %>
|
10
10
|
<%= t("remove", scope: "decidim.forms.admin.questionnaires.answer_option") %>
|
11
11
|
</button>
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
<script type="text/template" class="decidim-answer-option-template decidim-template" id="<%= template_id %>">
|
4
4
|
<%= fields_for "questionnaire[questions][#{question.to_param}][answer_options][]", blank_answer_option do |answer_option_form| %>
|
5
|
-
<%= render "decidim/meetings/admin/poll/answer_option", form: answer_option_form, question:, editable: %>
|
5
|
+
<%= render "decidim/meetings/admin/poll/answer_option", form: answer_option_form, question:, editable: question.editable? %>
|
6
6
|
<% end %>
|
7
7
|
</script>
|
@@ -4,19 +4,24 @@
|
|
4
4
|
<button type="button" class="button button__sm button__secondary expand-all"><%= t("expand", scope: "decidim.forms.admin.questionnaires.form") %></button>
|
5
5
|
</div>
|
6
6
|
|
7
|
-
<%
|
8
|
-
|
9
|
-
|
10
|
-
<%=
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
<% announcement_body = capture do %>
|
8
|
+
<ul>
|
9
|
+
<% t("announcement_html", admin_link: Decidim::EngineRouter.main_proxy(meeting.component).admin_meeting_polls_answers_path(meeting), scope: "decidim.meetings.admin.poll.form").each do |item| %>
|
10
|
+
<li> <%= item %></li>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
13
|
+
<% end %>
|
14
|
+
<%= cell("decidim/announcement", { body: announcement_body }, callout_class: "info") %>
|
15
|
+
|
16
|
+
<%= fields_for "questionnaire[questions][#{blank_question.to_param}]", blank_question do |question_form| %>
|
17
|
+
<script type="text/template" class="decidim-question-template decidim-template" id="question-template">
|
18
|
+
<%= render "decidim/meetings/admin/poll/question",
|
19
|
+
form: question_form,
|
20
|
+
id: tabs_id_for_question(blank_question),
|
21
|
+
editable: true,
|
22
|
+
answer_option_template_selector: "#answer-option-template-dummy" %>
|
23
|
+
</script>
|
24
|
+
<%= render "decidim/meetings/admin/poll/answer_option_template", form: question_form, editable: true, template_id: "answer-option-template-dummy" %>
|
20
25
|
<% end %>
|
21
26
|
|
22
27
|
<div class="questionnaire-questions-list flex flex-col py-6 gap-6 last:pb-0">
|
@@ -25,24 +30,20 @@
|
|
25
30
|
<%= render "decidim/meetings/admin/poll/question",
|
26
31
|
form: question_form,
|
27
32
|
id: tabs_id_for_question(question),
|
28
|
-
editable:
|
33
|
+
editable: question.editable?,
|
29
34
|
answer_option_template_selector: "#answer-option-template-#{index}" %>
|
30
|
-
<%= render "decidim/meetings/admin/poll/answer_option_template", form: question_form, editable:
|
35
|
+
<%= render "decidim/meetings/admin/poll/answer_option_template", form: question_form, editable: question.editable?, template_id: "answer-option-template-#{index}" %>
|
31
36
|
<% end %>
|
32
37
|
<% end %>
|
33
38
|
</div>
|
34
39
|
|
35
|
-
|
36
|
-
<button class="button button__sm button__secondary add-question"><%= t("add_question", scope: "decidim.forms.admin.questionnaires.form") %></button>
|
37
|
-
<% end %>
|
40
|
+
<button class="button button__sm button__secondary add-question"><%= t("add_question", scope: "decidim.forms.admin.questionnaires.form") %></button>
|
38
41
|
</div>
|
39
42
|
|
40
43
|
<%= append_javascript_pack_tag "decidim_forms_admin" %>
|
41
44
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
</script>
|
48
|
-
<% end %>
|
45
|
+
<script>
|
46
|
+
document.addEventListener("DOMContentLoaded", function () {
|
47
|
+
window.Decidim.createEditableForm()
|
48
|
+
})
|
49
|
+
</script>
|
@@ -2,11 +2,13 @@
|
|
2
2
|
<% is_expanded = question.errors.any? %>
|
3
3
|
<div class="card questionnaire-question" id="<%= id %>-field">
|
4
4
|
<div class="form__wrapper" data-component="accordion">
|
5
|
-
<div class="card-divider
|
5
|
+
<div class="card-divider">
|
6
6
|
<h2 class="card-title">
|
7
7
|
<span>
|
8
8
|
<% if editable %>
|
9
9
|
<%== icon("drag-move-2-fill") %>
|
10
|
+
<% else %>
|
11
|
+
<%== icon("lock-line") %>
|
10
12
|
<% end %>
|
11
13
|
<%= dynamic_title(translated_attribute(question.body), class: "question-title-statement", max_length: 50, omission: "...", placeholder: t("question", scope: "decidim.forms.admin.questionnaires.question")) %>
|
12
14
|
</span>
|
@@ -22,18 +24,18 @@
|
|
22
24
|
</span>
|
23
25
|
</button>
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
</button>
|
27
|
+
<button class="button button__sm button__transparent-secondary small alert move-up-question button--title">
|
28
|
+
<%= icon "arrow-up-line" %>
|
29
|
+
<span><%= t("up", scope: "decidim.forms.admin.questionnaires.question") %></span>
|
30
|
+
</button>
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
<button class="button button__sm button__transparent-secondary small alert move-down-question button--title">
|
33
|
+
<%= icon "arrow-down-line" %>
|
34
|
+
<span><%= t("down", scope: "decidim.forms.admin.questionnaires.question") %></span>
|
35
|
+
</button>
|
35
36
|
|
36
|
-
|
37
|
+
<% if editable %>
|
38
|
+
<button class="button button__sm button__transparent-secondary small alert remove-question button--title">
|
37
39
|
<%= t("remove", scope: "decidim.forms.admin.questionnaires.question") %>
|
38
40
|
</button>
|
39
41
|
<% end %>
|
@@ -66,17 +68,17 @@
|
|
66
68
|
</div>
|
67
69
|
|
68
70
|
<% if question.persisted? %>
|
69
|
-
<%= form.hidden_field :id
|
71
|
+
<%= form.hidden_field :id %>
|
70
72
|
<% end %>
|
71
73
|
|
72
|
-
<%= form.hidden_field :position, value: question.position || 0
|
74
|
+
<%= form.hidden_field :position, value: question.position || 0 %>
|
73
75
|
<%= form.hidden_field :deleted, disabled: !editable %>
|
74
76
|
|
75
|
-
<div class="questionnaire-question-answer-options" data-template="<%= answer_option_template_selector %>">
|
77
|
+
<div class="questionnaire-question-answer-options<%= question.editable? ? "" : "-disabled" %>" data-template="<%= answer_option_template_selector %>">
|
76
78
|
<div class="questionnaire-question-answer-options-list">
|
77
79
|
<% question.answer_options.each do |answer_option| %>
|
78
80
|
<%= fields_for "questionnaire[questions][#{question.to_param}][answer_options][]", answer_option do |answer_option_form| %>
|
79
|
-
<%= render "decidim/meetings/admin/poll/answer_option", form: answer_option_form, question:, editable: %>
|
81
|
+
<%= render "decidim/meetings/admin/poll/answer_option", form: answer_option_form, question:, editable: question.editable? %>
|
80
82
|
<% end %>
|
81
83
|
<% end %>
|
82
84
|
</div>
|
@@ -87,7 +89,7 @@
|
|
87
89
|
<% end %>
|
88
90
|
</div>
|
89
91
|
|
90
|
-
<div class="row column questionnaire-question-max-choices">
|
92
|
+
<div class="row column questionnaire-question-max-choices<%= question.editable? ? "" : "-disabled" %>">
|
91
93
|
<%=
|
92
94
|
form.select(
|
93
95
|
:max_choices,
|
@@ -17,13 +17,11 @@
|
|
17
17
|
<%= decidim_form_for(@form, url: update_url, method: :put, html: { class: "form-defaults form edit_questionnaire" }) do |form| %>
|
18
18
|
<%= render partial: "decidim/meetings/admin/poll/form", object: form %>
|
19
19
|
|
20
|
-
|
21
|
-
<div class="item__edit-sticky">
|
22
|
-
|
23
|
-
<%= form.submit t("save", scope: "decidim.forms.admin.questionnaires.edit"), class: "button button__sm button__secondary" %>
|
24
|
-
</div>
|
20
|
+
<div class="item__edit-sticky">
|
21
|
+
<div class="item__edit-sticky-container">
|
22
|
+
<%= form.submit t("save", scope: "decidim.forms.admin.questionnaires.edit"), class: "button button__sm button__secondary" %>
|
25
23
|
</div>
|
26
|
-
|
24
|
+
</div>
|
27
25
|
<% end %>
|
28
26
|
</div>
|
29
27
|
</div>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<div class="flex items-center gap-x-4 ml-auto">
|
6
6
|
<%= link_to t("invites", scope: "decidim.meetings.admin.registrations.form"), meeting_registrations_invites_path(meeting), class: "button button__sm button__secondary #{"disabled" unless allowed_to? :read_invites, :meeting, meeting: meeting}" %>
|
7
7
|
<% if allowed_to? :export_registrations, :meeting, meeting: meeting %>
|
8
|
-
<span class="exports
|
8
|
+
<span class="exports button button__sm button__secondary button--title" data-toggle="export-dropdown">
|
9
9
|
<%= t "actions.export", scope: "decidim.admin" %>
|
10
10
|
<%= icon "arrow-down-s-line", class: "dropdown-filter-icon" %>
|
11
11
|
</span>
|
data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb
CHANGED
@@ -2,4 +2,4 @@
|
|
2
2
|
|
3
3
|
<p class="email-instructions"><%= t("decidim.meetings.close_meeting_reminder_mailer.close_meeting_reminder.body", meeting_title: translated_attribute(@meeting.title), meeting_path: @meeting.reported_content_url).html_safe %></p>
|
4
4
|
|
5
|
-
<p class="email-closing"><%= t("decidim.meetings.close_meeting_reminder_mailer.close_meeting_reminder.greetings", organization_name:
|
5
|
+
<p class="email-closing"><%= t("decidim.meetings.close_meeting_reminder_mailer.close_meeting_reminder.greetings", organization_name: translated_attribute(@organization.name), organization_url: decidim.root_url(host: @organization.host)).html_safe %></p>
|
@@ -14,20 +14,8 @@
|
|
14
14
|
<%= render partial: "layouts/decidim/timeout_modal" %>
|
15
15
|
|
16
16
|
<header class="meeting-polls__header">
|
17
|
-
<% if current_user && poll %>
|
18
|
-
<div class="flex gap-2">
|
19
|
-
<button class="button button__sm button__secondary meeting-polls__action-list">
|
20
|
-
<%= t("questions", scope: "decidim.meetings.layouts.live_event") %> <span id="visible-questions-count">(<%= questionnaire.questions.visible.count %>)</span>
|
21
|
-
</button>
|
22
|
-
|
23
|
-
<% if admin_allowed_to?(:update, :poll, meeting: meeting, poll: poll) %>
|
24
|
-
<button class="button button__sm button__secondary meeting-polls__action-administrate"><%= t("administrate", scope: "decidim.meetings.layouts.live_event") %></button>
|
25
|
-
<% end %>
|
26
|
-
</div>
|
27
|
-
<% end %>
|
28
|
-
|
29
17
|
<div>
|
30
|
-
<strong class="text-secondary"><%=
|
18
|
+
<strong class="text-secondary"><%= current_organization_name %></strong> / <strong><%= present(meeting).title(links: true, html_escape: true ) %></strong>
|
31
19
|
</div>
|
32
20
|
|
33
21
|
<div class="flex gap-10">
|
@@ -43,8 +31,6 @@
|
|
43
31
|
</header>
|
44
32
|
|
45
33
|
<main class="meeting-polls__main">
|
46
|
-
<aside class="meeting-polls__aside" id="meeting-poll-aside" data-decidim-meetings-poll='{"questionsUrl":"<%= meeting_polls_questions_path(meeting) %>"}'></aside>
|
47
|
-
<aside class="meeting-polls__aside" id="admin-meeting-poll-aside" data-decidim-admin-meetings-poll='{"questionsUrl":"<%= meeting_polls_questions_path(meeting, admin: true) %>"}'></aside>
|
48
34
|
<%= yield %>
|
49
35
|
</main>
|
50
36
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<div
|
2
|
-
<div
|
3
|
-
<%= l meeting.start_time, format: "%d" %> <span
|
1
|
+
<div>
|
2
|
+
<div>
|
3
|
+
<%= l meeting.start_time, format: "%d" %> <span><%= l meeting.start_time, format: "%B %Y" %></span>
|
4
4
|
</div>
|
5
|
-
<div
|
5
|
+
<div>
|
6
6
|
<%= meeting.start_time.strftime("%H:%M") %> - <%= meeting.end_time.strftime("%H:%M") %>
|
7
7
|
</div>
|
8
8
|
</div>
|