decidim-meetings 0.27.5 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +32 -0
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +21 -0
  4. data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +10 -13
  5. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +2 -2
  6. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +8 -18
  7. data/app/cells/decidim/meetings/dates_and_map/show.erb +25 -0
  8. data/app/cells/decidim/meetings/dates_and_map/static_map.erb +1 -0
  9. data/app/cells/decidim/meetings/dates_and_map_cell.rb +35 -0
  10. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +32 -30
  11. data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +76 -16
  12. data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +25 -0
  13. data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +4 -0
  14. data/app/cells/decidim/meetings/join_meeting_button/show.erb +6 -4
  15. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +3 -7
  16. data/app/cells/decidim/meetings/meeting_activity_cell.rb +1 -12
  17. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +64 -0
  18. data/app/cells/decidim/meetings/meeting_cell.rb +2 -6
  19. data/app/cells/decidim/meetings/meeting_l/image.erb +5 -0
  20. data/app/cells/decidim/meetings/meeting_l_cell.rb +33 -0
  21. data/app/cells/decidim/meetings/meeting_month/show.erb +33 -0
  22. data/app/cells/decidim/meetings/meeting_month_cell.rb +72 -0
  23. data/app/cells/decidim/meetings/meeting_s_cell.rb +5 -37
  24. data/app/cells/decidim/meetings/meetings_map/show.erb +9 -24
  25. data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
  26. data/app/cells/decidim/meetings/online_meeting_cell.rb +1 -0
  27. data/app/cells/decidim/meetings/online_meeting_link/show.erb +18 -41
  28. data/app/cells/decidim/meetings/public_participants_list/show.erb +4 -15
  29. data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -1
  30. data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
  31. data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +5 -5
  32. data/app/commands/decidim/meetings/admin/publish_meeting.rb +1 -1
  33. data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +1 -1
  34. data/app/commands/decidim/meetings/create_meeting.rb +14 -3
  35. data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
  36. data/app/commands/decidim/meetings/join_meeting.rb +5 -5
  37. data/app/commands/decidim/meetings/update_meeting.rb +13 -3
  38. data/app/controllers/concerns/decidim/meetings/component_filterable.rb +4 -4
  39. data/app/controllers/decidim/meetings/admin/agenda_controller.rb +6 -6
  40. data/app/controllers/decidim/meetings/admin/invites_controller.rb +3 -3
  41. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -4
  42. data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +3 -3
  43. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +7 -7
  44. data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +4 -4
  45. data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -6
  46. data/app/controllers/decidim/meetings/application_controller.rb +11 -0
  47. data/app/controllers/decidim/meetings/calendars_controller.rb +0 -1
  48. data/app/controllers/decidim/meetings/directory/application_controller.rb +12 -0
  49. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +5 -30
  50. data/app/controllers/decidim/meetings/live_events_controller.rb +1 -0
  51. data/app/controllers/decidim/meetings/meeting_closes_controller.rb +2 -3
  52. data/app/controllers/decidim/meetings/meetings_controller.rb +75 -7
  53. data/app/controllers/decidim/meetings/polls/answers_controller.rb +2 -2
  54. data/app/controllers/decidim/meetings/polls/questions_controller.rb +1 -1
  55. data/app/controllers/decidim/meetings/registrations_controller.rb +5 -5
  56. data/app/events/decidim/meetings/close_meeting_event.rb +1 -1
  57. data/app/events/decidim/meetings/meeting_event.rb +1 -1
  58. data/app/events/decidim/meetings/meeting_registration_notification_event.rb +3 -3
  59. data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -1
  60. data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +1 -1
  61. data/app/events/decidim/meetings/registration_code_validated_event.rb +1 -1
  62. data/app/forms/decidim/meetings/admin/meeting_form.rb +5 -1
  63. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
  64. data/app/forms/decidim/meetings/admin/validate_registration_code_form.rb +1 -1
  65. data/app/forms/decidim/meetings/base_meeting_form.rb +1 -1
  66. data/app/forms/decidim/meetings/meeting_form.rb +3 -3
  67. data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -0
  68. data/app/helpers/decidim/meetings/application_helper.rb +18 -25
  69. data/app/helpers/decidim/meetings/directory/application_helper.rb +10 -58
  70. data/app/helpers/decidim/meetings/map_helper.rb +2 -9
  71. data/app/helpers/decidim/meetings/meetings_helper.rb +6 -5
  72. data/app/jobs/decidim/meetings/hide_all_created_by_author_job.rb +13 -0
  73. data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
  74. data/app/mailers/decidim/meetings/registration_mailer.rb +1 -1
  75. data/app/models/decidim/meetings/meeting.rb +11 -32
  76. data/app/models/decidim/meetings/question.rb +1 -1
  77. data/app/packs/entrypoints/decidim_meetings.js +3 -0
  78. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg +42 -1
  79. data/app/packs/src/decidim/meetings/admin/agendas.js +3 -4
  80. data/app/packs/src/decidim/meetings/admin/registrations_form.js +12 -4
  81. data/app/packs/src/decidim/meetings/meetings_form.js +1 -1
  82. data/app/packs/src/decidim/meetings/poll.component.js +1 -1
  83. data/app/packs/stylesheets/decidim/meetings/_calendar.scss +47 -0
  84. data/app/packs/stylesheets/decidim/meetings/_item.scss +177 -0
  85. data/app/packs/stylesheets/decidim/meetings/_list.scss +58 -0
  86. data/app/packs/stylesheets/decidim/meetings/_live_event.scss +128 -0
  87. data/app/packs/stylesheets/decidim/meetings/meetings.scss +4 -0
  88. data/app/permissions/decidim/meetings/permissions.rb +15 -2
  89. data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
  90. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +2 -2
  91. data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
  92. data/app/presenters/decidim/meetings/meeting_presenter.rb +8 -2
  93. data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
  94. data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +2 -2
  95. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +1 -1
  96. data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -21
  97. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +12 -12
  98. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +8 -8
  99. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +1 -1
  100. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
  101. data/app/views/decidim/meetings/admin/agenda/_form.html.erb +54 -50
  102. data/app/views/decidim/meetings/admin/agenda/edit.html.erb +18 -6
  103. data/app/views/decidim/meetings/admin/agenda/new.html.erb +17 -5
  104. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +11 -2
  105. data/app/views/decidim/meetings/admin/invites/_form.html.erb +38 -28
  106. data/app/views/decidim/meetings/admin/invites/index.html.erb +77 -81
  107. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +26 -28
  108. data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +17 -5
  109. data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +17 -6
  110. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +76 -83
  111. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +14 -10
  112. data/app/views/decidim/meetings/admin/meetings/_services.html.erb +9 -5
  113. data/app/views/decidim/meetings/admin/meetings/edit.html.erb +17 -7
  114. data/app/views/decidim/meetings/admin/meetings/index.html.erb +133 -129
  115. data/app/views/decidim/meetings/admin/meetings/new.html.erb +16 -6
  116. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
  117. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
  118. data/app/views/decidim/meetings/admin/poll/_form.html.erb +17 -32
  119. data/app/views/decidim/meetings/admin/poll/_question.html.erb +81 -75
  120. data/app/views/decidim/meetings/admin/poll/edit.html.erb +28 -8
  121. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +32 -55
  122. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +59 -26
  123. data/app/views/decidim/meetings/directory/meetings/index.html.erb +15 -20
  124. data/app/views/decidim/meetings/directory/meetings/index.js.erb +1 -23
  125. data/app/views/decidim/meetings/layouts/_aside_block.html.erb +8 -0
  126. data/app/views/decidim/meetings/layouts/live_event.html.erb +20 -19
  127. data/app/views/decidim/meetings/live_events/show.html.erb +4 -5
  128. data/app/views/decidim/meetings/meeting_closes/_form.html.erb +3 -10
  129. data/app/views/decidim/meetings/meeting_closes/edit.html.erb +17 -21
  130. data/app/views/decidim/meetings/meetings/_actions.html.erb +6 -0
  131. data/app/views/decidim/meetings/meetings/_add_to_calendar_modal.html.erb +17 -0
  132. data/app/views/decidim/meetings/meetings/_form.html.erb +26 -34
  133. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +3 -22
  134. data/app/views/decidim/meetings/meetings/_meeting.html.erb +74 -0
  135. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +28 -26
  136. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +98 -0
  137. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +23 -36
  138. data/app/views/decidim/meetings/meetings/edit.html.erb +17 -21
  139. data/app/views/decidim/meetings/meetings/index.html.erb +15 -33
  140. data/app/views/decidim/meetings/meetings/index.js.erb +1 -23
  141. data/app/views/decidim/meetings/meetings/new.html.erb +17 -21
  142. data/app/views/decidim/meetings/meetings/show.html.erb +8 -165
  143. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +2 -2
  144. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +6 -6
  145. data/app/views/decidim/meetings/polls/answers/create.js.erb +1 -1
  146. data/app/views/decidim/meetings/polls/questions/_index.html.erb +1 -1
  147. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +5 -5
  148. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +7 -9
  149. data/app/views/decidim/meetings/polls/questions/_question.html.erb +3 -3
  150. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +1 -1
  151. data/app/views/decidim/meetings/shared/_filters.html.erb +20 -0
  152. data/app/views/decidim/meetings/shared/_index.html.erb +24 -0
  153. data/app/views/decidim/meetings/shared/_index.js.erb +16 -0
  154. data/app/views/decidim/meetings/shared/_meetings.html.erb +33 -0
  155. data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +18 -0
  156. data/app/views/decidim/meetings/versions/show.html.erb +13 -3
  157. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +13 -15
  158. data/config/assets.rb +0 -2
  159. data/config/locales/ar.yml +5 -94
  160. data/config/locales/bg.yml +0 -7
  161. data/config/locales/ca.yml +49 -72
  162. data/config/locales/cs.yml +48 -71
  163. data/config/locales/de.yml +51 -74
  164. data/config/locales/el.yml +47 -51
  165. data/config/locales/en.yml +51 -74
  166. data/config/locales/es-MX.yml +50 -73
  167. data/config/locales/es-PY.yml +48 -71
  168. data/config/locales/es.yml +49 -72
  169. data/config/locales/eu.yml +52 -75
  170. data/config/locales/fi-plain.yml +48 -69
  171. data/config/locales/fi.yml +45 -66
  172. data/config/locales/fr-CA.yml +45 -69
  173. data/config/locales/fr.yml +50 -71
  174. data/config/locales/ga-IE.yml +2 -16
  175. data/config/locales/gl.yml +4 -63
  176. data/config/locales/hu.yml +5 -88
  177. data/config/locales/id-ID.yml +4 -60
  178. data/config/locales/is-IS.yml +1 -22
  179. data/config/locales/it.yml +5 -86
  180. data/config/locales/ja.yml +44 -66
  181. data/config/locales/lb.yml +6 -67
  182. data/config/locales/lt.yml +41 -65
  183. data/config/locales/lv.yml +4 -61
  184. data/config/locales/nl.yml +3 -92
  185. data/config/locales/no.yml +3 -80
  186. data/config/locales/pl.yml +5 -99
  187. data/config/locales/pt-BR.yml +3 -150
  188. data/config/locales/pt.yml +4 -85
  189. data/config/locales/ro-RO.yml +10 -81
  190. data/config/locales/ru.yml +5 -60
  191. data/config/locales/sk.yml +4 -61
  192. data/config/locales/sl.yml +0 -3
  193. data/config/locales/sr-CS.yml +0 -6
  194. data/config/locales/sv.yml +9 -89
  195. data/config/locales/tr-TR.yml +5 -75
  196. data/config/locales/uk.yml +5 -53
  197. data/config/locales/zh-CN.yml +3 -70
  198. data/config/locales/zh-TW.yml +23 -51
  199. data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
  200. data/db/migrate/20230427105701_change_types_and_registration_types_on_meetings.rb +49 -0
  201. data/lib/decidim/meetings/admin_engine.rb +2 -2
  202. data/lib/decidim/meetings/component.rb +4 -216
  203. data/lib/decidim/meetings/content_blocks/registry_manager.rb +17 -0
  204. data/lib/decidim/meetings/directory_engine.rb +4 -6
  205. data/lib/decidim/meetings/engine.rb +62 -27
  206. data/lib/decidim/meetings/meeting_serializer.rb +3 -3
  207. data/lib/decidim/meetings/seeds.rb +188 -0
  208. data/lib/decidim/meetings/test/factories.rb +126 -18
  209. data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
  210. data/lib/decidim/meetings/test/translated_event.rb +1 -1
  211. data/lib/decidim/meetings/version.rb +1 -1
  212. metadata +56 -56
  213. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +0 -16
  214. data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +0 -1
  215. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +0 -26
  216. data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +0 -63
  217. data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +0 -31
  218. data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +0 -21
  219. data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +0 -10
  220. data/app/cells/decidim/meetings/meeting_list_item/show.erb +0 -14
  221. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +0 -44
  222. data/app/cells/decidim/meetings/meeting_m/address.erb +0 -5
  223. data/app/cells/decidim/meetings/meeting_m/data.erb +0 -2
  224. data/app/cells/decidim/meetings/meeting_m/date.erb +0 -8
  225. data/app/cells/decidim/meetings/meeting_m/footer.erb +0 -9
  226. data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +0 -17
  227. data/app/cells/decidim/meetings/meeting_m/single_date.erb +0 -9
  228. data/app/cells/decidim/meetings/meeting_m/tags.erb +0 -1
  229. data/app/cells/decidim/meetings/meeting_m_cell.rb +0 -121
  230. data/app/cells/decidim/meetings/meeting_s/show.erb +0 -27
  231. data/app/controllers/concerns/decidim/meetings/filterable.rb +0 -27
  232. data/app/controllers/decidim/meetings/widgets_controller.rb +0 -20
  233. data/app/packs/stylesheets/decidim/meetings/_header.scss +0 -52
  234. data/app/packs/stylesheets/decidim/meetings/_main.scss +0 -178
  235. data/app/packs/stylesheets/decidim/meetings/_meetings.scss +0 -2
  236. data/app/queries/decidim/meetings/admin/invites.rb +0 -60
  237. data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +0 -1
  238. data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +0 -34
  239. data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +0 -26
  240. data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +0 -1
  241. data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +0 -26
  242. data/app/views/decidim/meetings/meetings/_filters.html.erb +0 -40
  243. data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +0 -18
  244. data/app/views/decidim/meetings/meetings/_meetings.html.erb +0 -48
  245. data/app/views/decidim/meetings/versions/index.html.erb +0 -8
  246. data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +0 -4
  247. data/config/environment.rb +0 -3
  248. data/lib/decidim/meetings/seeds/city.jpeg +0 -0
