decidim-meetings 0.27.0.rc1 → 0.27.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +2 -1
  3. data/app/controllers/decidim/meetings/meetings_controller.rb +3 -2
  4. data/app/helpers/decidim/meetings/application_helper.rb +5 -7
  5. data/app/helpers/decidim/meetings/directory/application_helper.rb +5 -7
  6. data/app/models/decidim/meetings/agenda_item.rb +1 -1
  7. data/app/models/decidim/meetings/meeting.rb +5 -2
  8. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +9 -9
  9. data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +1 -1
  10. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -1
  11. data/app/views/decidim/meetings/meetings/_filters.html.erb +1 -1
  12. data/config/locales/am-ET.yml +0 -1
  13. data/config/locales/cs.yml +1 -1
  14. data/config/locales/da.yml +0 -1
  15. data/config/locales/de.yml +66 -0
  16. data/config/locales/eo.yml +0 -1
  17. data/config/locales/et.yml +0 -1
  18. data/config/locales/fr-CA.yml +2 -0
  19. data/config/locales/fr.yml +2 -0
  20. data/config/locales/hr.yml +0 -1
  21. data/config/locales/hu.yml +151 -0
  22. data/config/locales/ko.yml +0 -1
  23. data/config/locales/lt.yml +687 -0
  24. data/config/locales/mt.yml +0 -1
  25. data/config/locales/nl.yml +100 -47
  26. data/config/locales/om-ET.yml +0 -1
  27. data/config/locales/pl.yml +1 -1
  28. data/config/locales/pt-BR.yml +1 -1
  29. data/config/locales/si-LK.yml +0 -1
  30. data/config/locales/so-SO.yml +0 -1
  31. data/config/locales/sw-KE.yml +0 -1
  32. data/config/locales/ti-ER.yml +0 -1
  33. data/config/locales/val-ES.yml +0 -1
  34. data/config/locales/vi.yml +0 -1
  35. data/config/locales/zh-TW.yml +0 -1
  36. data/lib/decidim/meetings/component.rb +2 -2
  37. data/lib/decidim/meetings/version.rb +1 -1
  38. metadata +14 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2e4b36460093e94bb94d1ce24af9b4de7a2d01249442d756fec1205d3424365
4
- data.tar.gz: f26624e63578541e587f75b91a7db9e8b510494d60cbfa14509e1b83d27bfc3f
3
+ metadata.gz: 27a158b5c9a9dec97373dfc3ec0d72e08921ea0d9e1403416cf686a008fe392e
4
+ data.tar.gz: 94090d3db90607fd599dc45bc61825ee1561cd20b2242143b2b0098d73740138
5
5
  SHA512:
6
- metadata.gz: 113676fde0b436b66b9c1763168805aafacf2a3c722bb34dfa47ef18280c5ecfefff5502945349b133db82ddddb15ea76da60d92baceba6bc986ffdceeb818e7
7
- data.tar.gz: 5189a4a63c6cad6c1d4789bfdb0605c7ec41ae5bee5ed9808a3ad9f8c473bce7d266fc4b6053841bdb9b68007dde984646ee63743ba1566ae78c62e27f112845
6
+ metadata.gz: fca8eabda9f4e26bf77f4021a9f4ab74de63da59118b76d997089f8a87ec84e81f678f69b89be07e354724165ca2a19b1015d943b87e21de2328580a5672bb72
7
+ data.tar.gz: 15c6907d0cad955e13c2dc93a540bdb6eb5707b7617aa3d5c5671a369c6133c99f4719248e71cc6b35b1ed24c1417dace9c424111ed666ce605a2e237ed858a4
@@ -26,7 +26,8 @@ module Decidim
26
26
  private
27
27
 
28
28
  def meetings
29
- @meetings ||= paginate(search.result)
29
+ is_past_meetings = params.dig("filter", "with_any_date")&.include?("past")
30
+ @meetings ||= paginate(search.result.order(start_time: is_past_meetings ? :desc : :asc))
30
31
  end
31
32
 
32
33
  def search_collection
