decidim-forms 0.26.7 → 0.27.0.rc1

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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/forms/admin/update_questionnaire.rb +13 -8
  3. data/app/commands/decidim/forms/answer_questionnaire.rb +1 -1
  4. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +2 -2
  5. data/app/forms/decidim/forms/admin/display_condition_form.rb +3 -3
  6. data/app/models/decidim/forms/answer.rb +2 -2
  7. data/app/models/decidim/forms/display_condition.rb +1 -1
  8. data/app/models/decidim/forms/questionnaire.rb +7 -0
  9. data/app/packs/src/decidim/forms/admin/forms.js +0 -3
  10. data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +13 -8
  11. data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +5 -3
  12. data/app/presenters/decidim/forms/admin_log/questionnaire_presenter.rb +35 -0
  13. data/app/queries/decidim/forms/questionnaire_participant.rb +1 -1
  14. data/app/queries/decidim/forms/questionnaire_participants.rb +1 -1
  15. data/app/queries/decidim/forms/questionnaire_user_answers.rb +1 -1
  16. data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +1 -1
  17. data/app/views/decidim/forms/questionnaires/_answer.html.erb +2 -2
  18. data/app/views/decidim/forms/questionnaires/show.html.erb +5 -3
  19. data/config/locales/am-ET.yml +1 -0
  20. data/config/locales/ar.yml +1 -0
  21. data/config/locales/bg.yml +1 -0
  22. data/config/locales/ca.yml +7 -6
  23. data/config/locales/cs.yml +6 -5
  24. data/config/locales/da.yml +1 -0
  25. data/config/locales/de.yml +1 -4
  26. data/config/locales/el.yml +1 -4
  27. data/config/locales/en.yml +5 -5
  28. data/config/locales/eo.yml +1 -0
  29. data/config/locales/es-MX.yml +6 -5
  30. data/config/locales/es-PY.yml +6 -5
  31. data/config/locales/es.yml +6 -5
  32. data/config/locales/et.yml +1 -0
  33. data/config/locales/eu.yml +21 -39
  34. data/config/locales/fi-plain.yml +6 -5
  35. data/config/locales/fi.yml +6 -5
  36. data/config/locales/fr-CA.yml +3 -5
  37. data/config/locales/fr.yml +3 -5
  38. data/config/locales/ga-IE.yml +1 -0
  39. data/config/locales/gl.yml +5 -0
  40. data/config/locales/hr.yml +1 -0
  41. data/config/locales/hu.yml +4 -0
  42. data/config/locales/id-ID.yml +1 -0
  43. data/config/locales/is-IS.yml +2 -1
  44. data/config/locales/it.yml +1 -4
  45. data/config/locales/ja.yml +6 -5
  46. data/config/locales/ko.yml +1 -0
  47. data/config/locales/lb.yml +1 -4
  48. data/config/locales/lt.yml +1 -188
  49. data/config/locales/lv.yml +1 -4
  50. data/config/locales/mt.yml +1 -0
  51. data/config/locales/nl.yml +1 -4
  52. data/config/locales/no.yml +1 -4
  53. data/config/locales/om-ET.yml +1 -0
  54. data/config/locales/pl.yml +5 -9
  55. data/config/locales/pt-BR.yml +2 -5
  56. data/config/locales/pt.yml +1 -4
  57. data/config/locales/ro-RO.yml +1 -6
  58. data/config/locales/ru.yml +1 -0
  59. data/config/locales/si-LK.yml +1 -0
  60. data/config/locales/sk.yml +1 -0
  61. data/config/locales/sl.yml +1 -0
  62. data/config/locales/so-SO.yml +1 -0
  63. data/config/locales/sr-CS.yml +1 -0
  64. data/config/locales/sv.yml +1 -4
  65. data/config/locales/sw-KE.yml +1 -0
  66. data/config/locales/ti-ER.yml +1 -0
  67. data/config/locales/tr-TR.yml +1 -4
  68. data/config/locales/uk.yml +1 -0
  69. data/config/locales/val-ES.yml +1 -0
  70. data/config/locales/vi.yml +1 -0
  71. data/config/locales/zh-CN.yml +1 -4
  72. data/config/locales/zh-TW.yml +1 -190
  73. data/lib/decidim/exporters/form_pdf.rb +2 -2
  74. data/lib/decidim/forms/{data_portability_user_answers_serializer.rb → download_your_data_user_answers_serializer.rb} +2 -2
  75. data/lib/decidim/forms/test/factories.rb +22 -13
  76. data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +2 -25
  77. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +2 -2
  78. data/lib/decidim/forms/user_answers_serializer.rb +2 -2
  79. data/lib/decidim/forms/version.rb +1 -1
  80. data/lib/decidim/forms.rb +1 -1
  81. metadata +14 -19
  82. data/config/locales/fa-IR.yml +0 -1
  83. data/config/locales/gn-PY.yml +0 -1
  84. data/config/locales/ka-GE.yml +0 -1
  85. data/config/locales/kaa.yml +0 -1
  86. data/config/locales/lo-LA.yml +0 -1
  87. data/config/locales/oc-FR.yml +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a6c3fd0879cfa3e752f2ca198270b8547f3eb59819c04728e430f832c1a7f27
