decidim-accountability 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +46 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/config/decidim_accountability_admin_manifest.js +1 -0
  5. data/app/assets/config/decidim_accountability_manifest.js +1 -0
  6. data/app/assets/images/decidim/accountability/icon.svg +1 -0
  7. data/app/assets/javascripts/decidim/accountability/accountability.js.es6 +10 -0
  8. data/app/assets/javascripts/decidim/accountability/admin/accountability_admin.js +8 -0
  9. data/app/assets/stylesheets/decidim/accountability/_accountability.scss +1 -0
  10. data/app/assets/stylesheets/decidim/accountability/accountability/_cards.scss +13 -0
  11. data/app/assets/stylesheets/decidim/accountability/accountability/_categories.scss +109 -0
  12. data/app/assets/stylesheets/decidim/accountability/accountability/_lines_breadcrumb.scss +29 -0
  13. data/app/assets/stylesheets/decidim/accountability/accountability/_results.scss +144 -0
  14. data/app/commands/decidim/accountability/admin/create_result.rb +72 -0
  15. data/app/commands/decidim/accountability/admin/create_status.rb +42 -0
  16. data/app/commands/decidim/accountability/admin/create_timeline_entry.rb +40 -0
  17. data/app/commands/decidim/accountability/admin/update_result.rb +80 -0
  18. data/app/commands/decidim/accountability/admin/update_status.rb +46 -0
  19. data/app/commands/decidim/accountability/admin/update_template_texts.rb +47 -0
  20. data/app/commands/decidim/accountability/admin/update_timeline_entry.rb +44 -0
  21. data/app/controllers/decidim/accountability/admin/application_controller.rb +15 -0
  22. data/app/controllers/decidim/accountability/admin/imports_controller.rb +30 -0
  23. data/app/controllers/decidim/accountability/admin/results_controller.rb +84 -0
  24. data/app/controllers/decidim/accountability/admin/statuses_controller.rb +70 -0
  25. data/app/controllers/decidim/accountability/admin/template_texts_controller.rb +38 -0
  26. data/app/controllers/decidim/accountability/admin/timeline_entries_controller.rb +75 -0
  27. data/app/controllers/decidim/accountability/application_controller.rb +13 -0
  28. data/app/controllers/decidim/accountability/result_widgets_controller.rb +19 -0
  29. data/app/controllers/decidim/accountability/results_controller.rb +77 -0
  30. data/app/forms/decidim/accountability/admin/result_form.rb +74 -0
  31. data/app/forms/decidim/accountability/admin/status_form.rb +21 -0
  32. data/app/forms/decidim/accountability/admin/template_texts_form.rb +19 -0
  33. data/app/forms/decidim/accountability/admin/timeline_entry_form.rb +20 -0
  34. data/app/helpers/decidim/accountability/application_helper.rb +50 -0
  35. data/app/models/decidim/accountability/application_record.rb +10 -0
  36. data/app/models/decidim/accountability/result.rb +66 -0
  37. data/app/models/decidim/accountability/status.rb +18 -0
  38. data/app/models/decidim/accountability/template_texts.rb +17 -0
  39. data/app/models/decidim/accountability/timeline_entry.rb +11 -0
  40. data/app/services/decidim/accountability/csv_exporter.rb +77 -0
  41. data/app/services/decidim/accountability/csv_importer.rb +106 -0
  42. data/app/services/decidim/accountability/result_search.rb +40 -0
  43. data/app/services/decidim/accountability/result_stats_calculator.rb +52 -0
  44. data/app/services/decidim/accountability/results_calculator.rb +34 -0
  45. data/app/views/decidim/accountability/admin/imports/new.html.erb +47 -0
  46. data/app/views/decidim/accountability/admin/results/_form.html.erb +70 -0
  47. data/app/views/decidim/accountability/admin/results/edit.html.erb +9 -0
  48. data/app/views/decidim/accountability/admin/results/index.html.erb +52 -0
  49. data/app/views/decidim/accountability/admin/results/new.html.erb +9 -0
  50. data/app/views/decidim/accountability/admin/shared/_subnav.html.erb +3 -0
  51. data/app/views/decidim/accountability/admin/statuses/_form.html.erb +23 -0
  52. data/app/views/decidim/accountability/admin/statuses/edit.html.erb +8 -0
  53. data/app/views/decidim/accountability/admin/statuses/index.html.erb +45 -0
  54. data/app/views/decidim/accountability/admin/statuses/new.html.erb +8 -0
  55. data/app/views/decidim/accountability/admin/template_texts/_form.html.erb +30 -0
  56. data/app/views/decidim/accountability/admin/template_texts/edit.html.erb +8 -0
  57. data/app/views/decidim/accountability/admin/timeline_entries/_form.html.erb +15 -0
  58. data/app/views/decidim/accountability/admin/timeline_entries/edit.html.erb +8 -0
  59. data/app/views/decidim/accountability/admin/timeline_entries/index.html.erb +41 -0
  60. data/app/views/decidim/accountability/admin/timeline_entries/new.html.erb +8 -0
  61. data/app/views/decidim/accountability/result_widgets/show.html.erb +2 -0
  62. data/app/views/decidim/accountability/results/_home_categories.html.erb +73 -0
  63. data/app/views/decidim/accountability/results/_home_header.html.erb +24 -0
  64. data/app/views/decidim/accountability/results/_linked_results.html.erb +12 -0
  65. data/app/views/decidim/accountability/results/_nav_breadcrumb.html.erb +29 -0
  66. data/app/views/decidim/accountability/results/_results_leaf.html.erb +45 -0
  67. data/app/views/decidim/accountability/results/_results_parent.html.erb +32 -0
  68. data/app/views/decidim/accountability/results/_scope_filters.html.erb +14 -0
  69. data/app/views/decidim/accountability/results/_search.html.erb +12 -0
  70. data/app/views/decidim/accountability/results/_show_leaf.html.erb +79 -0
  71. data/app/views/decidim/accountability/results/_show_parent.html.erb +25 -0
  72. data/app/views/decidim/accountability/results/_stats.html.erb +11 -0
  73. data/app/views/decidim/accountability/results/_stats_box.html.erb +36 -0
  74. data/app/views/decidim/accountability/results/_tags.html.erb +10 -0
  75. data/app/views/decidim/accountability/results/_timeline.html.erb +24 -0
  76. data/app/views/decidim/accountability/results/home.html.erb +9 -0
  77. data/app/views/decidim/accountability/results/index.html.erb +19 -0
  78. data/app/views/decidim/accountability/results/index.js.erb +2 -0
  79. data/app/views/decidim/accountability/results/show.html.erb +14 -0
  80. data/config/i18n-tasks.yml +10 -0
  81. data/config/locales/ca.yml +190 -0
  82. data/config/locales/en.yml +190 -0
  83. data/config/locales/es.yml +190 -0
  84. data/config/locales/eu.yml +79 -0
  85. data/config/locales/fi.yml +77 -0
  86. data/db/migrate/20170425154712_create_accountability_statuses.rb +13 -0
  87. data/db/migrate/20170426104125_create_accountability_results.rb +22 -0
  88. data/db/migrate/20170508104902_add_description_and_progress_to_statuses.rb +6 -0
  89. data/db/migrate/20170508161109_create_template_texts.rb +14 -0
  90. data/db/migrate/20170606102902_add_index_to_accountability_results_on_external_id.rb +5 -0
  91. data/db/migrate/20170620154712_create_accountability_timeline_entries.rb +13 -0
  92. data/db/migrate/20170623094200_migrate_accountability_results_category.rb +13 -0
  93. data/db/migrate/20170623144902_add_children_counter_cache_to_results.rb +5 -0
  94. data/lib/decidim/accountability.rb +12 -0
  95. data/lib/decidim/accountability/admin.rb +10 -0
  96. data/lib/decidim/accountability/admin_engine.rb +32 -0
  97. data/lib/decidim/accountability/feature.rb +86 -0
  98. data/lib/decidim/accountability/list_engine.rb +27 -0
  99. data/lib/decidim/accountability/test/factories.rb +45 -0
  100. metadata +238 -0
