decidim-core 0.29.0 → 0.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/content_blocks/stats_cell.rb +1 -1
  3. data/app/cells/decidim/endorsement_buttons_cell.rb +1 -1
  4. data/app/commands/decidim/amendable/create_draft.rb +1 -0
  5. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +1 -1
  6. data/app/controllers/concerns/decidim/direct_upload.rb +82 -0
  7. data/app/forms/decidim/upload_validation_form.rb +1 -1
  8. data/app/helpers/decidim/layout_helper.rb +28 -0
  9. data/app/helpers/decidim/scopes_helper.rb +3 -2
  10. data/app/models/decidim/action_log.rb +11 -1
  11. data/app/packs/src/decidim/append_redirect_url_to_modals.js +14 -12
  12. data/app/packs/src/decidim/direct_uploads/upload_modal.js +3 -0
  13. data/app/packs/stylesheets/decidim/_buttons.scss +1 -1
  14. data/app/packs/stylesheets/decidim/_modal_update.scss +4 -0
  15. data/app/queries/decidim/last_activity.rb +16 -5
  16. data/app/views/decidim/devise/omniauth_registrations/new.html.erb +1 -1
  17. data/app/views/decidim/offline/show.html.erb +1 -1
  18. data/app/views/layouts/decidim/_head.html.erb +1 -1
  19. data/config/locales/ar.yml +0 -1
  20. data/config/locales/bg.yml +0 -1
  21. data/config/locales/ca.yml +1 -1
  22. data/config/locales/cs.yml +2 -1
  23. data/config/locales/de.yml +2 -2
  24. data/config/locales/el.yml +0 -1
  25. data/config/locales/en.yml +1 -1
  26. data/config/locales/es-MX.yml +1 -1
  27. data/config/locales/es-PY.yml +1 -1
  28. data/config/locales/es.yml +1 -1
  29. data/config/locales/eu.yml +4 -4
  30. data/config/locales/fi-plain.yml +1 -1
  31. data/config/locales/fi.yml +1 -1
  32. data/config/locales/fr-CA.yml +1 -1
  33. data/config/locales/fr.yml +1 -1
  34. data/config/locales/gl.yml +0 -1
  35. data/config/locales/hu.yml +0 -1
  36. data/config/locales/ja.yml +3 -3
  37. data/config/locales/lt.yml +0 -1
  38. data/config/locales/pl.yml +0 -1
  39. data/config/locales/pt-BR.yml +243 -1
  40. data/config/locales/ro-RO.yml +64 -48
  41. data/config/locales/sv.yml +536 -91
  42. data/config/locales/zh-TW.yml +0 -1
  43. data/lib/decidim/core/engine.rb +6 -0
  44. data/lib/decidim/core/test/shared_examples/comments_examples.rb +10 -0
  45. data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +107 -9
  46. data/lib/decidim/core/version.rb +1 -1
  47. data/lib/decidim/core.rb +11 -0
  48. data/lib/decidim/organization_settings.rb +4 -1
  49. data/lib/decidim/view_model.rb +1 -1
  50. data/lib/tasks/upgrade/decidim_attachments.rake +14 -0
  51. metadata +8 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37f39b870aa9a840fbf4c415858b3210d520511f8efb0327bb90e8aa0126f243
4
- data.tar.gz: 16fa93602fc35d288ddeef831f50f3e3878714ea4fae6547064c9be0a148fad0
3
+ metadata.gz: 52a3dc5c9feb9a081fb911d75e25eba2847b1d159837b23853140d96f3c6754b
4
+ data.tar.gz: 18e41bc984ad456282a1b0c9d3ec3fef7fc89376b330b79198fe3e650cee1301
5
5
  SHA512:
6
- metadata.gz: 0ae69c163d580612c4a8f4f4cf8d9c460aebc24270a67f4a245d25f4fceb2988075664aab8f97977ae19b75d90c42e1cdb03ad2591bd546c5acf9f8562d5852f
7
- data.tar.gz: 23132fff12f59d0bb72b073e6729ccb5f439f5c59493d8a3f8f7026dbb45cf20e56f1cac34b07bc8a2d10e757b4cd6efe60bc93180f22d2a4764db597913a1b6
6
+ metadata.gz: 1c3e01dc59cb7b999828421bfad4e0bdbbddc813200b4b99de17bd89c4b6a664ad0f98af080ec0f84bcd335b89f99fa871c851d56429ee998979ad68bbec4c3c
7
+ data.tar.gz: 593fff36a401ad9116314865972323861374a70b53883c5c7421f902899d3ea0b934f64aaec1f2c9ed8879440fd647344e60a67beab12e76924851f7b377e788
@@ -17,7 +17,7 @@ module Decidim
17
17
  end
18
18
 
19
19
  def cache_expiry_time
20
- 10.minutes
20
+ Decidim.stats_cache_expiry_time
21
21
  end
22
22
  end
23
23
  end
@@ -69,7 +69,7 @@ module Decidim
69
69
  end
70
70
 
71
71
  def user_has_verified_groups?
72
- current_user && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any?
72
+ current_user && current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any?
73
73
  end
74
74
 
75
75
  def endorse_translated
@@ -54,6 +54,7 @@ module Decidim
54
54
  emendation.body = { I18n.locale => form.emendation_params.with_indifferent_access[:body] }
55
55
  emendation.component = amendable.component
56
56
  emendation.add_author(current_user, user_group)
57
+ emendation.category = amendable.category if amendable.respond_to?(:category)
57
58
  emendation.save!
58
59
  emendation
59
60
  end
@@ -12,7 +12,7 @@ module Decidim
12
12
  if user.present? && user.blocked?
13
13
  check_user_block_status(user)
14
14
  elsif user.needs_password_update?
15
- change_password_path
15
+ decidim.change_password_path
16
16
  elsif first_login_and_not_authorized?(user) && !user.admin? && !pending_redirect?(user)
17
17
  decidim_verifications.first_login_authorizations_path
18
18
  else
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module DirectUpload
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include Decidim::NeedsOrganization
9
+ skip_before_action :verify_organization
10
+
11
+ before_action :check_organization!,
12
+ :check_authenticated!,
13
+ :check_user_belongs_to_organization,
14
+ :validate_direct_upload
15
+ end
16
+
17
+ protected
18
+
19
+ def validate_direct_upload
20
+ # We skip the validation if we are in system panel. `current_admin` refers to the main system admin user.
21
+ return if current_admin.present?
22
+
23
+ head :unprocessable_entity unless [
24
+ maximum_allowed_size.try(:to_i) >= blob_args[:byte_size].try(:to_i),
25
+ content_types.any? { |pattern| pattern.match?(blob_args[:content_type]) },
26
+ content_types.any? { |pattern| pattern.match?(MiniMime.lookup_by_extension(extension)&.content_type) },
27
+ allowed_extensions.any? { |pattern| pattern.match?(extension) }
28
+ ].all?
29
+ rescue NoMethodError
30
+ head :unprocessable_entity
31
+ end
32
+
33
+ def extension
34
+ File.extname(blob_args[:filename]).delete(".")
35
+ end
36
+
37
+ def maximum_allowed_size
38
+ current_organization.settings.upload_maximum_file_size
39
+ end
40
+
41
+ def check_organization!
42
+ head :unauthorized if current_organization.blank? && current_admin.blank?
43
+ end
44
+
45
+ def check_authenticated!
46
+ head :unauthorized if current_user.blank? && current_admin.blank?
47
+ end
48
+
49
+ def check_user_belongs_to_organization
50
+ return if current_admin.present?
51
+
52
+ head :unauthorized unless current_organization == current_user.organization
53
+ end
54
+
55
+ def allowed_extensions
56
+ if user_has_elevated_role?
57
+ current_organization.settings.upload_allowed_file_extensions_admin
58
+ else
59
+ current_organization.settings.upload_allowed_file_extensions
60
+ end
61
+ end
62
+
63
+ def content_types
64
+ if user_has_elevated_role?
65
+ current_organization.settings.upload_allowed_content_types_admin
66
+ else
67
+ current_organization.settings.upload_allowed_content_types
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def user_has_elevated_role?
74
+ [
75
+ current_user&.admin?,
76
+ defined?(Decidim::Assemblies::AssembliesWithUserRole) && Decidim::Assemblies::AssembliesWithUserRole.for(current_user).any?,
77
+ defined?(Decidim::Conferences::ConferencesWithUserRole) && Decidim::Conferences::ConferencesWithUserRole.for(current_user).any?,
78
+ defined?(Decidim::ParticipatoryProcessesWithUserRole) && Decidim::ParticipatoryProcessesWithUserRole.for(current_user).any?
79
+ ].any?
80
+ end
81
+ end
82
+ end
@@ -10,7 +10,7 @@ module Decidim
10
10
  # Property is named as attribute in upload modal and passthru validator, but
11
11
  # it cannot be named as attribute here.
12
12
  attribute :property, String
13
- attribute :blob, String
13
+ attribute :blob, Decidim::Attributes::Blob
14
14
  attribute :form_class, String
15
15
 
16
16
  validates :resource_class, presence: true
@@ -140,8 +140,36 @@ module Decidim
140
140
  end
141
141
  end
142
142
 
143
+ def current_url(params = request.parameters)
144
+ return url_for(params) if respond_to?(:current_participatory_space) || respond_to?(:current_component)
145
+
146
+ each_decidim_engine do |helpers|
147
+ return helpers.url_for(params)
148
+ rescue ActionController::UrlGenerationError
149
+ # Continue to next engine in case the URL is not available.
150
+ end
151
+
152
+ main_app.url_for(params)
153
+ rescue ActionController::UrlGenerationError
154
+ "#{request.base_url}#{"?#{params.to_query}" unless params.empty?}"
155
+ end
156
+
143
157
  private
144
158
 
159
+ def each_decidim_engine
160
+ Rails.application.railties.each do |engine|
161
+ next unless engine.is_a?(Rails::Engine)
162
+ next unless engine.isolated?
163
+ next unless engine.engine_name.start_with?("decidim_")
164
+ next unless respond_to?(engine.engine_name)
165
+
166
+ yield public_send(engine.engine_name)
167
+ end
168
+ return unless respond_to?(:decidim)
169
+
170
+ yield decidim
171
+ end
172
+
145
173
  def tag_builder
146
174
  @tag_builder ||= ActionView::Helpers::TagHelper::TagBuilder.new(self)
147
175
  end
@@ -53,13 +53,14 @@ module Decidim
53
53
  # options - An optional Hash with options:
54
54
  #
55
55
  # Returns nothing.
56
- def scopes_select_field(form, name, root: false, options: {})
56
+ def scopes_select_field(form, name, root: false, options: {}, html_options: {})
57
57
  options = options.merge(include_blank: I18n.t("decidim.scopes.prompt")) unless options.has_key?(:include_blank)
58
58
 
59
59
  form.select(
60
60
  name,
61
61
  ordered_scopes_descendants_for_select(root),
62
- options
62
+ options,
63
+ html_options
63
64
  )
64
65
  end
65
66
 
@@ -138,6 +138,7 @@ module Decidim
138
138
  Decidim::Proposals::Proposal
139
139
  Decidim::Surveys::Survey
140
140
  Decidim::Assembly
141
+ Decidim::Conference
141
142
  Decidim::Initiative
142
143
  Decidim::ParticipatoryProcess
143
144
  ).select do |klass|
@@ -154,7 +155,16 @@ module Decidim
154
155
  end
155
156
 
156
157
  def self.publicable_public_resource_types
157
- @publicable_public_resource_types ||= public_resource_types.select { |klass| klass.constantize.column_names.include?("published_at") }
158
+ @publicable_public_resource_types ||= public_resource_types
159
+ .select { |klass| klass.constantize.column_names.include?("published_at") } - publicable_exceptions
160
+ end
161
+
162
+ def self.publicable_exceptions
163
+ @publicable_exceptions = %w(
164
+ Decidim::Blogs::Post
165
+ ).select do |klass|
166
+ klass.safe_constantize.present?
167
+ end
158
168
  end
159
169
 
160
170
  def self.ransackable_scopes(auth_object = nil)
@@ -53,21 +53,23 @@ $(() => {
53
53
  }
54
54
 
55
55
  $(document).on("click.zf.trigger", (event) => {
56
- const target = `#${$(event.target).data("open")}`;
56
+ const target = `#${$(event.target).data("dialogOpen")}`;
57
57
  const redirectUrl = $(event.target).data("redirectUrl");
58
58
 
59
- if (target && redirectUrl) {
60
- $("<input type='hidden' />").
61
- attr("id", "redirect_url").
62
- attr("name", "redirect_url").
63
- attr("value", redirectUrl).
64
- appendTo(`${target} form`);
65
-
66
- $(`${target} a`).attr("href", (index, href) => {
67
- const querystring = jQuery.param({"redirect_url": redirectUrl});
68
- return href + (href.match(/\?/) ? "&" : "?") + querystring;
69
- });
59
+ if (!target || !redirectUrl) {
60
+ return;
70
61
  }
62
+
63
+ $("<input type='hidden' />").
64
+ attr("id", "redirect_url").
65
+ attr("name", "redirect_url").
66
+ attr("value", redirectUrl).
67
+ appendTo(`${target} form`);
68
+
69
+ $(`${target} a`).attr("href", (index, href) => {
70
+ const querystring = jQuery.param({ "redirect_url": redirectUrl });
71
+ return href + (href.match(/\?/) ? "&" : "?") + querystring;
72
+ });
71
73
  });
72
74
 
73
75
  $(document).on("closed.zf.reveal", (event) => {
@@ -77,6 +77,9 @@ export default class UploadModal {
77
77
  uploader.upload.create((error, blob) => {
78
78
  if (error) {
79
79
  uploader.errors = [error]
80
+ this.uploadItems.replaceChild(this.createUploadItem(file, [error], { value: 100 }), item);
81
+ this.updateDropZone();
82
+
80
83
  } else {
81
84
  // attach the file hash to submit the form, when the file has been uploaded
82
85
  file.hiddenField = blob.signed_id
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  &.is-hover,
70
- &:not([disabled]):not([class*="button__text"]):hover {
70
+ &:not([disabled]):not([class*="button__text"]):not(label):hover {
71
71
  @apply text-white;
72
72
 
73
73
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)),
@@ -6,6 +6,10 @@
6
6
  @apply py-14;
7
7
  }
8
8
 
9
+ &.is-disabled label.button__secondary {
10
+ @apply text-gray-2 bg-background-3 border border-gray-2 cursor-not-allowed;
11
+ }
12
+
9
13
  &-container {
10
14
  @apply space-y-4;
11
15
  }
@@ -56,13 +56,24 @@ module Decidim
56
56
 
57
57
  condition = if klass.include?(Decidim::HasPrivateUsers)
58
58
  Arel.sql(
59
- [
60
- "decidim_action_logs.participatory_space_type = '#{manifest.model_class_name}'",
61
- "decidim_action_logs.participatory_space_id IN (#{Arel.sql(klass.visible_for(current_user).select(:id).to_sql)})"
62
- ].join(" AND ")
59
+ <<~SQL.squish
60
+ (
61
+ decidim_action_logs.participatory_space_type = '#{manifest.model_class_name}' AND#{" "}
62
+ decidim_action_logs.participatory_space_id IN (#{Arel.sql(klass.visible_for(current_user).select(:id).to_sql)})
63
+ ) OR#{" "}
64
+ (
65
+ decidim_action_logs.resource_type = '#{manifest.model_class_name}' AND#{" "}
66
+ decidim_action_logs.resource_id IN (#{Arel.sql(klass.visible_for(current_user).select(:id).to_sql)})
67
+ )
68
+ SQL
63
69
  ).to_s
64
70
  else
65
- Arel.sql("decidim_action_logs.participatory_space_type = '#{manifest.model_class_name}'").to_s
71
+ Arel.sql(
72
+ [
73
+ "decidim_action_logs.resource_type = '#{manifest.model_class_name}'",
74
+ "decidim_action_logs.participatory_space_type = '#{manifest.model_class_name}'"
75
+ ].join(" OR ")
76
+ ).to_s
66
77
  end
67
78
 
68
79
  conditions << "(#{condition})"
@@ -13,7 +13,7 @@
13
13
  <%= form_required_explanation %>
14
14
  </div>
15
15
 
16
- <%= decidim_form_for(@form, namespace: "registration", as: resource_name, url: omniauth_registrations_path(resource_name)) do |f| %>
16
+ <%= decidim_form_for(@form, namespace: "registration", as: resource_name, url: decidim.omniauth_registrations_path(resource_name)) do |f| %>
17
17
 
18
18
  <div class="form__wrapper">
19
19
  <%= f.text_field :name, help_text: t("decidim.devise.omniauth_registrations.new.username_help"), autocomplete: "name", placeholder: "John Doe" %>
@@ -1,6 +1,6 @@
1
1
  <% add_decidim_page_title(t("decidim.offline.name")) %>
2
2
 
3
- <main id="offline-fallback-html" class="text-center mt-8">
3
+ <main id="offline-fallback-html" class="text-center my-8">
4
4
  <div class="flex justify-center">
5
5
  <svg xmlns="http://www.w3.org/2000/svg" width="5rem" height="r5em" viewBox="0 0 25 25">
6
6
  <path
@@ -2,7 +2,7 @@
2
2
 
3
3
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
4
4
  <% available_locales.each do |locale| %>
5
- <link rel="alternate" href="<%= url_for(request.parameters.merge(locale:)) %>" hreflang="<%= locale %>">
5
+ <link rel="alternate" href="<%= current_url(request.parameters.merge(locale:)) %>" hreflang="<%= locale %>">
6
6
  <% end %>
7
7
 
8
8
  <meta name="twitter:card" content="summary_large_image">
@@ -796,7 +796,6 @@ ar:
796
796
  title_required: العنوان مطلوب!
797
797
  uploaded: تم التحميل
798
798
  validating: جارية المصادقة...
799
- validation_error: خطأ في المصادقة!
800
799
  select_file: اختيار ملف
801
800
  upload_help:
802
801
  dropzone: قم بإسقاط الملفات هنا أو انقر للتحميل
@@ -926,7 +926,6 @@ bg:
926
926
  title_required: Заглавието е задължително!
927
927
  uploaded: Качено
928
928
  validating: Валидиране...
929
- validation_error: Грешка при валидирането!
930
929
  select_file: Избор на файл
931
930
  upload_help:
932
931
  dropzone: Пуснете файлове тук или щракнете върху бутона за качване
@@ -926,7 +926,7 @@ ca:
926
926
  title_required: Un títol és necessari!
927
927
  uploaded: Pujat
928
928
  validating: Validant...
929
- validation_error: Error de validació!
929
+ validation_error: Error en la validació! Si us plau, revisa que l'arxiu tingui una extensió o una mida permesa.
930
930
  select_file: Selecciona un fitxer
931
931
  upload_help:
932
932
  dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
@@ -391,6 +391,7 @@ cs:
391
391
  visit_link: Navštívit odkaz
392
392
  documents:
393
393
  component_documents:
394
+ dummy: Zástupné dokumenty ke komponentům
394
395
  meetings: Dokumenty ze schůzky
395
396
  documents: Dokumenty
396
397
  related_documents: Související dokumenty
@@ -968,7 +969,7 @@ cs:
968
969
  title_required: Název je povinný!
969
970
  uploaded: Nahráno
970
971
  validating: Probíhá ověřování...
971
- validation_error: Chyba ověření!
972
+ validation_error: Chyba ověření! Zkontrolujte, zda má soubor povolenou příponu nebo velikost.
972
973
  select_file: Vyberte soubor
973
974
  upload_help:
974
975
  dropzone: Přetáhněte soubory sem nebo klikněte na tlačítko pro nahrání
@@ -931,7 +931,7 @@ de:
931
931
  title_required: Titel ist erforderlich!
932
932
  uploaded: Hochgeladen
933
933
  validating: Wird validiert...
934
- validation_error: Validierungsfehler!
934
+ validation_error: Validierungsfehler! Überprüfen Sie, ob die Datei einen erlaubten Dateityp oder Größe hat.
935
935
  select_file: Datei auswählen
936
936
  upload_help:
937
937
  dropzone: Dateien hier ablegen oder die Schaltfläche zum Hochladen benutzen
@@ -1475,7 +1475,7 @@ de:
1475
1475
  more: Mehr
1476
1476
  unfold: Entfalten
1477
1477
  filter_form_help:
1478
- help: Das untenstehende Formular filtert die Suchergebnisse dynamisch, wenn die Suchbedingungen geändert werden.
1478
+ help: Die Suchresultate werden bei geänderten Filtereinstellungen automatisch aktualisiert.
1479
1479
  skip: Zu Ergebnissen springen
1480
1480
  flag_modal:
1481
1481
  already_reported: Dieser Inhalt wurde bereits gemeldet und wird von einem Administrator überprüft.
@@ -702,7 +702,6 @@ el:
702
702
  title_required: Ο τίτλος απαιτείται!
703
703
  uploaded: Φορτώθηκε
704
704
  validating: Επικύρωση...
705
- validation_error: Σφάλμα επικύρωσης!
706
705
  select_file: Επιλέξτε αρχείο
707
706
  upload_help:
708
707
  dropzone: Αποθέστε αρχεία εδώ ή κάντε κλικ στο κουμπί για φόρτωση
@@ -933,7 +933,7 @@ en:
933
933
  title_required: Title is required!
934
934
  uploaded: Uploaded
935
935
  validating: Validating...
936
- validation_error: Validation error!
936
+ validation_error: Validation error! Check that the file has an allowed extension or size.
937
937
  select_file: Select file
938
938
  upload_help:
939
939
  dropzone: Drop files here or click the button to upload
@@ -929,7 +929,7 @@ es-MX:
929
929
  title_required: '¡Se requiere un título!'
930
930
  uploaded: Subido
931
931
  validating: Validando...
932
- validation_error: '¡Error de validación!'
932
+ validation_error: '¡Error en la validación! Por favor, comprueba que el archivo tenga una extensión o tamaño permitidos.'
933
933
  select_file: Seleccione un archivo
934
934
  upload_help:
935
935
  dropzone: Arrastra los archivos aquí o haz clic en el botón para subirlos
@@ -929,7 +929,7 @@ es-PY:
929
929
  title_required: '¡Se requiere un título!'
930
930
  uploaded: Subido
931
931
  validating: Validando...
932
- validation_error: '¡Error de validación!'
932
+ validation_error: '¡Error en la validación! Por favor, comprueba que el archivo tenga una extensión o tamaño permitidos.'
933
933
  select_file: Seleccione un archivo
934
934
  upload_help:
935
935
  dropzone: Arrastra los archivos aquí o haz clic en el botón para subirlos
@@ -926,7 +926,7 @@ es:
926
926
  title_required: '¡Se requiere un título!'
927
927
  uploaded: Subido
928
928
  validating: Validando...
929
- validation_error: '¡Error de validación!'
929
+ validation_error: '¡Error en la validación! Por favor, comprueba que el archivo tenga una extensión o tamaño permitidos.'
930
930
  select_file: Seleccione un archivo
931
931
  upload_help:
932
932
  dropzone: Arrastra los archivos aquí o haz clic en el botón para subirlos
@@ -902,9 +902,9 @@ eu:
902
902
  extension_allowlist: 'Onartutako formatuak: %{extensions}'
903
903
  upload:
904
904
  labels:
905
- add_attachment: Erantsi eranskina
906
- add_file: Erantsi fitxategiak
907
- add_image: Erantsi irudia
905
+ add_attachment: Gehitu eranskina
906
+ add_file: Gehitu fitxategiak
907
+ add_image: Gehitu irudia
908
908
  edit_image: Editatu irudia
909
909
  error: Akatsa!
910
910
  file_size_too_large: 'Fitxategiaren tamaina handiegia da! Maximun fitxategiaren tamaina: %{megabytes}} MB'
@@ -916,7 +916,7 @@ eu:
916
916
  title_required: Izenburua behar da!
917
917
  uploaded: Igota
918
918
  validating: Balidatzen...
919
- validation_error: Errorea baliozkotzean!
919
+ validation_error: Balioztatze-akatsa! Egiaztatu artxiboak luzapen edo tamaina baimendua duela.
920
920
  select_file: Hautatu fitxategia
921
921
  upload_help:
922
922
  dropzone: Bota artxiboak hona edo egin klik igotzeko
@@ -926,7 +926,7 @@ fi-pl:
926
926
  title_required: Tiedosto-otsikko tarvitaan!
927
927
  uploaded: Ladattu
928
928
  validating: Validoidaan...
929
- validation_error: Validointivirhe!
929
+ validation_error: Virhe tiedoston tarkastamisessa! Varmista, että tiedostopääte ja tiedoston koko vastaavat palvelun asettamia rajoituksia.
930
930
  select_file: Valitse tiedosto
931
931
  upload_help:
932
932
  dropzone: Pudota tiedostot tähän tai paina viereistä nappia ladataksesi tiedostoja
@@ -926,7 +926,7 @@ fi:
926
926
  title_required: Tiedosto-otsikko tarvitaan!
927
927
  uploaded: Ladattu
928
928
  validating: Validoidaan...
929
- validation_error: Validointivirhe!
929
+ validation_error: Virhe tiedoston tarkastamisessa! Varmista, että tiedostopääte ja tiedoston koko vastaavat palvelun asettamia rajoituksia.
930
930
  select_file: Valitse tiedosto
931
931
  upload_help:
932
932
  dropzone: Pudota tiedostot tähän tai paina viereistä nappia ladataksesi tiedostoja
@@ -924,7 +924,7 @@ fr-CA:
924
924
  title_required: Le titre est requis !
925
925
  uploaded: Téléchargé
926
926
  validating: Validation en cours...
927
- validation_error: Erreur de validation !
927
+ validation_error: Erreur de validation ! Vérifiez que le fichier a une extension ou taille autorisée.
928
928
  select_file: Sélectionnez un fichier
929
929
  upload_help:
930
930
  dropzone: Déposez des fichiers ici ou cliquez sur le bouton pour télécharger
@@ -924,7 +924,7 @@ fr:
924
924
  title_required: Le titre est requis !
925
925
  uploaded: Téléchargé
926
926
  validating: Validation en cours...
927
- validation_error: Erreur de validation !
927
+ validation_error: Erreur de validation ! Vérifiez que le fichier a une extension ou taille autorisée.
928
928
  select_file: Sélectionnez un fichier
929
929
  upload_help:
930
930
  dropzone: Déposez des fichiers ici ou cliquez sur le bouton pour télécharger
@@ -489,7 +489,6 @@ gl:
489
489
  title_required: O título é obrigatorio!
490
490
  uploaded: Cargado
491
491
  validating: Validando...
492
- validation_error: Erro de validación!
493
492
  upload_help:
494
493
  explanation: Guía para %{attribute}
495
494
  gamification:
@@ -832,7 +832,6 @@ hu:
832
832
  title_required: A cím megadása kötelező!
833
833
  uploaded: Feltöltve
834
834
  validating: Ellenőrzés...
835
- validation_error: Hitelesítési hiba!
836
835
  select_file: Fájl kiválasztása
837
836
  upload_help:
838
837
  dropzone: Húzza ide a fájlt vagy használja a gombot a feltöltéshez
@@ -908,7 +908,7 @@ ja:
908
908
  title_required: タイトルが必要です
909
909
  uploaded: アップロード済
910
910
  validating: 検証中...
911
- validation_error: 検証エラー
911
+ validation_error: 'バリデーションエラー: ファイルの拡張子またはサイズに問題がないか確認してください。'
912
912
  select_file: ファイルを選択
913
913
  upload_help:
914
914
  dropzone: ここにファイルをドロップするか、ボタンをクリックしてアップロードします
@@ -1644,10 +1644,10 @@ ja:
1644
1644
  ignore: |-
1645
1645
  招待を受け入れたくない場合は、このメールを無視してください。<br />上記のリンクにアクセスし、アカウントIDとパスワードを設定するまで、あなたのアカウントは作成されません。
1646
1646
  invited_you_as_admin: "%{invited_by} さんが %{application}の管理者としてあなたを招待しました。以下のリンクから承認できます。"
1647
- invited_you_as_private_user: "%{invited_by} が %{application}の非公開参加者としてあなたを招待しました。以下のリンクから承認できます。"
1647
+ invited_you_as_private_user: "%{invited_by} が %{application} のプライベート参加者としてあなたを招待しました。以下のリンクから承認できます。"
1648
1648
  someone_invited_you: '%{application} にあなたを招待しました。以下のリンクから受け入れることができます。'
1649
1649
  someone_invited_you_as_admin: '%{application} の管理者としてあなたを招待しました。以下のリンクから承認できます。'
1650
- someone_invited_you_as_private_user: '%{application}の非公開参加者としてあなたを招待しました。以下のリンクから承認できます。'
1650
+ someone_invited_you_as_private_user: '%{application} のプライベート参加者としてあなたは招待されています。以下のリンクから承認できます。'
1651
1651
  subject: 招待の説明
1652
1652
  invite_admin:
1653
1653
  subject: '%{organization} を管理するために招待されています'
@@ -916,7 +916,6 @@ lt:
916
916
  title_required: Reikalingas pavadinimas!
917
917
  uploaded: Įkelta
918
918
  validating: Tvirtinama...
919
- validation_error: Tvirtinimo klaida!
920
919
  select_file: Pasirinkite rinkmeną
921
920
  upload_help:
922
921
  dropzone: Užvilkite rinkmeną čia arba spauskite įkėlimo mygtuką
@@ -918,7 +918,6 @@ pl:
918
918
  title_required: Tytul jest obowiazkowy!
919
919
  uploaded: Przesłano
920
920
  validating: Weryfikowanie...
921
- validation_error: Błąd walidacji!
922
921
  select_file: Wybierz plik
923
922
  upload_help:
924
923
  dropzone: Upuść pliki tutaj lub użyj przycisku do przesłania