4
- data.tar.gz: 8398132631b131f9def4c54e22677eb986922cb0881d01153a2f56334b148768
3
+ metadata.gz: b63c51b898c731a6ac659b9160f4b5bf5d2404cea0aec58cb5fdffff1a29a9b0
4
+ data.tar.gz: e4a6cf68a62b0188511ba30c3fceda43c30a93bca8ab4a917edf608b8c531e1a
5
5
  SHA512:
6
- metadata.gz: 7db2ce29d309486cb9e7fb6459919b7414b8415ba5a31cbbe4b33e56f89f5c6723d8f2df10fc9c450d884eca963d321a7b4f73c85739159fcaf8a0dd34af93d7
7
- data.tar.gz: f5f3505524bb81b549e3da56bf38b56cd0c96788438844238cd14aa162c52e6b5cb23aa5ce43cd421407911ee094d9c739616e18b3fdb27f7006c5f88e6f769d
6
+ metadata.gz: 305a8eb86bf0c9d3afa0b861174ff41c79519b4f5aadd84975cccfdc9c2fd2fa2c12d1a14159a9b0da674d81233900802d271b38d078956ebd8bdd119287cbb4
7
+ data.tar.gz: ed601e91289f962ac5f647b205dafd86c61429e63b3401d210ccd0c345308bfcfc4f7ab5da761056b7335e66d0b2fe95c62ef4189a0dbf5e38b79d8e446ebab2
@@ -5,14 +5,15 @@ module Decidim
5
5
  module Admin
6
6
  # This command is executed when the user changes a Questionnaire from the admin
7
7
  # panel.
8
- class UpdateQuestionnaire < Rectify::Command
8
+ class UpdateQuestionnaire < Decidim::Command
9
9
  # Initializes a UpdateQuestionnaire Command.
10
10
  #
11
11
  # form - The form from which to get the data.
12
12
  # questionnaire - The current instance of the questionnaire to be updated.
13
- def initialize(form, questionnaire)
13
+ def initialize(form, questionnaire, user)
14
14
  @form = form
15
15
  @questionnaire = questionnaire
16
+ @user = user
16
17
  end
17
18
 
18
19
  # Updates the questionnaire if valid.
@@ -21,13 +22,17 @@ module Decidim
21
22
  def call
22
23
  return broadcast(:invalid) if @form.invalid?
23
24
 
24
- Decidim::Forms::Questionnaire.transaction do
25
- if @questionnaire.questions_editable?
26
- update_questionnaire_questions
27
- delete_answers unless @questionnaire.published?
28
- end
25
+ Decidim.traceability.perform_action!("update",
26
+ @questionnaire,
27
+ @user) do
28
+ Decidim::Forms::Questionnaire.transaction do
29
+ if @questionnaire.questions_editable?
30
+ update_questionnaire_questions
31
+ delete_answers unless @questionnaire.published?
32
+ end
29
33
 