@@ -0,0 +1,32 @@
1
+ <div class="title-action">
2
+ <h2 id="results-count" class="title-action__title section-heading">
3
+ <%= heading_parent_level_results(total_count) %>
4
+ </h2>
5
+ </div>
6
+
7
+ <div class="row">
8
+ <div id="results" class="columns">
9
+ <div class="card card--action card--list">
10
+ <% results.each do |result| %>
11
+ <div class="card--list__item">
12
+ <%= icon "proposals", class: "card--list__icon", remove_icon_class: true %>
13
+
14
+ <%= link_to result, class: "card--list__text card__link card__link--block" do %>
15
+ <h5 class="card--list__heading">
16
+ <%= translated_attribute result.title %>
17
+ </h5>
18
+
19
+ <span class="text-small"><%= heading_leaf_level_results(result.children.count) %></span>
20
+ <% end %>
21
+
22
+ <div class="card--list__data">
23
+ <span class="card--list__data__number"><%= display_percentage result.progress %></span>
24
+ </div>
25
+ </div>
26
+ <% end %>
27
+ </div>
28
+ <%= decidim_paginate results, order_start_time: params[:order_start_time], scope_id: params[:scope_id] %>
29
+ </div>
30
+ </div>
31
+
32
+
@@ -0,0 +1,14 @@
1
+ <div class="scope-filters section">
2
+ <% if current_organization.scopes.any? && !current_participatory_process.scope %>
3
+ <div><%= t('results.filters.scopes', scope: "decidim.accountability") %></div>
4
+
5
+ <ul class="tags tags--action">
6
+ <li <%= active_class_if_current(nil) %>><%= link_to t("results.filters.all", scope: "decidim.accountability"), url_for(filter: { category_id: category.try(:id) }) %></li>
7
+ <li <%= active_class_if_current("global") %>><%= link_to t("results.filters.global", scope: "decidim.accountability"), url_for(filter: { scope_id: "global", category_id: category.try(:id) }) %></li>
8
+
9
+ <% current_organization.scopes.each do |scope| %>
10
+ <li <%= active_class_if_current(scope.id) %>><%= link_to scope.name, url_for(filter: { scope_id: scope.id, category_id: category.try(:id) }) %></li>
11
+ <% end %>
12
+ </ul>
13
+ <% end %>
14
+ </div>
@@ -0,0 +1,12 @@
1
+ <%= form_tag results_path, method: :get do %>
2
+ <div class="filters__search">
3
+ <div class="input-group">
4
+ <%= search_field_tag "filter[search_text]", nil, label: false, class: "input-group-field", placeholder: t('.search'), value: "" %>
5
+ <div class="input-group-button">
6
+ <button type="submit" class="button button--muted">
7
+ <%= icon "magnifying-glass", aria_label: t('.search') %>
8
+ </button>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ <% end %>
@@ -0,0 +1,79 @@
1
+ <div class="row accountability result-view">
2
+ <div class="small-12 columns">
3
+ <%= render partial: "decidim/accountability/results/nav_breadcrumb", locals: { category: result.parent.try(:category) || result.category } %>
4
+ </div>
5
+ <div class="small-12 columns">
6
+ <div class="title">
7
+ <%= icon("proposals", class: "icon", aria_label: t("models.result.fields.title", scope: "decidim.accountability"), role: "img") %>
8
+ <h2 class="heading2"><%= translated_attribute result.title %></h2>
9
+ </div>
10
+
11
+ <div class="row">
12
+ <div class="columns section mediumlarge-3 mediumlarge-push-9">
13
+ <div class="progress-level">
14
+ <div class="progress-label">
15
+ <span class="progress-text"><%= t("models.result.fields.progress", scope: "decidim.accountability") %>:</span>
16
+ <span class="progress-figure">
17
+ <%= display_percentage result.progress %>
18
+ </span>
19
+ </div>
20
+
21
+ <div class="progress">
22
+ <div class="progress-meter" style="width:<%= result.progress %>%"></div>
23
+ </div>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="columns mediumlarge-9 mediumlarge-pull-3">
28
+ <div class="section">
29
+ <div class="result-meta row">
30
+ <% if result.start_date %>
31
+ <div class="result-meta--label medium-2 columns"><%= t("models.result.fields.start_date", scope: "decidim.accountability") %></div>
32
+ <div class="result-meta--data medium-10 columns"><%= result.start_date %></div>
33
+ <% end %>
34
+ </div>
35
+
36
+ <div class="result-meta row">
37
+ <% if result.end_date %>
38
+ <div class="result-meta--label medium-2 columns"><%= t("models.result.fields.end_date", scope: "decidim.accountability") %></div>
39
+ <div class="result-meta--data medium-10 columns"><%= result.end_date %></div>
40
+ <% end %>
41
+ </div>
42
+
43
+ <div class="result-meta row">
44
+ <% if result.status %>
45
+ <div class="result-meta--label medium-2 columns"><%= t("models.result.fields.status", scope: "decidim.accountability") %></div>
46
+ <div class="result-meta--data medium-10 columns"><%= translated_attribute(result.status.name) %></div>
47
+ <% end %>
48
+ </div>
49
+
50
+ <div class="result-meta row">
51
+ <% if result.status && translated_attribute(result.status.description).present? %>
52
+ <div class="result-meta--label medium-2 columns"><%= t("models.status.fields.description", scope: "decidim.accountability") %></div>
53
+ <div class="result-meta--data medium-10 columns"><%= translated_attribute(result.status.description) %></div>
54
+ <% end %>
55
+ </div>
56
+ </div>
57
+ </div>
58
+
59
+ <hr>
60
+
61
+ <div class="small-12 mediumlarge-8 large-9 columns">
62
+ <div class="section result-description">
63
+ <%== translated_attribute result.description %>
64
+ <%= render partial: "tags", locals: { result: result } %>
65
+ </div>
66
+ </div>
67
+
68
+
69
+
70
+ <%= render partial: "stats_box" %>
71
+
72
+ <%= render partial: "timeline", locals: { result: result } if result.timeline_entries.any? %>
73
+ </div>
74
+ </div>
75
+
76
+ <%= render partial: "stats" %>
77
+ </div>
78
+
79
+ <%= comments_for result %>
@@ -0,0 +1,25 @@
1
+ <div class="row accountability">
2
+ <div class="small-12 columns">
3
+ <%= render partial: "decidim/accountability/results/nav_breadcrumb", locals: { category: result.try(:category) } %>
4
+ </div>
5
+
6
+ <div class="small-12 columns">
7
+ <h2 class="heading2"><%= translated_attribute result.title %></h2>
8
+
9
+ <div class="small-12 medium-8 column row end">
10
+ <div class="section">
11
+ <div class="description">
12
+ <%== translated_attribute result.description %>
13
+ </div>
14
+ <%= render partial: "tags", locals: { result: result } %>
15
+ </div>
16
+ </div>
17
+
18
+ <%= render partial: "results_leaf", locals: { results: result.children.page(1).per(result.children_count), total_count: result.children_count } %>
19
+
20
+ </div>
21
+
22
+ <%= render partial: "stats" %>
23
+
24
+ <%= comments_for result %>
25
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="small-12 columns section">
2
+ <div class="row">
3
+ <div class="small-12 medium-9 columns section">
4
+ <%= linked_resources_for result, :proposals, "included_proposals" %>
5
+ </div>
6
+
7
+ <div class="small-12 medium-9 columns end">
8
+ <%= linked_resources_for result, :meetings, "meetings_through_proposals" %>
9
+ </div>
10
+ </div>
11
+ </div>
@@ -0,0 +1,36 @@
1
+ <div class="columns section view-side mediumlarge-4 large-3 end">
2
+ <% if result.linked_resources(:proposals, "included_proposals").any? %>
3
+ <div class="card extra line-stats">
4
+ <div class="definition-data">
5
+ <div class="definition-data__item definition-data__item--double">
6
+ <span class="definition-data__title"><%= t("results.show.stats.proposals", scope: "decidim.accountability") %></span>
7
+ <span class="definition-data__number"><%= stats_calculator.proposals_count %></span>
8
+ </div>
9
+ <div class="definition-data__item definition-data__item--double">
10
+ <span class="definition-data__title"><%= t("results.show.stats.meetings", scope: "decidim.accountability") %></span>
11
+ <span class="definition-data__number"><%= stats_calculator.meetings_count %></span>
12
+ </div>
13
+ <div class="definition-data__item definition-data__item--double">
14
+ <span class="definition-data__title"><%= t("results.show.stats.comments", scope: "decidim.accountability") %></span>
15
+ <span class="definition-data__number"><%= stats_calculator.comments_count %></span>
16
+ </div>
17
+ <div class="definition-data__item definition-data__item--double">
18
+ <span class="definition-data__title"><%= t("results.show.stats.attendees", scope: "decidim.accountability") %></span>
19
+ <span class="definition-data__number"><%= stats_calculator.attendees_count %></span>
20
+ </div>
21
+ <div class="definition-data__item definition-data__item--double">
22
+ <span class="definition-data__title"><%= t("results.show.stats.votes", scope: "decidim.accountability") %></span>
23
+ <span class="definition-data__number"><%= stats_calculator.votes_count %></span>
24
+ </div>
25
+ <div class="definition-data__item definition-data__item--double">
26
+ <span class="definition-data__title"><%= t("results.show.stats.contributions", scope: "decidim.accountability") %></span>
27
+ <span class="definition-data__number"><%= stats_calculator.contributions_count %></span>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <% end %>
32
+
33
+ <%= feature_reference(result) %>
34
+ <%= render partial: "decidim/shared/share_modal" %>
35
+ <%= embed_modal_for result_result_widget_url(result, format: :js) %>
36
+ </div>
@@ -0,0 +1,10 @@
1
+ <% if result.category.present? || result.scope.present? %>
2
+ <ul class="tags tags--result" >
3
+ <% if result.category.present? %>
4
+ <li><%= link_to translated_attribute(result.category.name), results_path(filter: { category_id: result.category.id }) %></li>
5
+ <% end %>
6
+ <% if !current_participatory_process.scope && result.scope.present? %>
7
+ <li><%= link_to result.scope.name, results_path(filter: { scope_id: [result.scope.id] }) %></li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
@@ -0,0 +1,24 @@
1
+ <div class="small-12 columns">
2
+ <div class="section">
3
+ <h4 class="section-heading"><%= t(".title") %></h4>
4
+ <ol class="timeline">
5
+ <% result.timeline_entries.each_with_index do |timeline_entry, i| %>
6
+ <li class="timeline__item ">
7
+ <div class="timeline__phase">
8
+ <span class="timeline__phase__number"><%= i + 1 %></span>
9
+ </div>
10
+ <div class="timeline__info">
11
+ <div class="timeline__description">
12
+ <span class="timeline__date text-small">
13
+ <%= timeline_entry.entry_date %>
14
+ </span>
15
+ <h6 class="timeline__title">
16
+ <%= translated_attribute timeline_entry.description %>
17
+ </h6>
18
+ </div>
19
+ </div>
20
+ </li>
21
+ <% end %>
22
+ </ol>
23
+ </div>
24
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="row accountability">
2
+ <div class="small-12 columns">
3
+ <%= render partial: "home_header" %>
4
+ <%= render partial: "scope_filters", locals: { url_method: :root_path} %>
5
+ <%= render partial: "home_categories" %>
6
+ </div>
7
+ </div>
8
+
9
+ <%= javascript_include_tag "decidim/accountability/accountability" %>
@@ -0,0 +1,19 @@
1
+ <div class="row accountability">
2
+ <div class="small-12 columns">
3
+ <%= render partial: "scope_filters", locals: { url_method: :results_path} %>
4
+ </div>
5
+
6
+ <div class="small-12 columns">
7
+ <%= render partial: "nav_breadcrumb", locals: { category: category, result: nil} %>
8
+ </div>
9
+
10
+ <div class="small-12 columns end">
11
+ <% if results.any?{|r| r.children_count > 0 } %>
12
+ <%= render partial: "results_parent", locals: { results: results, total_count: results.total_count } %>
13
+ <% else %>
14
+ <%= render partial: "results_leaf", locals: { results: results, total_count: results.total_count } %>
15
+ <% end %>
16
+ </div>
17
+ </div>
18
+
19
+ <%= javascript_include_tag("decidim/filters") %>
@@ -0,0 +1,2 @@
1
+ var $results = $('#results');
2
+ $results.html('<%= j(render partial: "results") %>');
@@ -0,0 +1,14 @@
1
+ <% add_decidim_meta_tags({
2
+ description: translated_attribute(result.description),
3
+ title: translated_attribute(result.title),
4
+ url: result_url(result.id)
5
+ }) %>
6
+
7
+ <% if result.children.any? %>
8
+ <%= render partial: "show_parent", locals: { result: result } %>
9
+ <% else %>
10
+ <%= render partial: "show_leaf", locals: { result: result } %>
11
+ <% end %>
12
+
13
+ <%= javascript_include_tag "decidim/proposals/social_share" %>
14
+ <%= stylesheet_link_tag "decidim/proposals/social_share" %>
@@ -0,0 +1,10 @@
1
+ base_locale: en
2
+ locales: [en, es, ca]
3
+ ignore_unused:
4
+ - "decidim.features.accountability.name"
5
+ - "decidim.features.accountability.settings.*"
6
+ - "decidim.resource_links.*"
7
+ - "decidim.accountability.models.project.valid_statuses.*"
8
+ - activerecord.attributes.*
9
+ - activemodel.attributes.*
10
+ - activemodel.errors.*
@@ -0,0 +1,190 @@
1
+ ---
2
+ ca:
3
+ activemodel:
4
+ attributes:
5
+ result:
6
+ decidim_accountability_status_id: Estat
7
+ decidim_category_id: Categoria
8
+ decidim_scope_id: Àmbit
9
+ description: Descripció
10
+ end_date: Fi
11
+ external_id: External ID
12
+ progress: Progrés
13
+ proposal_ids: Propostes incloses
14
+ start_date: Inici
15
+ title: Títol
16
+ status:
17
+ description: Descripció
18
+ key: Key
19
+ name: Nom
20
+ progress: Progrés
21
+ template_texts:
22
+ categories_label: Nom per "Categories"
23
+ heading_leaf_level_results: Nom per "Projectes"
24
+ heading_parent_level_results: Nom per "Resultats"
25
+ intro: Text d'introducció
26
+ subcategories_label: Nom per "Subcategories"
27
+ timeline_entry:
28
+ description: Descripció
29
+ entry_date: Data
30
+ errors:
31
+ models:
32
+ result:
33
+ attributes:
34
+ end_date:
35
+ invalid_date: no vàlida
36
+ start_date:
37
+ invalid_date: no vàlida
38
+ decidim:
39
+ accountability:
40
+ actions:
41
+ confirm_destroy: Estàs segur que vols suprimir aquest %{name}?
42
+ destroy: Esborra
43
+ edit: Edita
44
+ new: Nou/va %{name}
45
+ preview: Previsualitzar
46
+ timeline_entries: Evolució del projecte
47
+ title: Accions
48
+ admin:
49
+ imports:
50
+ create:
51
+ invalid: Hi ha hagut un problema en importar aquest fitxer
52
+ not_found: No s'ha trobat un resultat amb result_id %{result_id}
53
+ success: El fitxer ha estat importat correctament
54
+ new:
55
+ errors: Errors
56
+ import: Import
57
+ row_number: Fila
58
+ title: Importar resultats des de CSV
59
+ models:
60
+ result:
61
+ name: Resultat
62
+ status:
63
+ name: Estat
64
+ timeline_entry:
65
+ name: Element
66
+ results:
67
+ create:
68
+ invalid: Hi ha hagut un problema en crear aquest resultat
69
+ success: El resultat ha estat creat correctament
70
+ destroy:
71
+ success: El resultat ha estat eliminat correctament
72
+ edit:
73
+ title: Edita resultat
74
+ update: Actualitza resultat
75
+ index:
76
+ title: Resultats
77
+ new:
78
+ create: Crea resultat
79
+ title: Nou resultat
80
+ update:
81
+ invalid: Hi ha hagut un problema en actualitzar aquest resultat
82
+ success: El resultat ha estat actualitzat correctament
83
+ shared:
84
+ subnav:
85
+ import_csv: Importa CSV
86
+ statuses: Estats
87
+ template_texts: Portada
88
+ statuses:
89
+ create:
90
+ invalid: Hi ha hagut un problema en crear aquest estat
91
+ success: El estat ha estat creat correctament
92
+ destroy:
93
+ success: El estat ha estat eliminat correctament
94
+ edit:
95
+ title: Edita estat
96
+ update: Actualitza estat
97
+ index:
98
+ title: Estats
99
+ new:
100
+ create: Crea estat
101
+ title: Nou estat
102
+ update:
103
+ invalid: Hi ha hagut un problema en actualitzar aquest estat
104
+ success: El estat ha estat actualitzat correctament
105
+ template_texts:
106
+ edit:
107
+ title: Actualitza texts
108
+ update: Actualitza texts
109
+ form:
110
+ title: Actualitza texts
111
+ update:
112
+ invalid: Hi ha hagut un problema en actualitzar les texts
113
+ success: Texts ha estat actualitzat correctament
114
+ timeline_entries:
115
+ create:
116
+ invalid: Hi ha hagut un problema en crear aquest element
117
+ success: El element ha estat creat correctament
118
+ destroy:
119
+ success: El element ha estat eliminat correctament
120
+ edit:
121
+ title: Edita element
122
+ update: Actualitza element
123
+ index:
124
+ title: Evolució del projecte
125
+ new:
126
+ create: Crea element
127
+ title: Nou element
128
+ update:
129
+ invalid: Hi ha hagut un problema en actualitzar aquest element
130
+ success: El element ha estat actualitzat correctament
131
+ models:
132
+ result:
133
+ fields:
134
+ end_date: Fi
135
+ progress: Progrés
136
+ start_date: Inici
137
+ status: Estat
138
+ title: Títol
139
+ status:
140
+ fields:
141
+ description: Descripció
142
+ key: Key
143
+ name: Nom
144
+ progress: Progrés
145
+ timeline_entry:
146
+ fields:
147
+ description: Descripció
148
+ entry_date: Data
149
+ results:
150
+ count:
151
+ results_count:
152
+ one: 1 resultat
153
+ other: "%{count} resultats"
154
+ filters:
155
+ all: Tots
156
+ global: Global
157
+ scopes: Àmbits
158
+ home:
159
+ categories_label: Categories
160
+ subcategories_label: Subcategories
161
+ home_header:
162
+ csv_download: Descarregar dades en CSV
163
+ global_status: Estat d'execució global
164
+ nav_breadcrumb:
165
+ global: Execució global
166
+ search:
167
+ search: Cerca actuacions
168
+ show:
169
+ stats:
170
+ attendees: Assistents
171
+ comments: Comentaris
172
+ contributions: Aportacions
173
+ meetings: Trobades
174
+ proposals: Propostes
175
+ votes: Suports
176
+ timeline:
177
+ title: Evolució del projecte
178
+ features:
179
+ accountability:
180
+ name: Seguiment
181
+ settings:
182
+ global:
183
+ comments_enabled: Comentaris habilitats
184
+ step:
185
+ comments_blocked: Comentaris bloquejats
186
+ resource_links:
187
+ included_proposals:
188
+ result_proposals: Propostes incloses en aquest resultat
189
+ meetings_through_proposals:
190
+ result_meetings: Trobades relacionades