decidim-meetings 0.26.1 → 0.26.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
  3. data/app/commands/decidim/meetings/admin/update_meeting.rb +1 -1
  4. data/app/commands/decidim/meetings/create_meeting.rb +2 -1
  5. data/app/commands/decidim/meetings/join_meeting.rb +11 -2
  6. data/app/commands/decidim/meetings/update_meeting.rb +1 -1
  7. data/app/controllers/decidim/meetings/directory/meetings_controller.rb +2 -1
  8. data/app/controllers/decidim/meetings/meetings_controller.rb +4 -3
  9. data/app/forms/decidim/meetings/admin/meeting_form.rb +0 -4
  10. data/app/helpers/decidim/meetings/application_helper.rb +24 -8
  11. data/app/helpers/decidim/meetings/directory/application_helper.rb +5 -7
  12. data/app/jobs/decidim/meetings/upcoming_meeting_notification_job.rb +4 -1
  13. data/app/models/decidim/meetings/agenda_item.rb +1 -1
  14. data/app/models/decidim/meetings/meeting.rb +5 -2
  15. data/app/packs/src/decidim/meetings/admin/meetings_form.js +1 -1
  16. data/app/presenters/decidim/meetings/meeting_presenter.rb +9 -0
  17. data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +1 -1
  18. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -0
  19. data/app/views/decidim/meetings/meetings/_filters.html.erb +1 -1
  20. data/app/views/decidim/meetings/meetings/index.js.erb +6 -0
  21. data/config/locales/ar.yml +12 -0
  22. data/config/locales/ca.yml +7 -7
  23. data/config/locales/cs.yml +9 -9
  24. data/config/locales/de.yml +59 -3
  25. data/config/locales/en.yml +6 -6
  26. data/config/locales/es-MX.yml +7 -7
  27. data/config/locales/es-PY.yml +5 -5
  28. data/config/locales/es.yml +7 -7
  29. data/config/locales/eu.yml +0 -8
  30. data/config/locales/fi-plain.yml +5 -5
  31. data/config/locales/fi.yml +5 -5
  32. data/config/locales/fr-CA.yml +3 -3
  33. data/config/locales/fr.yml +11 -11
  34. data/config/locales/ga-IE.yml +0 -4
  35. data/config/locales/hu.yml +145 -0
  36. data/config/locales/it.yml +0 -8
  37. data/config/locales/ja.yml +1 -1
  38. data/config/locales/lb.yml +0 -1
  39. data/config/locales/lt.yml +674 -0
  40. data/config/locales/nl.yml +78 -53
  41. data/config/locales/no.yml +0 -6
  42. data/config/locales/oc-FR.yml +1 -0
  43. data/config/locales/pl.yml +3 -4
  44. data/config/locales/pt-BR.yml +0 -4
  45. data/config/locales/pt.yml +0 -8
  46. data/config/locales/ro-RO.yml +0 -8
  47. data/config/locales/sv.yml +4 -8
  48. data/config/locales/tr-TR.yml +0 -3
  49. data/db/migrate/20210512100333_drop_decidim_meetings_minutes_table.rb +1 -0
  50. data/lib/decidim/content_parsers/meeting_parser.rb +20 -0
  51. data/lib/decidim/content_renderers/meeting_renderer.rb +17 -0
  52. data/lib/decidim/meetings/component.rb +4 -4
  53. data/lib/decidim/meetings/engine.rb +6 -0
  54. data/lib/decidim/meetings/version.rb +1 -1
  55. data/lib/decidim/meetings.rb +8 -0
  56. metadata +17 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9e68d252396f00c0349451ad1fc9d8b060fb66be5f1c6940a778e3dfa5bbf9d1
4
- data.tar.gz: 9b8cf933f00544fea3fb7cbb8961afcf5ec9fea099bf3efcb329d6f88386c388
3
+ metadata.gz: b48196f783869c2445a9a77fb0165993387afdedc39f68810e2e283b0ac7b6ec
4
+ data.tar.gz: 6a1a0aa182b12070721adf374b69cd60bfd5bb26ee6b414f17091f99f079a145
5
5
  SHA512:
6
- metadata.gz: fd546f8b6ce3f8a0d431974d84638102b2196ff7b9f9e91045fedfaad285546eb20f6e8e458c8988bd837d7fb9605ea99dbb83c45b6064b94b8c8ae653de9728
7
- data.tar.gz: 206ac13a27ed35a22e9ef8e94bbe1b659a71f3dc0555b213d834c05098f63b50d4368dc822ed8af24e8814a80de92a81db5e3c4f8388e17b336df111f37ff714
6
+ metadata.gz: 7a29b8d8ab0101382536ac4c65b1d9e7c40723c5ba29c18a5817bfe60e394b5fc192ed1ce7e119414c67f04e77f4b5de62424e078282af0aa1c5aba04c5a5970
7
+ data.tar.gz: 66e260950f4d2c55964d424c93a97646d534fb12d135afceacefb5523a32718b7f471a145b2f8a2f56f0919ba8b45e5dd23e4333ca632e7fa0fa5dda2b0528d3
@@ -31,7 +31,7 @@ module Decidim
31
31
 
32
32
  def create_meeting!
33
33
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
34
- parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
34
+ parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
35
35
  params = {
36
36
  scope: form.scope,
37
37
  category: form.category,
@@ -37,7 +37,7 @@ module Decidim
37
37
 
38
38
  def update_meeting!
39
39
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
40
- parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
40
+ parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
41
41
 
42
42
  Decidim.traceability.update!(
43
43
  meeting,
@@ -31,7 +31,8 @@ module Decidim
31
31
 
32
32
  def create_meeting!
33
33
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
34
- parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
34
+ parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
35
+
35
36
  params = {
36
37
  scope: form.scope,
37
38
  category: form.category,
@@ -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
@@ -37,7 +37,7 @@ module Decidim
37
37
 
38
38
  def update_meeting!
39
39
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
40
- parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
40
+ parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
41
41
 
42
42
  Decidim.traceability.update!(
43
43
  meeting,
@@ -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
@@ -104,11 +104,12 @@ module Decidim
104
104
  private
105
105
 
106
106
  def meeting
107
- @meeting ||= Meeting.not_hidden.where(component: current_component).find(params[:id])
107
+ @meeting ||= Meeting.not_hidden.where(component: current_component).find_by(id: params[:id])
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,
@@ -58,10 +58,6 @@ module Decidim
58
58
  end
59
59
 
60
60
  self.decidim_category_id = model.categorization.decidim_category_id if model.categorization
61
- presenter = MeetingPresenter.new(model)
62
-
63
- self.title = presenter.title(all_locales: title.is_a?(Hash))
64
- self.description = presenter.description(all_locales: description.is_a?(Hash))
65
61
  self.type_of_meeting = model.type_of_meeting
66
62
  end
67
63
 
@@ -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.
@@ -67,7 +65,25 @@ module Decidim
67
65
 
68
66
  # If the content is safe, HTML tags are sanitized, otherwise, they are stripped.
69
67
  def render_meeting_body(meeting)
70
- render_sanitized_content(meeting, :description)
68
+ Decidim::ContentProcessor.render(render_sanitized_content(meeting, :description), "div")
69
+ end
70
+
71
+ def prevent_timeout_seconds
72
+ return 0 unless respond_to?(:meeting)
73
+ return 0 if !current_user || !meeting || !meeting.live?
74
+ return 0 unless online_or_hybrid_meeting?(meeting)
75
+ return 0 unless iframe_embed_or_live_event_page?(meeting)
76
+ return 0 unless meeting.iframe_access_level_allowed_for_user?(current_user)
77
+
78
+ (meeting.end_time - Time.current).to_i
79
+ end
80
+
81
+ def online_or_hybrid_meeting?(meeting)
82
+ meeting.online_meeting? || meeting.hybrid_meeting?
83
+ end
84
+
85
+ def iframe_embed_or_live_event_page?(meeting)
86
+ %w(embed_in_meeting_page open_in_live_event_page).include? meeting.iframe_embed_type
71
87
  end
72
88
  end
73
89
  end
@@ -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
@@ -7,7 +7,10 @@ module Decidim
7
7
 
8
8
  def perform(meeting_id, checksum)
9
9
  meeting = Decidim::Meetings::Meeting.find(meeting_id)
10
- send_notification(meeting) if verify_checksum(meeting, checksum)
10
+ return if meeting.hidden? || meeting.withdrawn?
11
+ return unless verify_checksum(meeting, checksum)
12
+
13
+ send_notification(meeting)
11
14
  end
12
15
 
13
16
  def self.generate_checksum(meeting)
@@ -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
@@ -118,7 +118,7 @@ $(() => {
118
118
  toggleDependsOnSelect($target, $meetingRegistrationUrl, "on_different_platform");
119
119
  });
120
120
 
121
- $meetingRegistrationType.trigger("change");
121
+ toggleDependsOnSelect($meetingRegistrationType, $meetingRegistrationUrl, "on_different_platform");
122
122
 
123
123
  const $meetingTypeOfMeeting = $form.find("#meeting_type_of_meeting");
124
124
  const $meetingOnlineFields = $form.find(".field[data-meeting-type='online']");
@@ -7,12 +7,21 @@ module Decidim
7
7
  #
8
8
  class MeetingPresenter < Decidim::ResourcePresenter
9
9
  include Decidim::ResourceHelper
10
+ include ActionView::Helpers::UrlHelper
10
11
  include Decidim::SanitizeHelper
11
12
 
12
13
  def meeting
13
14
  __getobj__
14
15
  end
15
16
 
17
+ def meeting_path
18
+ Decidim::ResourceLocatorPresenter.new(meeting).path
19
+ end
20
+
21
+ def display_mention
22
+ link_to title, meeting_path
23
+ end
24
+
16
25
  def title(links: false, html_escape: false, all_locales: false)
17
26
  return unless meeting
18
27
 
@@ -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") %>
@@ -8,6 +8,7 @@
8
8
  </head>
9
9
 
10
10
  <body>
11
+ <%= render partial: "layouts/decidim/timeout_modal" %>
11
12
  <header class="meeting-polls__header">
12
13
  <% if current_user && poll %>
13
14
  <div class="flex--cc">
@@ -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");
@@ -76,6 +76,14 @@ ar:
76
76
  meetings:
77
77
  category_id_eq:
78
78
  label: الفئة
79
+ origin_eq:
80
+ values:
81
+ citizen: المواطن
82
+ user_group: مجموعات المستخدمين
83
+ type_eq:
84
+ label: نوع الاجتماع
85
+ values:
86
+ in_person: وجهًا لوجه
79
87
  meeting_copies:
80
88
  create:
81
89
  error: كانت هناك مشكلة في تكرار هذا الاجتماع.
@@ -243,6 +251,8 @@ ar:
243
251
  success: تم حذف الاجتماع بنجاح
244
252
  edit:
245
253
  update: تحديث
254
+ form:
255
+ registration_email_help: سيظهر هذا النص في منتصف البريد الإلكتروني الخاص بتأكيد التسجيل مباشرة بعد رمز التسجيل.
246
256
  index:
247
257
  title: اجتماعات
248
258
  new:
@@ -334,6 +344,8 @@ ar:
334
344
  filters:
335
345
  category: الفئة
336
346
  date: تاريخ
347
+ origin_values:
348
+ citizens: المواطنون
337
349
  search: بحث
338
350
  filters_small_view:
339
351
  close_modal: إغلاق مشروط
@@ -100,7 +100,7 @@ ca:
100
100
  type_eq:
101
101
  label: Tipus de trobada
102
102
  values:
103
- hybrid: Ambdues
103
+ hybrid: Híbrida
104
104
  in_person: Presencial
105
105
  online: En línia
106
106
  meeting_copies:
@@ -184,7 +184,7 @@ ca:
184
184
  notification_title: La trobada <a href="%{resource_path}">%{resource_title}</a> començarà en menys de 48 hores.
185
185
  forms:
186
186
  meetings:
187
- attendees_count_help_text: No oblidis incloure el nombre total d'assistents a la teva trobada, ja sigui presencial, en línia o híbrida.
187
+ attendees_count_help_text: No t'oblidis d'afegir el número total d'assistents a la trobada, sigui presencial, en línia o híbrida.
188
188
  gamification:
189
189
  badges:
190
190
  attended_meetings:
@@ -476,7 +476,7 @@ ca:
476
476
  type: Tipus
477
477
  type_values:
478
478
  all: Totes
479
- hybrid: Ambdues
479
+ hybrid: Híbrida
480
480
  in_person: Presencial
481
481
  online: En línia
482
482
  filters_small_view:
@@ -525,11 +525,11 @@ ca:
525
525
  edit_close_meeting: Editeu l'informe de la reunió
526
526
  edit_meeting: Editar la trobada
527
527
  going: T'has inscrit en aquesta trobada
528
- join: Inscriu-te a la trobada
528
+ join: Unir-se a la trobada
529
529
  leave: Cancel·la la teva inscripció
530
530
  leave_confirmation: Segur que vols cancel·lar la teva inscripció a aquesta trobada?
531
531
  link_available_soon: Enllaç disponible pròximament
532
- link_closed: L'enllaç a la trobada estarà disponible uns minuts abans de que comenci
532
+ link_closed: L'enllaç a la sala de videoconferència estarà disponible uns minuts abans que comenci
533
533
  live_event: Aquesta trobada està succeint ara mateix
534
534
  meeting_minutes: Acta de la trobada
535
535
  micro_camera_permissions_warning: Quan facis clic en el botó de sota, se't demanaran permisos per al micròfon i/o la càmera, i t'uniràs a la videoconferència
@@ -567,7 +567,7 @@ ca:
567
567
  fields:
568
568
  closed: Tancada
569
569
  end_time: Data de finalització
570
- id: Id
570
+ id: ID
571
571
  map: Mapa
572
572
  official_meeting: Trobada oficial
573
573
  start_time: Data d'inici
@@ -618,7 +618,7 @@ ca:
618
618
  invalid: S'ha produït un error en abandonar aquesta trobada.
619
619
  success: Has abandonat la trobada amb èxit.
620
620
  type_of_meeting:
621
- hybrid: Ambdues
621
+ hybrid: Híbrida
622
622
  in_person: Presencial
623
623
  online: Online
624
624
  types:
@@ -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í
@@ -106,7 +106,7 @@ cs:
106
106
  type_eq:
107
107
  label: Typ schůzky
108
108
  values:
109
- hybrid: Obojí
109
+ hybrid: Hybridní
110
110
  in_person: Osobně
111
111
  online: Online
112
112
  meeting_copies:
@@ -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ů vaší akce. jde o osobní, kombinovanou nebo on-line, je důležité, abychom věděli, kolik lidí je zapojeno.
193
+ attendees_count_help_text: Nezapomeňte uvést celkový počet účastníků na vaší schůzce, 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
@@ -490,7 +490,7 @@ cs:
490
490
  type: Typ
491
491
  type_values:
492
492
  all: Vše
493
- hybrid: Obojí
493
+ hybrid: Hybridní
494
494
  in_person: Osobně
495
495
  online: Online
496
496
  filters_small_view:
@@ -583,7 +583,7 @@ cs:
583
583
  fields:
584
584
  closed: Zavřeno
585
585
  end_time: Datum ukončení
586
- id: Id
586
+ id: ID
587
587
  map: Mapa
588
588
  official_meeting: Oficiální schůzka
589
589
  start_time: Datum zahájení
@@ -596,7 +596,7 @@ cs:
596
596
  empty_questions: Během této schůzky budou zaslány některé dotazy a vy na ně budete moci odpovědět. Zobrazí se zde.
597
597
  index_admin:
598
598
  admin_dashboard: Řídicí panel administrace
599
- edit: Upravit v administraci
599
+ edit: Upravit v panelu administrace
600
600
  question: Otázka
601
601
  received_answer: přijatá odpověď
602
602
  received_answers: přijaté odpovědi
@@ -636,7 +636,7 @@ cs:
636
636
  invalid: Při setkání došlo k problému.
637
637
  success: Zasedání jste úspěšně opustili.
638
638
  type_of_meeting:
639
- hybrid: Obojí
639
+ hybrid: Hybridní
640
640
  in_person: Osobně
641
641
  online: Online
642
642
  types: