decidim-conferences 0.17.2 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) 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_m/footer.erb +1 -1
  5. data/app/cells/decidim/conferences/conference_speaker/show.erb +2 -2
  6. data/app/cells/decidim/conferences/conference_speaker_cell.rb +6 -2
  7. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +6 -0
  8. data/app/cells/decidim/conferences/partner_cell.rb +2 -0
  9. data/app/cells/decidim/conferences/photos_list_cell.rb +1 -0
  10. data/app/cells/decidim/conferences/registration_type_cell.rb +2 -0
  11. data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +1 -0
  12. data/app/commands/decidim/conferences/admin/create_conference.rb +0 -10
  13. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +1 -0
  14. data/app/commands/decidim/conferences/admin/publish_conference.rb +12 -0
  15. data/app/commands/decidim/conferences/admin/update_conference.rb +6 -2
  16. data/app/commands/decidim/conferences/admin/update_diploma.rb +1 -0
  17. data/app/commands/decidim/conferences/join_conference.rb +2 -0
  18. data/app/commands/decidim/conferences/leave_conference.rb +1 -0
  19. data/app/controllers/decidim/conferences/admin/application_controller.rb +5 -4
  20. data/app/controllers/decidim/conferences/admin/concerns/conference_admin.rb +6 -4
  21. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +3 -1
  22. data/app/controllers/decidim/conferences/admin/conference_speakers_controller.rb +2 -1
  23. data/app/controllers/decidim/conferences/admin/conference_user_roles_controller.rb +2 -1
  24. data/app/controllers/decidim/conferences/admin/conferences_controller.rb +2 -1
  25. data/app/controllers/decidim/conferences/admin/media_links_controller.rb +2 -1
  26. data/app/controllers/decidim/conferences/admin/partners_controller.rb +2 -1
  27. data/app/controllers/decidim/conferences/admin/registration_types_controller.rb +2 -1
  28. data/app/controllers/decidim/conferences/application_controller.rb +6 -5
  29. data/app/controllers/decidim/conferences/conference_program_controller.rb +4 -1
  30. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +1 -0
  31. data/app/controllers/decidim/conferences/conference_speakers_controller.rb +1 -0
  32. data/app/controllers/decidim/conferences/media_controller.rb +1 -0
  33. data/app/controllers/decidim/conferences/registration_types_controller.rb +1 -0
  34. data/app/forms/decidim/conferences/admin/conference_form.rb +4 -0
  35. data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -0
  36. data/app/forms/decidim/conferences/admin/registration_type_form.rb +1 -0
  37. data/app/helpers/decidim/conferences/conference_helper.rb +1 -0
  38. data/app/models/decidim/conference.rb +22 -4
  39. data/app/models/decidim/conference_user_role.rb +1 -0
  40. data/app/permissions/decidim/conferences/permissions.rb +6 -0
  41. data/app/presenters/decidim/conferences/admin_log/value_types/role_presenter.rb +1 -0
  42. data/app/presenters/decidim/log/value_types/conference_presenter.rb +1 -0
  43. data/app/queries/decidim/conferences/admin/admin_users.rb +8 -1
  44. data/app/queries/decidim/conferences/admin/conference_invites.rb +1 -0
  45. data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
  46. data/app/views/decidim/conferences/admin/conference_speakers/index.html.erb +1 -0
  47. data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +4 -3
  48. data/app/views/decidim/conferences/admin/conferences/index.html.erb +4 -3
  49. data/app/views/decidim/conferences/admin/partners/index.html.erb +1 -0
  50. data/app/views/decidim/conferences/admin/registration_types/index.html.erb +1 -0
  51. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
  52. data/app/views/decidim/conferences/conference_registration_mailer/confirmation.html.erb +1 -1
  53. data/app/views/decidim/conferences/conference_registration_mailer/pending_validation.html.erb +1 -1
  54. data/app/views/decidim/conferences/conferences/_partners.html.erb +1 -1
  55. data/app/views/decidim/conferences/conferences/_promoted_conference.html.erb +1 -1
  56. data/app/views/decidim/conferences/conferences/show.html.erb +3 -3
  57. data/app/views/decidim/conferences/media/index.html.erb +2 -2
  58. data/app/views/layouts/decidim/_conference_hero.html.erb +2 -2
  59. data/app/views/layouts/decidim/diploma.html.erb +2 -2
  60. data/config/locales/ar-SA.yml +1 -0
  61. data/config/locales/ar.yml +589 -0
  62. data/config/locales/ca.yml +1 -0
  63. data/config/locales/cs.yml +56 -55
  64. data/config/locales/de.yml +10 -9
  65. data/config/locales/en.yml +1 -0
  66. data/config/locales/es-MX.yml +1 -0
  67. data/config/locales/es-PY.yml +1 -0
  68. data/config/locales/es.yml +1 -0
  69. data/config/locales/eu.yml +1 -0
  70. data/config/locales/fi-plain.yml +1 -0
  71. data/config/locales/fi.yml +1 -0
  72. data/config/locales/fr.yml +95 -94
  73. data/config/locales/gl.yml +1 -0
  74. data/config/locales/hu.yml +2 -1
  75. data/config/locales/id-ID.yml +1 -0
  76. data/config/locales/it.yml +4 -3
  77. data/config/locales/nl.yml +3 -2
  78. data/config/locales/no.yml +117 -0
  79. data/config/locales/pl.yml +1 -0
  80. data/config/locales/pt-BR.yml +1 -0
  81. data/config/locales/pt.yml +1 -0
  82. data/config/locales/sv.yml +1 -0
  83. data/config/locales/tr-TR.yml +1 -0
  84. data/lib/decidim/conferences/participatory_space.rb +3 -0
  85. data/lib/decidim/conferences/version.rb +1 -1
  86. metadata +22 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a050b26126fa1de7d61e8b46c5cfd833ca3e177c5a06eefc9a494a405a5ed7a
4
- data.tar.gz: b59b6a60da46b12fcf24f9d0ef26661c459e40cfdfa0fd260e315289d401c6ab
3
+ metadata.gz: 5fe396d63f9e335c79c6ef5d3c2e7220226e03e6797e184cb60a681b30c79d6b
4
+ data.tar.gz: 8ee8b6a31e1f5f2cccc59de336da8f8f62f4943c8144d9571243727dbeff4300
5
5
  SHA512:
6
- metadata.gz: f0c1e67e26f000a95eb0c029d72763c8f3930d3af2e3a67781d80050207c74f838424f6a071b999a42c8fb09560e3cb41903d942733fd280c75a6e2dbecb4ad8
7
- data.tar.gz: 2b0886ad963ac3bb4596925cf9a9d52243259ae72f2f389c482164a994cc6a31700d668a33c273cd77f317ca066b9ffa282c84b953b7a4caaa84d822bd85f2cc
6
+ metadata.gz: dee2e08fa8880ee4c54af3b7da1291adde063e006377b0472481cc515396eb632f8bb78667e714ce0062a99c74a1d7f0d9a7afaac8ce62a129588ce8af4287cd
7
+ data.tar.gz: 6dbb9a34018713b7d5d19891a03f5a7e5cd32dc2f1deb219828ec1c502e14197be5499b9c61947f707008d09f8be70554c5de207fc6361c48ab0c3edcdf70a5a
@@ -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>
@@ -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.take_part"),
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
- 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
@@ -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
@@ -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
@@ -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