@@ -1,121 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Meetings
5
- # This cell renders the Medium (:m) meeting card
6
- # for an given instance of a Meeting
7
- class MeetingMCell < Decidim::CardMCell
8
- include MeetingCellsHelper
9
-
10
- def has_authors?
11
- true
12
- end
13
-
14
- def render_authorship
15
- cell "decidim/author", author_presenter_for(model.normalized_author)
16
- end
17
-
18
- def date
19
- render
20
- end
21
-
22
- def address
23
- decidim_html_escape(render)
24
- end
25
-
26
- def title
27
- present(model).title(html_escape: true)
28
- end
29
-
30
- def description
31
- present(model).description(strip_tags: true).truncate(120, separator: /\s/)
32
- end
33
-
34
- def badge
35
- render if has_badge?
36
- end
37
-
38
- def has_badge?
39
- withdrawn?
40
- end
41
-
42
- def state_classes
43
- ["alert"]
44
- end
45
-
46
- delegate :online_meeting?, to: :model
47
-
48
- private
49
-
50
- def cache_hash
51
- hash = []
52
- hash << I18n.locale.to_s
53
- hash << model.cache_key_with_version
54
- hash << Digest::MD5.hexdigest(model.component.cache_key_with_version)
55
- hash << Digest::MD5.hexdigest(resource_image_path) if resource_image_path
56
- hash << model.comments_count
57
- hash << model.follows_count
58
- hash << render_space? ? 1 : 0
59
-
60
- if current_user
61
- hash << current_user.cache_key_with_version
62
- hash << current_user.follows?(model) ? 1 : 0
63
- end
64
- hash << Digest::MD5.hexdigest(model.author.cache_key_with_version)
65
- hash << (model.must_render_translation?(current_organization) ? 1 : 0) if model.respond_to?(:must_render_translation?)
66
-
67
- hash.join(Decidim.cache_key_separator)
68
- end
69
-
70
- def has_state?
71
- withdrawn?
72
- end
73
-
74
- def resource_image_path
75
- model.photo&.url
76
- end
77
-
78
- def has_image?
79
- true
80
- end
81
-
82
- def spans_multiple_dates?
83
- start_date != end_date
84
- end
85
-
86
- def meeting_date
87
- return render(:multiple_dates) if spans_multiple_dates?
88
-
89
- render(:single_date)
90
- end
91
-
92
- def formatted_start_time
93
- model.start_time.strftime("%H:%M")
94
- end
95
-
96
- def formatted_end_time
97
- model.end_time.strftime("%H:%M")
98
- end
99
-
100
- def start_date
101
- model.start_time.to_date
102
- end
103
-
104
- def end_date
105
- model.end_time.to_date
106
- end
107
-
108
- def can_join?
109
- model.can_be_joined_by?(current_user)
110
- end
111
-
112
- def show_footer_actions?
113
- options[:show_footer_actions]
114
- end
115
-
116
- def statuses
117
- [:follow, :comments_count]
118
- end
119
- end
120
- end
121
- end
@@ -1,27 +0,0 @@
1
- <div class="card">
2
- <div class="p-s">
3
- <div class="card__header">
4
- <%= link_to meeting_path, class: "card__link" do %>
5
- <span class="card__title">
6
- <%= title %>
7
- </span>
8
- <% end %>
9
- </div>
10
- <div class="card__text">
11
- <div class="row collapse text-medium">
12
- <time datetime="<%= l(model.start_time, format: :long_dashed) %>" class="column medium-4 icon--container">
13
- <%= icon "datetime", class: "primary", role: "img", "aria-hidden": true %>
14
- &nbsp;
15
- <%= l start_date, format: :decidim_with_month_name %>
16
- &nbsp;-&nbsp;
17
- <%= formatted_start_time %>
18
- </time>
19
- <span class="column medium-8">
20
- <%= participatory_space_class_name %>
21
- &nbsp;
22
- <%= link_to participatory_space_title, participatory_space_path %>
23
- </span>
24
- </div>
25
- </div>
26
- </div>
27
- </div>
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "active_support/concern"
4
-
5
- module Decidim
6
- module Meetings
7
- # A controller concern to specify default filter parameters for the controller resources.
8
- module Filterable
9
- extend ActiveSupport::Concern
10
-
11
- included do
12
- private
13
-
14
- def default_filter_type_params
15
- %w(all) + Decidim::Meetings::Meeting::TYPE_OF_MEETING
16
- end
17
-
18
- def default_filter_origin_params
19
- filter_origin_params = %w(participants)
20
- filter_origin_params << "official"
21
- filter_origin_params << "user_group" if current_organization.user_groups_enabled?
22
- filter_origin_params
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Meetings
5
- class WidgetsController < Decidim::WidgetsController
6
- helper MeetingsHelper
7
- helper Decidim::SanitizeHelper
8
-
9
- private
10
-
11
- def model
12
- @model ||= Meeting.where(component: params[:component_id]).find(params[:meeting_id])
13
- end
14
-
15
- def iframe_url
16
- @iframe_url ||= meeting_widget_url(model)
17
- end
18
- end
19
- end
20
- end
@@ -1,52 +0,0 @@
1
- .meeting-polls{
2
- &__header{
3
- display: flex;
4
- justify-content: space-between;
5
- align-items: center;
6
- padding: 10px;
7
- background-color: #f4f4f4;
8
- border: 1px solid #e8e8e8;
9
- }
10
-
11
- &__button{
12
- @extend .button;
13
- @extend .button--nomargin;
14
- @extend .hollow;
15
- @extend .small;
16
-
17
- background-color: $white;
18
- font-weight: 600;
19
-
20
- &.is-open{
21
- background-color: var(--primary);
22
- color: $white;
23
- }
24
-
25
- & + &{
26
- margin-left: $global-margin * .25;
27
- }
28
- }
29
-
30
- &__close{
31
- display: flex;
32
- justify-content: space-between;
33
- align-items: center;
34
- margin-left: 2 * $global-margin;
35
- cursor: pointer;
36
-
37
- a{
38
- display: flex;
39
- align-items: baseline;
40
- }
41
-
42
- span{
43
- font-size: 2em;
44
- margin-left: $global-margin * .5;
45
- line-height: .5;
46
- }
47
-
48
- svg{
49
- margin-left: .2rem;
50
- }
51
- }
52
- }
@@ -1,178 +0,0 @@
1
- .meeting-polls{
2
- &__main{
3
- flex: 1;
4
- display: flex;
5
- }
6
-
7
- &__iframe{
8
- @extend .bg-muted;
9
-
10
- display: flex;
11
-
12
- > *{
13
- flex: 1;
14
- border: 0;
15
- }
16
- }
17
-
18
- &__aside{
19
- flex: 0;
20
- counter-reset: question;
21
-
22
- & + div{
23
- flex: 1;
24
- }
25
-
26
- &.is-open{
27
- flex: 0 0 20%;
28
-
29
- & + div{
30
- flex: 0 0 80%;
31
- }
32
-
33
- // shrink iframe when there's two panels
34
- & + & + div{
35
- flex: 0 0 60%;
36
- }
37
-
38
- & + &{
39
- border-left: 1px solid #e8e8e8;
40
- }
41
- }
42
- }
43
-
44
- &__question{
45
- background-color: $white;
46
- border-bottom: 1px solid #e8e8e8;
47
-
48
- summary{
49
- @extend .padding-1;
50
-
51
- cursor: pointer;
52
- font-weight: bold;
53
- color: var(--secondary);
54
- transition: background-color .2s ease-in-out;
55
-
56
- &:hover{
57
- background-color: #f4f4f4;
58
- }
59
-
60
- &::after{
61
- counter-increment: question;
62
- content: "#" counter(question);
63
- }
64
-
65
- & ~ *{
66
- padding: 0 1rem 1rem;
67
-
68
- // dynamic content
69
- > :first-child{
70
- font-weight: 600;
71
- line-height: 1.25;
72
- }
73
-
74
- label{
75
- display: flex;
76
- align-items: baseline;
77
- cursor: pointer;
78
- line-height: 1.25;
79
- }
80
-
81
- label + label{
82
- margin-top: $global_margin;
83
- }
84
- // end dynamic content
85
- }
86
- }
87
-
88
- &[open] .meeting-polls__answer--bar > *{
89
- opacity: 1;
90
- transform: translateX(0);
91
- }
92
-
93
- &.is-new{
94
- animation: animateHighlight 5s ease-in-out forwards;
95
- }
96
-
97
- @keyframes animateHighlight{
98
- 0%,
99
- 80%{
100
- background-color: rgba(var(--warning-rgb), .1);
101
- }
102
- }
103
- }
104
-
105
- &__question--admin{
106
- @extend .meeting-polls__question;
107
-
108
- summary ~ *{
109
- border-top: 1px solid #e8e8e8;
110
- background-color: #f6f6f6;
111
- padding: 1rem;
112
-
113
- a{
114
- text-decoration: underline;
115
- margin-bottom: $global_margin;
116
- display: block;
117
- }
118
-
119
- > :first-child{
120
- font-weight: normal;
121
- }
122
- }
123
- }
124
-
125
- &__answer{
126
- display: flex;
127
- align-items: center;
128
-
129
- &--value{
130
- flex: 0 0 15%;
131
- font-weight: bold;
132
- }
133
-
134
- &--bar{
135
- flex: 0 0 85%;
136
- height: 10px;
137
- overflow: hidden;
138
-
139
- > *{
140
- background-color: var(--primary);
141
- height: 100%;
142
- opacity: 0;
143
- }
144
- }
145
- }
146
-
147
- // vertical flow
148
- label + &__answer + label{
149
- margin-top: 1.5 * $global_margin;
150
- }
151
-
152
- &__admin-label{
153
- background-color: #9675ce;
154
- color: $white;
155
- font-weight: bold;
156
- font-size: 14px;
157
- padding: 1rem;
158
- }
159
-
160
- &__admin-action{
161
- border-top: 1px solid #e8e8e8;
162
- padding: .5rem 0;
163
- display: flex;
164
- align-items: center;
165
-
166
- &:last-child{
167
- border-bottom: 1px solid #e8e8e8;
168
- }
169
-
170
- :first-child{
171
- flex: 0 0 40%;
172
- }
173
-
174
- :last-child{
175
- flex: 0 0 60%;
176
- }
177
- }
178
- }
@@ -1,2 +0,0 @@
1
- @import "main";
2
- @import "header";
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Meetings
5
- module Admin
6
- # A class used to find the Invites by their status status.
7
- class Invites < Decidim::Query
8
- # Syntactic sugar to initialize the class and return the queried objects.
9
- #
10
- # invites - the initial Invites relation that needs to be filtered.
11
- # query - query to filter invites
12
- # status - invite status to be used as a filter
13
- def self.for(invites, query = nil, status = nil)
14
- new(invites, query, status).query
15
- end
16
-
17
- # Initializes the class.
18
- #
19
- # invites - the initial Invites relation that need to be filtered
20
- # query - query to filter invites
21
- # status - invite status to be used as a filter
22
- def initialize(invites, query = nil, status = nil)
23
- @invites = invites
24
- @query = query
25
- @status = status
26
- end
27
-
28
- # List the invites by the different filters.
29
- def query
30
- @invites = filter_by_search(@invites)
31
- @invites = filter_by_status(@invites)
32
- @invites
33
- end
34
-
35
- private
36
-
37
- def filter_by_search(invites)
38
- return invites if @query.blank?
39
-
40
- 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(invites)
46
- case @status
47
- when "accepted"
48
- invites.where.not(accepted_at: nil)
49
- when "rejected"
50
- invites.where.not(rejected_at: nil)
51
- when "sent"
52
- invites.where.not(sent_at: nil).where(accepted_at: nil, rejected_at: nil)
53
- else
54
- invites
55
- end
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1 +0,0 @@
1
- <%= cell "decidim/proposals/proposals_picker", current_component %>
@@ -1,34 +0,0 @@
1
- <%= render partial: "decidim/shared/filter_form_help", locals: { skip_to_id: "meetings" } %>
2
-
3
- <%= filter_form_for filter do |form| %>
4
- <div class="filters__section">
5
- <div class="filters__search">
6
- <div class="input-group">
7
- <%= form.search_field :title_or_description_cont, label: false, class: "input-group-field", placeholder: t("decidim.meetings.meetings.filters.search"), title: t("decidim.meetings.meetings.filters.search"), "aria-label": t("decidim.meetings.meetings.filters.search"), data: { disable_dynamic_change: true } %>
8
- <div class="input-group-button">
9
- <button type="submit" class="button" aria-controls="meetings">
10
- <%= icon "magnifying-glass", aria_label: t("decidim.meetings.meetings.filters.search"), role: "img" %>
11
- </button>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
-
17
- <% unless @forced_past_meetings %>
18
- <%= form.collection_radio_buttons :with_any_date, filter_date_values, :first, :last, legend_title: t("decidim.meetings.meetings.filters.date") %>
19
- <% end %>
20
-
21
- <%= form.check_boxes_tree :with_any_type, filter_type_values, legend_title: t("decidim.meetings.meetings.filters.type") %>
22
-
23
- <%= form.check_boxes_tree :with_any_scope, directory_filter_scopes_values, legend_title: t("decidim.meetings.meetings.filters.scope") %>
24
-
25
- <%= form.check_boxes_tree :with_any_global_category, directory_filter_categories_values, legend_title: t("decidim.meetings.meetings.filters.category") %>
26
-
27
- <%= form.check_boxes_tree :with_any_origin, directory_filter_origin_values, legend_title: t("decidim.meetings.meetings.filters.origin") %>
28
-
29
- <%= form.check_boxes_tree :with_any_space, directory_meeting_spaces_values, legend_title: t("decidim.meetings.directory.meetings.index.space_type") %>
30
-
31
- <% if current_user %>
32
- <%= form.collection_radio_buttons :activity, activity_filter_values, :first, :last, { legend_title: t("decidim.meetings.meetings.filters.activity") }, "aria-controls": "meetings" %>
33
- <% end %>
34
- <% end %>
@@ -1,26 +0,0 @@
1
- <% if meetings.length == 0 %>
2
- <div class="callout warning">
3
- <%= t "decidim.meetings.meetings.meetings.no_meetings_warning" %>
4
- </div>
5
- <% else %>
6
- <div class="row medium-up-2">
7
- <div class="column">
8
- <%= render partial: "decidim/shared/results_per_page" %>
9
- </div>
10
- <div class="column">
11
- <%= render partial: "decidim/meetings/calendar_modal", locals: {
12
- path: short_url(
13
- route_name: "calendar",
14
- params: { filter: params.fetch(:filter, {}).try(:to_unsafe_hash) }
15
- )
16
- } %>
17
- </div>
18
- </div>
19
-
20
- <div class="row small-up-1 medium-up-2 card-grid">
21
- <% meetings.each do |meeting| %>
22
- <%= card_for meeting, context: { show_space: true } %>
23
- <% end %>
24
- </div>
25
- <%= decidim_paginate meetings, order_start_time: params[:order_start_time], with_any_scope: params[:with_any_scope] %>
26
- <% end %>
@@ -1 +0,0 @@
1
- <%= cell "decidim/proposals/proposals_picker", current_component %>
@@ -1,26 +0,0 @@
1
- <div class="text-center">
2
- <button class="share-link link text-center" data-open="calendarShare">
3
- <%= t("add_to_calendar", scope: "decidim.meetings.meetings.calendar_modal" ) %>
4
- <%= icon "calendar", class: "icon--after", role: "img", "aria-hidden": true %>
5
- </button>
6
- </div>
7
-
8
- <div class="reveal" id="calendarShare" data-reveal>
9
- <div class="reveal__header">
10
- <h2 class="reveal__title"><%= t("add_to_calendar", scope: "decidim.meetings.meetings.calendar_modal") %></h2>
11
- <button class="close-button" data-close aria-label="<%= t("close_window", scope: "decidim.meetings.meetings.calendar_modal") %>" type="button">
12
- <span aria-hidden="true">&times;</span>
13
- </button>
14
- </div>
15
- <ul>
16
- <li>
17
- <%= link_to t("outlook", scope: "decidim.meetings.meetings.calendar_modal"), ics_url %>
18
- </li>
19
- <li>
20
- <%= link_to t("apple", scope: "decidim.meetings.meetings.calendar_modal"), ics_url %>
21
- </li>
22
- <li>
23
- <%= link_to t("google", scope: "decidim.meetings.meetings.calendar_modal"), google_url, target: "_blank" %>
24
- </li>
25
- </ul>
26
- </div>
@@ -1,40 +0,0 @@
1
- <%= render partial: "decidim/shared/filter_form_help", locals: { skip_to_id: "meetings" } %>
2
-
3
- <%= filter_form_for filter do |form| %>
4
- <div class="filters__section">
5
- <div class="filters__search">
6
- <div class="input-group">
7
- <%= form.search_field :search_text_cont, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), "aria-label": t(".search"), data: { disable_dynamic_change: true } %>
8
- <div class="input-group-button">
9
- <button type="submit" class="button" aria-controls="meetings">
10
- <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
11
- </button>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
-
17
- <%= form.hidden_field "with_availability", value: params.dig("filter", "with_availability") %>
18
-
19
- <% unless @forced_past_meetings %>
20
- <%= form.collection_radio_buttons :with_any_date, filter_date_values, :first, :last, legend_title: t(".date") %>
21
- <% end %>
22
-
23
- <%= form.check_boxes_tree :with_any_type, filter_type_values, legend_title: t(".type") %>
24
-
25
- <% if current_component.has_subscopes? %>
26
- <%= form.check_boxes_tree :with_any_scope, filter_scopes_values, legend_title: t(".scope") %>
27
- <% end %>
28
-
29
- <% if current_component.categories.any? %>
30
- <%= form.check_boxes_tree :with_any_category, filter_categories_values, legend_title: t(".category") %>
31
- <% end %>
32
-
33
- <% if component_settings.creation_enabled_for_participants? %>
34
- <%= form.check_boxes_tree :with_any_origin, filter_origin_values, legend_title: t(".origin") %>
35
- <% end %>
36
-
37
- <% if current_user %>
38
- <%= form.collection_radio_buttons :activity, activity_filter_values, :first, :last, { legend_title: t(".activity") }, "aria-controls": "meetings" %>
39
- <% end %>
40
- <% end %>
@@ -1,18 +0,0 @@
1
- <div class="filters-controls hide-for-mediumlarge">
2
- <button data-open="filter-box" class="filters-controls__trigger" aria-controls="filter-box" aria-haspopup="dialog">
3
- <%= t ".filter" %>
4
- <%= icon "caret-bottom", class: "icon--small float-right", aria_label: t(".unfold"), role: "img" %>
5
- </button>
6
- </div>
7
-
8
- <div class="reveal" id="filter-box" data-reveal role="dialog" aria-modal="true" aria-labelledby="filter-box-label">
9
- <div class="reveal__header">
10
- <h3 id="filter-box-label" class="reveal__title"><%= t ".filter_by" %>:</h3>
11
- <button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
12
- <span aria-hidden="true">&times;</span>
13
- </button>
14
- </div>
15
- <div class="filters">
16
- <%= render partial: "filters", locals: { type: :small } %>
17
- </div>
18
- </div>