decidim-conferences 0.27.4 → 0.28.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/conferences/conference_cell.rb +9 -4
  3. data/app/cells/decidim/conferences/conference_dropdown_metadata_cell.rb +19 -0
  4. data/app/cells/decidim/conferences/conference_g_cell.rb +23 -0
  5. data/app/cells/decidim/conferences/conference_metadata_cell.rb +21 -0
  6. data/app/cells/decidim/conferences/conference_s_cell.rb +13 -0
  7. data/app/cells/decidim/conferences/conference_speaker/show.erb +44 -58
  8. data/app/cells/decidim/conferences/conference_speaker_cell.rb +3 -13
  9. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences_cell.rb +15 -14
  10. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences_settings_form/show.erb +3 -0
  11. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences_settings_form_cell.rb +19 -0
  12. data/app/cells/decidim/conferences/linked_participatory_spaces/show.erb +6 -8
  13. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +1 -10
  14. data/app/cells/decidim/conferences/media_link/show.erb +6 -8
  15. data/app/cells/decidim/conferences/partner/image.erb +3 -0
  16. data/app/cells/decidim/conferences/partner/show.erb +8 -8
  17. data/app/cells/decidim/conferences/partner/text.erb +1 -0
  18. data/app/cells/decidim/conferences/partner_cell.rb +4 -2
  19. data/app/cells/decidim/conferences/registration_type/join_conference.erb +15 -12
  20. data/app/cells/decidim/conferences/registration_type/registration_confirm.erb +12 -12
  21. data/app/cells/decidim/conferences/registration_type/show.erb +11 -14
  22. data/app/cells/decidim/conferences/registration_type_cell.rb +3 -3
  23. data/app/commands/decidim/conferences/admin/copy_conference.rb +1 -1
  24. data/app/commands/decidim/conferences/admin/create_conference.rb +2 -11
  25. data/app/commands/decidim/conferences/admin/create_conference_speaker.rb +2 -2
  26. data/app/commands/decidim/conferences/admin/create_media_link.rb +2 -2
  27. data/app/commands/decidim/conferences/admin/create_partner.rb +2 -2
  28. data/app/commands/decidim/conferences/admin/create_registration_type.rb +2 -2
  29. data/app/commands/decidim/conferences/admin/destroy_conference_speaker.rb +2 -2
  30. data/app/commands/decidim/conferences/admin/destroy_media_link.rb +1 -1
  31. data/app/commands/decidim/conferences/admin/destroy_partner.rb +3 -3
  32. data/app/commands/decidim/conferences/admin/destroy_registration_type.rb +1 -1
  33. data/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb +5 -5
  34. data/app/commands/decidim/conferences/admin/publish_conference.rb +9 -26
  35. data/app/commands/decidim/conferences/admin/send_conference_diplomas.rb +1 -1
  36. data/app/commands/decidim/conferences/admin/update_conference.rb +2 -11
  37. data/app/commands/decidim/conferences/admin/update_conference_speaker.rb +1 -1
  38. data/app/commands/decidim/conferences/admin/update_media_link.rb +1 -1
  39. data/app/commands/decidim/conferences/admin/update_partner.rb +1 -1
  40. data/app/commands/decidim/conferences/admin/update_registration_type.rb +1 -1
  41. data/app/commands/decidim/conferences/decline_invitation.rb +1 -1
  42. data/app/commands/decidim/conferences/join_conference.rb +5 -5
  43. data/app/constraints/decidim/conferences/current_component.rb +2 -2
  44. data/app/constraints/decidim/conferences/current_conference.rb +2 -2
  45. data/app/controllers/concerns/decidim/conferences/admin/conference_context.rb +1 -1
  46. data/app/controllers/decidim/conferences/admin/concerns/conference_admin.rb +2 -2
  47. data/app/controllers/decidim/conferences/admin/conference_attachment_collections_controller.rb +6 -1
  48. data/app/controllers/decidim/conferences/admin/conference_attachments_controller.rb +5 -0
  49. data/app/controllers/decidim/conferences/admin/conference_invites_controller.rb +2 -1
  50. data/app/controllers/decidim/conferences/admin/conference_publications_controller.rb +10 -28
  51. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +1 -1
  52. data/app/controllers/decidim/conferences/admin/conference_user_roles_controller.rb +8 -90
  53. data/app/controllers/decidim/conferences/admin/conferences_controller.rb +2 -0
  54. data/app/controllers/decidim/conferences/admin/diplomas_controller.rb +1 -1
  55. data/app/controllers/decidim/conferences/admin/exports_controller.rb +1 -1
  56. data/app/controllers/decidim/conferences/admin/imports_controller.rb +1 -1
  57. data/app/controllers/decidim/conferences/admin/moderations/reports_controller.rb +1 -1
  58. data/app/controllers/decidim/conferences/admin/moderations_controller.rb +1 -1
  59. data/app/controllers/decidim/conferences/application_controller.rb +6 -0
  60. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +3 -3
  61. data/app/controllers/decidim/conferences/conferences_controller.rb +10 -3
  62. data/app/events/decidim/conferences/conference_registration_notification_event.rb +3 -3
  63. data/app/events/decidim/conferences/conference_registrations_enabled_event.rb +1 -1
  64. data/app/events/decidim/conferences/conference_registrations_over_percentage_event.rb +1 -1
  65. data/app/events/decidim/conferences/conference_role_assigned_event.rb +6 -6
  66. data/app/forms/decidim/conferences/admin/conference_copy_form.rb +1 -1
  67. data/app/forms/decidim/conferences/admin/conference_form.rb +4 -15
  68. data/app/forms/decidim/conferences/admin/conference_user_role_form.rb +2 -17
  69. data/app/helpers/decidim/conferences/admin/conferences_helper.rb +0 -4
  70. data/app/helpers/decidim/conferences/conference_helper.rb +55 -0
  71. data/app/helpers/decidim/conferences/conference_program_helper.rb +1 -1
  72. data/app/helpers/decidim/conferences/media_attachments_helper.rb +0 -10
  73. data/app/helpers/decidim/conferences/partners_helper.rb +3 -1
  74. data/app/mailers/decidim/conferences/admin/invite_join_conference_mailer.rb +1 -1
  75. data/app/mailers/decidim/conferences/admin/send_conference_diploma_mailer.rb +1 -1
  76. data/app/mailers/decidim/conferences/conference_registration_mailer.rb +2 -2
  77. data/app/models/decidim/conference.rb +4 -4
  78. data/app/models/decidim/conference_user_role.rb +6 -34
  79. data/app/packs/entrypoints/decidim_conferences.js +5 -0
  80. data/app/packs/src/decidim/conferences/admin/conferences.js +6 -6
  81. data/app/packs/stylesheets/decidim/conferences/_conference.scss +102 -0
  82. data/app/packs/stylesheets/decidim/conferences/_media.scss +13 -0
  83. data/app/packs/stylesheets/decidim/conferences/_program.scss +43 -0
  84. data/app/packs/stylesheets/decidim/conferences/_registration.scss +39 -0
  85. data/app/packs/stylesheets/decidim/conferences/_speaker.scss +83 -0
  86. data/app/packs/stylesheets/decidim/conferences/conferences.scss +5 -3
  87. data/app/permissions/decidim/conferences/permissions.rb +2 -2
  88. data/app/presenters/decidim/conference_speaker_presenter.rb +1 -1
  89. data/app/presenters/decidim/conferences/admin_log/conference_invite_presenter.rb +2 -2
  90. data/app/presenters/decidim/conferences/admin_log/conference_presenter.rb +2 -2
  91. data/app/presenters/decidim/conferences/admin_log/conference_registration_presenter.rb +2 -2
  92. data/app/presenters/decidim/conferences/admin_log/conference_speaker_presenter.rb +2 -2
  93. data/app/presenters/decidim/conferences/admin_log/conference_user_role_presenter.rb +2 -2
  94. data/app/presenters/decidim/conferences/admin_log/media_link_presenter.rb +2 -2
  95. data/app/presenters/decidim/conferences/admin_log/partner_presenter.rb +2 -2
  96. data/app/presenters/decidim/conferences/admin_log/registration_type_presenter.rb +2 -2
  97. data/app/presenters/decidim/conferences/conference_stats_presenter.rb +3 -28
  98. data/app/queries/decidim/conferences/admin/admin_users.rb +4 -4
  99. data/app/queries/decidim/conferences/conferences_with_user_role.rb +2 -2
  100. data/app/queries/decidim/conferences/organization_conferences.rb +1 -1
  101. data/app/queries/decidim/conferences/organization_published_conferences.rb +1 -1
  102. data/app/views/decidim/conferences/admin/conference_copies/_form.html.erb +22 -28
  103. data/app/views/decidim/conferences/admin/conference_copies/new.html.erb +16 -5
  104. data/app/views/decidim/conferences/admin/conference_invites/_form.html.erb +17 -19
  105. data/app/views/decidim/conferences/admin/conference_invites/index.html.erb +69 -74
  106. data/app/views/decidim/conferences/admin/conference_invites/new.html.erb +21 -17
  107. data/app/views/decidim/conferences/admin/conference_registrations/index.html.erb +45 -45
  108. data/app/views/decidim/conferences/admin/conference_speakers/_form.html.erb +42 -46
  109. data/app/views/decidim/conferences/admin/conference_speakers/edit.html.erb +16 -6
  110. data/app/views/decidim/conferences/admin/conference_speakers/index.html.erb +52 -55
  111. data/app/views/decidim/conferences/admin/conference_speakers/new.html.erb +16 -6
  112. data/app/views/decidim/conferences/admin/conference_user_roles/_form.html.erb +14 -18
  113. data/app/views/decidim/conferences/admin/conference_user_roles/edit.html.erb +16 -6
  114. data/app/views/decidim/conferences/admin/conference_user_roles/index.html.erb +53 -56
  115. data/app/views/decidim/conferences/admin/conference_user_roles/new.html.erb +16 -6
  116. data/app/views/decidim/conferences/admin/conferences/_form.html.erb +88 -88
  117. data/app/views/decidim/conferences/admin/conferences/edit.html.erb +26 -12
  118. data/app/views/decidim/conferences/admin/conferences/index.html.erb +55 -64
  119. data/app/views/decidim/conferences/admin/conferences/new.html.erb +16 -8
  120. data/app/views/decidim/conferences/admin/diplomas/_form.html.erb +18 -24
  121. data/app/views/decidim/conferences/admin/diplomas/edit.html.erb +19 -5
  122. data/app/views/decidim/conferences/admin/media_links/_form.html.erb +15 -19
  123. data/app/views/decidim/conferences/admin/media_links/edit.html.erb +16 -6
  124. data/app/views/decidim/conferences/admin/media_links/index.html.erb +37 -40
  125. data/app/views/decidim/conferences/admin/media_links/new.html.erb +16 -6
  126. data/app/views/decidim/conferences/admin/partners/_form.html.erb +18 -22
  127. data/app/views/decidim/conferences/admin/partners/edit.html.erb +16 -6
  128. data/app/views/decidim/conferences/admin/partners/index.html.erb +45 -48
  129. data/app/views/decidim/conferences/admin/partners/new.html.erb +16 -6
  130. data/app/views/decidim/conferences/admin/registration_types/_form.html.erb +23 -23
  131. data/app/views/decidim/conferences/admin/registration_types/edit.html.erb +16 -6
  132. data/app/views/decidim/conferences/admin/registration_types/index.html.erb +52 -56
  133. data/app/views/decidim/conferences/admin/registration_types/new.html.erb +16 -6
  134. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +2 -2
  135. data/app/views/decidim/conferences/conference_program/_program_item.html.erb +21 -24
  136. data/app/views/decidim/conferences/conference_program/_program_meeting.html.erb +29 -63
  137. data/app/views/decidim/conferences/conference_program/show.html.erb +27 -39
  138. data/app/views/decidim/conferences/conference_speakers/index.html.erb +12 -6
  139. data/app/views/decidim/conferences/conferences/_conference_hero.html.erb +33 -0
  140. data/app/views/decidim/conferences/conferences/_partners.html.erb +10 -13
  141. data/app/views/decidim/conferences/conferences/index.html.erb +17 -7
  142. data/app/views/decidim/conferences/conferences/show.html.erb +84 -50
  143. data/app/views/decidim/conferences/media/index.html.erb +33 -19
  144. data/app/views/decidim/conferences/registration_types/index.html.erb +25 -17
  145. data/app/views/layouts/decidim/admin/conference.html.erb +12 -14
  146. data/app/views/layouts/decidim/admin/conferences.html.erb +13 -8
  147. data/app/views/layouts/decidim/conference.html.erb +7 -17
  148. data/app/views/layouts/decidim/conferences/_conference_nav_item.html.erb +6 -0
  149. data/app/views/layouts/decidim/conferences/application.html.erb +6 -0
  150. data/config/assets.rb +1 -1
  151. data/config/environment.rb +3 -0
  152. data/config/initializers/wicked_pdf.rb +1 -1
  153. data/config/locales/ar.yml +1 -68
  154. data/config/locales/bg.yml +0 -1
  155. data/config/locales/ca.yml +35 -55
  156. data/config/locales/cs.yml +40 -58
  157. data/config/locales/de.yml +37 -57
  158. data/config/locales/el.yml +11 -57
  159. data/config/locales/en.yml +36 -56
  160. data/config/locales/es-MX.yml +34 -54
  161. data/config/locales/es-PY.yml +34 -54
  162. data/config/locales/es.yml +33 -53
  163. data/config/locales/eu.yml +179 -198
  164. data/config/locales/fi-plain.yml +33 -53
  165. data/config/locales/fi.yml +39 -59
  166. data/config/locales/fr-CA.yml +33 -53
  167. data/config/locales/fr.yml +34 -54
  168. data/config/locales/ga-IE.yml +0 -17
  169. data/config/locales/gl.yml +1 -68
  170. data/config/locales/hu.yml +15 -57
  171. data/config/locales/id-ID.yml +1 -62
  172. data/config/locales/it.yml +2 -68
  173. data/config/locales/ja.yml +34 -55
  174. data/config/locales/lb.yml +1 -59
  175. data/config/locales/lt.yml +21 -54
  176. data/config/locales/lv.yml +1 -65
  177. data/config/locales/nl.yml +1 -68
  178. data/config/locales/no.yml +1 -68
  179. data/config/locales/pl.yml +1 -66
  180. data/config/locales/pt-BR.yml +1 -68
  181. data/config/locales/pt.yml +1 -68
  182. data/config/locales/ro-RO.yml +11 -56
  183. data/config/locales/sk.yml +1 -65
  184. data/config/locales/sl.yml +0 -3
  185. data/config/locales/sq-AL.yml +1 -0
  186. data/config/locales/sr-CS.yml +0 -5
  187. data/config/locales/sv.yml +7 -67
  188. data/config/locales/th-TH.yml +1 -0
  189. data/config/locales/tr-TR.yml +12 -66
  190. data/config/locales/zh-CN.yml +1 -65
  191. data/config/locales/zh-TW.yml +6 -53
  192. data/db/migrate/20221116084952_add_weight_to_conferences.rb +7 -0
  193. data/lib/decidim/api/conference_speaker_type.rb +1 -1
  194. data/lib/decidim/conferences/admin_engine.rb +14 -138
  195. data/lib/decidim/conferences/content_blocks/registry_manager.rb +21 -0
  196. data/lib/decidim/conferences/engine.rb +17 -15
  197. data/lib/decidim/conferences/menu.rb +182 -0
  198. data/lib/decidim/conferences/participatory_space.rb +6 -200
  199. data/lib/decidim/conferences/query_extensions.rb +2 -2
  200. data/lib/decidim/conferences/seeds.rb +153 -0
  201. data/lib/decidim/conferences/test/factories.rb +10 -9
  202. data/lib/decidim/conferences/version.rb +1 -1
  203. metadata +46 -46
  204. data/app/cells/decidim/conferences/conference_address/show.erb +0 -11
  205. data/app/cells/decidim/conferences/conference_address_cell.rb +0 -11
  206. data/app/cells/decidim/conferences/conference_m/footer.erb +0 -9
  207. data/app/cells/decidim/conferences/conference_m/tags.erb +0 -1
  208. data/app/cells/decidim/conferences/conference_m_cell.rb +0 -42
  209. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences/show.erb +0 -30
  210. data/app/cells/decidim/conferences/photo/show.erb +0 -26
  211. data/app/cells/decidim/conferences/photo_cell.rb +0 -41
  212. data/app/cells/decidim/conferences/photos_list/show.erb +0 -8
  213. data/app/cells/decidim/conferences/photos_list_cell.rb +0 -18
  214. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +0 -114
  215. data/app/commands/decidim/conferences/admin/destroy_conference_admin.rb +0 -58
  216. data/app/commands/decidim/conferences/admin/notify_role_assigned_to_conference.rb +0 -22
  217. data/app/commands/decidim/conferences/admin/unpublish_conference.rb +0 -39
  218. data/app/commands/decidim/conferences/admin/update_conference_admin.rb +0 -53
  219. data/app/controllers/decidim/conferences/conference_widgets_controller.rb +0 -23
  220. data/app/queries/decidim/conferences/admin/conference_invites.rb +0 -60
  221. data/app/views/decidim/conferences/_order_by_conferences.html.erb +0 -3
  222. data/app/views/decidim/conferences/conferences/_promoted_conference.html.erb +0 -27
  223. data/app/views/decidim/conferences/media/_attachments.html.erb +0 -6
  224. data/app/views/decidim/conferences/shared/_conference_user_login.html.erb +0 -14
  225. data/app/views/layouts/decidim/_conference_hero.html.erb +0 -42
  226. data/app/views/layouts/decidim/_conferences_nav.html.erb +0 -46
  227. data/db/seeds/Exampledocument.pdf +0 -0
  228. data/db/seeds/city.jpeg +0 -0
  229. data/db/seeds/city2.jpeg +0 -0
  230. data/db/seeds/homepage_image.jpg +0 -0
  231. data/db/seeds/logo.png +0 -0
