decidim-conferences 0.18.0 → 0.20.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheet/decidim/conferences/conferences.scss +3 -0
  3. data/app/cells/decidim/conferences/conference_address/show.erb +1 -1
  4. data/app/cells/decidim/conferences/conference_speaker/show.erb +2 -2
  5. data/app/cells/decidim/conferences/conference_speaker_cell.rb +6 -2
  6. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +6 -0
  7. data/app/cells/decidim/conferences/partner_cell.rb +2 -0
  8. data/app/cells/decidim/conferences/photos_list_cell.rb +1 -0
  9. data/app/cells/decidim/conferences/registration_type_cell.rb +2 -0
  10. data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +1 -0
  11. data/app/commands/decidim/conferences/admin/create_conference.rb +0 -10
  12. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +1 -0
  13. data/app/commands/decidim/conferences/admin/publish_conference.rb +12 -0
  14. data/app/commands/decidim/conferences/admin/update_conference.rb +6 -2
  15. data/app/commands/decidim/conferences/admin/update_diploma.rb +1 -0
  16. data/app/commands/decidim/conferences/join_conference.rb +2 -0
  17. data/app/commands/decidim/conferences/leave_conference.rb +1 -0
  18. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +3 -1
  19. data/app/controllers/decidim/conferences/admin/conference_speakers_controller.rb +2 -1
  20. data/app/controllers/decidim/conferences/admin/conference_user_roles_controller.rb +2 -1
  21. data/app/controllers/decidim/conferences/admin/conferences_controller.rb +2 -1
  22. data/app/controllers/decidim/conferences/admin/media_links_controller.rb +2 -1
  23. data/app/controllers/decidim/conferences/admin/partners_controller.rb +2 -1
  24. data/app/controllers/decidim/conferences/admin/registration_types_controller.rb +2 -1
  25. data/app/controllers/decidim/conferences/conference_program_controller.rb +4 -1
  26. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +1 -0
  27. data/app/controllers/decidim/conferences/conference_speakers_controller.rb +1 -0
  28. data/app/controllers/decidim/conferences/media_controller.rb +1 -0
  29. data/app/controllers/decidim/conferences/registration_types_controller.rb +1 -0
  30. data/app/forms/decidim/conferences/admin/conference_form.rb +4 -0
  31. data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -0
  32. data/app/forms/decidim/conferences/admin/registration_type_form.rb +1 -0
  33. data/app/helpers/decidim/conferences/conference_helper.rb +1 -0
  34. data/app/models/decidim/conference.rb +17 -4
  35. data/app/models/decidim/conference_user_role.rb +1 -0
  36. data/app/permissions/decidim/conferences/permissions.rb +6 -0
  37. data/app/presenters/decidim/conferences/admin_log/value_types/role_presenter.rb +1 -0
  38. data/app/presenters/decidim/log/value_types/conference_presenter.rb +1 -0
  39. data/app/queries/decidim/conferences/admin/conference_invites.rb +1 -0
  40. data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
  41. data/app/views/decidim/conferences/admin/conference_speakers/index.html.erb +1 -0
  42. data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +4 -3
  43. data/app/views/decidim/conferences/admin/conferences/index.html.erb +4 -3
  44. data/app/views/decidim/conferences/admin/partners/index.html.erb +1 -0
  45. data/app/views/decidim/conferences/admin/registration_types/index.html.erb +1 -0
  46. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
  47. data/app/views/decidim/conferences/conference_registration_mailer/confirmation.html.erb +1 -1
  48. data/app/views/decidim/conferences/conference_registration_mailer/pending_validation.html.erb +1 -1
  49. data/app/views/decidim/conferences/conferences/_partners.html.erb +1 -1
  50. data/app/views/decidim/conferences/conferences/show.html.erb +3 -3
  51. data/app/views/decidim/conferences/media/index.html.erb +2 -2
  52. data/app/views/layouts/decidim/_conference_hero.html.erb +2 -2
  53. data/app/views/layouts/decidim/diploma.html.erb +2 -2
  54. data/config/locales/ar.yml +5 -2
  55. data/config/locales/cs.yml +55 -55
  56. data/config/locales/de.yml +10 -10
  57. data/config/locales/el-GR.yml +1 -0
  58. data/config/locales/fr.yml +94 -94
  59. data/config/locales/hu.yml +1 -1
  60. data/config/locales/is-IS.yml +1 -0
  61. data/config/locales/it.yml +3 -3
  62. data/config/locales/nl.yml +2 -2
  63. data/config/locales/no.yml +571 -0
  64. data/lib/decidim/conferences/participatory_space.rb +3 -0
  65. data/lib/decidim/conferences/version.rb +1 -1
  66. metadata +23 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0e842238aaaceb5245a50065ab55bded2a36ea31fa14c54dc8631f223ff75d3
