decidim-conferences 0.27.10 → 0.28.0.rc4

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.
Files changed (229) 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 +4 -14
  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 +9 -2
  62. data/app/events/decidim/conferences/conference_registration_notification_event.rb +3 -13
  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 -13
  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/initializers/wicked_pdf.rb +1 -1
  152. data/config/locales/ar.yml +3 -64
  153. data/config/locales/bg.yml +0 -612
  154. data/config/locales/ca.yml +35 -55
  155. data/config/locales/cs.yml +35 -53
  156. data/config/locales/de.yml +34 -54
  157. data/config/locales/el.yml +11 -51
  158. data/config/locales/en.yml +34 -54
  159. data/config/locales/es-MX.yml +32 -52
  160. data/config/locales/es-PY.yml +32 -52
  161. data/config/locales/es.yml +32 -52
  162. data/config/locales/eu.yml +33 -58
  163. data/config/locales/fi-plain.yml +32 -52
  164. data/config/locales/fi.yml +32 -52
  165. data/config/locales/fr-CA.yml +31 -51
  166. data/config/locales/fr.yml +31 -51
  167. data/config/locales/ga-IE.yml +0 -17
  168. data/config/locales/gl.yml +3 -62
  169. data/config/locales/hu.yml +15 -53
  170. data/config/locales/id-ID.yml +3 -57
  171. data/config/locales/it.yml +4 -62
  172. data/config/locales/ja.yml +33 -54
  173. data/config/locales/lb.yml +1 -55
  174. data/config/locales/lt.yml +14 -52
  175. data/config/locales/lv.yml +1 -61
  176. data/config/locales/nl.yml +3 -62
  177. data/config/locales/no.yml +1 -62
  178. data/config/locales/pl.yml +1 -81
  179. data/config/locales/pt-BR.yml +1 -72
  180. data/config/locales/pt.yml +2 -63
  181. data/config/locales/ro-RO.yml +13 -50
  182. data/config/locales/sk.yml +1 -61
  183. data/config/locales/sl.yml +0 -2
  184. data/config/locales/sr-CS.yml +0 -9
  185. data/config/locales/sv.yml +22 -77
  186. data/config/locales/tr-TR.yml +13 -62
  187. data/config/locales/zh-CN.yml +3 -60
  188. data/config/locales/zh-TW.yml +6 -47
  189. data/db/migrate/20221116084952_add_weight_to_conferences.rb +7 -0
  190. data/lib/decidim/conferences/admin_engine.rb +14 -138
  191. data/lib/decidim/conferences/content_blocks/registry_manager.rb +21 -0
  192. data/lib/decidim/conferences/engine.rb +17 -15
  193. data/lib/decidim/conferences/menu.rb +182 -0
  194. data/lib/decidim/conferences/participatory_space.rb +6 -200
  195. data/lib/decidim/conferences/query_extensions.rb +2 -2
  196. data/lib/decidim/conferences/seeds.rb +153 -0
  197. data/lib/decidim/conferences/test/factories.rb +37 -73
  198. data/lib/decidim/conferences/version.rb +1 -1
  199. metadata +47 -51
  200. data/app/cells/decidim/conferences/conference_address/show.erb +0 -11
  201. data/app/cells/decidim/conferences/conference_address_cell.rb +0 -11
  202. data/app/cells/decidim/conferences/conference_m/footer.erb +0 -9
  203. data/app/cells/decidim/conferences/conference_m/tags.erb +0 -1
  204. data/app/cells/decidim/conferences/conference_m_cell.rb +0 -38
  205. data/app/cells/decidim/conferences/content_blocks/highlighted_conferences/show.erb +0 -30
  206. data/app/cells/decidim/conferences/photo/show.erb +0 -26
  207. data/app/cells/decidim/conferences/photo_cell.rb +0 -41
  208. data/app/cells/decidim/conferences/photos_list/show.erb +0 -8
  209. data/app/cells/decidim/conferences/photos_list_cell.rb +0 -18
  210. data/app/commands/decidim/conferences/admin/create_conference_admin.rb +0 -114
  211. data/app/commands/decidim/conferences/admin/destroy_conference_admin.rb +0 -58
  212. data/app/commands/decidim/conferences/admin/notify_role_assigned_to_conference.rb +0 -22
  213. data/app/commands/decidim/conferences/admin/unpublish_conference.rb +0 -39
  214. data/app/commands/decidim/conferences/admin/update_conference_admin.rb +0 -53
  215. data/app/controllers/decidim/conferences/conference_widgets_controller.rb +0 -33
  216. data/app/queries/decidim/conferences/admin/conference_invites.rb +0 -60
  217. data/app/views/decidim/conferences/_order_by_conferences.html.erb +0 -3
  218. data/app/views/decidim/conferences/conferences/_promoted_conference.html.erb +0 -27
  219. data/app/views/decidim/conferences/media/_attachments.html.erb +0 -6
  220. data/app/views/decidim/conferences/shared/_conference_user_login.html.erb +0 -14
  221. data/app/views/layouts/decidim/_conference_hero.html.erb +0 -42
  222. data/app/views/layouts/decidim/_conferences_nav.html.erb +0 -46
  223. data/config/locales/he-IL.yml +0 -1
  224. data/db/seeds/Exampledocument.pdf +0 -0
  225. data/db/seeds/city.jpeg +0 -0
  226. data/db/seeds/city2.jpeg +0 -0
  227. data/db/seeds/homepage_image.jpg +0 -0
  228. data/db/seeds/logo.png +0 -0
  229. data/decidim-conferences.gemspec +0 -33
@@ -1,30 +0,0 @@
1
- <section id="highlighted_conferences" class="wrapper-home home-section">
2
- <div class="row" id="highlighted-conferences">
3
- <h3 class="section-heading"><%= t("active_conferences", scope: i18n_scope) %></h3>
4
- <div class="row collapse">
5
- <div class="row small-up-1 smallmedium-up-2 mediumlarge-up-3
6
- large-up-4 card-grid">
7
- <% highlighted_conferences.each do |conference| %>
8
- <div class="column">
9
- <%= link_to decidim_conferences.conference_path(conference), class: "card card--conference card--mini" do %>
10
- <div aria-hidden="true" class="card__image-top"
11
- style="background-image:url('<%= conference.attached_uploader(:hero_image).path %>')"></div>
12
- <div class="card__content">
13
- <span class="card__title card__link"><%= decidim_escape_translated conference.title %></span>
14
- </div>
15
- <% end %>
16
- </div>
17
- <% end %>
18
- </div>
19
- </div>
20
- </div>
21
- <div class="row" id="see-all-conferences">
22
- <div class="columns small-centered small-12
23
- smallmedium-8 medium-6 large-4">
24
- <%= link_to t("see_all_conferences", scope: i18n_scope),
25
- decidim_conferences.conferences_path,
26
- class: "button expanded hollow button--sc home-section__cta",
27
- title: t("conferences_button_title", scope: i18n_scope) %>
28
- </div>
29
- </div>
30
- </section>
@@ -1,26 +0,0 @@
1
- <div class="column">
2
- <div class="card" data-open="media-picture-<%= index %>">
3
- <div class="picture__content">
4
- <%= image_thumb %>
5
- <strong class="card__title"><%= title %></strong>
6
- <div class="text-small">
7
- <%= short_description %>
8
- </div>
9
- </div>
10
- </div>
11
- <div id="media-picture-<%= index %>" class="reveal picture__modal" data-reveal>
12
- <div class="reveal__header">
13
- <h3 class="reveal__title"><%= t("conferences.photo.show.photo", scope: "decidim") %></h3>
14
- </div>
15
- <%= image_big %>
16
- <h5>
17
- <strong><%= title %></strong>
18
- </h5>
19
- <div class="text-small">
20
- <%= decidim_sanitize_editor description %>
21
- </div>
22
- <button class="close-button" data-close aria-label="<%= t("conferences.photo.show.close_modal", scope: "decidim") %>" type="button">
23
- <span aria-hidden="true">&times;</span>
24
- </button>
25
- </div>
26
- </div>
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- # This cell renders the media link card for an instance of a MediaLink
6
- class PhotoCell < Decidim::ViewModel
7
- include Decidim::ApplicationHelper
8
- include Decidim::SanitizeHelper
9
-
10
- def show
11
- render
12
- end
13
-
14
- private
15
-
16
- def index
17
- @options[:index]
18
- end
19
-
20
- def image_thumb
21
- image_tag model.thumbnail_url, alt: t("alt", scope: "decidim.conferences.photo.image.attributes")
22
- end
23
-
24
- def image_big
25
- image_tag model.big_url, alt: t("alt", scope: "decidim.conferences.photo.image.attributes")
26
- end
27
-
28
- def title
29
- decidim_escape_translated model.title
30
- end
31
-
32
- def short_description
33
- decidim_sanitize_editor html_truncate(description, length: 100, separator: "...")
34
- end
35
-
36
- def description
37
- translated_attribute(model.description)
38
- end
39
- end
40
- end
41
- end
@@ -1,8 +0,0 @@
1
- <div class="section images">
2
- <h3 class="section-heading"><%= t("conferences.photos_list.show.related_photos", scope: "decidim") %></h3>
3
- <div class="row small-up-1 smallmedium-up-2 card-grid">
4
- <% model.each_with_index do |photo, index| %>
5
- <%= cell "decidim/conferences/photo", photo, index: index %>
6
- <% end %>
7
- </div>
8
- </div>
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- # This cell renders the photos list
6
- class PhotosListCell < Decidim::ViewModel
7
- include Cell::ViewModel::Partial
8
- include Decidim::ApplicationHelper
9
- include Decidim::SanitizeHelper
10
-
11
- def show
12
- return unless model.any?
13
-
14
- render
15
- end
16
- end
17
- end
18
- end
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A command with all the business logic when creating a new conference
7
- # admin in the system.
8
- class CreateConferenceAdmin < NotifyRoleAssignedToConference
9
- # Public: Initializes the command.
10
- #
11
- # form - A form object with the params.
12
- # conference - The Conference that will hold the
13
- # user role
14
- def initialize(form, current_user, conference)
15
- @form = form
16
- @current_user = current_user
17
- @conference = conference
18
- end
19
-
20
- # Executes the command. Broadcasts these events:
21
- #
22
- # - :ok when everything is valid.
23
- # - :invalid if the form wasn't valid and we couldn't proceed.
24
- #
25
- # Returns nothing.
26
- def call
27
- return broadcast(:invalid) if form.invalid?
28
-
29
- ActiveRecord::Base.transaction do
30
- @user ||= existing_user || new_user
31
- create_role
32
- add_admin_as_follower
33
- end
34
-
35
- broadcast(:ok)
36
- rescue ActiveRecord::RecordInvalid
37
- form.errors.add(:email, :taken)
38
- broadcast(:invalid)
39
- end
40
-
41
- private
42
-
43
- attr_reader :form, :conference, :current_user, :user
44
-
45
- def create_role
46
- Decidim.traceability.perform_action!(
47
- :create,
48
- Decidim::ConferenceUserRole,
49
- current_user,
50
- resource: {
51
- title: user.name
52
- }
53
- ) do
54
- Decidim::ConferenceUserRole.find_or_create_by!(
55
- role: form.role.to_sym,
56
- user: user,
57
- conference: @conference
58
- )
59
- end
60
- send_notification user
61
- end
62
-
63
- def existing_user
64
- return @existing_user if defined?(@existing_user)
65
-
66
- @existing_user = User.find_by(
67
- email: form.email,
68
- organization: conference.organization
69
- )
70
-
71
- InviteUserAgain.call(@existing_user, invitation_instructions) if @existing_user&.invitation_pending?
72
-
73
- @existing_user
74
- end
75
-
76
- def new_user
77
- @new_user ||= InviteUser.call(user_form) do
78
- on(:ok) do |user|
79
- return user
80
- end
81
- end
82
- end
83
-
84
- def user_form
85
- OpenStruct.new(name: form.name,
86
- email: form.email.downcase,
87
- organization: conference.organization,
88
- admin: false,
89
- invited_by: current_user,
90
- invitation_instructions: invitation_instructions)
91
- end
92
-
93
- def invitation_instructions
94
- return "invite_admin" if form.role == "admin"
95
-
96
- "invite_collaborator"
97
- end
98
-
99
- def add_admin_as_follower
100
- return if user.follows?(conference)
101
-
102
- form = Decidim::FollowForm
103
- .from_params(followable_gid: conference.to_signed_global_id.to_s)
104
- .with_context(
105
- current_organization: conference.organization,
106
- current_user: user
107
- )
108
-
109
- Decidim::CreateFollow.new(form, user).call
110
- end
111
- end
112
- end
113
- end
114
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A command with all the business logic when destroying an conference
7
- # admin in the system.
8
- class DestroyConferenceAdmin < Decidim::Command
9
- # Public: Initializes the command.
10
- #
11
- # role - the ConferenceUserRole to destroy
12
- # current_user - the user performing this action
13
- def initialize(role, current_user)
14
- @role = role
15
- @current_user = current_user
16
- end
17
-
18
- # Executes the command. Broadcasts these events:
19
- #
20
- # - :ok when everything is valid.
21
- # - :invalid if the form wasn't valid and we couldn't proceed.
22
- #
23
- # Returns nothing.
24
- def call
25
- destroy_role!
26
- dispatch_system_event
27
- broadcast(:ok)
28
- end
29
-
30
- private
31
-
32
- attr_reader :role, :current_user
33
-
34
- def dispatch_system_event
35
- ActiveSupport::Notifications.publish("decidim.system.participatory_space.admin.destroyed", role.class.name, role.id)
36
- end
37
-
38
- def destroy_role!
39
- extra_info = {
40
- resource: {
41
- title: role.user.name
42
- }
43
- }
44
-
45
- Decidim.traceability.perform_action!(
46
- "delete",
47
- role,
48
- current_user,
49
- extra_info
50
- ) do
51
- role.destroy!
52
- role
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A command to notify users when a role is assigned for a Conference
7
- class NotifyRoleAssignedToConference < Decidim::Command
8
- def send_notification(user)
9
- Decidim::EventsManager.publish(
10
- event: "decidim.events.conferences.role_assigned",
11
- event_class: Decidim::Conferences::ConferenceRoleAssignedEvent,
12
- resource: form.current_participatory_space,
13
- affected_users: [user],
14
- extra: {
15
- role: form.role
16
- }
17
- )
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A command that sets an conference as unpublished.
7
- class UnpublishConference < Decidim::Command
8
- # Public: Initializes the command.
9
- #
10
- # conference - A Conference that will be published
11
- # current_user - the user performing the action
12
- def initialize(conference, current_user)
13
- @conference = conference
14
- @current_user = current_user
15
- end
16
-
17
- # Executes the command. Broadcasts these events:
18
- #
19
- # - :ok when everything is valid.
20
- # - :invalid if the data wasn't valid and we couldn't proceed.
21
- #
22
- # Returns nothing.
23
- def call
24
- return broadcast(:invalid) if conference.nil? || !conference.published?
25
-
26
- Decidim.traceability.perform_action!("unpublish", conference, current_user) do
27
- conference.unpublish!
28
- end
29
-
30
- broadcast(:ok)
31
- end
32
-
33
- private
34
-
35
- attr_reader :conference, :current_user
36
- end
37
- end
38
- end
39
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A command with all the business logic when updated a participatory
7
- # process admin in the system.
8
- class UpdateConferenceAdmin < NotifyRoleAssignedToConference
9
- # Public: Initializes the command.
10
- #
11
- # form - A form object with the params.
12
- # user_role - The ConferenceUSerRole to update
13
- def initialize(form, user_role)
14
- @form = form
15
- @user_role = user_role
16
- end
17
-
18
- # Executes the command. Broadcasts these events:
19
- #
20
- # - :ok when everything is valid.
21
- # - :invalid if the form wasn't valid and we couldn't proceed.
22
- #
23
- # Returns nothing.
24
- def call
25
- return broadcast(:invalid) if form.invalid?
26
- return broadcast(:invalid) unless user_role
27
-
28
- update_role!
29
- broadcast(:ok)
30
- end
31
-
32
- private
33
-
34
- attr_reader :form, :user_role
35
-
36
- def update_role!
37
- log_info = {
38
- resource: {
39
- title: user_role.user.name
40
- }
41
- }
42
- Decidim.traceability.update!(
43
- user_role,
44
- form.current_user,
45
- { role: form.role },
46
- log_info
47
- )
48
- send_notification user_role.user
49
- end
50
- end
51
- end
52
- end
53
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- class ConferenceWidgetsController < Decidim::WidgetsController
6
- helper Decidim::SanitizeHelper
7
-
8
- def show
9
- enforce_permission_to :embed, :conference, conference: model if model
10
-
11
- super
12
- end
13
-
14
- private
15
-
16
- def model
17
- @model ||= Conference.where(organization: current_organization).published.find_by(slug: params[:conference_slug])
18
- end
19
-
20
- def current_participatory_space
21
- model
22
- end
23
-
24
- def iframe_url
25
- @iframe_url ||= conference_conference_widget_url(model)
26
- end
27
-
28
- def permission_class_chain
29
- ::Decidim.permissions_registry.chain_for(::Decidim::Conferences::ApplicationController)
30
- end
31
- end
32
- end
33
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Conferences
5
- module Admin
6
- # A class used to find the ConferenceInvites by their status status.
7
- class ConferenceInvites < Decidim::Query
8
- # Syntactic sugar to initialize the class and return the queried objects.
9
- #
10
- # conference_invites - the initial Invites relation that needs to be filtered.
11
- # query - query to filter conference_invites
12
- # status - invite status to be used as a filter
13
- def self.for(conference_invites, query = nil, status = nil)
14
- new(conference_invites, query, status).query
15
- end
16
-
17
- # Initializes the class.
18
- #
19
- # conference_invites - the initial Invites relation that need to be filtered
20
- # query - query to filter conference_invites
21
- # status - invite status to be used as a filter
22
- def initialize(conference_invites, query = nil, status = nil)
23
- @conference_invites = conference_invites
24
- @query = query
25
- @status = status
26
- end
27
-
28
- # List the conference_invites by the different filters.
29
- def query
30
- @conference_invites = filter_by_search(@conference_invites)
31
- @conference_invites = filter_by_status(@conference_invites)
32
- @conference_invites
33
- end
34
-
35
- private
36
-
37
- def filter_by_search(conference_invites)
38
- return conference_invites if @query.blank?
39
-
40
- conference_invites.joins(:user).where(
41
- User.arel_table[:name].lower.matches("%#{@query}%").or(User.arel_table[:email].lower.matches("%#{@query}%"))
42
- )
43
- end
44
-
45
- def filter_by_status(conference_invites)
46
- case @status
47
- when "accepted"
48
- conference_invites.where.not(accepted_at: nil)
49
- when "rejected"
50
- conference_invites.where.not(rejected_at: nil)
51
- when "sent"
52
- conference_invites.where.not(sent_at: nil).where(accepted_at: nil, rejected_at: nil)
53
- else
54
- conference_invites
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,3 +0,0 @@
1
- <div class="row collapse order-by">
2
- <h3 class="order-by__text section-heading"><%= t("conferences.order_by_conferences.conferences", scope: "layouts.decidim", count: collection.count) %></h3>
3
- </div>
@@ -1,27 +0,0 @@
1
- <div class="card card--full card--process">
2
- <div class="row collapse card--process__row">
3
- <div class="columns mediumlarge-8 large-6 card--process__column">
4
- <div class="card__content">
5
- <%= link_to conference_path(promoted_conference), class: "card__link" do %>
6
- <h2 class="card__title"><%= translated_attribute promoted_conference.title %></h2>
7
- <% end %>
8
- <%= decidim_sanitize_editor html_truncate(translated_attribute(promoted_conference.short_description), length: 630, separator: "...") %>
9
- <%= link_to conference_path(promoted_conference), class: "button small hollow card__button" do %>
10
- <%= t("conferences.promoted_conference.more_info", scope: "layouts.decidim") %>
11
- <% end %>
12
- </div>
13
- </div>
14
- <div class="columns mediumlarge-8 large-6 card--process__column">
15
- <div class="card--full__image"
16
- style="background-image:url('<%= promoted_conference.attached_uploader(:hero_image).path %>')">
17
- <div class="card__content row collapse">
18
- <div class="large-6 large-offset-6 columns">
19
- <%= link_to conference_path(promoted_conference), class: "button expanded button--sc" do %>
20
- <%= t(promoted_conference.cta_button_text_key, scope: "layouts.decidim.conferences.promoted_conference") %>
21
- <% end %>
22
- </div>
23
- </div>
24
- </div>
25
- </div>
26
- </div>
27
- </div>
@@ -1,6 +0,0 @@
1
- <% if attached_to.attachments.any? %>
2
- <section class="media-pictures">
3
- <%= cell("decidim/conferences/photos_list", attached_to.photos) %>
4
- <%= render partial: "documents", locals: { documents: attached_to.documents } %>
5
- </section>
6
- <% end %>
@@ -1,14 +0,0 @@
1
- <div class="row" data-equalizer>
2
- <div class="column medium-6">
3
- <div class="card p-m" data-equalizer-watch>
4
- <p><%= t(".already_account") %></p>
5
- <%= link_to t(".sign_in"), decidim.new_user_session_path, class: "" %>
6
- </div>
7
- </div>
8
- <div class="column medium-6">
9
- <div class="card p-m" data-equalizer-watch>
10
- <p><%= t(".new_user") %></p>
11
- <%= link_to t(".sign_up"), decidim.new_user_registration_path, class: "" %>
12
- </div>
13
- </div>
14
- </div>
@@ -1,42 +0,0 @@
1
- <section class="extended hero"
2
- style="background-image:url('<%= current_participatory_space.attached_uploader(:banner_image).path %>');">
3
- <div class="hero__container">
4
- <div class="row">
5
- <div class="columns large-10 text-left">
6
- <h1 class="text-highlight hero-heading mb-none">
7
- <%= translated_attribute(current_participatory_space.title) %>
8
- </h1>
9
- <h2 class="text-highlight">
10
- <% if current_participatory_space.hashtag.present? %>
11
- <span class="process-header__hashtag card__link">
12
- <%= link_to "##{current_participatory_space.hashtag}", twitter_hashtag_url(current_participatory_space.hashtag), target: "_blank" %>
13
- </span>
14
- <% end %>
15
- <%= translated_attribute(current_participatory_space.slogan) %>
16
- </h2>
17
- </div>
18
- </div>
19
- <div class="row">
20
- <div class="row column medium-8 text-left mt-m">
21
- <div class="column medium-6">
22
- <div class="conference--date button hollow light expanded">
23
- <%= participatory_space_helpers.render_date(current_participatory_space) %>
24
- <%= current_participatory_space.location %>
25
- </div>
26
- </div>
27
- <% if current_participatory_space.registrations_enabled? %>
28
- <div class="column medium-3 end">
29
- <%= link_to t(".register"), decidim_conferences.conference_registration_types_path(current_participatory_space), class:"button button--sc light expanded" %>
30
- </div>
31
- <% end %>
32
- <% current_participatory_space.components.where(manifest_name: "meetings").each do |component_meeting| %>
33
- <% if component_meeting.published? || component_meeting == self.try(:current_component) %>
34
- <div class="column medium-3 end">
35
- <%= link_to translated_attribute(component_meeting.name), decidim_conferences.conference_conference_program_path(current_participatory_space, id: component_meeting.id), class:"button button--sc light hollow expanded" %>
36
- </div>
37
- <% end %>
38
- <% end %>
39
- </div>
40
- </div>
41
- </div>
42
- </section>
@@ -1,46 +0,0 @@
1
- <%
2
- components = current_participatory_space.components.published.where.not(manifest_name: "meetings")
3
- meeting_components = current_participatory_space.components.published.where(manifest_name: "meetings")
4
- %>
5
-
6
- <%=
7
- extended_navigation_bar(([
8
- {
9
- name: t(".conference_menu_item"),
10
- url: decidim_conferences.conference_path(current_participatory_space),
11
- active: is_active_link?(decidim_conferences.conference_path(current_participatory_space), :exclusive)
12
- },
13
- current_participatory_space.speakers.any? ? {
14
- name: t(".conference_speaker_menu_item"),
15
- url: decidim_conferences.conference_conference_speakers_path(current_participatory_space),
16
- active: is_active_link?(decidim_conferences.conference_conference_speakers_path(current_participatory_space), :inclusive)
17
- } : nil
18
- ] + meeting_components.map do |component|
19
- Decidim::Meetings::Meeting.visible_for(current_user).any? ? {
20
- name: translated_attribute(component.name),
21
- url: decidim_conferences.conference_conference_program_path(current_participatory_space, id: component.id),
22
- active: is_active_link?(decidim_conferences.conference_conference_program_path(current_participatory_space, id: component.id), :inclusive)
23
- } : nil
24
- end + [
25
- current_participatory_space.partners.any? ? {
26
- name: t(".conference_partners_menu_item"),
27
- url: decidim_conferences.conference_path(current_participatory_space, anchor: "conference-partners"),
28
- } : nil,
29
- meeting_components.any? ? {
30
- name: t(".venues"),
31
- url: decidim_conferences.conference_path(current_participatory_space, anchor: "venues")
32
- } : nil,
33
- ] + components.map do |component|
34
- {
35
- name: translated_attribute(component.name),
36
- url: main_component_path(component),
37
- active: is_active_link?(main_component_path(component), :inclusive)
38
- }
39
- end + [
40
- current_participatory_space.attachments.any? || current_participatory_space.media_links.any? ? {
41
- name: t(".media"),
42
- url: decidim_conferences.conference_media_path(current_participatory_space),
43
- active: is_active_link?(decidim_conferences.conference_media_path(current_participatory_space), :inclusive)
44
- } : nil
45
- ]).compact)
46
- %>
@@ -1 +0,0 @@
1
- he:
Binary file
data/db/seeds/city.jpeg DELETED
Binary file
data/db/seeds/city2.jpeg DELETED
Binary file
Binary file
data/db/seeds/logo.png DELETED
Binary file