@@ -109,7 +109,8 @@ module Decidim
109
109
  end
110
110
 
111
111
  def meetings
112
- @meetings ||= paginate(search.result.order(start_time: :desc))
112
+ is_past_meetings = params.dig("filter", "with_any_date")&.include?("past")
113
+ @meetings ||= paginate(search.result.order(start_time: is_past_meetings ? :desc : :asc))
113
114
  end
114
115
 
115
116
  def registration
@@ -132,7 +133,7 @@ module Decidim
132
133
  def default_filter_params
133
134
  {
134
135
  search_text_cont: "",
135
- with_any_date: %w(upcoming),
136
+ with_any_date: "upcoming",
136
137
  activity: "all",
137
138
  with_availability: "",
138
139
  with_any_scope: default_filter_scope_params,
@@ -41,13 +41,11 @@ module Decidim
41
41
  end
42
42
 
43
43
  def filter_date_values
44
- TreeNode.new(
45
- TreePoint.new("", t("decidim.meetings.meetings.filters.date_values.all")),
46
- [
47
- TreePoint.new("upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")),
48
- TreePoint.new("past", t("decidim.meetings.meetings.filters.date_values.past"))
49
- ]
50
- )
44
+ [
45
+ ["all", t("decidim.meetings.meetings.filters.date_values.all")],
46
+ ["upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")],
47
+ ["past", t("decidim.meetings.meetings.filters.date_values.past")]
48
+ ]
51
49
  end
52
50
 
53
51
  # Options to filter meetings by activity.
@@ -27,13 +27,11 @@ module Decidim
27
27
  end
28
28
 
29
29
  def filter_date_values
30
- TreeNode.new(
31
- TreePoint.new("", t("decidim.meetings.meetings.filters.date_values.all")),
32
- [
33
- TreePoint.new("upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")),
34
- TreePoint.new("past", t("decidim.meetings.meetings.filters.date_values.past"))
35
- ]
36
- )
30
+ [
31
+ ["all", t("decidim.meetings.meetings.filters.date_values.all")],
32
+ ["upcoming", t("decidim.meetings.meetings.filters.date_values.upcoming")],
33
+ ["past", t("decidim.meetings.meetings.filters.date_values.past")]
34
+ ]
37
35
  end
38
36
 
39
37
  def directory_filter_scopes_values
@@ -11,7 +11,7 @@ module Decidim
11
11
 
12
12
  translatable_fields :title, :description
13
13
 
14
- belongs_to :agenda, -> { order(:position) }, foreign_key: "decidim_agenda_id", class_name: "Decidim::Meetings::Agenda"
14
+ belongs_to :agenda, foreign_key: "decidim_agenda_id", class_name: "Decidim::Meetings::Agenda"
15
15
 
16
16
  has_many :agenda_item_children, foreign_key: "parent_id", class_name: "Decidim::Meetings::AgendaItem", inverse_of: :parent, dependent: :destroy
17
17
  belongs_to :parent, class_name: "Decidim::Meetings::AgendaItem", inverse_of: :agenda_item_children, optional: true
