decidim-templates 0.29.4 → 0.30.0.rc1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2e98cce1a02356937f7801f12ea093d2fe704193f4c47d6dbab6145f5801a73
4
- data.tar.gz: b89d0b03024d53cf9fad594bbd863c9e0fde151d23360a22ee0e8091dbd784ba
3
+ metadata.gz: e0655688c84339a0f4c0adf43bef1bb6785a9366f48a67f3206fee3351c657ae
4
+ data.tar.gz: 2f92a751ce2dba22c18eb4cdb6efb0fda2ebfe50ba24c99856e806016635be74
5
5
  SHA512:
6
- metadata.gz: 2f4da7398a6495948853708e58f4998426469ffdb3e508e38ed75a3d81fe709384d7706883b5cdc4f5357f573be6a89be70fa1db72993effb81f5e138f1e2ec2
7
- data.tar.gz: 61e6e036d729aeb6dfca34b596cc77c17f34f2c487985109c5916f2cc575b734001f8c34ec980a2382b29b76b8729a9a66146f1e7635ab51af121fdb2d3e8845
6
+ metadata.gz: 5c7cf48c8c06dc31b22768e5400968490ec87d291060ff5e3ce0c4de60e5125cf80b0e83a92c06775a1c0c0c5b8ec3d44741086ce35b250087f6f4b11b31c7a0
7
+ data.tar.gz: 4517073b87a6609eac70df09e98064ce86afd95f6a2df2cbb082e26ac559e42c0346dafda10d7e5ec87280069a054ae00ebeaaca46cda0adbf9ff6d7dc994c5a
@@ -6,6 +6,7 @@ module Decidim
6
6
  class ProposalAnswerTemplatesController < Decidim::Templates::Admin::ApplicationController
7
7
  include Decidim::TranslatableAttributes
8
8
  include Decidim::Paginable
9
+ include Decidim::Proposals::Admin::NeedsInterpolations
9
10
 
10
11
  helper_method :availability_option_as_text, :availability_options_for_select, :available_states, :proposal_state
11
12
 
@@ -63,7 +64,7 @@ module Decidim
63
64
 
64
65
  response_object = {
65
66
  state: state&.token,
66
- template: populate_template_interpolations(proposal)
67
+ template: populate_interpolations(template.description, proposal)
67
68
  }
68
69
 
69
70
  respond_to do |format|
@@ -138,20 +139,6 @@ module Decidim
138
139
  Decidim::Proposals::ProposalState.where(decidim_component_id: component_id)
139
140
  end
140
141
 
141
- def populate_template_interpolations(proposal)
142
- template.description.to_h do |language, value|
143
- value.gsub!("%{organization}", translated_attribute(proposal.organization.name))
144
- value.gsub!("%{name}", author_name(proposal))
145
- value.gsub!("%{admin}", current_user.name)
146
-
147
- [language, value]
148
- end
149
- end
150
-
151
- def author_name(proposal)
152
- proposal.creator_author.try(:title) || proposal.creator_author.try(:name)
153
- end
154
-
155
142
  def proposal
156
143
  @proposal ||= Decidim::Proposals::Proposal.find(params[:proposalId])
157
144
  end
@@ -7,8 +7,10 @@ module Decidim
7
7
  #
8
8
  class QuestionnaireTemplatesController < Decidim::Templates::Admin::ApplicationController
9
9
  include Decidim::TranslatableAttributes
10
+ include Decidim::Forms::Admin::Concerns::HasQuestionnaire
11
+ helper Decidim::Forms::Admin::ApplicationHelper
10
12
 
11
- helper_method :template
13
+ helper_method :template, :questionnaire
12
14
 
13
15
  add_breadcrumb_item_from_menu :admin_template_types_menu
14
16
 
@@ -135,8 +137,24 @@ module Decidim
135
137
  redirect_to URI.parse(params[:url]).path
136
138
  end
137
139
 
140
+ def edit_questions_template
141
+ "decidim/templates/admin/questionnaire_templates/edit_questions"
142
+ end
143
+
144
+ def after_update_url
145
+ edit_questionnaire_template_path(template)
146
+ end
147
+
138
148
  private
139
149
 
150
+ def questionnaire
151
+ template.templatable
152
+ end
153
+
154
+ def i18n_flashes_scope
155
+ "decidim.forms.admin.questionnaires"
156
+ end
157
+
140
158
  def collection
141
159
  @collection ||= current_organization.templates.where(templatable_type: "Decidim::Forms::Questionnaire")
142
160
  end
@@ -17,8 +17,10 @@
17
17
 
18
18
  <div class="card mt-4">
19
19
  <div class="card-divider">
20
- <h2 class="card-title"><%= t(".questionnaire") %>
20
+ <h2 class="font-semibold text-secondary block sm:flex items-center justify-between gap-4 w-full first:[&>div]:ml-0 first:[&>*]:ml-auto">
21
+ <%= t(".questionnaire") %>
21
22
  <%= link_to t(".edit"), edit_questionnaire_path(template), class: "button button__sm button__secondary" %>
23
+ <%= link_to t(".manage_questions"), edit_questions_questionnaire_template_path(template), class: "button button__sm button__secondary" %>
22
24
  </h2>
23
25
  </div>
24
26
 
@@ -0,0 +1,27 @@
1
+ <% add_decidim_page_title(t("decidim.forms.admin.questionnaires.edit.title")) %>
2
+
3
+ <div class="questionnaire-questions">
4
+ <div class="item_show__header">
5
+ <h1 class="item_show__header-title">
6
+ <%= t("decidim.forms.admin.questionnaires.edit_questions.title") %>
7
+ <% if questionnaire.questions_editable? %>
8
+ <button class="button button__sm button__secondary add-question"><%= t(".add_question") %></button>
9
+ <button class="button button__sm button__secondary add-separator"><%= t(".add_separator") %></button>
10
+ <button class="button button__sm button__secondary add-title-and-description"><%= t(".add_title_and_description") %></button>
11
+ <% end %>
12
+ </h1>
13
+ </div>
14
+ </div>
15
+
16
+ <div class="item__edit item__edit-1col">
17
+ <div class="item__edit-form">
18
+ <%= decidim_form_for(@form, url: update_questions_questionnaire_template_path(template), method: :patch, html: { class: "form-defaults form edit_questions_survey" }) do |form| %>
19
+ <%= render partial: "decidim/forms/admin/questionnaires/questions_form", object: form %>
20
+ <div class="item__edit-sticky">
21
+ <div class="item__edit-sticky-container">
22
+ <%= form.submit t("save", scope: "decidim.forms.admin.questionnaires.edit"), class: "button button__sm button__secondary" %>
23
+ </div>
24
+ </div>
25
+ <% end %>
26
+ </div>
27
+ </div>
@@ -89,8 +89,13 @@ ca:
89
89
  edit:
90
90
  edit: Editar
91
91
  empty: Encara no hi ha preguntes.
92
+ manage_questions: Gestionar les preguntes
92
93
  questionnaire: Qüestionari
93
94
  title: Editar la plantilla del qüestionari
95
+ edit_questions:
96
+ add_question: Afegeix una pregunta
97
+ add_separator: Afegir un separador
98
+ add_title_and_description: Afegir títol i descripció
94
99
  form:
95
100
  title: Plantilla del qüestionari %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ cs:
89
89
  edit:
90
90
  edit: Upravit
91
91
  empty: Zatím nejsou žádné otázky.
92
+ manage_questions: Spravovat otázky
92
93
  questionnaire: Dotazník
93
94
  title: Upravit šablonu dotazníku
95
+ edit_questions:
96
+ add_question: Přidat otázku
97
+ add_separator: Přidat oddělovač
98
+ add_title_and_description: Přidat název a popis
94
99
  form:
95
100
  title: Šablona dotazníku %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ de:
89
89
  edit:
90
90
  edit: Bearbeiten
91
91
  empty: Es gibt noch keine Fragen.
92
+ manage_questions: Fragen verwalten
92
93
  questionnaire: Fragebogen
93
94
  title: Formular-Vorlage bearbeiten
95
+ edit_questions:
96
+ add_question: Frage hinzufügen
97
+ add_separator: Trennzeichen hinzufügen
98
+ add_title_and_description: Titel und Beschreibung hinzufügen
94
99
  form:
95
100
  title: Fragebogenvorlage %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ en:
89
89
  edit:
90
90
  edit: Edit
91
91
  empty: There are no questions yet.
92
+ manage_questions: Manage questions
92
93
  questionnaire: Questionnaire
93
94
  title: Edit questionnaire template
95
+ edit_questions:
96
+ add_question: Add question
97
+ add_separator: Add separator
98
+ add_title_and_description: Add title and description
94
99
  form:
95
100
  title: Questionnaire template %{questionnaire_for}
96
101
  index:
@@ -63,7 +63,7 @@ es-MX:
63
63
  edit:
64
64
  title: Editar la plantilla de respuesta a la propuesta
65
65
  form:
66
- component_constraint_help: Ten en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
66
+ component_constraint_help: Tenga en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
67
67
  hint1_html: "<strong>%{organization}</strong> será reemplazado por el nombre de la organización"
68
68
  hint2_html: "<strong>%{name}</strong> será reemplazado por el nombre de la autora"
69
69
  hint3_html: "<strong>%{admin}</strong> será reemplazado por el nombre de la administradora (la que responde a la propuesta)"
@@ -76,7 +76,7 @@ es-MX:
76
76
  proposal_state_id: Estado interno
77
77
  title: Respuestas a propuestas
78
78
  new:
79
- title: Nueva plantilla de respuesta a propuesta
79
+ title: Nueva la plantilla de respuesta a propuesta
80
80
  template_chooser:
81
81
  select_template: Selecciona una plantilla de respuesta
82
82
  questionnaire_templates:
@@ -89,8 +89,13 @@ es-MX:
89
89
  edit:
90
90
  edit: Editar
91
91
  empty: Aún no hay preguntas.
92
+ manage_questions: Gestionar las preguntas
92
93
  questionnaire: Cuestionario
93
94
  title: Editar plantilla del cuestionario
95
+ edit_questions:
96
+ add_question: Añadir una pregunta
97
+ add_separator: Añadir un separador
98
+ add_title_and_description: Añadir título y descripción
94
99
  form:
95
100
  title: Plantilla de cuestionario %{questionnaire_for}
96
101
  index:
@@ -63,7 +63,7 @@ es-PY:
63
63
  edit:
64
64
  title: Editar la plantilla de respuesta a la propuesta
65
65
  form:
66
- component_constraint_help: Ten en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
66
+ component_constraint_help: Tenga en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
67
67
  hint1_html: "<strong>%{organization}</strong> será reemplazado por el nombre de la organización"
68
68
  hint2_html: "<strong>%{name}</strong> será reemplazado por el nombre de la autora"
69
69
  hint3_html: "<strong>%{admin}</strong> será reemplazado por el nombre de la administradora (la que responde a la propuesta)"
@@ -76,7 +76,7 @@ es-PY:
76
76
  proposal_state_id: Estado interno
77
77
  title: Respuestas a propuestas
78
78
  new:
79
- title: Nueva plantilla de respuesta a propuesta
79
+ title: Nueva la plantilla de respuesta a propuesta
80
80
  template_chooser:
81
81
  select_template: Selecciona una plantilla de respuesta
82
82
  questionnaire_templates:
@@ -89,8 +89,13 @@ es-PY:
89
89
  edit:
90
90
  edit: Editar
91
91
  empty: Aún no hay preguntas.
92
+ manage_questions: Gestionar las preguntas
92
93
  questionnaire: Cuestionario
93
94
  title: Editar plantilla del cuestionario
95
+ edit_questions:
96
+ add_question: Añadir una pregunta
97
+ add_separator: Añadir un separador
98
+ add_title_and_description: Añadir título y descripción
94
99
  form:
95
100
  title: Plantilla de cuestionario %{questionnaire_for}
96
101
  index:
@@ -63,7 +63,7 @@ es:
63
63
  edit:
64
64
  title: Editar la plantilla de respuesta a la propuesta
65
65
  form:
66
- component_constraint_help: Ten en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
66
+ component_constraint_help: Tenga en cuenta que solo se listarán los espacios de participación que tengan componentes del tipo "propuestas".
67
67
  hint1_html: "<strong>%{organization}</strong> será reemplazado por el nombre de la organización"
68
68
  hint2_html: "<strong>%{name}</strong> será reemplazado por el nombre de la autora"
69
69
  hint3_html: "<strong>%{admin}</strong> será reemplazado por el nombre de la administradora (la que responde a la propuesta)"
@@ -76,7 +76,7 @@ es:
76
76
  proposal_state_id: Estado interno
77
77
  title: Respuestas a propuestas
78
78
  new:
79
- title: Nueva plantilla de respuesta a propuesta
79
+ title: Nueva la plantilla de respuesta a propuesta
80
80
  template_chooser:
81
81
  select_template: Selecciona una plantilla de respuesta
82
82
  questionnaire_templates:
@@ -89,8 +89,13 @@ es:
89
89
  edit:
90
90
  edit: Editar
91
91
  empty: Aún no hay preguntas.
92
+ manage_questions: Gestionar las preguntas
92
93
  questionnaire: Cuestionario
93
94
  title: Editar plantilla del cuestionario
95
+ edit_questions:
96
+ add_question: Añadir una pregunta
97
+ add_separator: Añadir un separador
98
+ add_title_and_description: Añadir título y descripción
94
99
  form:
95
100
  title: Plantilla de cuestionario %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ eu:
89
89
  edit:
90
90
  edit: Editatu
91
91
  empty: Oraindik ez dago galderarik.
92
+ manage_questions: Kudeatu galderak
92
93
  questionnaire: Galdetegia
93
94
  title: Editatu galdetegiaren txantiloia
95
+ edit_questions:
96
+ add_question: Gehitu galdera
97
+ add_separator: Gehitu banatzailea
98
+ add_title_and_description: Gehitu izenburua eta deskribapena
94
99
  form:
95
100
  title: '%{questionnaire_for}% galdetegiaren txantiloia'
96
101
  index:
@@ -89,15 +89,20 @@ fi-pl:
89
89
  edit:
90
90
  edit: Muokkaa
91
91
  empty: Kysymyksiä ei ole vielä.
92
+ manage_questions: Hallinnoi kysymyksiä
92
93
  questionnaire: Kysely
93
- title: Muokkaa kyselyn mallipohjaa
94
+ title: Muokkaa kyselylomakkeen mallipohjaa
95
+ edit_questions:
96
+ add_question: Lisää kysymys
97
+ add_separator: Lisää erotinviiva
98
+ add_title_and_description: Lisää otsikko ja kuvaus
94
99
  form:
95
100
  title: Kyselylomakemalli %{questionnaire_for}
96
101
  index:
97
102
  confirm_delete: Haluatko varmasti poistaa tämän mallipohjan?
98
103
  title: Kyselymallit
99
104
  new:
100
- title: Uusi kyselyn mallipohja
105
+ title: Uusi kyselylomakkeen mallipohja
101
106
  preview:
102
107
  current_step: Vaihe %{step}
103
108
  of_total_steps: / %{total_steps}
@@ -34,7 +34,7 @@ fi:
34
34
  success: Mallipohjan päivitys onnistui.
35
35
  titles:
36
36
  template_types:
37
- questionnaires: Kyselyjen mallipohjat
37
+ questionnaires: Kyselymallit
38
38
  templates: Mallipohjat
39
39
  models:
40
40
  questionnaire_template:
@@ -89,25 +89,30 @@ fi:
89
89
  edit:
90
90
  edit: Muokkaa
91
91
  empty: Kysymyksiä ei ole vielä.
92
+ manage_questions: Hallinnoi kysymyksiä
92
93
  questionnaire: Kysely
93
- title: Muokkaa kyselyn mallipohjaa
94
+ title: Muokkaa kyselylomakkeen mallipohjaa
95
+ edit_questions:
96
+ add_question: Lisää kysymys
97
+ add_separator: Lisää erotinviiva
98
+ add_title_and_description: Lisää otsikko ja kuvaus
94
99
  form:
95
- title: Kyselyn mallipohja %{questionnaire_for}
100
+ title: Kyselylomakemalli %{questionnaire_for}
96
101
  index:
97
102
  confirm_delete: Haluatko varmasti poistaa tämän mallipohjan?
98
- title: Kyselyjen mallipohjat
103
+ title: Kyselymallit
99
104
  new:
100
- title: Uusi kyselyn mallipohja
105
+ title: Uusi kyselylomakkeen mallipohja
101
106
  preview:
102
107
  current_step: Vaihe %{step}
103
108
  of_total_steps: / %{total_steps}
104
109
  tos_agreement: Osallistumalla hyväksyt käyttöehdot
105
110
  admin_log:
106
111
  template:
107
- create: "%{user_name} loi kyselyn mallipohjan %{resource_name}"
108
- delete: "%{user_name} poisti kyselyn mallipohjan %{resource_name}"
109
- duplicate: "%{user_name} kopioi kyselyn mallipohjan %{resource_name}"
110
- update: "%{user_name} päivitti kyselyn mallipohjaa %{resource_name}"
112
+ create: "%{user_name} loi kyselymallin %{resource_name}"
113
+ delete: "%{user_name} poisti kyselymallin %{resource_name}"
114
+ duplicate: "%{user_name} kopioi kyselymallin %{resource_name}"
115
+ update: "%{user_name} päivitti kyselymallia %{resource_name}"
111
116
  template_types:
112
117
  block_user: Käyttäjien eston viestit
113
118
  proposal_answer_templates: Ehdotusten vastaukset
@@ -89,8 +89,13 @@ fr-CA:
89
89
  edit:
90
90
  edit: Modifier
91
91
  empty: Il n'y a pas encore de question.
92
+ manage_questions: Gérer les questions
92
93
  questionnaire: Questionnaire
93
94
  title: Modifier le modèle de questionnaire
95
+ edit_questions:
96
+ add_question: Ajouter une question
97
+ add_separator: Ajouter un séparateur
98
+ add_title_and_description: Ajouter un titre et une description
94
99
  form:
95
100
  title: Modèle de questionnaire %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ fr:
89
89
  edit:
90
90
  edit: Modifier
91
91
  empty: Il n'y a pas encore de question.
92
+ manage_questions: Gérer les questions
92
93
  questionnaire: Questionnaire
93
94
  title: Modifier le modèle de questionnaire
95
+ edit_questions:
96
+ add_question: Ajouter une question
97
+ add_separator: Ajouter un séparateur
98
+ add_title_and_description: Ajouter un titre et une description
94
99
  form:
95
100
  title: Modèle de questionnaire %{questionnaire_for}
96
101
  index:
@@ -89,8 +89,13 @@ ja:
89
89
  edit:
90
90
  edit: 編集
91
91
  empty: 質問はまだありません。
92
+ manage_questions: 質問の管理
92
93
  questionnaire: アンケート
93
94
  title: アンケートテンプレートの編集
95
+ edit_questions:
96
+ add_question: 質問の追加
97
+ add_separator: 区切り文字を追加
98
+ add_title_and_description: タイトルと説明を追加
94
99
  form:
95
100
  title: アンケートテンプレート %{questionnaire_for}
96
101
  index:
@@ -12,29 +12,24 @@ ro:
12
12
  menu:
13
13
  templates: Șabloane
14
14
  templates:
15
- actions:
16
- new_template: Șablon nou
17
15
  apply:
18
16
  error: A apărut o eroare la aplicarea acestui șablon.
19
17
  success: Șablonul a fost aplicat cu succes.
20
18
  copy:
21
- error: A apărut o eroare la copierea acestui șablon.
19
+ error: A apărut o eroare la copierea acestui model.
22
20
  success: Șablonul a fost copiat cu succes.
23
21
  create:
24
- error: A apărut o eroare la crearea acestui șablon.
22
+ error: A apărut o eroare la crearea acestui model.
25
23
  success: Șablonul a fost creat cu succes.
26
24
  destroy:
27
25
  success: Șablonul a fost șters cu succes.
28
- empty: Nu există încă nici un șablon.
29
- fetch:
30
- error: Nu am putut găsi acest șablon. Vă rugăm să reîncărcați pagina.
31
- missing_resource: "(resursă lipsă)"
26
+ empty: Nu există încă nici un model.
32
27
  update:
33
28
  error: A apărut o eroare la actualizarea acestui șablon.
34
- success: Șablonul a fost actualizat cu succes.
29
+ success: Șablonul a fost importat cu succes.
35
30
  titles:
36
31
  template_types:
37
- questionnaires: Șabloane chestionar
32
+ questionnaires: Şabloane chestionar
38
33
  templates: Şabloane
39
34
  models:
40
35
  questionnaire_template:
@@ -44,71 +39,46 @@ ro:
44
39
  template:
45
40
  fields:
46
41
  created_at: Creat la
47
- name: Șablon
42
+ name: Model
48
43
  templates:
49
44
  admin:
50
45
  block_user_templates:
51
- edit:
52
- title: Modificați șablonul pentru mesajele către participanții blocați
53
46
  form:
54
47
  save: Salvează
55
48
  index:
56
49
  confirm_delete: Sunteți sigur că doriți să ștergeți acest șablon?
57
- title: Mesaje către participanții blocați
58
- new:
59
- title: Adaugați șablon nou cu mesajul către participanții blocați
50
+ title: Blochează mesajele utilizatorilor
60
51
  template_chooser:
61
- select_template: Selectați un șablon de răspuns
52
+ select_template: Selectați un răspuns șablon
62
53
  proposal_answer_templates:
63
- edit:
64
- title: Modificați șablon de răspuns pentru propuneri
65
54
  form:
66
- component_constraint_help: Trebuie remarcat faptul că vor fi enumerate numai spațiile participative care conțin componente de tipul „propuneri”.
67
- hint1_html: "<strong>%{organization}</strong> va fi înlocuit cu numele organizației"
68
- hint2_html: "<strong>%{name}</strong> va fi înlocuit cu numele autorului"
69
- hint3_html: "<strong>%{admin}</strong> va fi înlocuit cu numele administratorului (cel care răspunde propunerii)"
70
- hint_html: "<strong>Sugestie:</strong> Puteți utiliza aceste variabile oriunde în șablonul de răspuns care va fi înlocuit atunci când utilizați șablonul"
71
55
  save: Salvează
72
- index:
73
- component_constraint: Adaugați o constrângere
74
- confirm_delete: Sunteți sigur că doriți să ștergeți acest șablon?
75
- missing_state: Stare lipsă
76
- proposal_state_id: Stare internă
77
- title: Răspunsuri pentru propuneri
78
- new:
79
- title: Modificați șablon de răspuns pentru propuneri
80
- template_chooser:
81
- select_template: Selectați șablon de răspuns pentru propuneri
82
56
  questionnaire_templates:
83
57
  choose:
84
58
  create_from_template: Creează după model
85
59
  description: Ești pe cale de a crea un nou chestionar. Poți alege un model predefinit și să-l modifici ulterior.
86
- label: Alegeți un șablon
87
- placeholder: Alegeți un șablon
60
+ label: Alege un model
61
+ placeholder: Alege un model
88
62
  skip_template: Treci peste
89
63
  edit:
90
- edit: Modificați
91
- empty: Nu există întrebări încă.
64
+ edit: Editează
65
+ empty: Nu există încă întrebări.
92
66
  questionnaire: Chestionar
93
- title: Modificați șablonul chestionar
94
67
  form:
95
- title: Sablon chestionar %{questionnaire_for}
68
+ title: Model de chestionar %{questionnaire_for}
96
69
  index:
97
- confirm_delete: Sunteți sigur că doriți ștergeți acest șablon?
98
- title: Şabloane chestionar
99
- new:
100
- title: Șablon nou de chestionar
70
+ confirm_delete: Sigur doreștiștergi acest model?
71
+ title: Model de chestionar
101
72
  preview:
102
73
  current_step: Pasul %{step}
103
74
  of_total_steps: din %{total_steps}
104
- tos_agreement: Prin participare acceptați termenii și condițiile de utilizare ale platformei
75
+ tos_agreement: Prin participare accepți Termenii și condițiile sale de utilizare
105
76
  admin_log:
106
77
  template:
107
78
  create: "%{user_name} a creat șablonul chestionarului %{resource_name}"
108
79
  delete: "%{user_name} a șters șablonul chestionarului %{resource_name}"
109
- duplicate: "%{user_name} a copiat șablonul chestionarului %{resource_name}"
80
+ duplicate: "%{user_name} a duplicat șablonul chestionarului %{resource_name}"
110
81
  update: "%{user_name} a actualizat șablonul chestionarului %{resource_name}"
111
82
  template_types:
112
- block_user: Mesaje către participanții blocați
113
- proposal_answer_templates: Răspunsuri pentru propuneri
83
+ block_user: Blochează mesajele utilizatorilor
114
84
  questionnaires: Chestionare
data/db/seeds.rb CHANGED
@@ -62,11 +62,12 @@ if !Rails.env.production? || ENV.fetch("SEED", nil)
62
62
  )
63
63
  end
64
64
 
65
- %w(matrix_single matrix_multiple).each do |matrix_question_type|
65
+ %w(matrix_single matrix_multiple).each_with_index do |matrix_question_type, index|
66
66
  question = Decidim::Forms::Question.create!(
67
67
  questionnaire:,
68
68
  body: Decidim::Faker::Localized.paragraph,
69
- question_type: matrix_question_type
69
+ question_type: matrix_question_type,
70
+ position: index + 4
70
71
  )
71
72
 
72
73
  3.times do |idx|
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  "homepage_uri" => "https://decidim.org",
18
18
  "source_code_uri" => "https://github.com/decidim/decidim"
19
19
  }
20
- s.required_ruby_version = "~> 3.2.0"
20
+ s.required_ruby_version = "~> 3.3.0"
21
21
 
22
22
  s.name = "decidim-templates"
23
23
  s.summary = "A decidim templates module"
@@ -12,41 +12,51 @@ module Decidim
12
12
  paths["lib/tasks"] = nil
13
13
 
14
14
  routes do
15
- resources :proposal_answer_templates do
16
- member do
17
- post :copy
15
+ constraints(->(request) { Decidim::Admin::OrganizationDashboardConstraint.new(request).matches? }) do
16
+ resources :proposal_answer_templates do
17
+ member do
18
+ post :copy
19
+ end
20
+ collection do
21
+ get :fetch
22
+ end
18
23
  end
19
- collection do
20
- get :fetch
21
- end
22
- end
23
24
 
24
- ## Routes for Questionnaire Templates
25
- resources :questionnaire_templates do
26
- member do
27
- post :copy
25
+ ## Routes for Questionnaire Templates
26
+ resources :questionnaire_templates do
27
+ member do
28
+ post :copy
29
+ get :edit_questions
30
+ patch :update_questions
31
+ resource :questionnaire, module: :questionnaire_templates # To manage the templatable resource
32
+ end
28
33
 
29
- resource :questionnaire, module: :questionnaire_templates # To manage the templatable resource
34
+ collection do
35
+ post :apply # To use when creating an object from a template
36
+ post :skip # To use when creating an object without a template
37
+ get :preview # To provide a preview for the template in the object creation view
38
+ end
30
39
  end
31
40
 
32
- collection do
33
- post :apply # To use when creating an object from a template
34
- post :skip # To use when creating an object without a template
35
- get :preview # To provide a preview for the template in the object creation view
36
- end
37
- end
38
- resources :block_user_templates do
39
- member do
40
- post :copy
41
- end
42
- collection do
43
- get :fetch
41
+ resources :block_user_templates do
42
+ member do
43
+ post :copy
44
+ end
45
+ collection do
46
+ get :fetch
47
+ end
44
48
  end
45
- end
46
49
 
47
- get "/questionnaire_template/questionnaire/answer_options", to: "questionnaire_templates/questionnaires#answer_options", as: "answer_options_template"
50
+ get "/questionnaire_template/questionnaire/answer_options", to: "questionnaire_templates/questionnaires#answer_options", as: "answer_options_template"
48
51
 
49
- root to: "questionnaire_templates#index"
52
+ root to: "questionnaire_templates#index"
53
+ end
54
+ end
55
+
56
+ initializer "decidim_templates_admin.mount_routes" do
57
+ Decidim::Core::Engine.routes do
58
+ mount Decidim::Templates::AdminEngine, at: "/admin/templates", as: "decidim_admin_templates"
59
+ end
50
60
  end
51
61
 
52
62
  initializer "decidim_templates_admin.menu" do
@@ -15,10 +15,6 @@ module Decidim
15
15
  # root to: "templates#index"
16
16
  end
17
17
 
18
- initializer "decidim_templates.register_icons" do
19
- Decidim.icons.register(name: "user-forbid-line", icon: "user-forbid-line", category: "system", description: "", engine: :templates)
20
- end
21
-
22
18
  initializer "decidim_templates.webpacker.assets_path" do
23
19
  Decidim.register_assets_path File.expand_path("app/packs", root)
24
20
  end
@@ -46,7 +46,7 @@ shared_examples_for "uses questionnaire templates" do |_questionnaire_for|
46
46
  description: {},
47
47
  tos: {}
48
48
  )
49
- visit questionnaire_edit_path
49
+ click_on "Edit"
50
50
  end
51
51
 
52
52
  it "shows the template choosing screen" do
@@ -87,7 +87,7 @@ shared_examples_for "uses questionnaire templates" do |_questionnaire_for|
87
87
  description: {},
88
88
  tos: {}
89
89
  )
90
- visit questionnaire_edit_path
90
+ click_on "Edit"
91
91
 
92
92
  select(template.name["en"], from: "select-template")
93
93
 
@@ -96,14 +96,13 @@ shared_examples_for "uses questionnaire templates" do |_questionnaire_for|
96
96
  end
97
97
 
98
98
  click_on "Create from template"
99
+ click_on "Save"
99
100
  end
100
101
 
101
102
  it "copies the template data to the questionnaire on submit" do
102
- within "form.edit_questionnaire" do
103
- click_on "Expand all"
104
- expect(page.find_by_id("questionnaire_title_en").value).to eq(template.templatable.title["en"])
105
- expect(page.find("#questionnaire_questions_#{questionnaire_question.id}_body_en").value).to eq(question.body["en"])
106
- end
103
+ click_on "Manage questions"
104
+ click_on "Expand all"
105
+ expect(page.find("#questions_questions_#{questionnaire_question.id}_body_en").value).to eq(question.body["en"])
107
106
  end
108
107
  end
109
108
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-templates version.
5
5
  module Templates
6
6
  def self.version
7
- "0.29.4"
7
+ "0.30.0.rc1"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.4
4
+ version: 0.30.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vera Rojman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-04 00:00:00.000000000 Z
11
+ date: 2025-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: decidim-core
@@ -16,98 +16,98 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.29.4
19
+ version: 0.30.0.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.29.4
26
+ version: 0.30.0.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: decidim-forms
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.29.4
33
+ version: 0.30.0.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.29.4
40
+ version: 0.30.0.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: decidim-admin
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.29.4
47
+ version: 0.30.0.rc1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.29.4
54
+ version: 0.30.0.rc1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: decidim-dev
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.29.4
61
+ version: 0.30.0.rc1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 0.29.4
68
+ version: 0.30.0.rc1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: decidim-participatory_processes
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 0.29.4
75
+ version: 0.30.0.rc1
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 0.29.4
82
+ version: 0.30.0.rc1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: decidim-proposals
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.29.4
89
+ version: 0.30.0.rc1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.29.4
96
+ version: 0.30.0.rc1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: decidim-surveys
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.29.4
103
+ version: 0.30.0.rc1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.29.4
110
+ version: 0.30.0.rc1
111
111
  description: This module provides a solution to create templates for different Decidim
112
112
  models, such as Proposals and Questionnaires..
113
113
  email:
@@ -169,6 +169,7 @@ files:
169
169
  - app/views/decidim/templates/admin/questionnaire_templates/_form.html.erb
170
170
  - app/views/decidim/templates/admin/questionnaire_templates/_preview.html.erb
171
171
  - app/views/decidim/templates/admin/questionnaire_templates/edit.html.erb
172
+ - app/views/decidim/templates/admin/questionnaire_templates/edit_questions.erb
172
173
  - app/views/decidim/templates/admin/questionnaire_templates/index.html.erb
173
174
  - app/views/decidim/templates/admin/questionnaire_templates/new.html.erb
174
175
  - app/views/decidim/templates/admin/questionnaire_templates/preview.js.erb
@@ -179,7 +180,6 @@ files:
179
180
  - config/locales/bg.yml
180
181
  - config/locales/bn-BD.yml
181
182
  - config/locales/bs-BA.yml
182
- - config/locales/ca-IT.yml
183
183
  - config/locales/ca.yml
184
184
  - config/locales/cs.yml
185
185
  - config/locales/da.yml
@@ -274,14 +274,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
274
  requirements:
275
275
  - - "~>"
276
276
  - !ruby/object:Gem::Version
277
- version: 3.2.0
277
+ version: 3.3.0
278
278
  required_rubygems_version: !ruby/object:Gem::Requirement
279
279
  requirements:
280
280
  - - ">="
281
281
  - !ruby/object:Gem::Version
282
282
  version: '0'
283
283
  requirements: []
284
- rubygems_version: 3.4.10
284
+ rubygems_version: 3.5.11
285
285
  signing_key:
286
286
  specification_version: 4
287
287
  summary: A decidim templates module
@@ -1,114 +0,0 @@
1
- ---
2
- ca-IT:
3
- activemodel:
4
- attributes:
5
- questionnaire:
6
- title: Títol
7
- template:
8
- description: Descripció
9
- name: Nom
10
- decidim:
11
- admin:
12
- menu:
13
- templates: Plantilles
14
- templates:
15
- actions:
16
- new_template: Afegir plantilla
17
- apply:
18
- error: S'ha produït un error en actualitzar aquesta plantilla.
19
- success: La plantilla s'ha aplicat correctament.
20
- copy:
21
- error: S'ha produït un error en copiar aquesta plantilla.
22
- success: La plantilla s'ha copiat correctament.
23
- create:
24
- error: S'ha produït un error en crear aquesta plantilla.
25
- success: La plantilla s'ha creat correctament.
26
- destroy:
27
- success: La plantilla s'ha eliminat correctament.
28
- empty: Encara no hi ha plantilles.
29
- fetch:
30
- error: No s'ha pogut trobar aquesta plantilla. Si us plau, torna a carregar la pàgina.
31
- missing_resource: "(recurs absent)"
32
- update:
33
- error: S'ha produït un error en actualitzar aquesta plantilla.
34
- success: La plantilla s'ha actualitzat correctament.
35
- titles:
36
- template_types:
37
- questionnaires: Plantilles de qüestionari
38
- templates: Plantilles
39
- models:
40
- questionnaire_template:
41
- fields:
42
- questions: Nombre de preguntes
43
- title: Títol del qüestionari
44
- template:
45
- fields:
46
- created_at: Creat el
47
- name: Plantilla
48
- templates:
49
- admin:
50
- block_user_templates:
51
- edit:
52
- title: Editar la plantilla del missatge de bloqueig del compte d'usuària
53
- form:
54
- save: Desar
55
- index:
56
- confirm_delete: Segur que vols eliminar aquesta plantilla?
57
- title: Bloquejar els missatges de la usuària
58
- new:
59
- title: Nova plantilla del missatge de bloqueig del compte d'usuària
60
- template_chooser:
61
- select_template: Selecciona una plantilla de resposta
62
- proposal_answer_templates:
63
- edit:
64
- title: Editar la plantilla de resposta a la proposta
65
- form:
66
- component_constraint_help: Tingues en compte que només es llistaran els espais de participació que tinguin habilitat algun component de "propostes".
67
- hint1_html: "<strong>%{organization}</strong> es reemplaçarà pel nom de l'organització"
68
- hint2_html: "<strong>%{name}</strong> es reemplaçarà pel nom de l'autora"
69
- hint3_html: "<strong>%{admin}</strong> serà reemplaçat pel nom de l'administradora (la que està responent a la proposta)"
70
- hint_html: "<strong>Suggeriment:</strong> Pots fer servir aquestes variables a qualsevol lloc a la plantilla de resposta i seran substituïdes pels valors en actiu quan es faci servir la plantilla"
71
- save: Desar
72
- index:
73
- component_constraint: Afegir restricció
74
- confirm_delete: Segur que vols eliminar aquesta plantilla?
75
- missing_state: Hi manca l'estat
76
- proposal_state_id: Estat intern
77
- title: Respostes a la proposta
78
- new:
79
- title: Nova plantilla de resposta a proposta
80
- template_chooser:
81
- select_template: Selecciona una plantilla de resposta
82
- questionnaire_templates:
83
- choose:
84
- create_from_template: Crear des d'una plantilla
85
- description: Estàs a punt de crear un nou qüestionari. Pots triar una plantilla predefinida i modificar-la després.
86
- label: Escollir una plantilla
87
- placeholder: Escollir una plantilla
88
- skip_template: Ometre
89
- edit:
90
- edit: Editar
91
- empty: Encara no hi ha preguntes.
92
- questionnaire: Qüestionari
93
- title: Editar la plantilla del qüestionari
94
- form:
95
- title: Plantilla del qüestionari %{questionnaire_for}
96
- index:
97
- confirm_delete: Segur que vols eliminar aquesta plantilla?
98
- title: Plantilles de qüestionari
99
- new:
100
- title: Nova plantilla de qüestioniari
101
- preview:
102
- current_step: Pas %{step}
103
- of_total_steps: de %{total_steps}
104
- tos_agreement: En participar acceptes els Termes i condicions d'ús
105
- admin_log:
106
- template:
107
- create: "%{user_name} ha actualitzat la plantilla del qüestionari %{resource_name}"
108
- delete: "%{user_name} ha esborrat la plantilla del qüestionari %{resource_name}"
109
- duplicate: "%{user_name} ha duplicat la plantilla del qüestionari %{resource_name}"
110
- update: "%{user_name} ha actualitzat la plantilla del qüestionari %{resource_name}"
111
- template_types:
112
- block_user: Bloquejar els missatges de la usuària
113
- proposal_answer_templates: Respostes a propostes
114
- questionnaires: Qüestionari