decidim-conferences 0.17.1 → 0.19.1
Sign up to get free protection for your applications and to get access to all the features.
- 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_m/footer.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/application_controller.rb +5 -4
- data/app/controllers/decidim/conferences/admin/concerns/conference_admin.rb +6 -4
- data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +1 -0
- data/app/controllers/decidim/conferences/application_controller.rb +6 -5
- 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 +9 -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/admin_users.rb +8 -1
- 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/_promoted_conference.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-SA.yml +1 -0
- data/config/locales/ar.yml +589 -0
- data/config/locales/ca.yml +1 -0
- data/config/locales/cs.yml +56 -55
- data/config/locales/de.yml +10 -9
- data/config/locales/en.yml +1 -0
- data/config/locales/eo-UY.yml +1 -0
- data/config/locales/es-MX.yml +1 -0
- data/config/locales/es-PY.yml +1 -0
- data/config/locales/es.yml +1 -0
- data/config/locales/eu.yml +1 -0
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr.yml +95 -94
- data/config/locales/gl.yml +1 -0
- data/config/locales/hu.yml +4 -3
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/it.yml +4 -3
- data/config/locales/nl.yml +3 -2
- data/config/locales/no.yml +117 -0
- data/config/locales/pl.yml +1 -0
- data/config/locales/pt-BR.yml +1 -0
- data/config/locales/pt.yml +1 -0
- data/config/locales/sv.yml +204 -203
- data/config/locales/tr-TR.yml +1 -0
- data/lib/decidim/conferences/participatory_space.rb +1 -0
- data/lib/decidim/conferences/version.rb +1 -1
- metadata +23 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17b13f7756447bf49686845ee1c035fd843c7187110f1e2fe0c3938d8b42d5eb
|
4
|
+
data.tar.gz: 0b7c31d1b7feeefb0e7eb727269002479e7bdb57eadf61a0c7bd2cc1c95a5664
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42f0d7c52d5f2eb0c555d145505372412fd5e763cc4bc546c7a356bd6bdf774d601f3a620965bed1f068eaa6a1df5986b930cb2771538d6646a2a489d0bde293
|
7
|
+
data.tar.gz: 8af57513c692428d9c7a9685441bd13470e271b15d4dd0960b5a2c8a0fad6ea4c790434c9f2b7557d9961db5efabe47b6ccf92679c0b0903a021db39147424f6
|
@@ -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>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<div class="card__footer card__footer--spaces">
|
2
2
|
<div class="card__support">
|
3
3
|
<%= link_to(
|
4
|
-
t("layouts.decidim.conferences.conference
|
4
|
+
t(model.cta_button_text_key, scope: "layouts.decidim.conferences.conference"),
|
5
5
|
resource_path,
|
6
6
|
class: "card__button button button--sc secondary light small"
|
7
7
|
) %>
|
@@ -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
|
|
@@ -5,6 +5,10 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# The main admin application controller for conferences
|
7
7
|
class ApplicationController < Decidim::Admin::ApplicationController
|
8
|
+
register_permissions(::Decidim::Conferences::Admin::ApplicationController,
|
9
|
+
Decidim::Conferences::Permissions,
|
10
|
+
Decidim::Admin::Permissions)
|
11
|
+
|
8
12
|
private
|
9
13
|
|
10
14
|
def permissions_context
|
@@ -14,10 +18,7 @@ module Decidim
|
|
14
18
|
end
|
15
19
|
|
16
20
|
def permission_class_chain
|
17
|
-
|
18
|
-
Decidim::Conferences::Permissions,
|
19
|
-
Decidim::Admin::Permissions
|
20
|
-
]
|
21
|
+
::Decidim.permissions_registry.chain_for(::Decidim::Conferences::Admin::ApplicationController)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
@@ -12,6 +12,11 @@ module Decidim
|
|
12
12
|
module ConferenceAdmin
|
13
13
|
extend ActiveSupport::Concern
|
14
14
|
|
15
|
+
RegistersPermissions
|
16
|
+
.register_permissions(::Decidim::Conferences::Admin::Concerns::ConferenceAdmin,
|
17
|
+
::Decidim::Conferences::Permissions,
|
18
|
+
::Decidim::Admin::Permissions)
|
19
|
+
|
15
20
|
included do
|
16
21
|
include Decidim::Admin::ParticipatorySpaceAdminContext
|
17
22
|
participatory_space_admin_layout
|
@@ -35,10 +40,7 @@ module Decidim
|
|
35
40
|
end
|
36
41
|
|
37
42
|
def permission_class_chain
|
38
|
-
|
39
|
-
Decidim::Conferences::Permissions,
|
40
|
-
Decidim::Admin::Permissions
|
41
|
-
]
|
43
|
+
PermissionsRegistry.chain_for(ConferenceAdmin)
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
@@ -10,6 +10,11 @@ module Decidim
|
|
10
10
|
|
11
11
|
include NeedsPermission
|
12
12
|
|
13
|
+
register_permissions(::Decidim::Conferences::ApplicationController,
|
14
|
+
Decidim::Conferences::Permissions,
|
15
|
+
Decidim::Admin::Permissions,
|
16
|
+
Decidim::Permissions)
|
17
|
+
|
13
18
|
private
|
14
19
|
|
15
20
|
def permissions_context
|
@@ -19,11 +24,7 @@ module Decidim
|
|
19
24
|
end
|
20
25
|
|
21
26
|
def permission_class_chain
|
22
|
-
|
23
|
-
Decidim::Conferences::Permissions,
|
24
|
-
Decidim::Admin::Permissions,
|
25
|
-
Decidim::Permissions
|
26
|
-
]
|
27
|
+
::Decidim.permissions_registry.chain_for(::Decidim::Conferences::ApplicationController)
|
27
28
|
end
|
28
29
|
|
29
30
|
def permission_scope
|
@@ -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
|
|