decidim-admin 0.25.2 → 0.26.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-admin might be problematic. Click here for more details.

Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/admin/create_import_example.rb +21 -0
  3. data/app/commands/decidim/admin/create_static_page.rb +9 -3
  4. data/app/commands/decidim/admin/update_organization_appearance.rb +2 -1
  5. data/app/controllers/concerns/decidim/admin/user_groups/filterable.rb +45 -0
  6. data/app/controllers/concerns/decidim/moderated_users/admin/filterable.rb +51 -0
  7. data/app/controllers/decidim/admin/imports_controller.rb +48 -10
  8. data/app/controllers/decidim/admin/moderated_users_controller.rb +2 -2
  9. data/app/controllers/decidim/admin/scopes_controller.rb +2 -1
  10. data/app/controllers/decidim/admin/user_groups_controller.rb +13 -5
  11. data/app/forms/decidim/admin/import_example_form.rb +50 -0
  12. data/app/forms/decidim/admin/import_form.rb +46 -40
  13. data/app/forms/decidim/admin/organization_appearance_form.rb +1 -0
  14. data/app/helpers/decidim/admin/imports_helper.rb +16 -6
  15. data/app/helpers/decidim/admin/resource_scope_helper.rb +9 -0
  16. data/app/helpers/decidim/admin/settings_helper.rb +13 -0
  17. data/app/packs/entrypoints/decidim_admin.js +0 -1
  18. data/app/packs/src/decidim/admin/dynamic_fields.component.js +8 -0
  19. data/app/permissions/decidim/admin/permissions.rb +1 -0
  20. data/app/views/decidim/admin/imports/_dropdown.html.erb +9 -4
  21. data/app/views/decidim/admin/imports/new.html.erb +24 -22
  22. data/app/views/decidim/admin/moderated_users/_report.html.erb +0 -1
  23. data/app/views/decidim/admin/moderated_users/index.html.erb +5 -2
  24. data/app/views/decidim/admin/moderations/_report.html.erb +0 -1
  25. data/app/views/decidim/admin/moderations/index.html.erb +1 -1
  26. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +7 -0
  27. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +12 -4
  28. data/app/views/decidim/admin/user_groups/index.html.erb +8 -44
  29. data/app/views/layouts/decidim/admin/_callouts_full.html.erb +4 -0
  30. data/app/views/layouts/decidim/admin/_title_bar.html.erb +2 -2
  31. data/config/brakeman.ignore +26 -0
  32. data/config/locales/ar.yml +0 -7
  33. data/config/locales/ca.yml +0 -13
  34. data/config/locales/cs.yml +50 -13
  35. data/config/locales/de.yml +8 -13
  36. data/config/locales/el.yml +0 -15
  37. data/config/locales/en.yml +46 -17
  38. data/config/locales/es-MX.yml +0 -13
  39. data/config/locales/es-PY.yml +0 -13
  40. data/config/locales/es.yml +45 -16
  41. data/config/locales/eu.yml +8 -13
  42. data/config/locales/fi-plain.yml +33 -13
  43. data/config/locales/fi.yml +46 -17
  44. data/config/locales/fr-CA.yml +42 -13
  45. data/config/locales/fr.yml +48 -19
  46. data/config/locales/ga-IE.yml +1 -6
  47. data/config/locales/gl.yml +33 -13
  48. data/config/locales/hu.yml +1 -9
  49. data/config/locales/id-ID.yml +0 -7
  50. data/config/locales/is-IS.yml +0 -7
  51. data/config/locales/it.yml +6 -13
  52. data/config/locales/ja.yml +92 -67
  53. data/config/locales/lb-LU.yml +1034 -0
  54. data/config/locales/lb.yml +6 -15
  55. data/config/locales/lv.yml +0 -7
  56. data/config/locales/nl.yml +73 -13
  57. data/config/locales/no.yml +0 -7
  58. data/config/locales/pl.yml +7 -13
  59. data/config/locales/pt-BR.yml +1 -14
  60. data/config/locales/pt.yml +8 -15
  61. data/config/locales/ro-RO.yml +40 -16
  62. data/config/locales/ru.yml +0 -7
  63. data/config/locales/sk.yml +0 -7
  64. data/config/locales/sr-CS.yml +0 -6
  65. data/config/locales/sv.yml +33 -13
  66. data/config/locales/tr-TR.yml +0 -7
  67. data/config/locales/uk.yml +0 -7
  68. data/config/locales/val-ES.yml +14 -0
  69. data/config/locales/zh-CN.yml +0 -7
  70. data/lib/decidim/admin/engine.rb +5 -0
  71. data/lib/decidim/admin/form_builder.rb +8 -1
  72. data/lib/decidim/admin/import/creator.rb +32 -12
  73. data/lib/decidim/admin/import/importer.rb +32 -14
  74. data/lib/decidim/admin/import/readers/base.rb +23 -0
  75. data/lib/decidim/admin/import/readers/csv.rb +15 -0
  76. data/lib/decidim/admin/import/readers/json.rb +73 -3
  77. data/lib/decidim/admin/import/readers/xlsx.rb +25 -1
  78. data/lib/decidim/admin/import/readers.rb +7 -1
  79. data/lib/decidim/admin/import/verifier.rb +169 -0
  80. data/lib/decidim/admin/import.rb +3 -0
  81. data/lib/decidim/admin/test/filters_participatory_space_user_roles_examples.rb +165 -0
  82. data/lib/decidim/admin/test/manage_paginated_collection_examples.rb +8 -2
  83. data/lib/decidim/admin/test.rb +1 -0
  84. data/lib/decidim/admin/version.rb +1 -1
  85. metadata +19 -12
  86. data/app/packs/src/decidim/admin/import_guidance.js +0 -28
