decidim-conferences 0.23.6 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/conferences/conference_speaker/show.erb +1 -1
  3. data/app/cells/decidim/conferences/media_link/show.erb +1 -1
  4. data/app/cells/decidim/conferences/media_link_cell.rb +1 -0
  5. data/app/commands/decidim/conferences/admin/create_conference_speaker.rb +40 -18
  6. data/app/commands/decidim/conferences/admin/create_partner.rb +33 -14
  7. data/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb +1 -1
  8. data/app/commands/decidim/conferences/admin/update_conference_speaker.rb +41 -17
  9. data/app/commands/decidim/conferences/admin/update_partner.rb +30 -10
  10. data/app/controllers/decidim/conferences/admin/imports_controller.rb +14 -0
  11. data/app/controllers/decidim/conferences/admin/moderations/reports_controller.rb +14 -0
  12. data/app/forms/decidim/conferences/admin/conference_speaker_form.rb +1 -1
  13. data/app/forms/decidim/conferences/admin/media_link_form.rb +1 -1
  14. data/app/forms/decidim/conferences/admin/partner_form.rb +2 -1
  15. data/app/models/decidim/conference_meeting.rb +1 -1
  16. data/app/models/decidim/conference_speaker.rb +1 -1
  17. data/app/models/decidim/conference_speaker_conference_meeting.rb +2 -2
  18. data/app/models/decidim/conferences/conference_meeting_registration_type.rb +2 -2
  19. data/app/models/decidim/conferences/registration_type.rb +1 -1
  20. data/app/permissions/decidim/conferences/permissions.rb +1 -1
  21. data/app/presenters/decidim/conferences/conference_stats_presenter.rb +1 -1
  22. data/app/views/decidim/conferences/admin/partners/_form.html.erb +1 -1
  23. data/app/views/layouts/decidim/admin/conference.html.erb +2 -1
  24. data/config/locales/ar.yml +0 -4
  25. data/config/locales/ca.yml +7 -4
  26. data/config/locales/cs.yml +12 -5
  27. data/config/locales/de.yml +10 -3
  28. data/config/locales/el.yml +0 -4
  29. data/config/locales/en.yml +10 -3
  30. data/config/locales/es-MX.yml +7 -4
  31. data/config/locales/es-PY.yml +7 -4
  32. data/config/locales/es.yml +8 -5
  33. data/config/locales/eu.yml +0 -4
  34. data/config/locales/fi-plain.yml +11 -4
  35. data/config/locales/fi.yml +11 -4
  36. data/config/locales/fr-CA.yml +10 -3
  37. data/config/locales/fr.yml +10 -3
  38. data/config/locales/gl.yml +0 -4
  39. data/config/locales/hu.yml +0 -4
  40. data/config/locales/id-ID.yml +0 -4
  41. data/config/locales/it.yml +1 -5
  42. data/config/locales/ja.yml +6 -4
  43. data/config/locales/lv.yml +0 -4
  44. data/config/locales/nl.yml +130 -129
  45. data/config/locales/no.yml +0 -4
  46. data/config/locales/pl.yml +12 -5
  47. data/config/locales/pt-BR.yml +0 -4
  48. data/config/locales/pt.yml +0 -4
  49. data/config/locales/ro-RO.yml +0 -54
  50. data/config/locales/sk.yml +0 -4
  51. data/config/locales/sv.yml +6 -4
  52. data/config/locales/tr-TR.yml +7 -4
  53. data/config/locales/zh-CN.yml +0 -4
  54. data/lib/decidim/api/conference_media_link_type.rb +18 -0
  55. data/lib/decidim/api/conference_partner_type.rb +19 -0
  56. data/lib/decidim/api/conference_speaker_type.rb +23 -0
  57. data/lib/decidim/api/conference_type.rb +42 -0
  58. data/lib/decidim/conferences/admin_engine.rb +3 -1
  59. data/lib/decidim/conferences/api.rb +10 -0
  60. data/lib/decidim/conferences/engine.rb +7 -1
  61. data/lib/decidim/conferences/participatory_space.rb +25 -25
  62. data/lib/decidim/conferences/query_extensions.rb +43 -0
  63. data/lib/decidim/conferences/test/factories.rb +6 -6
  64. data/lib/decidim/conferences/version.rb +1 -1
  65. data/lib/decidim/conferences.rb +1 -0
  66. metadata +22 -18
  67. data/app/types/decidim/conferences/conference_media_link_type.rb +0 -19
  68. data/app/types/decidim/conferences/conference_partner_type.rb +0 -20
  69. data/app/types/decidim/conferences/conference_speaker_type.rb +0 -24
  70. data/app/types/decidim/conferences/conference_type.rb +0 -45
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08f1e6eea8204b042028ee0291ad31d95328c2a980c88b70b688a1516a41039d'
4
- data.tar.gz: 994df6ad83eceaccae42095023a5fd3d601871302fe1d969632bd64c721012f1
3
+ metadata.gz: 7067bdca600b96ce7d27aa7efdd85416c140cd84dbf050a381c0fbb1bc799ea4
4
+ data.tar.gz: 508e299dff1426f7d4485ce803fa8ecdbc71d39978ebe624d37e10db4f26747e
5
5
  SHA512:
6
- metadata.gz: fdfb29478b902b75be05677fe6e0c000c1959be8d3c8bc0305046a67a6dc5badb137bc10136a272862c5c43712b9f6f420f26c267ca9f1a285d233d7201194b7
7
- data.tar.gz: '0658ca361398ef67c84d06a68132d93bfec62bbb9e8c407c3e87aa9027cd87445e67d2aa4f12916e035c2f1ae758c2d2510536473cfcd027e4482d5f7ccb5dcf'
6
+ metadata.gz: 12cb8ede1e06dce01b7c33c6b7ec470c1ff8f4e9f9d4ef3a5cd3bb5759643660b37dabcb415db0b0e22f89881deaea6170c74a5ad50935330e275859f17ee833
7
+ data.tar.gz: a14098ba7b5452ddc42697cecdf72bb0182013a56010a13d808786eb524392749b012542049442a1e79fa48ef92130bde6ee4261701dd3629072d49c095581d2
@@ -70,7 +70,7 @@
70
70
  <hr class="reset mt-none mb-s">
71
71
  <div class="row">
72
72
  <div class="column medium-12">
73
- <div class="bio-acts">Speaking at</div>
73
+ <div class="bio-acts"><%= t("conferences.conference_speaker.show.speaking_at", scope: "decidim") %></div>
74
74
 
75
75
  <ul class="list-reset">
76
76
  <% meetings.each do |meeting| %>
@@ -2,7 +2,7 @@
2
2
  <%= icon "external-link", role: "img", "aria-hidden": true %>
3
3
  <div>
4
4
  <%= link_to model.link, target: "_blank" do %>
5
- <strong><%= translated_attribute(model.title) %> </strong>
5
+ <strong><%= decidim_html_escape translated_attribute(model.title) %> </strong>
6
6
  <% end %>
7
7
  <div class="text-small"><%= l(model.date, format: :decidim_short_with_month_name_short) %> · <%= model.link %></div>
8
8
  </div>
@@ -5,6 +5,7 @@ module Decidim
5
5
  # This cell renders the media link card for an instance of a MediaLink
6
6
  class MediaLinkCell < Decidim::ViewModel
7
7
  include Decidim::LayoutHelper
8
+ include Decidim::SanitizeHelper
8
9
 
9
10
  def show
10
11
  render
@@ -25,18 +25,52 @@ module Decidim
25
25
  def call
26
26
  return broadcast(:invalid) if form.invalid?
27
27
 
28
- transaction do
29
- create_conference_speaker!
30
- link_meetings(@conference_speaker)
31
- end
28
+ # We are going to assign the attributes only to handle the validation of the avatar before accessing
29
+ # `create_conference_speaker!` which uses `create!`, and this will render an ActiveRecord::RecordInvalid error
30
+ # After we assign and check if the object is valid, we will not save the model to let it be handled the old way
31
+ # If there is an error we add the error to the form
32
+ # We are using this method to assign the conference because if we are trying to assign all at once, there will be thrown a
33
+ # Delegation error
34
+
35
+ if conference_speaker_with_attributes.valid?
32
36
 