4
- data.tar.gz: c47d206b41f4c12721743942fdb7efe0e519f3c4fb4a8737f9a9a0cfc1bdc015
3
+ metadata.gz: 073cb7b12f74449977cfec9e2d7adb06068471c034cd41bfd4d7bfb18a34e178
4
+ data.tar.gz: 5f10e62f54d3a8511f565ef53c7b2d50ab49f1e75da0df5f89f35056efb36284
5
5
  SHA512:
6
- metadata.gz: 1fb525774a7fa599adf5f6b7cb736cd9b1ee11a5ef7d7668a0a72ed26511b9424f862f3c9da1e89bfc6660608bc3f3c720f2b5d095cc379438b7f8cb546d7d5d
7
- data.tar.gz: 0a16252c6a48fdab476be5217fac2966c009fa5387479e2818f788e028a5be8ee1105037dad3a999815156160e167a7a1f04776855fd70f2071a92957187eecd
6
+ metadata.gz: 5ab470eaa1b17bbd6cee13c6238fe492abd41f2888728dde9c650c7ac595b5af7852532740626726b457ca81933519c4673fcb66c81295d303ca2a65cb221145
7
+ data.tar.gz: 3a7469d214456fb69eb48eeeb0afe2656df021d630dba27dc97beac8eafd751960f047dcbcbb6816f4f2db20ae795a48295fd356c51c16ff32814984619eec53
@@ -0,0 +1,3 @@
1
+ .conference--date{
2
+ cursor: default;
3
+ }
@@ -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
- link_to t(".go_to_twitter"), "https://twitter.com/#{model.twitter_handle}", target: "_blank"
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
- link_to model.personal_url || model.user.personal_url, target: "_blank", class: "card-link" do
74
+
75
+ link_to model.personal_url || model.user.personal_url, target: "_blank", class: "card-link", rel: "noopener" do
72
76
  "#{icon "external-link"}" "&nbsp;#{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
@@ -10,6 +10,7 @@ module Decidim
10
10
 
11
11
  def show
12
12
  return unless model.any?
13
+
13
14
  render
14
15
  end
15
16
  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
@@ -20,6 +20,7 @@ module Decidim
20
20
  def call
21
21
  @conference_registration.with_lock do
22
22
  return broadcast(:invalid) unless can_join_conference?
23
+
23
24
  confirm_registration
24
25
  send_email_confirmation
25
26
  send_notification_confirmation
@@ -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
@@ -91,6 +91,7 @@ module Decidim
91
91
 
92
92
  def invitation_instructions
93
93
  return "invite_admin" if form.role == "admin"
94
+
94
95
  "invite_collaborator"
95
96
  end
96
97
 
@@ -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? && @conference.registrations_enabled?
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
@@ -20,6 +20,7 @@ module Decidim
20
20
  def call
21
21
  @conference.with_lock do
22
22
  return broadcast(:invalid) if form.invalid?
23
+
23
24
  update_conference_diploma
24
25
  Decidim.traceability.perform_action!(:update_diploma, @conference, form.current_user) do
25
26
  @conference
@@ -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
 
@@ -23,6 +23,7 @@ module Decidim
23
23
  @conference.with_lock do
24
24
  return broadcast(:invalid) unless registration
25
25
  return broadcast(:invalid) unless meetings_registrations
26
+
26
27
  destroy_registration
27
28
  destroy_meeting_registration
28
29
  end
@@ -9,13 +9,14 @@ module Decidim
9
9
  #
10
10
  class ConferenceRegistrationsController < Decidim::Conferences::Admin::ApplicationController
11
11
  include Concerns::ConferenceAdmin
12
+ include Decidim::Paginable
12
13
 
13
14
  helper_method :conference
14
15
 
15
16
  def index
16
17
  enforce_permission_to :read_conference_registrations, :conference, conference: conference
17
18
 
18
- @conference_registrations = Decidim::Conferences::ConferenceRegistration.where(conference: conference).page(params[:page]).per(15)
19
+ @conference_registrations = paginate(Decidim::Conferences::ConferenceRegistration.where(conference: conference))
19
20
  end
20
21
 
21
22
  def export
@@ -52,6 +53,7 @@ module Decidim
52
53
 
53
54
  def conference_registration
54
55
  return if params[:id].blank?
56
+
55
57
  @conference_registration ||= conference.conference_registrations.find_by(id: params[:id])
56
58
  end
57
59
  end
@@ -8,13 +8,14 @@ module Decidim
8
8
  class ConferenceSpeakersController < Decidim::Conferences::Admin::ApplicationController
9
9
  helper Decidim::Conferences::Admin::ConferenceSpeakersHelper
10
10
  include Concerns::ConferenceAdmin
11
+ include Decidim::Paginable
11
12
 
12
13
  def index
13
14
  enforce_permission_to :index, :conference_speaker
14
15
 
15
16
  @query = params[:q]
16
17
 
17
- @conference_speakers = Decidim::Conferences::Admin::ConferenceSpeakers.for(collection, @query).page(params[:page]).per(15)
18
+ @conference_speakers = paginate(Decidim::Conferences::Admin::ConferenceSpeakers.for(collection, @query))
18
19
  end
19
20
 
20
21
  def new
@@ -7,10 +7,11 @@ module Decidim
7
7
  #
8
8
  class ConferenceUserRolesController < Decidim::Conferences::Admin::ApplicationController
9
9
  include Concerns::ConferenceAdmin
10
+ include Decidim::Paginable
10
11
 
11
12
  def index
12
13
  enforce_permission_to :index, :conference_user_role
13
- @conference_user_roles = collection
14
+ @conference_user_roles = paginate(collection)
14
15
  end
15
16
 
16
17
  def new
@@ -8,10 +8,11 @@ module Decidim
8
8
  class ConferencesController < Decidim::Conferences::Admin::ApplicationController
9
9
  helper_method :current_conference, :current_participatory_space
10
10
  layout "decidim/admin/conferences"
11
+ include Decidim::Paginable
11
12
 
12
13
  def index
13
14
  enforce_permission_to :read, :conference_list
14
- @conferences = collection
15
+ @conferences = paginate(collection)
15
16
  end
16
17
 
17
18
  def new
@@ -6,11 +6,12 @@ module Decidim
6
6
  # Controller that allows managing conference media links.
7
7
  class MediaLinksController < Decidim::Conferences::Admin::ApplicationController
8
8
  include Concerns::ConferenceAdmin
9
+ include Decidim::Paginable
9
10
 
10
11
  def index
11
12
  enforce_permission_to :index, :media_link
12
13
 
13
- @media_links = collection.page(params[:page]).per(15)
14
+ @media_links = paginate(collection)
14
15
  end
15
16
 
16
17
  def new
@@ -7,11 +7,12 @@ module Decidim
7
7
  #
8
8
  class PartnersController < Decidim::Conferences::Admin::ApplicationController
9
9
  include Concerns::ConferenceAdmin
10
+ include Decidim::Paginable
10
11
 
11
12
  def index
12
13
  enforce_permission_to :index, :partner
13
14
 
14
- @partners = collection.page(params[:page]).per(15)
15
+ @partners = paginate(collection)
15
16
  end
16
17
 
17
18
  def new
@@ -8,11 +8,12 @@ module Decidim
8
8
  class RegistrationTypesController < Decidim::Conferences::Admin::ApplicationController
9
9
  include Concerns::ConferenceAdmin
10
10
  include Decidim::ApplicationHelper
11
+ include Decidim::Paginable
11
12
 
12
13
  def index
13
14
  enforce_permission_to :index, :registration_type
14
15
 
15
- @registration_types = collection.page(params[:page]).per(15)
16
+ @registration_types = paginate(collection)
16
17
  end
17
18
 
18
19
  def new
@@ -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.empty?
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
 
@@ -65,6 +65,7 @@ module Decidim
65
65
  def redirect_after_path
66
66
  referer = request.headers["Referer"]
67
67
  return redirect_to(conference_path(conference)) if referer =~ /invitation_token/
68
+
68
69
  redirect_back fallback_location: conference_path(conference)
69
70
  end
70
71
  end
@@ -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