30
- update_questionnaire
34
+ update_questionnaire
35
+ end
31
36
  end
32
37
 
33
38
  broadcast(:ok)
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Forms
5
5
  # This command is executed when the user answers a Questionnaire.
6
- class AnswerQuestionnaire < Rectify::Command
6
+ class AnswerQuestionnaire < Decidim::Command
7
7
  include ::Decidim::MultipleAttachmentsMethods
8
8
 
9
9
  # Initializes a AnswerQuestionnaire Command.
@@ -22,7 +22,7 @@ module Decidim
22
22
 
23
23
  if defined? Decidim::Templates::Admin
24
24
  include Decidim::Templates::Admin::Concerns::Templatable
25
- helper Decidim::Templates::Admin::TemplatesHelper
25
+ helper Decidim::DatalistSelectHelper
26
26
 
27
27
  def templatable_type
28
28
  "Decidim::Forms::Questionnaire"
@@ -47,7 +47,7 @@ module Decidim
47
47
  params["published_at"] = Time.current if params.has_key? "save_and_publish"
48
48
  @form = form(Admin::QuestionnaireForm).from_params(params)
49
49
 
50
- Admin::UpdateQuestionnaire.call(@form, questionnaire) do
50
+ Admin::UpdateQuestionnaire.call(@form, questionnaire, current_user) do
51
51
  on(:ok) do
52
52
  # i18n-tasks-use t("decidim.forms.admin.questionnaires.update.success")
53
53
  flash[:notice] = I18n.t("update.success", scope: i18n_flashes_scope)
@@ -55,21 +55,21 @@ module Decidim
55
55
  #
56
56
  # Returns a Decidim::Forms::Question
57
57
  def question
58
- @question ||= Question.find_by(id: @decidim_question_id)
58
+ @question ||= Question.find_by(id: decidim_question_id)
59
59
  end
60
60
 
61
61
  # Finds the Condition Question from the given decidim_condition_question_id
62
62
  #
63
63
  # Returns a Decidim::Forms::Question
64
64
  def condition_question
65
- @condition_question ||= Question.find_by(id: @decidim_condition_question_id)
65
+ @condition_question ||= Question.find_by(id: decidim_condition_question_id)
66
66
  end
67
67
 
68
68
  # Finds the Answer Option from the given decidim_answer_option_id
69
69
  #
70
70
  # Returns a Decidim::Forms::AnswerOption
71
71
  def answer_option
72
- @answer_option ||= AnswerOption.find_by(id: @decidim_answer_option_id)
72
+ @answer_option ||= AnswerOption.find_by(id: decidim_answer_option_id)
73
73
  end
74
74
 
75
75
  private
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Forms
5
5
  # The data store for an Answer in the Decidim::Forms
6
6
  class Answer < Forms::ApplicationRecord
7
- include Decidim::DataPortability
7
+ include Decidim::DownloadYourData
8
8
  include Decidim::NewsletterParticipant
9
9
  include Decidim::HasAttachments
10
10
 
@@ -29,7 +29,7 @@ module Decidim
29
29
  end
30
30
 
31
31
  def self.export_serializer
32
- Decidim::Forms::DataPortabilityUserAnswersSerializer
32
+ Decidim::Forms::DownloadYourDataUserAnswersSerializer
33
33
  end
34
34
 
35
35
  def self.newsletter_participant_ids(component)
@@ -33,7 +33,7 @@ module Decidim
33
33
  when "not_equal"
34
34
  answer_form.choices.pluck(:answer_option_id).exclude?(answer_option.id)
35
35
  when "match"
36
- condition_value.values.reject(&:blank?).any? { |value| answer_form_matches?(answer_form, value) }
36
+ condition_value.values.compact_blank.any? { |value| answer_form_matches?(answer_form, value) }
37
37
  end
38
38
  end
39
39
 
@@ -7,6 +7,7 @@ module Decidim
7
7
  include Decidim::Templates::Templatable if defined? Decidim::Templates::Templatable
8
8
  include Decidim::Publicable
