decidim-forms 0.17.2 → 0.18.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.
- checksums.yaml +4 -4
- data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +1 -0
- data/app/forms/decidim/forms/questionnaire_form.rb +1 -0
- data/app/helpers/decidim/forms/application_helper.rb +19 -0
- data/app/models/decidim/forms/answer.rb +12 -0
- data/app/views/decidim/forms/admin/questionnaires/_answer_option_template.html.erb +7 -0
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +9 -7
- data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +1 -7
- data/app/views/decidim/forms/questionnaires/show.html.erb +6 -0
- data/config/locales/ar.yml +82 -0
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +5 -5
- data/lib/decidim/forms/version.rb +1 -1
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d354b6d1272004fbe129e57e706ecb2bce8f7f37e5a2f32c530d8df96d862e98
|
4
|
+
data.tar.gz: 8cb45ad3b2d7b7fa4518720215d4fa89428345e1fb4825dd4ad6768f967a11d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 253ca5e79fc6adedad3512672df12413dd3eba8c7e26b75b0bf0e984b99c04694485361040c84f06370793fc54e8d8d802ab886fd75e60955ffcfb94bc421d72
|
7
|
+
data.tar.gz: 3e73bed78008ffaa519a264948234aa8af20b3c4279e16076214454c8453988f9f4ebf2f92b1d6d7b6a659e5f9a967f25b4c03126ae3a8aa339ea3f9a3b2ae2e
|
@@ -5,6 +5,7 @@ module Decidim
|
|
5
5
|
# This class holds a Form to answer a questionnaire from Decidim's public page.
|
6
6
|
class QuestionnaireForm < Decidim::Form
|
7
7
|
attribute :answers, Array[AnswerForm]
|
8
|
+
attribute :user_group_id, Integer
|
8
9
|
|
9
10
|
attribute :tos_agreement, Boolean
|
10
11
|
validates :tos_agreement, allow_nil: false, acceptance: true
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Forms
|
5
|
+
# Custom helpers, scoped to the forms engine.
|
6
|
+
module ApplicationHelper
|
7
|
+
# Show cell for selected models
|
8
|
+
def show_represent_user_group?
|
9
|
+
model_name = questionnaire_for.model_name.element
|
10
|
+
|
11
|
+
permited_models.include?(model_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
def permited_models
|
15
|
+
%(meeting)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -5,6 +5,7 @@ module Decidim
|
|
5
5
|
# The data store for an Answer in the Decidim::Forms
|
6
6
|
class Answer < Forms::ApplicationRecord
|
7
7
|
include Decidim::DataPortability
|
8
|
+
include Decidim::NewsletterParticipant
|
8
9
|
|
9
10
|
belongs_to :user, class_name: "Decidim::User", foreign_key: "decidim_user_id"
|
10
11
|
belongs_to :questionnaire, class_name: "Questionnaire", foreign_key: "decidim_questionnaire_id"
|
@@ -30,6 +31,17 @@ module Decidim
|
|
30
31
|
Decidim::Forms::DataPortabilityUserAnswersSerializer
|
31
32
|
end
|
32
33
|
|
34
|
+
def self.newsletter_participant_ids(component)
|
35
|
+
surveys = Decidim::Surveys::Survey.joins(:component, :questionnaire).where(component: component)
|
36
|
+
questionnaires = Decidim::Forms::Questionnaire.includes(:questionnaire_for)
|
37
|
+
.where(questionnaire_for_type: Decidim::Surveys::Survey.name, questionnaire_for_id: surveys.pluck(:id))
|
38
|
+
|
39
|
+
answers = Decidim::Forms::Answer.joins(:questionnaire)
|
40
|
+
.where(questionnaire: questionnaires)
|
41
|
+
|
42
|
+
answers.pluck(:decidim_user_id).flatten.compact.uniq
|
43
|
+
end
|
44
|
+
|
33
45
|
private
|
34
46
|
|
35
47
|
def user_questionnaire_same_organization
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<% question = form.object %>
|
2
|
+
|
3
|
+
<script type="text/template" class="decidim-template" id="<%= template_id %>">
|
4
|
+
<%= fields_for "questionnaire[questions][#{question.to_param}][answer_options][]", blank_answer_option do |answer_option_form| %>
|
5
|
+
<%= render "decidim/forms/admin/questionnaires/answer_option", form: answer_option_form, question: question, editable: editable %>
|
6
|
+
<% end %>
|
7
|
+
</script>
|
@@ -22,11 +22,12 @@
|
|
22
22
|
|
23
23
|
<div class="questionnaire-questions">
|
24
24
|
<% if questionnaire.questions_editable? %>
|
25
|
-
|
26
|
-
|
27
|
-
<%= render "decidim/forms/admin/questionnaires/question", form: question_form, id: tabs_id_for_question(blank_question), editable: questionnaire.questions_editable
|
28
|
-
|
29
|
-
|
25
|
+
<%= fields_for "questionnaire[questions][#{blank_question.to_param}]", blank_question do |question_form| %>
|
26
|
+
<script type="text/template" class="decidim-template">
|
27
|
+
<%= render "decidim/forms/admin/questionnaires/question", form: question_form, id: tabs_id_for_question(blank_question), editable: questionnaire.questions_editable?, child_template_selector: "#answer-option-template-dummy" %>
|
28
|
+
</script>
|
29
|
+
<%= render "decidim/forms/admin/questionnaires/answer_option_template", form: question_form, editable: questionnaire.questions_editable?, template_id: "answer-option-template-dummy" %>
|
30
|
+
<% end %>
|
30
31
|
<% else %>
|
31
32
|
<div class="callout warning">
|
32
33
|
<%= t(".already_answered_warning") %>
|
@@ -34,9 +35,10 @@
|
|
34
35
|
<% end %>
|
35
36
|
|
36
37
|
<div class="questionnaire-questions-list">
|
37
|
-
<% @form.questions.
|
38
|
+
<% @form.questions.each_with_index do |question, index| %>
|
38
39
|
<%= fields_for "questionnaire[questions][]", question do |question_form| %>
|
39
|
-
<%= render "decidim/forms/admin/questionnaires/question", form: question_form, id: tabs_id_for_question(question), editable: questionnaire.questions_editable
|
40
|
+
<%= render "decidim/forms/admin/questionnaires/question", form: question_form, id: tabs_id_for_question(question), editable: questionnaire.questions_editable?, child_template_selector: "#answer-option-template-#{index}" %>
|
41
|
+
<%= render "decidim/forms/admin/questionnaires/answer_option_template", form: question_form, editable: questionnaire.questions_editable?, template_id: "answer-option-template-#{index}" %>
|
40
42
|
<% end %>
|
41
43
|
<% end %>
|
42
44
|
</div>
|
@@ -81,13 +81,7 @@
|
|
81
81
|
<%= form.hidden_field :position, value: question.position || 0, disabled: !editable %>
|
82
82
|
<%= form.hidden_field :deleted, disabled: !editable %>
|
83
83
|
|
84
|
-
<div class="questionnaire-question-answer-options">
|
85
|
-
<template>
|
86
|
-
<%= fields_for "questionnaire[questions][#{question.to_param}][answer_options][]", blank_answer_option do |answer_option_form| %>
|
87
|
-
<%= render "decidim/forms/admin/questionnaires/answer_option", form: answer_option_form, question: question, editable: editable %>
|
88
|
-
<% end %>
|
89
|
-
</template>
|
90
|
-
|
84
|
+
<div class="questionnaire-question-answer-options" data-template="<%= child_template_selector %>">
|
91
85
|
<div class="questionnaire-question-answer-options-list">
|
92
86
|
<% question.answer_options.each do |answer_option| %>
|
93
87
|
<%= fields_for "questionnaire[questions][#{question.to_param}][answer_options][]", answer_option do |answer_option_form| %>
|
@@ -47,6 +47,12 @@
|
|
47
47
|
</div>
|
48
48
|
<% end %>
|
49
49
|
|
50
|
+
<% if show_represent_user_group? %>
|
51
|
+
<div class="row column represent-user-group">
|
52
|
+
<%= cell("decidim/represent_user_group", form) %>
|
53
|
+
</div>
|
54
|
+
<% end %>
|
55
|
+
|
50
56
|
<div class="row column tos-agreement">
|
51
57
|
<%= form.check_box :tos_agreement, label: t(".tos_agreement"), id: "questionnaire_tos_agreement", disabled: !current_participatory_space.can_participate?(current_user) %>
|
52
58
|
<div class="help-text">
|
@@ -0,0 +1,82 @@
|
|
1
|
+
ar:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
answer:
|
5
|
+
body: إجابة
|
6
|
+
question:
|
7
|
+
max_choices: أقصى عدد من الخيارات
|
8
|
+
question_type: نوع
|
9
|
+
questionnaire_question:
|
10
|
+
mandatory: إلزامي
|
11
|
+
errors:
|
12
|
+
models:
|
13
|
+
answer:
|
14
|
+
attributes:
|
15
|
+
choices:
|
16
|
+
missing: ليست كاملة
|
17
|
+
too_many: كثير جدا
|
18
|
+
decidim:
|
19
|
+
forms:
|
20
|
+
admin:
|
21
|
+
models:
|
22
|
+
components:
|
23
|
+
description: وصف
|
24
|
+
tos: شروط الخدمة
|
25
|
+
questionnaires:
|
26
|
+
answer_option:
|
27
|
+
answer_option: خيار الإجابة
|
28
|
+
free_text: نص حر
|
29
|
+
remove: إزالة
|
30
|
+
statement: بيان
|
31
|
+
edit:
|
32
|
+
save: حفظ
|
33
|
+
title: عنوان
|
34
|
+
form:
|
35
|
+
add_question: أضف سؤال
|
36
|
+
already_answered_warning: تمت الإجابة على النموذج من قبل بعض المستخدمين حتى لا تتمكن من تعديل أسئلته.
|
37
|
+
question:
|
38
|
+
add_answer_option: إضافة خيار الإجابة
|
39
|
+
any: أي
|
40
|
+
description: وصف
|
41
|
+
down: أسفل
|
42
|
+
question: سؤال
|
43
|
+
remove: إزالة
|
44
|
+
statement: بيان
|
45
|
+
up: فوق
|
46
|
+
update:
|
47
|
+
invalid: كانت هناك مشكلة في حفظ النموذج.
|
48
|
+
success: تم حفظ النماذج بنجاح.
|
49
|
+
errors:
|
50
|
+
answer:
|
51
|
+
body: لا يمكن أن يكون الجسم فارغًا
|
52
|
+
question_types:
|
53
|
+
long_answer: اجابة طويلة
|
54
|
+
multiple_option: خيار متعدد
|
55
|
+
short_answer: اجابة قصيرة
|
56
|
+
single_option: خيار واحد
|
57
|
+
sorting: فرز
|
58
|
+
questionnaires:
|
59
|
+
answer:
|
60
|
+
invalid: كانت هناك مشكلة في الإجابة على النموذج.
|
61
|
+
success: نموذج أجاب بنجاح.
|
62
|
+
question:
|
63
|
+
max_choices: 'خيارات ماكس: %{n}'
|
64
|
+
show:
|
65
|
+
answer_questionnaire:
|
66
|
+
anonymous_user_message: <a href="%{sign_in_link}">قم بتسجيل الدخول بحسابك</a> أو <a href="%{sign_up_link}">اشترك</a> للإجابة على النموذج
|
67
|
+
title: أجب عن النموذج
|
68
|
+
are_you_sure: لا يمكن التراجع عن هذا الإجراء ولن تتمكن من تعديل إجاباتك. هل أنت واثق؟
|
69
|
+
questionnaire_answered:
|
70
|
+
body: لقد أجبت بالفعل على هذا النموذج.
|
71
|
+
title: تمت الاجابة مسبقا
|
72
|
+
questionnaire_closed:
|
73
|
+
body: النموذج مغلق ولا يمكن الرد عليه.
|
74
|
+
title: شكل مغلق
|
75
|
+
questionnaire_for_private_users:
|
76
|
+
body: النموذج متاح فقط للمستخدمين من القطاع الخاص
|
77
|
+
title: شكل مغلق
|
78
|
+
submit: خضع
|
79
|
+
tos_agreement: من خلال المشاركة ، فإنك تقبل شروط الخدمة
|
80
|
+
user_answers_serializer:
|
81
|
+
created_at: أجاب على
|
82
|
+
id: معرف الإجابة
|
@@ -504,9 +504,9 @@ shared_examples_for "manage questionnaires" do
|
|
504
504
|
within ".questionnaire-question:last-of-type" do
|
505
505
|
click_button "Up"
|
506
506
|
end
|
507
|
-
|
508
|
-
it_behaves_like "switching questions order"
|
509
507
|
end
|
508
|
+
|
509
|
+
it_behaves_like "switching questions order"
|
510
510
|
end
|
511
511
|
|
512
512
|
context "when moving a question down" do
|
@@ -522,9 +522,9 @@ shared_examples_for "manage questionnaires" do
|
|
522
522
|
it "properly decides which button to show after adding/removing questions" do
|
523
523
|
click_button "Add question"
|
524
524
|
|
525
|
-
expect(page.find(".questionnaire-question:nth-
|
526
|
-
expect(page.find(".questionnaire-question:nth-
|
527
|
-
expect(page.find(".questionnaire-question:nth-
|
525
|
+
expect(page.find(".questionnaire-question:nth-of-type(1)")).to look_like_first_question
|
526
|
+
expect(page.find(".questionnaire-question:nth-of-type(2)")).to look_like_intermediate_question
|
527
|
+
expect(page.find(".questionnaire-question:nth-of-type(3)")).to look_like_last_question
|
528
528
|
|
529
529
|
within ".questionnaire-question:first-of-type" do
|
530
530
|
click_button "Remove"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -19,42 +19,42 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.18.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.18.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: decidim-admin
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
34
|
- - '='
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 0.
|
36
|
+
version: 0.18.0
|
37
37
|
type: :development
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - '='
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
43
|
+
version: 0.18.0
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: decidim-dev
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
48
|
- - '='
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 0.
|
50
|
+
version: 0.18.0
|
51
51
|
type: :development
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - '='
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 0.
|
57
|
+
version: 0.18.0
|
58
58
|
description: A forms gem for decidim.
|
59
59
|
email:
|
60
60
|
- josepjaume@gmail.com
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- app/forms/decidim/forms/answer_form.rb
|
94
94
|
- app/forms/decidim/forms/questionnaire_form.rb
|
95
95
|
- app/helpers/decidim/forms/admin/application_helper.rb
|
96
|
+
- app/helpers/decidim/forms/application_helper.rb
|
96
97
|
- app/models/concerns/decidim/forms/has_questionnaire.rb
|
97
98
|
- app/models/decidim/forms/answer.rb
|
98
99
|
- app/models/decidim/forms/answer_choice.rb
|
@@ -102,12 +103,14 @@ files:
|
|
102
103
|
- app/models/decidim/forms/questionnaire.rb
|
103
104
|
- app/queries/decidim/forms/questionnaire_user_answers.rb
|
104
105
|
- app/views/decidim/forms/admin/questionnaires/_answer_option.html.erb
|
106
|
+
- app/views/decidim/forms/admin/questionnaires/_answer_option_template.html.erb
|
105
107
|
- app/views/decidim/forms/admin/questionnaires/_form.html.erb
|
106
108
|
- app/views/decidim/forms/admin/questionnaires/_question.html.erb
|
107
109
|
- app/views/decidim/forms/admin/questionnaires/edit.html.erb
|
108
110
|
- app/views/decidim/forms/questionnaires/_answer.html.erb
|
109
111
|
- app/views/decidim/forms/questionnaires/show.html.erb
|
110
112
|
- config/locales/ar-SA.yml
|
113
|
+
- config/locales/ar.yml
|
111
114
|
- config/locales/ca.yml
|
112
115
|
- config/locales/cs-CZ.yml
|
113
116
|
- config/locales/cs.yml
|