decidim-meetings 0.28.5 → 0.29.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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/dates_and_map/show.erb +3 -5
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
- 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_cell.rb +4 -7
- 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/close_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +3 -3
- 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/helpers/decidim/meetings/application_helper.rb +1 -5
- data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +10 -4
- 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 +126 -6
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
- data/app/permissions/decidim/meetings/permissions.rb +22 -7
- data/app/presenters/decidim/meetings/meeting_presenter.rb +10 -3
- 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 +1 -1
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
- data/app/views/decidim/meetings/_calendar_modal.html.erb +1 -1
- 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 +2 -4
- 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 -1
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +1 -1
- 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/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
- 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 +1 -13
- data/config/locales/bg.yml +45 -12
- data/config/locales/ca.yml +45 -13
- data/config/locales/cs.yml +28 -16
- data/config/locales/de.yml +114 -82
- data/config/locales/el.yml +1 -13
- data/config/locales/en.yml +44 -12
- data/config/locales/es-MX.yml +47 -15
- data/config/locales/es-PY.yml +47 -15
- data/config/locales/es.yml +48 -16
- data/config/locales/eu.yml +79 -47
- data/config/locales/fi-plain.yml +46 -14
- data/config/locales/fi.yml +56 -24
- data/config/locales/fr-CA.yml +48 -16
- data/config/locales/fr.yml +48 -16
- data/config/locales/ga-IE.yml +0 -8
- data/config/locales/gl.yml +3 -11
- data/config/locales/hu.yml +3 -12
- data/config/locales/id-ID.yml +1 -12
- data/config/locales/is-IS.yml +1 -12
- data/config/locales/it.yml +3 -16
- data/config/locales/ja.yml +47 -15
- data/config/locales/lb.yml +1 -7
- data/config/locales/lt.yml +3 -12
- data/config/locales/lv.yml +1 -12
- data/config/locales/nl.yml +1 -13
- data/config/locales/no.yml +1 -12
- data/config/locales/pl.yml +45 -12
- data/config/locales/pt-BR.yml +23 -17
- data/config/locales/pt.yml +1 -14
- data/config/locales/ro-RO.yml +2 -15
- data/config/locales/ru.yml +1 -12
- data/config/locales/sk.yml +1 -12
- data/config/locales/sv.yml +108 -206
- data/config/locales/tr-TR.yml +2 -17
- data/config/locales/uk.yml +1 -12
- data/config/locales/zh-CN.yml +1 -15
- data/config/locales/zh-TW.yml +1 -13
- data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
- data/decidim-meetings.gemspec +2 -2
- data/lib/decidim/api/meeting_type.rb +3 -12
- data/lib/decidim/api/meetings_type.rb +3 -1
- data/lib/decidim/meetings/component.rb +2 -2
- data/lib/decidim/meetings/engine.rb +5 -3
- data/lib/decidim/meetings/meeting_serializer.rb +3 -38
- data/lib/decidim/meetings/seeds.rb +13 -18
- data/lib/decidim/meetings/test/factories.rb +1 -7
- 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 +24 -22
- data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
- data/config/locales/bn-BD.yml +0 -1
- data/config/locales/bs-BA.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: decb2f078a63be67ef8a425057c0f01b3b8c027fe5225842746761890632185c
|
4
|
+
data.tar.gz: 88c81b8077db6bd1a381816f578a99d4861d54f586ca862b23ddd299e45295c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf7184a26d0682c05b29fb45ae7fb761cad50b1b9a8ad5af55a7390524147a413c583d6905fceb5ee5d16f18479e345a6ffc326fe21e4137f232056681599e0e
|
7
|
+
data.tar.gz: 85351934fbfd8c52c8f5705eff919a7fbdc67fc54b8515132f0f7ec33ef5a5df51d77f7ee679da07c42b2ab42f4841fad79c464a99e207b93c188a9dcda5272e
|
@@ -2,9 +2,8 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
|
-
# This cell renders the button to cancel a meeting
|
5
|
+
# This cell renders the button to cancel a meeting registration.
|
6
6
|
class CancelRegistrationMeetingButtonCell < Decidim::ViewModel
|
7
|
-
include Decidim::IconHelper
|
8
7
|
include MeetingCellsHelper
|
9
8
|
|
10
9
|
def show
|
@@ -15,11 +15,9 @@
|
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
<%
|
18
|
+
<%= static_map %>
|
19
|
+
|
20
|
+
<% if online? %>
|
21
21
|
<%= cell("decidim/address", meeting, online: true) %>
|
22
|
-
<% else %>
|
23
|
-
<%= cell("decidim/address", meeting) %>
|
24
22
|
<% end %>
|
25
23
|
</div>
|
@@ -11,7 +11,6 @@ module Decidim
|
|
11
11
|
include Decidim::Meetings::ApplicationHelper
|
12
12
|
include Decidim::ComponentPathHelper
|
13
13
|
include Decidim::CardHelper
|
14
|
-
include Decidim::LayoutHelper
|
15
14
|
|
16
15
|
delegate :snippets, to: :controller
|
17
16
|
|
@@ -31,7 +30,7 @@ module Decidim
|
|
31
30
|
|
32
31
|
def base_relation
|
33
32
|
@base_relation ||= Decidim::Meetings::Meeting.where(component: model)
|
34
|
-
.
|
33
|
+
.not_withdrawn
|
35
34
|
.published
|
36
35
|
.not_hidden
|
37
36
|
.visible_for(current_user)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<div class="meeting__aside-progress">
|
2
2
|
<span><%= t("remaining_slots", scope: "decidim.meetings.meetings.show", count: model.remaining_slots) %></span>
|
3
3
|
<progress value="<%= model.remaining_slots %>" max="<%= model.available_slots %>"></progress>
|
4
|
+
<span class="meeting__aside-progress-label"><%= model.remaining_slots %> / <%= model.available_slots %></span>
|
4
5
|
</div>
|
@@ -5,9 +5,6 @@ module Decidim
|
|
5
5
|
# This cell renders the button to join a meeting.
|
6
6
|
class JoinMeetingButtonCell < Decidim::ViewModel
|
7
7
|
include MeetingCellsHelper
|
8
|
-
include Decidim::SanitizeHelper
|
9
|
-
include ActionView::Helpers::FormTagHelper
|
10
|
-
include ActionView::Helpers::FormOptionsHelper
|
11
8
|
|
12
9
|
def show
|
13
10
|
return unless model.can_be_joined_by?(current_user) || model.on_different_platform?
|
@@ -4,9 +4,6 @@ module Decidim
|
|
4
4
|
module Meetings
|
5
5
|
# This cell renders metadata for an instance of a Meeting
|
6
6
|
class MeetingCardMetadataCell < Decidim::CardMetadataCell
|
7
|
-
include Decidim::LayoutHelper
|
8
|
-
include ActionView::Helpers::DateHelper
|
9
|
-
|
10
7
|
alias meeting model
|
11
8
|
|
12
9
|
delegate :type_of_meeting, :start_time, :end_time, :category, :withdrawn?, to: :meeting
|
@@ -7,19 +7,16 @@ module Decidim
|
|
7
7
|
# This cell renders the List (:l) meeting card
|
8
8
|
# for an instance of a Meeting
|
9
9
|
class MeetingLCell < Decidim::CardLCell
|
10
|
-
delegate :component_settings, to: :controller
|
11
|
-
|
12
10
|
alias meeting model
|
13
11
|
|
14
|
-
def extra_class
|
15
|
-
"card__calendar-list__reset"
|
16
|
-
end
|
17
|
-
|
18
|
-
# Renders the date in the meeting card list
|
19
12
|
def has_image?
|
20
13
|
true
|
21
14
|
end
|
22
15
|
|
16
|
+
def extra_class
|
17
|
+
"card__calendar-list__reset"
|
18
|
+
end
|
19
|
+
|
23
20
|
def image
|
24
21
|
render
|
25
22
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
<div
|
2
|
-
<ul
|
3
|
-
<li
|
1
|
+
<div>
|
2
|
+
<ul>
|
3
|
+
<li>
|
4
4
|
<%= resource_icon %>
|
5
5
|
</li>
|
6
|
-
<li
|
6
|
+
<li>
|
7
7
|
<div class="text-left">
|
8
|
-
<div
|
8
|
+
<div>
|
9
9
|
<% if future? %>
|
10
10
|
<span><%= t("link_available_soon", scope: "decidim.meetings.meetings.show") %></span>
|
11
11
|
<% elsif live? %>
|
@@ -5,8 +5,6 @@ module Decidim
|
|
5
5
|
# This cell renders the online meeting link section
|
6
6
|
# of a online or both type of meeting.
|
7
7
|
class OnlineMeetingLinkCell < Decidim::Meetings::OnlineMeetingCell
|
8
|
-
include Decidim::LayoutHelper
|
9
|
-
|
10
8
|
def online_meeting_url?
|
11
9
|
model.online_meeting_url.present?
|
12
10
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<% answer_options_with_percentages.each do |(answer_option_body, answer_percentage)| %>
|
2
|
-
<label><%= translated_attribute(answer_option_body) %></label>
|
3
2
|
<div class="meeting-polls__answer">
|
4
|
-
<div class="meeting-polls__answer--
|
5
|
-
|
3
|
+
<div class="meeting-polls__answer--bar">
|
4
|
+
<div style="width: <%= answer_percentage %>"></div>
|
5
|
+
</div>
|
6
|
+
<div class="meeting-polls__answer--value">
|
7
|
+
<span><%= translated_attribute(answer_option_body) %></span>
|
8
|
+
<span><%= answer_percentage %></span>
|
9
|
+
</div>
|
6
10
|
</div>
|
7
11
|
<% end %>
|
@@ -89,8 +89,8 @@ module Decidim
|
|
89
89
|
form.services_to_persist.map do |service|
|
90
90
|
Decidim::Meetings::Service.create!(
|
91
91
|
meeting: copied_meeting,
|
92
|
-
|
93
|
-
|
92
|
+
title: service.title,
|
93
|
+
description: service.description
|
94
94
|
)
|
95
95
|
end
|
96
96
|
end
|
@@ -5,33 +5,15 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# This command is executed when the user creates a Meeting from the admin
|
7
7
|
# panel.
|
8
|
-
class CreateAgenda < Decidim::
|
9
|
-
|
10
|
-
@form = form
|
11
|
-
@meeting = meeting
|
12
|
-
@agenda = nil
|
13
|
-
end
|
14
|
-
|
15
|
-
# Creates the agenda if valid.
|
16
|
-
#
|
17
|
-
# Broadcasts :ok if successful, :invalid otherwise.
|
18
|
-
def call
|
19
|
-
return broadcast(:invalid) if @form.invalid?
|
20
|
-
|
21
|
-
transaction do
|
22
|
-
create_agenda!
|
23
|
-
create_agenda_items
|
24
|
-
end
|
8
|
+
class CreateAgenda < Decidim::Commands::CreateResource
|
9
|
+
fetch_form_attributes :title, :visible, :meeting
|
25
10
|
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
11
|
+
protected
|
30
12
|
|
31
|
-
|
13
|
+
def resource_class = Decidim::Meetings::Agenda
|
32
14
|
|
33
|
-
def
|
34
|
-
|
15
|
+
def run_after_hooks
|
16
|
+
form.agenda_items.each do |form_agenda_item|
|
35
17
|
create_agenda_item(form_agenda_item)
|
36
18
|
end
|
37
19
|
end
|
@@ -43,10 +25,10 @@ module Decidim
|
|
43
25
|
position: form_agenda_item.position,
|
44
26
|
duration: form_agenda_item.duration,
|
45
27
|
parent_id: form_agenda_item.parent_id,
|
46
|
-
agenda:
|
28
|
+
agenda: resource
|
47
29
|
}
|
48
30
|
|
49
|
-
create_nested_model(form_agenda_item, agenda_item_attributes,
|
31
|
+
create_nested_model(form_agenda_item, agenda_item_attributes, form.agenda_items) do |agenda_item|
|
50
32
|
form_agenda_item.agenda_item_children.each do |form_agenda_item_child|
|
51
33
|
agenda_item_child_attributes = {
|
52
34
|
title: form_agenda_item_child.title,
|
@@ -54,7 +36,7 @@ module Decidim
|
|
54
36
|
position: form_agenda_item_child.position,
|
55
37
|
duration: form_agenda_item_child.duration,
|
56
38
|
parent_id: agenda_item.id,
|
57
|
-
agenda:
|
39
|
+
agenda: resource
|
58
40
|
}
|
59
41
|
|
60
42
|
create_nested_model(form_agenda_item_child, agenda_item_child_attributes, agenda_item.agenda_item_children)
|
@@ -77,16 +59,6 @@ module Decidim
|
|
77
59
|
record.save!
|
78
60
|
end
|
79
61
|
end
|
80
|
-
|
81
|
-
def create_agenda!
|
82
|
-
@agenda = Decidim.traceability.create!(
|
83
|
-
Agenda,
|
84
|
-
@form.current_user,
|
85
|
-
title: @form.title,
|
86
|
-
visible: @form.visible,
|
87
|
-
meeting: @meeting
|
88
|
-
)
|
89
|
-
end
|
90
62
|
end
|
91
63
|
end
|
92
64
|
end
|
@@ -5,84 +5,51 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# This command is executed when the user creates a Meeting from the admin
|
7
7
|
# panel.
|
8
|
-
class CreateMeeting < Decidim::
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
# Creates the meeting if valid.
|
14
|
-
#
|
15
|
-
# Broadcasts :ok if successful, :invalid otherwise.
|
16
|
-
def call
|
17
|
-
return broadcast(:invalid) if @form.invalid?
|
8
|
+
class CreateMeeting < Decidim::Commands::CreateResource
|
9
|
+
fetch_form_attributes :scope, :category, :end_time, :start_time, :online_meeting_url, :registration_type,
|
10
|
+
:registration_url, :address, :latitude, :longitude, :location, :location_hints,
|
11
|
+
:private_meeting, :transparent, :registrations_enabled, :component, :iframe_embed_type,
|
12
|
+
:comments_enabled, :comments_start_time, :comments_end_time, :iframe_access_level
|
18
13
|
|
19
|
-
|
20
|
-
create_meeting!
|
21
|
-
create_services!
|
22
|
-
end
|
14
|
+
protected
|
23
15
|
|
16
|
+
def run_after_hooks
|
17
|
+
create_services!
|
24
18
|
create_follow_form_resource(form.current_user)
|
25
|
-
broadcast(:ok, meeting)
|
26
19
|
end
|
27
20
|
|
28
|
-
|
29
|
-
|
30
|
-
attr_reader :form, :meeting
|
31
|
-
|
32
|
-
def create_meeting!
|
21
|
+
def attributes
|
33
22
|
parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
|
34
23
|
parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
registration_type: form.registration_type,
|
44
|
-
registration_url: form.registration_url,
|
45
|
-
type_of_meeting: form.clean_type_of_meeting,
|
46
|
-
address: form.address,
|
47
|
-
latitude: form.latitude,
|
48
|
-
longitude: form.longitude,
|
49
|
-
location: form.location,
|
50
|
-
location_hints: form.location_hints,
|
51
|
-
private_meeting: form.private_meeting,
|
52
|
-
transparent: form.transparent,
|
53
|
-
author: form.current_organization,
|
54
|
-
registration_terms: form.current_component.settings.default_registration_terms,
|
55
|
-
registrations_enabled: form.registrations_enabled,
|
56
|
-
component: form.current_component,
|
57
|
-
questionnaire: Decidim::Forms::Questionnaire.new,
|
58
|
-
iframe_embed_type: form.iframe_embed_type,
|
59
|
-
comments_enabled: form.comments_enabled,
|
60
|
-
comments_start_time: form.comments_start_time,
|
61
|
-
comments_end_time: form.comments_end_time,
|
62
|
-
iframe_access_level: form.iframe_access_level
|
63
|
-
}
|
64
|
-
|
65
|
-
@meeting = Decidim.traceability.create!(
|
66
|
-
Meeting,
|
67
|
-
form.current_user,
|
68
|
-
params,
|
69
|
-
visibility: "all"
|
70
|
-
)
|
24
|
+
super.merge({
|
25
|
+
title: parsed_title,
|
26
|
+
description: parsed_description,
|
27
|
+
type_of_meeting: form.clean_type_of_meeting,
|
28
|
+
author: form.current_organization,
|
29
|
+
registration_terms: form.current_component.settings.default_registration_terms,
|
30
|
+
questionnaire: Decidim::Forms::Questionnaire.new
|
31
|
+
})
|
71
32
|
end
|
72
33
|
|
34
|
+
def resource_class = Decidim::Meetings::Meeting
|
35
|
+
|
36
|
+
def extra_params = { visibility: "all" }
|
37
|
+
|
38
|
+
private
|
39
|
+
|
73
40
|
def create_services!
|
74
41
|
form.services_to_persist.each do |service|
|
75
42
|
Decidim::Meetings::Service.create!(
|
76
|
-
meeting
|
77
|
-
|
78
|
-
|
43
|
+
meeting: resource,
|
44
|
+
title: service.title,
|
45
|
+
description: service.description
|
79
46
|
)
|
80
47
|
end
|
81
48
|
end
|
82
49
|
|
83
50
|
def create_follow_form_resource(user)
|
84
|
-
follow_form = Decidim::FollowForm.from_params(followable_gid:
|
85
|
-
Decidim::CreateFollow.call(follow_form
|
51
|
+
follow_form = Decidim::FollowForm.from_params(followable_gid: resource.to_signed_global_id.to_s).with_context(current_user: user)
|
52
|
+
Decidim::CreateFollow.call(follow_form)
|
86
53
|
end
|
87
54
|
end
|
88
55
|
end
|
@@ -5,44 +5,15 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# This command is executed when the user destroys a Meeting from the admin
|
7
7
|
# panel.
|
8
|
-
class DestroyMeeting < Decidim::
|
9
|
-
|
10
|
-
#
|
11
|
-
# meeting - The current instance of the page to be closed.
|
12
|
-
# current_user - the user performing the action
|
13
|
-
def initialize(meeting, current_user)
|
14
|
-
@meeting = meeting
|
15
|
-
@current_user = current_user
|
16
|
-
end
|
17
|
-
|
18
|
-
# Destroys the meeting if valid.
|
19
|
-
#
|
20
|
-
# Broadcasts :ok if successful, :invalid otherwise.
|
21
|
-
def call
|
22
|
-
return broadcast(:invalid, proposals.size) if proposals.any?
|
23
|
-
|
24
|
-
destroy_meeting
|
25
|
-
broadcast(:ok)
|
26
|
-
end
|
8
|
+
class DestroyMeeting < Decidim::Commands::DestroyResource
|
9
|
+
protected
|
27
10
|
|
28
|
-
|
29
|
-
|
30
|
-
attr_reader :current_user, :meeting
|
31
|
-
|
32
|
-
def destroy_meeting
|
33
|
-
Decidim.traceability.perform_action!(
|
34
|
-
:delete,
|
35
|
-
meeting,
|
36
|
-
current_user
|
37
|
-
) do
|
38
|
-
meeting.destroy!
|
39
|
-
end
|
40
|
-
end
|
11
|
+
def invalid? = proposals.any?
|
41
12
|
|
42
13
|
def proposals
|
43
14
|
return [] unless Decidim::Meetings.enable_proposal_linking
|
44
15
|
|
45
|
-
@proposals ||=
|
16
|
+
@proposals ||= resource.authored_proposals.load
|
46
17
|
end
|
47
18
|
end
|
48
19
|
end
|
@@ -3,33 +3,14 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
5
|
module Admin
|
6
|
-
# This command is executed when the user
|
6
|
+
# This command is executed when the user updates a Meeting from the admin
|
7
7
|
# panel.
|
8
|
-
class UpdateAgenda < Decidim::
|
9
|
-
|
10
|
-
@form = form
|
11
|
-
@agenda = agenda
|
12
|
-
end
|
13
|
-
|
14
|
-
# Creates the agenda if valid.
|
15
|
-
#
|
16
|
-
# Broadcasts :ok if successful, :invalid otherwise.
|
17
|
-
def call
|
18
|
-
return broadcast(:invalid) if @form.invalid?
|
8
|
+
class UpdateAgenda < Decidim::Commands::UpdateResource
|
9
|
+
fetch_form_attributes :title, :visible
|
19
10
|
|
20
|
-
|
21
|
-
update_agenda!
|
22
|
-
update_agenda_items
|
23
|
-
end
|
24
|
-
|
25
|
-
broadcast(:ok, @agenda)
|
26
|
-
end
|
11
|
+
protected
|
27
12
|
|
28
|
-
|
29
|
-
|
30
|
-
attr_reader :form
|
31
|
-
|
32
|
-
def update_agenda_items
|
13
|
+
def run_after_hooks
|
33
14
|
@form.agenda_items.each do |form_agenda_item|
|
34
15
|
update_agenda_item(form_agenda_item)
|
35
16
|
end
|
@@ -44,7 +25,7 @@ module Decidim
|
|
44
25
|
parent_id: form_agenda_item.parent_id
|
45
26
|
}
|
46
27
|
|
47
|
-
update_nested_model(form_agenda_item, agenda_item_attributes,
|
28
|
+
update_nested_model(form_agenda_item, agenda_item_attributes, resource.agenda_items) do |agenda_item|
|
48
29
|
form_agenda_item.agenda_item_children.each do |form_agenda_item_child|
|
49
30
|
agenda_item_child_attributes = {
|
50
31
|
title: form_agenda_item_child.title,
|
@@ -52,7 +33,7 @@ module Decidim
|
|
52
33
|
position: form_agenda_item_child.position,
|
53
34
|
duration: form_agenda_item_child.duration,
|
54
35
|
parent_id: agenda_item.id,
|
55
|
-
agenda:
|
36
|
+
agenda: resource
|
56
37
|
}
|
57
38
|
|
58
39
|
update_nested_model(form_agenda_item_child, agenda_item_child_attributes, agenda_item.agenda_item_children)
|
@@ -75,15 +56,6 @@ module Decidim
|
|
75
56
|
record.save!
|
76
57
|
end
|
77
58
|
end
|
78
|
-
|
79
|
-
def update_agenda!
|
80
|
-
Decidim.traceability.update!(
|
81
|
-
@agenda,
|
82
|
-
form.current_user,
|
83
|
-
title: form.title,
|
84
|
-
visible: form.visible
|
85
|
-
)
|
86
|
-
end
|
87
59
|
end
|
88
60
|
end
|
89
61
|
end
|
@@ -5,87 +5,49 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# This command is executed when the user changes a Meeting from the admin
|
7
7
|
# panel.
|
8
|
-
class UpdateMeeting < Decidim::
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
class UpdateMeeting < Decidim::Commands::UpdateResource
|
9
|
+
fetch_form_attributes :scope, :category, :end_time, :start_time, :online_meeting_url, :registration_type,
|
10
|
+
:registration_url, :registrations_enabled, :address, :latitude, :longitude, :location,
|
11
|
+
:location_hints,
|
12
|
+
:private_meeting, :transparent, :iframe_embed_type, :comments_enabled,
|
13
|
+
:comments_start_time, :comments_end_time, :iframe_access_level
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def run_after_hooks
|
18
|
+
send_notification if should_notify_followers?
|
19
|
+
schedule_upcoming_meeting_notification if resource.published? && start_time_changed?
|
20
|
+
update_services!
|
16
21
|
end
|
17
22
|
|
18
|
-
|
19
|
-
#
|
20
|
-
# Broadcasts :ok if successful, :invalid otherwise.
|
21
|
-
def call
|
22
|
-
return broadcast(:invalid) if form.invalid?
|
23
|
-
|
24
|
-
transaction do
|
25
|
-
update_meeting!
|
26
|
-
send_notification if should_notify_followers?
|
27
|
-
schedule_upcoming_meeting_notification if meeting.published? && start_time_changed?
|
28
|
-
update_services!
|
29
|
-
end
|
30
|
-
|
31
|
-
broadcast(:ok, meeting)
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
attr_reader :form, :meeting
|
37
|
-
|
38
|
-
def update_meeting!
|
23
|
+
def attributes
|
39
24
|
parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
|
40
25
|
parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
category: form.category,
|
47
|
-
title: parsed_title,
|
48
|
-
description: parsed_description,
|
49
|
-
end_time: form.end_time,
|
50
|
-
start_time: form.start_time,
|
51
|
-
online_meeting_url: form.online_meeting_url,
|
52
|
-
registration_type: form.registration_type,
|
53
|
-
registration_url: form.registration_url,
|
54
|
-
registrations_enabled: form.registrations_enabled,
|
55
|
-
type_of_meeting: form.clean_type_of_meeting,
|
56
|
-
address: form.address,
|
57
|
-
latitude: form.latitude,
|
58
|
-
longitude: form.longitude,
|
59
|
-
location: form.location,
|
60
|
-
location_hints: form.location_hints,
|
61
|
-
private_meeting: form.private_meeting,
|
62
|
-
transparent: form.transparent,
|
63
|
-
iframe_embed_type: form.iframe_embed_type,
|
64
|
-
comments_enabled: form.comments_enabled,
|
65
|
-
comments_start_time: form.comments_start_time,
|
66
|
-
comments_end_time: form.comments_end_time,
|
67
|
-
iframe_access_level: form.iframe_access_level
|
68
|
-
)
|
26
|
+
super.merge({
|
27
|
+
title: parsed_title,
|
28
|
+
description: parsed_description,
|
29
|
+
type_of_meeting: form.clean_type_of_meeting
|
30
|
+
})
|
69
31
|
end
|
70
32
|
|
71
33
|
def update_services!
|
72
|
-
|
73
|
-
Decidim::Meetings::Service.new(
|
34
|
+
resource.services = form.services_to_persist.map do |service|
|
35
|
+
Decidim::Meetings::Service.new(title: service.title, description: service.description)
|
74
36
|
end
|
75
|
-
|
37
|
+
resource.save!
|
76
38
|
end
|
77
39
|
|
78
40
|
def send_notification
|
79
41
|
Decidim::EventsManager.publish(
|
80
42
|
event: "decidim.events.meetings.meeting_updated",
|
81
43
|
event_class: Decidim::Meetings::UpdateMeetingEvent,
|
82
|
-
resource
|
83
|
-
followers:
|
44
|
+
resource:,
|
45
|
+
followers: resource.followers
|
84
46
|
)
|
85
47
|
end
|
86
48
|
|
87
49
|
def should_notify_followers?
|
88
|
-
|
50
|
+
resource.published? && important_attributes.any? { |attr| resource.previous_changes[attr].present? }
|
89
51
|
end
|
90
52
|
|
91
53
|
def important_attributes
|
@@ -93,17 +55,17 @@ module Decidim
|
|
93
55
|
end
|
94
56
|
|
95
57
|
def start_time_changed?
|
96
|
-
|
58
|
+
resource.previous_changes["start_time"].present?
|
97
59
|
end
|
98
60
|
|
99
61
|
def schedule_upcoming_meeting_notification
|
100
|
-
return if
|
62
|
+
return if resource.start_time < Time.zone.now
|
101
63
|
|
102
|
-
checksum = Decidim::Meetings::UpcomingMeetingNotificationJob.generate_checksum(
|
64
|
+
checksum = Decidim::Meetings::UpcomingMeetingNotificationJob.generate_checksum(resource)
|
103
65
|
|
104
66
|
Decidim::Meetings::UpcomingMeetingNotificationJob
|
105
|
-
.set(wait_until:
|
106
|
-
.perform_later(
|
67
|
+
.set(wait_until: resource.start_time - Decidim::Meetings.upcoming_meeting_notification)
|
68
|
+
.perform_later(resource.id, checksum)
|
107
69
|
end
|
108
70
|
end
|
109
71
|
end
|