decidim-meetings 0.26.2 → 0.26.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26691ea95f69bf432c5fa438182b8ce6a20c897f15821a66dc92670ae76ec0eb
4
- data.tar.gz: 6d5fd46688388abc4c87fbd8869c8bcf4fcf725974f4d1cc27ccea86ecf452a0
3
+ metadata.gz: b48196f783869c2445a9a77fb0165993387afdedc39f68810e2e283b0ac7b6ec
4
+ data.tar.gz: 6a1a0aa182b12070721adf374b69cd60bfd5bb26ee6b414f17091f99f079a145
5
5
  SHA512:
6
- metadata.gz: cb185e7bc69a84b2b5582a8ec5cb0f1619c7687a6c7f7b2c2a6db1a52aff31f1448bef465f14d5be0525f8a145278b21014ceeba0052a528815e0054c75ea837
7
- data.tar.gz: 503ab4fda399ac1a43233b8d55afdff838b4b44f1e25d0d9416975c0f5e11c37379000e4a4d7e30a5c1118e984aed584154be8b9cfdad1bb2190eff21c54ef7b
6
+ metadata.gz: 7a29b8d8ab0101382536ac4c65b1d9e7c40723c5ba29c18a5817bfe60e394b5fc192ed1ce7e119414c67f04e77f4b5de62424e078282af0aa1c5aba04c5a5970
7
+ data.tar.gz: 66e260950f4d2c55964d424c93a97646d534fb12d135afceacefb5523a32718b7f471a145b2f8a2f56f0919ba8b45e5dd23e4333ca632e7fa0fa5dda2b0528d3
@@ -25,7 +25,8 @@ module Decidim
25
25
  return broadcast(:invalid) unless can_join_meeting?
26
26
  return broadcast(:invalid_form) unless registration_form.valid?
27
27
 
28
- answer_questionnaire
28
+ return broadcast(:invalid) if answer_questionnaire == :invalid
29
+
29
30
  create_registration
30
31
  accept_invitation
31
32
  send_email_confirmation
@@ -48,7 +49,15 @@ module Decidim
48
49
  def answer_questionnaire
49
50
  return unless questionnaire?
50
51
 
51
- Decidim::Forms::AnswerQuestionnaire.call(registration_form, user, meeting.questionnaire)
52
+ Decidim::Forms::AnswerQuestionnaire.call(registration_form, user, meeting.questionnaire) do
53
+ on(:ok) do
54
+ return :valid
55
+ end
56
+
57
+ on(:invalid) do
58
+ return :invalid
59
+ end
60
+ end
52
61
  end
53
62
 
54
63
  def create_registration
@@ -25,7 +25,8 @@ module Decidim
25
25
  private
26
26
 
27
27
  def meetings
28
- @meetings ||= paginate(search.results)
28
+ is_past_meetings = params.dig("filter", "date")&.include?("past")
29
+ @meetings ||= paginate(search.results.order(start_time: is_past_meetings ? :desc : :asc))
29
30
  end
30
31
 
31
32
  def search_klass
@@ -108,7 +108,8 @@ module Decidim
108
108
  end
109
109
 
110
110
  def meetings
111
- @meetings ||= paginate(search.results.order(start_time: :desc))
111
+ is_past_meetings = params.dig("filter", "date")&.include?("past")
112
+ @meetings ||= paginate(search.results.order(start_time: is_past_meetings ? :desc : :asc))
112
113
  end
113
114
 
114
115
  def registration
@@ -126,7 +127,7 @@ module Decidim
126
127
  def default_filter_params
