decidim-forms 0.22.0 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/admin/decidim_forms_manifest.css +3 -0
  3. data/app/assets/config/decidim_forms_manifest.css +1 -0
  4. data/app/assets/javascripts/decidim/forms/admin/auto_select_options_from_url.component.js.es6 +40 -0
  5. data/app/assets/javascripts/decidim/forms/admin/forms.js.es6 +181 -25
  6. data/app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6 +54 -34
  7. data/app/assets/javascripts/decidim/forms/display_conditions.component.js.es6 +204 -0
  8. data/app/assets/javascripts/decidim/forms/forms.js.es6 +8 -1
  9. data/app/assets/stylesheets/decidim/forms/questionnaire-answers-pdf.scss +69 -0
  10. data/app/commands/decidim/forms/admin/update_questionnaire.rb +25 -1
  11. data/app/commands/decidim/forms/answer_questionnaire.rb +1 -1
  12. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +47 -1
  13. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire_answers.rb +97 -0
  14. data/app/forms/decidim/forms/admin/display_condition_form.rb +100 -0
  15. data/app/forms/decidim/forms/admin/question_form.rb +1 -0
  16. data/app/forms/decidim/forms/answer_form.rb +15 -0
  17. data/app/helpers/decidim/forms/admin/application_helper.rb +21 -0
  18. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_pagination_helper.rb +49 -0
  19. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +40 -0
  20. data/app/helpers/decidim/forms/admin/questionnaire_answers_helper.rb +27 -0
  21. data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +19 -0
  22. data/app/models/decidim/forms/answer.rb +0 -3
  23. data/app/models/decidim/forms/answer_option.rb +14 -0
  24. data/app/models/decidim/forms/display_condition.rb +51 -0
  25. data/app/models/decidim/forms/question.rb +34 -0
  26. data/app/models/decidim/forms/question_matrix_row.rb +3 -0
  27. data/app/models/decidim/forms/questionnaire.rb +11 -1
  28. data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +43 -0
  29. data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +60 -0
  30. data/app/presenters/decidim/forms/answer_option_presenter.rb +20 -0
  31. data/app/presenters/decidim/forms/question_presenter.rb +16 -0
  32. data/app/queries/decidim/forms/questionnaire_participant.rb +35 -0
  33. data/app/queries/decidim/forms/questionnaire_participants.rb +43 -0
  34. data/app/views/decidim/forms/admin/questionnaires/_display_condition.html.erb +88 -0
  35. data/app/views/decidim/forms/admin/questionnaires/_display_condition_template.html.erb +7 -0
  36. data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +30 -4
  37. data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +19 -3
  38. data/app/views/decidim/forms/admin/questionnaires/answers/export/_answer.html.erb +31 -0
  39. data/app/views/decidim/forms/admin/questionnaires/answers/export/pdf.html.erb +13 -0
  40. data/app/views/decidim/forms/admin/questionnaires/answers/index.html.erb +53 -0
  41. data/app/views/decidim/forms/admin/questionnaires/answers/show.html.erb +48 -0
  42. data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +9 -5
  43. data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
  44. data/app/views/decidim/forms/questionnaires/show.html.erb +22 -2
  45. data/app/views/layouts/decidim/forms/admin/questionnaires/questionnaire_answers.html.erb +12 -0
  46. data/config/initializers/wicked_pdf.rb +25 -0
  47. data/config/locales/am-ET.yml +1 -0
  48. data/config/locales/ar.yml +0 -1
  49. data/config/locales/bg-BG.yml +0 -2
  50. data/config/locales/bg.yml +14 -0
  51. data/config/locales/ca.yml +56 -4
  52. data/config/locales/cs.yml +54 -2
  53. data/config/locales/da.yml +1 -0
  54. data/config/locales/de.yml +51 -1
  55. data/config/locales/el.yml +0 -2
  56. data/config/locales/en.yml +54 -2
  57. data/config/locales/eo.yml +1 -0
  58. data/config/locales/es-MX.yml +53 -1
  59. data/config/locales/es-PY.yml +53 -1
  60. data/config/locales/es.yml +54 -2
  61. data/config/locales/et.yml +1 -0
  62. data/config/locales/eu.yml +0 -1
  63. data/config/locales/fi-plain.yml +53 -1
  64. data/config/locales/fi.yml +53 -1
  65. data/config/locales/fr-CA.yml +54 -2
  66. data/config/locales/fr.yml +54 -2
  67. data/config/locales/gl.yml +0 -1
  68. data/config/locales/hr.yml +1 -0
  69. data/config/locales/hu.yml +0 -2
  70. data/config/locales/id-ID.yml +0 -1
  71. data/config/locales/is.yml +1 -0
  72. data/config/locales/it.yml +53 -1
  73. data/config/locales/ja-JP.yml +51 -1
  74. data/config/locales/ja.yml +170 -0
  75. data/config/locales/ko-KR.yml +1 -0
  76. data/config/locales/ko.yml +1 -0
  77. data/config/locales/lt.yml +1 -0
  78. data/config/locales/{lv-LV.yml → lv.yml} +0 -1
  79. data/config/locales/mt.yml +1 -0
  80. data/config/locales/nl.yml +59 -7
  81. data/config/locales/no.yml +47 -2
  82. data/config/locales/om-ET.yml +1 -0
  83. data/config/locales/pl.yml +52 -3
  84. data/config/locales/pt-BR.yml +0 -1
  85. data/config/locales/pt.yml +51 -2
  86. data/config/locales/ro-RO.yml +51 -2
  87. data/config/locales/ru.yml +0 -1
  88. data/config/locales/sk.yml +0 -2
  89. data/config/locales/sl.yml +7 -0
  90. data/config/locales/so-SO.yml +1 -0
  91. data/config/locales/sv.yml +51 -2
  92. data/config/locales/ti-ER.yml +1 -0
  93. data/config/locales/tr-TR.yml +0 -1
  94. data/config/locales/vi-VN.yml +1 -0
  95. data/config/locales/vi.yml +1 -0
  96. data/config/locales/zh-CN.yml +172 -0
  97. data/config/locales/zh-TW.yml +1 -0
  98. data/db/migrate/20200130194123_create_decidim_forms_display_conditions.rb +20 -0
  99. data/lib/decidim/exporters/form_pdf.rb +33 -0
  100. data/lib/decidim/exporters/form_pdf_controller_helper.rb +11 -0
  101. data/lib/decidim/forms.rb +5 -0
  102. data/lib/decidim/forms/admin_engine.rb +1 -1
  103. data/lib/decidim/forms/test.rb +6 -0
  104. data/lib/decidim/forms/test/factories.rb +30 -0
  105. data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +619 -38
  106. data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +108 -0
  107. data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +21 -894
  108. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +179 -0
  109. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +463 -0
  110. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_display_conditions.rb +93 -0
  111. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +461 -0
  112. data/lib/decidim/forms/version.rb +1 -1
  113. metadata +91 -11