9
9
  include Decidim::TranslatableResource
10
+ include Decidim::Traceable
10
11
 
11
12
  translatable_fields :title, :description, :tos
12
13
  belongs_to :questionnaire_for, polymorphic: true
@@ -16,6 +17,8 @@ module Decidim
16
17
 
17
18
  after_initialize :set_default_salt
18
19
 
20
+ attr_accessor :questionnaire_template_id
21
+
19
22
  # Public: returns whether the questionnaire questions can be modified or not.
20
23
  def questions_editable?
21
24
  has_component = questionnaire_for.respond_to? :component
@@ -32,6 +35,10 @@ module Decidim
32
35
  created_at.to_i == updated_at.to_i && questions.empty?
33
36
  end
34
37
 
38
+ def self.log_presenter_class_for(_log)
39
+ Decidim::Forms::AdminLog::QuestionnairePresenter
40
+ end
41
+
35
42
  private
36
43
 
37
44
  # salt is used to generate secure hash in anonymous answers
@@ -11,7 +11,6 @@ import createSortList from "src/decidim/admin/sort_list.component"
11
11
  import createDynamicFields from "src/decidim/admin/dynamic_fields.component"
12
12
  import createFieldDependentInputs from "src/decidim/admin/field_dependent_inputs.component"
13
13
  import createQuillEditor from "src/decidim/editor"
14
- import initLanguageChangeSelect from "src/decidim/admin/choose_language"
15
14
 
