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.
- checksums.yaml +4 -4
- data/app/cells/decidim/surveys/survey_card_metadata_cell.rb +43 -0
- data/app/cells/decidim/surveys/survey_cell.rb +26 -0
- data/app/cells/decidim/surveys/survey_l_cell.rb +34 -0
- data/app/cells/decidim/surveys/survey_s_cell.rb +21 -0
- data/app/commands/decidim/surveys/admin/create_survey.rb +21 -0
- data/app/commands/decidim/surveys/admin/publish_survey.rb +58 -0
- data/app/commands/decidim/surveys/admin/unpublish_survey.rb +44 -0
- data/app/commands/decidim/surveys/admin/update_survey.rb +62 -0
- data/app/commands/decidim/surveys/publish_answers.rb +55 -0
- data/app/commands/decidim/surveys/unpublish_answers.rb +55 -0
- data/app/controllers/concerns/decidim/surveys/admin/filterable.rb +23 -0
- data/app/controllers/decidim/surveys/admin/answers_controller.rb +73 -0
- data/app/controllers/decidim/surveys/admin/publish_answers_controller.rb +66 -0
- data/app/controllers/decidim/surveys/admin/surveys_controller.rb +99 -11
- data/app/controllers/decidim/surveys/surveys_controller.rb +50 -5
- data/app/forms/decidim/surveys/admin/survey_form.rb +18 -0
- data/app/helpers/decidim/surveys/application_helper.rb +34 -0
- data/app/helpers/decidim/surveys/publish_answers_helper.rb +104 -0
- data/app/helpers/decidim/surveys/survey_helper.rb +4 -0
- data/app/models/decidim/surveys/survey.rb +67 -12
- data/app/permissions/decidim/surveys/admin/permissions.rb +10 -1
- data/app/permissions/decidim/surveys/permissions.rb +0 -2
- data/app/presenters/decidim/surveys/admin_log/survey_presenter.rb +34 -0
- data/app/queries/decidim/surveys/metrics/answers_metric_manage.rb +3 -3
- data/app/queries/decidim/surveys/metrics/survey_participants_metric_measure.rb +2 -2
- data/app/views/decidim/surveys/admin/answers/index.html.erb +49 -0
- data/app/views/decidim/surveys/admin/answers/show.html.erb +43 -0
- data/app/views/decidim/surveys/admin/publish_answers/_toggle_button.html.erb +22 -0
- data/app/views/decidim/surveys/admin/publish_answers/index.html.erb +44 -0
- data/app/views/decidim/surveys/admin/surveys/_form.html.erb +28 -0
- data/app/views/decidim/surveys/admin/surveys/edit.html.erb +4 -21
- data/app/views/decidim/surveys/admin/surveys/edit_questions.html.erb +47 -0
- data/app/views/decidim/surveys/admin/surveys/index.html.erb +51 -0
- data/app/views/decidim/surveys/surveys/_published_questions_answers.html.erb +13 -0
- data/app/views/decidim/surveys/surveys/_surveys.html.erb +13 -0
- data/app/views/decidim/surveys/surveys/index.html.erb +27 -0
- data/app/views/decidim/surveys/surveys/index.js.erb +4 -0
- data/app/views/decidim/surveys/surveys/not_allowed.html.erb +22 -0
- data/config/locales/ar.yml +4 -3
- data/config/locales/bg.yml +0 -14
- data/config/locales/ca.yml +83 -14
- data/config/locales/cs.yml +87 -14
- data/config/locales/de.yml +83 -14
- data/config/locales/el.yml +0 -11
- data/config/locales/en.yml +83 -14
- data/config/locales/es-MX.yml +83 -14
- data/config/locales/es-PY.yml +83 -14
- data/config/locales/es.yml +83 -14
- data/config/locales/eu.yml +83 -14
- data/config/locales/fi-plain.yml +83 -14
- data/config/locales/fi.yml +83 -14
- data/config/locales/fr-CA.yml +74 -14
- data/config/locales/fr.yml +74 -14
- data/config/locales/ga-IE.yml +0 -4
- data/config/locales/gl.yml +0 -10
- data/config/locales/hu.yml +0 -3
- data/config/locales/id-ID.yml +0 -2
- data/config/locales/is-IS.yml +0 -2
- data/config/locales/it.yml +3 -10
- data/config/locales/ja.yml +80 -13
- data/config/locales/lb.yml +0 -10
- data/config/locales/lt.yml +0 -11
- data/config/locales/lv.yml +0 -3
- data/config/locales/nl.yml +0 -10
- data/config/locales/no.yml +0 -10
- data/config/locales/pl.yml +0 -14
- data/config/locales/pt-BR.yml +0 -14
- data/config/locales/pt.yml +0 -10
- data/config/locales/ro-RO.yml +0 -11
- data/config/locales/ru.yml +0 -2
- data/config/locales/sk.yml +0 -3
- data/config/locales/sv.yml +0 -14
- data/config/locales/tr-TR.yml +0 -10
- data/config/locales/uk.yml +0 -2
- data/config/locales/zh-CN.yml +0 -6
- data/config/locales/zh-TW.yml +0 -11
- data/db/migrate/20240828103030_add_deleted_at_to_decidim_surveys_surveys.rb +8 -0
- data/db/migrate/20240925124312_add_settings_to_decidim_surveys_surveys.rb +42 -0
- data/db/migrate/20250115193836_add_allow_survey_editing.rb +7 -0
- data/decidim-surveys.gemspec +1 -1
- data/lib/decidim/api/survey_type.rb +2 -2
- data/lib/decidim/api/surveys_type.rb +4 -5
- data/lib/decidim/surveys/admin_engine.rb +15 -5
- data/lib/decidim/surveys/component.rb +7 -24
- data/lib/decidim/surveys/engine.rb +2 -2
- data/lib/decidim/surveys/seeds.rb +115 -10
- data/lib/decidim/surveys/test/factories.rb +24 -0
- data/lib/decidim/surveys/version.rb +1 -1
- metadata +48 -18
- data/app/commands/decidim/surveys/create_survey.rb +0 -19
- 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("
|
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
|
-
<%=
|
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:
|
30
|
-
<%= render partial: "
|
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,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 %>
|
data/config/locales/ar.yml
CHANGED
@@ -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: إجابات المشاركين في الاستطلاع
|
data/config/locales/bg.yml
CHANGED
@@ -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:
|
data/config/locales/ca.yml
CHANGED
@@ -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:
|
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
|
-
|
58
|
-
|
59
|
-
|
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
|