decidim-conferences 0.18.1 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -0
- 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_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 +3 -13
- 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 +9 -5
- 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/concerns/decidim/conferences/admin/filterable.rb +27 -0
- data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +3 -1
- data/app/controllers/decidim/conferences/admin/conference_speakers_controller.rb +2 -1
- data/app/controllers/decidim/conferences/admin/conference_user_roles_controller.rb +2 -1
- data/app/controllers/decidim/conferences/admin/conferences_controller.rb +4 -4
- data/app/controllers/decidim/conferences/admin/media_links_controller.rb +2 -1
- data/app/controllers/decidim/conferences/admin/partners_controller.rb +2 -1
- data/app/controllers/decidim/conferences/admin/registration_types_controller.rb +2 -1
- 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 +29 -4
- data/app/models/decidim/conference_user_role.rb +2 -1
- data/app/permissions/decidim/conferences/permissions.rb +15 -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/conference_invites.rb +1 -0
- data/app/queries/decidim/conferences/admin/conference_speakers.rb +1 -0
- data/app/types/decidim/conferences/conference_media_link_type.rb +19 -0
- data/app/types/decidim/conferences/conference_partner_type.rb +20 -0
- data/app/types/decidim/conferences/conference_speaker_type.rb +24 -0
- data/app/types/decidim/conferences/conference_type.rb +45 -0
- data/app/views/decidim/conferences/admin/conference_speakers/index.html.erb +1 -0
- data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +4 -3
- data/app/views/decidim/conferences/admin/conferences/index.html.erb +9 -5
- data/app/views/decidim/conferences/admin/partners/index.html.erb +1 -0
- data/app/views/decidim/conferences/admin/registration_types/index.html.erb +1 -0
- data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +1 -1
- data/app/views/decidim/conferences/conference_registration_mailer/confirmation.html.erb +1 -1
- data/app/views/decidim/conferences/conference_registration_mailer/pending_validation.html.erb +1 -1
- data/app/views/decidim/conferences/conferences/_partners.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/admin/conference.html.erb +2 -2
- data/app/views/layouts/decidim/diploma.html.erb +2 -2
- data/config/locales/ar.yml +4 -2
- data/config/locales/ca.yml +1 -0
- data/config/locales/cs.yml +2 -1
- data/config/locales/el-GR.yml +1 -0
- data/config/locales/el.yml +1 -0
- data/config/locales/en.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/fi-plain.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/hu.yml +2 -1
- data/config/locales/is-IS.yml +1 -0
- data/config/locales/no.yml +566 -0
- data/lib/decidim/conferences/participatory_space.rb +5 -0
- data/lib/decidim/conferences/test/factories.rb +16 -0
- data/lib/decidim/conferences/version.rb +1 -1
- metadata +28 -20
- data/app/views/decidim/conferences/conference_widgets/show.html.erb +0 -11
@@ -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
|
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
|
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.
|
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
|
|
@@ -50,6 +50,7 @@ module Decidim
|
|
50
50
|
def conference_meetings
|
51
51
|
meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
|
52
52
|
return unless meeting_components || conference_meeting_ids.delete("").present?
|
53
|
+
|
53
54
|
@conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
|
54
55
|
end
|
55
56
|
|
@@ -36,6 +36,7 @@ module Decidim
|
|
36
36
|
def conference_meetings
|
37
37
|
meeting_components = current_participatory_space.components.where(manifest_name: "meetings")
|
38
38
|
return unless meeting_components || conference_meeting_ids.delete("").present?
|
39
|
+
|
39
40
|
@conference_meetings ||= Decidim::ConferenceMeeting.where(component: meeting_components).where(id: conference_meeting_ids)
|
40
41
|
end
|
41
42
|
end
|
@@ -8,6 +8,7 @@ module Decidim
|
|
8
8
|
#
|
9
9
|
def render_date(conference)
|
10
10
|
return l(conference.start_date, format: :decidim_with_month_name_short) if conference.start_date == conference.end_date
|
11
|
+
|
11
12
|
"#{l(conference.start_date, format: :decidim_with_month_name_short)} - #{l(conference.end_date, format: :decidim_with_month_name_short)}"
|
12
13
|
end
|
13
14
|
end
|
@@ -16,14 +16,12 @@ module Decidim
|
|
16
16
|
include Decidim::Traceable
|
17
17
|
include Decidim::Loggable
|
18
18
|
include Decidim::ParticipatorySpaceResourceable
|
19
|
+
include Decidim::Searchable
|
19
20
|
|
20
21
|
belongs_to :organization,
|
21
22
|
foreign_key: "decidim_organization_id",
|
22
23
|
class_name: "Decidim::Organization"
|
23
|
-
|
24
|
-
foreign_key: "decidim_area_id",
|
25
|
-
class_name: "Decidim::Area",
|
26
|
-
optional: true
|
24
|
+
|
27
25
|
has_many :categories,
|
28
26
|
foreign_key: "decidim_participatory_space_id",
|
29
27
|
foreign_type: "decidim_participatory_space_type",
|
@@ -58,6 +56,18 @@ module Decidim
|
|
58
56
|
mount_uploader :main_logo, Decidim::Conferences::DiplomaUploader
|
59
57
|
mount_uploader :signature, Decidim::Conferences::DiplomaUploader
|
60
58
|
|
59
|
+
searchable_fields({
|
60
|
+
scope_id: :decidim_scope_id,
|
61
|
+
participatory_space: :itself,
|
62
|
+
A: :title,
|
63
|
+
B: :slogan,
|
64
|
+
C: :short_description,
|
65
|
+
D: [:description, :objectives],
|
66
|
+
datetime: :published_at
|
67
|
+
},
|
68
|
+
index_on_create: ->(_conference) { false },
|
69
|
+
index_on_update: ->(conference) { conference.visible? })
|
70
|
+
|
61
71
|
# Scope to return only the promoted conferences.
|
62
72
|
#
|
63
73
|
# Returns an ActiveRecord::Relation.
|
@@ -87,6 +97,7 @@ module Decidim
|
|
87
97
|
|
88
98
|
def has_available_slots?
|
89
99
|
return true if available_slots.zero?
|
100
|
+
|
90
101
|
available_slots > conference_registrations.count
|
91
102
|
end
|
92
103
|
|
@@ -96,12 +107,26 @@ module Decidim
|
|
96
107
|
|
97
108
|
def diploma_sent?
|
98
109
|
return false if diploma_sent_at.nil?
|
110
|
+
|
99
111
|
true
|
100
112
|
end
|
101
113
|
|
102
114
|
def closed?
|
103
115
|
return false if end_date.blank?
|
116
|
+
|
104
117
|
end_date < Date.current
|
105
118
|
end
|
119
|
+
|
120
|
+
def user_roles(role_name = nil)
|
121
|
+
roles = Decidim::ConferenceUserRole.where(conference: self)
|
122
|
+
return roles if role_name.blank?
|
123
|
+
|
124
|
+
roles.where(role: role_name)
|
125
|
+
end
|
126
|
+
|
127
|
+
# Allow ransacker to search for a key in a hstore column (`title`.`en`)
|
128
|
+
ransacker :title do |parent|
|
129
|
+
Arel::Nodes::InfixOperation.new("->>", parent.table[:title], Arel::Nodes.build_quoted(I18n.locale.to_s))
|
130
|
+
end
|
106
131
|
end
|
107
132
|
end
|
@@ -11,7 +11,7 @@ module Decidim
|
|
11
11
|
belongs_to :conference, foreign_key: "decidim_conference_id", class_name: "Decidim::Conference", optional: true
|
12
12
|
alias participatory_space conference
|
13
13
|
|
14
|
-
ROLES = %w(admin collaborator moderator).freeze
|
14
|
+
ROLES = %w(admin collaborator moderator valuator).freeze
|
15
15
|
validates :role, inclusion: { in: ROLES }, uniqueness: { scope: [:user, :conference] }
|
16
16
|
validate :user_and_conference_same_organization
|
17
17
|
|
@@ -24,6 +24,7 @@ module Decidim
|
|
24
24
|
# Private: check if the process and the user have the same organization
|
25
25
|
def user_and_conference_same_organization
|
26
26
|
return if !conference || !user
|
27
|
+
|
27
28
|
errors.add(:conference, :invalid) unless user.organization == conference.organization
|
28
29
|
end
|
29
30
|
end
|
@@ -30,6 +30,7 @@ module Decidim
|
|
30
30
|
end
|
31
31
|
|
32
32
|
return permission_action unless user
|
33
|
+
|
33
34
|
if !has_manageable_conferences? && !user.admin?
|
34
35
|
disallow!
|
35
36
|
return permission_action
|
@@ -50,6 +51,7 @@ module Decidim
|
|
50
51
|
|
51
52
|
moderator_action?
|
52
53
|
collaborator_action?
|
54
|
+
valuator_action?
|
53
55
|
conference_admin_action?
|
54
56
|
|
55
57
|
permission_action
|
@@ -94,12 +96,14 @@ module Decidim
|
|
94
96
|
# Checks if it has any manageable conference, with any possible role.
|
95
97
|
def has_manageable_conferences?(role: :any)
|
96
98
|
return unless user
|
99
|
+
|
97
100
|
conferences_with_role_privileges(role).any?
|
98
101
|
end
|
99
102
|
|
100
103
|
# Whether the user can manage the given conference or not.
|
101
104
|
def can_manage_conference?(role: :any)
|
102
105
|
return unless user
|
106
|
+
|
103
107
|
conferences_with_role_privileges(role).include? conference
|
104
108
|
end
|
105
109
|
|
@@ -123,6 +127,7 @@ module Decidim
|
|
123
127
|
|
124
128
|
return allow! if user&.admin?
|
125
129
|
return allow! if conference.published?
|
130
|
+
|
126
131
|
toggle_allow(can_manage_conference?)
|
127
132
|
end
|
128
133
|
|
@@ -222,12 +227,14 @@ module Decidim
|
|
222
227
|
# Everyone can read the conference list
|
223
228
|
def user_can_read_conference_list?
|
224
229
|
return unless read_conference_list_permission_action?
|
230
|
+
|
225
231
|
toggle_allow(user.admin? || has_manageable_conferences?)
|
226
232
|
end
|
227
233
|
|
228
234
|
def user_can_read_current_conference?
|
229
235
|
return unless read_conference_list_permission_action?
|
230
236
|
return if permission_action.subject == :conference_list
|
237
|
+
|
231
238
|
toggle_allow(user.admin? || can_manage_conference?)
|
232
239
|
end
|
233
240
|
|
@@ -246,6 +253,14 @@ module Decidim
|
|
246
253
|
allow! if permission_action.action == :read || permission_action.action == :preview
|
247
254
|
end
|
248
255
|
|
256
|
+
# Valuators can only read components
|
257
|
+
def valuator_action?
|
258
|
+
return unless can_manage_conference?(role: :valuator)
|
259
|
+
|
260
|
+
allow! if permission_action.action == :read && permission_action.subject == :component
|
261
|
+
allow! if permission_action.action == :export && permission_action.subject == :component_data
|
262
|
+
end
|
263
|
+
|
249
264
|
# Process admins can eprform everything *inside* that conference. They cannot
|
250
265
|
# create a conference or perform actions on conference groups or other
|
251
266
|
# conferences.
|
@@ -36,6 +36,7 @@ module Decidim
|
|
36
36
|
|
37
37
|
def filter_by_search(conference_invites)
|
38
38
|
return conference_invites if @query.blank?
|
39
|
+
|
39
40
|
conference_invites.joins(:user).where(
|
40
41
|
User.arel_table[:name].lower.matches("%#{@query}%").or(User.arel_table[:email].lower.matches("%#{@query}%"))
|
41
42
|
)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
# This type represents a conference.
|
6
|
+
ConferenceMediaLinkType = GraphQL::ObjectType.define do
|
7
|
+
name "ConferenceMediaLink"
|
8
|
+
description "A conference media link"
|
9
|
+
|
10
|
+
field :id, !types.ID, "Internal ID for this media link"
|
11
|
+
field :title, Decidim::Core::TranslatedFieldType, "Title for this media link"
|
12
|
+
field :link, types.String, "URL for this media link"
|
13
|
+
field :date, Decidim::Core::DateType, "Relevant date for the media link"
|
14
|
+
field :weight, types.Int, "Order of appearance in which it should be presented"
|
15
|
+
field :createdAt, Decidim::Core::DateTimeType, "The time this entry was created", property: :created_at
|
16
|
+
field :updatedAt, Decidim::Core::DateTimeType, "The time this entry was updated", property: :updated_at
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
# This type represents a conference.
|
6
|
+
ConferencePartnerType = GraphQL::ObjectType.define do
|
7
|
+
name "ConferencePartner"
|
8
|
+
description "A conference partner"
|
9
|
+
|
10
|
+
field :id, !types.ID, "ID of the resource"
|
11
|
+
field :name, types.String, "Partner name"
|
12
|
+
field :partnerType, types.String, "Partner type", property: :partner_type
|
13
|
+
field :weight, types.Int, "Order of appearance in which it should be presented"
|
14
|
+
field :link, types.String, "Relevant URL for this partner"
|
15
|
+
field :logo, types.String, "Link to the partner's logo"
|
16
|
+
field :createdAt, Decidim::Core::DateTimeType, "The time this partner was created", property: :created_at
|
17
|
+
field :updatedAt, Decidim::Core::DateTimeType, "The time this partner was updated", property: :updated_at
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
# This type represents a conference.
|
6
|
+
ConferenceSpeakerType = GraphQL::ObjectType.define do
|
7
|
+
name "ConferenceSpeaker"
|
8
|
+
description "A conference speaker"
|
9
|
+
|
10
|
+
field :id, !types.ID, "Internal ID of the speaker"
|
11
|
+
field :fullName, types.String, "Full name of the speaker", property: :full_name
|
12
|
+
field :position, Decidim::Core::TranslatedFieldType, "Position of the speaker in the conference"
|
13
|
+
field :affiliation, Decidim::Core::TranslatedFieldType, "Affiliation of the speaker"
|
14
|
+
field :twitterHandle, types.String, "Twitter handle", property: :twitter_handle
|
15
|
+
field :shortBio, Decidim::Core::TranslatedFieldType, "Short biography of the speaker", property: :short_bio
|
16
|
+
field :personalUrl, types.String, "Personal URL of the speaker", property: :personal_url
|
17
|
+
field :avatar, types.String, "Avatar of the speaker"
|
18
|
+
field :user, Decidim::Core::UserType, "Decidim user corresponding to this speaker", property: :user
|
19
|
+
|
20
|
+
field :createdAt, Decidim::Core::DateTimeType, "The time this member was created ", property: :created_at
|
21
|
+
field :updatedAt, Decidim::Core::DateTimeType, "The time this member was updated", property: :updated_at
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
# This type represents a conference.
|
6
|
+
ConferenceType = GraphQL::ObjectType.define do
|
7
|
+
interfaces [
|
8
|
+
-> { Decidim::Core::ParticipatorySpaceInterface },
|
9
|
+
-> { Decidim::Core::ScopableInterface },
|
10
|
+
-> { Decidim::Core::AttachableInterface }
|
11
|
+
]
|
12
|
+
|
13
|
+
name "Conference"
|
14
|
+
description "A conference"
|
15
|
+
|
16
|
+
field :id, !types.ID, "Internal ID for this conference"
|
17
|
+
field :shortDescription, Decidim::Core::TranslatedFieldType, "The short description of this conference", property: :short_description
|
18
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description of this conference"
|
19
|
+
field :slug, types.String, "The slug of this conference"
|
20
|
+
field :hashtag, types.String, "The hashtag for this conference"
|
21
|
+
field :slogan, Decidim::Core::TranslatedFieldType, "The slogan of the conference"
|
22
|
+
field :location, types.String, "The location of this conference"
|
23
|
+
field :createdAt, Decidim::Core::DateTimeType, "The time this conference was created", property: :created_at
|
24
|
+
field :updatedAt, Decidim::Core::DateTimeType, "The time this conference was updated", property: :updated_at
|
25
|
+
field :publishedAt, Decidim::Core::DateTimeType, "The time this conference was published", property: :published_at
|
26
|
+
field :reference, types.String, "Reference prefix for this conference"
|
27
|
+
|
28
|
+
field :heroImage, types.String, "The hero image for this conference", property: :hero_image
|
29
|
+
field :bannerImage, types.String, "The banner image for this conference", property: :banner_image
|
30
|
+
field :promoted, types.Boolean, "If this conference is promoted (therefore in the homepage)"
|
31
|
+
field :objectives, Decidim::Core::TranslatedFieldType, "The objectives of the conference"
|
32
|
+
field :showStatistics, types.Boolean, "If this conference shows the statistics", property: :show_statistics
|
33
|
+
field :startDate, Decidim::Core::DateType, "The date this conference starts", property: :start_date
|
34
|
+
field :endDate, Decidim::Core::DateType, "The date this conference ends", property: :end_date
|
35
|
+
field :registrationsEnabled, types.Boolean, "If the registrations are enabled in this conference", property: :registrations_enabled
|
36
|
+
field :availableSlots, types.Int, "The number of available slots in this conference", property: :available_slots
|
37
|
+
field :registrationTerms, Decidim::Core::TranslatedFieldType, "The registration terms of this conference", property: :registration_terms
|
38
|
+
|
39
|
+
field :speakers, types[Decidim::Conferences::ConferenceSpeakerType], "List of speakers in this conference"
|
40
|
+
field :partners, types[Decidim::Conferences::ConferencePartnerType], "List of partners in this conference"
|
41
|
+
field :categories, types[Decidim::Core::CategoryType], "List of categories in this conference"
|
42
|
+
field :mediaLinks, types[Decidim::Conferences::ConferenceMediaLinkType], "List of media links in this conference", property: :media_links
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|