decidim-assemblies 0.21.0 → 0.22.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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/decidim/assemblies/assembly.svg +1 -3
  3. data/app/assets/javascripts/decidim/assemblies/orgchart.js.es6 +698 -0
  4. data/app/cells/decidim/assemblies/assembly_m/footer.erb +2 -2
  5. data/app/cells/decidim/assemblies/assembly_m_cell.rb +4 -0
  6. data/app/cells/decidim/assemblies/assembly_member/show.erb +4 -4
  7. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies/show.erb +10 -11
  8. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_cell.rb +1 -0
  9. data/app/commands/decidim/assemblies/admin/create_assembly_admin.rb +2 -1
  10. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +12 -3
  11. data/app/commands/decidim/assemblies/admin/notify_role_assigned_to_assembly.rb +22 -0
  12. data/app/commands/decidim/assemblies/admin/update_assemblies_setting.rb +46 -0
  13. data/app/commands/decidim/assemblies/admin/update_assembly_admin.rb +2 -1
  14. data/app/controllers/decidim/assemblies/admin/assemblies_settings_controller.rb +49 -0
  15. data/app/controllers/decidim/assemblies/assemblies_controller.rb +5 -1
  16. data/app/events/decidim/assemblies/create_assembly_member_event.rb +17 -0
  17. data/app/events/decidim/role_assigned_to_assembly_event.rb +28 -0
  18. data/app/forms/decidim/assemblies/admin/assemblies_setting_form.rb +14 -0
  19. data/app/forms/decidim/assemblies/admin/assembly_form.rb +14 -4
  20. data/app/helpers/decidim/assemblies/assemblies_helper.rb +6 -3
  21. data/app/models/decidim/assemblies_setting.rb +17 -0
  22. data/app/permissions/decidim/assemblies/permissions.rb +30 -1
  23. data/app/presenters/decidim/assemblies/admin_log/assemblies_setting_presenter.rb +27 -0
  24. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +1 -1
  25. data/app/queries/decidim/assemblies/parent_assemblies_for_select.rb +20 -1
  26. data/app/views/decidim/assemblies/_filter_by_type.html.erb +11 -9
  27. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +3 -2
  28. data/app/views/decidim/assemblies/admin/assemblies_settings/_form.html.erb +10 -0
  29. data/app/views/decidim/assemblies/admin/assemblies_settings/edit.html.erb +6 -0
  30. data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +2 -2
  31. data/app/views/decidim/assemblies/assemblies/_parent_assemblies.html.erb +2 -2
  32. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +3 -3
  33. data/app/views/decidim/assemblies/assemblies/index.html.erb +11 -8
  34. data/app/views/decidim/assemblies/assemblies/show.html.erb +9 -8
  35. data/app/views/decidim/assemblies/assembly_members/index.html.erb +1 -1
  36. data/app/views/layouts/decidim/admin/assemblies.html.erb +5 -0
  37. data/config/locales/bg-BG.yml +7 -0
  38. data/config/locales/ca.yml +46 -0
  39. data/config/locales/cs.yml +76 -30
  40. data/config/locales/da-DK.yml +1 -0
  41. data/config/locales/de.yml +69 -0
  42. data/config/locales/el.yml +455 -0
  43. data/config/locales/en.yml +46 -0
  44. data/config/locales/es-MX.yml +46 -0
  45. data/config/locales/es-PY.yml +46 -0
  46. data/config/locales/es.yml +46 -0
  47. data/config/locales/et-EE.yml +1 -0
  48. data/config/locales/fi-plain.yml +46 -0
  49. data/config/locales/fi.yml +47 -1
  50. data/config/locales/fr-CA.yml +456 -0
  51. data/config/locales/fr.yml +67 -0
  52. data/config/locales/ga-IE.yml +1 -0
  53. data/config/locales/hr-HR.yml +1 -0
  54. data/config/locales/hu.yml +35 -2
  55. data/config/locales/it.yml +134 -76
  56. data/config/locales/ja-JP.yml +452 -0
  57. data/config/locales/lt-LT.yml +1 -0
  58. data/config/locales/lv-LV.yml +454 -0
  59. data/config/locales/mt-MT.yml +1 -0
  60. data/config/locales/nl.yml +58 -0
  61. data/config/locales/no.yml +57 -10
  62. data/config/locales/pl.yml +212 -143
  63. data/config/locales/pt-BR.yml +1 -1
  64. data/config/locales/pt.yml +188 -119
  65. data/config/locales/ro-RO.yml +422 -0
  66. data/config/locales/sk-SK.yml +168 -0
  67. data/config/locales/sk.yml +172 -0
  68. data/config/locales/sl.yml +132 -0
  69. data/config/locales/sr-CS.yml +73 -0
  70. data/config/locales/sv.yml +156 -89
  71. data/db/migrate/20200320105906_index_foreign_keys_in_decidim_assemblies.rb +7 -0
  72. data/db/migrate/20200320105907_index_foreign_keys_in_decidim_assembly_user_roles.rb +7 -0
  73. data/db/migrate/20200416132109_remove_legacy_decidim_assembly_type.rb +8 -0
  74. data/db/migrate/20200430202456_create_decidim_assemblies_settings.rb +10 -0
  75. data/db/seeds/city.jpeg +0 -0
  76. data/db/seeds/city2.jpeg +0 -0
  77. data/lib/decidim/assemblies/admin_engine.rb +1 -0
  78. data/lib/decidim/assemblies/participatory_space.rb +6 -1
  79. data/lib/decidim/assemblies/test/factories.rb +5 -0
  80. data/lib/decidim/assemblies/version.rb +1 -1
  81. metadata +38 -8
@@ -30,8 +30,10 @@ module Decidim
30
30
  return permission_action unless permission_action.scope == :admin
31
31
 
32
32
  user_can_read_assembly_list?
33
+ user_can_list_assembly_list?
33
34
  user_can_read_current_assembly?
34
35
  user_can_create_assembly?
36
+ user_can_read_assemblies_setting?
35
37
 
36
38
  # org admins and space admins can do everything in the admin section
37
39
  org_admin_action?
@@ -165,6 +167,13 @@ module Decidim
165
167
  toggle_allow(user.admin?)
166
168
  end
167
169
 
170
+ def user_can_read_assemblies_setting?
171
+ return unless permission_action.action == :read &&
172
+ permission_action.subject == :assemblies_setting
173
+
174
+ toggle_allow(user.admin?)
175
+ end
176
+
168
177
  # Everyone can read the assembly list
169
178
  def user_can_read_assembly_list?
170
179
  return unless read_assembly_list_permission_action?
@@ -172,6 +181,25 @@ module Decidim
172
181
  toggle_allow(user.admin? || has_manageable_assemblies?)
173
182
  end
174
183
 
184
+ # Checks whether the user can list the current given assembly or not.
185
+ #
186
+ # In case of user being admin of child assembly even parent assembly
187
+ # should be listed to be able to navigate to child assembly
188
+ def user_can_list_assembly_list?
189
+ return unless permission_action.action == :list &&
190
+ permission_action.subject == :assembly
191
+
192
+ toggle_allow(user.admin? || allowed_list_of_assemblies?)
193
+ end
194
+
195
+ def allowed_list_of_assemblies?
196
+ assemblies = AssembliesWithUserRole.for(user)
197
+ parent_assemblies = assemblies.flat_map { |assembly| [assembly.id] + assembly.ancestors.pluck(:id) }
198
+
199
+ allowed_list_of_assemblies = Decidim::Assembly.where(id: assemblies + parent_assemblies)
200
+ allowed_list_of_assemblies.uniq.member?(assembly)
201
+ end
202
+
175
203
  def user_can_read_current_assembly?
176
204
  return unless read_assembly_list_permission_action?
177
205
  return if permission_action.subject == :assembly_list
@@ -239,7 +267,8 @@ module Decidim
239
267
  :assembly,
240
268
  :assembly_user_role,
241
269
  :assembly_member,
242
- :space_private_user
270
+ :space_private_user,
271
+ :assemblies_setting
243
272
  ].include?(permission_action.subject)
244
273
  allow! if is_allowed
245
274
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ module AdminLog
6
+ # This class holds the logic to present a `Decidim::AssembliesSetting`
7
+ # for the `AdminLog` log.
8
+ #
9
+ # Usage should be automatic and you shouldn't need to call this class
10
+ # directly, but here's an example:
11
+ #
12
+ # action_log = Decidim::ActionLog.last
13
+ # view_helpers # => this comes from the views
14
+ # AssembliesSettingPresenter.new(action_log, view_helpers).present
15
+ class AssembliesSettingPresenter < Decidim::Log::BasePresenter
16
+ private
17
+
18
+ def action_string
19
+ case action
20
+ when "update"
21
+ "decidim.admin_log.assembly_setting.#{action}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -38,7 +38,7 @@ module Decidim
38
38
 
39
39
  def render_stats_data(component_manifest, name, data, index)
40
40
  safe_join([
41
- index.zero? ? manifest_icon(component_manifest) : " /&nbsp".html_safe,
41
+ index.zero? ? manifest_icon(component_manifest, role: "img", "aria-hidden": true) : " /&nbsp".html_safe,
42
42
  content_tag(:span, "#{number_with_delimiter(data)} " + I18n.t(name, scope: "decidim.assemblies.statistics"),
43
43
  class: "#{name} process_stats-text")
44
44
  ])
@@ -15,8 +15,27 @@ module Decidim
15
15
  @assembly = assembly
16
16
  end
17
17
 
18
+ # Finds the available assemblies
19
+ #
20
+ # Returns an ActiveRecord::Relation.
18
21
  def query
19
- Assembly.where(organization: @organization).where.not(id: @assembly)
22
+ available_assemblies = Assembly.where(organization: @organization).where.not(id: @assembly)
23
+
24
+ return available_assemblies if @assembly.blank?
25
+
26
+ available_assemblies.where.not(id: descendant_ids)
27
+ end
28
+
29
+ private
30
+
31
+ def descendant_ids
32
+ recursive_children(@assembly).flatten
33
+ end
34
+
35
+ def recursive_children(model)
36
+ model.children.map do |child|
37
+ [recursive_children(child), child.id]
38
+ end
20
39
  end
21
40
  end
22
41
  end
@@ -1,17 +1,19 @@
1
1
  <div id="assemblies-filter" class="inline-filters">
2
2
  <% if available_filters.any? %>
3
+ <div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
4
+ <ul class="list-reset">
5
+ <% available_filters.each do |title, id| %>
6
+ <li>
7
+ <%= link_to filter_link(id), remote: true do %>
8
+ <%= title %>
9
+ <% end %>
10
+ </li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
3
14
  <label>
4
15
  <span><%= help_text %></span>
5
16
  <button id="button-text" data-toggle="inline-filter-sort"><%= current_filter_name %></button>
6
- <div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
7
- <ul class="list-reset">
8
- <% available_filters.each do |title, id| %>
9
- <%= link_to filter_link(id), remote: true do %>
10
- <li><%= title %></li>
11
- <% end %>
12
- <% end %>
13
- </ul>
14
- </div>
15
17
  </label>
16
18
  <% end %>
17
19
  </div>
@@ -38,11 +38,12 @@
38
38
  </thead>
39
39
  <tbody>
40
40
  <% @assemblies.each do |assembly| %>
41
+ <% next unless allowed_to? :list, :assembly, assembly: assembly %>
41
42
  <tr>
42
43
  <td>
43
44
  <% if assembly.promoted? %>
44
45
  <span data-tooltip class="icon-state icon-highlight" aria-haspopup="true" data-disable-hover="false" title="<%= t("models.assembly.fields.promoted", scope: "decidim.admin") %>">
45
- <%= icon "star" %>
46
+ <%= icon "star", role: "img", "aria-hidden": true %>
46
47
  </span>
47
48
  <% end %>
48
49
  <% if allowed_to? :update, :assembly, assembly: assembly %>
@@ -58,7 +59,7 @@
58
59
  <% end %>
59
60
  </td>
60
61
  <td>
61
- <%= l(assembly.created_at, format: :short) %>
62
+ <%= l(assembly.creation_date, format: :decidim_short) if assembly.creation_date %>
62
63
  </td>
63
64
  <td class="table-list__state">
64
65
  <% if assembly.private_space? %>
@@ -0,0 +1,10 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= t(".title") %></h2>
4
+ </div>
5
+ <div class="card-section">
6
+ <div class="row column">
7
+ <%= form.check_box :enable_organization_chart %>
8
+ </div>
9
+ </div>
10
+ </div>
@@ -0,0 +1,6 @@
1
+ <%= decidim_form_for(@form, html: { class: "form edit_assemblies_settings" }, url: assemblies_settings_path, method: :put) do |f| %>
2
+ <%= render partial: "form", object: f %>
3
+ <div class="button--double form-general-submit">
4
+ <%= f.submit t(".update") %>
5
+ </div>
6
+ <% end %>
@@ -35,8 +35,8 @@
35
35
  <%= search_field_tag :q, @query,label: false, class: "input-group-field", placeholder: t(".search") %>
36
36
  <%= hidden_field_tag :status, @status %>
37
37
  <div class="input-group-button">
38
- <button type="submit" class="button button--muted">
39
- <%= icon "magnifying-glass", aria_label: t(".search") %>
38
+ <button type="submit" class="button">
39
+ <%= icon "magnifying-glass", aria_label: t(".search"), role: "img" %>
40
40
  </button>
41
41
  </div>
42
42
  </div>
@@ -1,9 +1,9 @@
1
1
  <section id="parent-assemblies" class="section row collapse">
2
2
  <div class="row column">
3
3
  <div class="flex--sbe">
4
- <h2 id="assemblies-count" class="section-heading collapse">
4
+ <h3 id="assemblies-count" class="section-heading collapse">
5
5
  <%= render partial: "count" %>
6
- </h2>
6
+ </h3>
7
7
  <%= render partial: "decidim/assemblies/filter_by_type" %>
8
8
  </div>
9
9
  <hr class="reset mt-s mb-s">
@@ -1,4 +1,4 @@
1
- <article class="card card--full card--process">
1
+ <div class="card card--full card--process">
2
2
  <div class="row collapse card--process__row">
3
3
  <div class="columns mediumlarge-8 large-6 card--process__column">
4
4
  <div class="card__content">
@@ -6,7 +6,7 @@
6
6
  <h2 class="card__title"><%= translated_attribute promoted_assembly.title %></h2>
7
7
  <% end %>
8
8
  <%= decidim_sanitize html_truncate(translated_attribute(promoted_assembly.short_description), length: 630, separator: "...") %>
9
- <%= link_to assembly_path(promoted_assembly), class: "button secondary small hollow card__button" do %>
9
+ <%= link_to assembly_path(promoted_assembly), class: "button small hollow card__button" do %>
10
10
  <%= t("assemblies.promoted_assembly.more_info", scope: "layouts.decidim") %>
11
11
  <% end %>
12
12
  </div>
@@ -24,4 +24,4 @@
24
24
  </div>
25
25
  </div>
26
26
  </div>
27
- </article>
27
+ </div>
@@ -18,13 +18,16 @@ edit_link(
18
18
 
19
19
  <%= render partial: "parent_assemblies" %>
20
20
 
21
- <section id="assemblies-chart" class="row column section">
22
- <div class="row column">
23
- <h2 class="section-heading"><%= t("assemblies.index.organizational_chart", scope: "layouts.decidim") %></h2>
24
- <article id="orgchart-<%= SecureRandom.hex(5) %>" class="card orgchart js-orgchart absolutes" data-url="<%= decidim_assemblies.assemblies_path(format: :json) %>">
25
- <button class="medium-1 m-s top left button small hollow invisible js-reset-orgchart"><%= t("assemblies.index.reset_chart", scope: "layouts.decidim") %></button>
26
- </article>
27
- </div>
28
- </section>
21
+ <% if current_assemblies_settings.enable_organization_chart %>
22
+ <section id="assemblies-chart" class="row column section">
23
+ <div class="row column">
24
+ <h3 class="section-heading"><%= t("assemblies.index.organizational_chart", scope: "layouts.decidim") %></h3>
25
+ <div id="orgchart-<%= SecureRandom.hex(5) %>" class="card orgchart js-orgchart absolutes" data-url="<%= decidim_assemblies.assemblies_path(format: :json) %>">
26
+ <button class="medium-1 m-s top left button small hollow invisible js-reset-orgchart"><%= t("assemblies.index.reset_chart", scope: "layouts.decidim") %></button>
27
+ </div>
28
+ </div>
29
+ </section>
30
+ <% end %>
29
31
  <% end %>
30
32
  <%= javascript_include_tag "decidim/filters" %>
33
+ <%= javascript_include_tag "decidim/assemblies/orgchart" %>
@@ -47,44 +47,45 @@ edit_link(
47
47
  translated_attribute(current_participatory_space.internal_organisation).present? ||
48
48
  translated_attribute(current_participatory_space.composition).present? %>
49
49
  <div class="show-more">
50
- <button class="button button--muted small"><%= t("read_more", scope: "decidim.assemblies.show") %></button>
50
+ <button class="button hollow small"><%= t("read_more", scope: "decidim.assemblies.show") %></button>
51
51
  </div>
52
52
 
53
53
  <div class="hide show-more-panel">
54
54
  <% if translated_attribute(current_participatory_space.purpose_of_action).present? %>
55
55
  <div class="section">
56
- <h4 class="section-heading"><%= t("purpose_of_action", scope: "decidim.assemblies.show") %></h4>
56
+ <h3 class="section-heading"><%= t("purpose_of_action", scope: "decidim.assemblies.show") %></h3>
57
57
  <%= decidim_sanitize translated_attribute(current_participatory_space.purpose_of_action) %>
58
58
  </div>
59
59
  <% end %>
60
60
 
61
61
  <% if translated_attribute(current_participatory_space.internal_organisation).present? %>
62
62
  <div class="section">
63
- <h4 class="section-heading"><%= t("internal_organisation", scope: "decidim.assemblies.show") %></h4>
63
+ <h3 class="section-heading"><%= t("internal_organisation", scope: "decidim.assemblies.show") %></h3>
64
64
  <%= decidim_sanitize translated_attribute(current_participatory_space.internal_organisation) %>
65
65
  </div>
66
66
  <% end %>
67
67
 
68
68
  <% if translated_attribute(current_participatory_space.composition).present? %>
69
69
  <div class="section">
70
- <h4 class="section-heading"><%= t("composition", scope: "decidim.assemblies.show") %></h4>
70
+ <h3 class="section-heading"><%= t("composition", scope: "decidim.assemblies.show") %></h3>
71
71
  <%= decidim_sanitize translated_attribute(current_participatory_space.composition) %>
72
72
  </div>
73
73
  <% end %>
74
74
  <div class="section text-center">
75
75
  <div class="hide-more">
76
- <button class="button button--muted small"><%= t("read_less", scope: "decidim.assemblies.show") %></button>
76
+ <button class="button hollow small"><%= t("read_less", scope: "decidim.assemblies.show") %></button>
77
77
  </div>
78
78
  </div>
79
79
  </div>
80
80
  <% end %>
81
81
 
82
- <%= render_hook(:current_participatory_space_meetings) %>
83
-
84
82
  <%= attachments_for current_participatory_space %>
83
+
84
+ <%= render_hook(:participatory_space_highlighted_elements) %>
85
+
85
86
  <% if current_participatory_space.children.visible_for(current_user).count.positive? %>
86
87
  <section id="assemblies-grid" class="section row collapse">
87
- <h4 class="section-heading"><%= t("children", scope: "decidim.assemblies.show") %></h4>
88
+ <h3 class="section-heading"><%= t("children", scope: "decidim.assemblies.show") %></h3>
88
89
  <div class="row small-up-1 medium-up-2 large-up-2 card-grid">
89
90
  <%= render partial: "decidim/assemblies/assembly", collection: current_participatory_space.children.visible_for(current_user).published %>
90
91
  </div>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div class="section row column">
4
4
  <div class="flex--sbe">
5
- <h2 class="section-heading"><%= t(".members") %> <span class="text-muted">(<%= collection.size %>)</span></h2>
5
+ <h3 class="section-heading"><%= t(".members") %> <span class="text-muted">(<%= collection.size %>)</span></h3>
6
6
  </div>
7
7
  <div id="assembly_members-grid" class="row small-up-1 medium-up-2 large-up-3 card-grid">
8
8
  <%= render(collection) %>
@@ -11,6 +11,11 @@
11
11
  <%= aria_selected_link_to I18n.t("menu.assemblies_types", scope: "decidim.admin"), decidim_admin_assemblies.assemblies_types_path %>
12
12
  </li>
13
13
  <% end %>
14
+ <% if allowed_to?(:read, :assemblies_setting) %>
15
+ <li <% if is_active_link?(decidim_admin_assemblies.edit_assemblies_settings_path) %> class="is-active" <% end %>>
16
+ <%= aria_selected_link_to I18n.t("menu.assemblies_settings", scope: "decidim.admin"), decidim_admin_assemblies.edit_assemblies_settings_path %>
17
+ </li>
18
+ <% end %>
14
19
  </ul>
15
20
  </div>
16
21
  <% end %>
@@ -0,0 +1,7 @@
1
+ bg:
2
+ activemodel:
3
+ attributes:
4
+ assembly:
5
+ area_id: Район
6
+ assembly_type: Тип събрание
7
+ assembly_type_other: Друг тип събрание
@@ -101,6 +101,10 @@ ca:
101
101
  create:
102
102
  error: S'ha produït un error en duplicar aquesta assemblea.
103
103
  success: L'assemblea s'ha duplicat correctament.
104
+ assemblies_settings:
105
+ update:
106
+ error: Hi ha hagut un problema actualitzant la configuració.
107
+ success: Configuració actualitzada amb èxit.
104
108
  assemblies_types:
105
109
  create:
106
110
  error: S'ha produït un error en crear una nova assemblea.
@@ -161,6 +165,7 @@ ca:
161
165
  success: L'administradora s'ha actualitzat correctament per a aquesta assemblea.
162
166
  menu:
163
167
  assemblies: Assemblees
168
+ assemblies_settings: Configuració
164
169
  assemblies_submenu:
165
170
  assembly_admins: Administradores de l'assemblea
166
171
  assembly_members: Membres
@@ -222,6 +227,8 @@ ca:
222
227
  create: "%{user_name} ha afegit el membre %{resource_name} a l'assemblea %{space_name}"
223
228
  delete: "%{user_name} esborrat el membre %{resource_name} de l'assemblea %{space_name}"
224
229
  update: "%{user_name} ha actualitzat el membre %{resource_name} de l'assemblea %{space_name}"
230
+ assembly_setting:
231
+ update: "%{user_name} ha actualitzat la configuració de les assemblees"
225
232
  assembly_type:
226
233
  create: "%{user_name} ha creat l'assemblea %{resource_name}"
227
234
  delete: "%{user_name} ha eliminat el component %{resource_name} de l'espai %{space_name}"
@@ -251,6 +258,11 @@ ca:
251
258
  social_handlers: Social
252
259
  title: Informació general
253
260
  visbility: Visibilitat
261
+ assemblies_settings:
262
+ edit:
263
+ update: Actualitzar
264
+ form:
265
+ title: Configuració de les assemblees
254
266
  assemblies_types:
255
267
  form:
256
268
  title: Títol
@@ -310,6 +322,7 @@ ca:
310
322
  home:
311
323
  highlighted_assemblies:
312
324
  active_assemblies: Assemblees actives
325
+ assemblies_button_title: Enllaç a la pàgina d'Assemblees mostrant totes les assemblees
313
326
  see_all_assemblies: Veure totes les assemblees
314
327
  user_profile:
315
328
  member_of:
@@ -340,6 +353,7 @@ ca:
340
353
  related_participatory_processes: Processos participatius relacionats
341
354
  scope: Àmbit
342
355
  social_networks: Xarxes socials
356
+ social_networks_title: Compartir aquesta assemblea a
343
357
  target: Qui participa
344
358
  statistics:
345
359
  answers_count: Respostes
@@ -351,6 +365,7 @@ ca:
351
365
  meetings_count: Trobades
352
366
  orders_count: Suports
353
367
  pages_count: Pàgines
368
+ posts_count: Publicacions
354
369
  projects_count: Projectes
355
370
  proposals_count: Propostes
356
371
  results_count: Resultats
@@ -362,6 +377,24 @@ ca:
362
377
  designated_on: Designat a
363
378
  index:
364
379
  title: Membres
380
+ conferences:
381
+ pages:
382
+ home:
383
+ highlighted_conferences:
384
+ conferences_button_title: Enllaç a la pàgina de Jornades mostrant totes les jornades
385
+ events:
386
+ assemblies:
387
+ create_assembly_member:
388
+ email_intro: Una administradora de la assemblea <a href="%{resource_url}">%{resource_name}</a> t'ha afegit com a un dels seus membres.
389
+ email_outro: Reps aquesta notificació perquè t'han convidat a una assemblea. Entra en <a href="%{resource_path}">assembly page</a> per a contribuir-hi!
390
+ email_subject: T'han convidat a ser membre de l'assemblea %{resource_name}!
391
+ notification_title: T'han registrat com a membre de l'assemblea <a href="%{resource_path}">%{resource_name}</a>. Entra a <a href="%{resource_path}">assembly page</a> per a contribuir-hi!
392
+ assembly:
393
+ role_assigned:
394
+ email_intro: T'han assignat el rol de %{role} a l'assemblea "%{resource_title}".
395
+ email_outro: Reps aquesta notificació perquè se t'ha assignat el rol de %{role} a l'assemblea "%{resource_title}".
396
+ email_subject: Se t'ha assignat el rol de %{role} a "%{resource_title}".
397
+ notification_title: Se t'ha assignat el rol de %{role} a l'assemblea <a href="%{resource_url}">%{resource_title}</a>.
365
398
  help:
366
399
  participatory_spaces:
367
400
  assemblies:
@@ -381,6 +414,19 @@ ca:
381
414
  description: Nombre d'assemblees creades
382
415
  object: assemblees
383
416
  title: Assemblees
417
+ pages:
418
+ home:
419
+ hero:
420
+ participate_title: Participa als processos de la plataforma
421
+ sub_hero:
422
+ register_title: Registra't per crear un compte a la plataforma
423
+ participatory_processes:
424
+ pages:
425
+ home:
426
+ highlighted_processes:
427
+ processes_button_title: Enllaç a la pàgina de Processos mostrant tots els processos
428
+ show:
429
+ related_assemblies: Assemblees relacionades
384
430
  errors:
385
431
  messages:
386
432
  cannot_be_blank: no es pot estar en blanc