decidim-templates 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE-AGPLv3.txt +661 -0
  3. data/README.md +31 -0
  4. data/Rakefile +9 -0
  5. data/app/assets/config/decidim_templates_manifest.css +3 -0
  6. data/app/assets/config/decidim_templates_manifest.js +0 -0
  7. data/app/assets/images/decidim/templates/icon.svg +1 -0
  8. data/app/assets/stylesheets/decidim/templates/templates.scss +14 -0
  9. data/app/commands/decidim/templates/admin/apply_questionnaire_template.rb +74 -0
  10. data/app/commands/decidim/templates/admin/copy_questionnaire_template.rb +79 -0
  11. data/app/commands/decidim/templates/admin/create_questionnaire_template.rb +34 -0
  12. data/app/commands/decidim/templates/admin/destroy_template.rb +41 -0
  13. data/app/commands/decidim/templates/admin/update_template.rb +35 -0
  14. data/app/controllers/decidim/templates/admin/application_controller.rb +34 -0
  15. data/app/controllers/decidim/templates/admin/concerns/templatable.rb +46 -0
  16. data/app/controllers/decidim/templates/admin/questionnaire_templates/questionnaires_controller.rb +38 -0
  17. data/app/controllers/decidim/templates/admin/questionnaire_templates_controller.rb +156 -0
  18. data/app/controllers/decidim/templates/application_controller.rb +13 -0
  19. data/app/forms/decidim/templates/admin/template_form.rb +17 -0
  20. data/app/helpers/decidim/templates/admin/templates_helper.rb +32 -0
  21. data/app/helpers/decidim/templates/application_helper.rb +10 -0
  22. data/app/models/concerns/decidim/templates/templatable.rb +24 -0
  23. data/app/models/decidim/templates/application_record.rb +10 -0
  24. data/app/models/decidim/templates/template.rb +33 -0
  25. data/app/permissions/decidim/templates/admin/permissions.rb +26 -0
  26. data/app/views/decidim/templates/admin/questionnaire_templates/_choose.html.erb +35 -0
  27. data/app/views/decidim/templates/admin/questionnaire_templates/_form.html.erb +16 -0
  28. data/app/views/decidim/templates/admin/questionnaire_templates/_preview.html.erb +73 -0
  29. data/app/views/decidim/templates/admin/questionnaire_templates/edit.html.erb +20 -0
  30. data/app/views/decidim/templates/admin/questionnaire_templates/index.html.erb +52 -0
  31. data/app/views/decidim/templates/admin/questionnaire_templates/new.html.erb +7 -0
  32. data/app/views/decidim/templates/admin/questionnaire_templates/preview.js.erb +11 -0
  33. data/app/views/layouts/decidim/admin/templates.html.erb +21 -0
  34. data/config/locales/am-ET.yml +1 -0
  35. data/config/locales/ar.yml +1 -0
  36. data/config/locales/bg.yml +1 -0
  37. data/config/locales/ca.yml +60 -0
  38. data/config/locales/cs.yml +60 -0
  39. data/config/locales/da.yml +1 -0
  40. data/config/locales/de.yml +54 -0
  41. data/config/locales/el.yml +1 -0
  42. data/config/locales/en.yml +61 -0
  43. data/config/locales/eo.yml +1 -0
  44. data/config/locales/es-MX.yml +60 -0
  45. data/config/locales/es-PY.yml +60 -0
  46. data/config/locales/es.yml +60 -0
  47. data/config/locales/et.yml +1 -0
  48. data/config/locales/eu.yml +1 -0
  49. data/config/locales/fi-plain.yml +60 -0
  50. data/config/locales/fi.yml +60 -0
  51. data/config/locales/fr-CA.yml +60 -0
  52. data/config/locales/fr.yml +60 -0
  53. data/config/locales/ga-IE.yml +1 -0
  54. data/config/locales/gl.yml +1 -0
  55. data/config/locales/hr.yml +1 -0
  56. data/config/locales/hu.yml +1 -0
  57. data/config/locales/id-ID.yml +1 -0
  58. data/config/locales/is-IS.yml +1 -0
  59. data/config/locales/it.yml +60 -0
  60. data/config/locales/ja.yml +60 -0
  61. data/config/locales/ko-KR.yml +1 -0
  62. data/config/locales/ko.yml +1 -0
  63. data/config/locales/lt.yml +1 -0
  64. data/config/locales/lv.yml +1 -0
  65. data/config/locales/mt.yml +1 -0
  66. data/config/locales/nl.yml +60 -0
  67. data/config/locales/no.yml +5 -0
  68. data/config/locales/om-ET.yml +1 -0
  69. data/config/locales/pl.yml +1 -0
  70. data/config/locales/pt-BR.yml +1 -0
  71. data/config/locales/pt.yml +1 -0
  72. data/config/locales/ro-RO.yml +1 -0
  73. data/config/locales/ru.yml +1 -0
  74. data/config/locales/sk.yml +1 -0
  75. data/config/locales/sl.yml +1 -0
  76. data/config/locales/so-SO.yml +1 -0
  77. data/config/locales/sr-CS.yml +1 -0
  78. data/config/locales/sv.yml +1 -0
  79. data/config/locales/ti-ER.yml +1 -0
  80. data/config/locales/tr-TR.yml +1 -0
  81. data/config/locales/uk.yml +1 -0
  82. data/config/locales/vi-VN.yml +1 -0
  83. data/config/locales/vi.yml +1 -0
  84. data/config/locales/zh-CN.yml +60 -0
  85. data/config/locales/zh-TW.yml +1 -0
  86. data/lib/decidim/templates.rb +12 -0
  87. data/lib/decidim/templates/admin.rb +10 -0
  88. data/lib/decidim/templates/admin_engine.rb +54 -0
  89. data/lib/decidim/templates/engine.rb +23 -0
  90. data/lib/decidim/templates/test/factories.rb +27 -0
  91. data/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb +108 -0
  92. data/lib/decidim/templates/version.rb +10 -0
  93. metadata +191 -0
