decidim-meetings 0.21.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/decidim_meetings_manifest.js +1 -0
  3. data/app/assets/images/decidim/gamification/badges/attended_meetings.svg +1 -106
  4. data/app/assets/images/decidim/meetings/icon.svg +1 -5
  5. data/app/assets/javascripts/decidim/meetings/admin/destroy_meeting_alert.js.es6 +16 -0
  6. data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +7 -7
  7. data/app/cells/decidim/meetings/join_meeting_button/show.erb +2 -2
  8. data/app/cells/decidim/meetings/meeting_cell.rb +2 -1
  9. data/app/cells/decidim/meetings/meeting_list_item/show.erb +3 -3
  10. data/app/cells/decidim/meetings/meeting_list_item_cell.rb +1 -1
  11. data/app/cells/decidim/meetings/meeting_m/date.erb +1 -1
  12. data/app/cells/decidim/meetings/meeting_m/footer.erb +1 -1
  13. data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +1 -1
  14. data/app/cells/decidim/meetings/meeting_m_cell.rb +2 -2
  15. data/app/cells/decidim/meetings/meeting_s/show.erb +6 -6
  16. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +6 -1
  17. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -0
  18. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +10 -0
  19. data/app/forms/decidim/meetings/admin/close_meeting_form.rb +7 -1
  20. data/app/helpers/decidim/meetings/application_helper.rb +1 -0
  21. data/app/helpers/decidim/meetings/map_helper.rb +2 -1
  22. data/app/helpers/decidim/meetings/meetings_helper.rb +1 -1
  23. data/app/models/decidim/meetings/meeting.rb +11 -0
  24. data/app/presenters/decidim/meetings/meeting_presenter.rb +14 -3
  25. data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +2 -8
  26. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
  27. data/app/views/decidim/meetings/_calendar_modal.html.erb +4 -4
  28. data/app/views/decidim/meetings/admin/invites/index.html.erb +2 -2
  29. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +1 -6
  30. data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +1 -0
  31. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +1 -1
  32. data/app/views/decidim/meetings/admin/meetings/index.html.erb +18 -1
  33. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +4 -0
  34. data/app/views/decidim/meetings/directory/meetings/index.html.erb +5 -3
  35. data/app/views/decidim/meetings/meetings/_filters.html.erb +12 -4
  36. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +2 -2
  37. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  38. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +8 -8
  39. data/app/views/decidim/meetings/meetings/index.html.erb +1 -1
  40. data/app/views/decidim/meetings/meetings/show.html.erb +13 -4
  41. data/app/views/decidim/participatory_processes/participatory_process_groups/_meeting.html.erb +2 -2
  42. data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +1 -1
  43. data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +1 -3
  44. data/config/locales/bg-BG.yml +29 -0
  45. data/config/locales/ca.yml +11 -0
  46. data/config/locales/cs.yml +15 -0
  47. data/config/locales/da-DK.yml +1 -0
  48. data/config/locales/de.yml +15 -0
  49. data/config/locales/el.yml +453 -0
  50. data/config/locales/en.yml +12 -1
  51. data/config/locales/es-MX.yml +13 -2
  52. data/config/locales/es-PY.yml +13 -2
  53. data/config/locales/es.yml +12 -1
  54. data/config/locales/et-EE.yml +1 -0
  55. data/config/locales/eu.yml +2 -2
  56. data/config/locales/fi-plain.yml +11 -0
  57. data/config/locales/fi.yml +39 -28
  58. data/config/locales/fr-CA.yml +454 -0
  59. data/config/locales/fr.yml +3 -0
  60. data/config/locales/ga-IE.yml +1 -0
  61. data/config/locales/hr-HR.yml +1 -0
  62. data/config/locales/hu.yml +11 -2
  63. data/config/locales/is-IS.yml +0 -2
  64. data/config/locales/it.yml +12 -1
  65. data/config/locales/ja-JP.yml +455 -0
  66. data/config/locales/lt-LT.yml +1 -0
  67. data/config/locales/lv-LV.yml +452 -0
  68. data/config/locales/mt-MT.yml +1 -0
  69. data/config/locales/nl.yml +5 -2
  70. data/config/locales/no.yml +1 -1
  71. data/config/locales/pl.yml +20 -1
  72. data/config/locales/pt-BR.yml +1 -1
  73. data/config/locales/pt.yml +186 -171
  74. data/config/locales/ro-RO.yml +459 -0
  75. data/config/locales/sk-SK.yml +463 -0
  76. data/config/locales/sk.yml +463 -0
  77. data/config/locales/sl.yml +10 -0
  78. data/config/locales/sr-CS.yml +13 -0
  79. data/config/locales/sv.yml +11 -5
  80. data/config/locales/uk.yml +0 -2
  81. data/db/migrate/20200320105922_index_foreign_keys_in_decidim_meetings_registrations.rb +7 -0
  82. data/lib/decidim/meetings/admin_engine.rb +3 -1
  83. data/lib/decidim/meetings/engine.rb +0 -4
  84. data/lib/decidim/meetings/seeds/city.jpeg +0 -0
  85. data/lib/decidim/meetings/version.rb +1 -1
  86. data/lib/tasks/decidim_meetings.rake +16 -0
  87. metadata +41 -16