@@ -1,38 +1,40 @@
1
- <%= decidim_form_for(@form, url: component_imports_path, class: "form grid-container") do |form| %>
1
+ <%= decidim_form_for(@form, url: component_imports_path(name: import_manifest.name), class: "form grid-container") do |form| %>
2
2
  <div class="card">
3
3
  <div class="card-divider">
4
- <h2 class="card-title flex--sbc">
4
+ <div class="card-title flex--sbc">
5
+ <div>
6
+ <%= import_manifest.message(:title, self) %>
7
+ </div>
5
8
  <div class="flex--cc flex-gap--1">
6
9
  <div id="js-other-actions-wrapper">
10
+ <% if import_manifest.has_example? %>
11
+ <span class="imports-example dropdown tiny button button--simple" data-toggle="example-dropdown"><%= t(".download_example") %></span>
12
+ <div class="dropdown-pane" id="example-dropdown" data-dropdown data-position=bottom data-alignment=right data-auto-focus="true" data-close-on-click="true">
13
+ <ul class="vertical menu add-components">
14
+ <% mime_types.each do |format, name| %>
15
+ <li class="examples--format--<%= format.downcase %> examples--<%= import_manifest.name %>">
16
+ <%= link_to t(".download_example_format", name: name),
17
+ admin_imports_example_path(@current_component, name: import_manifest.name, format: format) %>
18
+ </li>
19
+ <% end %>
20
+ </ul>
21
+ </div>
22
+ <% end %>
23
+
7
24
  <%= link_to t(".actions.back"), manage_component_path(@current_component), class: "button hollow tiny button--simple" %>
8
25
  </div>
9
26
  </div>
10
- </h2>
27
+ </div>
11
28
  </div>
12
29
  <div class="card-section">
13
- <div class="row column">
14
- <%=
15
- form.select :creator,
16
- @form.creators.map { |m| [t("decidim.admin.imports.creators.#{m[:name]}"), m[:creator]] },
17
- { prompt: true }
18
- %>
19
- </div>
20
- <% if current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? %>
21
- <div class="field">
22
- <%= user_group_select_field form, :user_group_id %>
23
- </div>
24
- <% end %>
30
+ <%= render partial: import_manifest.form_view, locals: { form: form } if import_manifest.form_view %>
25
31
  <div class="grid-x">
26
32
  <div class="cell">
27
33
  <fieldset>
28
34
  <legend>
29
- <%= t(".file_legend", valid_mime_types: mime_types).html_safe %>
30
- <div class="creator-guidances">
31
- <% @form.creators.each do |creator| %>
32
- <%= content_tag :div, class: "guidance creator-#{creator[:name]}" do %>
33
- <% t("decidim.admin.imports.help.#{creator[:name]}") %>
34
- <% end %>
35
- <% end %>
35
+ <%= t(".file_legend", valid_mime_types: mime_types.values.join(", ")).html_safe %>
36
+ <div class="guidance">
37
+ <%= import_manifest.message(:help, self) %>
36
38
  </div>
37
39
  </legend>
38
40
  <div class="row column">
@@ -3,7 +3,6 @@
3
3
  <% else %>
4
4
  <span
5
5
  data-tooltip
6
- aria-haspopup="true"
7
6
  title="<%= report.details&.truncate(250) %>">
8
7
  <%= t(".reasons.#{report.reason}") %>
9
8
  </span>
@@ -1,4 +1,4 @@
1
- <div class="card">
1
+ <div class="card with-overflow">
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
4
  <%= t(".title") %>
@@ -27,6 +27,8 @@
27
27
  </h2>
28
28
  </div>
29
29
 
30
+ <%= admin_filter_selector(:moderated_users) %>
31
+
30
32
  <div class="card-section">
31
33
  <div class="table-scroll">
32
34
  <table class="table-list">
@@ -59,7 +61,7 @@
59
61
 
60
62
  <td class="actions">
61
63
  <% if allowed_to?(:unreport, :moderate_users) %>