@@ -5,104 +5,22 @@ module Decidim
5
5
  module Admin
6
6
  # Controller that allows managing conference user roles.
7
7
  #
8
- class ConferenceUserRolesController < Decidim::Conferences::Admin::ApplicationController
8
+ class ConferenceUserRolesController < Decidim::Admin::ParticipatorySpace::UserRoleController
9
9
  include Concerns::ConferenceAdmin
10
- include Decidim::Admin::Officializations::Filterable
11
10
 
12
- def index
13
- enforce_permission_to :index, :conference_user_role
14
- @conference_user_roles = filtered_collection
15
- end
11
+ def authorization_scope = :conference_user_role
16
12
 
17
- def new
18
- enforce_permission_to :create, :conference_user_role
19
- @form = form(ConferenceUserRoleForm).instance
20
- end
13
+ def resource_form = form(ConferenceUserRoleForm)
21
14
 
22
- def create
23
- enforce_permission_to :create, :conference_user_role
24
- @form = form(ConferenceUserRoleForm).from_params(params)
15
+ def space_index_path = conference_user_roles_path(current_participatory_space)
25
16
 
26
- CreateConferenceAdmin.call(@form, current_user, current_conference) do
27
- on(:ok) do
28
- flash[:notice] = I18n.t("conference_user_roles.create.success", scope: "decidim.admin")
29
- end
17
+ def i18n_scope = "decidim.admin.conference_user_roles"
30
18
 