@@ -0,0 +1,20 @@
1
+ <%= decidim_form_for(@form, url: questionnaire_template_path, html: { class: "form edit_questionnaire_template" }) do |f| %>
2
+ <%= render partial: "form", object: f %>
3
+ <% end %>
4
+
5
+ <div class="card">
6
+ <div class="card-divider">
7
+ <h2 class="card-title"><%= t(".questionnaire") %></h2>
8
+ <%= link_to t(".edit"), edit_questionnaire_path(template), class: "button tiny button--title" %>
9
+ </div>
10
+
11
+ <div class="card-section questionnaire-template-preview">
12
+ <div class="row column">
13
+ <% if template.templatable.questions.any? %>
14
+ <%= render partial: "preview", locals: { questionnaire: template.templatable } %>
15
+ <% else %>
16
+ <%= t(".empty") %>
17
+ <% end %>
18
+ </div>
19
+ </div>
20
+ </div>
@@ -0,0 +1,52 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= t ".title" %>
5
+ <% if allowed_to?(:create, :template) %>
6
+ <%= link_to t("actions.new", scope: "decidim.admin", name: t("template.name", scope: "decidim.models").downcase), ["new", "questionnaire_template"], class: "button tiny button--title new" %>
7
+ <% end %>
8
+ </h2>
9
+ </div>
10
+ <div class="card-section">
11
+ <% if @templates.any? %>
12
+ <div class="table-scroll">
13
+ <table class="table-list questionnaire-templates">
14
+ <thead>
15
+ <tr>
16
+ <th><%= t("template.name", scope: "decidim.models") %></th>
17
+ <th><%= t("questionnaire_template.fields.title", scope: "decidim.models") %></th>
18
+ <th><%= t("questionnaire_template.fields.questions", scope: "decidim.models") %></th>
19
+ <th><%= t("template.fields.created_at", scope: "decidim.models") %></th>
20
+ <th></th>
21
+ </tr>
22
+ </thead>
23
+ <tbody>
24
+ <% @templates.each do |template| %>
25
+ <tr data-questionnaire_template-id="<%= template.id %>">
26
+ <td><%= link_to translated_attribute(template.name), edit_questionnaire_template_path(template) %></td>
27
+ <td><%= link_to translated_attribute(template.templatable.title), edit_questionnaire_path(template) %></td>
28
+ <td><%= template.templatable.questions.count.to_i %></td>
29
+ <td><%= l template.created_at, format: :long %></td>
30
+ <td class="table-list__actions">
31
+ <% if allowed_to?(:update, :template, questionnaire_template: template) %>
32
+ <%= icon_link_to "pencil", edit_questionnaire_template_path(template), t("actions.edit", scope: "decidim.admin"), class: "edit" %>
33
+ <% end %>
34
+
35
+ <% if allowed_to?(:copy, :template, questionnaire_template: template) %>
36
+ <%= icon_link_to "clipboard", copy_questionnaire_template_path(template), t("actions.duplicate", scope: "decidim.admin"), method: :post %>
37
+ <% end %>
38
+
39
+ <% if allowed_to?(:destroy, :template, questionnaire_template: template) %>
40
+ <%= icon_link_to "circle-x", questionnaire_template_path(template), t("actions.destroy", scope: "decidim.admin"), method: :delete, data: { confirm: t(".confirm_delete") }, class: "action-icon--remove" %>
41
+ <% end %>
42
+ </td>
43
+ </tr>
44
+ <% end %>
45
+ </tbody>
46
+ </table>
47
+ </div>
48
+ <% else %>
49
+ <%= t("templates.empty", scope: "decidim.admin") %>
50
+ <% end %>
51
+ </div>
52
+ </div>
@@ -0,0 +1,7 @@
1
+ <% content_for :title do %>
2
+ <%= t("templates", scope: "decidim.admin.titles") %>
3
+ <% end %>
4
+
5
+ <%= decidim_form_for(@form, url: questionnaire_templates_path, html: { class: "form new_questionnaire_template" }) do |f| %>
6
+ <%= render partial: "form", object: f %>
7
+ <% end %>
@@ -0,0 +1,11 @@
1
+ /* eslint-disable no-var, prefer-template */
2
+ (function () {
3
+ var $preview = $(".choose-template-preview");
4
+ var $templateName = $(".template-name");
5
+ var $templateDescription = $(".template-description");
6
+
7
+ $templateName.html("<%= translated_attribute @template.name %>");
8
+ $templateDescription.html("<%= translated_attribute @template.description %>");
9
+
10
+ $preview.html("<%= j(render partial: "preview", locals: { questionnaire: @questionnaire }) %>");
11
+ }());
@@ -0,0 +1,21 @@
1
+ <% content_for :secondary_nav do %>
2
+ <div class="secondary-nav secondary-nav--subnav">
3
+ <ul>
4
+ <% template_types.each_pair do |name, url| %>
5
+ <li <% if is_active_link?(url) %> class="is-active" <% end %>>
6
+ <%= aria_selected_link_to name, url %>
7
+ </li>
8
+ <% end %>
9
+ </ul>
10
+ </div>
11
+ <% end %>
12
+
13
+ <%= render "layouts/decidim/admin/application" do %>
14
+ <div class="process-title">
15
+ <div class="process-title-content">
16
+ <%= link_to t("decidim.admin.titles.templates"), decidim_admin_templates.root_url %>
17
+ </div>
18
+ </div>
19
+
20
+ <%= yield %>
21
+ <% end %>
@@ -0,0 +1 @@
1
+ am:
@@ -0,0 +1 @@
1
+ ar:
@@ -0,0 +1 @@
1
+ bg:
@@ -0,0 +1,60 @@
1
+ ca:
2
+ decidim:
3
+ admin:
4
+ menu:
5
+ templates: Plantilles
6
+ templates:
7
+ apply:
8
+ error: S'ha produït un error en actualitzar aquesta plantilla.
9
+ success: La plantilla s'ha aplicat correctament
10
+ copy:
11
+ error: S'ha produït un error en copiar aquesta plantilla.
12
+ success: La plantilla s'ha copiat correctament
13
+ create:
14
+ error: S'ha produït un error en crear aquesta plantilla.
15
+ success: La plantilla s'ha creat correctament
16
+ destroy:
17
+ success: La plantilla s'ha eliminat correctament
18
+ empty: Encara no hi ha plantilles.
19
+ update:
20
+ error: S'ha produït un error en actualitzar aquesta plantilla.
21
+ success: La plantilla s'ha actualitzat correctament
22
+ titles:
23
+ template_types:
24
+ questionnaires: Plantilles de qüestionari
25
+ templates: Plantilles
26
+ models:
27
+ questionnaire_template:
28
+ fields:
29
+ questions: Nombre de preguntes
30
+ title: Títol del qüestionari
31
+ template:
32
+ fields:
33
+ created_at: Creat el
34
+ name: Plantilla
35
+ templates:
36
+ admin:
37
+ questionnaire_templates:
38
+ choose:
39
+ create_from_template: Crear des d'una plantilla
40
+ description: Estàs a punt de crear un nou qüestionari. Pots triar una plantilla predefinida i modificar-la després.
41
+ label: Escollir una plantilla
42
+ placeholder: Escollir una plantilla
43
+ skip_template: Ometre
44
+ edit:
45
+ edit: Editar
46
+ empty: Encara no hi ha preguntes
47
+ questionnaire: Qüestionari
48
+ form:
49
+ save: Desar
50
+ template_title: Informació de la plantilla
51
+ title: Qüestionari
52
+ index:
53
+ confirm_delete: Segur que vols eliminar aquesta plantilla?
54
+ title: Plantilles de qüestionari
55
+ preview:
56
+ current_step: Pas %{step}
57
+ of_total_steps: de %{total_steps}
58
+ tos_agreement: En participar acceptes els Termes i condicions d'ús
59
+ template_types:
60
+ questionnaires: Qüestionari
@@ -0,0 +1,60 @@
1
+ cs:
2
+ decidim:
3
+ admin:
4
+ menu:
5
+ templates: Šablony
6
+ templates:
7
+ apply:
8
+ error: Při použití této šablony došlo k chybě.
9
+ success: Šablona byla úspěšně použita
10
+ copy:
11
+ error: Při kopírování této šablony došlo k chybě.
12
+ success: Šablona byla úspěšně zkopírována
13
+ create:
14
+ error: Při vytváření této šablony došlo k chybě.
15
+ success: Šablona byla úspěšně vytvořena
16
+ destroy:
17
+ success: Šablona byla úspěšně odstraněna
18
+ empty: Zatím nejsou žádné šablony.
19
+ update:
20
+ error: Při aktualizaci této šablony došlo k chybě.
21
+ success: Šablona byla úspěšně aktualizována
22
+ titles:
23
+ template_types:
24
+ questionnaires: Šablony dotazníků
25
+ templates: Šablony
26
+ models:
27
+ questionnaire_template:
28
+ fields:
29
+ questions: Počet otázek
30
+ title: Nadpis dotazníku
31
+ template:
32
+ fields:
33
+ created_at: Vytvořeno v
34
+ name: Šablona
35
+ templates:
36
+ admin:
37
+ questionnaire_templates:
38
+ choose:
39
+ create_from_template: Vytvořit ze šablony
40
+ description: Chystáte se vytvořit nový dotazník. Můžete si vybrat předem definovanou šablonu a poté ji upravit.
41
+ label: Vyberte šablonu
42
+ placeholder: Vyberte šablonu
43
+ skip_template: Přeskočit
44
+ edit:
45
+ edit: Upravit
46
+ empty: Zatím nejsou žádné otázky
47
+ questionnaire: Dotazník
48
+ form:
49
+ save: Uložit
50
+ template_title: Informace o šabloně
51
+ title: Dotazník
52
+ index:
53
+ confirm_delete: Jste si jisti, že chcete odstranit tuto šablonu?
54
+ title: Šablony dotazníků
55
+ preview:
56
+ current_step: Krok %{step}
57
+ of_total_steps: z %{total_steps}
58
+ tos_agreement: Zúčastněním souhlasíte s podmínkami služby
59
+ template_types:
60
+ questionnaires: Dotazníky
@@ -0,0 +1 @@
1
+ da:
@@ -0,0 +1,54 @@
1
+ de:
2
+ decidim:
3
+ admin:
4
+ menu:
5
+ templates: Vorlagen
6
+ templates:
7
+ apply:
8
+ error: Es gab ein Problem beim Anwenden dieser Vorlage.
9
+ success: Vorlage erfolgreich angewendet
10
+ copy:
11
+ error: Beim Kopieren dieser Vorlage ist ein Problem aufgetreten.
12
+ success: Vorlage erfolgreich kopiert
13
+ create:
14
+ error: Es gab ein Problem beim Erstellen dieser Vorlage.
15
+ success: Vorlage erfolgreich erstellt
16
+ destroy:
17
+ success: Vorlage erfolgreich gelöscht
18
+ empty: Es gibt noch keine Vorlagen.
19
+ update:
20
+ error: Bei der Aktualisierung dieser Vorlage ist ein Problem aufgetreten.
21
+ success: Vorlage erfolgreich aktualisiert
22
+ titles:
23
+ template_types:
24
+ questionnaires: Fragebogenvorlagen
25
+ templates: Vorlagen
26
+ models:
27
+ questionnaire_template:
28
+ fields:
29
+ questions: Anzahl der Fragen
30
+ title: Fragebogenname
31
+ template:
32
+ fields:
33
+ created_at: Erstellt am
34
+ name: Vorlage
35
+ templates:
36
+ admin:
37
+ questionnaire_templates:
38
+ choose:
39
+ create_from_template: Aus Vorlage erstellen
40
+ description: Sie sind im Begriff, einen neuen Fragebogen zu erstellen. Sie können eine vordefinierte Vorlage auswählen und sie anschließend ändern.
41
+ label: Vorlage auswählen
42
+ placeholder: Vorlage auswählen
43
+ skip_template: Überspringen
44
+ edit:
45
+ edit: Bearbeiten
46
+ empty: Es gibt noch keine Fragen
47
+ questionnaire: Fragebogen
48
+ form:
49
+ save: Speichern
50
+ template_title: Vorlageninformation
51
+ title: Fragebogen
52
+ index:
53
+ confirm_delete: Möchten Sie diese Vorlage wirklich löschen?
54
+ title: Fragebogenvorlagen
@@ -0,0 +1 @@
1
+ el:
@@ -0,0 +1,61 @@
1
+ ---
2
+ en:
3
+ decidim:
4
+ admin:
5
+ menu:
6
+ templates: Templates
7
+ templates:
8
+ apply:
9
+ error: There was a problem applying this template.
10
+ success: Template applied successfully
11
+ copy:
12
+ error: There was a problem copying this template.
13
+ success: Template copied successfully
14
+ create:
15
+ error: There was a problem creating this template.
16
+ success: Template created successfully
17
+ destroy:
18
+ success: Template deleted successfully
19
+ empty: There are no templates yet.
20
+ update:
21
+ error: There was a problem upadting this template.
22
+ success: Template updated successfully
23
+ titles:
24
+ template_types:
25
+ questionnaires: Questionnaire templates
26
+ templates: Templates
27
+ models:
28
+ questionnaire_template:
29
+ fields:
30
+ questions: Number of questions
31
+ title: Questionnaire Title
32
+ template:
33
+ fields:
34
+ created_at: Created at
35
+ name: Template
36
+ templates:
37
+ admin:
38
+ questionnaire_templates:
39
+ choose:
40
+ create_from_template: Create from template
41
+ description: You are about to create a new questionnaire. You may choose a predefined template and modify it afterwards.
42
+ label: Choose template
43
+ placeholder: Choose template
44
+ skip_template: Skip
45
+ edit:
46
+ edit: Edit
47
+ empty: There are no questions yet
48
+ questionnaire: Questionnaire
49
+ form:
50
+ save: Save
51
+ template_title: Template information
52
+ title: Questionnaire
53
+ index:
54
+ confirm_delete: Are you sure you want to delete this template?
55
+ title: Questionnaire templates
56
+ preview:
57
+ current_step: Step %{step}
58
+ of_total_steps: of %{total_steps}
59
+ tos_agreement: By participating you accept its Terms of Service
60
+ template_types:
61
+ questionnaires: Questionnaires
@@ -0,0 +1 @@
1
+ eo:
@@ -0,0 +1,60 @@
1
+ es-MX:
2
+ decidim:
3
+ admin:
4
+ menu:
5
+ templates: Plantillas
6
+ templates:
7
+ apply:
8
+ error: Se ha producido un error al aplicar esta plantilla.
9
+ success: Plantilla aplicada correctamente
10
+ copy:
11
+ error: Se ha producido un error al copiar esta plantilla.
12
+ success: Plantilla copiada correctamente
13
+ create:
14
+ error: Se ha producido un error al crear esta plantilla.
15
+ success: Plantilla creada correctamente
16
+ destroy:
17
+ success: Plantilla eliminada correctamente
18
+ empty: Todavía no hay plantillas.
19
+ update:
20
+ error: Se ha producido un error al actualizar esta plantilla.
21
+ success: Plantilla actualizada correctamente
22
+ titles:
23
+ template_types:
24
+ questionnaires: Plantillas de cuestionario
25
+ templates: Plantillas
26
+ models:
27
+ questionnaire_template:
28
+ fields:
29
+ questions: Número de preguntas
30
+ title: Título del cuestionario
31
+ template:
32
+ fields:
33
+ created_at: Creado el
34
+ name: Plantilla
35
+ templates:
36
+ admin:
37
+ questionnaire_templates:
38
+ choose:
39
+ create_from_template: Crear desde plantilla
40
+ description: Estás a punto de crear un nuevo cuestionario. Puedes elegir una plantilla predefinida y modificarla después.
41
+ label: Elegir una plantilla
42
+ placeholder: Elegir una plantilla
43
+ skip_template: Omitir
44
+ edit:
45
+ edit: Editar
46
+ empty: Aún no hay preguntas
47
+ questionnaire: Cuestionario
48
+ form:
49
+ save: Guardar
50
+ template_title: Información de la plantilla
51
+ title: Cuestionario
52
+ index:
53
+ confirm_delete: '¿Seguro que quieres eliminar esta plantilla?'
54
+ title: Plantillas de cuestionario
55
+ preview:
56
+ current_step: Paso %{step}
57
+ of_total_steps: de %{total_steps}
58
+ tos_agreement: Al participar aceptas los Términos y condiciones de uso
59
+ template_types:
60
+ questionnaires: Cuestionarios
@@ -0,0 +1,60 @@
1
+ es-PY:
2
+ decidim:
3
+ admin:
4
+ menu:
5
+ templates: Plantillas
6
+ templates:
7
+ apply:
8
+ error: Se ha producido un error al aplicar esta plantilla.
9
+ success: Plantilla aplicada correctamente
10
+ copy:
11
+ error: Se ha producido un error al copiar esta plantilla.
12
+ success: Plantilla copiada correctamente
13
+ create:
14
+ error: Se ha producido un error al crear esta plantilla.
15
+ success: Plantilla creada correctamente
16
+ destroy:
17
+ success: Plantilla eliminada correctamente
18
+ empty: Todavía no hay plantillas.
19
+ update:
20
+ error: Se ha producido un error al actualizar esta plantilla.
21
+ success: Plantilla actualizada correctamente
22
+ titles:
23
+ template_types:
24
+ questionnaires: Plantillas de cuestionario
25
+ templates: Plantillas
26
+ models:
27
+ questionnaire_template:
28
+ fields:
29
+ questions: Número de preguntas
30
+ title: Título del cuestionario
31
+ template:
32
+ fields:
33
+ created_at: Creado el
34
+ name: Plantilla
35
+ templates:
36
+ admin:
37
+ questionnaire_templates:
38
+ choose:
39
+ create_from_template: Crear desde plantilla
40
+ description: Estás a punto de crear un nuevo cuestionario. Puedes elegir una plantilla predefinida y modificarla después.
41
+ label: Elegir una plantilla
42
+ placeholder: Elegir una plantilla
43
+ skip_template: Omitir
44
+ edit:
45
+ edit: Editar
46
+ empty: Aún no hay preguntas
47
+ questionnaire: Cuestionario
48
+ form:
49
+ save: Guardar
50
+ template_title: Información de la plantilla
51
+ title: Cuestionario
52
+ index:
53
+ confirm_delete: '¿Seguro que quieres eliminar esta plantilla?'
54
+ title: Plantillas de cuestionario
55
+ preview:
56
+ current_step: Paso %{step}
57
+ of_total_steps: de %{total_steps}
58
+ tos_agreement: Al participar aceptas los Términos y condiciones de uso
59
+ template_types:
60
+ questionnaires: Cuestionarios