@@ -9,9 +9,6 @@ module Decidim
9
9
  end
10
10
 
11
11
  def save
12
- return @registry if @registry
13
-
14
- @registry = []
15
12
  cumulative.each do |key, cumulative_value|
16
13
  next if cumulative_value.zero?
17
14
 
@@ -21,10 +18,8 @@ module Decidim
21
18
  organization: @organization, decidim_category_id: category_id,
22
19
  participatory_space_type: space_type, participatory_space_id: space_id)
23
20
  record.assign_attributes(cumulative: cumulative_value, quantity: quantity_value)
24
- @registry << record
21
+ record.save!
25
22
  end
26
- @registry.each(&:save!)
27
- @registry
28
23
  end
29
24
 
30
25
  private
@@ -35,8 +30,7 @@ module Decidim
35
30
  spaces = Decidim.participatory_space_manifests.flat_map do |manifest|
36
31
  manifest.participatory_spaces.call(@organization).public_spaces
37
32
  end
38
- components = Decidim::Component.where(participatory_space: spaces).published
39
- @query = Decidim::Meetings::Meeting.where(component: components).joins(:component)
33
+ @query = Decidim::Meetings::Meeting.where(component: visible_component_ids_from_spaces(spaces)).joins(:component)
40
34
  .left_outer_joins(:category).visible
41
35
  @query = @query.where("decidim_meetings_meetings.created_at <= ?", end_time)