16
15
  export default function createEditableForm() {
17
16
  const wrapperSelector = ".questionnaire-questions";
@@ -393,8 +392,6 @@ export default function createEditableForm() {
393
392
 
394
393
  autoLabelByPosition.run();
395
394
  autoButtonsByPosition.run();
396
-
397
- initLanguageChangeSelect($field.find("select.language-change").toArray());
398
395
  },
399
396
  onRemoveField: ($field) => {
400
397
  autoLabelByPosition.run();
@@ -6,10 +6,18 @@ module Decidim
6
6
  #
7
7
  # Presenter for questionnaire answer
8
8
  #
9
- class QuestionnaireAnswerPresenter < Rectify::Presenter
9
+ class QuestionnaireAnswerPresenter < SimpleDelegator
10
+ delegate :content_tag, :safe_join, to: :view_context
11
+
10
12
  include Decidim::TranslatableAttributes
11
13
 
12
- attribute :answer, Decidim::Forms::Answer
14
+ def answer
15
+ __getobj__.fetch(:answer)
16
+ end
17
+
18
+ def view_context
19
+ __getobj__.fetch(:view_context, ActionController::Base.new.view_context)
20
+ end
13
21
 
14
22
  def question
15
23
  translated_attribute(answer.question.body)
@@ -46,14 +54,11 @@ module Decidim
46
54
  # rubocop:disable Style/StringConcatenation
47
55
  # Interpolating strings that are `html_safe` is problematic with Rails.
48
56
  content_tag :li do
49
- link_to(attachment.url, target: "_blank", rel: "noopener noreferrer") do
50
- content_tag(:span) do
51
- translated_attribute(attachment.title).presence ||
52
- I18n.t("download_attachment", scope: "decidim.forms.questionnaire_answer_presenter")
53
- end + " " + content_tag(:small) do
57
+ link_to(translated_attribute(attachment.title), attachment.url) +
58
+ " " +
59
+ content_tag(:small) do
54
60
  "#{attachment.file_type} #{number_to_human_size(attachment.file_size)}"
55
61
  end
56
- end
57
62
  end
58
63
  # rubocop:enable Style/StringConcatenation
59
64
  end
@@ -6,8 +6,10 @@ module Decidim
6
6
  #
7
7
  # Presenter for questionnaire response
8
8
  #
9
- class QuestionnaireParticipantPresenter < Rectify::Presenter
10
- attribute :participant, Decidim::Forms::Answer
9
+ class QuestionnaireParticipantPresenter < SimpleDelegator
10
+ def participant
11
+ __getobj__.fetch(:participant)
12
+ end
11
13
 
12
14
  def session_token
13
15
  participant.session_token || "-"
@@ -28,7 +30,7 @@ module Decidim
28
30
  end
29
31
 
30
32
  def status
31
- t(registered? ? "registered" : "unregistered", scope: "decidim.forms.user_answers_serializer")
33
+ I18n.t(registered? ? "registered" : "unregistered", scope: "decidim.forms.user_answers_serializer")
32
34
  end
33
35
 
34
36
  def answers
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Forms
5
+ module AdminLog
6
+ # This class holds the logic to present a `Decidim::Forms::Questionnaire`
7
+ # for the `AdminLog` log.
8
+ #
9
+ # Usage should be automatic and you shouldn't need to call this class
10
+ # directly, but here's an example:
11
+ #
12
+ # action_log = Decidim::ActionLog.last
13
+ # view_helpers # => this comes from the views
14
+ # QuestionnairePresenter.new(action_log, view_helpers).present
15
+ class QuestionnairePresenter < Decidim::Log::BasePresenter
16
+ private
17
+
18
+ def action_string
19
+ case action
20
+ when "update"
21
+ "decidim.forms.admin_log.questionnaire.#{action}"
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ def i18n_params
28
+ super.merge(
29
+ meeting_name: resource_presenter.try(:present)
30
+ )
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Forms
5
5
  # A class used to collect user answers for a questionnaire
6
- class QuestionnaireParticipant < Rectify::Query
6
+ class QuestionnaireParticipant < Decidim::Query
7
7
  # Syntactic sugar to initialize the class and return the queried objects.
8
8
  #
9
9
  # questionnaire - a Questionnaire object
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Forms
5
5
  # A class used to collect user answers for a questionnaire
6
- class QuestionnaireParticipants < Rectify::Query
6
+ class QuestionnaireParticipants < Decidim::Query
7
7
  # Syntactic sugar to initialize the class and return the queried objects.
8
8
  #
9
9
  # questionnaire - a Questionnaire object
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Forms
5
5
  # A class used to collect user answers for a questionnaire
6
- class QuestionnaireUserAnswers < Rectify::Query
6
+ class QuestionnaireUserAnswers < Decidim::Query
7
7
  # Syntactic sugar to initialize the class and return the queried objects.
8
8
  #
9
9
  # questionnaire - a Questionnaire object
@@ -31,7 +31,7 @@
31
31
  <%= form.translated :editor, :description, toolbar: :full, lines: 30, label: t("models.components.description", scope: "decidim.forms.admin") %>
32
32
  </div>
33
33
  <div class="row column">
34
- <%= form.translated :editor, :tos, toolbar: :content, lines: 10, label: t("models.components.tos", scope: "decidim.forms.admin") %>
34
+ <%= form.translated :editor, :tos, toolbar: :full, lines: 10, label: t("models.components.tos", scope: "decidim.forms.admin") %>
35
35
  </div>
36
36
  </div>
37
37
  </div>
@@ -7,7 +7,7 @@
7
7
  <%= label_tag field_id, translated_attribute(answer.question.body), class: "questionnaire-title_and_description" %>
8
8
  <% if translated_attribute(answer.question.description).present? %>
9
9
  <div class="help-title_and_description ">
10
- <%= decidim_sanitize_editor_admin translated_attribute(answer.question.description) %>
10
+ <%= decidim_sanitize_editor translated_attribute(answer.question.description) %>
11
11
  </div>
12
12
  <% end %>
13
13
  <%= render partial: "decidim/forms/questionnaires/answers/#{answer.question.question_type}", locals: { answer: answer, answer_form: answer_form, answer_idx: answer_idx, field_id: field_id, disabled: disabled } %>
@@ -22,7 +22,7 @@
22
22
 
23
23
  <% if translated_attribute(answer.question.description).present? %>
24
24
  <div class="help-text">
25
- <%= decidim_sanitize_editor_admin translated_attribute(answer.question.description) %>
25
+ <%= decidim_sanitize_editor translated_attribute(answer.question.description) %>
26
26
  </div>
27
27
  <% end %>
28
28
 
@@ -5,13 +5,13 @@
5
5
 
6
6
  <% columns = allow_answers? && visitor_can_answer? && @form.responses.map(&:question).any?(&:matrix?) ? 9 : 6 %>
7
7
 
8
- <%= render partial: "decidim/shared/component_announcement" if current_component.manifest_name == "surveys" %>
8
+ <%= render partial: "decidim/shared/component_announcement" %>
9
9
 
10
10
  <div class="row columns">
11
11
  <h2 class="section-heading"><%= translated_attribute questionnaire.title %></h2>
12
12
  <div class="row">
13
13
  <div class="columns large-<%= columns %> medium-centered lead">
14
- <%= decidim_sanitize_editor_admin translated_attribute questionnaire.description %>
14
+ <%= decidim_sanitize_editor translated_attribute questionnaire.description %>
15
15
  </div>
16
16
  </div>
17
17
  </div>
@@ -151,4 +151,6 @@
151
151
  </div>
152
152
  </div>
153
153
 
154
- <%= javascript_pack_tag "decidim_forms" %>
154
+ <% content_for :js_content do %>
155
+ <%= javascript_pack_tag "decidim_forms" %>
156
+ <% end %>
@@ -1 +1,2 @@
1
+ ---
1
2
  am:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  ar:
2
3
  activemodel:
3
4
  attributes:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  bg:
2
3
  activemodel:
3
4
  attributes:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  ca:
2
3
  activemodel:
3
4
  attributes:
@@ -121,6 +122,9 @@ ca:
121
122
  update:
122
123
  invalid: S'ha produït un error en desar el formulari.
123
124
  success: Formulari desat correctament.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} ha actualitzat el qüestionari %{resource_name}"
124
128
  errors:
125
129
  answer:
126
130
  body: El camp no pot estar en blanc
@@ -128,10 +132,9 @@ ca:
128
132
  extension_allowlist: 'Formats d''arxiu acceptats:'
129
133
  images:
130
134
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Aquesta imatge medirà:'
132
135
  processors:
133
- resize_and_pad: Redimensionat i ajustat a
134
- resize_to_fit: Redimensionada per ajustar-la
136
+ resize_and_pad: Aquesta imatge serà redimensionada i ajustada a %{dimensions}.
137
+ resize_to_fit: Aquesta imatge serà redimensionada per ajustar-se a %{dimensions}.
135
138
  question_types:
136
139
  files: Arxius
137
140
  long_answer: Resposta llarga
@@ -142,8 +145,6 @@ ca:
142
145
  single_option: Opció única
143
146
  sorting: Ordenació
144
147
  title_and_description: Títol i descripció
145
- questionnaire_answer_presenter:
146
- download_attachment: Descarregar l'arxiu adjunt
147
148
  questionnaires:
148
149
  answer:
149
150
  invalid: S'han produït un error en respondre el formulari.
@@ -174,7 +175,7 @@ ca:
174
175
  tos_agreement: En participar acceptes els Termes i condicions d'ús
175
176
  step_navigation:
176
177
  show:
177
- are_you_sure: Aquesta acció no es pot desfer i no podràs editar les teves respostes. Segur?
178
+ are_you_sure: Aquesta acció no es pot desfer i no podràs editar les teves respostes. Estàs segura?
178
179
  back: Enrere
179
180
  continue: Continuar
180
181
  submit: Enviar respostes
@@ -1,3 +1,4 @@
1
+ ---
1
2
  cs:
2
3
  activemodel:
3
4
  attributes:
@@ -121,6 +122,9 @@ cs:
121
122
  update:
122
123
  invalid: Při ukládání dotazníku došlo k chybám.
123
124
  success: Formulář byl úspěšně uložen.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} aktualizoval dotazník %{resource_name}"
124
128
  errors:
125
129
  answer:
126
130
  body: Tělo nemůže být prázdné
@@ -128,10 +132,9 @@ cs:
128
132
  extension_allowlist: 'Akceptované formáty:'
129
133
  images:
130
134
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Tento obrázek bude:'
132
135
  processors:
133
- resize_and_pad: Zmenšeno a odsazeno k
134
- resize_to_fit: Upravena velikost na vyplnění
136
+ resize_and_pad: Tento obrázek bude změněn a vyplněn na %{dimensions}.
137
+ resize_to_fit: Tento obrázek bude změněn a vyplněn na %{dimensions}.
135
138
  question_types:
136
139
  files: Soubory
137
140
  long_answer: Dlouhá odpověď
@@ -142,8 +145,6 @@ cs:
142
145
  single_option: Jedna možnost
143
146
  sorting: Třídění
144
147
  title_and_description: Název a popis
145
- questionnaire_answer_presenter:
146
- download_attachment: Stáhnout přílohu
147
148
  questionnaires:
148
149
  answer:
149
150
  invalid: Při odpovědi na dotazník došlo k chybám.
@@ -1 +1,2 @@
1
+ ---
1
2
  da:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  de:
2
3
  activemodel:
3
4
  attributes:
@@ -128,10 +129,6 @@ de:
128
129
  extension_allowlist: 'Gültige Formate:'