31
- on(:invalid) do
32
- flash[:alert] = I18n.t("conference_user_roles.create.error", scope: "decidim.admin")
33
- end
34
- redirect_to conference_user_roles_path(current_conference)
35
- end
36
- end
19
+ def role_class = Decidim::ConferenceUserRole
37
20
 
38
- def edit
39
- @user_role = collection.find(params[:id])
40
- enforce_permission_to :update, :conference_user_role, user_role: @user_role
41
- @form = form(ConferenceUserRoleForm).from_model(@user_role.user)
42
- end
21
+ def event = "decidim.events.conferences.role_assigned"
43
22
 
44
- def update
45
- @user_role = collection.find(params[:id])
46
- enforce_permission_to :update, :conference_user_role, user_role: @user_role
47
- @form = form(ConferenceUserRoleForm).from_params(params)
48
-
49
- UpdateConferenceAdmin.call(@form, @user_role) do
50
- on(:ok) do
51
- flash[:notice] = I18n.t("conference_user_roles.update.success", scope: "decidim.admin")
52
- redirect_to conference_user_roles_path(current_conference)
53
- end
54
-
55
- on(:invalid) do
56
- flash.now[:alert] = I18n.t("conference_user_roles.update.error", scope: "decidim.admin")
57
- render :edit
58
- end
59
- end
60
- end
61
-
62
- def destroy
63
- @conference_user_role = collection.find(params[:id])
64
- enforce_permission_to :destroy, :conference_user_role, user_role: @conference_user_role
65
-
66
- DestroyConferenceAdmin.call(@conference_user_role, current_user) do
67
- on(:ok) do
68
- flash[:notice] = I18n.t("conference_user_roles.destroy.success", scope: "decidim.admin")
69
- redirect_to conference_user_roles_path(current_conference)
70
- end
71
- end
72
- end
73
-
74
- def resend_invitation
75
- @user_role = collection.find(params[:id])
76
- enforce_permission_to :invite, :conference_user_role, user_role: @user_role
77
-
78
- InviteUserAgain.call(@user_role.user, "invite_admin") do
79
- on(:ok) do
80
- flash[:notice] = I18n.t("users.resend_invitation.success", scope: "decidim.admin")
81
- end
82
-
83
- on(:invalid) do
84
- flash[:alert] = I18n.t("users.resend_invitation.error", scope: "decidim.admin")
85
- end
86
- end
87
-
88
- redirect_to conference_user_roles_path(current_conference)
89
- end
90
-
91
- private
92
-
93
- def search_field_predicate
94
- :name_or_nickname_or_email_cont
95
- end
96
-
97
- def filters
98
- [:invitation_accepted_at_present, :last_sign_in_at_present]
99
- end
100
-
101
- def collection
102
- @collection ||= Decidim::ConferenceUserRole
103
- .joins(:user)
104
- .where(conference: current_conference)
105
- end
23
+ def event_class = Decidim::Conferences::ConferenceRoleAssignedEvent
106
24
  end
107
25
  end
108
26
  end
@@ -6,6 +6,8 @@ module Decidim
6
6
  # Controller that allows managing conferences.
7
7
  #
8
8
  class ConferencesController < Decidim::Conferences::Admin::ApplicationController
9
+ include Decidim::Admin::ParticipatorySpaceAdminBreadcrumb
10
+
9
11
  helper_method :current_conference, :current_participatory_space
10
12
  layout "decidim/admin/conferences"
11
13
  include Decidim::Conferences::Admin::Filterable
@@ -16,7 +16,7 @@ module Decidim
16
16
  def update
17
17
  enforce_permission_to :update, :conference, conference: current_conference
18
18
 
19
- @form = form(DiplomaForm).from_params(diploma_params).with_context(conference: current_conference, current_organization: current_organization)
19
+ @form = form(DiplomaForm).from_params(diploma_params).with_context(conference: current_conference, current_organization:)
20
20
 
21
21
  UpdateDiploma.call(@form, current_conference) do
22
22
  on(:ok) do
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # This controller allows exporting things.
7
7
  # It is targeted for customizations for exporting things that lives under
8
- # an conference.
8
+ # a conference.
9
9
  class ExportsController < Decidim::Admin::ExportsController
10
10
  include Concerns::ConferenceAdmin