42
36
  @query = @query.group("decidim_categorizations.decidim_category_id",
@@ -39,7 +39,7 @@ module Decidim
39
39
  @event.dtstart = Icalendar::Values::DateTime.new(meeting.start_time.utc, "tzid" => "UTC")
40
40
  @event.dtend = Icalendar::Values::DateTime.new(meeting.end_time.utc, "tzid" => "UTC")
41
41
  @event.summary = present(meeting).title
42
- @event.description = strip_tags(present(meeting).description)
42
+ @event.description = strip_tags(CGI.unescapeHTML(present(meeting).description))
43
43
  @event.location = meeting.address
44
44
  @event.geo = [meeting.latitude, meeting.longitude]
45
45
  @event.url = url_for(meeting)
@@ -1,13 +1,13 @@
1
- <button class="button button--title secondary light share-link text-center calendar" data-open="calendarShare">
1
+ <button class="button button--title share-link text-center calendar" data-open="calendarShare">
2
2
  <%= t(".export_calendar") %>
3
- <%= icon "share", class: "icon--after" %>
3
+ <%= icon "share", class: "icon--after", role: "img", "aria-hidden": true %>
4
4
  </button>
5
5
  <div class="reveal" id="calendarShare" data-reveal>
6
6
  <div class="reveal__header">
7
- <h3 class="reveal__title"><%= t(".calendar_url") %>:</h3>
7
+ <h2 class="reveal__title"><%= t(".calendar_url") %>:</h2>
8
8
  <button class="close-button" data-close aria-label="<%= t(".close_window") %>" type="button">
9
9
  <span aria-hidden="true">&times;</span>
10
10
  </button>
11
11
  </div>
12
- <input type="text" value="<%= "#{path}" %>" readonly>
12
+ <input type="text" value="<%= "#{path}" %>" readonly title="<%= t(".calendar_url") %>">
13
13
  </div>
@@ -45,8 +45,8 @@
45
45
  <%= search_field_tag :q, @query,label: false, class: "input-group-field", placeholder: t(".search") %>
46
46
  <%= hidden_field_tag :state, @state %>
47
47
  <div class="input-group-button">
48
- <button type="submit" class="button button--muted">
49
- <%= icon "magnifying-glass", aria_label: t(".search") %>
48
+ <button type="submit" class="button">
49
+ <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
50
50
  </button>
51
51
  </div>
52
52
  </div>
@@ -22,12 +22,7 @@
22
22
  </div>
23
23
  </div>
24
24
  <div class="row column">
25
- <% if @form.proposals %>
26
- <%= form.select :proposal_ids,
27
- @form.proposals.order(title: :asc).map{|proposal| [decidim_html_escape(present(proposal).title), proposal.id]},
28
- { include_blank: true },
29
- { multiple: true, class: "chosen-select" } %>
30
- <% end %>
25
+ <%= proposals_picker(form, :proposals, proposals_picker_meeting_meeting_closes_path(meeting)) %>
31
26
  </div>
32
27
  </div>
33
28
  </div>
@@ -0,0 +1 @@
1
+ <%= cell "decidim/proposals/proposals_picker", current_component %>
@@ -43,7 +43,7 @@
43
43
  <% end %>
44
44
 
45
45
  <div class="columns xlarge-6">
46
- <%= form.categories_select :decidim_category_id, current_participatory_space.categories, prompt: "", disable_parents: false %>
46
+ <%= form.categories_select :decidim_category_id, current_participatory_space.categories, include_blank: "", disable_parents: false %>
47
47
  </div>
48
48
  </div>
49
49
 
@@ -77,7 +77,22 @@
77
77
  <%= resource_permissions_link(meeting) %>
78
78
 
79
79
  <% if allowed_to? :destroy, :meeting, meeting: meeting %>
80
- <%= icon_link_to "circle-x", meeting_path(meeting), t("actions.destroy", scope: "decidim.meetings"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.meetings") } %>
80
+ <% if present(meeting).authored_proposals.empty? %>
81
+ <%= icon_link_to "circle-x", meeting_path(meeting), t("actions.destroy", scope: "decidim.meetings"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.meetings") } %>
82
+ <% else %>
83
+ <%=
84
+ content_tag(:button,
85
+ class: ["action-icon", "action-icon--remove", "destroy-meeting-alert"],
86
+ "data-invalid-destroy-message" => t("actions.invalid_destroy.proposals_count", count: present(meeting).authored_proposals.size, scope: "decidim.meetings"),
87
+ "data-proposal-titles" => present(meeting).formatted_proposals_titles) do
88
+ content_tag(:span,
89
+ data: { tooltip: true, disable_hover: false, click_open: false },
90
+ title: t("actions.destroy", scope: "decidim.meetings")) do
91
+ icon("circle-x")
92
+ end
93
+ end
94
+ %>
95
+ <% end %>
81
96
  <% end %>
82
97
  </td>
83
98
  </tr>
@@ -88,3 +103,5 @@
88
103
  </div>
89
104
  </div>
90
105
  </div>
106
+
107
+ <%= javascript_include_tag "decidim/meetings/admin/destroy_meeting_alert" %>
@@ -18,6 +18,10 @@
18
18
  </div>
19
19
 
20
20
  <div class="card-section">
21
+ <div class="callout alert">
22
+ <%= t(".recommendation_message") %>
23
+ </div>
24
+
21
25
  <div class="row column">
22
26
  <%= form.check_box :registrations_enabled %>
23
27
  </div>
@@ -1,3 +1,5 @@
1
+ <% add_decidim_page_title(t(".meetings")) %>
2
+
1
3
  <div class="wrapper">
2
4
  <div class="row">
3
5
  <h1 class="section-heading"><%= t(".meetings") %></h1>
@@ -10,10 +12,10 @@
10
12
  <div class="filters__section">
11
13
  <div class="filters__search">
12
14
  <div class="input-group">
13
- <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search") %>
15
+ <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search") %>
14
16
  <div class="input-group-button">
15
- <button type="submit" class="button button--muted">
16
- <%= icon "magnifying-glass", aria_label: t(".search") %>
17
+ <button type="submit" class="button">
18
+ <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
17
19
  </button>
18
20
  </div>
19
21
  </div>
@@ -1,11 +1,13 @@
1
+ <%= render partial: "decidim/shared/filter_form_help", locals: { skip_to_id: "meetings" } %>
2
+
1
3
  <%= filter_form_for filter do |form| %>
2
4
  <div class="filters__section">
3
5
  <div class="filters__search">
4
6
  <div class="input-group">
5
- <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search") %>
7
+ <%= form.search_field :search_text, label: false, class: "input-group-field", placeholder: t(".search"), title: t(".search"), data: { disable_dynamic_change: true } %>
6
8
  <div class="input-group-button">
7
- <button type="submit" class="button button--muted">
8
- <%= icon "magnifying-glass", aria_label: t(".search") %>
9
+ <button type="submit" class="button" aria-controls="meetings">
10
+ <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
9
11
  </button>
10
12
  </div>
11
13
  </div>
@@ -21,6 +23,12 @@
21
23
  <% end %>
22
24
 
23
25
  <% if current_component.categories.any? %>
24
- <%= form.categories_select :category_id, current_component.categories, legend_title: t(".category"), disable_parents: false, label: false, prompt: t(".category_prompt") %>
26
+ <%= form.categories_select :category_id,
27
+ current_component.categories,
28
+ legend_title: t(".category"),
29
+ disable_parents: false,
30
+ label: "",
31
+ prompt: t(".category_prompt"),
32
+ aria_label: t(".category") %>
25
33
  <% end %>
26
34
  <% end %>
@@ -1,7 +1,7 @@
1
1
  <div class="row small-up-1 medium-up-2 card-grid">
2
2
  <% resources.each do |meeting| %>
3
3
  <div class="column">
4
- <article class="card card--meeting">
4
+ <div class="card card--meeting">
5
5
  <div class="card__content">
6
6
  <%= link_to resource_locator(meeting).path, class: "card__link" do %>
7
7
  <h5 class="card__title"><%= present(meeting).title %></h5>
@@ -16,7 +16,7 @@
16
16
  </div>
17
17
  <%= decidim_sanitize( present(meeting).description ) %>
18
18
  </div>
19
- </article>
19
+ </div>
20
20
  </div>
21
21
  <% end %>
22
22
  </div>
@@ -7,7 +7,7 @@
7
7
  <% agenda_items_times = calculate_start_and_end_time_of_agenda_items(meeting.agenda.agenda_items.first_class, meeting) %>
8
8
  <% meeting.agenda.agenda_items.first_class.each_with_index do |agenda_item, index| %>
9
9
  <h5 class="agenda-item--title heading5">
10
- <strong class="text-uppercase"><%= translated_attribute(agenda_item.title) %></strong>&nbsp;
10
+ <strong><%= translated_attribute(agenda_item.title) %></strong>&nbsp;
11
11
  <span class="text-small"><%= display_duration_agenda_items(agenda_item.id, index, agenda_items_times) %></span>
12
12
  </h5>
13
13
  <hr class="reset m-none mb-s">
@@ -19,7 +19,7 @@
19
19
 
20
20
  <% agenda_item.agenda_item_children.each_with_index do |agenda_item_child, index_child| %>
21
21
  <h6 class="heading6">
22
- <strong class="text-uppercase"><%= translated_attribute(agenda_item_child.title) %></strong>&nbsp;
22
+ <strong><%= translated_attribute(agenda_item_child.title) %></strong>&nbsp;
23
23
  <span class="text-small"><%= display_duration_agenda_items(agenda_item_child.id, index_child, agenda_item_children_times) %></span>
24
24
  </h6>
25
25
  <p><%= translated_attribute(agenda_item_child.description).html_safe %></p>
@@ -18,12 +18,12 @@
18
18
  <div class="card--list__item">
19
19
  <div class="card--list__text">
20
20
  <div>
21
- <%= link_to meeting.minutes.video_url, meeting.minutes.video_url, target: "_blank", rel: "noopener" %>
21
+ <%= link_to decidim_url_escape(meeting.minutes.video_url), decidim_html_escape(meeting.minutes.video_url), target: "_blank", rel: "noopener" %>
22
22
  </div>
23
23
  </div>
24
- <div class="card--list__data">
25
- <%= link_to meeting.minutes.video_url, target: "_blank", class: "card--list__data__icon", rel: "noopener" do %>
26
- <%= icon "external-link" %>
24
+ <div class="card--list__data" aria-hidden="true">
25
+ <%= link_to decidim_url_escape(meeting.minutes.video_url), target: "_blank", class: "card--list__data__icon", rel: "noopener" do %>
26
+ <%= icon "external-link", role: "img", "aria-hidden": true %>
27
27
  <% end %>
28
28
  </div>
29
29
  </div>
@@ -32,12 +32,12 @@
32
32
  <div class="card--list__item">
33
33
  <div class="card--list__text">
34
34
  <div>
35
- <%= link_to meeting.minutes.audio_url, meeting.minutes.audio_url, target: "_blank", rel: "noopener" %>
35
+ <%= link_to decidim_url_escape(meeting.minutes.audio_url), decidim_html_escape(meeting.minutes.audio_url), target: "_blank", rel: "noopener" %>
36
36
  </div>
37
37
  </div>
38
- <div class="card--list__data">
39
- <%= link_to meeting.minutes.audio_url, target: "_blank", class: "card--list__data__icon", rel: "noopener" do %>
40
- <%= icon "external-link" %>
38
+ <div class="card--list__data" aria-hidden="true">
39
+ <%= link_to decidim_url_escape(meeting.minutes.audio_url), target: "_blank", class: "card--list__data__icon", rel: "noopener" do %>
40
+ <%= icon "external-link", role: "img", "aria-hidden": true %>
41
41
  <% end %>
42
42
  </div>
43
43
  </div>
@@ -9,7 +9,7 @@
9
9
  <%= render partial: "filters" %>
10
10
  </div>
11
11
  </div>
12
- <div id="meetings" class="columns mediumlarge-8 large-9">
12
+ <div id="meetings" class="columns mediumlarge-8 large-9" aria-live="polite">
13
13
  <%= render partial: "meetings" %>
14
14
  </div>
15
15
  </div>
@@ -16,6 +16,12 @@ edit_link(
16
16
  %>
17
17
 
18
18
  <div class="row column view-header">
19
+
20
+ <%= link_to :meetings, class: "small hollow" do %>
21
+ <%= icon "chevron-left", class: "icon--small", role: "img", "aria-hidden": true %>
22
+ <%= t(".back") %>
23
+ <% end %>
24
+
19
25
  <h2 class="heading2"><%= present(meeting).title(links: true) %></h2>
20
26
  <% if meeting.organizer.present? %>
21
27
  <%= cell "decidim/author", present(meeting.organizer) %>
@@ -27,7 +33,10 @@ edit_link(
27
33
  <div class="card extra">
28
34
  <div class="card__content">
29
35
  <div class="extra__date">
30
- <%= l meeting.start_time, format: "%d" %> <span class="extra__month"><%= l meeting.start_time, format: "%B" %></span>
36
+ <%= l meeting.start_time, format: "%d" %>
37
+ <span class="extra__month"><%= l meeting.start_time, format: "%B" %>
38
+ <%= l(meeting.start_time, format: "%Y") if meeting.start_time.year != Date.current.year %>
39
+ </span>
31
40
  </div>
32
41
  <div class="extra__time">
33
42
  <%= meeting.start_time.strftime("%H:%M") %> - <%= meeting.end_time.strftime("%H:%M") %>
@@ -77,9 +86,9 @@ edit_link(
77
86
  <% meeting.services.each do |service| %>
78
87
  <div class="card--list__item">
79
88
  <div class="card--list__text card--list__text--top">
80
- <%= icon "actions", class: "card--list__icon alert" %>
89
+ <%= icon "actions", class: "card--list__icon alert", role: "img", "aria-hidden": true %>
81
90
  <div>
82
- <h5 class="card--list__heading heading-small"><%= translated_attribute(service["title"]) %></h5>
91
+ <h3 class="card--list__heading heading-small"><%= translated_attribute(service["title"]) %></h3>
83
92
  <span class="text-medium"><%= translated_attribute(service["description"]) %></span>
84
93
  </div>
85
94
  </div>
@@ -104,7 +113,7 @@ edit_link(
104
113
  <%= t("transparent", scope: "decidim.meetings.types") %>
105
114
  </span>
106
115
  <% end %>
107
- <p><%= decidim_sanitize(present(meeting).description(links: true)) %></p>
116
+ <%= decidim_sanitize(present(meeting).description(links: true)) %>
108
117
  <%= render partial: "decidim/shared/static_map", locals: { icon_name: "meetings", geolocalizable: meeting } %>
109
118
  <%= render partial: "decidim/shared/tags", locals: { resource: meeting, tags_class_extra: "tags--meeting" } %>
110
119
  </div>
@@ -1,10 +1,10 @@
1
1
  <div class="column">
2
- <article class="card card--meeting">
2
+ <div class="card card--meeting">
3
3
  <div class="card__content">
4
4
  <%= link_to resource_locator(meeting).path, class: "card__link" do %>
5
5
  <h5 class="card__title"><%= present(meeting).title %></h5>
6
6
  <% end %>
7
7
  <%= render partial: "decidim/meetings/meetings/datetime", locals: { meeting: meeting } %>
8
8
  </div>
9
- </article>
9
+ </div>
10
10
  </div>
@@ -1,7 +1,7 @@
1
1
  <% if meetings.any? %>
2
2
  <hr class="reset mt-none mb-m">
3
3
  <section class="section" id="venues">
4
- <h4 class="section-heading"><%= t("conference_venues", scope: "decidim.meetings") %></h4>
4
+ <h3 class="section-heading"><%= t("conference_venues", scope: "decidim.meetings") %></h3>
5
5
  <div class="row">
6
6
  <div class="column medium-4">
7
7
  <% meetings.each do |meeting_block| %>
@@ -1,6 +1,4 @@
1
1
  <div class="card__block">
2
- <h6>
3
- <strong class="text-uppercase text-small"><%= t("upcoming_meeting", scope: "decidim.participatory_spaces.upcoming_meeting_for_card") %></strong>
4
- </h6>
2
+ <strong class="text-small"><%= t("upcoming_meeting", scope: "decidim.participatory_spaces.upcoming_meeting_for_card") %></strong>
5
3
  <%= cell("decidim/meetings/meeting_m", upcoming_meeting).date %>
6
4
  </div>
@@ -0,0 +1,29 @@
1
+ bg:
2
+ activemodel:
3
+ attributes:
4
+ agenda:
5
+ description: Описание
6
+ duration: Продължителност
7
+ title: Заглавие
8
+ decidim:
9
+ meetings:
10
+ actions:
11
+ invalid_destroy:
12
+ proposals_count:
13
+ one: 'Срещата не може да бъде премахната, понеже има %{count} участник свързан с нея:'
14
+ other: 'Срещата не може да бъде премахната, понеже има %{count} участника свързани с нея:'
15
+ admin:
16
+ meeting_copies:
17
+ form:
18
+ select_organizer: Изберете организатора
19
+ meetings:
20
+ destroy:
21
+ invalid:
22
+ proposals_count:
23
+ one: Срещата не може да бъде премахната, понеже има %{count} участник свързан с нея
24
+ other: Срещата не може да бъде премахната, понеже има %{count} участника свързани с нея
25
+ form:
26
+ select_organizer: Изберете организатора
27
+ meetings:
28
+ filters:
29
+ category_prompt: Изберете категория
@@ -153,6 +153,10 @@ ca:
153
153
  confirm_destroy: Segur que vols suprimir aquesta trobada?
154
154
  destroy: Esborra
155
155
  edit: Edita
156
+ invalid_destroy:
157
+ proposals_count:
158
+ one: 'No es pot destruir la trobada perquè té %{count} proposta associades:'
159
+ other: 'No es pot destruir la trobada perquè té %{count} propostes associades:'
156
160
  minutes: Acta
157
161
  new: Nova trobada
158
162
  preview: Previsualitzar
@@ -234,6 +238,10 @@ ca:
234
238
  invalid: S'ha produït un error en crear aquesta trobada
235
239
  success: Trobada creada amb èxit
236
240
  destroy:
241
+ invalid:
242
+ proposals_count:
243
+ one: No es pot destruir la trobada perquè té %{count} proposta associades
244
+ other: No es pot destruir la trobada perquè té %{count} propostes associades
237
245
  success: La trobada s'ha eliminat correctament
238
246
  edit:
239
247
  update: Actualitzar
@@ -283,6 +291,7 @@ ca:
283
291
  form:
284
292
  available_slots_help: Deixar a 0 si les inscripcions són il·limitades.
285
293
  invites: Invitacions
294
+ recommendation_message: Per raons de privacitat et recomanem que esborris aquest formulari d'inscripció quan ja no el necessitis. Per defecte això és 3 mesos després que la reunió hagi finalitzat.
286
295
  registration_form: Formulari d'inscripció
287
296
  registrations_count:
288
297
  one: Hi ha hagut %{count} inscripció.
@@ -368,7 +377,9 @@ ca:
368
377
  confirm: Confirmar
369
378
  show:
370
379
  attendees: Nombre d'assistents
380
+ back: Torna al llistat
371
381
  contributions: Nombre d'aportacions
382
+ date: Data
372
383
  going: Inscrit
373
384
  join: Inscriu-te a la trobada
374
385
  meeting_report: Informe de la trobada
@@ -159,6 +159,12 @@ cs:
159
159
  confirm_destroy: Opravdu chcete tuto schůzku smazat?
160
160
  destroy: Odstranit
161
161
  edit: Upravit
162
+ invalid_destroy:
163
+ proposals_count:
164
+ one: 'Schůzku nelze zničit, protože má k ní přidružený %{count} návrh:'
165
+ few: 'Schůzku nelze zničit, protože má k ní přidruženo %{count} návrhů:'
166
+ many: 'Schůzku nelze zničit, protože má k ní přidruženo %{count} návrhů:'
167
+ other: 'Schůzka nemůže být zničena, protože s ní je spojeno %{count} návrhů:'
162
168
  minutes: Minut
163
169
  new: Nové setkání
164
170
  preview: Náhled
@@ -240,6 +246,12 @@ cs:
240
246
  invalid: Při vytváření této schůzky došlo k problému
241
247
  success: Setkání bylo úspěšně vytvořeno
242
248
  destroy:
249
+ invalid:
250
+ proposals_count:
251
+ one: Schůzku nelze zničit, protože má k ní přidružený %{count} návrh
252
+ few: Schůzku nelze zničit, protože má k ní přidruženo %{count} návrhů
253
+ many: Schůzka nemůže být zničena, protože s ní je spojeno %{count} návrhů
254
+ other: Schůzka nemůže být zničena, protože s ní je spojeno %{count} návrhů
243
255
  success: Setkání bylo úspěšně smazáno
244
256
  edit:
245
257
  update: Aktualizace
@@ -289,6 +301,7 @@ cs:
289
301
  form:
290
302
  available_slots_help: Nechte to na 0, pokud máte k dispozici neomezené sloty.
291
303
  invites: Pozvánky
304
+ recommendation_message: Z důvodu ochrany osobních údajů doporučujeme odstranit tento nadepsaný formulář, když jej již nepotřebujete. Ve výchozím nastavení je to 3 měsíce po ukončení schůzky.
292
305
  registration_form: Registrační formulář
293
306
  registrations_count:
294
307
  one: Byla zde registrace %{count}.
@@ -376,7 +389,9 @@ cs:
376
389
  confirm: Potvrdit
377
390
  show:
378
391
  attendees: Počet účastníků
392
+ back: Zpět na seznam
379
393
  contributions: Počet příspěvků
394
+ date: Datum
380
395
  going: Chystáte se
381
396
  join: Připojte se k setkání
382
397
  meeting_report: Zpráva o schůzce