decidim-conferences 0.18.0 → 0.19.0
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.
- checksums.yaml +4 -4
- data/app/assets/stylesheet/decidim/conferences/conferences.scss +3 -0
- data/app/cells/decidim/conferences/conference_address/show.erb +1 -1
- data/app/cells/decidim/conferences/conference_speaker/show.erb +2 -2
- data/app/cells/decidim/conferences/conference_speaker_cell.rb +6 -2
- data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +6 -0
- data/app/cells/decidim/conferences/partner_cell.rb +2 -0
- data/app/cells/decidim/conferences/photos_list_cell.rb +1 -0
- data/app/cells/decidim/conferences/registration_type_cell.rb +2 -0
- data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +1 -0
- data/app/commands/decidim/conferences/admin/create_conference.rb +0 -10
- data/app/commands/decidim/conferences/admin/create_conference_admin.rb +1 -0
- data/app/commands/decidim/conferences/admin/publish_conference.rb +12 -0
- data/app/commands/decidim/conferences/admin/update_conference.rb +6 -2
- data/app/commands/decidim/conferences/admin/update_diploma.rb +1 -0
- data/app/commands/decidim/conferences/join_conference.rb +2 -0
- data/app/commands/decidim/conferences/leave_conference.rb +1 -0
- data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +1 -0
- data/app/controllers/decidim/conferences/conference_program_controller.rb +4 -1
- data/app/controllers/decidim/conferences/conference_registrations_controller.rb +1 -0
- data/app/controllers/decidim/conferences/conference_speakers_controller.rb +1 -0
- data/app/controllers/decidim/conferences/media_controller.rb +1 -0
- data/app/controllers/decidim/conferences/registration_types_controller.rb +1 -0
- data/app/forms/decidim/conferences/admin/conference_form.rb +4 -0
- data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -0
- data/app/forms/decidim/conferences/admin/registration_type_form.rb +1 -0
- data/app/helpers/decidim/conferences/conference_helper.rb +1 -0
- data/app/models/decidim/conference.rb +4 -4
- data/app/models/decidim/conference_user_role.rb +1 -0
- data/app/permissions/decidim/conferences/permissions.rb +6 -0
- data/app/presenters/decidim/conferences/admin_log/value_types/role_presenter.rb +1 -0
- data/app/presenters/decidim/log/value_types/conference_presenter.rb +1 -0
- data/app/queries/decidim/conferences/admin/conference_invites.rb +1 -0
- data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
- data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +3 -3
- data/app/views/decidim/conferences/admin/conferences/index.html.erb +3 -3
- data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
- data/app/views/decidim/conferences/conferences/_partners.html.erb +1 -1
- data/app/views/decidim/conferences/conferences/show.html.erb +3 -3
- data/app/views/decidim/conferences/media/index.html.erb +2 -2
- data/app/views/layouts/decidim/_conference_hero.html.erb +2 -2
- data/app/views/layouts/decidim/diploma.html.erb +2 -2
- data/config/locales/ar.yml +1 -0
- data/config/locales/cs.yml +55 -55
- data/config/locales/de.yml +10 -10
- data/config/locales/fr.yml +94 -94
- data/config/locales/it.yml +3 -3
- data/config/locales/nl.yml +2 -2
- data/config/locales/no.yml +5 -0
- data/lib/decidim/conferences/participatory_space.rb +1 -0
- data/lib/decidim/conferences/version.rb +1 -1
- metadata +21 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a350885d8989dcbed020295a179753dd257966cc6ea5234188a5257dc506d1c6
|
4
|
+
data.tar.gz: b28820eefb620c35d49d9caabae092c086397940793d510aad55d10c61148278
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33434c66f9cbf62b02131047146097f0283b1e3cd9dc7a5bb11f41ca42589c8de7ceb30349ab23b19738b30286960f3c7f3aa30a1598b6ee08c5a74262a0b7b9
|
7
|
+
data.tar.gz: e1902107434422ba5f6527297db272b71cb536810e90fbbef7a5cb1d82575f956b4af61fc30e3519d3488ae06928d5dddb00606e8f6e9f05a4b2945c47553007
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="mb-s">
|
2
2
|
<% if model.respond_to? :location %>
|
3
3
|
<div>
|
4
|
-
<strong><%= translated_attribute model.location %></strong><br
|
4
|
+
<strong><%= translated_attribute model.location %></strong><br>
|
5
5
|
</div>
|
6
6
|
<% end %>
|
7
7
|
<div class="text-medium"><%= model.address %></div>
|
@@ -67,14 +67,14 @@
|
|
67
67
|
<% end %>
|
68
68
|
</div>
|
69
69
|
<% if meetings.present? %>
|
70
|
-
<hr class="reset mt-none mb-s"
|
70
|
+
<hr class="reset mt-none mb-s">
|
71
71
|
<div class="row">
|
72
72
|
<div class="column medium-12">
|
73
73
|
<div class="bio-acts">Speaking at</div>
|
74
74
|
|
75
75
|
<ul class="list-reset">
|
76
76
|
<% meetings.each do |meeting| %>
|
77
|
-
<%= meeting_title meeting %> <br
|
77
|
+
<%= meeting_title meeting %> <br>
|
78
78
|
<% end %>
|
79
79
|
</ul>
|
80
80
|
</div>
|
@@ -41,6 +41,7 @@ module Decidim
|
|
41
41
|
|
42
42
|
def avatar
|
43
43
|
return model.user.avatar if model.user.present?
|
44
|
+
|
44
45
|
model.avatar
|
45
46
|
end
|
46
47
|
|
@@ -58,17 +59,20 @@ module Decidim
|
|
58
59
|
|
59
60
|
def short_bio
|
60
61
|
return unless model.short_bio.presence
|
62
|
+
|
61
63
|
translated_attribute model.short_bio
|
62
64
|
end
|
63
65
|
|
64
66
|
def twitter_handle
|
65
67
|
return unless model.twitter_handle.presence
|
66
|
-
|
68
|
+
|
69
|
+
link_to t(".go_to_twitter"), "https://twitter.com/#{model.twitter_handle}", target: "_blank", rel: "noopener"
|
67
70
|
end
|
68
71
|
|
69
72
|
def personal_url
|
70
73
|
return unless model.personal_url.presence || (model.user.presence && model.user.personal_url.presence)
|
71
|
-
|
74
|
+
|
75
|
+
link_to model.personal_url || model.user.personal_url, target: "_blank", class: "card-link", rel: "noopener" do
|
72
76
|
"#{icon "external-link"}" " #{t(".personal_website")}"
|
73
77
|
end
|
74
78
|
end
|
@@ -20,22 +20,28 @@ module Decidim
|
|
20
20
|
|
21
21
|
def conference_participatory_processes
|
22
22
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:participatory_processes)
|
23
|
+
|
23
24
|
processes = model.linked_participatory_space_resources(:participatory_processes, "included_participatory_processes")
|
24
25
|
return unless processes.any?
|
26
|
+
|
25
27
|
processes
|
26
28
|
end
|
27
29
|
|
28
30
|
def conference_assemblies
|
29
31
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:assemblies)
|
32
|
+
|
30
33
|
assemblies = model.linked_participatory_space_resources(:assemblies, "included_assemblies")
|
31
34
|
return unless assemblies.any?
|
35
|
+
|
32
36
|
assemblies
|
33
37
|
end
|
34
38
|
|
35
39
|
def conference_consultations
|
36
40
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:consultations)
|
41
|
+
|
37
42
|
consultations = model.linked_participatory_space_resources(:consultations, "included_consultations")
|
38
43
|
return unless consultations.any?
|
44
|
+
|
39
45
|
consultations
|
40
46
|
end
|
41
47
|
|
@@ -12,11 +12,13 @@ module Decidim
|
|
12
12
|
|
13
13
|
def name
|
14
14
|
return unless model.name.presence
|
15
|
+
|
15
16
|
"<div class='text-medium'> #{model.name} </div>"
|
16
17
|
end
|
17
18
|
|
18
19
|
def logo
|
19
20
|
return unless model.logo.presence
|
21
|
+
|
20
22
|
"<div class='card p-m flex--cc'> #{image_tag model.logo.medium.url} </div>"
|
21
23
|
end
|
22
24
|
end
|
@@ -27,6 +27,7 @@ module Decidim
|
|
27
27
|
|
28
28
|
def price
|
29
29
|
return I18n.t("free", scope: "decidim.conferences.conference.show") if model.price.blank?
|
30
|
+
|
30
31
|
number_to_currency(model.price, locale: I18n.locale, unit: Decidim.currency_unit)
|
31
32
|
end
|
32
33
|
|
@@ -44,6 +45,7 @@ module Decidim
|
|
44
45
|
|
45
46
|
def i18n_join_text
|
46
47
|
return I18n.t("registration", scope: "decidim.conferences.conference.show") if conference.has_available_slots?
|
48
|
+
|
47
49
|
I18n.t("no_slots_available", scope: "decidim.conferences.conference.show")
|
48
50
|
end
|
49
51
|
end
|
@@ -29,7 +29,6 @@ module Decidim
|
|
29
29
|
link_consultations
|
30
30
|
|
31
31
|
broadcast(:ok, conference)
|
32
|
-
send_notification
|
33
32
|
else
|
34
33
|
form.errors.add(:hero_image, conference.errors[:hero_image]) if conference.errors.include? :hero_image
|
35
34
|
form.errors.add(:banner_image, conference.errors[:banner_image]) if conference.errors.include? :banner_image
|
@@ -81,15 +80,6 @@ module Decidim
|
|
81
80
|
end
|
82
81
|
end
|
83
82
|
|
84
|
-
def send_notification
|
85
|
-
Decidim::EventsManager.publish(
|
86
|
-
event: "decidim.events.conferences.registrations_enabled",
|
87
|
-
event_class: Decidim::Conferences::ConferenceRegistrationsEnabledEvent,
|
88
|
-
resource: conference,
|
89
|
-
followers: conference.followers
|
90
|
-
)
|
91
|
-
end
|
92
|
-
|
93
83
|
def participatory_processes
|
94
84
|
@participatory_processes ||= conference.participatory_space_sibling_scope(:participatory_processes).where(id: @form.participatory_processes_ids)
|
95
85
|
end
|
@@ -28,11 +28,23 @@ module Decidim
|
|
28
28
|
end
|
29
29
|
|
30
30
|
broadcast(:ok)
|
31
|
+
send_notification
|
31
32
|
end
|
32
33
|
|
33
34
|
private
|
34
35
|
|
35
36
|
attr_reader :conference, :current_user
|
37
|
+
|
38
|
+
def send_notification
|
39
|
+
return unless conference.registrations_enabled?
|
40
|
+
|
41
|
+
Decidim::EventsManager.publish(
|
42
|
+
event: "decidim.events.conferences.registrations_enabled",
|
43
|
+
event_class: Decidim::Conferences::ConferenceRegistrationsEnabledEvent,
|
44
|
+
resource: conference,
|
45
|
+
followers: conference.followers
|
46
|
+
)
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
@@ -23,6 +23,7 @@ module Decidim
|
|
23
23
|
# Returns nothing.
|
24
24
|
def call
|
25
25
|
return broadcast(:invalid) if form.invalid?
|
26
|
+
|
26
27
|
update_conference
|
27
28
|
link_participatory_processes
|
28
29
|
link_assemblies
|
@@ -99,7 +100,9 @@ module Decidim
|
|
99
100
|
end
|
100
101
|
|
101
102
|
def should_notify_followers_registrations_enabled?
|
102
|
-
@conference.previous_changes["registrations_enabled"].present? &&
|
103
|
+
@conference.previous_changes["registrations_enabled"].present? &&
|
104
|
+
@conference.registrations_enabled? &&
|
105
|
+
@conference.published?
|
103
106
|
end
|
104
107
|
|
105
108
|
def send_notification_update_conference
|
@@ -112,7 +115,8 @@ module Decidim
|
|
112
115
|
end
|
113
116
|
|
114
117
|
def should_notify_followers_update_conference?
|
115
|
-
important_attributes.any? { |attr| @conference.previous_changes[attr].present? }
|
118
|
+
important_attributes.any? { |attr| @conference.previous_changes[attr].present? } &&
|
119
|
+
@conference.published?
|
116
120
|
end
|
117
121
|
|
118
122
|
def important_attributes
|
@@ -22,6 +22,7 @@ module Decidim
|
|
22
22
|
def call
|
23
23
|
conference.with_lock do
|
24
24
|
return broadcast(:invalid) unless can_join_conference?
|
25
|
+
|
25
26
|
create_registration
|
26
27
|
create_meetings_registrations
|
27
28
|
accept_invitation
|
@@ -77,6 +78,7 @@ module Decidim
|
|
77
78
|
def notify_admin_over_percentage
|
78
79
|
return send_notification_over(0.5) if occupied_slots_over?(0.5)
|
79
80
|
return send_notification_over(0.8) if occupied_slots_over?(0.8)
|
81
|
+
|
80
82
|
send_notification_over(1.0) if occupied_slots_over?(1.0)
|
81
83
|
end
|
82
84
|
|
@@ -11,7 +11,8 @@ module Decidim
|
|
11
11
|
helper_method :collection, :conference, :meeting_days, :meeting_component
|
12
12
|
|
13
13
|
def show
|
14
|
-
raise ActionController::RoutingError, "No meetings for this conference " if meetings.
|
14
|
+
raise ActionController::RoutingError, "No meetings for this conference " if meetings.blank?
|
15
|
+
|
15
16
|
enforce_permission_to :list, :program
|
16
17
|
redirect_to decidim_conferences.conference_path(current_participatory_space) unless current_user_can_visit_space?
|
17
18
|
end
|
@@ -20,11 +21,13 @@ module Decidim
|
|
20
21
|
|
21
22
|
def meeting_component
|
22
23
|
return if params[:id].blank?
|
24
|
+
|
23
25
|
@meeting_component ||= current_participatory_space.components.where(manifest_name: "meetings").find_by(id: params[:id])
|
24
26
|
end
|
25
27
|
|
26
28
|
def meetings
|
27
29
|
return unless meeting_component.published? || !meeting_component.presence
|
30
|
+
|
28
31
|
@meetings ||= Decidim::Meetings::Meeting.where(component: meeting_component).visible_meeting_for(current_user).order(:start_time)
|
29
32
|
end
|
30
33
|
|
@@ -11,6 +11,7 @@ module Decidim
|
|
11
11
|
|
12
12
|
def index
|
13
13
|
raise ActionController::RoutingError, "No speakers for this conference " if speakers.empty?
|
14
|
+
|
14
15
|
enforce_permission_to :list, :speakers
|
15
16
|
redirect_to decidim_conferences.conference_path(current_participatory_space) unless current_user_can_visit_space?
|
16
17
|
end
|
@@ -13,6 +13,7 @@ module Decidim
|
|
13
13
|
|
14
14
|
def index
|
15
15
|
raise ActionController::RoutingError, "No media_links for this conference " if media_links.empty? && current_participatory_space.attachments.empty?
|
16
|
+
|
16
17
|
enforce_permission_to :list, :media_links
|
17
18
|
redirect_to decidim_conferences.conference_path(current_participatory_space) unless current_user_can_visit_space?
|
18
19
|
end
|
@@ -11,6 +11,7 @@ module Decidim
|
|
11
11
|
|
12
12
|
def index
|
13
13
|
raise ActionController::RoutingError, "No registration types for this conference " if registration_types.empty? && current_participatory_space.registrations_enabled.empty?
|
14
|
+
|
14
15
|
enforce_permission_to :list, :registration_types
|
15
16
|
redirect_to decidim_conferences.conference_path(current_participatory_space) unless current_user_can_visit_space?
|
16
17
|
end
|
@@ -62,6 +62,7 @@ module Decidim
|
|
62
62
|
|
63
63
|
def processes_for_select
|
64
64
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:participatory_processes)
|
65
|
+
|
65
66
|
@processes_for_select ||= Decidim.find_participatory_space_manifest(:participatory_processes)
|
66
67
|
.participatory_spaces.call(current_organization)&.order(title: :asc)&.map do |process|
|
67
68
|
[
|
@@ -73,6 +74,7 @@ module Decidim
|
|
73
74
|
|
74
75
|
def assemblies_for_select
|
75
76
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:assemblies)
|
77
|
+
|
76
78
|
@assemblies_for_select ||= Decidim.find_participatory_space_manifest(:assemblies)
|
77
79
|
.participatory_spaces.call(current_organization)&.order(title: :asc)&.map do |assembly|
|
78
80
|
[
|
@@ -84,6 +86,7 @@ module Decidim
|
|
84
86
|
|
85
87
|
def consultations_for_select
|
86
88
|
return unless Decidim.participatory_space_manifests.map(&:name).include?(:consultations)
|
89
|
+
|
87
90
|
@consultations_for_select ||= Decidim.find_participatory_space_manifest(:consultations)
|
88
91
|
.participatory_spaces.call(current_organization)&.order(title: :asc)&.map do |consultation|
|
89
92
|
[
|
@@ -98,6 +101,7 @@ module Decidim
|
|
98
101
|
def available_slots_greater_than_or_equal_to_registrations_count
|
99
102
|
conference = OrganizationConferences.new(current_organization).query.find_by(slug: slug)
|
100
103
|
return true if conference.blank?
|
104
|
+
|
101
105
|
errors.add(:available_slots, :invalid) if available_slots < conference.conference_registrations.count
|
102
106
|
end
|
103
107
|
|
@@ -50,6 +50,7 @@ module Decidim
|
|
50
50
|
def conference_meetings
|
51
51
|
meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
|
52
52
|
return unless meeting_components || conference_meeting_ids.delete("").present?
|
53
|
+
|
53
54
|
@conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
|
54
55
|
end
|
55
56
|
|
@@ -36,6 +36,7 @@ module Decidim
|
|
36
36
|
def conference_meetings
|
37
37
|
meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
|
38
38
|
return unless meeting_components || conference_meeting_ids.delete("").present?
|
39
|
+
|
39
40
|
@conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
|
40
41
|
end
|
41
42
|
end
|
@@ -8,6 +8,7 @@ module Decidim
|
|
8
8
|
#
|
9
9
|
def render_date(conference)
|
10
10
|
return l(conference.start_date, format: :decidim_with_month_name_short) if conference.start_date == conference.end_date
|
11
|
+
|
11
12
|
"#{l(conference.start_date, format: :decidim_with_month_name_short)} - #{l(conference.end_date, format: :decidim_with_month_name_short)}"
|
12
13
|
end
|
13
14
|
end
|
@@ -20,10 +20,7 @@ module Decidim
|
|
20
20
|
belongs_to :organization,
|
21
21
|
foreign_key: "decidim_organization_id",
|
22
22
|
class_name: "Decidim::Organization"
|
23
|
-
|
24
|
-
foreign_key: "decidim_area_id",
|
25
|
-
class_name: "Decidim::Area",
|
26
|
-
optional: true
|
23
|
+
|
27
24
|
has_many :categories,
|
28
25
|
foreign_key: "decidim_participatory_space_id",
|
29
26
|
foreign_type: "decidim_participatory_space_type",
|
@@ -87,6 +84,7 @@ module Decidim
|
|
87
84
|
|
88
85
|
def has_available_slots?
|
89
86
|
return true if available_slots.zero?
|
87
|
+
|
90
88
|
available_slots > conference_registrations.count
|
91
89
|
end
|
92
90
|
|
@@ -96,11 +94,13 @@ module Decidim
|
|
96
94
|
|
97
95
|
def diploma_sent?
|
98
96
|
return false if diploma_sent_at.nil?
|
97
|
+
|
99
98
|
true
|
100
99
|
end
|
101
100
|
|
102
101
|
def closed?
|
103
102
|
return false if end_date.blank?
|
103
|
+
|
104
104
|
end_date < Date.current
|
105
105
|
end
|
106
106
|
end
|
@@ -24,6 +24,7 @@ module Decidim
|
|
24
24
|
# Private: check if the process and the user have the same organization
|
25
25
|
def user_and_conference_same_organization
|
26
26
|
return if !conference || !user
|
27
|
+
|
27
28
|
errors.add(:conference, :invalid) unless user.organization == conference.organization
|
28
29
|
end
|
29
30
|
end
|
@@ -30,6 +30,7 @@ module Decidim
|
|
30
30
|
end
|
31
31
|
|
32
32
|
return permission_action unless user
|
33
|
+
|
33
34
|
if !has_manageable_conferences? && !user.admin?
|
34
35
|
disallow!
|
35
36
|
return permission_action
|
@@ -94,12 +95,14 @@ module Decidim
|
|
94
95
|
# Checks if it has any manageable conference, with any possible role.
|
95
96
|
def has_manageable_conferences?(role: :any)
|
96
97
|
return unless user
|
98
|
+
|
97
99
|
conferences_with_role_privileges(role).any?
|
98
100
|
end
|
99
101
|
|
100
102
|
# Whether the user can manage the given conference or not.
|
101
103
|
def can_manage_conference?(role: :any)
|
102
104
|
return unless user
|
105
|
+
|
103
106
|
conferences_with_role_privileges(role).include? conference
|
104
107
|
end
|
105
108
|
|
@@ -123,6 +126,7 @@ module Decidim
|
|
123
126
|
|
124
127
|
return allow! if user&.admin?
|
125
128
|
return allow! if conference.published?
|
129
|
+
|
126
130
|
toggle_allow(can_manage_conference?)
|
127
131
|
end
|
128
132
|
|
@@ -222,12 +226,14 @@ module Decidim
|
|
222
226
|
# Everyone can read the conference list
|
223
227
|
def user_can_read_conference_list?
|
224
228
|
return unless read_conference_list_permission_action?
|
229
|
+
|
225
230
|
toggle_allow(user.admin? || has_manageable_conferences?)
|
226
231
|
end
|
227
232
|
|
228
233
|
def user_can_read_current_conference?
|
229
234
|
return unless read_conference_list_permission_action?
|
230
235
|
return if permission_action.subject == :conference_list
|
236
|
+
|
231
237
|
toggle_allow(user.admin? || can_manage_conference?)
|
232
238
|
end
|
233
239
|
|