127
128
  {
128
129
  search_text: "",
129
- date: %w(upcoming),
130
+ date: "upcoming",
130
131
  activity: "all",
131
132
  scope_id: default_filter_scope_params,
132
133
  category_id: default_filter_category_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
@@ -63,9 +63,12 @@ module Decidim
63
63
  scope :visible_meeting_for, lambda { |user|
64
64
  (all.distinct if user&.admin?) ||
65
65
  if user.present?
66
- spaces = Decidim.participatory_space_registry.manifests.map do |manifest|
66
+ spaces = Decidim.participatory_space_registry.manifests.filter_map do |manifest|
67
+ table_name = manifest.model_class_name.constantize.try(:table_name)
68
+ next if table_name.blank?
69
+
67
70
  {
68
- name: manifest.model_class_name.constantize.table_name.singularize,
71
+ name: table_name.singularize,
69
72
  class_name: manifest.model_class_name
70
73
  }
71
74
  end
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
 
17
17
  <% unless @forced_past_meetings %>
18
- <%= form.check_boxes_tree :date, filter_date_values, legend_title: t("decidim.meetings.meetings.filters.date") %>
18
+ <%= form.collection_radio_buttons :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 :type, filter_type_values, legend_title: t("decidim.meetings.meetings.filters.type") %>
@@ -17,7 +17,7 @@
17
17
  <%= form.hidden_field "state", value: params.dig("filter", "state") %>
18
18
 
19
19
  <% unless @forced_past_meetings %>
20
- <%= form.check_boxes_tree :date, filter_date_values, legend_title: t(".date") %>
20
+ <%= form.collection_radio_buttons :date, filter_date_values, :first, :last, legend_title: t(".date") %>
21
21
  <% end %>
22
22
 
23
23
  <%= form.check_boxes_tree :type, filter_type_values, legend_title: t(".type") %>
@@ -1,12 +1,18 @@
1
1
  var $meetings = $('#meetings');
2
2
  var $meetingsCount = $('#meetings-count');
3
3
 
4
+ // make sure that calendar modal will use the updated filter values
5
+ var $calendarShare = $('#calendarShare');
6
+ $calendarShare.remove();
7
+
4
8
  $meetings.html('<%= j(render partial: "meetings").strip.html_safe %>');
5
9
  $meetingsCount.html('<%= j(render partial: "count").strip.html_safe %>');
6
10
 
7
11
  var $dropdownMenu = $('.dropdown.menu', $meetings);
8
12
  $dropdownMenu.foundation();
9
13
 
14
+ $("#calendarShare").foundation(); // initialize export calendar on the page
15
+
10
16
  var markerData = JSON.parse('<%= escape_javascript meetings_data_for_map(search.results.select(&:geocoded_and_valid?)).to_json.html_safe %>');
11
17
 
12
18
  var $map = $("#map");
@@ -35,7 +35,7 @@ cs:
35
35
  registration_terms: Podmínky registrace
36
36
  registration_url: URL registrace
37
37
  registrations_enabled: Registrace povoleny
38
- show_embedded_iframe: Zobrazit vloženou iframe pro tuto URL
38
+ show_embedded_iframe: Zobrazit vložený iframe pro tuto URL
39
39
  start_time: Čas zahájení
40
40
  title: Název
41
41
  transparent: Transparentní
@@ -164,7 +164,7 @@ cs:
164
164
  meeting_registration_confirmed:
165
165
  notification_title: Vaše registrace pro schůzku <a href="%{resource_url}">%{resource_title}</a> byla potvrzena. Váš registrační kód je %{registration_code}.
166
166
  meeting_registrations_over_percentage:
167
- email_intro: Počet schůzek obsazených schůzem "%{resource_title}" je vyšší než %{percentage}%.
167
+ email_intro: Přidělených míst pro schůzku "%{resource_title}" je více než %{percentage}%.
168
168
  email_outro: Toto oznámení jste obdrželi, protože jste administrátor participačního prostoru schůzky.
169
169
  email_subject: Schůzky obsazené schůzkou "%{resource_title}" jsou nad %{percentage}%
170
170
  notification_title: Počet obsazených slotů <a href="%{resource_path}">%{resource_title}</a> je vyšší než %{percentage}%.
@@ -190,7 +190,7 @@ cs:
190
190
  notification_title: Setkání <a href="%{resource_path}">%{resource_title}</a> bude zahájeno za méně než 48 hodin.
191
191
  forms:
192
192
  meetings:
193
- attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobně, online nebo hybridně.
193
+ attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, ať už osobní, online nebo smíšené.
194
194
  gamification:
195
195
  badges:
196
196
  attended_meetings:
@@ -228,7 +228,7 @@ cs:
228
228
  agenda_item:
229
229
  add_agenda_item_child: Přidání položky agendy dítěte
230
230
  agenda_item: Položka agendy
231
- agenda_item_children: Agenda Item Childs
231
+ agenda_item_children: Dílčí body programu
232
232
  down: Dolů
233
233
  remove: Odstranit
234
234
  up: Nahoru
@@ -23,6 +23,7 @@ de:
23
23
  decidim_user_group_id: Benutzergruppe
24
24
  description: Beschreibung
25
25
  end_time: Endzeit
26
+ id: ID
26
27
  location: Ort
27
28
  location_hints: Standorthinweise
28
29
  online_meeting_url: Online Meeting URL
@@ -34,6 +35,7 @@ de:
34
35
  registration_terms: Registrierungsbedingungen
35
36
  registration_url: Registrierungs-URL
36
37
  registrations_enabled: Registrierungen aktiviert
38
+ show_embedded_iframe: Eingebetteten Iframe für diese URL anzeigen
37
39
  start_time: Startzeit
38
40
  title: Titel
39
41
  transparent: Transparent
@@ -71,6 +73,13 @@ de:
71
73
  admin:
72
74
  filters:
73
75
  meetings:
76
+ category_id_eq:
77
+ label: Kategorie
78
+ closed_at_present:
79
+ label: Status
80
+ values:
81
+ 'false': Offen
82
+ 'true': Geschlossen
74
83
  is_upcoming_true:
75
84
  label: Datum
76
85
  values:
@@ -87,6 +96,7 @@ de:
87
96
  type_eq:
88
97
  label: Art des Treffens
89
98
  values:
99
+ hybrid: Hybrid
90
100
  in_person: Persönlich
91
101
  online: Online
92
102
  meeting_copies:
@@ -100,6 +110,7 @@ de:
100
110
  components:
101
111
  meetings:
102
112
  actions:
113
+ comment: Kommentar
103
114
  join: Beitreten
104
115
  name: Meetings
105
116
  settings:
@@ -110,6 +121,7 @@ de:
110
121
  creation_enabled_for_participants: Teilnehmer können Besprechungen erstellen
111
122
  default_registration_terms: Standard-Registrierungsbedingungen
112
123
  enable_pads_creation: Aktivieren Sie die Pads-Erstellung
124
+ maps_enabled: Karten aktiviert
113
125
  registration_code_enabled: Registrierungscode aktiviert
114
126
  resources_permissions_enabled: Aktionsberechtigungen können für jedes Meeting festgelegt werden
115
127
  scope_id: Bereich
@@ -134,6 +146,7 @@ de:
134
146
  email_subject: Die Sitzung "%{resource_title}" wurde geschlossen
135
147
  notification_title: Die Sitzung <a href="%{resource_path}">%{resource_title}</a> wurde geschlossen.
136
148
  meeting_created:
149
+ button_text: Für das Treffen anmelden
137
150
  email_intro: Die Sitzung "%{resource_title}" wurde zu "%{participatory_space_title}" hinzugefügt, welchem Sie folgen.
138
151
  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.
139
152
  email_subject: Neue Sitzung zu %{participatory_space_title} hinzugefügt
@@ -165,6 +178,9 @@ de:
165
178
  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.
166
179
  email_subject: Die Sitzung "%{resource_title}" beginnt in weniger als 48 Stunden.
167
180
  notification_title: Die Sitzung <a href="%{resource_path}">%{resource_title}</a> beginnt in weniger als 48 Stunden.
181
+ forms:
182
+ meetings:
183
+ 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.
168
184
  gamification:
169
185
  badges:
170
186
  attended_meetings:
@@ -190,6 +206,7 @@ de:
190
206
  proposals_count:
191
207
  one: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschlag mit dieser verbunden ist:'
192
208
  other: 'Die Besprechung kann nicht gelöscht werden, da %{count} Vorschläge mit dieser verbunden sind:'
209
+ manage_poll: Umfrage verwalten
193
210
  new: Neue Sitzung
194
211
  preview: Vorschau
195
212
  registrations: Anmeldungen
@@ -226,6 +243,7 @@ de:
226
243
  invalid: Beim Aktualisieren dieser Agenda ist ein Problem aufgetreten
227
244
  success: Agenda erfolgreich aktualisiert
228
245
  exports:
246
+ answers: Antworten
229
247
  meeting_comments: Kommentare
230
248
  meetings: Treffen
231
249
  registrations: Anmeldungen
@@ -260,6 +278,9 @@ de:
260
278
  edit:
261
279
  close: Schließen
262
280
  title: Sitzung beenden
281
+ meeting_copies:
282
+ form:
283
+ select_a_meeting_type: Bitte eine Meeting-Typ auswählen
263
284
  meetings:
264
285
  close:
265
286
  invalid: Beim Schließen dieses Meetings ist ein Problem aufgetreten
@@ -312,6 +333,9 @@ de:
312
333
  update:
313
334
  invalid: Beim Aktualisieren dieses Meetings ist ein Problem aufgetreten
314
335
  success: Sitzung erfolgreich aktualisiert
336
+ meetings_poll:
337
+ form:
338
+ title: Fragebogen für %{questionnaire_for} bearbeiten
315
339
  models:
316
340
  meeting:
317
341
  name: Treffen
@@ -410,6 +434,8 @@ de:
410
434
  apple: Zu Apple Kalender hinzufügen
411
435
  close_window: Fenster schließen
412
436
  full_details_html: Für alle Details gehen Sie zu %{link}
437
+ google: Zum Google-Kalender hinzufügen
438
+ outlook: Zum Outlook-Kalender hinzufügen
413
439
  count:
414
440
  meetings_count:
415
441
  one: "%{count} Besprechung"
@@ -442,6 +468,7 @@ de:
442
468
  type: Art
443
469
  type_values:
444
470
  all: Alle
471
+ hybrid: Hybrid
445
472
  in_person: Persönlich
446
473
  online: Online
447
474
  filters_small_view:
@@ -463,7 +490,10 @@ de:
463
490
  select_a_registration_type: Bitte wählen Sie eine Registrierungsart aus
464
491
  show_embedded_iframe_help: Nur wenige Dienste erlauben das Einbetten einer Veranstaltung oder eines Livestreams (Youtube, Twitch und Jitsi)
465
492
  index:
493
+ click_here: Alle Treffen anzeigen
466
494
  new_meeting: Neue Besprechung
495
+ see_all: Alle Treffen anzeigen
496
+ see_all_withdrawn: Alle zurückgezogenen Treffen ansehen
467
497
  meeting_minutes:
468
498
  related_information: Zugehörige Informationen
469
499
  meetings:
@@ -487,6 +517,9 @@ de:
487
517
  join: Tritt dem Treffen bei
488
518
  leave: Registrierung stornieren
489
519
  leave_confirmation: Sind Sie sicher dass Sie Ihre Registrierung für diese Sitzung stornieren möchten?
520
+ link_available_soon: Link in Kürze verfügbar
521
+ link_closed: Der Link, um an dem Treffen teilzunehmen, wird einige Minuten vor dem Start verfügbar sein
522
+ live_event: Dieses Meeting findet gerade statt
490
523
  meeting_minutes: Sitzungsprotokolle
491
524
  no_slots_available: Keine Steckplätze verfügbar
492
525
  organizations: Teilnahme an Organisationen
@@ -498,6 +531,9 @@ de:
498
531
  one: "%{count} Slot bleibt übrig"
499
532
  other: "Noch %{count} Slots"
500
533
  view: Anzeigen
534
+ visit_finished: Vergangene Treffen anzeigen
535
+ 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.
536
+ withdraw_meeting: Treffen zurückziehen
501
537
  update:
502
538
  invalid: Beim Aktualisieren der Besprechung ist ein Fehler aufgetreten.
503
539
  success: Sie haben die Sitzung erfolgreich aktualisiert.
@@ -518,15 +554,32 @@ de:
518
554
  fields:
519
555
  closed: Geschlossen
520
556
  end_time: Endtermin
557
+ id: ID
521
558
  map: Karte
522
559
  official_meeting: Offizielle Besprechung
523
560
  start_time: Anfangsdatum
524
561
  title: Titel
525
562
  polls:
526
563
  questions:
564
+ index:
565
+ empty_questions: Während dieses Treffens werden einige Fragen gesendet und Sie werden sie beantworten können. Sie werden hier angezeigt.
566
+ index_admin:
567
+ admin_dashboard: Administrations-Dashboard
568
+ edit: Im Adminbereich bearbeiten
569
+ question: Frage
570
+ received_answer: Antwort erhalten
571
+ received_answers: erhaltene Antworten
572
+ results: Ergebnisse
573
+ send: Senden
574
+ sent: Gesendet
527
575
  published_question:
576
+ max_choices_alert: Es wurden zu viele Auswahlmöglichkeiten ausgewählt
528
577
  question: Frage
529
578
  question_replied: Frage beantwortet
579
+ public_participants_list:
580
+ hidden_participants_count:
581
+ one: und %{count} weitere Person
582
+ other: und %{count} weitere Personen
530
583
  read_more: "(Weiterlesen)"
531
584
  registration_mailer:
532
585
  confirmation:
@@ -548,14 +601,17 @@ de:
548
601
  invalid: Beim Verlassen dieses Meetings ist ein Problem aufgetreten.
549
602
  success: Sie haben das Meeting erfolgreich verlassen.
550
603
  type_of_meeting:
604
+ hybrid: Hybrid
551
605
  in_person: In Person
552
606
  online: Online
553
607
  types:
554
608
  private_meeting: Private Sitzung
555
609
  transparent: Transparent
610
+ withdraw: Zurückgezogen
556
611
  versions:
557
612
  back_to_resource: Zurück zur Besprechung
558
613
  withdraw:
614
+ error: Beim Zurückziehen des Meetings ist ein Fehler aufgetreten
559
615
  success: Das Meeting wurde erfolgreich zurückgezogen
560
616
  metrics:
561
617
  meetings:
@@ -618,7 +618,7 @@ es-MX:
618
618
  invalid: Ha habido un problema al salir de esta encuentro.
619
619
  success: Has salido del encuentro con éxito.
620
620
  type_of_meeting:
621
- hybrid: Hibrida
621
+ hybrid: Híbrido
622
622
  in_person: Presencial
623
623
  online: En línea
624
624
  types:
@@ -618,7 +618,7 @@ es-PY:
618
618
  invalid: Ha habido un problema al salir de esta encuentro.
619
619
  success: Has salido del encuentro con éxito.
620
620
  type_of_meeting:
621
- hybrid: Hibrida
621
+ hybrid: Híbrido
622
622
  in_person: Presencial
623
623
  online: En línea
624
624
  types:
@@ -618,7 +618,7 @@ es:
618
618
  invalid: Se ha producido un error al salir de este encuentro.
619
619
  success: Has salido del encuentro con éxito.
620
620
  type_of_meeting:
621
- hybrid: Hibrida
621
+ hybrid: Híbrido
622
622
  in_person: Presencial
623
623
  online: En línea
624
624
  types: