decidim-forms 0.22.0 → 0.23.0

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 (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