@@ -82,9 +82,12 @@ module Decidim
82
82
  scope :visible_for, lambda { |user|
83
83
  (all.distinct if user&.admin?) ||
84
84
  if user.present?
85
- spaces = Decidim.participatory_space_registry.manifests.map do |manifest|
85
+ spaces = Decidim.participatory_space_registry.manifests.filter_map do |manifest|
86
+ table_name = manifest.model_class_name.constantize.try(:table_name)
87
+ next if table_name.blank?
88
+
86
89
  {
87
- name: manifest.model_class_name.constantize.table_name.singularize,
90
+ name: table_name.singularize,
88
91
  class_name: manifest.model_class_name
89
92
  }
90
93
  end
@@ -36,15 +36,15 @@ module Decidim
36
36
  def embed_code(request_host)
37
37
  return nil if parsed_online_meeting_uri.nil?
38
38
 
39
- %(
40
- <div
41
- class="disabled-iframe"
42
- allow="camera; microphone; fullscreen; display-capture; autoplay"
43
- loading="lazy"
44
- src="#{embed_transformed_url(request_host)}"
45
- style="height: 100%; width: 100%; border: 0px;"
46
- ></div>
47
- )
39
+ <<~HTML
40
+ <div class="disabled-iframe">
41
+ <!-- <iframe
42
+ allow="camera; microphone; fullscreen; display-capture; autoplay"
43
+ loading="lazy"
44
+ src="#{embed_transformed_url(request_host)}"
45
+ style="height: 100%; width: 100%; border: 0px;"></iframe> -->
46
+ </div>
47
+ HTML
48
48
  end
49
49
 
50
50
  private
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
 
17
17
  <% unless @forced_past_meetings %>
18
- <%= form.check_boxes_tree :with_any_date, filter_date_values, legend_title: t("decidim.meetings.meetings.filters.date") %>
18
+ <%= form.collection_radio_buttons :with_any_date, filter_date_values, :first, :last, legend_title: t("decidim.meetings.meetings.filters.date") %>
19
19
  <% end %>
20
20
 
21
21
  <%= form.check_boxes_tree :with_any_type, filter_type_values, legend_title: t("decidim.meetings.meetings.filters.type") %>
@@ -7,7 +7,7 @@
7
7
 
8
8
  <body>
9
9
  <%= render partial: "layouts/decidim/timeout_modal" %>
10
- <%= render partial: "layouts/decidim/cookie_warning" %>
10
+ <%= render partial: "layouts/decidim/data_consent_warning" %>
11
11
  <%= cell("decidim/data_consent", current_organization) %>
12
12
 
13
13
  <header class="meeting-polls__header">
@@ -17,7 +17,7 @@
17
17
  <%= form.hidden_field "with_availability", value: params.dig("filter", "with_availability") %>
18
18
 
19
19
  <% unless @forced_past_meetings %>
20
- <%= form.check_boxes_tree :with_any_date, filter_date_values, legend_title: t(".date") %>
20
+ <%= form.collection_radio_buttons :with_any_date, filter_date_values, :first, :last, legend_title: t(".date") %>
21
21
  <% end %>
22
22
 
23
23
  <%= form.check_boxes_tree :with_any_type, filter_type_values, legend_title: t(".type") %>
@@ -1,2 +1 @@
1
- ---
2
1
  am:
@@ -191,7 +191,7 @@ cs:
191
191
  notification_title: Setkání <a href="%{resource_path}">%{resource_title}</a> bude zahájeno za méně než 48 hodin.
192
192
  forms:
193
193
  meetings:
194
- attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobně, online nebo hybridně.
194
+ attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobní, online nebo smíšené.
195
195
  gamification:
196
196
  badges:
197
197
  attended_meetings:
@@ -1,2 +1 @@
1
- ---
2
1
  da:
@@ -24,6 +24,7 @@ de:
24
24
  decidim_user_group_id: Benutzergruppe
25
25
  description: Beschreibung
26
26
  end_time: Endzeit
27
+ id: ID
27
28
  location: Ort
28
29
  location_hints: Standorthinweise
29
30
  online_meeting_url: Online Meeting URL
@@ -35,6 +36,7 @@ de:
35
36
  registration_terms: Registrierungsbedingungen
36
37
  registration_url: Registrierungs-URL
37
38
  registrations_enabled: Registrierungen aktiviert
39
+ show_embedded_iframe: Eingebetteten Iframe für diese URL anzeigen
38
40
  start_time: Startzeit
39
41
  title: Titel
40
42
  transparent: Transparent
@@ -72,6 +74,13 @@ de:
72
74
  admin:
73
75
  filters:
74
76
  meetings:
77
+ category_id_eq:
78
+ label: Kategorie
79
+ closed_at_present:
80
+ label: Status
81
+ values:
82
+ 'false': Offen
83
+ 'true': Geschlossen
75
84
  is_upcoming_true:
76
85
  label: Datum
77
86
  values:
@@ -80,12 +89,17 @@ de:
80
89
  scope_id_eq:
81
90
  label: Umfang
82
91
  with_any_origin:
92
+ label: Ursprung
83
93
  values:
94
+ official: Offiziell
95
+ participants: Teilnehmer
84
96
  user_group: Benutzergruppen
85
97
  with_any_type:
86
98
  label: Art des Treffens
87
99
  values:
100
+ hybrid: Hybrid
88
101
  in_person: Persönlich
102
+ online: Online
89
103
  meeting_copies:
90
104
  create:
91
105
  error: Es gab einen Fehler beim Duplizieren dieses Meetings.
@@ -97,6 +111,7 @@ de:
97
111
  components:
98
112
  meetings:
99
113
  actions:
114
+ comment: Kommentar
100
115
  join: Beitreten
101
116
  name: Meetings
102
117
  settings:
@@ -107,6 +122,7 @@ de:
107
122
  creation_enabled_for_participants: Teilnehmer können Besprechungen erstellen
108
123
  default_registration_terms: Standard-Registrierungsbedingungen
109
124
  enable_pads_creation: Aktivieren Sie die Pads-Erstellung
125
+ maps_enabled: Karten aktiviert
110
126
  registration_code_enabled: Registrierungscode aktiviert
111
127
  resources_permissions_enabled: Aktionsberechtigungen können für jedes Meeting festgelegt werden
112
128
  scope_id: Bereich
@@ -131,6 +147,7 @@ de:
131
147
  email_subject: Die Sitzung "%{resource_title}" wurde geschlossen
132
148
  notification_title: Die Sitzung <a href="%{resource_path}">%{resource_title}</a> wurde geschlossen.
133
149
  meeting_created:
150
+ button_text: Für das Treffen anmelden
134
151
  email_intro: Die Sitzung "%{resource_title}" wurde zu "%{participatory_space_title}" hinzugefügt, welchem Sie folgen.
135
152
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie "%{participatory_space_title}" folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link.
136
153
  email_subject: Neue Sitzung zu %{participatory_space_title} hinzugefügt
@@ -162,6 +179,9 @@ de:
162
179
  email_outro: Sie haben diese Benachrichtigung erhalten, weil Sie der Sitzung "%{resource_title}" folgen. Falls Sie keine solchen Benachrichtigungen mehr erhalten möchten, besuchen Sie den obigen Link.
163
180
  email_subject: Die Sitzung "%{resource_title}" beginnt in weniger als 48 Stunden.
164
181
  notification_title: Die Sitzung <a href="%{resource_path}">%{resource_title}</a> beginnt in weniger als 48 Stunden.
182
+ forms:
183
+ meetings:
184
+ attendees_count_help_text: Vergessen Sie nicht, die Gesamtzahl der Teilnehmer an Ihrem Meeting anzugeben, egal ob dies persönlich, online oder hybrid stattgefunden hat.
165
185
  gamification:
166
186
  badges:
167
187
  attended_meetings:
@@ -187,6 +207,7 @@ de:
187
207
  proposals_count:
188
208
  one: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschlag mit dieser verbunden ist:'
189
209
  other: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschläge mit dieser verbunden sind:'
210
+ manage_poll: Umfrage verwalten
190
211
  new: Neue Sitzung
191
212
  preview: Vorschau
192
213
  registrations: Anmeldungen
@@ -223,6 +244,7 @@ de:
223
244
  invalid: Beim Aktualisieren dieser Agenda ist ein Problem aufgetreten
224
245
  success: Agenda erfolgreich aktualisiert
225
246
  exports:
247
+ answers: Antworten
226
248
  meeting_comments: Kommentare
227
249
  meetings: Treffen
228
250
  registrations: Anmeldungen
@@ -257,6 +279,9 @@ de:
257
279
  edit:
258
280
  close: Schließen
259
281
  title: Sitzung beenden
282
+ meeting_copies:
283
+ form:
284
+ select_a_meeting_type: Bitte eine Meeting-Typ auswählen
260
285
  meetings:
261
286
  close:
262
287
  invalid: Beim Schließen dieses Meetings ist ein Problem aufgetreten
@@ -306,6 +331,9 @@ de:
306
331
  update:
307
332
  invalid: Beim Aktualisieren dieses Meetings ist ein Problem aufgetreten
308
333
  success: Sitzung erfolgreich aktualisiert
334
+ meetings_poll:
335
+ form:
336
+ title: Fragebogen für %{questionnaire_for} bearbeiten
309
337
  models:
310
338
  meeting:
311
339
  name: Treffen
@@ -357,10 +385,15 @@ de:
357
385
  calendar_url: Kalender-URL
358
386
  close_window: Fenster schließen
359
387
  copy_calendar_url: Kopieren
388
+ copy_calendar_url_clarification: Kalender-URL in Zwischenablage kopieren
360
389
  copy_calendar_url_copied: Kopiert!
361
390
  copy_calendar_url_description: Sie können alle veröffentlichten Meetings in Ihrer Kalenderanwendung oder bei Ihrem Kalender-Anbieter sehen. Kopieren und fügen Sie diese URL mit der Option "Neuen Kalender von einer URL hinzufügen" in Ihren Kalender ein.
362
391
  copy_calendar_url_explanation: Bitte beachten Sie, dass Sie eine Auswahl von Meetings exportieren, da es aktive Filter gibt. Wenn Sie alle exportieren möchten, setzen Sie zuerst alle Filter zurück.
392
+ copy_calendar_url_message: Die URL wurde erfolgreich in die Zwischenablage kopiert.
363
393
  export_calendar: Kalender exportieren
394
+ close_meeting_reminder_mailer:
395
+ close_meeting_reminder:
396
+ hello: Hallo %{username},
364
397
  conference_venues: Tagungsstätten
365
398
  content_blocks:
366
399
  upcoming_meetings:
@@ -409,6 +442,8 @@ de:
409
442
  apple: Zu Apple Kalender hinzufügen
410
443
  close_window: Fenster schließen
411
444
  full_details_html: Für alle Details gehen Sie zu %{link}
445
+ google: Zum Google-Kalender hinzufügen
446
+ outlook: Zum Outlook-Kalender hinzufügen
412
447
  count:
413
448
  meetings_count:
414
449
  one: "%{count} Besprechung"
@@ -434,12 +469,14 @@ de:
434
469
  origin_values:
435
470
  all: Alle
436
471
  official: Offiziell
472
+ participants: Teilnehmer
437
473
  user_groups: Gruppen
438
474
  scope: Umfang
439
475
  search: Suche
440
476
  type: Art
441
477
  type_values:
442
478
  all: Alle
479
+ hybrid: Hybrid
443
480
  in_person: Persönlich
444
481
  online: Online
445
482
  filters_small_view:
@@ -460,7 +497,10 @@ de:
460
497
  select_a_meeting_type: Bitte eine Meeting-Art auswählen
461
498
  select_a_registration_type: Bitte wählen Sie eine Registrierungsart aus
462
499
  index:
500
+ click_here: Alle Treffen anzeigen
463
501
  new_meeting: Neue Besprechung
502
+ see_all: Alle Treffen anzeigen
503
+ see_all_withdrawn: Alle zurückgezogenen Treffen ansehen
464
504
  meeting_minutes:
465
505
  related_information: Zugehörige Informationen
466
506
  meetings:
@@ -484,6 +524,9 @@ de:
484
524
  join: Tritt dem Treffen bei
485
525
  leave: Registrierung stornieren
486
526
  leave_confirmation: Sind Sie sicher dass Sie Ihre Registrierung für diese Sitzung stornieren möchten?
527
+ link_available_soon: Link in Kürze verfügbar
528
+ link_closed: Der Link, um an dem Treffen teilzunehmen, wird einige Minuten vor dem Start verfügbar sein
529
+ live_event: Dieses Meeting findet gerade statt
487
530
  meeting_minutes: Sitzungsprotokolle
488
531
  no_slots_available: Keine Steckplätze verfügbar
489
532
  organizations: Teilnahme an Organisationen
@@ -495,6 +538,9 @@ de:
495
538
  one: "%{count} Slot bleibt übrig"
496
539
  other: "Noch %{count} Slots"
497
540
  view: Anzeigen
541
+ visit_finished: Vergangene Treffen anzeigen
542
+ withdraw_btn_hint: Sie können Ihr Treffen zurückziehen, wenn Sie Ihre Meinung ändern. Das Meeting wird nicht gelöscht, es wird in der Liste der zurückgezogenen Meetings angezeigt.
543
+ withdraw_meeting: Treffen zurückziehen
498
544
  update:
499
545
  invalid: Beim Aktualisieren der Besprechung ist ein Fehler aufgetreten.
500
546
  success: Sie haben die Sitzung erfolgreich aktualisiert.
@@ -515,15 +561,32 @@ de:
515
561
  fields:
516
562
  closed: Geschlossen
517
563
  end_time: Endtermin
564
+ id: ID
518
565
  map: Karte
519
566
  official_meeting: Offizielle Besprechung
520
567
  start_time: Anfangsdatum
521
568
  title: Titel
522
569
  polls:
523
570
  questions:
571
+ index:
572
+ empty_questions: Während dieses Treffens werden einige Fragen gesendet und Sie werden sie beantworten können. Sie werden hier angezeigt.
573
+ index_admin:
574
+ admin_dashboard: Administrations-Dashboard
575
+ edit: Im Adminbereich bearbeiten
576
+ question: Frage
577
+ received_answer: Antwort erhalten
578
+ received_answers: erhaltene Antworten
579
+ results: Ergebnisse
580
+ send: Senden
581
+ sent: Gesendet
524
582
  published_question:
583
+ max_choices_alert: Es wurden zu viele Auswahlmöglichkeiten ausgewählt
525
584
  question: Frage
526
585
  question_replied: Frage beantwortet
586
+ public_participants_list:
587
+ hidden_participants_count:
588
+ one: und %{count} weitere Person
589
+ other: und %{count} weitere Personen
527
590
  read_more: "(Weiterlesen)"
528
591
  registration_mailer:
529
592
  confirmation:
@@ -545,14 +608,17 @@ de:
545
608
  invalid: Beim Verlassen dieses Meetings ist ein Problem aufgetreten.
546
609
  success: Sie haben das Meeting erfolgreich verlassen.
547
610
  type_of_meeting:
611
+ hybrid: Hybrid
548
612
  in_person: In Person
549
613
  online: Online
550
614
  types:
551
615
  private_meeting: Private Sitzung
552
616
  transparent: Transparent
617
+ withdraw: Zurückgezogen
553
618
  versions:
554
619
  back_to_resource: Zurück zur Besprechung
555
620
  withdraw:
621
+ error: Beim Zurückziehen des Meetings ist ein Fehler aufgetreten
556
622
  success: Das Meeting wurde erfolgreich zurückgezogen
557
623
  metrics:
558
624
  meetings:
@@ -1,2 +1 @@
1
- ---
2
1
  eo:
@@ -1,2 +1 @@
1
- ---
2
1
  et:
@@ -383,6 +383,8 @@ fr-CA:
383
383
  value_types:
384
384
  organizer_presenter:
385
385
  not_found: 'L''organisateur n''a pas été trouvé dans la base de données (ID: %{id})'
386
+ questionnaire:
387
+ update: "%{user_name} a mis à jour le questionnaire pour la réunion %{meeting_name}"
386
388
  application_helper:
387
389
  filter_category_values:
388
390
  all: Tous
@@ -383,6 +383,8 @@ fr:
383
383
  value_types:
384
384
  organizer_presenter:
385
385
  not_found: 'L''organisateur n''a pas été trouvé dans la base de données (ID: %{id})'
386
+ questionnaire:
387
+ update: "%{user_name} a mis à jour le questionnaire pour la réunion %{meeting_name}"
386
388
  application_helper:
387
389
  filter_category_values:
388
390
  all: Tout
@@ -1,2 +1 @@
1
- ---
2
1
  hr: