decidim-conferences 0.18.1 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|