129
130
  images:
130
131
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Das Bild wird:'
132
- processors:
133
- resize_and_pad: in der Größe angepasst und gepolstert zu
134
- resize_to_fit: in der Größe verändert, damit es passt
135
132
  question_types:
136
133
  files: Dateien
137
134
  long_answer: Lange Antwort
@@ -1,3 +1,4 @@
1
+ ---
1
2
  el:
2
3
  activemodel:
3
4
  attributes:
@@ -69,10 +70,6 @@ el:
69
70
  extension_allowlist: 'Αποδεκτές μορφές:'
70
71
  images:
71
72
  dimensions: "Π %{width} x Υ %{height} px"
72
- dimensions_info: 'Για αυτήν την εικόνα θα:'
73
- processors:
74
- resize_and_pad: Αλλάξει το μέγεθος και θα συμπληρωθεί σε
75
- resize_to_fit: Αλλάξει το μέγεθος για προσαρμογή
76
73
  question_types:
77
74
  long_answer: Μεγάλη απάντηση
78
75
  matrix_multiple: Πίνακας (πολλαπλή επιλογή)
@@ -122,6 +122,9 @@ en:
122
122
  update:
123
123
  invalid: There was a problem saving the form.
124
124
  success: Form successfully saved.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} updated the %{resource_name} questionnaire"
125
128
  errors:
126
129
  answer:
127
130
  body: Body can't be blank
@@ -129,10 +132,9 @@ en:
129
132
  extension_allowlist: 'Accepted formats:'
130
133
  images:
131
134
  dimensions: "%{width} x %{height} px"
132
- dimensions_info: 'This image will be:'
133
135
  processors:
134
- resize_and_pad: Resized and padded to
135
- resize_to_fit: Resized to fit
136
+ resize_and_pad: This image will be resized and padded to %{dimensions}.
137
+ resize_to_fit: This image will be resized to fit %{dimensions}.
136
138
  question_types:
137
139
  files: Files
138
140
  long_answer: Long answer
@@ -143,8 +145,6 @@ en:
143
145
  single_option: Single option
144
146
  sorting: Sorting
145
147
  title_and_description: Title and description
146
- questionnaire_answer_presenter:
147
- download_attachment: Download attachment
148
148
  questionnaires:
149
149
  answer:
150
150
  invalid: There was a problem answering the form.
@@ -1 +1,2 @@
1
+ ---
1
2
  eo:
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es-MX:
2
3
  activemodel:
3
4
  attributes:
@@ -121,6 +122,9 @@ es-MX:
121
122
  update:
122
123
  invalid: Ha habido errores al guardar el cuestionario.
123
124
  success: Formulario guardado correctamente.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} actualizó el cuestionario %{resource_name}"
124
128
  errors:
125
129
  answer:
126
130
  body: El campo no puede estar en blanco
@@ -128,10 +132,9 @@ es-MX:
128
132
  extension_allowlist: 'Formatos de archivo aceptados:'
