decidim-meetings 0.26.2 → 0.26.3

Sign up to get free protection for your applications and to get access to all the features.
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: