decidim-surveys 0.29.2 → 0.30.0.rc2

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/surveys/survey_card_metadata_cell.rb +43 -0
  3. data/app/cells/decidim/surveys/survey_cell.rb +26 -0
  4. data/app/cells/decidim/surveys/survey_l_cell.rb +34 -0
  5. data/app/cells/decidim/surveys/survey_s_cell.rb +21 -0
  6. data/app/commands/decidim/surveys/admin/create_survey.rb +21 -0
  7. data/app/commands/decidim/surveys/admin/publish_survey.rb +58 -0
  8. data/app/commands/decidim/surveys/admin/unpublish_survey.rb +44 -0
  9. data/app/commands/decidim/surveys/admin/update_survey.rb +62 -0
  10. data/app/commands/decidim/surveys/publish_answers.rb +55 -0
  11. data/app/commands/decidim/surveys/unpublish_answers.rb +55 -0
  12. data/app/controllers/concerns/decidim/surveys/admin/filterable.rb +23 -0
  13. data/app/controllers/decidim/surveys/admin/answers_controller.rb +73 -0
  14. data/app/controllers/decidim/surveys/admin/publish_answers_controller.rb +66 -0
  15. data/app/controllers/decidim/surveys/admin/surveys_controller.rb +99 -11
  16. data/app/controllers/decidim/surveys/surveys_controller.rb +50 -5
  17. data/app/forms/decidim/surveys/admin/survey_form.rb +18 -0
  18. data/app/helpers/decidim/surveys/application_helper.rb +34 -0
  19. data/app/helpers/decidim/surveys/publish_answers_helper.rb +104 -0
  20. data/app/helpers/decidim/surveys/survey_helper.rb +4 -0
  21. data/app/models/decidim/surveys/survey.rb +67 -12
  22. data/app/permissions/decidim/surveys/admin/permissions.rb +10 -1
  23. data/app/permissions/decidim/surveys/permissions.rb +0 -2
  24. data/app/presenters/decidim/surveys/admin_log/survey_presenter.rb +34 -0
  25. data/app/queries/decidim/surveys/metrics/answers_metric_manage.rb +3 -3
  26. data/app/queries/decidim/surveys/metrics/survey_participants_metric_measure.rb +2 -2
  27. data/app/views/decidim/surveys/admin/answers/index.html.erb +49 -0
  28. data/app/views/decidim/surveys/admin/answers/show.html.erb +43 -0
  29. data/app/views/decidim/surveys/admin/publish_answers/_toggle_button.html.erb +22 -0
  30. data/app/views/decidim/surveys/admin/publish_answers/index.html.erb +44 -0
  31. data/app/views/decidim/surveys/admin/surveys/_form.html.erb +28 -0
  32. data/app/views/decidim/surveys/admin/surveys/edit.html.erb +4 -21
  33. data/app/views/decidim/surveys/admin/surveys/edit_questions.html.erb +47 -0
  34. data/app/views/decidim/surveys/admin/surveys/index.html.erb +51 -0
  35. data/app/views/decidim/surveys/surveys/_published_questions_answers.html.erb +13 -0
  36. data/app/views/decidim/surveys/surveys/_surveys.html.erb +13 -0
  37. data/app/views/decidim/surveys/surveys/index.html.erb +27 -0
  38. data/app/views/decidim/surveys/surveys/index.js.erb +4 -0
  39. data/app/views/decidim/surveys/surveys/not_allowed.html.erb +22 -0
  40. data/config/locales/ar.yml +4 -3
  41. data/config/locales/bg.yml +0 -14
  42. data/config/locales/ca.yml +83 -14
  43. data/config/locales/cs.yml +87 -14
  44. data/config/locales/de.yml +83 -14
  45. data/config/locales/el.yml +0 -11
  46. data/config/locales/en.yml +83 -14
  47. data/config/locales/es-MX.yml +83 -14
  48. data/config/locales/es-PY.yml +83 -14
  49. data/config/locales/es.yml +83 -14
  50. data/config/locales/eu.yml +83 -14
  51. data/config/locales/fi-plain.yml +83 -14
  52. data/config/locales/fi.yml +83 -14
  53. data/config/locales/fr-CA.yml +74 -14
  54. data/config/locales/fr.yml +74 -14
  55. data/config/locales/ga-IE.yml +0 -4
  56. data/config/locales/gl.yml +0 -10
  57. data/config/locales/hu.yml +0 -3
  58. data/config/locales/id-ID.yml +0 -2
  59. data/config/locales/is-IS.yml +0 -2
  60. data/config/locales/it.yml +3 -10
  61. data/config/locales/ja.yml +80 -13
  62. data/config/locales/lb.yml +0 -10
  63. data/config/locales/lt.yml +0 -11
  64. data/config/locales/lv.yml +0 -3
  65. data/config/locales/nl.yml +0 -10
  66. data/config/locales/no.yml +0 -10
  67. data/config/locales/pl.yml +0 -14
  68. data/config/locales/pt-BR.yml +0 -14
  69. data/config/locales/pt.yml +0 -10
  70. data/config/locales/ro-RO.yml +0 -11
  71. data/config/locales/ru.yml +0 -2
  72. data/config/locales/sk.yml +0 -3
  73. data/config/locales/sv.yml +0 -14
  74. data/config/locales/tr-TR.yml +0 -10
  75. data/config/locales/uk.yml +0 -2
  76. data/config/locales/zh-CN.yml +0 -6
  77. data/config/locales/zh-TW.yml +0 -11
  78. data/db/migrate/20240828103030_add_deleted_at_to_decidim_surveys_surveys.rb +8 -0
  79. data/db/migrate/20240925124312_add_settings_to_decidim_surveys_surveys.rb +42 -0
  80. data/db/migrate/20250115193836_add_allow_survey_editing.rb +7 -0
  81. data/decidim-surveys.gemspec +1 -1
  82. data/lib/decidim/api/survey_type.rb +2 -2
  83. data/lib/decidim/api/surveys_type.rb +4 -5
  84. data/lib/decidim/surveys/admin_engine.rb +15 -5
  85. data/lib/decidim/surveys/component.rb +7 -24
  86. data/lib/decidim/surveys/engine.rb +2 -2
  87. data/lib/decidim/surveys/seeds.rb +115 -10
  88. data/lib/decidim/surveys/test/factories.rb +24 -0
  89. data/lib/decidim/surveys/version.rb +1 -1
  90. metadata +48 -18
  91. data/app/commands/decidim/surveys/create_survey.rb +0 -19
  92. data/app/views/decidim/surveys/admin/component/_actions.html.erb +0 -44
@@ -0,0 +1,43 @@
1
+ <div class="card" id="answers">
2
+ <div class="item_show__header">
3
+ <h1 class="item_show__header-title">
4
+ <%= t ".title", number: current_idx %>
5
+
6
+ <%= link_to t("actions.next", scope: "decidim.forms.admin.questionnaires.answers").html_safe, next_url, rel: "next", class: "button button__sm button__secondary next" unless last? %>
7
+ <%= link_to t("actions.previous", scope: "decidim.forms.admin.questionnaires.answers").html_safe, prev_url, rel: "prev", class: "button button__sm button__secondary prev" unless first? %>
8
+ <%= link_to t("actions.export", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_export_response_url(@participant.session_token), class: "button button__sm button__secondary export" %>
9
+ <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires.answers"), questionnaire_participants_url, class: "button button__sm button__secondary back" %>
10
+ </h1>
11
+ </div>
12
+ <div class="card-section">
13
+ <div class="table">
14
+ <table class="table-list">
15
+ <thead>
16
+ <tr>
17
+ <th><%= t("session_token", scope: "decidim.forms.user_answers_serializer") %></th>
18
+ <th><%= t("user_status", scope: "decidim.forms.user_answers_serializer") %></th>
19
+ <th><%= t("ip_hash", scope: "decidim.forms.user_answers_serializer") %></th>
20
+ <th><%= t("completion", scope: "decidim.forms.user_answers_serializer") %></th>
21
+ <th><%= t("created_at", scope: "decidim.forms.user_answers_serializer") %></th>
22
+ <th></th>
23
+ </tr>
24
+ </thead>
25
+ <tbody>
26
+ <tr>
27
+ <td><%= @participant.session_token %></td>
28
+ <td><%= @participant.status %></td>
29
+ <td><%= @participant.ip_hash %></td>
30
+ <td><%= display_percentage(@participant.completion) %></td>
31
+ <td><%= l @participant.answered_at, format: :short %></td>
32
+ </tr>
33
+ </tbody>
34
+ </table>
35
+ </div>
36
+ <dl class="p-4 [&_ul]:list-disc [&_ul]:pl-4">
37
+ <% @participant.answers.each do |answer| %>
38
+ <dt class="font-semibold"><%= answer.question %></dt>
39
+ <dd><%= answer.body %></dd>
40
+ <% end %>
41
+ </dl>
42
+ </div>
43
+ </div>
@@ -0,0 +1,22 @@
1
+ <div class="toggle__switch-trigger float-right">
2
+ <% label = "publish_answer_#{question.id}" %>
3
+ <label for="<%= label %>" class="toggle__switch-toggle">
4
+ <span class="toggle__switch-trigger-text">
5
+ <%= content_tag(:span, class: "label success ml-[-8.5rem] mt-1 #{"hidden" if question.survey_answers_published_at.blank?}") { t("status.published", scope: "decidim.surveys.admin.publish_answers.index") } %>
6
+ <%= content_tag(:span, class: "label alert -ml-40 mt-1 #{"hidden" if question.survey_answers_published_at.present?}") { t("status.not_published", scope: "decidim.surveys.admin.publish_answers.index") } %>
7
+ </span>
8
+ <span>
9
+ <input
10
+ <%== %(checked="checked") if question.survey_answers_published_at.present? %>
11
+ id="<%= label %>"
12
+ type="checkbox"
13
+ name="<%= label %>"
14
+ data-publish-question-answer-action="<%= question.survey_answers_published_at.present? ? "unpublish" : "publish" %>"
15
+ data-publish-question-answer-question-url="<%= survey_publish_answer_path(params[:survey_id], question) %>">
16
+ <span class="toggle__switch-toggle-content">
17
+ </span>
18
+ <%= icon "check-line", class: "toggle__switch-toggle-icon" %>
19
+ <%= icon "close-line", class: "toggle__switch-toggle-icon" %>
20
+ </span>
21
+ </label>
22
+ </div>
@@ -0,0 +1,44 @@
1
+
2
+ <% add_decidim_page_title(t(".title")) %>
3
+ <div class="item_show__header border-none">
4
+ <div class="w-full">
5
+ <h1 class="item_show__header-title">
6
+ <%= t(".title") %>
7
+ <%= link_to t("actions.back", scope: "decidim.forms.admin.questionnaires"), questionnaire_url, class: "button button__sm button__secondary new" %>
8
+ </h1>
9
+ </div>
10
+ </div>
11
+
12
+ <p class="mt-2 text-gray-600">
13
+ <%= t(".description") %>
14
+ </p>
15
+
16
+ <hr class="border-b border-t-0 border-gray mb-8 pb-4">
17
+
18
+ <div class="item__edit item__edit-1col">
19
+ <div class="item__edit-form">
20
+ <ol class="list-decimal list-inside">
21
+ <% @survey.questionnaire.questions.each do |question| %>
22
+ <% next if question.question_type == "separator" %>
23
+
24
+ <li class="<%= "text-gray" unless question_answer_is_publicable(question.question_type) %> mb-6">
25
+ <div class="inline">
26
+ <span><%= translated_attribute question.body %> (<%= I18n.t("decidim.surveys.admin.publish_answers.index.answers", count: question.answers.count) %>)</span>
27
+
28
+ <% if question_answer_is_publicable(question.question_type) %>
29
+ <%= render partial: "toggle_button", locals: { question: } %>
30
+ <% end %>
31
+ </div>
32
+
33
+ <% if question_answer_is_publicable(question.question_type) %>
34
+ <div class="m-4">
35
+ <%= chart_for_question(question.id) %>
36
+ </div>
37
+ <% end %>
38
+ </li>
39
+ <% end %>
40
+ </ol>
41
+ </div>
42
+ </div>
43
+
44
+ <%= append_javascript_pack_tag "decidim_forms_admin" %>
@@ -0,0 +1,28 @@
1
+ <%= render "decidim/forms/admin/questionnaires/form", form: %>
2
+ <div class="form__wrapper">
3
+ <div class="card pt-4">
4
+ <div class="card-section">
5
+ <div class="row column">
6
+ <%= form.check_box :allow_answers, label: t("models.components.allow_answers", scope: "decidim.forms.admin"), aria: { label: :allow_answers } %>
7
+ </div>
8
+ <div class="row column">
9
+ <%= form.check_box :allow_editing_answers, label: t("models.components.allow_editing_answers", scope: "decidim.forms.admin"), aria: { label: :allow_editing_answers } %>
10
+ </div>
11
+ <div class="row column">
12
+ <%= form.check_box :allow_unregistered, label: t("models.components.allow_unregistered", scope: "decidim.forms.admin"), aria: { label: :allow_unregistered }, help_text: t("models.components.allow_unregistered_help", scope: "decidim.forms.admin") %>
13
+ </div>
14
+ <div class="row column">
15
+ <%= form.datetime_field :starts_at, label: t("models.components.starts_at", scope: "decidim.forms.admin"), aria: { label: :starts_at }, help_text: t("models.components.starts_at_help", scope: "decidim.forms.admin") %>
16
+ </div>
17
+ <div class="row column">
18
+ <%= form.datetime_field :ends_at, label: t("models.components.ends_at", scope: "decidim.forms.admin"), aria: { label: :ends_at }, help_text: t("models.components.ends_at_help", scope: "decidim.forms.admin") %>
19
+ </div>
20
+ <div class="row column">
21
+ <%= form.check_box :clean_after_publish, label: t("models.components.clean_after_publish", scope: "decidim.forms.admin"), aria: { label: :clean_after_publish } %>
22
+ </div>
23
+ <div class="row column">
24
+ <%= form.translated :editor, :announcement, toolbar: :content, lines: 10, label: t("models.components.announcement", scope: "decidim.forms.admin"), aria: { label: :announcement } %>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </div>
@@ -1,33 +1,17 @@
1
- <% add_decidim_page_title(t("decidim.forms.admin.questionnaires.edit.title")) %>
1
+ <% add_decidim_page_title(t(".title")) %>
2
2
 
3
3
  <% if templates_defined? && choose_template? %>
4
4
  <%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %>
5
5
  <% else %>
6
-
7
6
  <div class="item_show__header">
8
7
  <h1 class="item_show__header-title">
9
- <%= edit_questionnaire_title %>
10
-
11
- <% if allowed_to? :preview, :questionnaire %>
12
- <%= link_to t("preview", scope: "decidim.forms.admin.questionnaires.form"), public_url, class: "button button__sm button__secondary", target: :_blank, data: { "external-link": false } %>
13
- <% end %>
14
- <% if questionnaire.answers.any? %>
15
- <%= export_dropdown(current_component, questionnaire.id) if allowed_to? :export_answers, :questionnaire %>
16
- <% if allowed_to? :show, :questionnaire_answers %>
17
- <%= link_to t("actions.show", scope: "decidim.forms.admin.questionnaires"), questionnaire_participants_url, class: "button button__sm button__secondary new whitespace-nowrap" %>
18
- <% end %>
19
- <% else %>
20
- <button class="button button__sm button__secondary whitespace-nowrap" disabled><%= t("empty", scope: "decidim.forms.admin.questionnaires.answers") %></button>
21
- <% end %>
22
- <%= render partial: "decidim/admin/components/resource_action" %>
23
-
8
+ <%= t(".title") %>
24
9
  </h1>
25
10
  </div>
26
-
27
11
  <div class="item__edit item__edit-1col">
28
12
  <div class="item__edit-form">
29
- <%= decidim_form_for(@form, url: update_url, method: :put, html: { class: "form-defaults form edit_questionnaire" }) do |form| %>
30
- <%= render partial: "decidim/forms/admin/questionnaires/form", object: form %>
13
+ <%= decidim_form_for(@form, url: survey_path(@survey), html: { class: "form-defaults form edit_questionnaire" }) do |form| %>
14
+ <%= render partial: "form", object: form %>
31
15
  <div class="item__edit-sticky">
32
16
  <div class="item__edit-sticky-container">
33
17
  <%= form.submit t("save", scope: "decidim.forms.admin.questionnaires.edit"), class: "button button__sm button__secondary" %>
@@ -36,5 +20,4 @@
36
20
  <% end %>
37
21
  </div>
38
22
  </div>
39
-
40
23
  <% end %>
@@ -0,0 +1,47 @@
1
+ <% add_decidim_page_title(t("decidim.forms.admin.questionnaires.edit_questions.title")) %>
2
+
3
+ <% if templates_defined? && choose_template? %>
4
+ <%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %>
5
+ <% else %>
6
+
7
+ <div class="questionnaire-questions">
8
+ <div class="item_show__header">
9
+ <h1 class="item_show__header-title">
10
+ <%= t("decidim.forms.admin.questionnaires.edit_questions.title") %>
11
+ <% if questionnaire.questions_editable? %>
12
+ <button class="button button__sm button__secondary add-question"><%= t("add_question", scope: "decidim.forms.admin.questionnaires.edit_questions") %></button>
13
+ <button class="button button__sm button__secondary add-separator"><%= t("add_separator", scope: "decidim.forms.admin.questionnaires.edit_questions") %></button>
14
+ <button class="button button__sm button__secondary add-title-and-description"><%= t("add_title_and_description", scope: "decidim.forms.admin.questionnaires.edit_questions") %></button>
15
+ <% end %>
16
+ <% if allowed_to? :preview, :questionnaire %>
17
+ <%= link_to t("preview", scope: "decidim.forms.admin.questionnaires.form"), public_url, class: "button button__sm button__transparent-secondary", target: :_blank, data: { "external-link": false } %>
18
+ <% end %>
19
+ <% if questionnaire.answers.any? %>
20
+ <%= export_dropdown(current_component, questionnaire.id) if allowed_to? :export_answers, :questionnaire %>
21
+ <% if allowed_to? :show, :questionnaire_answers %>
22
+ <%= link_to t("actions.show", scope: "decidim.forms.admin.questionnaires"), questionnaire_participants_url, class: "button button__sm button__secondary new whitespace-nowrap" %>
23
+ <% end %>
24
+ <% if allowed_to? :index, :questionnaire_publish_answers, survey: @survey %>
25
+ <%= link_to t("actions.publish_answers", scope: "decidim.forms.admin.questionnaires"), survey_publish_answers_path(survey_id: params[:id]), class: "button button__sm button__secondary new" %>
26
+ <% end %>
27
+ <% else %>
28
+ <button class="button button__sm button__secondary whitespace-nowrap" disabled><%= t("empty", scope: "decidim.forms.admin.questionnaires.answers") %></button>
29
+ <% end %>
30
+ </h1>
31
+ </div>
32
+ </div>
33
+
34
+ <div class="item__edit item__edit-1col">
35
+ <div class="item__edit-form">
36
+ <%= decidim_form_for(@form, url: update_questions_survey_path(@survey), method: :patch, html: { class: "form-defaults form edit_questions_survey" }) do |form| %>
37
+ <%= render partial: "decidim/forms/admin/questionnaires/questions_form", object: form %>
38
+ <div class="item__edit-sticky">
39
+ <div class="item__edit-sticky-container">
40
+ <%= form.submit t("save", scope: "decidim.forms.admin.questionnaires.edit"), class: "button button__sm button__secondary" %>
41
+ </div>
42
+ </div>
43
+ <% end %>
44
+ </div>
45
+ </div>
46
+
47
+ <% end %>
@@ -0,0 +1,51 @@
1
+ <% add_decidim_page_title(t(".title")) %>
2
+ <div class="card">
3
+ <div class="item_show__header item_show__header--with-action-options">
4
+ <h1 class="item_show__header-title">
5
+ <%= t(".title") %>
6
+ <%= link_to t("actions.new_survey", scope: "decidim.surveys"), surveys_path, method: :post, class: "button button__sm button__secondary" %>
7
+ <%= render partial: "decidim/admin/components/resource_action" %>
8
+ </h1>
9
+ </div>
10
+ <div class="table-scroll mt-8">
11
+ <table class="table-list">
12
+ <thead>
13
+ <tr>
14
+ <th><%= t("models.survey.fields.title", scope: "decidim.surveys") %></th>
15
+ <th><%= t("models.survey.fields.questions", scope: "decidim.surveys") %></th>
16
+ <th><%= t("models.survey.fields.answers", scope: "decidim.surveys") %></th>
17
+ <th><%= t("models.survey.fields.status", scope: "decidim.surveys") %></th>
18
+ <th><%= t("actions.title", scope: "decidim.surveys") %></th>
19
+ </tr>
20
+ </thead>
21
+ <tbody>
22
+ <% surveys.each do |survey| %>
23
+ <tr>
24
+ <td><%= decidim_sanitize_translated(survey.title) %></td>
25
+ <td><%= survey.questionnaire.questions.size %></td>
26
+ <td><%= survey.questionnaire.answers.size %></td>
27
+ <td><%= survey.open? ? t("models.survey.status.open", scope: "decidim.surveys") : t("models.survey.status.closed", scope: "decidim.surveys") %></td>
28
+ <td class="table-list__actions">
29
+ <%= icon_link_to "pencil-line", edit_survey_path(survey), t("actions.edit", scope: "decidim.surveys"), class: "action-icon--edit" %>
30
+ <%= icon_link_to "survey-line", edit_questions_survey_path(survey), t("actions.manage_questions", scope: "decidim.surveys"), class: "action-icon--copy" %>
31
+ <% if allowed_to? :preview, :questionnaire %>
32
+ <%= icon_link_to "eye-line", resource_locator(survey).path, t("actions.preview", scope: "decidim.surveys"), class: "action-icon--preview", target: :blank, data: { "external-link": false } %>
33
+ <% end %>
34
+ <% if allowed_to?(:update, :questionnaire) %>
35
+ <% if survey.published? %>
36
+ <%= icon_link_to "close-circle-line", unpublish_survey_path(survey), t("actions.unpublish", scope: "decidim.admin"), method: :put, class: "action-icon--unpublish" %>
37
+ <% elsif survey.clean_after_publish? %>
38
+ <%= icon_link_to "check-line", publish_survey_path(survey), t("actions.publish", scope: "decidim.admin"), method: :put, class: "action-icon--publish", data: { confirm: t("actions.answers_alert", scope: "decidim.surveys", answers_count: survey.questionnaire.answers.size) } %>
39
+ <% else %>
40
+ <%= icon_link_to "check-line", publish_survey_path(survey), t("actions.publish", scope: "decidim.admin"), method: :put, class: "action-icon--publish" %>
41
+ <% end %>
42
+ <% end %>
43
+ <%= resource_permissions_link(survey) %>
44
+ <%= icon_link_to "delete-bin-line", survey_path(survey), t("actions.destroy", scope: "decidim.surveys"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.surveys") } %>
45
+ </td>
46
+ </tr>
47
+ <% end %>
48
+ </tbody>
49
+ </table>
50
+ </div>
51
+ </div>
@@ -0,0 +1,13 @@
1
+ <% questionnaire.questions.each do |question| %>
2
+ <% next if question.question_type == "separator" %>
3
+ <% next unless question.survey_answers_published_at %>
4
+
5
+ <div class="mb-12">
6
+ <div class="mb-4">
7
+ <h2 class="h5 inline"><%= translated_attribute question.body %></h2>
8
+ <span><%= I18n.t("decidim.surveys.admin.publish_answers.index.answers", count: question.answers.count) %></span>
9
+ </div>
10
+
11
+ <%= chart_for_question(question.id) %>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% if surveys.length.zero? %>
2
+ <%= cell("decidim/announcement", t("decidim.surveys.surveys.no_surveys_warning"), callout_class: "warning" ) %>
3
+ <% else %>
4
+ <h2 class="h5 md:h3 decorator"><%= t("surveys_count", scope: "decidim.surveys.surveys.count", count: surveys.count) %></h2>
5
+
6
+ <div class="card__list-list">
7
+ <% surveys.each do |survey| %>
8
+ <%= card_for survey %>
9
+ <% end %>
10
+ </div>
11
+
12
+ <%= decidim_paginate surveys %>
13
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <% add_decidim_meta_tags(
2
+ description: translated_attribute(current_component.participatory_space.try(:description)),
3
+ title: t("decidim.components.pagination.page_title",
4
+ component_name: translated_attribute(current_component.name),
5
+ current_page: surveys.current_page,
6
+ total_pages: surveys.total_pages ),
7
+ url: surveys_url,
8
+ resource: current_component
9
+ ) %>
10
+
11
+ <% add_decidim_page_title(t("decidim.surveys.directory.surveys.index.surveys")) %>
12
+
13
+ <% content_for :aside do %>
14
+ <% title = current_component.present? ? translated_attribute(current_component.name) : t("decidim.components.surveys.name") %>
15
+ <h1 class="title-decorator"><%= title %></h1>
16
+
17
+ <%= render layout: "decidim/shared/filters", locals: { filter_sections:, skip_to_id: "surveys" } do %>
18
+ <% end %>
19
+ <% end %>
20
+
21
+ <%= render layout: "layouts/decidim/shared/layout_two_col" do %>
22
+ <%= render partial: "decidim/shared/component_announcement" %>
23
+
24
+ <section id="surveys" class="layout-main__section layout-main__heading">
25
+ <%= render partial: "surveys" %>
26
+ </section>
27
+ <% end %>
@@ -0,0 +1,4 @@
1
+ var $surveys = $('#surveys');
2
+ $surveys.html('<%= j(render partial: "surveys").strip.html_safe %>');
3
+
4
+ document.dispatchEvent(new CustomEvent("ajax:loaded", { detail: $surveys[0] }));
@@ -0,0 +1,22 @@
1
+ <%= render layout: "layouts/decidim/shared/layout_center" do %>
2
+
3
+ <div class="text-center py-10">
4
+ <% if questionnaire.title.present? %>
5
+ <h1 class="title-decorator inline-block text-left mb-12">
6
+ <%= translated_attribute questionnaire.title %>
7
+ </h1>
8
+ <% end %>
9
+
10
+ <% if questionnaire.description.present? %>
11
+ <div class="text-left editor-content">
12
+ <%= decidim_sanitize_editor_admin translated_attribute questionnaire.description %>
13
+ </div>
14
+ <% end %>
15
+ </div>
16
+
17
+ <%= render partial: "decidim/shared/component_announcement" if current_component.manifest_name == "surveys" %>
18
+ <section>
19
+ <% body = t("decidim.forms.questionnaires.show.questionnaire_answered.body") %>
20
+ <%= cell("decidim/announcement", { title: t("decidim.forms.questionnaires.show.questionnaire_answered.title"), body: body }) %>
21
+ </section>
22
+ <% end %>
@@ -25,13 +25,10 @@ ar:
25
25
  surveys:
26
26
  actions:
27
27
  answer: إجابة
28
- name: الدراسة الاستقصائية
29
28
  settings:
30
29
  global:
31
30
  announcement: إعلان
32
31
  step:
33
- allow_answers: السماح بالإجابات
34
- allow_unregistered: السماح للمستخدمين غير المسجَّلِين بالإجابة على استطلاع الرأي
35
32
  announcement: إعلان
36
33
  events:
37
34
  surveys:
@@ -51,6 +48,10 @@ ar:
51
48
  object: إجابات على الدراسات الاستقصائية
52
49
  title: إجابات للمسوحات
53
50
  surveys:
51
+ actions:
52
+ edit: تعديل
53
+ preview: معاينة
54
+ title: الإجراءات
54
55
  admin:
55
56
  exports:
56
57
  survey_user_answers: إجابات المشاركين في الاستطلاع
@@ -17,21 +17,10 @@ bg:
17
17
  surveys:
18
18
  actions:
19
19
  answer: Отговор
20
- name: Анкета
21
20
  settings:
22
21
  global:
23
22
  announcement: Съобщение
24
- clean_after_publish: Изтриване на отговорите при публикуване на проучването
25
- ends_at: Отговорите се приемат до
26
- ends_at_help: Оставете празно при липса на конкретна дата
27
- scope_id: Обхват
28
- scopes_enabled: Обхватите са активирани
29
- starts_at: Отговорите се приемат от
30
- starts_at_help: Оставете празно при липса на конкретна дата
31
23
  step:
32
- allow_answers: Разрешаване на отговори
33
- allow_unregistered: Разрешаване на нерегистрирани потребители да отговарят на въпросите в проучването
34
- allow_unregistered_help: Ако е активно, няма да се изисква влизане, за да се отговори на анкетата. Това може да доведе до лоши или ненадеждни данни и ще e по-уязвимo на автоматизирани атаки. Използвайте с повишено внимание! Имайте предвид, че участник може да отговори на едно и също проучване няколко пъти, като използва различни браузъри или функцията за „частно сърфиране“ на своя уеб браузър.
35
24
  announcement: Съобщение
36
25
  events:
37
26
  surveys:
@@ -54,9 +43,6 @@ bg:
54
43
  answers_count: Отговори
55
44
  surveys:
56
45
  admin:
57
- component:
58
- actions:
59
- answers_alert: Ако публикувате компонента, всички резултати ще бъдат премахнати.
60
46
  exports:
61
47
  survey_user_answers: Отговори на участник в анкети
62
48
  surveys:
@@ -13,25 +13,20 @@ ca:
13
13
  one: Resposta
14
14
  other: Respostes
15
15
  decidim:
16
+ admin:
17
+ admin_log:
18
+ changeset:
19
+ surveys: Enquestes
16
20
  components:
17
21
  surveys:
18
22
  actions:
19
23
  answer: Respondre
20
- name: Enquesta
24
+ name: Enquestes
21
25
  settings:
26
+ announcement: Avís
22
27
  global:
23
28
  announcement: Avís
24
- clean_after_publish: Esborrar les respostes en publicar l'enquesta
25
- ends_at: Respostes acceptades fins a
26
- ends_at_help: Deixar en blanc per cap data específica
27
- scope_id: Àmbit
28
- scopes_enabled: Àmbits habilitats
29
- starts_at: Respostes acceptades de
30
- starts_at_help: Deixar en blanc per cap data específica
31
29
  step:
32
- allow_answers: Permetre respostes
33
- allow_unregistered: Permet a usuàries no registrades contestar l'enquesta
34
- allow_unregistered_help: Si està activat, no serà necessari iniciar sessió per a respondre l'enquesta. Això pot implicar una recollida de dades pobra o poc fiable i serà més vulnerable a atacs automatitzats. Fes-ho servir amb precaució! És important que una participant pugui respondre a la mateixa enquesta diverses vegades, fent servir diferents navegador o la funció de "navegació privada" del seu navegadro web.
35
30
  announcement: Avís
36
31
  events:
37
32
  surveys:
@@ -53,18 +48,78 @@ ca:
53
48
  statistics:
54
49
  answers_count: Respostes
55
50
  surveys:
51
+ actions:
52
+ answers_alert: L'opció d'esborrar les respostes en publicar l'enquesta està activada. Si segueixes, s'esborraran les %{answers_count} existents actualment.
53
+ confirm_destroy: Segur que ho vols eliminar?
54
+ destroy: Eliminar
55
+ edit: Editar
56
+ manage_questions: Gestionar les preguntes
57
+ new_survey: Nova enquesta
58
+ preview: Previsualitzar
59
+ title: Accions
56
60
  admin:
57
- component:
58
- actions:
59
- answers_alert: Si publiques el component, s'eliminaran tots els resultats.
61
+ answers:
62
+ index:
63
+ title: "%{total} respostes totals"
64
+ show:
65
+ title: 'Resposta #%{number}'
60
66
  exports:
61
67
  survey_user_answers: Respostes de les participants de l'enquesta
68
+ publish_answers:
69
+ index:
70
+ answers:
71
+ one: "%{count} resposta"
72
+ other: "%{count} respuestas"
73
+ description: |-
74
+ Publicant les respostes a les preguntes de l'enquesta, aquestes seran visibles per a les visitants.
75
+ Pots seleccionar les preguntes de les que vols publicar les respostes marcant el "checkbox" de cadascuna d'elles.
76
+ Només pots publicar les respostes de les preguntes que són del tipus de resposta: "Opció única", "Opció múltiple", "Matriu (opció única)", "Matriu (opció múltiple), i "Ordenació".
77
+ status:
78
+ not_published: No publicades
79
+ published: Publicades
80
+ title: Publicar respostes
62
81
  surveys:
82
+ create:
83
+ invalid: S'ha produït un error creant l'enquesta.
84
+ success: Enquesta creada correctament.
85
+ destroy:
86
+ success: Enquesta eliminada correctament.
87
+ edit:
88
+ title: Editar l'enquesta
89
+ index:
90
+ title: Enquestes
91
+ publish:
92
+ invalid: S'ha produït un error en publicar aquesta enquesta.
93
+ success: Enquesta publicada correctament.
94
+ unpublish:
95
+ invalid: S'ha produït un error en despublicar aquesta enquesta.
96
+ success: Enquesta despublicada correctament.
63
97
  update:
64
98
  invalid: S'ha produït un error en desar l'enquesta.
65
99
  success: Enquesta desada correctament.
100
+ admin_log:
101
+ survey:
102
+ create: "%{user_name} ha creat l'enquesta %{resource_name} a l'espai de participació %{space_name}"
103
+ delete: "%{user_name} ha eliminat l'enquesta %{resource_name} a l'espai de participació %{space_name}"
104
+ publish: "%{user_name} ha publicat l'enquesta %{resource_name} a l'espai de participació %{space_name}"
105
+ unpublish: "%{user_name} ha despublicat l'enquesta %{resource_name} a l'espai de participació %{space_name}"
106
+ update: "%{user_name} ha actualitzat l'enquesta %{resource_name} de l'espai de participació %{space_name}"
107
+ directory:
108
+ surveys:
109
+ index:
110
+ surveys: Enquestes
66
111
  last_activity:
67
112
  new_survey: 'Nova enquesta:'
113
+ models:
114
+ survey:
115
+ fields:
116
+ answers: Respostes
117
+ questions: Preguntes
118
+ status: Estat
119
+ title: Títol
120
+ status:
121
+ closed: Tancada
122
+ open: Oberta
68
123
  survey_confirmation_mailer:
69
124
  confirmation:
70
125
  body: Has respost amb èxit a l'enquesta %{questionnaire_title} dins de %{participatory_space}
@@ -75,3 +130,17 @@ ca:
75
130
  invalid: S'ha produït un error en respondre l'enquesta.
76
131
  spam_detected: Hi ha hagut un problema responent el formulari. Potser has anat massa ràpid, ho pots tornar a intentar?
77
132
  success: Enquesta resposta correctament.
133
+ count:
134
+ surveys_count:
135
+ one: "%{count} enquesta"
136
+ other: "%{count} enquestes"
137
+ filters:
138
+ all: Totes
139
+ state_values:
140
+ closed: Tancada
141
+ open: Obertes
142
+ no_surveys_warning: No hi ha enquestes que coincideixin amb el teu criteri de cerca o no hi ha cap enquesta.
143
+ show:
144
+ closed: Tancada
145
+ open: Oberta
146
+ questions: preguntes