129
133
  images:
130
134
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Esta imagen medirá:'
132
135
  processors:
133
- resize_and_pad: Redimensionado y ajustado a
134
- resize_to_fit: Redimensionada para ajustarla
136
+ resize_and_pad: Esta imagen será redimensionada y ajustada a %{dimensions}.
137
+ resize_to_fit: Esta imagen será redimensionada para ajustarse a %{dimensions}.
135
138
  question_types:
136
139
  files: Archivos
137
140
  long_answer: Respuesta larga
@@ -142,8 +145,6 @@ es-MX:
142
145
  single_option: Opción única
143
146
  sorting: Ordenación
144
147
  title_and_description: Titulo y descripción
145
- questionnaire_answer_presenter:
146
- download_attachment: Descargar el archivo adjunto
147
148
  questionnaires:
148
149
  answer:
149
150
  invalid: Ha habido errores al responder al cuestionario.
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es-PY:
2
3
  activemodel:
3
4
  attributes:
@@ -121,6 +122,9 @@ es-PY:
121
122
  update:
122
123
  invalid: Ha habido errores al guardar el cuestionario.
123
124
  success: Formulario guardado correctamente.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} actualizó el cuestionario %{resource_name}"
124
128
  errors:
125
129
  answer:
126
130
  body: El campo no puede estar en blanco
@@ -128,10 +132,9 @@ es-PY:
128
132
  extension_allowlist: 'Formatos de archivo aceptados:'
129
133
  images:
130
134
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Esta imagen medirá:'
132
135
  processors:
133
- resize_and_pad: Redimensionado y ajustado a
134
- resize_to_fit: Redimensionada para ajustarla
136
+ resize_and_pad: Esta imagen será redimensionada y ajustada a %{dimensions}.
137
+ resize_to_fit: Esta imagen será redimensionada para ajustarse a %{dimensions}.
135
138
  question_types:
136
139
  files: Archivos
137
140
  long_answer: Respuesta larga
@@ -142,8 +145,6 @@ es-PY:
142
145
  single_option: Opción única
143
146
  sorting: Ordenación
144
147
  title_and_description: Titulo y descripción
145
- questionnaire_answer_presenter:
146
- download_attachment: Descargar el archivo adjunto
147
148
  questionnaires:
148
149
  answer:
149
150
  invalid: Ha habido errores al responder al cuestionario.
@@ -1,3 +1,4 @@
1
+ ---
1
2
  es:
2
3
  activemodel:
3
4
  attributes:
@@ -121,6 +122,9 @@ es:
121
122
  update:
122
123
  invalid: Se ha producido un error al guardar el formulario.
123
124
  success: Formulario guardado correctamente.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} actualizó el cuestionario %{resource_name}"
124
128
  errors:
125
129
  answer:
126
130
  body: El campo no puede estar en blanco
@@ -128,10 +132,9 @@ es:
128
132
  extension_allowlist: 'Formatos de archivo aceptados:'
129
133
  images:
130
134
  dimensions: "%{width} x %{height} px"
131
- dimensions_info: 'Esta imagen medirá:'
132
135
  processors:
133
- resize_and_pad: Redimensionada y ajustada a
134
- resize_to_fit: Redimensionada para ajustarla
136
+ resize_and_pad: Esta imagen será redimensionada y ajustada a %{dimensions}.
137
+ resize_to_fit: Esta imagen será redimensionada para ajustarse a %{dimensions}.
135
138
  question_types:
136
139
  files: Archivos
137
140
  long_answer: Respuesta larga
@@ -142,8 +145,6 @@ es:
142
145
  single_option: Opción única
143
146
  sorting: Ordenación
144
147
  title_and_description: Titulo y descripción
145
- questionnaire_answer_presenter:
146
- download_attachment: Descargar el archivo adjunto
147
148
  questionnaires:
148
149
  answer:
149
150
  invalid: Se ha producido un error al responder el formulario.
@@ -1 +1,2 @@
1
+ ---
1
2
  et: