decidim-assemblies 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +34 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/config/admin/decidim_assemblies_manifest.js +1 -0
  5. data/app/assets/config/decidim_assemblies_manifest.js +1 -0
  6. data/app/assets/images/decidim/assemblies/assembly.svg +6 -0
  7. data/app/assets/javascripts/decidim/assemblies/admin/assemblies.js.es6 +12 -0
  8. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +88 -0
  9. data/app/commands/decidim/assemblies/admin/create_assembly.rb +68 -0
  10. data/app/commands/decidim/assemblies/admin/publish_assembly.rb +34 -0
  11. data/app/commands/decidim/assemblies/admin/unpublish_assembly.rb +34 -0
  12. data/app/commands/decidim/assemblies/admin/update_assembly.rb +73 -0
  13. data/app/constraints/decidim/assemblies/current_assembly.rb +37 -0
  14. data/app/constraints/decidim/assemblies/current_feature.rb +28 -0
  15. data/app/controllers/concerns/decidim/assemblies/admin/assembly_context.rb +21 -0
  16. data/app/controllers/concerns/decidim/assemblies/assembly_context.rb +25 -0
  17. data/app/controllers/concerns/decidim/assemblies/needs_assembly.rb +50 -0
  18. data/app/controllers/decidim/assemblies/admin/application_controller.rb +11 -0
  19. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +100 -0
  20. data/app/controllers/decidim/assemblies/admin/assembly_attachments_controller.rb +27 -0
  21. data/app/controllers/decidim/assemblies/admin/assembly_copies_controller.rb +35 -0
  22. data/app/controllers/decidim/assemblies/admin/assembly_publications_controller.rb +45 -0
  23. data/app/controllers/decidim/assemblies/admin/categories_controller.rb +13 -0
  24. data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +26 -0
  25. data/app/controllers/decidim/assemblies/admin/exports_controller.rb +14 -0
  26. data/app/controllers/decidim/assemblies/admin/feature_permissions_controller.rb +14 -0
  27. data/app/controllers/decidim/assemblies/admin/features_controller.rb +14 -0
  28. data/app/controllers/decidim/assemblies/admin/moderations_controller.rb +12 -0
  29. data/app/controllers/decidim/assemblies/assemblies_controller.rb +43 -0
  30. data/app/controllers/decidim/assemblies/assembly_widgets_controller.rb +21 -0
  31. data/app/controllers/decidim/assemblies/categories_controller.rb +13 -0
  32. data/app/forms/decidim/assemblies/admin/assembly_copy_form.rb +34 -0
  33. data/app/forms/decidim/assemblies/admin/assembly_form.rb +63 -0
  34. data/app/models/decidim/assemblies/abilities/admin/admin_ability.rb +18 -0
  35. data/app/models/decidim/assemblies/abilities/admin_ability.rb +16 -0
  36. data/app/models/decidim/assemblies/abilities/everyone_ability.rb +17 -0
  37. data/app/models/decidim/assembly.rb +45 -0
  38. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +52 -0
  39. data/app/queries/decidim/assemblies/admin/admin_users.rb +39 -0
  40. data/app/queries/decidim/assemblies/organization_assemblies.rb +16 -0
  41. data/app/queries/decidim/assemblies/organization_prioritized_assemblies.rb +20 -0
  42. data/app/queries/decidim/assemblies/organization_published_assemblies.rb +19 -0
  43. data/app/queries/decidim/assemblies/prioritized_assemblies.rb +13 -0
  44. data/app/queries/decidim/assemblies/promoted_assemblies.rb +12 -0
  45. data/app/queries/decidim/assemblies/published_assemblies.rb +12 -0
  46. data/app/views/decidim/assemblies/_assembly.html.erb +22 -0
  47. data/app/views/decidim/assemblies/_order_by_assemblies.html.erb +3 -0
  48. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +89 -0
  49. data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +19 -0
  50. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +66 -0
  51. data/app/views/decidim/assemblies/admin/assemblies/new.html.erb +11 -0
  52. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +34 -0
  53. data/app/views/decidim/assemblies/admin/assembly_copies/new.html.erb +7 -0
  54. data/app/views/decidim/assemblies/assemblies/_no_assemblies_yet.html.erb +3 -0
  55. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +27 -0
  56. data/app/views/decidim/assemblies/assemblies/_statistics.html.erb +10 -0
  57. data/app/views/decidim/assemblies/assemblies/index.html.erb +17 -0
  58. data/app/views/decidim/assemblies/assemblies/show.html.erb +74 -0
  59. data/app/views/decidim/assemblies/assembly_widgets/show.html.erb +11 -0
  60. data/app/views/layouts/decidim/_assembly_header.html.erb +64 -0
  61. data/app/views/layouts/decidim/admin/assemblies.html.erb +14 -0
  62. data/app/views/layouts/decidim/admin/assembly.html.erb +54 -0
  63. data/app/views/layouts/decidim/assembly.html.erb +30 -0
  64. data/config/locales/ca.yml +128 -0
  65. data/config/locales/en.yml +128 -0
  66. data/config/locales/es.yml +128 -0
  67. data/config/locales/eu.yml +127 -0
  68. data/config/locales/fi.yml +127 -0
  69. data/config/locales/fr.yml +127 -0
  70. data/config/locales/it.yml +127 -0
  71. data/config/locales/nl.yml +127 -0
  72. data/config/locales/pl.yml +128 -0
  73. data/config/locales/uk.yml +129 -0
  74. data/db/migrate/20170727190859_add_assemblies.rb +37 -0
  75. data/db/migrate/20170822153055_add_scopes_enabled_to_assemblies.rb +7 -0
  76. data/db/seeds/Exampledocument.pdf +0 -0
  77. data/db/seeds/city.jpeg +0 -0
  78. data/db/seeds/city2.jpeg +0 -0
  79. data/db/seeds/homepage_image.jpg +0 -0
  80. data/lib/decidim/assemblies.rb +12 -0
  81. data/lib/decidim/assemblies/admin.rb +10 -0
  82. data/lib/decidim/assemblies/admin_engine.rb +79 -0
  83. data/lib/decidim/assemblies/engine.rb +53 -0
  84. data/lib/decidim/assemblies/participatory_space.rb +69 -0
  85. data/lib/decidim/assemblies/test/factories.rb +41 -0
  86. metadata +188 -0
@@ -0,0 +1,14 @@
1
+ <% content_for :secondary_nav do %>
2
+ <div class="secondary-nav">
3
+ <div class="secondary-nav__title">
4
+ <%= t "decidim.admin.titles.assemblies" %>
5
+ </div>
6
+ <div class="secondary-nav__actions">
7
+ <%= link_to t("actions.new", scope: "decidim.admin", name: t("models.assembly.name", scope: "decidim.admin")), ['new', 'assembly'], class: 'button expanded small' if can? :create, Decidim::Assembly %>
8
+ </div>
9
+ </div>
10
+ <% end %>
11
+
12
+ <%= render "layouts/decidim/admin/application" do %>
13
+ <%= yield %>
14
+ <% end %>
@@ -0,0 +1,54 @@
1
+ <% content_for :secondary_nav do %>
2
+ <div class="secondary-nav secondary-nav--subnav">
3
+ <ul>
4
+ <% if can? :update, current_assembly %>
5
+ <li <% if is_active_link?(decidim_admin_assemblies.edit_assembly_path(current_assembly)) %> class="is-active" <% end %>>
6
+ <%= aria_selected_link_to t("info", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.edit_assembly_path(current_assembly) %>
7
+ </li>
8
+ <% end %>
9
+ <% if can? :read, Decidim::Feature %>
10
+ <li <% if is_active_link?(decidim_admin_assemblies.features_path(current_assembly)) %> class="is-active" <% end %>>
11
+ <%= aria_selected_link_to t("features", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.features_path(current_assembly) %>
12
+ <ul>
13
+ <% current_assembly.features.each do |feature| %>
14
+ <% if feature.manifest.admin_engine %>
15
+ <li <% if is_active_link?(manage_feature_path(feature)) %> class="is-active" <% end %>>
16
+ <%= link_to manage_feature_path(feature) do %>
17
+ <%= translated_attribute feature.name %>
18
+ <% if feature.primary_stat.present? %>
19
+ <span class="component-counter <%= "component-counter--off" if feature.primary_stat.zero? %>"><%= feature.primary_stat %></span>
20
+ <% end %>
21
+ <% end %>
22
+ </li>
23
+ <% end %>
24
+ <% end %>
25
+ </ul>
26
+ </li>
27
+ <% end %>
28
+ <% if can? :read, Decidim::Category %>
29
+ <li <% if is_active_link?(decidim_admin_assemblies.categories_path(current_assembly)) %> class="is-active" <% end %>>
30
+ <%= aria_selected_link_to t("categories", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.categories_path(current_assembly) %>
31
+ </li>
32
+ <% end %>
33
+ <% if can? :read, Decidim::Attachment %>
34
+ <li <% if is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_assembly.id)) %> class="is-active" <% end %>>
35
+ <%= aria_selected_link_to t("attachments", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.assembly_attachments_path(current_assembly.id) %>
36
+ </li>
37
+ <% end %>
38
+ <% if can? :read, Decidim::Moderation %>
39
+ <li <% if is_active_link?(decidim_admin_assemblies.moderations_path(current_assembly.id)) %> class="is-active" <% end %>>
40
+ <%= aria_selected_link_to t("moderations", scope: "decidim.admin.menu.assemblies_submenu"), decidim_admin_assemblies.moderations_path(current_assembly.id) %>
41
+ </li>
42
+ <% end %>
43
+ </ul>
44
+ </div>
45
+ <% end %>
46
+
47
+ <%= render "layouts/decidim/admin/application" do %>
48
+ <div class="process-title">
49
+ <div class="process-title-content">
50
+ <%= translated_attribute(current_assembly.title) %>
51
+ </div>
52
+ </div>
53
+ <%= yield %>
54
+ <% end %>
@@ -0,0 +1,30 @@
1
+ <% add_decidim_page_title(translated_attribute(current_feature.name)) if try(:current_feature) %>
2
+ <% add_decidim_page_title(translated_attribute(current_assembly.title)) %>
3
+ <% add_decidim_meta_tags(
4
+ image_url: current_assembly.banner_image.url,
5
+ description: translated_attribute(current_assembly.short_description),
6
+ ) %>
7
+
8
+ <%= render "layouts/decidim/application" do %>
9
+ <div class="wrapper">
10
+ <%= render partial: "layouts/decidim/assembly_header" %>
11
+ <%= yield %>
12
+ </div>
13
+ <% if content_for? :expanded %>
14
+ <div class="expanded">
15
+ <div class="wrapper wrapper--inner">
16
+ <div class="row">
17
+ <%= yield :expanded %>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <% end %>
22
+ <% end %>
23
+
24
+ <% if try(:current_feature) %>
25
+ <% current_feature.manifest.actions.each do |action| %>
26
+ <%= action_authorization_modal(action) %>
27
+ <% end %>
28
+ <% end %>
29
+
30
+ <% provide :meta_image_url, current_assembly.banner_image.url %>
@@ -0,0 +1,128 @@
1
+ ---
2
+ ca:
3
+ activemodel:
4
+ attributes:
5
+ assembly:
6
+ banner_image: Imatge de bàner
7
+ copy_categories: Copiar categories
8
+ copy_features: Copiar funcionalitats
9
+ description: Descripció
10
+ developer_group: Grup promotor
11
+ domain: Àrees municipals
12
+ hashtag: Hashtag
13
+ hero_image: Imatge de portada
14
+ local_area: Àrea municipal
15
+ meta_scope: Metadades d'àmbit
16
+ participatory_scope: Àmbit participatiu
17
+ participatory_structure: Estructura participativa
18
+ promoted: Destacat
19
+ scope_id: Àmbit
20
+ scopes_enabled: Àmbit habilitat
21
+ short_description: Descripció breu
22
+ slug: Nom curt d'URL
23
+ subtitle: Subtítol
24
+ target: A qui va dirigit?
25
+ title: Grup de processos participatius
26
+ decidim:
27
+ admin:
28
+ assemblies:
29
+ create:
30
+ error: S'ha produït un error en crear una nova assemblea.
31
+ success: Assemblea creada correctament.
32
+ destroy:
33
+ success: L'assemblea s'ha eliminat amb èxit.
34
+ edit:
35
+ update: Actualitzar
36
+ form:
37
+ title: Informació general
38
+ index:
39
+ not_published: No publicada
40
+ published: Publicat
41
+ new:
42
+ create: Crear
43
+ title: Nova assemblea
44
+ update:
45
+ error: S'ha produït un error en actualitzar aquesta assemblea.
46
+ success: L'assemblea s'ha actualitzat correctament.
47
+ assemblies_copies:
48
+ create:
49
+ error: S'ha produït un error en duplicar aquesta assemblea.
50
+ success: L'assemblea s'ha duplicat correctament.
51
+ assembly_copies:
52
+ new:
53
+ copy: Còpia
54
+ select: Selecciona quines dades vols duplicar
55
+ title: Assemblea duplicada
56
+ assembly_publications:
57
+ create:
58
+ error: S'ha produït un error en publicar aquesta assemblea.
59
+ success: Assemblea publicada amb èxit.
60
+ destroy:
61
+ error: S'ha produït un error en despublicar aquesta assemblea.
62
+ success: Assemblea despublicada amb èxit.
63
+ menu:
64
+ assemblies: Assemblees
65
+ assemblies_submenu:
66
+ attachments: Adjunts
67
+ categories: Categories
68
+ features: Funcionalitats
69
+ info: Informació
70
+ moderations: Moderacions
71
+ models:
72
+ assembly:
73
+ fields:
74
+ created_at: Data de creació
75
+ promoted: Destacat
76
+ published: Publicat
77
+ title: Grup de processos participatius
78
+ name: Assemblea
79
+ titles:
80
+ assemblies: Assemblees
81
+ assemblies:
82
+ index:
83
+ title: Assemblees
84
+ show:
85
+ developer_group: Grup promotor
86
+ local_area: Àrea municipal
87
+ participatory_scope: Àmbit participatiu
88
+ participatory_structure: Estructura participativa
89
+ scope: Àmbit
90
+ target: A qui va dirigit
91
+ statistics:
92
+ answers_count: Respostes
93
+ assemblies_count: Assemblees
94
+ comments_count: Comentaris
95
+ headline: Activitat
96
+ meetings_count: Trobades presencials
97
+ orders_count: Vots
98
+ pages_count: Pàgines
99
+ projects_count: Projectes
100
+ proposals_count: Propostes
101
+ results_count: Resultats
102
+ surveys_count: Enquestes
103
+ users_count: Participants
104
+ votes_count: Suports
105
+ menu:
106
+ assemblies: Assemblees
107
+ layouts:
108
+ decidim:
109
+ assemblies:
110
+ assembly:
111
+ take_part: Participa
112
+ index:
113
+ promoted_assemblies: Assemblees destacades
114
+ no_assemblies_yet:
115
+ no_assemblies_yet: Encara no hi ha cap assemblea!
116
+ order_by_assemblies:
117
+ assemblies:
118
+ one: "%{count} assemblea"
119
+ other: "%{count} assemblees"
120
+ promoted_assembly:
121
+ more_info: Més informació
122
+ take_part: Participa
123
+ assembly_header:
124
+ assembly_menu_item: L'assemblea
125
+ unfold: Desplega
126
+ assembly_widgets:
127
+ show:
128
+ take_part: Participa
@@ -0,0 +1,128 @@
1
+ ---
2
+ en:
3
+ activemodel:
4
+ attributes:
5
+ assembly:
6
+ banner_image: Banner image
7
+ copy_categories: Copy categories
8
+ copy_features: Copy features
9
+ description: Description
10
+ developer_group: Developer group
11
+ domain: Domain
12
+ hashtag: Hashtag
13
+ hero_image: Home image
14
+ local_area: Local area
15
+ meta_scope: Scope metadata
16
+ participatory_scope: Participatory scope
17
+ participatory_structure: Participatory structure
18
+ promoted: Promoted
19
+ scope_id: Scope
20
+ scopes_enabled: Scopes enabled
21
+ short_description: Short description
22
+ slug: URL slug
23
+ subtitle: Subtitle
24
+ target: Target
25
+ title: Title
26
+ decidim:
27
+ admin:
28
+ assemblies:
29
+ create:
30
+ error: There was an error creating a new assembly.
31
+ success: Assembly created successfully.
32
+ destroy:
33
+ success: Assembly destroyed successfully.
34
+ edit:
35
+ update: Update
36
+ form:
37
+ title: General Information
38
+ index:
39
+ not_published: Not published
40
+ published: Published
41
+ new:
42
+ create: Create
43
+ title: New assembly
44
+ update:
45
+ error: There was an error when updating this assembly.
46
+ success: Assembly updated successfully.
47
+ assemblies_copies:
48
+ create:
49
+ error: There was an error when duplicating this assembly.
50
+ success: Assembly duplicated successfully.
51
+ assembly_copies:
52
+ new:
53
+ copy: Copy
54
+ select: Select which data you would like to duplicate
55
+ title: Duplicate assembly
56
+ assembly_publications:
57
+ create:
58
+ error: There was an error publishing this assembly.
59
+ success: Assembly published successfully.
60
+ destroy:
61
+ error: There was an error unpublishing this assembly.
62
+ success: Assembly unpublished successfully.
63
+ menu:
64
+ assemblies: Assemblies
65
+ assemblies_submenu:
66
+ attachments: Attachments
67
+ categories: Categories
68
+ features: Features
69
+ info: Info
70
+ moderations: Moderations
71
+ models:
72
+ assembly:
73
+ fields:
74
+ created_at: Created at
75
+ promoted: Highlighted
76
+ published: Published
77
+ title: Title
78
+ name: Assembly
79
+ titles:
80
+ assemblies: Assemblies
81
+ assemblies:
82
+ index:
83
+ title: Assemblies
84
+ show:
85
+ developer_group: Developer group
86
+ local_area: Local area
87
+ participatory_scope: Participatory scope
88
+ participatory_structure: Participatory structure
89
+ scope: Scope
90
+ target: Target
91
+ statistics:
92
+ answers_count: Answers
93
+ assemblies_count: Assemblies
94
+ comments_count: Comments
95
+ headline: Activity
96
+ meetings_count: Meetings
97
+ orders_count: Orders
98
+ pages_count: Pages
99
+ projects_count: Projects
100
+ proposals_count: Proposals
101
+ results_count: Results
102
+ surveys_count: Surveys
103
+ users_count: Participants
104
+ votes_count: Votes
105
+ menu:
106
+ assemblies: Assemblies
107
+ layouts:
108
+ decidim:
109
+ assemblies:
110
+ assembly:
111
+ take_part: Take part
112
+ index:
113
+ promoted_assemblies: Highlighted assemblies
114
+ no_assemblies_yet:
115
+ no_assemblies_yet: No assemblies yet!
116
+ order_by_assemblies:
117
+ assemblies:
118
+ one: "%{count} assembly"
119
+ other: "%{count} assemblies"
120
+ promoted_assembly:
121
+ more_info: More info
122
+ take_part: Take part
123
+ assembly_header:
124
+ assembly_menu_item: The assembly
125
+ unfold: Unfold
126
+ assembly_widgets:
127
+ show:
128
+ take_part: Take part
@@ -0,0 +1,128 @@
1
+ ---
2
+ es:
3
+ activemodel:
4
+ attributes:
5
+ assembly:
6
+ banner_image: Imagen de banner
7
+ copy_categories: Copiar categorías
8
+ copy_features: Copiar funcionalidades
9
+ description: Descripción
10
+ developer_group: Grupo promotor
11
+ domain: Dominio
12
+ hashtag: Hashtag
13
+ hero_image: Imagen de portada
14
+ local_area: Áreas municipales
15
+ meta_scope: 'Metadatos: ámbito'
16
+ participatory_scope: Ámbito participativo
17
+ participatory_structure: Estructura participativa
18
+ promoted: Destacado
19
+ scope_id: Ámbito
20
+ scopes_enabled: Ámbitos habilitados
21
+ short_description: Descripción breve
22
+ slug: Texto corto de URL
23
+ subtitle: Subtítulo
24
+ target: "¿A quién va dirigido?"
25
+ title: Grupo de procesos participativos
26
+ decidim:
27
+ admin:
28
+ assemblies:
29
+ create:
30
+ error: Se produjo un error al crear una nueva asamblea.
31
+ success: Asamblea creada correctamente.
32
+ destroy:
33
+ success: Asamblea destruida correctamente.
34
+ edit:
35
+ update: Actualizar
36
+ form:
37
+ title: Información general
38
+ index:
39
+ not_published: No publicado
40
+ published: Publicado
41
+ new:
42
+ create: Crear
43
+ title: Nueva asamblea
44
+ update:
45
+ error: Se ha producido un error al actualizar esta asamblea.
46
+ success: La asamblea se ha actualizado correctamente.
47
+ assemblies_copies:
48
+ create:
49
+ error: Se produjo un error al duplicar esta asamblea.
50
+ success: Asamblea duplicada correctamente.
51
+ assembly_copies:
52
+ new:
53
+ copy: Copiar
54
+ select: Seleccione los datos que desea duplicar
55
+ title: Duplicar asamblea
56
+ assembly_publications:
57
+ create:
58
+ error: Se produjo un error al publicar esta asamblea.
59
+ success: Asamblea publicada con éxito.
60
+ destroy:
61
+ error: Se produjo un error al despublicar esta asamblea.
62
+ success: Asamblea despublicada con éxito.
63
+ menu:
64
+ assemblies: Asambleas
65
+ assemblies_submenu:
66
+ attachments: Archivos adjuntos
67
+ categories: Categorías
68
+ features: Funcionalidades
69
+ info: Información
70
+ moderations: Moderaciones
71
+ models:
72
+ assembly:
73
+ fields:
74
+ created_at: Fecha de creación
75
+ promoted: Destacado
76
+ published: Publicada
77
+ title: Grupo de procesos participativos
78
+ name: Asamblea
79
+ titles:
80
+ assemblies: Asambleas
81
+ assemblies:
82
+ index:
83
+ title: Asambleas
84
+ show:
85
+ developer_group: Grupo promotor
86
+ local_area: Áreas municipales
87
+ participatory_scope: Ámbito participativo
88
+ participatory_structure: Estructura participativa
89
+ scope: Ámbito
90
+ target: "¿A quién va dirigida?"
91
+ statistics:
92
+ answers_count: Respuestas
93
+ assemblies_count: Asambleas
94
+ comments_count: Comentarios
95
+ headline: Actividad
96
+ meetings_count: Encuentros
97
+ orders_count: Votos
98
+ pages_count: Páginas
99
+ projects_count: Proyectos
100
+ proposals_count: Propuestas
101
+ results_count: Resultados
102
+ surveys_count: Encuestas
103
+ users_count: Participantes
104
+ votes_count: Soportes
105
+ menu:
106
+ assemblies: Asambleas
107
+ layouts:
108
+ decidim:
109
+ assemblies:
110
+ assembly:
111
+ take_part: Participa
112
+ index:
113
+ promoted_assemblies: Asambleas destacadas
114
+ no_assemblies_yet:
115
+ no_assemblies_yet: "¡Todavía no hay asambleas!"
116
+ order_by_assemblies:
117
+ assemblies:
118
+ one: "%{count} asamblea"
119
+ other: "%{count} asambleas"
120
+ promoted_assembly:
121
+ more_info: Más información
122
+ take_part: Participa
123
+ assembly_header:
124
+ assembly_menu_item: La asamblea
125
+ unfold: Desplegar
126
+ assembly_widgets:
127
+ show:
128
+ take_part: Participa