@@ -0,0 +1,31 @@
1
+ <div class="answer">
2
+ <h2 class="title"><%= t(".title", number: participant_counter + 1) %></h2>
3
+
4
+ <table class="participant-info">
5
+ <thead>
6
+ <tr>
7
+ <th class='token'><%= t("session_token", scope: "decidim.forms.user_answers_serializer") %></th>
8
+ <th><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %></th>
9
+ <th><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %></th>
10
+ <th><%= t("completion", scope: "decidim.forms.user_answers_serializer") %></th>
11
+ <th><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %></th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <tr>
16
+ <td><%= participant.session_token %></td>
17
+ <td><%= participant.status %></td>
18
+ <td><%= participant.ip_hash %></td>
19
+ <td><%= display_percentage(participant.completion) %></td>
20
+ <td><%= l participant.answered_at, format: :short %></td>
21
+ </tr>
22
+ </tbody>
23
+ </table>
24
+
25
+ <div class="answers">
26
+ <% participant.answers.each do |answer| %>
27
+ <h3 class="question"><%= answer.question %></h3>
28
+ <p><%= answer.body %></p>
29
+ <% end %>
30
+ </div>
31
+ </div>
@@ -0,0 +1,13 @@
1
+ <div class="questionnaire-answers">
2
+ <div class="header">
3
+ <h1><%= translated_attribute(questionnaire.title) %></h1>
4
+ <div class="description">
5
+ <%== translated_attribute(questionnaire.description).html_safe %>
6
+ </div>
7
+ <% if collection.count > 1 %>
8
+ <h2><%= t("title", scope: "decidim.forms.admin.questionnaires.answers.index", total: collection.count) %></h2>
9
+ <% end %>
10
+ </div>
11
+
12
+ <%= render partial: "decidim/forms/admin/questionnaires/answers/export/answer", collection: collection, locals: { questionnaire: questionnaire }, as: :participant %>
13
+ </div>
@@ -0,0 +1,53 @@
1
+ <div class="card" id="answers">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= t ".title", total: @total %>
5
+ <div class="button--title">
6
+ <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires"), questionnaire_url, class: "button tiny button--title new" %>
7
+ </div>
8
+ </h2>
9
+ </div>
10
+ <div class="card-section">
11
+ <div class="table-scroll">
12
+ <table class="table-list">
13
+ <thead>
14
+ <tr>
15
+ <th>#</th>
16
+ <th><%= first_table_th(@participants.first) %></th>
17
+ <th><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %></th>
18
+ <th><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %></th>
19
+ <th><%= t("completion", scope: "decidim.forms.user_answers_serializer") %></th>
20
+ <th><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %></th>
21
+ <th></th>
22
+ </tr>
23
+ </thead>
24
+ <tbody>
25
+ <% @participants.each_with_index do |participant, idx| %>
26
+ <tr>
27
+ <td><%= idx + 1 + page_offset %></td>
28
+ <td>
29
+ <% if allowed_to? :show, :questionnaire_answers %>
30
+ <%= link_to first_table_td(participant), questionnaire_participant_answers_url(participant.session_token) %>
31
+ <% else %>
32
+ <%= first_table_td(participant) %></td>
33
+ <% end %>
34
+ <td><%= participant.status %></td>
35
+ <td><%= participant.ip_hash %></td>
36
+ <td><%= display_percentage(participant.completion) %></td>
37
+ <td><%= l participant.answered_at, format: :short %></td>
38
+ <td class="table-list__actions">
39
+ <% if allowed_to? :show, :questionnaire_answers %>
40
+ <%= icon_link_to "eye", questionnaire_participant_answers_url(participant.session_token), t("actions.show", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--eye" %>
41
+ <% end %>
42
+ <% if allowed_to? :export_response, :questionnaire_answers %>
43
+ <%= icon_link_to "data-transfer-download", questionnaire_export_response_url(participant.session_token), t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), class: "action-icon--data-transfer-download" %>
44
+ <% end %>
45
+ </td>
46
+ </tr>
47
+ <% end %>
48
+ </tbody>
49
+ </table>
50
+ <%= paginate @query, theme: "decidim" %>
51
+ </div>
52
+ </div>
53
+ </div>
@@ -0,0 +1,48 @@
1
+ <div class="card" id="answers">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= t ".title", number: current_idx %>
5
+ <div class="button--title">
6
+ <%= link_to_unless last?, t("views.pagination.next").html_safe, next_url, rel: "next", class: "button tiny button--title next" %>
7
+ </div>
8
+ <div class="button--title">
9
+ <%= link_to_unless first?, t("views.pagination.previous").html_safe, prev_url, rel: "prev", class: "button tiny button--title prev" %>
10
+ </div>
11
+ <div class="button--title">
12
+ <%= link_to t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_export_response_url(@participant.session_token), class: "button tiny button--title export" %>
13
+ <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_participants_url, class: "button tiny button--title back" %>
14
+ </div>
15
+ </h2>
16
+ </div>
17
+ <div class="card-section">
18
+ <div class="table">
19
+ <table class="table-list">
20
+ <thead>
21
+ <tr>
22
+ <th><%= t("session_token", scope: "decidim.forms.user_answers_serializer") %></th>
23
+ <th><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %></th>
24
+ <th><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %></th>
25
+ <th><%= t("completion", scope: "decidim.forms.user_answers_serializer") %></th>
26
+ <th><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %></th>
27
+ <th></th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <tr>
32
+ <td><%= @participant.session_token %></td>
33
+ <td><%= @participant.status %></td>
34
+ <td><%= @participant.ip_hash %></td>
35
+ <td><%= display_percentage(@participant.completion) %></td>
36
+ <td><%= l @participant.answered_at, format: :short %></td>
37
+ </tr>
38
+ </tbody>
39
+ </table>
40
+ </div>
41
+ <dl>
42
+ <% @participant.answers.each do |answer| %>
43
+ <dt><%= answer.question %></dt>
44
+ <dd><%= answer.body %></dd>
45
+ <% end %>
46
+ </dl>
47
+ </div>
48
+ </div>
@@ -1,7 +1,11 @@
1
- <%= decidim_form_for(@form, url: update_url, method: :put, html: { class: "form edit_questionnaire" }) do |form| %>
2
- <%= render partial: "decidim/forms/admin/questionnaires/form", object: form, locals: { title: t(".title") } %>
1
+ <% if templates_defined? && choose_template? %>
2
+ <%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %>
3
+ <% else %>
4
+ <%= decidim_form_for(@form, url: update_url, method: :put, html: { class: "form edit_questionnaire" }) do |form| %>
5
+ <%= render partial: "decidim/forms/admin/questionnaires/form", object: form, locals: { title: title_for_questionnaire } %>
3
6
 