11
11
  end
@@ -5,7 +5,7 @@ module Decidim
5
5
  module Admin
6
6
  # This controller allows importing things.
7
7
  # It is targeted for customizations for importing things that lives under
8
- # an conference.
8
+ # a conference.
9
9
  class ImportsController < Decidim::Admin::ImportsController
10
10
  include Concerns::ConferenceAdmin
11
11
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Conferences
5
5
  module Admin
6
6
  module Moderations
7
- # This controller allows admins to manage moderation reports in an conference.
7
+ # This controller allows admins to manage moderation reports in a conference.
8
8
  class ReportsController < Decidim::Admin::Moderations::ReportsController
9
9
  include Concerns::ConferenceAdmin
10
10
  end
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Conferences
5
5
  module Admin
6
- # This controller allows admins to manage moderations in an conference.
6
+ # This controller allows admins to manage moderations in a conference.
7
7
  class ModerationsController < Decidim::Admin::ModerationsController
8
8
  include Concerns::ConferenceAdmin
9
9
  end
@@ -10,6 +10,8 @@ module Decidim
10
10
 
11
11
  include NeedsPermission
12
12
 
13
+ layout "layouts/decidim/conferences/application"
14
+
13
15
  register_permissions(::Decidim::Conferences::ApplicationController,
14
16
  Decidim::Conferences::Permissions,
15
17
  Decidim::Admin::Permissions,
@@ -17,6 +19,10 @@ module Decidim
17
19
 
18
20
  private
19
21
 
22
+ def fallback_layout
23
+ "layouts/decidim/conferences/application"
24
+ end
25
+
20
26
  def permissions_context
21
27
  super.merge(
22
28
  current_participatory_space: try(:current_participatory_space)
@@ -7,7 +7,7 @@ module Decidim
7
7
  before_action :ensure_signed_in
8
8
 
9
9
  def create
10
- enforce_permission_to :join, :conference, conference: conference
10
+ enforce_permission_to(:join, :conference, conference:)
11
11
 
12
12
  JoinConference.call(conference, registration_type, current_user) do
13
13
  on(:ok) do
@@ -23,7 +23,7 @@ module Decidim
23
23
  end
24
24
 
25
25
  def destroy
26
- enforce_permission_to :leave, :conference, conference: conference
26
+ enforce_permission_to(:leave, :conference, conference:)
27
27
 
28
28
  LeaveConference.call(conference, registration_type, current_user) do
29
29
  on(:ok) do
@@ -39,7 +39,7 @@ module Decidim
39
39
  end
40
40
 
41
41
  def decline_invitation
42
- enforce_permission_to :decline_invitation, :conference, conference: conference
42
+ enforce_permission_to(:decline_invitation, :conference, conference:)
43
43
 
44
44
  DeclineInvitation.call(conference, current_user) do
45
45
  on(:ok) do
@@ -1,16 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # i18n-tasks-use t('decidim.conferences.conferences.show.already_have_an_account?')
4
+ # i18n-tasks-use t('decidim.conferences.conferences.show.are_you_new?')
5
+ # i18n-tasks-use t('decidim.conferences.conferences.show.sign_in_description')
6
+ # i18n-tasks-use t('decidim.conferences.conferences.show.sign_up_description')
3
7
  module Decidim
4
8
  module Conferences
5
9
  # A controller that holds the logic to show Conferences in a
6
10
  # public layout.
7
11
  class ConferencesController < Decidim::Conferences::ApplicationController
8
12
  include ParticipatorySpaceContext
13
+ include Paginable
14
+
9
15
  participatory_space_layout only: :show
10
16
 
11
17
  helper Decidim::AttachmentsHelper
12
18
  helper Decidim::IconHelper
13
- helper Decidim::WidgetUrlsHelper
14
19
  helper Decidim::SanitizeHelper
15
20
  helper Decidim::ResourceReferenceHelper
16
21
  helper Decidim::Conferences::PartnersHelper
@@ -18,7 +23,7 @@ module Decidim
18
23
  helper_method :collection, :promoted_conferences, :conferences, :stats
19
24
 
20
25
  def index
21
- redirect_to "/404" if published_conferences.none?
26
+ raise ActionController::RoutingError, "Not Found" if published_conferences.none?
22
27
 
23
28
  enforce_permission_to :list, :conference
24
29
  end
@@ -49,7 +54,9 @@ module Decidim
49
54
  @conferences ||= OrganizationPrioritizedConferences.new(current_organization, current_user)
50
55
  end
51
56
 
52
- alias collection conferences
57
+ def collection
58
+ @collection ||= paginate(conferences.query)
59
+ end
53
60
 
54
61
  def promoted_conferences
55
62
  @promoted_conferences ||= conferences | PromotedConferences.new
@@ -1,4 +1,4 @@
1
- # frozen-string_literal: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
4
  module Conferences
@@ -11,8 +11,8 @@ module Decidim
11
11
 
12
12
  def i18n_options
13
13
  {
14
- resource_title: resource_title,
15
- resource_url: resource_url,
14
+ resource_title:,
15
+ resource_url:,
16
16
  scope: event_name
17
17
  }
18
18
  end
@@ -1,4 +1,4 @@
1
- # frozen-string_literal: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
4
  module Conferences
@@ -1,4 +1,4 @@
1
- # frozen-string_literal: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
4
  module Conferences
@@ -1,4 +1,4 @@
1
- # frozen-string_literal: true
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
4
  module Conferences
@@ -16,12 +16,12 @@ module Decidim
16
16
 
17
17
  def i18n_options
18
18
  {
19
- resource_path: resource_path,
20
- resource_title: resource_title,
21
- resource_url: resource_url,
19
+ resource_path:,
20
+ resource_title:,
21
+ resource_url:,
22
22
  scope: event_name,
23
- participatory_space_title: participatory_space_title,
24
- participatory_space_url: participatory_space_url,
23
+ participatory_space_title:,
24
+ participatory_space_url:,
25
25
  role: i18n_role
26
26
  }
27
27
  end
@@ -24,7 +24,7 @@ module Decidim
24
24
  private
25
25
 
26
26
  def slug_uniqueness
27
- return unless OrganizationConferences.new(current_organization).query.where(slug: slug).where.not(id: id).any?
27
+ return unless OrganizationConferences.new(current_organization).query.where(slug:).where.not(id:).any?
28
28
 
29
29
  errors.add(:slug, :taken)
30
30
  end
@@ -20,6 +20,7 @@ module Decidim
20
20
  mimic :conference
21
21
 
22
22
  attribute :slug, String
23
+ attribute :weight, Integer, default: 0
23
24
  attribute :hashtag, String
24
25
  attribute :promoted, Boolean
25
26
  attribute :scopes_enabled, Boolean
@@ -36,8 +37,8 @@ module Decidim
36
37
  attribute :location, String
37
38
  attribute :participatory_processes_ids, Array[Integer]
38
39
  attribute :assemblies_ids, Array[Integer]
39
- attribute :consultations_ids, Array[Integer]
40
40
 
41
+ validates :weight, presence: true, numericality: { greater_than_or_equal_to: 0 }
41
42
  validates :slug, presence: true, format: { with: Decidim::Conference.slug_format }
42
43
  validates :title, :slogan, :description, :short_description, translatable_presence: true
43
44
 
@@ -88,29 +89,17 @@ module Decidim
88
89
  end
89
90
  end
90
91
 
91
- def consultations_for_select
92
- return unless Decidim.participatory_space_manifests.map(&:name).include?(:consultations)
93
-
94
- @consultations_for_select ||= Decidim.find_participatory_space_manifest(:consultations)
95
- .participatory_spaces.call(current_organization)&.order(title: :asc)&.map do |consultation|
96
- [
97
- translated_attribute(consultation.title),
98
- consultation.id
99
- ]
100
- end
101
- end
102
-
103
92
  private
104
93
 
105
94
  def available_slots_greater_than_or_equal_to_registrations_count
106
- conference = OrganizationConferences.new(current_organization).query.find_by(slug: slug)
95
+ conference = OrganizationConferences.new(current_organization).query.find_by(slug:)
107
96
  return true if conference.blank?
108
97
 
109
98
  errors.add(:available_slots, :invalid) if available_slots < conference.conference_registrations.count
110
99
  end
111
100
 
112
101
  def slug_uniqueness
113
- return unless OrganizationConferences.new(current_organization).query.where(slug: slug).where.not(id: context[:conference_id]).any?
102
+ return unless OrganizationConferences.new(current_organization).query.where(slug:).where.not(id: context[:conference_id]).any?
114
103
 
115
104
  errors.add(:slug, :taken)
116
105
  end
@@ -5,25 +5,10 @@ module Decidim
5
5
  module Admin
6
6
  # A form object used to create conference user roles from the admin dashboard.
7
7
  #
8
- class ConferenceUserRoleForm < Form
8
+ class ConferenceUserRoleForm < Decidim::Admin::ParticipatorySpaceAdminUserForm
9
9
  mimic :conference_user_role
10
10
 
11
- attribute :name, String
12
- attribute :email, String
13
- attribute :role, String
14
-
15
- validates :email, :role, presence: true
16
- validates :name, presence: true
17
- validates :role, inclusion: { in: Decidim::ConferenceUserRole::ROLES }
18
-
19
- def roles
20
- Decidim::ConferenceUserRole::ROLES.map do |role|
21
- [
22
- I18n.t(role, scope: "decidim.admin.models.conference_user_role.roles"),
23
- role
24
- ]
25
- end
26
- end
11
+ def scope = "decidim.admin.models.conference_user_role.roles"
27
12
  end
28
13
  end
29
14
  end
@@ -18,10 +18,6 @@ module Decidim
18
18
  def assemblies_selected
19
19
  @assemblies_selected ||= current_conference.linked_participatory_space_resources(:assemblies, "included_assemblies").pluck(:id) if current_conference.present?
20
20
  end
21
-
22
- def consultations_selected
23
- @consultations_selected ||= current_conference.linked_participatory_space_resources("Consultations", "included_consultations").pluck(:id) if current_conference.present?
24
- end
25
21
  end
26
22
  end
27
23
  end
@@ -4,6 +4,8 @@ module Decidim
4
4
  # A Helper to render conferences.
5
5
  module Conferences
6
6
  module ConferenceHelper
7
+ include PaginateHelper
8
+
7
9
  # Renders the dates of a conference
8
10
  #
9
11
  def render_date(conference)
@@ -11,6 +13,59 @@ module Decidim
11
13
 
12
14
  "#{l(conference.start_date, format: :decidim_with_month_name_short)} - #{l(conference.end_date, format: :decidim_with_month_name_short)}"
13
15
  end
16
+
17
+ # Items to display in the navigation of a conference
18
+ #
19
+ def conference_nav_items(participatory_space)
20
+ [].tap do |items|
21
+ if participatory_space.speakers.exists?
22
+ items << {
23
+ name: t("layouts.decidim.conferences_nav.conference_speaker_menu_item"),
24
+ url: decidim_conferences.conference_conference_speakers_path(participatory_space)
25
+ }
26
+ end
27
+
28
+ meeting_components = participatory_space.components.published.where(manifest_name: "meetings")
29
+ other_components = participatory_space.components.published.where.not(manifest_name: "meetings")
30
+
31
+ meeting_components.each do |component|
32
+ next unless Decidim::Meetings::Meeting.where(component:).published.not_hidden.visible_for(current_user).exists?
33
+
34
+ items << {
35
+ name: translated_attribute(component.name),
36
+ url: decidim_conferences.conference_conference_program_path(participatory_space, id: component.id)
37
+ }
38
+ end
39
+
40
+ if participatory_space.partners.exists?
41
+ items << {
42
+ name: t("layouts.decidim.conferences_nav.conference_partners_menu_item"),
43
+ url: decidim_conferences.conference_path(participatory_space, anchor: "conference-partners-main_promotor")
44
+ }
45
+ end
46
+
47
+ if meeting_components.exists?
48
+ items << {
49
+ name: t("layouts.decidim.conferences_nav.venues"),
50
+ url: decidim_conferences.conference_path(participatory_space, anchor: "venues")
51
+ }
52
+ end
53
+
54
+ other_components.each do |component|
55
+ items << {
56
+ name: translated_attribute(component.name),
57
+ url: main_component_path(component)
58
+ }
59
+ end
60
+
61
+ if participatory_space.attachments.any? || participatory_space.media_links.any?
62
+ items << {
63
+ name: t("layouts.decidim.conferences_nav.media"),
64
+ url: decidim_conferences.conference_media_path(participatory_space)
65
+ }
66
+ end
67
+ end
68
+ end
14
69
  end
15
70
  end
16
71
  end
@@ -12,7 +12,7 @@ module Decidim
12
12
  meetings_by_time = {}
13
13
  meetings.each do |meeting|
14
14
  meetings_by_time[start_time: meeting.start_time, end_time: meeting.end_time] ||= []
15
- meetings_by_time[start_time: meeting.start_time, end_time: meeting.end_time] << { meeting: meeting }
15
+ meetings_by_time[start_time: meeting.start_time, end_time: meeting.end_time] << { meeting: }
16
16
  end
17
17
  meetings_by_time
18
18
  end
@@ -4,16 +4,6 @@ module Decidim
4
4
  # A Helper to render and link to resources.
5
5
  module Conferences
6
6
  module MediaAttachmentsHelper
7
- # Renders the attachments of a Conference that includes the
8
- # HasAttachments concern.
9
- #
10
- # attached_to - The model to render the attachments from.
11
- #
12
- # Returns nothing.
13
- def attachments_for_conference(attached_to)
14
- render partial: "attachments", locals: { attached_to: attached_to }
15
- end
16
-
17
7
  # Renders the attachment's title.
18
8
  # Checks if the attachment's title is translated or not and use
19
9
  # the correct render method.
@@ -7,8 +7,10 @@ module Decidim
7
7
  # conference - The model to render the partners
8
8
  #
9
9
  # Returns nothing.
10
+
11
+ # deprecated
10
12
  def partners_for(conference)
11
- render partial: "partners", locals: { conference: conference }
13
+ render partial: "partners", locals: { conference: }
12
14
  end
13
15
  end
14
16
  end
@@ -29,7 +29,7 @@ module Decidim
29
29
  @registration_type = registration_type
30
30
 
31
31
  subject = I18n.t("invite.subject", scope: "decidim.conferences.mailer.invite_join_conference_mailer")
32
- mail(to: user.email, subject: subject)
32
+ mail(to: user.email, subject:)
33
33
  end
34
34
  end
35
35
 
@@ -26,7 +26,7 @@ module Decidim
26
26
  add_diploma_attachment
27
27
 
28
28
  subject = I18n.t("diploma.subject", scope: "decidim.conferences.mailer.send_conference_diploma_mailer")
29
- mail(to: user.email, subject: subject)
29
+ mail(to: user.email, subject:)
30
30
  end
31
31
  end
32
32
 
@@ -21,7 +21,7 @@ module Decidim
21
21
  @registration_type = registration_type
22
22
 
23
23
  subject = I18n.t("pending_validation.subject", scope: "decidim.conferences.mailer.conference_registration_mailer")
24
- mail(to: user.email, subject: subject)
24
+ mail(to: user.email, subject:)
25
25
  end
26
26
  end
27
27
 
@@ -36,7 +36,7 @@ module Decidim
36
36
  add_calendar_attachment
37
37
 
38
38
  subject = I18n.t("confirmation.subject", scope: "decidim.conferences.mailer.conference_registration_mailer")
39
- mail(to: user.email, subject: subject)
39
+ mail(to: user.email, subject:)
40
40
  end
41
41
  end
42
42
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
- # Interaction between a user and an organization can be done via an Conference.
5
- # It's a unit of action from the Organization point of view that groups
4
+ # Interaction between a user and an organization can be done via a Conference.
5
+ # It is a unit of action from the Organization point of view that groups
6
6
  # several components (proposals, debates...) that can be enabled or disabled.
7
7
  #
8
8
  class Conference < ApplicationRecord
@@ -100,11 +100,11 @@ module Decidim
100
100
  end
101
101
 
102
102
  def has_registration_for?(user)
103
- conference_registrations.where(user: user).any?
103
+ conference_registrations.where(user:).any?
104
104
  end
105
105
 
106
106
  def has_registration_for_user_and_registration_type?(user, registration_type)
107
- conference_registrations.where(user: user, registration_type: registration_type).any?
107
+ conference_registrations.where(user:, registration_type:).any?
108
108
  end
109
109
 
110
110
  def has_available_slots?
@@ -1,51 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
- # Defines a relation between a user and an conference, and what kind of relation
4
+ # Defines a relation between a user and a Conference, and what kind of relation
5
5
  # does the user have.
6
6
  class ConferenceUserRole < ApplicationRecord
7
7
  include Traceable
8
8
  include Loggable
9
+ include ParticipatorySpaceUser
9
10
 
10
- belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
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 valuator).freeze
15
- validates :role, inclusion: { in: ROLES }, uniqueness: { scope: [:user, :conference] }
16
- validate :user_and_conference_same_organization
14
+ scope :for_space, ->(participatory_space) { where(conference: participatory_space) }
15
+
16
+ validates :role, inclusion: { in: ParticipatorySpaceUser::ROLES }, uniqueness: { scope: [:user, :conference] }
17
+ def target_space_association = :conference
17
18
 
18
19
  def self.log_presenter_class_for(_log)
19
20
  Decidim::Conferences::AdminLog::ConferenceUserRolePresenter
20
21
  end
21
-
22
- ransacker :name do
23
- Arel.sql(%{("decidim_users"."name")::text})
24
- end
25
-
26
- ransacker :nickname do
27
- Arel.sql(%{("decidim_users"."nickname")::text})
28
- end
29
-
30
- ransacker :email do
31
- Arel.sql(%{("decidim_users"."email")::text})
32
- end
33
-
34
- ransacker :invitation_accepted_at do
35
- Arel.sql(%{("decidim_users"."invitation_accepted_at")::text})
36
- end
37
-
38
- ransacker :last_sign_in_at do
39
- Arel.sql(%{("decidim_users"."last_sign_in_at")::text})
40
- end
41
-
42
- private
43
-
44
- # Private: check if the process and the user have the same organization
45
- def user_and_conference_same_organization
46
- return if !conference || !user
47
-
48
- errors.add(:conference, :invalid) unless user.organization == conference.organization
49
- end
50
22
  end
51
23
  end
@@ -0,0 +1,5 @@
1
+ // Images
2
+ require.context("../images", true)
3
+
4
+ // CSS
5
+ import "stylesheets/decidim/conferences/conferences.scss"