decidim-forms 0.26.0 → 0.27.0.rc1
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/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/_answer.html.erb +3 -1
- data/app/views/decidim/forms/questionnaires/show.html.erb +11 -9
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/ar.yml +7 -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/da.yml +1 -0
- data/config/locales/de.yml +12 -4
- data/config/locales/el.yml +1 -4
- data/config/locales/en.yml +5 -3
- data/config/locales/eo.yml +1 -0
- 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/et.yml +1 -0
- 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 +3 -3
- data/config/locales/fr.yml +3 -3
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +5 -0
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +4 -0
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/is-IS.yml +2 -1
- data/config/locales/it.yml +1 -4
- data/config/locales/ja.yml +6 -3
- data/config/locales/ko.yml +1 -0
- data/config/locales/lb.yml +1 -4
- data/config/locales/lt.yml +1 -0
- data/config/locales/lv.yml +1 -4
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +1 -4
- data/config/locales/no.yml +1 -4
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +1 -4
- data/config/locales/pt-BR.yml +2 -5
- 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/si-LK.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sl.yml +1 -0
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sr-CS.yml +1 -0
- data/config/locales/sv.yml +1 -4
- data/config/locales/sw-KE.yml +1 -0
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/tr-TR.yml +1 -4
- data/config/locales/uk.yml +1 -0
- data/config/locales/val-ES.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -4
- data/config/locales/zh-TW.yml +1 -0
- 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/has_questionnaire.rb +3 -0
- 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: b63c51b898c731a6ac659b9160f4b5bf5d2404cea0aec58cb5fdffff1a29a9b0
|
4
|
+
data.tar.gz: e4a6cf68a62b0188511ba30c3fceda43c30a93bca8ab4a917edf608b8c531e1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 <
|
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
|
@@ -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
|
@@ -30,7 +30,9 @@
|
|
30
30
|
|
31
31
|
<%= answer_form.hidden_field :question_id %>
|
32
32
|
|
33
|
-
|
33
|
+
<% if answer.question.max_choices %>
|
34
|
+
<small class="form-error max-choices-alert"><%= t(".max_choices_alert") %></small>
|
35
|
+
<% end %>
|
34
36
|
|
35
37
|
<% answer.errors.full_messages.each do |msg| %>
|
36
38
|
<small class="form-error is-visible"><%= msg %></small>
|
@@ -8,7 +8,7 @@
|
|
8
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
14
|
<%= decidim_sanitize_editor translated_attribute questionnaire.description %>
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<% if visitor_already_answered? %>
|
34
34
|
<div class="section">
|
35
35
|
<div class="callout success">
|
36
|
-
<
|
36
|
+
<h3 class="heading5"><%= t(".questionnaire_answered.title") %></h3>
|
37
37
|
<p><%= t(".questionnaire_answered.body") %></p>
|
38
38
|
</div>
|
39
39
|
</div>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
<noscript>
|
43
43
|
<div class="section">
|
44
44
|
<div class="callout warning">
|
45
|
-
<
|
45
|
+
<h3 class="heading5"><%= t(".questionnaire_js_disabled.title") %></h3>
|
46
46
|
<p><%= t(".questionnaire_js_disabled.body") %></p>
|
47
47
|
</div>
|
48
48
|
</div>
|
@@ -50,7 +50,7 @@
|
|
50
50
|
<% unless current_participatory_space.can_participate?(current_user) %>
|
51
51
|
<div class="section">
|
52
52
|
<div class="callout alert">
|
53
|
-
<
|
53
|
+
<h3 class="heading5"><%= t(".questionnaire_for_private_users.title") %></h3>
|
54
54
|
<p><%= t(".questionnaire_for_private_users.body") %></p>
|
55
55
|
</div>
|
56
56
|
</div>
|
@@ -64,10 +64,10 @@
|
|
64
64
|
<% @form.responses_by_step.each_with_index do |step_answers, step_index| %>
|
65
65
|
<div id="step-<%= step_index %>" class="<%= step_index.zero? ? "questionnaire-step" : "questionnaire-step hide" %>" data-toggler=".hide">
|
66
66
|
<% if @form.total_steps > 1 %>
|
67
|
-
<
|
67
|
+
<h3 class="section-heading">
|
68
68
|
<%= t(".current_step", step: step_index + 1) %>
|
69
69
|
<span class="answer-questionnaire__steps"><%= t(".of_total_steps", total_steps: @form.total_steps) %></span>
|
70
|
-
</
|
70
|
+
</h3>
|
71
71
|
<% end %>
|
72
72
|
|
73
73
|
<% step_answers.each do |answer| %>
|
@@ -128,7 +128,7 @@
|
|
128
128
|
<% end %>
|
129
129
|
<% else %>
|
130
130
|
<div class="answer-questionnaire">
|
131
|
-
<
|
131
|
+
<h3 class="section-heading"><%= t(".answer_questionnaire.title") %></h3>
|
132
132
|
<p>
|
133
133
|
<%= t(".answer_questionnaire.anonymous_user_message", sign_in_link: decidim.new_user_session_path, sign_up_link: decidim.new_user_registration_path).html_safe %>
|
134
134
|
</p>
|
@@ -141,7 +141,7 @@
|
|
141
141
|
<% else %>
|
142
142
|
<div class="section">
|
143
143
|
<div class="callout warning">
|
144
|
-
<
|
144
|
+
<h3 class="heading4"><%= t(".questionnaire_closed.title") %></h3>
|
145
145
|
<p><%= t(".questionnaire_closed.body") %></p>
|
146
146
|
</div>
|
147
147
|
</div>
|
@@ -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/am-ET.yml
CHANGED
data/config/locales/ar.yml
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
---
|
1
2
|
ar:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
4
5
|
answer:
|
5
6
|
body: إجابة
|
7
|
+
choices: الخيارات
|
6
8
|
question:
|
7
9
|
max_choices: أقصى عدد من الخيارات
|
8
10
|
question_type: نوع
|
@@ -30,6 +32,9 @@ ar:
|
|
30
32
|
free_text: نص حر
|
31
33
|
remove: إزالة
|
32
34
|
statement: بيان
|
35
|
+
display_condition:
|
36
|
+
condition_question: سؤال
|
37
|
+
remove: حذف
|
33
38
|
edit:
|
34
39
|
save: حفظ
|
35
40
|
form:
|
@@ -47,6 +52,8 @@ ar:
|
|
47
52
|
remove: إزالة
|
48
53
|
statement: بيان
|
49
54
|
up: فوق
|
55
|
+
title_and_description:
|
56
|
+
description: الوصف
|
50
57
|
update:
|
51
58
|
invalid: كانت هناك مشكلة في حفظ النموذج.
|
52
59
|
errors:
|
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/da.yml
CHANGED
data/config/locales/de.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
de:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -79,6 +80,7 @@ de:
|
|
79
80
|
form:
|
80
81
|
add_question: Frage hinzufügen
|
81
82
|
add_separator: Trennzeichen hinzufügen
|
83
|
+
add_title_and_description: Füge Titel und Beschreibung hinzu
|
82
84
|
already_answered_warning: Der Fragebogen wird bereits von einigen Benutzern beantwortet, sodass Sie die Fragen nicht ändern können.
|
83
85
|
collapse: Alle Fragen einklappen
|
84
86
|
expand: Alle Fragen ausklappen
|
@@ -108,6 +110,15 @@ de:
|
|
108
110
|
remove: Löschen
|
109
111
|
separator: Trennzeichen
|
110
112
|
up: Hoch
|
113
|
+
title_and_description:
|
114
|
+
collapse: Einklappen
|
115
|
+
description: Beschreibung
|
116
|
+
down: Runter
|
117
|
+
expand: Ausklappen
|
118
|
+
remove: Entfernen
|
119
|
+
title: Titel
|
120
|
+
title_and_description: Titel und Beschreibung
|
121
|
+
up: Hinauf
|
111
122
|
update:
|
112
123
|
invalid: Beim Speichern des Fragebogens sind Fehler aufgetreten.
|
113
124
|
success: Formular erfolgreich gespeichert.
|
@@ -118,10 +129,6 @@ de:
|
|
118
129
|
extension_allowlist: 'Gültige Formate:'
|
119
130
|
images:
|
120
131
|
dimensions: "%{width} x %{height} px"
|
121
|
-
dimensions_info: 'Das Bild wird:'
|
122
|
-
processors:
|
123
|
-
resize_and_pad: in der Größe angepasst und gepolstert zu
|
124
|
-
resize_to_fit: in der Größe verändert, damit es passt
|
125
132
|
question_types:
|
126
133
|
files: Dateien
|
127
134
|
long_answer: Lange Antwort
|
@@ -131,6 +138,7 @@ de:
|
|
131
138
|
short_answer: Kurze Antwort
|
132
139
|
single_option: Einzelne Option
|
133
140
|
sorting: Sortierung
|
141
|
+
title_and_description: Titel und Beschreibung
|
134
142
|
questionnaires:
|
135
143
|
answer:
|
136
144
|
invalid: Bei der Beantwortung des Fragebogens sind Fehler aufgetreten.
|
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/eo.yml
CHANGED
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
|