4
- <div class="button--double form-general-submit">
5
- <%= form.submit t(".save"), class: "button" %>
6
- </div>
7
+ <div class="button--double form-general-submit">
8
+ <%= form.submit t(".save"), class: "button" %>
9
+ </div>
10
+ <% end %>
7
11
  <% end %>
@@ -1,4 +1,4 @@
1
- <% field_id = "questionnaire_answers_#{answer_idx}" %>
1
+ <% field_id = "questionnaire_responses_#{answer_idx}" %>
2
2
 
3
3
  <% if answer.question.separator? %>
4
4
  <%= 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 } %>
@@ -20,6 +20,14 @@
20
20
  <div class="columns large-<%= columns %> medium-centered">
21
21
  <div class="card">
22
22
  <div class="card__content">
23
+ <% unless questionnaire_for.try(:component)&.try(:published?) %>
24
+ <div class="section">
25
+ <div class="callout warning">
26
+ <p><%= t(".questionnaire_not_published.body") %></p>
27
+ </div>
28
+ </div>
29
+ <% end %>
30
+
23
31
  <% if allow_answers? %>
24
32
  <% if visitor_can_answer? %>
25
33
  <% if visitor_already_answered? %>
@@ -31,6 +39,14 @@
31
39
  </div>
32
40
  <% else %>
33
41
  <div class="answer-questionnaire">
42
+ <noscript>
43
+ <div class="section">
44
+ <div class="callout warning">
45
+ <h5><%= t(".questionnaire_js_disabled.title") %></h5>
46
+ <p><%= t(".questionnaire_js_disabled.body") %></p>
47
+ </div>
48
+ </div>
49
+ </noscript>
34
50
  <% unless current_participatory_space.can_participate?(current_user) %>
35
51
  <div class="section">
36
52
  <div class="callout alert">
@@ -54,7 +70,11 @@
54
70
  <% end %>
55
71
 
56
72
  <% step_answers.each do |answer| %>
57
- <div class="row column answer" data-max-choices="<%= answer.question.max_choices %>">
73
+ <div class="row column answer question" data-max-choices="<%= answer.question.max_choices %>" data-conditioned="<%= answer.question.display_conditions.any? %>" data-question-id="<%= answer.question.id %>">
74
+ <% answer.question.display_conditions.each do |display_condition| %>
75
+ <%= content_tag :div, nil, class: "display-condition", data: display_condition.to_html_data %>
76
+ <% end %>
77
+
58
78
  <%= fields_for "questionnaire[responses][#{answer_idx}]", answer do |answer_form| %>
59
79
  <%= render(
60
80
  "decidim/forms/questionnaires/answer",
@@ -107,7 +127,7 @@
107
127
  </p>
108
128
 
109
129
  <ol>
110
- <%= cell("decidim/forms/question_readonly", collection: @questionnaire.questions) %>
130
+ <%= cell("decidim/forms/question_readonly", collection: @questionnaire.questions.not_conditioned) %>
111
131
  </ol>
112
132
  </div>
113
133
  <% end %>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="<%= I18n.locale %>" class="no-js">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <meta name="viewport" content="width=device-width">
6
+ <%= wicked_pdf_stylesheet_link_tag "decidim/forms/questionnaire-answers-pdf" %>
7
+ <title><%= @title %></title>
8
+ </head>
9
+ <body>
10
+ <%= yield %>
11
+ </body>
12
+ </html>
@@ -0,0 +1,25 @@
1
+ require "wicked_pdf"
2
+
3
+ # frozen_string_literal: true
4
+
5
+ # WickedPDF Global Configuration
6
+ #
7
+ # Use this to set up shared configuration options for your entire application.
8
+ # Any of the configuration options shown here can also be applied to single
9
+ # models by passing arguments to the `render :pdf` call.
10
+ #
11
+ # To learn more, check out the README:
12
+ #
13
+ # https://github.com/mileszs/wicked_pdf/blob/master/README.md
14
+
15
+ WickedPdf.config = {
16
+ # Path to the wkhtmltopdf executable: This usually isn't needed if using
17
+ # one of the wkhtmltopdf-binary family of gems.
18
+ # exe_path: '/usr/local/bin/wkhtmltopdf',
19
+ # or
20
+ exe_path: Gem.bin_path("wkhtmltopdf-binary", "wkhtmltopdf")
21
+
22
+ # Layout file to be used for all PDFs
23
+ # (but can be overridden in `render :pdf` calls)
24
+ # layout: 'pdf.html',
25
+ }
@@ -0,0 +1 @@
1
+ am:
@@ -49,7 +49,6 @@ ar:
49
49
  up: فوق
50
50
  update:
51
51
  invalid: كانت هناك مشكلة في حفظ النموذج.
52
- success: تم حفظ النماذج بنجاح.
53
52
  errors:
54
53
  answer:
55
54
  body: لا يمكن أن يكون الجسم فارغًا
@@ -12,5 +12,3 @@ bg:
12
12
  show:
13
13
  are_you_sure: Това действие не може да се отмени и Вие не можете да редактирате отговорите си. Сигурни ли сте?
14
14
  submit: Изпрати
15
- user_answers_serializer:
16
- ip_hash: Ip Хеш
@@ -0,0 +1,14 @@
1
+ bg:
2
+ activemodel:
3
+ attributes:
4
+ answer:
5
+ body: Отговор
6
+ question:
7
+ max_choices: Максимален брой възможности
8
+ question_type: Тип
9
+ decidim:
10
+ forms:
11
+ step_navigation:
12
+ show:
13
+ are_you_sure: Това действие не може да се отмени и Вие не можете да редактирате отговорите си. Сигурни ли сте?
14
+ submit: Изпрати
@@ -3,6 +3,8 @@ ca:
3
3
  attributes:
4
4
  answer:
5
5
  body: Resposta
6
+ choices: Opcions
7
+ selected_choices: Opcions seleccionades
6
8
  question:
7
9
  max_choices: Nombre màxim d'opcions
8
10
  question_type: Tipus
@@ -25,11 +27,47 @@ ca:
25
27
  description: Descripció
26
28
  tos: Termes del servei
27
29
  questionnaires:
30
+ actions:
31
+ back: Tornar a les preguntes
32
+ show: Mostrar les respostes
28
33
  answer_option:
29
34
  answer_option: Opció de resposta
30
35
  free_text: Text lliure
31
36
  remove: Elimina
32
37
  statement: Declaració
38
+ answers:
39
+ actions:
40
+ back: Tornar a les respostes
41
+ export: Exportar
42
+ show: Mostrar les respostes
43
+ empty: Encara no hi ha respostes
44
+ export:
45
+ answer:
46
+ title: 'Resposta #%{number}'
47
+ export_response:
48
+ title: survey_user_answers_%{token}
49
+ index:
50
+ title: "%{total} respostes totals"
51
+ show:
52
+ title: 'Resposta #%{number}'
53
+ display_condition:
54
+ answer_option: Opció de resposta
55
+ condition_question: Pregunta
56
+ condition_type: Condició
57
+ condition_types:
58
+ answered: Amb resposta
59
+ equal: Igual a
60
+ match: Inclou text
61
+ not_answered: No resposta
62
+ not_equal: No és igual
63
+ condition_value: Text inclòs
64
+ display_condition: Condicions de visualització
65
+ mandatory: Aquesta condició s'ha de complir sempre independentment de l'estat d'altres condicions
66
+ remove: Eliminar
67
+ save_warning: Recorda de guardar l'enquesta abans de configurar les condicions de visualitzacióó
68
+ select_answer_option: Eliminar l'opció de resposta
69
+ select_condition_question: Seleccionar una pregunta
70
+ select_condition_type: Seleccionar un tipus de condició
33
71
  edit:
34
72
  save: Desa
35
73
  title: Editar el qüestionari
@@ -39,12 +77,17 @@ ca:
39
77
  already_answered_warning: No pots modificar les preguntes d'aquest formulari perquè ja ha estat contestat per algunes participants.
40
78
  collapse: Redueix totes les preguntes
41
79
  expand: Expandeix totes les preguntes
80
+ preview: Previsualitzar
81
+ title: Editar el formulari
82
+ unpublished_warning: El formulari no està publicat. Pots modificar les preguntes, però al fer-ho s'esborraran les respostes actuals.
42
83
  matrix_row:
43
84
  matrix_row: Fila
44
85
  remove: Elimina
45
86
  statement: Declaració
46
87
  question:
47
88
  add_answer_option: Afegeix una opció de resposta
89
+ add_display_condition: Afegir condició de visualització
90
+ add_display_condition_info: Guardar l'enquesta per a configurar les condicions de visualització
48
91
  add_matrix_row: Afegir fila
49
92
  any: Cap
50
93
  collapse: Redueix
@@ -62,7 +105,7 @@ ca:
62
105
  up: Pujar
63
106
  update:
64
107
  invalid: S'ha produït un error en desar el formulari.
65
- success: Els formularis s'han desat correctament.
108
+ success: Formulari desat correctament.
66
109
  errors:
67
110
  answer:
68
111
  body: El camp no pot estar en blanc
@@ -70,7 +113,7 @@ ca:
70
113
  extension_whitelist: 'Formats d''arxiu acceptats:'
71
114
  images:
72
115
  dimensions: "%{width} x %{height} px"
73
- dimensions_info: 'Esta imagen medirà:'
116
+ dimensions_info: 'Aquesta imatge medirà:'
74
117
  processors:
75
118
  resize_and_pad: Redimensionat i ajustat a
76
119
  resize_to_fit: Redimensionada per ajustar-la
@@ -85,7 +128,7 @@ ca:
85
128
  questionnaires:
86
129
  answer:
87
130
  invalid: S'han produït un error en respondre el formulari.
88
- max_choices_alert: Hi ha masses opcions seleccionades
131
+ max_choices_alert: Hi ha massa opcions seleccionades
89
132
  success: Has contestat el formulari correctament.
90
133
  question:
91
134
  max_choices: 'Opcions màximes: %{n}'
@@ -104,6 +147,11 @@ ca:
104
147
  questionnaire_for_private_users:
105
148
  body: El formulari només està disponible per a participants privades
106
149
  title: S'ha tancat el formulari
150
+ questionnaire_js_disabled:
151
+ body: Algunes de les característiques d'aquest formulari es deshabilitaran. Per millorar la teva experiència, si us plau, habilita JavaScript al teu navegador.
152
+ title: JavaScript està desactivat
153
+ questionnaire_not_published:
154
+ body: Aquest formulari no s'ha publicat encara.
107
155
  tos_agreement: En participar acceptes els Termes i condicions d'ús
108
156
  step_navigation:
109
157
  show:
@@ -112,9 +160,13 @@ ca:
112
160
  continue: Continuar
113
161
  submit: Enviar respostes
114
162
  user_answers_serializer:
163
+ body: Resposta
164
+ completion: Finalització
115
165
  created_at: Respost el
116
166
  id: Identificador de resposta
117
- ip_hash: Ip Hash
167
+ ip_hash: Hash d'adreça IP
168
+ question: Pregunta
118
169
  registered: Registrada
170
+ session_token: Identificador d'usuària
119
171
  unregistered: No registrada
120
172
  user_status: Estat de l'usuària
@@ -3,6 +3,8 @@ cs:
3
3
  attributes:
4
4
  answer:
5
5
  body: Odpovědět
6
+ choices: Možnosti
7
+ selected_choices: Vyberte možnosti
6
8
  question:
7
9
  max_choices: Maximální počet možností
8
10
  question_type: Typ
@@ -25,11 +27,47 @@ cs:
25
27
  description: Popis
26
28
  tos: Podmínky služby
27
29
  questionnaires:
30
+ actions:
31
+ back: Zpět na otázky
32
+ show: Zobrazit odpovědi
28
33
  answer_option:
29
34
  answer_option: Možnost odpovědi
30
35
  free_text: Volný text
31
36
  remove: Odstranit
32
37
  statement: Prohlášení
38
+ answers:
39
+ actions:
40
+ back: Zpět na odpovědi
41
+ export: Export
42
+ show: Zobrazit odpovědi
43
+ empty: Zatím žádné odpovědi
44
+ export:
45
+ answer:
46
+ title: 'Odpověď č.%{number}'
47
+ export_response:
48
+ title: survey_user_answers_%{token}
49
+ index:
50
+ title: "%{total} odpovědí celkem"
51
+ show:
52
+ title: 'Odpověď č.%{number}'
53
+ display_condition:
54
+ answer_option: Možnost odpovědi
55
+ condition_question: Otázka
56
+ condition_type: Podmínka
57
+ condition_types:
58
+ answered: Odpovězeno
59
+ equal: Rovná se
60
+ match: Zahrnuje text
61
+ not_answered: Nezodpovězeno
62
+ not_equal: Není rovno
63
+ condition_value: Zahrnuje text
64
+ display_condition: Stav zobrazení
65
+ mandatory: Tato podmínka musí být splněna vždy bez ohledu na stav ostatních podmínek
66
+ remove: Odebrat
67
+ save_warning: Nezapomeňte uložit formulář před nastavením podmínek zobrazení
68
+ select_answer_option: Vyberte možnost odpovědi
69
+ select_condition_question: Vyberte otázku
70
+ select_condition_type: Vyberte typ podmínky
33
71
  edit:
34
72
  save: Uložit
35
73
  title: Upravit dotazník
@@ -39,12 +77,17 @@ cs:
39
77
  already_answered_warning: Dotazník již odpověděli někteří uživatelé, takže nemusíte upravovat své dotazy.
40
78
  collapse: Sbalit všechny úlohy
41
79
  expand: Rozbalit všechny otázky
80
+ preview: Náhled
81
+ title: Upravit formulář
82
+ unpublished_warning: Formulář není zveřejněn. Můžete změnit jeho otázky, ale tím odstraníte aktuální odpovědi.
42
83
  matrix_row:
43
84
  matrix_row: Řádek
44
85
  remove: Odstranit
45
86
  statement: Prohlášení
46
87
  question:
47
88
  add_answer_option: Přidat možnost odpovědi
89
+ add_display_condition: Přidat podmínku zobrazení
90
+ add_display_condition_info: Uložit formulář pro nastavení podmínek zobrazení
48
91
  add_matrix_row: Přidat řádek
49
92
  any: Žádný
50
93
  collapse: Sbalit
@@ -62,7 +105,7 @@ cs:
62
105
  up: Nahoru
63
106
  update:
64
107
  invalid: Při ukládání dotazníku došlo k chybám.
65
- success: Dotazníky byly úspěšně uloženy.
108
+ success: Formulář byl úspěšně uložen.
66
109
  errors:
67
110
  answer:
68
111
  body: Tělo nemůže být prázdné
@@ -104,6 +147,11 @@ cs:
104
147
  questionnaire_for_private_users:
105
148
  body: Dotazník je k dispozici pouze pro soukromé uživatele
106
149
  title: Dotazník byl uzavřen
150
+ questionnaire_js_disabled:
151
+ body: Některé funkce tohoto formuláře budou zakázány. Pro zlepšení použití formuláře povolte JavaScript ve vašem prohlížeči.
152
+ title: JavaScript je zakázán
153
+ questionnaire_not_published:
154
+ body: Tento formulář zatím není zveřejněn.
107
155
  tos_agreement: Účastí přijímáte jeho smluvní podmínky
108
156
  step_navigation:
109
157
  show:
@@ -112,9 +160,13 @@ cs:
112
160
  continue: Pokračovat
113
161
  submit: Odeslat
114
162
  user_answers_serializer:
163
+ body: Odpověď
164
+ completion: Ukončení
115
165
  created_at: Zodpovězeno
116
166
  id: ID odpovědi
117
- ip_hash: Ip Hash
167
+ ip_hash: IP Hash
168
+ question: Otázka
118
169
  registered: Registrován
170
+ session_token: Identifikátor uživatele
119
171
  unregistered: Neregistrovaný
120
172
  user_status: Stav uživatele