decidim-meetings 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.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +32 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +21 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +10 -13
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +2 -2
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +8 -18
- data/app/cells/decidim/meetings/dates_and_map/show.erb +25 -0
- data/app/cells/decidim/meetings/dates_and_map/static_map.erb +1 -0
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +35 -0
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +32 -30
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +76 -16
- data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +25 -0
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +4 -0
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +6 -4
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +3 -7
- data/app/cells/decidim/meetings/meeting_activity_cell.rb +1 -12
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +64 -0
- data/app/cells/decidim/meetings/meeting_cell.rb +2 -6
- data/app/cells/decidim/meetings/meeting_l/image.erb +5 -0
- data/app/cells/decidim/meetings/meeting_l_cell.rb +33 -0
- data/app/cells/decidim/meetings/meeting_month/show.erb +33 -0
- data/app/cells/decidim/meetings/meeting_month_cell.rb +72 -0
- data/app/cells/decidim/meetings/meeting_s_cell.rb +5 -37
- data/app/cells/decidim/meetings/meetings_map/show.erb +9 -24
- data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/online_meeting_cell.rb +1 -0
- data/app/cells/decidim/meetings/online_meeting_link/show.erb +18 -41
- data/app/cells/decidim/meetings/public_participants_list/show.erb +4 -15
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/admin/publish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/create_meeting.rb +14 -3
- data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
- data/app/commands/decidim/meetings/join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/update_meeting.rb +13 -3
- data/app/controllers/concerns/decidim/meetings/component_filterable.rb +4 -4
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -4
- data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +7 -7
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +4 -4
- data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -6
- data/app/controllers/decidim/meetings/application_controller.rb +11 -0
- data/app/controllers/decidim/meetings/calendars_controller.rb +0 -1
- data/app/controllers/decidim/meetings/directory/application_controller.rb +12 -0
- data/app/controllers/decidim/meetings/directory/meetings_controller.rb +5 -30
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -0
- data/app/controllers/decidim/meetings/meeting_closes_controller.rb +2 -3
- data/app/controllers/decidim/meetings/meetings_controller.rb +75 -7
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +2 -2
- data/app/controllers/decidim/meetings/polls/questions_controller.rb +1 -1
- data/app/controllers/decidim/meetings/registrations_controller.rb +5 -5
- data/app/events/decidim/meetings/close_meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registration_notification_event.rb +3 -3
- data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +1 -1
- data/app/events/decidim/meetings/registration_code_validated_event.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +5 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
- data/app/forms/decidim/meetings/admin/validate_registration_code_form.rb +1 -1
- data/app/forms/decidim/meetings/base_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/meeting_form.rb +3 -3
- data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/meetings/application_helper.rb +18 -25
- data/app/helpers/decidim/meetings/directory/application_helper.rb +11 -59
- data/app/helpers/decidim/meetings/map_helper.rb +2 -9
- data/app/helpers/decidim/meetings/meetings_helper.rb +6 -5
- data/app/jobs/decidim/meetings/hide_all_created_by_author_job.rb +13 -0
- data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
- data/app/mailers/decidim/meetings/registration_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +11 -32
- data/app/models/decidim/meetings/question.rb +1 -1
- data/app/packs/entrypoints/decidim_meetings.js +3 -0
- data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg +42 -1
- data/app/packs/src/decidim/meetings/admin/agendas.js +3 -4
- data/app/packs/src/decidim/meetings/admin/registrations_form.js +12 -4
- data/app/packs/src/decidim/meetings/meetings_form.js +1 -1
- data/app/packs/src/decidim/meetings/poll.component.js +1 -28
- data/app/packs/stylesheets/decidim/meetings/_calendar.scss +47 -0
- data/app/packs/stylesheets/decidim/meetings/_item.scss +177 -0
- data/app/packs/stylesheets/decidim/meetings/_list.scss +58 -0
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +128 -0
- data/app/packs/stylesheets/decidim/meetings/meetings.scss +4 -0
- data/app/permissions/decidim/meetings/permissions.rb +15 -12
- data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +6 -2
- data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
- data/app/presenters/decidim/meetings/log/resource_presenter.rb +18 -0
- data/app/presenters/decidim/meetings/meeting_presenter.rb +8 -2
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +7 -13
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +1 -1
- data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -21
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +12 -12
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +8 -8
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +54 -50
- data/app/views/decidim/meetings/admin/agenda/edit.html.erb +18 -6
- data/app/views/decidim/meetings/admin/agenda/new.html.erb +17 -5
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +11 -2
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +38 -28
- data/app/views/decidim/meetings/admin/invites/index.html.erb +77 -81
- data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +26 -28
- data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +17 -5
- data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +17 -6
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +76 -83
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +14 -10
- data/app/views/decidim/meetings/admin/meetings/_services.html.erb +9 -5
- data/app/views/decidim/meetings/admin/meetings/edit.html.erb +17 -7
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +133 -129
- data/app/views/decidim/meetings/admin/meetings/new.html.erb +16 -6
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +17 -32
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +81 -75
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +28 -8
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +32 -55
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +59 -26
- data/app/views/decidim/meetings/directory/meetings/index.html.erb +15 -20
- data/app/views/decidim/meetings/directory/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/layouts/_aside_block.html.erb +8 -0
- data/app/views/decidim/meetings/layouts/live_event.html.erb +20 -19
- data/app/views/decidim/meetings/live_events/show.html.erb +4 -5
- data/app/views/decidim/meetings/meeting_closes/_form.html.erb +3 -10
- data/app/views/decidim/meetings/meeting_closes/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/_actions.html.erb +6 -0
- data/app/views/decidim/meetings/meetings/_add_to_calendar_modal.html.erb +17 -0
- data/app/views/decidim/meetings/meetings/_form.html.erb +26 -34
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +3 -22
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +74 -0
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +28 -26
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +98 -0
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +23 -36
- data/app/views/decidim/meetings/meetings/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/index.html.erb +15 -33
- data/app/views/decidim/meetings/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/meetings/new.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/show.html.erb +8 -167
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +9 -13
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -4
- data/app/views/decidim/meetings/polls/answers/create.js.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +5 -5
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +9 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +1 -1
- data/app/views/decidim/meetings/shared/_filters.html.erb +20 -0
- data/app/views/decidim/meetings/shared/_index.html.erb +24 -0
- data/app/views/decidim/meetings/shared/_index.js.erb +16 -0
- data/app/views/decidim/meetings/shared/_meetings.html.erb +33 -0
- data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +18 -0
- data/app/views/decidim/meetings/versions/show.html.erb +14 -4
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +13 -15
- data/config/assets.rb +0 -2
- data/config/locales/ar.yml +6 -94
- data/config/locales/bg.yml +0 -673
- data/config/locales/ca.yml +52 -75
- data/config/locales/cs.yml +48 -71
- data/config/locales/de.yml +53 -76
- data/config/locales/el.yml +48 -51
- data/config/locales/en.yml +51 -74
- data/config/locales/es-MX.yml +50 -73
- data/config/locales/es-PY.yml +48 -71
- data/config/locales/es.yml +53 -76
- data/config/locales/eu.yml +53 -76
- data/config/locales/fi-plain.yml +46 -69
- data/config/locales/fi.yml +44 -67
- data/config/locales/fr-CA.yml +43 -69
- data/config/locales/fr.yml +48 -71
- data/config/locales/ga-IE.yml +2 -16
- data/config/locales/gl.yml +5 -63
- data/config/locales/hu.yml +6 -92
- data/config/locales/id-ID.yml +4 -60
- data/config/locales/is-IS.yml +1 -22
- data/config/locales/it.yml +6 -86
- data/config/locales/ja.yml +45 -74
- data/config/locales/lb.yml +6 -67
- data/config/locales/lt.yml +42 -65
- data/config/locales/lv.yml +4 -61
- data/config/locales/nl.yml +4 -92
- data/config/locales/no.yml +4 -80
- data/config/locales/pl.yml +2 -199
- data/config/locales/pt-BR.yml +4 -200
- data/config/locales/pt.yml +5 -85
- data/config/locales/ro-RO.yml +11 -81
- data/config/locales/ru.yml +5 -60
- data/config/locales/sk.yml +4 -61
- data/config/locales/sl.yml +0 -3
- data/config/locales/sr-CS.yml +0 -6
- data/config/locales/sv.yml +14 -94
- data/config/locales/tr-TR.yml +5 -78
- data/config/locales/uk.yml +5 -53
- data/config/locales/zh-CN.yml +3 -70
- data/config/locales/zh-TW.yml +24 -51
- data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
- data/db/migrate/20230427105701_change_types_and_registration_types_on_meetings.rb +49 -0
- data/lib/decidim/meetings/admin_engine.rb +2 -2
- data/lib/decidim/meetings/component.rb +4 -216
- data/lib/decidim/meetings/content_blocks/registry_manager.rb +17 -0
- data/lib/decidim/meetings/directory_engine.rb +4 -6
- data/lib/decidim/meetings/engine.rb +62 -27
- data/lib/decidim/meetings/meeting_serializer.rb +3 -3
- data/lib/decidim/meetings/seeds.rb +188 -0
- data/lib/decidim/meetings/test/factories.rb +124 -54
- data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
- data/lib/decidim/meetings/test/translated_event.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +58 -58
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +0 -16
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +0 -1
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +0 -26
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +0 -63
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +0 -31
- data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +0 -21
- data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +0 -10
- data/app/cells/decidim/meetings/meeting_list_item/show.erb +0 -14
- data/app/cells/decidim/meetings/meeting_list_item_cell.rb +0 -44
- data/app/cells/decidim/meetings/meeting_m/address.erb +0 -5
- data/app/cells/decidim/meetings/meeting_m/data.erb +0 -2
- data/app/cells/decidim/meetings/meeting_m/date.erb +0 -8
- data/app/cells/decidim/meetings/meeting_m/footer.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +0 -17
- data/app/cells/decidim/meetings/meeting_m/single_date.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/tags.erb +0 -1
- data/app/cells/decidim/meetings/meeting_m_cell.rb +0 -121
- data/app/cells/decidim/meetings/meeting_s/show.erb +0 -27
- data/app/controllers/concerns/decidim/meetings/filterable.rb +0 -27
- data/app/controllers/decidim/meetings/widgets_controller.rb +0 -30
- data/app/packs/stylesheets/decidim/meetings/_header.scss +0 -52
- data/app/packs/stylesheets/decidim/meetings/_main.scss +0 -178
- data/app/packs/stylesheets/decidim/meetings/_meetings.scss +0 -2
- data/app/queries/decidim/meetings/admin/invites.rb +0 -60
- data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +0 -34
- data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +0 -26
- data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +0 -26
- data/app/views/decidim/meetings/meetings/_filters.html.erb +0 -40
- data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +0 -18
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +0 -48
- data/app/views/decidim/meetings/versions/index.html.erb +0 -8
- data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +0 -4
- data/config/locales/he-IL.yml +0 -1
- data/decidim-meetings.gemspec +0 -36
- 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
|
-
|
15
|
-
<%= l start_date, format: :decidim_with_month_name %>
|
16
|
-
-
|
17
|
-
<%= formatted_start_time %>
|
18
|
-
</time>
|
19
|
-
<span class="column medium-8">
|
20
|
-
<%= participatory_space_class_name %>
|
21
|
-
|
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,30 +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
|
-
def show
|
10
|
-
enforce_permission_to :embed, :meeting, meeting: model if model
|
11
|
-
|
12
|
-
super
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def model
|
18
|
-
@model ||= Meeting.except_withdrawn.published.not_hidden.where(component: current_component).find(params[:meeting_id])
|
19
|
-
end
|
20
|
-
|
21
|
-
def iframe_url
|
22
|
-
@iframe_url ||= meeting_widget_url(model)
|
23
|
-
end
|
24
|
-
|
25
|
-
def permission_class_chain
|
26
|
-
[Decidim::Meetings::Permissions]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
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,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">×</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">×</span>
|
13
|
-
</button>
|
14
|
-
</div>
|
15
|
-
<div class="filters">
|
16
|
-
<%= render partial: "filters", locals: { type: :small } %>
|
17
|
-
</div>
|
18
|
-
</div>
|