62
- <%= icon_link_to "action-undo", ignore_moderated_user_path(id: moderation), t(".actions.unreport"), class: "action-icon--unreport", method: :put %>
64
+ <%= icon_link_to "action-undo", ignore_moderated_user_path(id: moderation), t(".actions.unreport"), class: "action-icon--unreport", method: :put %>
63
65
  <% end %>
64
66
  <% if allowed_to?(:block, :moderate_users) %>
65
67
  <% if moderation.user.blocked? %>
@@ -73,6 +75,7 @@
73
75
  <% end %>
74
76
  </tbody>
75
77
  </table>
78
+ <%= paginate @moderated_users, theme: "decidim" %>
76
79
  </div>
77
80
  </div>
78
81
  </div>
@@ -3,7 +3,6 @@
3
3
  <% else %>
4
4
  <span
5
5
  data-tooltip
6
- aria-haspopup="true"
7
6
  title="<%= report.details&.truncate(250) %>">
8
7
  <%= t(".reasons.#{report.reason}") %>
9
8
  </span>
@@ -49,7 +49,7 @@
49
49
  </td>
50
50
  <td>
51
51
  <%=
52
- link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), moderation.reportable.reported_content_url, data: { tooltip: true }, aria: { haspopup: true }, title: strip_tags(reported_content_excerpt_for(moderation.reportable, limit: 250))
52
+ link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), moderation.reportable.reported_content_url, data: { tooltip: true }, title: strip_tags(reported_content_excerpt_for(moderation.reportable, limit: 250))
53
53
  %>
54
54
  </td>
55
55
  <td>
@@ -2,6 +2,12 @@
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title"><%= t ".colors_title" %></h2>
4
4
  </div>
5
+ <div class="callout warning">
6
+ <p>
7
+ <%= icon "warning" %>
8
+ <%= t ".colors_warning_html", link: "https://webaim.org/resources/contrastchecker" %>
9
+ </p>
10
+ </div>
5
11
  <div class="card-section">
6
12
  <div class="organization-colors">
7
13
  <%= form.color_field :primary_color, value: current_organization.colors["primary"] %>
@@ -11,6 +17,7 @@
11
17
  <%= form.color_field :alert_color, value: current_organization.colors["alert"] %>
12
18
  <%= form.color_field :highlight_color, value: current_organization.colors["highlight"] %>
13
19
  <%= form.color_field :highlight_alternative_color, value: current_organization.colors["highlight-alternative"] %>
20
+ <%= form.color_field :theme_color, value: current_organization.colors["theme"] %>
14
21
  </div>
15
22
 
16
23
  <% if Decidim.enable_html_header_snippets %>
@@ -15,10 +15,18 @@
15
15
  <table class="stack">
16
16
  <thead>
17
17
  <tr>
18
- <th><%= t("models.assembly_user_role.fields.name", scope: "decidim.admin") %></th>
19
- <th><%= t("models.assembly_user_role.fields.email", scope: "decidim.admin") %></th>
20
- <th><%= t("models.user.fields.invitation_sent_at", scope: "decidim.admin") %></th>
21
- <th><%= t("models.user.fields.invitation_accepted_at", scope: "decidim.admin") %></th>
18
+ <th>
19
+ <%= sort_link(query, :name, t("models.user.fields.name", scope: "decidim.admin"), default_order: :desc ) %>
20
+ </th>
21
+ <th>
22
+ <%= sort_link(query, :email, t("models.user.fields.email", scope: "decidim.admin"), default_order: :desc ) %>
23
+ </th>
24
+ <th>
25
+ <%= sort_link(query, :invitation_sent_at, t("models.user.fields.invitation_sent_at", scope: "decidim.admin"), default_order: :desc ) %>
26
+ </th>
27
+ <th>
28
+ <%= sort_link(query, :invitation_accepted_at, t("models.user.fields.invitation_accepted_at", scope: "decidim.admin"), default_order: :desc ) %>
29
+ </th>
22
30
  <th class="actions"></th>
23
31
  </tr>
24
32
  </thead>
@@ -1,41 +1,3 @@
1
- <div class="filters row">
2
- <div class="column medium-3">
3
- <span class="dropdown-menu-inverted_label"><%= t(".filter_by") %> :</span>
4
- <ul class="dropdown menu dropdown-inverted" data-dropdown-menu data-close-on-click-inside="false">
5
- <li class="is-dropdown-submenu-parent">
6
- <a href="#">
7
- <% if @state.present? %>
8
- <%= t(".filter.#{@state}") %>
9
- <% else %>
10
- <%= t(".filter.all") %>
11
- <% end %>
12
- </a>
13
- <ul class="menu is-dropdown-submenu">
14
- <li><%= link_to t(".filter.pending"), url_for(state: "pending", q: @query) %></li>
15
- <li><%= link_to t(".filter.rejected"), url_for(state: "rejected", q: @query) %></li>
16
- <li><%= link_to t(".filter.verified"), url_for(state: "verified", q: @query) %></li>
17
- <li><%= link_to t(".filter.all"), url_for(q: @query) %></li>
18
- </ul>
19
- </li>
20
- </ul>
21
- </div>
22
- <div class="column medium-4">
23
- <%= form_tag "", method: :get do %>
24
- <div class="filters__search">
25
- <div class="input-group">
26
- <%= search_field_tag :q, @query,label: false, class: "input-group-field", placeholder: t(".search") %>
27
- <%= hidden_field_tag :state, @state %>
28
- <div class="input-group-button">
29
- <button type="submit" class="button">
30
- <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
31
- </button>
32
- </div>
33
- </div>
34
- </div>
35
- <% end %>
36
- </div>
37
- </div>
38
-
39
1
  <div class="card" id='user-groups'>
40
2
  <div class="card-divider">
41
3
  <h2 class="card-title">
@@ -43,17 +5,19 @@
43
5
  <%= link_to t(".verify_via_csv"), new_user_groups_csv_verification_path, class: "button tiny button--title" %>
44
6
  </h2>
45
7
  </div>
8
+ <%= admin_filter_selector %>
9
+
46
10
  <div class="card-section">
47
11
  <div class="table-scroll">
48
12
  <table class="table-list">
49
13
  <thead>
50
14
  <tr>
51
- <th><%= t("models.user_group.fields.name", scope: "decidim.admin") %></th>
52
- <th><%= t("models.user_group.fields.document_number", scope: "decidim.admin") %></th>
53
- <th><%= t("models.user_group.fields.phone", scope: "decidim.admin") %></th>
54
- <th><%= t("models.user_group.fields.users_count", scope: "decidim.admin") %></th>
55
- <th><%= t("models.user_group.fields.created_at", scope: "decidim.admin") %></th>
56
- <th><%= t("models.user_group.fields.state", scope: "decidim.admin") %></th>
15
+ <th><%= sort_link(query, :name, t("models.user_group.fields.name", scope: "decidim.admin"), default_order: :desc) %></th>
16
+ <th><%= sort_link(query, :document_number, t("models.user_group.fields.document_number", scope: "decidim.admin"), default_order: :desc) %></th>
17
+ <th><%= sort_link(query, :phone, t("models.user_group.fields.phone", scope: "decidim.admin"), default_order: :desc) %></th>
18
+ <th><%= sort_link(query, :users_count, t("models.user_group.fields.users_count", scope: "decidim.admin"), default_order: :desc) %></th>
19
+ <th><%= sort_link(query, :created_at, t("models.user_group.fields.created_at", scope: "decidim.admin"), default_order: :desc) %></th>
20
+ <th><%= sort_link(query, :state, t("models.user_group.fields.state", scope: "decidim.admin"), default_order: :desc) %></th>
57
21
  <th><%= t("models.user_group.fields.actions", scope: "decidim.admin") %></th>
58
22
  </tr>
59
23
  </thead>
@@ -1,5 +1,9 @@
1
1
  <div class="callout-wrapper">
2
2
  <% flash.each do |key, value| %>
3
+ <% if /_html\Z/.match?(key)
4
+ key = key.gsub(/_html\Z/, "")
5
+ value = decidim_sanitize(value)
6
+ end %>
3
7
  <div class="callout <%= FoundationRailsHelper::FlashHelper::DEFAULT_KEY_MATCHING[key.to_sym] %> callout--full" data-closable>
4
8
  <%= value %>
5
9
  <button class="close-button" aria-label="Dismiss alert" type="button" data-close>
@@ -17,7 +17,7 @@
17
17
  data-close-on-click="true"
18
18
  tabindex="-1">
19
19
  <li class="is-dropdown-submenu-parent" tabindex="-1">
20
- <%= link_to t("name", scope: "locale"), "#", id: "admin-user-menu-control", "aria-controls": "admin-user-menu", "aria-haspopup": "true" %>
20
+ <%= link_to t("name", scope: "locale"), "#", id: "admin-user-menu-control", "aria-controls": "admin-user-menu", "aria-haspopup": "menu" %>
21
21
  <ul class="menu is-dropdown-submenu" id="admin-user-menu" role="menu" aria-labelledby="admin-user-menu-control" tabindex="-1">
22
22
  <% (available_locales - [I18n.locale.to_s]).each do |locale| %>
23
23
  <li><%= link_to(locale_name(locale), decidim.locale_path(locale: locale), method: :post, tabindex: "-1") %></li>
@@ -36,7 +36,7 @@
36
36
  data-close-on-click="true"
37
37
  tabindex="-1">
38
38
  <li class="is-dropdown-submenu-parent" tabindex="-1">
39
- <%= link_to current_user.email, "#", id: "admin-language-menu-control", "aria-controls": "admin-language-menu", "aria-haspopup": "true", "aria-label": t("layouts.decidim.user_menu.account", name: current_user.email) %>
39
+ <%= link_to current_user.email, "#", id: "admin-language-menu-control", "aria-controls": "admin-language-menu", "aria-haspopup": "menu", "aria-label": t("layouts.decidim.user_menu.account", name: current_user.email) %>
40
40
  <ul class="menu is-dropdown-submenu" id="admin-language-menu" role="menu" aria-labelledby="admin-language-menu-control" tabindex="-1">
41
41
  <li><%= link_to(t("layouts.decidim.user_menu.sign_out"), decidim.destroy_user_session_path, method: :delete, tabindex: "-1") %></li>
42
42
  </ul>
@@ -0,0 +1,26 @@
1
+ {
2
+ "ignored_warnings": [
3
+ {
4
+ "warning_type": "Mass Assignment",
5
+ "warning_code": 70,
6
+ "fingerprint": "699f4c81d452fb04843f59870463bc1fc7cc94a37801a83efd654966b51e7674",
7
+ "check_name": "MassAssignment",
8
+ "message": "Specify exact keys allowed for mass assignment instead of using `permit!` which allows any keys",
9
+ "file": "app/controllers/decidim/admin/components_controller.rb",
10
+ "line": 131,
11
+ "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/",
12
+ "code": "params[:component].permit!",
13
+ "render_path": null,
14
+ "location": {
15
+ "type": "method",
16
+ "class": "Decidim::Admin::ComponentsController",
17
+ "method": "component_params"
18
+ },
19
+ "user_input": null,
20
+ "confidence": "Medium",
21
+ "note": ""
22
+ }
23
+ ],
24
+ "updated": "2021-10-04 17:49:10 +0000",
25
+ "brakeman_version": "5.1.1"
26
+ }
@@ -661,13 +661,6 @@ ar:
661
661
  success: تم التحقق من المجموعة بنجاح
662
662
  user_groups:
663
663
  index:
664
- filter:
665
- all: الكل
666
- pending: قيد الانتظار
667
- rejected: مرفوض
668
- verified: التحقق
669
- filter_by: مصنف بواسطة
670
- search: بحث
671
664
  state:
672
665
  pending: قيد الانتظار
673
666
  rejected: مرفوض
@@ -450,13 +450,7 @@ ca:
450
450
  impersonate_existing_user: Gestionar la participant "%{name}"
451
451
  impersonate_new_managed_user: Gestionar una nova participant
452
452
  imports:
453
- creators:
454
- proposalcreator: Creador de la proposta
455
453
  error: S'ha produït un error durant la importació
456
- help:
457
- proposalcreator: L'arxiu ha d'incloure els noms de columna title/en i body/en (o un altre idioma de preferència per exemple, title/ca i body/ca). També s'admeten les columnes scope/id i category/id.
458
- import_from_file: Importar d'un arxiu
459
- invalid_lines: S'ha trobat un error al recurs número %{invalid_lines}
460
454
  new:
461
455
  accepted_mime_types:
462
456
  csv: csv
@@ -928,13 +922,6 @@ ca:
928
922
  success: Grup verificat correctament
929
923
  user_groups:
930
924
  index:
931
- filter:
932
- all: Totes
933
- pending: Pendent
934
- rejected: Rebutjat
935
- verified: Verificat
936
- filter_by: Filtra per
937
- search: Cercar
938
925
  state:
939
926
  pending: Pendent
940
927
  rejected: Rebutjat
@@ -132,6 +132,7 @@ cs:
132
132
  new_import:
133
133
  attributes:
134
134
  file:
135
+ invalid_file: Neplatný soubor, zkontrolujte, zda je soubor správně naformátován
135
136
  invalid_mime_type: Neplatný typ mime
136
137
  activerecord:
137
138
  attributes:
@@ -366,6 +367,13 @@ cs:
366
367
  values:
367
368
  'false': 'Ne'
368
369
  'true': 'Ano'
370
+ moderated_users:
371
+ reports_reason_eq:
372
+ label: Důvod hlášení
373
+ values:
374
+ does_not_belong: Nepatří
375
+ offensive: Urážlivý
376
+ spam: Nevyžádané
369
377
  moderations:
370
378
  reportable_type_string_eq:
371
379
  label: Typ
@@ -400,11 +408,18 @@ cs:
400
408
  search_label: Hledat
401
409
  search_placeholder:
402
410
  name_or_nickname_or_email_cont: Hledat %{collection} podle e-mailu, jména nebo přezdívky.
411
+ report_count_eq: Počet nahlášení
403
412
  reported_id_string_or_reported_content_cont: Hledat %{collection} podle nahlášeného Id nebo obsahu.
404
413
  title_cont: Hledat %{collection} podle názvu.
405
414
  user_name_or_user_email_cont: Hledat %{collection} podle jména nebo e-mailu.
415
+ user_name_or_user_nickname_or_user_email_cont: Hledat %{collection} podle e-mailu, jména nebo přezdívky.
406
416
  state_eq:
407
417
  label: Stav
418
+ values:
419
+ all: Vše
420
+ pending: Čekající
421
+ rejected: Odmítnuto
422
+ verified: Ověřeno
408
423
  forms:
409
424
  file_help:
410
425
  import:
@@ -450,13 +465,39 @@ cs:
450
465
  impersonate_existing_user: Spravovat účastníka "%{name}"
451
466
  impersonate_new_managed_user: Spravovat nového účastníka
452
467
  imports:
453
- creators:
454
- proposalcreator: Tvůrce návrhu
468
+ and: a
469
+ data_errors:
470
+ duplicate_headers:
471
+ detail: Zkontrolujte, zda soubor obsahuje požadované sloupce nebo záhlaví pouze jednou.
472
+ message:
473
+ one: Duplikovat sloupec %{columns}.
474
+ few: Duplikovat sloupce %{columns}.
475
+ many: Duplikovat sloupce %{columns}.
476
+ other: Duplikovat sloupce %{columns}.
477
+ invalid_indexes:
478
+ lines:
479
+ detail: Zkontrolujte, zda jsou tyto řádky správně formátovány a obsahují platné záznamy.
480
+ message:
481
+ one: Nalezena chyba v importním souboru na řádku %{indexes}.
482
+ few: Nalezena chyba v importním souboru na řádcách %{indexes}.
483
+ many: Nalezena chyba v importním souboru na řádcích %{indexes}.
484
+ other: Nalezeny chyby v importním souboru na řádcích %{indexes}.
485
+ records:
486
+ detail: Zkontrolujte, zda jsou tyto záznamy správně formátovány a obsahují platné záznamy.
487
+ message:
488
+ one: Nalezena chyba v importním souboru pro záznamy s pořadovým číslem %{indexes}.
489
+ few: Nalezeny chyby v importním souboru pro záznamy s pořadovými čísly %{indexes}.
490
+ many: Nalezeny chyby v importním souboru pro záznamy s pořadovými čísly %{indexes}.
491
+ other: Nalezeny chyby v importním souboru pro záznamy s pořadovými čísly %{indexes}.
492
+ missing_headers:
493
+ detail: Zkontrolujte, zda soubor obsahuje požadované sloupce.
494
+ message:
495
+ one: Chybí sloupec %{columns}.
496
+ few: Chybí sloupce %{columns}.
497
+ many: Chybí sloupce %{columns}.
498
+ other: Chybí sloupce %{columns}.
455
499
  error: Při importu došlo k chybě
456
- help:
457
- proposalcreator: Soubor musí mít názvy sloupců title/en a body/en (nebo jiné lokalizace, které dáváte. title/cs a body/cs). Podporovány jsou také sloupce pro scope/id a category/id.
458
- import_from_file: Importovat ze souboru
459
- invalid_lines: Nalezena chyba ve zdroji číslo %{invalid_lines}
500
+ example_error: Nelze vytvořit příklad pro daný typ
460
501
  new:
461
502
  accepted_mime_types:
462
503
  csv: csv
@@ -464,6 +505,8 @@ cs:
464
505
  xlsx: xlsx
465
506
  actions:
466
507
  back: Zpět
508
+ download_example: Stáhnout příklad
509
+ download_example_format: Příklad jako %{name}
467
510
  file_legend: Přidat importovaný soubor, který bude analyzován.
468
511
  import: Importovat
469
512
  notice: "%{number} %{resource_name} úspěšně importováno"
@@ -750,6 +793,7 @@ cs:
750
793
  form:
751
794
  colors:
752
795
  colors_title: Organizační barvy
796
+ colors_warning_html: Varování! Změna těchto barev může narušit kontrasty přístupnosti. Můžete zkontrolovat kontrast výběru s <a href="%{link}">kontrolou kontrastu WebAIM Contrast Checker</a> nebo jinými podobnými nástroji.
753
797
  header_snippets_help: Toto pole použijte k přidání věcí do hlavičky HTML. Nejběžnějším používáním je integrace služeb třetích stran, které vyžadují nějaký extra JavaScript nebo CSS. Můžete také použít k přidání dalších metaznaček do HTML. Všimněte si, že to bude vykresleno pouze na veřejných stránkách, nikoliv v sekci admin.
754
798
  cta_button_path_help: 'Můžete přepsat, kde se na domovské stránce odkazuje tlačítko Výzvy k akci. Použijte zde částečné cesty, ne úplné adresy URL. Přijme písmena, čísla, pomlčky a lomítka a musí začínat písmenem. Tlačítko Výzvy k akci se na domovské stránce zobrazí mezi uvítacím textem a popisem. Příklad: %{url}'
755
799
  cta_button_text_help: Text tlačítka výzvy k akci můžete na domovské stránce přepsat pro každý dostupný jazyk ve vaší organizaci. Pokud není nastaveno, bude použita výchozí hodnota. Tlačítko Výzvy k akci se na domovské stránce zobrazí mezi uvítacím textem a popisem.
@@ -928,13 +972,6 @@ cs:
928
972
  success: Skupina byla úspěšně ověřena
929
973
  user_groups:
930
974
  index:
931
- filter:
932
- all: Vše
933
- pending: čekající
934
- rejected: Odmítnuto
935
- verified: Ověřeno
936
- filter_by: Filtrovat podle
937
- search: Hledat
938
975
  state:
939
976
  pending: čekající
940
977
  rejected: Odmítnuto
@@ -390,6 +390,11 @@ de:
390
390
  user_name_or_user_email_cont: In %{collection} nach Name oder E-Mail suchen.
391
391
  state_eq:
392
392
  label: Bundesland
393
+ values:
394
+ all: Alle
395
+ pending: Ausstehend
396
+ rejected: Abgelehnt
397
+ verified: Überprüft
393
398
  forms:
394
399
  file_help:
395
400
  import:
@@ -435,13 +440,8 @@ de:
435
440
  impersonate_existing_user: Imitieren von Benutzer "%{name}"
436
441
  impersonate_new_managed_user: Sich als neuer verwalteter Benutzer ausgeben
437
442
  imports:
438
- creators:
439
- proposalcreator: Vorschlagsersteller
443
+ and: und
440
444
  error: Beim Importieren ist ein Fehler aufgetreten
441
- help:
442
- proposalcreator: Die Datei muss die Spaltennamen title/de und body/de (oder andere Sprachen wie zum Beispiel title/en und body/en) enthalten. Zudem sind scope/id und category/id unterstützt.
443
- import_from_file: Aus einer Datei importieren
444
- invalid_lines: Fehler in der Ressource Nummer %{invalid_lines}
445
445
  new:
446
446
  accepted_mime_types:
447
447
  csv: CSV
@@ -449,6 +449,8 @@ de:
449
449
  xlsx: xlsx
450
450
  actions:
451
451
  back: Zurück
452
+ download_example: Beispiel herunterladen
453
+ download_example_format: Beispiel als %{name}
452
454
  file_legend: Datei zum Importieren hinzufügen.
453
455
  import: Importieren
454
456
  notice: "%{number}%{resource_name} erfolgreich importiert"
@@ -910,13 +912,6 @@ de:
910
912
  success: Benutzergruppe erfolgreich verifiziert
911
913
  user_groups:
912
914
  index:
913
- filter:
914
- all: Alle
915
- pending: steht aus
916
- rejected: Abgelehnt
917
- verified: Überprüft
918
- filter_by: Filtern nach
919
- search: Suche
920
915
  state:
921
916
  pending: steht aus
922
917
  rejected: Abgelehnt
@@ -450,16 +450,8 @@ el:
450
450
  impersonate_existing_user: Διαχείριση συμμετέχοντα «%{name}»
451
451
  impersonate_new_managed_user: Διαχείριση νέου συμμετέχοντα
452
452
  imports:
453
- creators:
454
- proposalcreator: Δημιουργός της πρότασης
455
453
  error: Υπήρξε πρόβλημα κατά την εισαγωγή
456
- help:
457
- proposalcreator: Το αρχείο πρέπει να έχει ονόματα στηλών title/en και body/en (ή άλλη τοπική γλώσσα που προτιμάτε, π.χ. title/ca και body/ca). Υποστηρίζονται επίσης οι στήλες scope/id και category/id.
458
- import_from_file: Εισαγωγή από αρχείο
459
- invalid_lines: Βρέθηκε σφάλμα στον αριθμό πόρου %{invalid_lines}
460
454
  new:
461
- accepted_mime_types:
462
- json: JSON
463
455
  actions:
464
456
  back: Πίσω
465
457
  file_legend: Προσθέστε ένα αρχείο εισαγωγής που θα αναλυθεί.
@@ -926,13 +918,6 @@ el:
926
918
  success: Η ομάδα επαληθεύτηκε με επιτυχία
927
919
  user_groups:
928
920
  index:
929
- filter:
930
- all: Όλα
931
- pending: Σε εκκρεμότητα
932
- rejected: Απορρίφθηκε
933
- verified: Επαληθεύτηκε
934
- filter_by: Φιλτράρισμα κατά
935
- search: Αναζήτηση
936
921
  state:
937
922
  pending: Σε εκκρεμότητα
938
923
  rejected: Απορρίφθηκε
@@ -133,6 +133,7 @@ en:
133
133
  new_import:
134
134
  attributes:
135
135
  file:
136
+ invalid_file: Invalid file provided, please check that the file is correctly formatted
136
137
  invalid_mime_type: Invalid mime type
137
138
  activerecord:
138
139
  attributes:
@@ -367,6 +368,13 @@ en:
367
368
  values:
368
369
  'false': 'No'
369
370
  'true': 'Yes'
371
+ moderated_users:
372
+ reports_reason_eq:
373
+ label: Report reason
374
+ values:
375
+ does_not_belong: Does not belong
376
+ offensive: Offensive
377
+ spam: Spam
370
378
  moderations:
371
379
  reportable_type_string_eq:
372
380
  label: Type
@@ -401,11 +409,18 @@ en:
401
409
  search_label: Search
402
410
  search_placeholder:
403
411
  name_or_nickname_or_email_cont: Search %{collection} by email, name or nickname.
412
+ report_count_eq: Report count eq
404
413
  reported_id_string_or_reported_content_cont: Search %{collection} by reportable id or content.
405
414
  title_cont: Search %{collection} by title.
406
415
  user_name_or_user_email_cont: Search %{collection} by name or email.
416
+ user_name_or_user_nickname_or_user_email_cont: Search %{collection} by email, name or nickname.
407
417
  state_eq:
408
418
  label: State
419
+ values:
420
+ all: All
421
+ pending: Pending
422
+ rejected: Rejected
423
+ verified: Verified
409
424
  forms:
410
425
  file_help:
411
426
  import:
@@ -451,23 +466,43 @@ en:
451
466
  impersonate_existing_user: Manage participant "%{name}"
452
467
  impersonate_new_managed_user: Manage new participant
453
468
  imports:
454
- creators:
455
- proposalcreator: Proposal creator
469
+ and: and
470
+ data_errors:
471
+ duplicate_headers:
472
+ detail: Please check that file contains required columns or headers only once.
473
+ message:
474
+ one: Duplicate column %{columns}.
475
+ other: Duplicate columns %{columns}.
476
+ invalid_indexes:
477
+ lines:
478
+ detail: Please check that these lines are formatted correctly and contain valid records.
479
+ message:
480
+ one: Found an error in the import file on line %{indexes}.
481
+ other: Found errors in the import file on lines %{indexes}.
482
+ records:
483
+ detail: Please check that these records are formatted correctly and contain valid records.
484
+ message:
485
+ one: Found an error in the import file for records with order numbers %{indexes}.
486
+ other: Found errors in the import file for records with order numbers %{indexes}.
487
+ missing_headers:
488
+ detail: Please check that the file contains required columns.
489
+ message:
490
+ one: Missing column %{columns}.
491
+ other: Missing columns %{columns}.
456
492
  error: There was a problem during the import
457
- help:
458
- proposalcreator: The file must have column names title/en and body/en (or another locale which you prefer eg. title/ca and body/ca). Also scope/id and category/id columns are supported.
459
- import_from_file: Import from a file
460
- invalid_lines: Found error in resource number %{invalid_lines}
493
+ example_error: Could not create an example for the given type
461
494
  new:
462
495
  accepted_mime_types:
463
- csv: csv
464
- json: json
465
- xlsx: xlsx
496
+ csv: CSV
497
+ json: JSON
498
+ xlsx: Excel (.xlsx)
466
499
  actions:
467
500
  back: Back
501
+ download_example: Download example
502
+ download_example_format: Example as %{name}
468
503
  file_legend: Add an import file that will be parsed.
469
504
  import: Import
470
- notice: "%{number} %{resource_name} successfully imported"
505
+ notice: "%{count} %{resource_name} successfully imported"
471
506
  logs:
472
507
  logs_list:
473
508
  no_logs_yet: There are no logs yet
@@ -751,6 +786,7 @@ en:
751
786
  form:
752
787
  colors:
753
788
  colors_title: Organization colors
789
+ colors_warning_html: Warning! Changing these colors can break the accessibility contrasts. You can check the contrast of your choosing with <a href="%{link}">WebAIM Contrast Checker</a> or other similar tools.
754
790
  header_snippets_help: Use this field to add things to the HTML head. The most common use is to integrate third-party services that require some extra JavaScript or CSS. Also, you can use it to add extra meta tags to the HTML. Note that this will only be rendered in public pages, not in the admin section.
755
791
  cta_button_path_help: 'You can overwrite where the Call To Action button in the homepage links to. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. The Call To Action button is shown in the homepage between the welcome text and the description. Example: %{url}'
756
792
  cta_button_text_help: You can overwrite the Call To Action button text in the homepage for each available language in your organization. If not set, the default value will be used. The Call To Action button is shown in the homepage between the welcome text and the description.
@@ -929,13 +965,6 @@ en:
929
965
  success: Group successfully verified
930
966
  user_groups:
931
967
  index:
932
- filter:
933
- all: All
934
- pending: Pending
935
- rejected: Rejected
936
- verified: Verified
937
- filter_by: Filter by
938
- search: Search
939
968
  state:
940
969
  pending: Pending
941
970
  rejected: Rejected