33
- broadcast(:ok)
37
+ transaction do
38
+ create_conference_speaker!
39
+ link_meetings(@conference_speaker)
40
+ end
41
+ broadcast(:ok)
42
+ else
43
+ form.errors.add(:avatar, conference_speaker_with_attributes.errors[:avatar]) if conference_speaker_with_attributes.errors.include? :avatar
44
+
45
+ broadcast(:invalid)
46
+ end
34
47
  end
35
48
 
36
49
  private
37
50
 
38
51
  attr_reader :form, :conference, :current_user
39
52
 
53
+ def conference_speaker_with_attributes
54
+ attrs = form.attributes.slice(
55
+ :full_name,
56
+ :twitter_handle,
57
+ :personal_url,
58
+ :avatar,
59
+ :remove_avatar,
60
+ :position,
61
+ :affiliation,
62
+ :short_bio
63
+ ).merge(
64
+ decidim_conference_id: conference.id,
65
+ conference: conference,
66
+ user: form.user
67
+ )
68
+ conference_speaker = conference.speakers.build
69
+ conference_speaker.conference = conference
70
+ conference_speaker.assign_attributes(attrs)
71
+ conference_speaker
72
+ end
73
+
40
74
  def create_conference_speaker!
41
75
  log_info = {
42
76
  resource: {
@@ -50,19 +84,7 @@ module Decidim
50
84
  @conference_speaker = Decidim.traceability.create!(
51
85
  Decidim::ConferenceSpeaker,
52
86
  current_user,
53
- form.attributes.slice(
54
- :full_name,
55
- :position,
56
- :affiliation,
57
- :short_bio,
58
- :twitter_handle,
59
- :personal_url,
60
- :avatar,
61
- :remove_avatar
62
- ).merge(
63
- conference: conference,
64
- user: form.user
65
- ),
87
+ conference_speaker_with_attributes.attributes,
66
88
  log_info
67
89
  )
68
90
  end
@@ -25,11 +25,17 @@ module Decidim
25
25
  def call
26
26
  return broadcast(:invalid) if form.invalid?
27
27
 
28
- transaction do
29
- create_partner!
30
- end
28
+ if conference_partner.valid?
29
+ transaction do
30
+ create_partner!
31
+ end
32
+
33
+ broadcast(:ok)
34
+ else
35
+ form.errors.add(:logo, conference_partner.errors[:logo]) if conference_partner.errors.include? :logo
31
36
 
32
- broadcast(:ok)
37
+ broadcast(:invalid)
38
+ end
33
39
  end
34
40
 
35
41
  private
@@ -49,19 +55,32 @@ module Decidim
49
55
  @partner = Decidim.traceability.create!(
50
56
  Decidim::Conferences::Partner,
51
57
  form.current_user,
52
- { conference: conference }.merge(
53
- form.attributes.slice(
54
- :name,
55
- :weight,
56
- :link,
57
- :partner_type,
58
- :logo,
59
- :remove_avatar
60
- )
61
- ),
58
+ attributes,
62
59
  log_info
63
60
  )
64
61
  end
62
+
63
+ def conference_partner
64
+ return @conference_partner if defined?(@conference_partner)
65
+
66
+ @conference_partner = conference.partners.build
67
+ @conference_partner.conference = conference
68
+ @conference_partner.assign_attributes(attributes)
69
+ @conference_partner
70
+ end
71
+
72
+ def attributes
73
+ { conference: conference }.merge(
74
+ form.attributes.slice(
75
+ :name,
76
+ :weight,
77
+ :link,
78
+ :partner_type,
79
+ :logo,
80
+ :remove_avatar
81
+ )
82
+ )
83
+ end
65
84
  end
66
85
  end
67
86
  end
@@ -37,7 +37,7 @@ module Decidim
37
37
 
38
38
  def already_invited?
39
39
  return false unless user.persisted?
40
- return false unless conference.conference_invites.where(user: user).exists?
40
+ return false unless conference.conference_invites.exists?(user: user)
41
41
 
42
42
  form.errors.add(:email, :already_invited)
43
43
  true
@@ -11,6 +11,7 @@ module Decidim
11
11
  # form - A form object with the params.
12
12
  # conference_speaker - The ConferenceSpeaker to update
13
13
  def initialize(form, conference_speaker)
14
+ form.avatar = conference_speaker.avatar if form.avatar.blank?
14
15
  @form = form
15
16
  @conference_speaker = conference_speaker
16
17
  end
@@ -25,18 +26,52 @@ module Decidim
25
26
  return broadcast(:invalid) if form.invalid?
26
27
  return broadcast(:invalid) unless conference_speaker
27
28
 
28
- transaction do
29
- update_conference_speaker!
30
- link_meetings(@conference_speaker)
31
- end
29
+ # We are going to assign the attributes only to handle the validation of the avatar before accessing
30
+ # `update_conference_speaker!` which uses `update!`. Without this step, the image validation may render
31
+ # an ActiveRecord::RecordInvalid error
32
+ # After we assign and check if the object is valid, we reload the model to let it be handled the old way
33
+ # If there is an error we add the error to the form
34
+ conference_speaker.assign_attributes(attributes)
35
+
36
+ if conference_speaker.valid?
37
+ conference_speaker.reload
32
38
 
33
- broadcast(:ok)
39
+ transaction do
40
+ update_conference_speaker!
41
+ link_meetings(@conference_speaker)
42
+ end
43
+ broadcast(:ok)
44
+ else
45
+ form.errors.add(:avatar, conference_speaker.errors[:avatar]) if conference_speaker.errors.include? :avatar
46
+
47
+ broadcast(:invalid)
48
+ end
34
49
  end
35
50
 
36
51
  private
37
52
 
38
53
  attr_reader :form, :conference_speaker
39
54
 
55
+ def attributes
56
+ form.attributes.slice(
57
+ :full_name,
58
+ :twitter_handle,
59
+ :personal_url,
60
+ :position,
61
+ :affiliation,
62
+ :short_bio
63
+ ).merge(
64
+ user: form.user
65
+ ).merge(uploader_attributes)
66
+ end
67
+
68
+ def uploader_attributes
69
+ {
70
+ avatar: form.avatar,
71
+ remove_avatar: form.remove_avatar
72
+ }.delete_if { |_k, val| val.is_a?(Decidim::ApplicationUploader) }
73
+ end
74
+
40
75
  def update_conference_speaker!
41
76
  log_info = {
42
77
  resource: {
@@ -50,18 +85,7 @@ module Decidim
50
85
  Decidim.traceability.update!(
51
86
  conference_speaker,
52
87
  form.current_user,
53
- form.attributes.slice(
54
- :full_name,
55
- :position,
56
- :affiliation,
57
- :short_bio,
58
- :twitter_handle,
59
- :personal_url,
60
- :avatar,
61
- :remove_avatar
62
- ).merge(
63
- user: form.user
64
- ),
88
+ attributes,
65
89
  log_info
66
90
  )
67
91
  end
@@ -11,6 +11,8 @@ module Decidim
11
11
  # form - A form object with the params.
12
12
  # conference_partner - The ConferencePartner to update
13
13
  def initialize(form, conference_partner)
14
+ form.logo = conference_partner.logo if form.logo.blank?
15
+
14
16
  @form = form
15
17
  @conference_partner = conference_partner
16
18
  end
@@ -25,14 +27,39 @@ module Decidim
25
27
  return broadcast(:invalid) if form.invalid?
26
28
  return broadcast(:invalid) unless conference_partner
27
29
 
28
- update_conference_partner!
29
- broadcast(:ok)
30
+ # We are going to assign the attributes only to handle the validation of the avatar before accessing
31
+ # `update_conference_partner!` which uses `update!`. Without this step, the image validation may render
32
+ # an ActiveRecord::RecordInvalid error
33
+ # After we assign and check if the object is valid, we reload the model to let it be handled the old way
34
+ # If there is an error we add the error to the form
35
+ conference_partner.assign_attributes(attributes)
36
+ if conference_partner.valid?
37
+ conference_partner.reload
38
+
39
+ update_conference_partner!
40
+ broadcast(:ok)
41
+ else
42
+ form.errors.add(:logo, conference_partner.errors[:logo]) if conference_partner.errors.include? :logo
43
+
44
+ broadcast(:invalid)
45
+ end
30
46
  end
31
47
 
32
48
  private
33
49
 
34
50
  attr_reader :form, :conference_partner
35
51
 
52
+ def attributes
53
+ form.attributes.slice(
54
+ :name,
55
+ :weight,
56
+ :partner_type,
57
+ :link,
58
+ :logo,
59
+ :remove_logo
60
+ )
61
+ end
62
+
36
63
  def update_conference_partner!
37
64
  log_info = {
38
65
  resource: {
@@ -46,14 +73,7 @@ module Decidim
46
73
  Decidim.traceability.update!(
47
74
  conference_partner,
48
75
  form.current_user,
49
- form.attributes.slice(
50
- :name,
51
- :weight,
52
- :partner_type,
53
- :link,
54
- :logo,
55
- :remove_logo
56
- ),
76
+ attributes,
57
77
  log_info
58
78
  )
59
79
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # This controller allows importing things.
7
+ # It is targeted for customizations for importing things that lives under
8
+ # an conference.
9
+ class ImportsController < Decidim::Admin::ImportsController
10
+ include Concerns::ConferenceAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ module Moderations
7
+ # This controller allows admins to manage moderation reports in an conference.
8
+ class ReportsController < Decidim::Admin::Moderations::ReportsController
9
+ include Concerns::ConferenceAdmin
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -43,7 +43,7 @@ module Decidim
43
43
  def personal_url
44
44
  return if super.blank?
45
45
 
46
- return "http://" + super unless super.match?(%r{\A(http|https)://}i)
46
+ return "http://#{super}" unless super.match?(%r{\A(http|https)://}i)
47
47
 
48
48
  super
49
49
  end
@@ -21,7 +21,7 @@ module Decidim
21
21
  def link
22
22
  return if super.blank?
23
23
 
24
- return "http://" + super unless super.match?(%r{\A(http|https)://}i)
24
+ return "http://#{super}" unless super.match?(%r{\A(http|https)://}i)
25
25
 
26
26
  super
27
27
  end
@@ -17,6 +17,7 @@ module Decidim
17
17
  attribute :remove_logo
18
18
 
19
19
  validates :name, :partner_type, presence: true, if: ->(form) { form.logo.present? }
20
+ validates :logo, presence: true, unless: ->(form) { form.logo.present? }
20
21
  validates :logo, passthru: {
21
22
  to: Decidim::Conferences::Partner,
22
23
  with: {
@@ -38,7 +39,7 @@ module Decidim
38
39
  def link
39
40
  return if super.blank?
40
41
 
41
- return "http://" + super unless super.match?(%r{\A(http|https)://}i)
42
+ return "http://#{super}" unless super.match?(%r{\A(http|https)://}i)
42
43
 
43
44
  super
44
45
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # It represents a meeting of the conference
5
5
  class ConferenceMeeting < Decidim::Meetings::Meeting
6
6
  has_many :conference_speaker_conference_meetings, dependent: :destroy
7
- has_many :conference_speakers, through: :conference_speaker_conference_meetings, foreign_key: "conference_meeting_id", class_name: "Decidim::ConferenceSpeaker"
7
+ has_many :conference_speakers, through: :conference_speaker_conference_meetings, class_name: "Decidim::ConferenceSpeaker"
8
8
  has_many :conference_meeting_registration_types, dependent: :destroy
9
9
  has_many :registration_types, through: :conference_meeting_registration_types, foreign_key: "registration_type_id", class_name: "Decidim::Conferences::RegistrationType"
10
10
  end
@@ -14,7 +14,7 @@ module Decidim
14
14
  belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
15
15
  belongs_to :conference, foreign_key: "decidim_conference_id", class_name: "Decidim::Conference"
16
16
  has_many :conference_speaker_conference_meetings, dependent: :destroy
17
- has_many :conference_meetings, through: :conference_speaker_conference_meetings, foreign_key: "conference_speaker_id", class_name: "Decidim::ConferenceMeeting"
17
+ has_many :conference_meetings, through: :conference_speaker_conference_meetings, class_name: "Decidim::ConferenceMeeting"
18
18
 
19
19
  default_scope { order(full_name: :asc, created_at: :asc) }
20
20
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  class ConferenceSpeakerConferenceMeeting < ApplicationRecord
5
- belongs_to :conference_speaker, foreign_key: "conference_speaker_id", class_name: "Decidim::ConferenceSpeaker"
6
- belongs_to :conference_meeting, foreign_key: "conference_meeting_id", class_name: "Decidim::ConferenceMeeting"
5
+ belongs_to :conference_speaker, class_name: "Decidim::ConferenceSpeaker"
6
+ belongs_to :conference_meeting, class_name: "Decidim::ConferenceMeeting"
7
7
  end
8
8
  end
@@ -3,8 +3,8 @@
3
3
  module Decidim
4
4
  module Conferences
5
5
  class ConferenceMeetingRegistrationType < ApplicationRecord
6
- belongs_to :conference_meeting, foreign_key: "conference_meeting_id", class_name: "Decidim::ConferenceMeeting"
7
- belongs_to :registration_type, foreign_key: "registration_type_id", class_name: "Decidim::Conferences::RegistrationType"
6
+ belongs_to :conference_meeting, class_name: "Decidim::ConferenceMeeting"
7
+ belongs_to :registration_type, class_name: "Decidim::Conferences::RegistrationType"
8
8
  end
9
9
  end
10
10
  end
@@ -13,7 +13,7 @@ module Decidim
13
13
 
14
14
  belongs_to :conference, foreign_key: "decidim_conference_id", class_name: "Decidim::Conference"
15
15
  has_many :conference_meeting_registration_types, dependent: :destroy
16
- has_many :conference_meetings, through: :conference_meeting_registration_types, foreign_key: "registration_type_id", class_name: "Decidim::ConferenceMeeting"
16
+ has_many :conference_meetings, through: :conference_meeting_registration_types, class_name: "Decidim::ConferenceMeeting"
17
17
  has_many :conference_registrations, foreign_key: "decidim_conference_registration_type_id", class_name: "Decidim::Conferences::ConferenceRegistration", dependent: :destroy
18
18
 
19
19
  default_scope { order(weight: :asc) }
@@ -80,7 +80,7 @@ module Decidim
80
80
  def can_decline_invitation?
81
81
  return unless conference.presence
82
82
  return unless conference.registrations_enabled? &&
83
- conference.conference_invites.where(user: user).exists? &&
83
+ conference.conference_invites.exists?(user: user) &&
84
84
  permission_action.action == :decline_invitation &&
85
85
  permission_action.subject == :conference
86
86
 
@@ -10,7 +10,7 @@ module Decidim
10
10
  # Public: Render a collection of primary stats.
11
11
  def highlighted
12
12
  highlighted_stats = component_stats(priority: StatsRegistry::HIGH_PRIORITY)
13
- highlighted_stats = highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
13
+ highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
14
14
  highlighted_stats = highlighted_stats.reject(&:empty?)
15
15
  highlighted_stats = highlighted_stats.reject { |_manifest, _name, data| data.zero? }
16
16
  grouped_highlighted_stats = highlighted_stats.group_by { |stats| stats.first.name }
@@ -24,7 +24,7 @@
24
24
  </div>
25
25
 
26
26
  <div class="row column">
27
- <%= form.upload :logo, optional: false %>
27
+ <%= form.upload :logo %>
28
28
  </div>
29
29
  </div>
30
30
  </div>
@@ -13,7 +13,7 @@
13
13
  <ul id="components-list">
14
14
  <% current_participatory_space.components.each do |component| %>
15
15
  <% if component.manifest.admin_engine && user_role_config.component_is_accessible?(component.manifest_name) %>
16
- <li <% if is_active_link?(manage_component_path(component)) || is_active_link?(decidim_admin_conferences.edit_component_path(current_participatory_space, component)) || is_active_link?(decidim_admin_conferences.edit_component_permissions_path(current_participatory_space, component)) %> class="is-active" <% end %>>
16
+ <li <% if is_active_link?(manage_component_path(component)) || is_active_link?(decidim_admin_conferences.edit_component_path(current_participatory_space, component)) || is_active_link?(decidim_admin_conferences.edit_component_permissions_path(current_participatory_space, component)) || participatory_space_active_link?(component) %> class="is-active" <% end %>>
17
17
  <%= link_to manage_component_path(component) do %>
18
18
  <%= translated_attribute component.name %>
19
19
  <% if component.primary_stat.present? %>
@@ -101,6 +101,7 @@
101
101
  <%= aria_selected_link_to t("moderations", scope: "decidim.admin.menu.conferences_submenu"), decidim_admin_conferences.moderations_path(current_participatory_space) %>
102
102
  </li>
103
103
  <% end %>
104
+ <%= Decidim::Admin.view_hooks.render(:admin_secondary_nav, deep_dup) %>
104
105
  </ul>
105
106
  </div>
106
107
  <% end %>
@@ -277,10 +277,6 @@ ar:
277
277
  conferences:
278
278
  conference_registration:
279
279
  confirm: "%{user_name} أكد تسجيل مؤتمر في مؤتمر %{resource_name}"
280
- partner:
281
- create: "%{user_name} أنشأ %{resource_name} إلى %{space_name} المؤتمر"
282
- delete: "%{user_name} أزال المشرف %{resource_name} من المؤتمر %{space_name}"
283
- update: "%{user_name} محدث %{resource_name} في المؤتمر %{space_name}"
284
280
  registration_type:
285
281
  create: "%{user_name} أنشأ نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
286
282
  publish: "%{user_name} نشر نوع التسجيل %{resource_name} في المؤتمر %{space_name}"
@@ -266,10 +266,6 @@ ca:
266
266
  conferences:
267
267
  conference_registration:
268
268
  confirm: "%{user_name} ha confirmat la seva inscripció a la jornada %{resource_name}"
269
- partner:
270
- create: "%{user_name} ha creat %{resource_name} a la jornada %{space_name}"
271
- delete: "%{user_name} ha eliminat l'administradora %{resource_name} de la jornada %{space_name}"
272
- update: "%{user_name} ha actualitzat %{resource_name} a la jornada %{space_name}"
273
269
  registration_type:
274
270
  create: "%{user_name} ha creat el tipus d'inscripció %{resource_name} a la jornada %{space_name}"
275
271
  publish: "%{user_name} ha publicat el tipus d'inscripció %{resource_name} a la jornada %{space_name}"
@@ -402,6 +398,7 @@ ca:
402
398
  personal_website: Lloc web personal
403
399
  show:
404
400
  more_info: més informació
401
+ speaking_at: Intervé a
405
402
  conference_speaker_cell:
406
403
  personal_url:
407
404
  personal_website: Lloc web personal
@@ -539,6 +536,12 @@ ca:
539
536
  email_outro: Has rebut aquesta notificació perquè estàs seguint la jornada "%{resource_title}". Podeu deixar-la de seguir-a des de l'enllaç anterior.
540
537
  email_subject: La jornada "%{resource_title}" s'apropa!
541
538
  notification_title: La jornada <a href="%{resource_path}">%{resource_title}</a> començarà en 2 dies.
539
+ help:
540
+ participatory_spaces:
541
+ conferences:
542
+ contextual: "<p>Una <strong>conferència</strong> és un conjunt de trobades organitzades en un programa, amb un grup de persones convidades com a ponents, i altres camps d'informació típics dels grans congressos o esdeveniments socials (inscripció, llista d'organitzacions que secunden o patrocinen l'esdeveniment, etc.).</p> <p>Exemples: Una conferència pot ser un esdeveniment rellevant per a una organització i els seus membres, o pot tenir lloc com a part d'un procés participatiu o després d'una consulta.</p>"
543
+ page: "<p>Una <strong>conferència</strong> és un conjunt de trobades organitzades en un programa, amb un grup de persones convidades com a ponents, i altres camps d'informació típics dels grans congressos o esdeveniments socials (inscripció, llista d'organitzacions que secunden o patrocinen l'esdeveniment, etc.).</p> <p>Exemples: Una conferència pot ser un esdeveniment rellevant per a una organització i els seus membres, o pot tenir lloc com a part d'un procés participatiu o després d'una consulta.</p>"
544
+ title: Què són les conferències?
542
545
  log:
543
546
  value_types:
544
547
  conference_presenter:
@@ -210,7 +210,7 @@ cs:
210
210
  fields:
211
211
  conference_meetings: Setkání konference
212
212
  price: Cena
213
- registrations_count: Počet registrací
213
+ registrations_count: Registrace se počítají
214
214
  title: Název
215
215
  weight: Váha
216
216
  name: Typ registrace
@@ -273,9 +273,9 @@ cs:
273
273
  conference_registration:
274
274
  confirm: "%{user_name} potvrdil registraci konference na konferenci %{resource_name}"
275
275
  partner:
276
- create: "%{user_name} vytvořil %{resource_name} na konferenci %{space_name}"
277
- delete: "%{user_name} odstranil uživatele %{resource_name} z konference %{space_name}"
278
- update: "%{user_name} aktualizoval %{resource_name} v konferenci %{space_name}"
276
+ create: "%{user_name} vytvořil partnera %{resource_name} na konferenci %{space_name}"
277
+ delete: "%{user_name} odstranil partnera %{resource_name} z konference %{space_name}"
278
+ update: "%{user_name} aktualizoval partnera %{resource_name} na konferenci %{space_name}"
279
279
  registration_type:
280
280
  create: "%{user_name} vytvořil typ registrace %{resource_name} na konferenci %{space_name}"
281
281
  publish: "%{user_name} publikoval %{resource_name} typ registrace na %{space_name} konferencích"
@@ -309,7 +309,7 @@ cs:
309
309
  index:
310
310
  filter:
311
311
  accepted: Přijato
312
- all: Vše
312
+ all: Všechno
313
313
  rejected: Odmítnuto
314
314
  sent: Odesláno
315
315
  filter_by: Filtrovat podle
@@ -410,6 +410,7 @@ cs:
410
410
  personal_website: Osobní web
411
411
  show:
412
412
  more_info: více informací
413
+ speaking_at: Má projev v
413
414
  conference_speaker_cell:
414
415
  personal_url:
415
416
  personal_website: Osobní web
@@ -547,6 +548,12 @@ cs:
547
548
  email_outro: Toto upozornění jste obdrželi, protože jste sledovali konferenci "%{resource_title}". Můžete jej odhlásit od předchozího odkazu.
548
549
  email_subject: Konference "%{resource_title}" přichází!
549
550
  notification_title: Konference <a href="%{resource_path}">%{resource_title}</a> přichází za 2 dny.
551
+ help:
552
+ participatory_spaces:
553
+ conferences:
554
+ contextual: "<p> <strong>Konference</strong> je několik schůzek uspořádaných v rámci programu s řadou lidí pozvaných jako řečníci, a další informační pole typická pro velké kongresy nebo společenské události (registrace, seznam organizací, které podporují nebo sponzorují událost atd.).</p> <p>Příklady: Konference může být relevantní pro organizaci a její členy, nebo se koná v rámci účastnického procesu, nebo následuje konzultace.</p>\n"
555
+ page: "<p> <strong>Konference</strong> je několik schůzek uspořádaných v rámci programu s řadou lidí pozvaných jako řečníci, a další informační pole typická pro velké kongresy nebo společenské události (registrace, seznam organizací, které podporují nebo sponzorují událost atd.).</p> <p>Příklady: Konference může být relevantní pro organizaci a její členy, nebo se koná v rámci účastnického procesu, nebo následuje konzultace.</p>\n"
556
+ title: Co jsou konference?
550
557
  log:
551
558
  value_types:
552
559
  conference_presenter: