decidim-core 0.29.0 → 0.29.1

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