decidim-conferences 0.16.1 → 0.19.0
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/content_blocks/highlighted_conferences_cell.rb +0 -1
- 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 +3 -3
- data/app/views/layouts/decidim/diploma.html.erb +2 -2
- data/config/locales/ar-SA.yml +132 -22
- data/config/locales/ar.yml +589 -0
- data/config/locales/ca.yml +192 -191
- data/config/locales/cs-CZ.yml +3 -3
- data/config/locales/cs.yml +581 -0
- data/config/locales/de.yml +15 -14
- data/config/locales/en.yml +87 -85
- data/config/locales/eo-UY.yml +1 -0
- data/config/locales/es-MX.yml +7 -6
- data/config/locales/es-PY.yml +8 -7
- data/config/locales/es.yml +161 -160
- data/config/locales/eu.yml +6 -5
- data/config/locales/fi-pl.yml +3 -3
- data/config/locales/fi-plain.yml +571 -0
- data/config/locales/fi.yml +65 -64
- data/config/locales/fr.yml +100 -99
- data/config/locales/gl.yml +6 -5
- data/config/locales/hu.yml +9 -8
- data/config/locales/id-ID.yml +6 -5
- data/config/locales/it.yml +9 -8
- data/config/locales/nl.yml +8 -7
- data/config/locales/no.yml +5 -0
- data/config/locales/pl.yml +6 -5
- data/config/locales/pt-BR.yml +6 -5
- data/config/locales/pt.yml +6 -5
- data/config/locales/sv.yml +206 -205
- data/config/locales/tr-TR.yml +6 -5
- data/lib/decidim/conferences/admin_engine.rb +1 -0
- data/lib/decidim/conferences/participatory_space.rb +2 -0
- data/lib/decidim/conferences/version.rb +1 -1
- metadata +26 -21
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>
|
@@ -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
|
|