decidim-forms 0.26.2 → 0.27.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/commands/decidim/forms/admin/update_questionnaire.rb +13 -8
- data/app/commands/decidim/forms/answer_questionnaire.rb +3 -3
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +2 -2
- data/app/forms/decidim/forms/admin/display_condition_form.rb +3 -3
- data/app/forms/decidim/forms/answer_form.rb +4 -0
- data/app/models/decidim/forms/answer.rb +2 -2
- data/app/models/decidim/forms/display_condition.rb +1 -1
- data/app/models/decidim/forms/questionnaire.rb +7 -0
- data/app/packs/src/decidim/forms/admin/forms.js +3 -0
- data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +10 -2
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +5 -3
- data/app/presenters/decidim/forms/admin_log/questionnaire_presenter.rb +35 -0
- data/app/queries/decidim/forms/questionnaire_participant.rb +1 -1
- data/app/queries/decidim/forms/questionnaire_participants.rb +1 -1
- data/app/queries/decidim/forms/questionnaire_user_answers.rb +1 -1
- data/app/views/decidim/forms/questionnaires/show.html.erb +4 -2
- data/config/locales/ar.yml +1 -0
- data/config/locales/bg.yml +1 -0
- data/config/locales/ca.yml +6 -3
- data/config/locales/cs.yml +6 -3
- data/config/locales/de.yml +6 -3
- data/config/locales/el.yml +1 -4
- data/config/locales/en.yml +5 -3
- data/config/locales/es-MX.yml +6 -3
- data/config/locales/es-PY.yml +6 -3
- data/config/locales/es.yml +6 -3
- data/config/locales/eu.yml +1 -4
- data/config/locales/fi-plain.yml +6 -3
- data/config/locales/fi.yml +6 -3
- data/config/locales/fr-CA.yml +6 -3
- data/config/locales/fr.yml +6 -3
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +5 -0
- data/config/locales/hu.yml +4 -0
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/it.yml +1 -4
- data/config/locales/ja.yml +6 -3
- data/config/locales/lb.yml +1 -4
- data/config/locales/lt.yml +191 -0
- data/config/locales/lv.yml +1 -4
- data/config/locales/nl.yml +1 -4
- data/config/locales/no.yml +1 -4
- data/config/locales/pl.yml +1 -4
- data/config/locales/pt-BR.yml +1 -4
- data/config/locales/pt.yml +1 -4
- data/config/locales/ro-RO.yml +1 -4
- data/config/locales/ru.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sl.yml +1 -0
- data/config/locales/sv.yml +1 -4
- data/config/locales/tr-TR.yml +1 -4
- data/config/locales/val-ES.yml +1 -0
- data/config/locales/zh-CN.yml +1 -4
- data/lib/decidim/exporters/form_pdf.rb +2 -2
- data/lib/decidim/forms/{data_portability_user_answers_serializer.rb → download_your_data_user_answers_serializer.rb} +2 -2
- data/lib/decidim/forms/test/factories.rb +22 -13
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +2 -2
- data/lib/decidim/forms/user_answers_serializer.rb +2 -2
- data/lib/decidim/forms/version.rb +1 -1
- data/lib/decidim/forms.rb +1 -1
- metadata +14 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81e96451d62f5103d06d5e3faed9995dd4095fd26ead4b0e46441b480248a1cb
|
4
|
+
data.tar.gz: f764c1a304b7a2fd98a716595b51b79342afa092b812dc3b2d627535b6199a43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22a006a8033a94f5d9791c74300cc298505521746a40452ae6f10742e6f2da2100cb1f2e4d1c9b6b229908a3e29bce816f338311db14e8581ff8278218298f22
|
7
|
+
data.tar.gz: 6eac52cf9bac996ce47017745444527615c5ba099234d4c7efc1586d93fb8603860158644773526ac9215e9ded8cc0f941b0ec731bc62a755ceddbb97ee5f4cb
|
@@ -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 <
|
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
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
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 <
|
6
|
+
class AnswerQuestionnaire < Decidim::Command
|
7
7
|
include ::Decidim::MultipleAttachmentsMethods
|
8
8
|
|
9
9
|
# Initializes a AnswerQuestionnaire Command.
|
@@ -43,7 +43,7 @@ module Decidim
|
|
43
43
|
# of this problem.
|
44
44
|
def reset_form_attachments
|
45
45
|
@form.responses.each do |answer|
|
46
|
-
answer.errors.add(:add_documents, :needs_to_be_reattached) if answer.has_attachments?
|
46
|
+
answer.errors.add(:add_documents, :needs_to_be_reattached) if answer.has_attachments? || answer.has_error_in_attachments?
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -51,7 +51,7 @@ module Decidim
|
|
51
51
|
@main_form = @form
|
52
52
|
@errors = nil
|
53
53
|
|
54
|
-
Answer.transaction do
|
54
|
+
Answer.transaction(requires_new: true) do
|
55
55
|
form.responses_by_step.flatten.select(&:display_conditions_fulfilled?).each do |form_answer|
|
56
56
|
answer = Answer.new(
|
57
57
|
user: @current_user,
|
@@ -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::
|
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:
|
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:
|
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:
|
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::
|
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::
|
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.
|
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,6 +11,7 @@ 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"
|
14
15
|
|
15
16
|
export default function createEditableForm() {
|
16
17
|
const wrapperSelector = ".questionnaire-questions";
|
@@ -392,6 +393,8 @@ export default function createEditableForm() {
|
|
392
393
|
|
393
394
|
autoLabelByPosition.run();
|
394
395
|
autoButtonsByPosition.run();
|
396
|
+
|
397
|
+
initLanguageChangeSelect($field.find("select.language-change").toArray());
|
395
398
|
},
|
396
399
|
onRemoveField: ($field) => {
|
397
400
|
autoLabelByPosition.run();
|
@@ -6,10 +6,18 @@ module Decidim
|
|
6
6
|
#
|
7
7
|
# Presenter for questionnaire answer
|
8
8
|
#
|
9
|
-
class QuestionnaireAnswerPresenter <
|
9
|
+
class QuestionnaireAnswerPresenter < SimpleDelegator
|
10
|
+
delegate :content_tag, :safe_join, to: :view_context
|
11
|
+
|
10
12
|
include Decidim::TranslatableAttributes
|
11
13
|
|
12
|
-
|
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)
|
@@ -6,8 +6,10 @@ module Decidim
|
|
6
6
|
#
|
7
7
|
# Presenter for questionnaire response
|
8
8
|
#
|
9
|
-
class QuestionnaireParticipantPresenter <
|
10
|
-
|
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 <
|
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 <
|
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 <
|
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
|
@@ -5,7 +5,7 @@
|
|
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" %>
|
8
|
+
<%= render partial: "decidim/shared/component_announcement" if current_component.manifest_name == "surveys" %>
|
9
9
|
|
10
10
|
<div class="row columns">
|
11
11
|
<h2 class="section-heading"><%= translated_attribute questionnaire.title %></h2>
|
@@ -151,4 +151,6 @@
|
|
151
151
|
</div>
|
152
152
|
</div>
|
153
153
|
|
154
|
-
|
154
|
+
<% content_for :js_content do %>
|
155
|
+
<%= javascript_pack_tag "decidim_forms" %>
|
156
|
+
<% end %>
|
data/config/locales/ar.yml
CHANGED
data/config/locales/bg.yml
CHANGED
data/config/locales/ca.yml
CHANGED
@@ -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:
|
134
|
-
resize_to_fit:
|
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
|
data/config/locales/cs.yml
CHANGED
@@ -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:
|
134
|
-
resize_to_fit:
|
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ěď
|
data/config/locales/de.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
de:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -121,6 +122,9 @@ de:
|
|
121
122
|
update:
|
122
123
|
invalid: Beim Speichern des Fragebogens sind Fehler aufgetreten.
|
123
124
|
success: Formular erfolgreich gespeichert.
|
125
|
+
admin_log:
|
126
|
+
questionnaire:
|
127
|
+
update: "%{user_name} hat die Umfrage %{resource_name} aktualisiert"
|
124
128
|
errors:
|
125
129
|
answer:
|
126
130
|
body: Körper kann nicht leer sein
|
@@ -128,10 +132,9 @@ de:
|
|
128
132
|
extension_allowlist: 'Gültige Formate:'
|
129
133
|
images:
|
130
134
|
dimensions: "%{width} x %{height} px"
|
131
|
-
dimensions_info: 'Das Bild wird:'
|
132
135
|
processors:
|
133
|
-
resize_and_pad:
|
134
|
-
resize_to_fit:
|
136
|
+
resize_and_pad: Dieses Bild wird skaliert und an %{dimensions} angepasst.
|
137
|
+
resize_to_fit: Dieses Bild wird auf %{dimensions} skaliert.
|
135
138
|
question_types:
|
136
139
|
files: Dateien
|
137
140
|
long_answer: Lange Antwort
|
data/config/locales/el.yml
CHANGED
@@ -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: Πίνακας (πολλαπλή επιλογή)
|
data/config/locales/en.yml
CHANGED
@@ -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:
|
135
|
-
resize_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
|
data/config/locales/es-MX.yml
CHANGED
@@ -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:
|
134
|
-
resize_to_fit:
|
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
|
data/config/locales/es-PY.yml
CHANGED
@@ -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:
|
134
|
-
resize_to_fit:
|
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
|
data/config/locales/es.yml
CHANGED
@@ -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:
|
134
|
-
resize_to_fit:
|
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
|
data/config/locales/eu.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
eu:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -118,10 +119,6 @@ eu:
|
|
118
119
|
extension_allowlist: 'Onartutako formatuak:'
|
119
120
|
images:
|
120
121
|
dimensions: "%{width} x %{height} px"
|
121
|
-
dimensions_info: 'Irudi honek neurtuko du:'
|
122
|
-
processors:
|
123
|
-
resize_and_pad: Birdimentsionatua eta honi egokitua
|
124
|
-
resize_to_fit: Birdimentsionatua egokitzeko
|
125
122
|
question_types:
|
126
123
|
files: Fitxategiak
|
127
124
|
long_answer: Erantzun luzea
|
data/config/locales/fi-plain.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
fi-pl:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -121,6 +122,9 @@ fi-pl:
|
|
121
122
|
update:
|
122
123
|
invalid: Kyselylomakkeiden tallentamisessa on tapahtunut virheitä.
|
123
124
|
success: Lomake tallennettu onnistuneesti.
|
125
|
+
admin_log:
|
126
|
+
questionnaire:
|
127
|
+
update: "%{user_name} päivitti kyselyä %{resource_name}"
|
124
128
|
errors:
|
125
129
|
answer:
|
126
130
|
body: Runkoteksti ei voi olla tyhjä
|
@@ -128,10 +132,9 @@ fi-pl:
|
|
128
132
|
extension_allowlist: 'Sallitut tiedostopäätteet:'
|
129
133
|
images:
|
130
134
|
dimensions: "%{width} x %{height} pikseliä"
|
131
|
-
dimensions_info: 'Tämän kuvan koko tulee olemaan:'
|
132
135
|
processors:
|
133
|
-
resize_and_pad:
|
134
|
-
resize_to_fit:
|
136
|
+
resize_and_pad: Kuvan kokoa muutetaan ja rajataan arvoon %{dimensions}.
|
137
|
+
resize_to_fit: Tämä kuva muutetaan kokoon %{dimensions} sopivaksi.
|
135
138
|
question_types:
|
136
139
|
files: Tiedostot
|
137
140
|
long_answer: Pitkä vastaus
|
data/config/locales/fi.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
fi:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -121,6 +122,9 @@ fi:
|
|
121
122
|
update:
|
122
123
|
invalid: Kyselylomakkeen tallentaminen epäonnistui.
|
123
124
|
success: Lomake tallennettu onnistuneesti.
|
125
|
+
admin_log:
|
126
|
+
questionnaire:
|
127
|
+
update: "%{user_name} päivitti kyselyä %{resource_name}"
|
124
128
|
errors:
|
125
129
|
answer:
|
126
130
|
body: Runkoteksti ei voi olla tyhjä
|
@@ -128,10 +132,9 @@ fi:
|
|
128
132
|
extension_allowlist: 'Sallitut tiedostopäätteet:'
|
129
133
|
images:
|
130
134
|
dimensions: "%{width} x %{height} pikseliä"
|
131
|
-
dimensions_info: 'Tämän kuvan koko tulee olemaan:'
|
132
135
|
processors:
|
133
|
-
resize_and_pad:
|
134
|
-
resize_to_fit:
|
136
|
+
resize_and_pad: Kuvan kokoa muutetaan ja rajataan arvoon %{dimensions}.
|
137
|
+
resize_to_fit: Tämä kuva muutetaan kokoon %{dimensions} sopivaksi.
|
135
138
|
question_types:
|
136
139
|
files: Tiedostot
|
137
140
|
long_answer: Pitkä vastaus
|