decidim-budgets 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/commands/decidim/budgets/add_line_item.rb +9 -1
- data/app/controllers/decidim/budgets/admin/projects_controller.rb +13 -1
- data/app/forms/decidim/budgets/admin/project_form.rb +5 -1
- data/app/models/decidim/budgets/order.rb +3 -0
- data/app/models/decidim/budgets/project.rb +9 -1
- data/app/services/decidim/budgets/project_search.rb +0 -5
- data/app/views/decidim/budgets/admin/projects/_form.html.erb +5 -3
- data/app/views/decidim/budgets/admin/projects/index.html.erb +9 -0
- data/app/views/decidim/budgets/line_items/update_budget.js.erb +1 -0
- data/app/views/decidim/budgets/projects/_filters.html.erb +2 -2
- data/app/views/decidim/budgets/projects/_filters_small_view.html.erb +18 -0
- data/app/views/decidim/budgets/projects/_project.html.erb +17 -2
- data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +2 -2
- data/app/views/decidim/budgets/projects/_tags.html.erb +1 -1
- data/app/views/decidim/budgets/projects/index.html.erb +2 -1
- data/app/views/decidim/budgets/projects/show.html.erb +7 -1
- data/config/i18n-tasks.yml +1 -0
- data/config/locales/ca.yml +18 -3
- data/config/locales/en.yml +15 -0
- data/config/locales/es.yml +17 -2
- data/config/locales/eu.yml +97 -1
- data/config/locales/fi.yml +123 -0
- data/db/migrate/20170215132708_add_reference_to_projects.rb +7 -0
- data/lib/decidim/budgets/feature.rb +4 -2
- data/lib/decidim/budgets/seeds/Exampledocument.pdf +0 -0
- data/lib/decidim/budgets/seeds/city.jpeg +0 -0
- data/lib/decidim/budgets/test/factories.rb +21 -1
- metadata +17 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3e2656e58b1d375c6ed9cc32d4af823549aa19a
|
4
|
+
data.tar.gz: 1e3664e67a65acce779cf361bbd58dd305929b6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d096815f3bf0747eea89df09a2a99b196451a826110015fcad984fd8af367b6eb3d80a7d3cbf64f65cb0c2e0768cce5034de72b3c57344293f45ea4007eb7bc2
|
7
|
+
data.tar.gz: 25da824f93001da298b80ecfaa5103a17d1aeee9a8f2478e383eff5ce0cff34a01d1afef9b5960f6e3023622222414929af0ed9543c1f112b3e62c5c87280bd5
|
@@ -22,7 +22,7 @@ module Decidim
|
|
22
22
|
# Returns nothing.
|
23
23
|
def call
|
24
24
|
transaction do
|
25
|
-
return broadcast(:invalid) if order.checked_out?
|
25
|
+
return broadcast(:invalid) if votes_disabled? || order.checked_out?
|
26
26
|
add_line_item
|
27
27
|
broadcast(:ok, order)
|
28
28
|
end
|
@@ -40,6 +40,14 @@ module Decidim
|
|
40
40
|
order.save!
|
41
41
|
end
|
42
42
|
end
|
43
|
+
|
44
|
+
def feature
|
45
|
+
@project.feature
|
46
|
+
end
|
47
|
+
|
48
|
+
def votes_disabled?
|
49
|
+
!feature.active_step_settings.votes_enabled?
|
50
|
+
end
|
43
51
|
end
|
44
52
|
end
|
45
53
|
end
|
@@ -4,7 +4,7 @@ module Decidim
|
|
4
4
|
module Admin
|
5
5
|
# This controller allows an admin to manage projects from a Participatory Process
|
6
6
|
class ProjectsController < Admin::ApplicationController
|
7
|
-
helper_method :projects
|
7
|
+
helper_method :projects, :finished_orders, :pending_orders
|
8
8
|
|
9
9
|
def new
|
10
10
|
@form = form(ProjectForm).instance
|
@@ -60,6 +60,18 @@ module Decidim
|
|
60
60
|
@projects ||= Project.where(feature: current_feature)
|
61
61
|
end
|
62
62
|
|
63
|
+
def orders
|
64
|
+
@orders ||= Order.where(feature: current_feature)
|
65
|
+
end
|
66
|
+
|
67
|
+
def pending_orders
|
68
|
+
orders.pending
|
69
|
+
end
|
70
|
+
|
71
|
+
def finished_orders
|
72
|
+
orders.finished
|
73
|
+
end
|
74
|
+
|
63
75
|
def project
|
64
76
|
@project ||= projects.find(params[:id])
|
65
77
|
end
|
@@ -26,12 +26,16 @@ module Decidim
|
|
26
26
|
self.proposal_ids = model.linked_resources(:proposals, "included_proposals").pluck(:id)
|
27
27
|
end
|
28
28
|
|
29
|
+
def process_scope
|
30
|
+
current_feature.participatory_process.scope
|
31
|
+
end
|
32
|
+
|
29
33
|
def proposals
|
30
34
|
@proposals ||= Decidim.find_resource_manifest(:proposals).try(:resource_scope, context.current_feature)&.order(title: :asc)&.pluck(:title, :id)
|
31
35
|
end
|
32
36
|
|
33
37
|
def scope
|
34
|
-
@scope ||=
|
38
|
+
@scope ||= process_scope || current_organization.scopes.where(id: decidim_scope_id).first
|
35
39
|
end
|
36
40
|
|
37
41
|
def category
|
@@ -24,6 +24,9 @@ module Decidim
|
|
24
24
|
less_than_or_equal_to: :maximum_budget
|
25
25
|
}
|
26
26
|
|
27
|
+
scope :finished, -> { where.not(checked_out_at: nil) }
|
28
|
+
scope :pending, -> { where(checked_out_at: nil) }
|
29
|
+
|
27
30
|
# Public: Returns the sum of project budgets
|
28
31
|
def total_budget
|
29
32
|
projects.to_a.sum(&:budget)
|
@@ -9,9 +9,12 @@ module Decidim
|
|
9
9
|
include Decidim::HasScope
|
10
10
|
include Decidim::HasCategory
|
11
11
|
include Decidim::HasAttachments
|
12
|
+
include Decidim::HasReference
|
12
13
|
include Decidim::Comments::Commentable
|
13
14
|
|
14
15
|
feature_manifest_name "budgets"
|
16
|
+
has_many :line_items, class_name: Decidim::Budgets::LineItem, foreign_key: "decidim_project_id", dependent: :destroy
|
17
|
+
has_many :orders, through: :line_items, foreign_key: "decidim_project_id", class_name: "Decidim::Budgets::Order"
|
15
18
|
|
16
19
|
# Public: Overrides the `commentable?` Commentable concern method.
|
17
20
|
def commentable?
|
@@ -20,13 +23,18 @@ module Decidim
|
|
20
23
|
|
21
24
|
# Public: Overrides the `accepts_new_comments?` Commentable concern method.
|
22
25
|
def accepts_new_comments?
|
23
|
-
|
26
|
+
commentable? && !feature.active_step_settings.comments_blocked
|
24
27
|
end
|
25
28
|
|
26
29
|
# Public: Overrides the `comments_have_votes?` Commentable concern method.
|
27
30
|
def comments_have_votes?
|
28
31
|
true
|
29
32
|
end
|
33
|
+
|
34
|
+
# Public: Returns the number of times an specific project have been checked out.
|
35
|
+
def confirmed_orders_count
|
36
|
+
orders.finished.count
|
37
|
+
end
|
30
38
|
end
|
31
39
|
end
|
32
40
|
end
|
@@ -19,11 +19,6 @@ module Decidim
|
|
19
19
|
.or(query.where(localized_search_text_in(:description), text: "%#{search_text}%"))
|
20
20
|
end
|
21
21
|
|
22
|
-
# Handle the scope_id filter
|
23
|
-
def search_scope_id
|
24
|
-
query.where(decidim_scope_id: scope_id)
|
25
|
-
end
|
26
|
-
|
27
22
|
# Returns the random projects for the current page.
|
28
23
|
def results
|
29
24
|
@projects ||= Project.transaction do
|
@@ -10,9 +10,11 @@
|
|
10
10
|
<%= form.number_field :budget %>
|
11
11
|
</div>
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
<% if !current_participatory_process.scope %>
|
14
|
+
<div class="field" >
|
15
|
+
<%= form.collection_select :decidim_scope_id, organization_scopes, :id, :name %>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
16
18
|
|
17
19
|
<div class="field" >
|
18
20
|
<%= form.categories_select :decidim_category_id, current_participatory_process.categories, include_blank: true, disable_parents: false %>
|
@@ -1,5 +1,10 @@
|
|
1
1
|
<h2><%= t(".title") %></h2>
|
2
2
|
|
3
|
+
<dl>
|
4
|
+
<dt><%= t ".finished_orders" %>: </dt><dd><%= finished_orders.count %></dd>
|
5
|
+
<dt><%= t ".pending_orders" %>: </dt><dd><%= pending_orders.count %></dd>
|
6
|
+
</dl>
|
7
|
+
|
3
8
|
<div class="actions title">
|
4
9
|
<%= link_to t("actions.new", scope: "decidim.budgets", name: t("models.project.name", scope: "decidim.budgets.admin")), new_project_path, class: 'new' if can? :manage, current_feature %>
|
5
10
|
</div>
|
@@ -8,6 +13,7 @@
|
|
8
13
|
<thead>
|
9
14
|
<tr>
|
10
15
|
<th><%= t("models.project.fields.title", scope: "decidim.budgets") %></th>
|
16
|
+
<th class="center"><%= t("index.confirmed_orders_count") %></th>
|
11
17
|
<th class="actions"><%= t("actions.title", scope: "decidim.budgets") %></th>
|
12
18
|
</tr>
|
13
19
|
</thead>
|
@@ -17,6 +23,9 @@
|
|
17
23
|
<td>
|
18
24
|
<%= link_to translated_attribute(project.title), decidim_budgets.project_path(id: project, feature_id: current_feature, participatory_process_id: current_participatory_process), target: :blank %><br />
|
19
25
|
</td>
|
26
|
+
<td class='center'>
|
27
|
+
<%= project.confirmed_orders_count %>
|
28
|
+
</td>
|
20
29
|
<td class="actions">
|
21
30
|
<%= link_to t("actions.edit", scope: "decidim.budgets"), edit_project_path(project) if can? :update, current_feature %>
|
22
31
|
<%= link_to t("actions.attachments", scope: "decidim.budgets"), project_attachments_path(project) if can? :update, current_feature %>
|
@@ -11,6 +11,7 @@ morphdom($orderProgress[0], '<%= j(render partial: 'decidim/budgets/projects/ord
|
|
11
11
|
morphdom($budgetConfirm[0], '<%= j(render partial: 'decidim/budgets/projects/budget_confirm') %>')
|
12
12
|
|
13
13
|
$("#order-progress").foundation();
|
14
|
+
$(".budget-summary__selected").foundation();
|
14
15
|
|
15
16
|
if ($projectItem.length > 0) {
|
16
17
|
morphdom($projectItem[0], '<%= j(render partial: 'decidim/budgets/projects/project', locals: { project: project }) %>');
|
@@ -12,8 +12,8 @@
|
|
12
12
|
</div>
|
13
13
|
</div>
|
14
14
|
|
15
|
-
<% if current_organization.scopes.any? %>
|
16
|
-
<%= form.collection_check_boxes :scope_id,
|
15
|
+
<% if current_organization.scopes.any? && !current_participatory_process.scope %>
|
16
|
+
<%= form.collection_check_boxes :scope_id, search_organization_scopes, lambda {|scope| scope.id.to_s}, :name, legend_title: t('.scopes') %>
|
17
17
|
<% end %>
|
18
18
|
|
19
19
|
<% if current_feature.categories.any? %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div class="filters-controls hide-for-mediumlarge">
|
2
|
+
<button data-open="filter-box" class="filters-controls__trigger">
|
3
|
+
<%= t ".filter" %>
|
4
|
+
<%= icon "caret-bottom", class: "icon--small float-right", aria_label: t('.unfold'), role: "img" %>
|
5
|
+
</button>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="reveal" id="filter-box" data-reveal>
|
9
|
+
<div class="reveal__header">
|
10
|
+
<h3 class="reveal__title"><%= t ".filter_by" %>:</h3>
|
11
|
+
<button class="close-button" data-close aria-label="<%= t(".close_modal") %>" type="button">
|
12
|
+
<span aria-hidden="true">×</span>
|
13
|
+
</button>
|
14
|
+
</div>
|
15
|
+
<div class="filters">
|
16
|
+
<%= render partial: "filters" %>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -15,18 +15,28 @@
|
|
15
15
|
<span class="card--list__data__number budget-list__number">
|
16
16
|
<%= budget_to_currency(project.budget) %>
|
17
17
|
</span>
|
18
|
-
<%= action_authorized_button_to "vote", order_line_item_path(project_id: project), method: :delete, remote: true, data: { disable: true, budget: project.budget }, disabled: current_order_checked_out?, class: "button tiny budget--list__action success" do %>
|
18
|
+
<%= action_authorized_button_to "vote", order_line_item_path(project_id: project), method: :delete, remote: true, data: { disable: true, budget: project.budget }, disabled: !current_settings.votes_enabled? || current_order_checked_out?, class: "button tiny budget--list__action success" do %>
|
19
19
|
<%= icon("check", class: "icon--small", aria_label: t('.remove'), role: "img") %>
|
20
20
|
<% end %>
|
21
|
+
<% if current_settings.show_votes? %>
|
22
|
+
<div class="card__support" style="width: 7em">
|
23
|
+
<span><%= t('.count', count: project.confirmed_orders_count) %></span>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
21
26
|
</div>
|
22
27
|
<% else %>
|
23
28
|
<div class="card--list__data budget-list__data">
|
24
29
|
<span class="card--list__data__number budget-list__number">
|
25
30
|
<%= budget_to_currency(project.budget) %>
|
26
31
|
</span>
|
27
|
-
<%= action_authorized_button_to "vote", order_line_item_path(project_id: project), method: :post, remote: true, data: { disable: true, budget: project.budget, add: true }, disabled: current_order_checked_out?, class: "button tiny hollow budget--list__action" do %>
|
32
|
+
<%= action_authorized_button_to "vote", order_line_item_path(project_id: project), method: :post, remote: true, data: { disable: true, budget: project.budget, add: true }, disabled: !current_settings.votes_enabled? || current_order_checked_out?, class: "button tiny hollow budget--list__action" do %>
|
28
33
|
<%= icon("check", class: "icon--small", aria_label: t('.add'), role: "img") %>
|
29
34
|
<% end %>
|
35
|
+
<% if current_settings.show_votes? %>
|
36
|
+
<div class="card__support" style="width: 7em">
|
37
|
+
<span><%= t('.count', count: project.confirmed_orders_count) %></span>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
30
40
|
</div>
|
31
41
|
<% end %>
|
32
42
|
<% else %>
|
@@ -37,6 +47,11 @@
|
|
37
47
|
<a href="#" class="button tiny hollow budget--list__action disabled" data-toggle="loginModal">
|
38
48
|
<%= icon("check", class: "icon--small", aria_label: t('.add'), role: "img") %>
|
39
49
|
</a>
|
50
|
+
<% if current_settings.show_votes? %>
|
51
|
+
<div class="card__support" style="width: 7em">
|
52
|
+
<span><%= t('.count', count: project.confirmed_orders_count) %></span>
|
53
|
+
</div>
|
54
|
+
<% end %>
|
40
55
|
</div>
|
41
56
|
<% end %>
|
42
57
|
</div>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<% if current_user.present? %>
|
2
2
|
<% if current_order && current_order.projects.include?(project) %>
|
3
|
-
<%= action_authorized_button_to "vote", t('.added'), order_line_item_path(project_id: project), method: :delete, remote: true, data: { disable: true, budget: project.budget }, disabled: current_order_checked_out?, class: "button expanded button--sc success budget--list__action" %>
|
3
|
+
<%= action_authorized_button_to "vote", t('.added'), order_line_item_path(project_id: project), method: :delete, remote: true, data: { disable: true, budget: project.budget }, disabled: !current_settings.votes_enabled? || current_order_checked_out?, class: "button expanded button--sc success budget--list__action" %>
|
4
4
|
<% else %>
|
5
|
-
<%= action_authorized_button_to "vote", t('.add'), order_line_item_path(project_id: project), method: :post, remote: true, data: { disable: true, budget: project.budget, add: true }, disabled: current_order_checked_out?, class: "button expanded button--sc budget--list__action" %>
|
5
|
+
<%= action_authorized_button_to "vote", t('.add'), order_line_item_path(project_id: project), method: :post, remote: true, data: { disable: true, budget: project.budget, add: true }, disabled: !current_settings.votes_enabled? || current_order_checked_out?, class: "button expanded button--sc budget--list__action" %>
|
6
6
|
<% end %>
|
7
7
|
<% else %>
|
8
8
|
<button class="button expanded button--sc disabled" data-toggle="loginModal"><%= t('.add') %></button>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<% if project.category.present? %>
|
4
4
|
<li><%= link_to translated_attribute(project.category.name), decidim_budgets.projects_path(filter: { category_id: project.category.id }) %></li>
|
5
5
|
<% end %>
|
6
|
-
<% if project.scope.present? %>
|
6
|
+
<% if project.scope.present? && !current_participatory_process.scope %>
|
7
7
|
<li><%= link_to project.scope.name, decidim_budgets.projects_path(filter: { scope_id: [project.scope.id] }) %></li>
|
8
8
|
<% end %>
|
9
9
|
</ul>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% if current_user.present? %>
|
1
|
+
<% if current_user.present? && current_settings.votes_enabled? %>
|
2
2
|
<div class="row column">
|
3
3
|
<%= render partial: "budget_summary", locals: { include_heading: true } %>
|
4
4
|
</div>
|
@@ -10,6 +10,7 @@
|
|
10
10
|
</div>
|
11
11
|
<div class="row">
|
12
12
|
<div class="columns mediumlarge-4 large-3">
|
13
|
+
<%= render partial: "filters_small_view"%>
|
13
14
|
<div class="card card--secondary show-for-mediumlarge" >
|
14
15
|
<%= render partial: "filters" %>
|
15
16
|
</div>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
) %>
|
5
5
|
|
6
6
|
<div class="row column view-header">
|
7
|
-
<% if current_user.present? %>
|
7
|
+
<% if current_user.present? && current_settings.votes_enabled? %>
|
8
8
|
<%= render partial: "budget_summary", locals: { include_heading: false } %>
|
9
9
|
<% end %>
|
10
10
|
<%= link_to projects_path, class: "muted-link" do %>
|
@@ -22,11 +22,17 @@
|
|
22
22
|
<span class="definition-data__title"><%= t('.budget') %></span>
|
23
23
|
<span class="definition-data__number"><%= budget_to_currency project.budget %></span>
|
24
24
|
</div>
|
25
|
+
<% if current_settings.show_votes? %>
|
26
|
+
<div class="card__support__data">
|
27
|
+
<span><%= t('decidim.budgets.projects.project.count', count: project.confirmed_orders_count) %></span>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
25
30
|
<div id="project-<%= project.id %>-budget-button">
|
26
31
|
<%= render partial: 'project_budget_button', locals: { project: project } %>
|
27
32
|
</div>
|
28
33
|
</div>
|
29
34
|
</div>
|
35
|
+
<%= feature_reference(project) %>
|
30
36
|
</div>
|
31
37
|
<div class="columns mediumlarge-8 mediumlarge-pull-4">
|
32
38
|
<div class="section">
|
data/config/i18n-tasks.yml
CHANGED
data/config/locales/ca.yml
CHANGED
@@ -31,6 +31,8 @@ ca:
|
|
31
31
|
title: Editar projecte
|
32
32
|
update: Actualitzar projecte
|
33
33
|
index:
|
34
|
+
finished_orders: Vots finalitzats
|
35
|
+
pending_orders: Vots en procés
|
34
36
|
title: Projectes
|
35
37
|
new:
|
36
38
|
create: Crear projecte
|
@@ -51,7 +53,7 @@ ca:
|
|
51
53
|
title: Confirmar vot
|
52
54
|
budget_excess:
|
53
55
|
close: Tancar
|
54
|
-
description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o
|
56
|
+
description: Aquest projecte sobrepassa el pressupost màxim i no es pot afegir. Si ho desitges, pots eliminar un projecte ja seleccionat per afegir aquest o donar suport amb les seves preferències.
|
55
57
|
ok: D'acord
|
56
58
|
title: Pressupost superat
|
57
59
|
budget_summary:
|
@@ -61,7 +63,7 @@ ca:
|
|
61
63
|
checked_out:
|
62
64
|
description: Ja has votat pel pressupost. Si has canviat d'idea, pots %{cancel_link}.
|
63
65
|
title: Vot pels pressupostos completat
|
64
|
-
description: En quins projectes creus que hem de destinar el pressupost? Has d'assignar com a mínim %{minimum_budget} als projectes que desitges i
|
66
|
+
description: En quins projectes creus que hem de destinar el pressupost? Has d'assignar com a mínim %{minimum_budget} als projectes que desitges i donar suport amb les teves preferències per definir el pressupost.
|
65
67
|
title: Tu decideixes el pressupost
|
66
68
|
count:
|
67
69
|
projects_count:
|
@@ -71,8 +73,13 @@ ca:
|
|
71
73
|
category: Categoria
|
72
74
|
scopes: Àmbits
|
73
75
|
search: Cerca
|
76
|
+
filters_small_view:
|
77
|
+
close_modal: Tancar finestra
|
78
|
+
filter: Filtra
|
79
|
+
filter_by: Filtra per
|
80
|
+
unfold: Desplegar
|
74
81
|
order_progress:
|
75
|
-
vote:
|
82
|
+
vote: Donar suport
|
76
83
|
order_selected_projects:
|
77
84
|
remove: Esborrar
|
78
85
|
selected_projects:
|
@@ -81,6 +88,9 @@ ca:
|
|
81
88
|
view: Veure
|
82
89
|
project:
|
83
90
|
add: Afegir
|
91
|
+
count:
|
92
|
+
one: 1 suport
|
93
|
+
other: "%{count} suports"
|
84
94
|
remove: Esborrar
|
85
95
|
project_budget_button:
|
86
96
|
add: Afegir
|
@@ -90,6 +100,8 @@ ca:
|
|
90
100
|
view_all_projects: Veure tots els projectes
|
91
101
|
features:
|
92
102
|
budgets:
|
103
|
+
actions:
|
104
|
+
vote: Donar suport
|
93
105
|
name: Pressupostos
|
94
106
|
settings:
|
95
107
|
global:
|
@@ -98,6 +110,7 @@ ca:
|
|
98
110
|
vote_threshold_percent: Percentatge del pressupost mínim per fer el vot
|
99
111
|
step:
|
100
112
|
comments_blocked: Comentaris bloquejats
|
113
|
+
votes_enabled: Suports habilitats
|
101
114
|
orders:
|
102
115
|
checkout:
|
103
116
|
error: S'ha produït un error en processar el teu vot
|
@@ -105,4 +118,6 @@ ca:
|
|
105
118
|
destroy:
|
106
119
|
error: S'ha produït un error en cancel·lar el seu vot
|
107
120
|
success: El seu vot ha estat cancel·lat correctament
|
121
|
+
index:
|
122
|
+
confirmed_orders_count: Nombre de vots
|
108
123
|
total_budget: Pressupost total
|
data/config/locales/en.yml
CHANGED
@@ -32,6 +32,8 @@ en:
|
|
32
32
|
title: Edit project
|
33
33
|
update: Update project
|
34
34
|
index:
|
35
|
+
finished_orders: Finished orders
|
36
|
+
pending_orders: Pending orders
|
35
37
|
title: Projects
|
36
38
|
new:
|
37
39
|
create: Create project
|
@@ -78,6 +80,11 @@ en:
|
|
78
80
|
category: Category
|
79
81
|
scopes: Scopes
|
80
82
|
search: Search
|
83
|
+
filters_small_view:
|
84
|
+
close_modal: Close modal
|
85
|
+
filter: Filter
|
86
|
+
filter_by: Filter by
|
87
|
+
unfold: Unfold
|
81
88
|
order_progress:
|
82
89
|
vote: Vote
|
83
90
|
order_selected_projects:
|
@@ -88,6 +95,9 @@ en:
|
|
88
95
|
view: View
|
89
96
|
project:
|
90
97
|
add: Add
|
98
|
+
count:
|
99
|
+
one: 1 support
|
100
|
+
other: "%{count} supports"
|
91
101
|
remove: Remove
|
92
102
|
project_budget_button:
|
93
103
|
add: Add
|
@@ -97,6 +107,8 @@ en:
|
|
97
107
|
view_all_projects: View all projects
|
98
108
|
features:
|
99
109
|
budgets:
|
110
|
+
actions:
|
111
|
+
vote: Vote
|
100
112
|
name: Budgets
|
101
113
|
settings:
|
102
114
|
global:
|
@@ -105,6 +117,7 @@ en:
|
|
105
117
|
vote_threshold_percent: Vote threshold percent
|
106
118
|
step:
|
107
119
|
comments_blocked: Comments blocked
|
120
|
+
votes_enabled: Votes enabled
|
108
121
|
orders:
|
109
122
|
checkout:
|
110
123
|
error: An error ocurred while processing your vote
|
@@ -112,4 +125,6 @@ en:
|
|
112
125
|
destroy:
|
113
126
|
error: An error ocurred while canceling your vote
|
114
127
|
success: Your vote has been canceled successfully
|
128
|
+
index:
|
129
|
+
confirmed_orders_count: Orders count
|
115
130
|
total_budget: Total budget
|
data/config/locales/es.yml
CHANGED
@@ -31,6 +31,8 @@ es:
|
|
31
31
|
title: Editar proyecto
|
32
32
|
update: Actualizar proyecto
|
33
33
|
index:
|
34
|
+
finished_orders: Votos finalizados
|
35
|
+
pending_orders: Votos pendientes
|
34
36
|
title: Proyectos
|
35
37
|
new:
|
36
38
|
create: Crear proyecto
|
@@ -51,7 +53,7 @@ es:
|
|
51
53
|
title: Confirmar voto
|
52
54
|
budget_excess:
|
53
55
|
close: Cerrar
|
54
|
-
description: Este proyecto sobrepasa el presupuesto máximo y no se puede añadir. Si lo deseas, puede eliminar un proyecto que ya hayas seleccionado o
|
56
|
+
description: Este proyecto sobrepasa el presupuesto máximo y no se puede añadir. Si lo deseas, puede eliminar un proyecto que ya hayas seleccionado o dar apoyo con tus preferencias.
|
55
57
|
ok: De acuerdo
|
56
58
|
title: Presupuesto excedido
|
57
59
|
budget_summary:
|
@@ -71,8 +73,13 @@ es:
|
|
71
73
|
category: Categoría
|
72
74
|
scopes: Ámbitos
|
73
75
|
search: Buscar
|
76
|
+
filters_small_view:
|
77
|
+
close_modal: Cerrar ventana
|
78
|
+
filter: Filtrar
|
79
|
+
filter_by: Filtrar por
|
80
|
+
unfold: Desplegar
|
74
81
|
order_progress:
|
75
|
-
vote:
|
82
|
+
vote: Dar apoyo
|
76
83
|
order_selected_projects:
|
77
84
|
remove: Eliminar
|
78
85
|
selected_projects:
|
@@ -81,6 +88,9 @@ es:
|
|
81
88
|
view: Ver
|
82
89
|
project:
|
83
90
|
add: Añadir
|
91
|
+
count:
|
92
|
+
one: 1 apoyo
|
93
|
+
other: "%{count} apoyos"
|
84
94
|
remove: Eliminar
|
85
95
|
project_budget_button:
|
86
96
|
add: Añadir
|
@@ -90,6 +100,8 @@ es:
|
|
90
100
|
view_all_projects: Ver todos los proyectos
|
91
101
|
features:
|
92
102
|
budgets:
|
103
|
+
actions:
|
104
|
+
vote: Dar apoyo
|
93
105
|
name: Presupuestos
|
94
106
|
settings:
|
95
107
|
global:
|
@@ -98,6 +110,7 @@ es:
|
|
98
110
|
vote_threshold_percent: Porcentaje mínimo del presupuesto
|
99
111
|
step:
|
100
112
|
comments_blocked: Comentarios bloqueados
|
113
|
+
votes_enabled: Votos habilitados
|
101
114
|
orders:
|
102
115
|
checkout:
|
103
116
|
error: Se ha producido un error al procesar tu voto
|
@@ -105,4 +118,6 @@ es:
|
|
105
118
|
destroy:
|
106
119
|
error: Ha habido un error al cancelar tu voto
|
107
120
|
success: Tu voto ha sido cancelado correctamente
|
121
|
+
index:
|
122
|
+
confirmed_orders_count: Número de votos
|
108
123
|
total_budget: Presupuesto total
|
data/config/locales/eu.yml
CHANGED
@@ -2,4 +2,100 @@ eu:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
project:
|
5
|
-
budget: Aurrekontua
|
5
|
+
budget: Aurrekontua
|
6
|
+
decidim_category_id: Kategoria
|
7
|
+
decidim_scope_id: Esparrua
|
8
|
+
description: Deskribapena
|
9
|
+
proposal_ids: Honekin lotutako proposamenak
|
10
|
+
title: Izenburua
|
11
|
+
decidim:
|
12
|
+
budgets:
|
13
|
+
actions:
|
14
|
+
attachments: Fitxategi erantsiak
|
15
|
+
confirm_destroy: Ziur zaude proiektu hau ezabatu nahi duzula?
|
16
|
+
destroy: Garbitu
|
17
|
+
edit: Editatu
|
18
|
+
new: '%{name} berria'
|
19
|
+
title: Ekintzak
|
20
|
+
admin:
|
21
|
+
models:
|
22
|
+
project:
|
23
|
+
name: Proiektua
|
24
|
+
projects:
|
25
|
+
create:
|
26
|
+
invalid: Arazo bat izan da proiektu hau sortzean
|
27
|
+
success: Proiektua ongi sortu da
|
28
|
+
destroy:
|
29
|
+
success: Proiektu ongi ezabatu da
|
30
|
+
edit:
|
31
|
+
title: Editatu proiektua
|
32
|
+
update: Eguneratu proiektua
|
33
|
+
index:
|
34
|
+
title: Proiektuak
|
35
|
+
new:
|
36
|
+
create: Sortu proiektua
|
37
|
+
title: Emaitza berria
|
38
|
+
update:
|
39
|
+
invalid: Arazo bat izan da proiektu hau eguneratzean
|
40
|
+
success: Proiektua zuzen eguneratu da
|
41
|
+
models:
|
42
|
+
project:
|
43
|
+
fields:
|
44
|
+
title: Izenburua
|
45
|
+
projects:
|
46
|
+
budget_confirm:
|
47
|
+
are_you_sure: Ados zaude? Behin zure botoa baieztatuta, ezin izanen duzu aldatu.'
|
48
|
+
cancel: Utzi
|
49
|
+
confirm: Baieztatu
|
50
|
+
description: Proiektu hauek hautatu dituzu aurrekontuan sartzeko
|
51
|
+
title: Baieztatu botoa
|
52
|
+
budget_excess:
|
53
|
+
close: Itxi
|
54
|
+
description: Proiektu honek gehieneko aurrekontua gainditzen du, eta ezin da gehitu. Nahi baduzu, jada hautatua duzun proiektu bat ezaba dezakezu edo botoa eman zure lehenespenekin bat.
|
55
|
+
ok: Ados
|
56
|
+
title: Aurrekontua gainditu da.
|
57
|
+
budget_summary:
|
58
|
+
are_you_sure: Ziur zaude zure botoa ezeztatu nahi duzula?
|
59
|
+
assigned: 'Esleituta:'
|
60
|
+
checked_out:
|
61
|
+
title: Botoa zuzen bidali da
|
62
|
+
description: Zure aburuz, proiektuetako zeinei esleitu behar diegu aurrekontua? Gutxienez, %{minimum_budget} esleitu nahi dituzun proiektuei, eta bozkatu aurrekontua zehazteko.
|
63
|
+
title: Zure esku dago aurrekontua erabakitzea
|
64
|
+
count:
|
65
|
+
projects_count:
|
66
|
+
one: Proiektu bat
|
67
|
+
other: "%{count} proiektu"
|
68
|
+
filters:
|
69
|
+
category: Kategoria
|
70
|
+
scopes: Esparruak
|
71
|
+
search: Bilatu
|
72
|
+
filters_small_view:
|
73
|
+
filter_by: 'Iragazi honen arabera:'
|
74
|
+
order_progress:
|
75
|
+
vote: Bozkatu
|
76
|
+
order_selected_projects:
|
77
|
+
remove: Kendu
|
78
|
+
selected_projects:
|
79
|
+
one: hautatutako proiektua
|
80
|
+
other: hautatutako proiektuak
|
81
|
+
view: Ikusi
|
82
|
+
project:
|
83
|
+
add: Gehitu
|
84
|
+
remove: Kendu
|
85
|
+
project_budget_button:
|
86
|
+
add: Gehitu
|
87
|
+
added: Erantsita
|
88
|
+
show:
|
89
|
+
budget: Aurrekontua
|
90
|
+
view_all_projects: Ikusi proiektu guztiak
|
91
|
+
features:
|
92
|
+
budgets:
|
93
|
+
name: Aurrekontuak
|
94
|
+
orders:
|
95
|
+
checkout:
|
96
|
+
error: Errorea gertatu da zure botoa prozesatzean
|
97
|
+
success: Zure botoa ongi bideratu da
|
98
|
+
destroy:
|
99
|
+
error: Errorea gertatu da zure botoa ezeztatzean
|
100
|
+
success: Zure botua zuzen ezeztatu da
|
101
|
+
total_budget: Guztizko aurrekontua
|
@@ -0,0 +1,123 @@
|
|
1
|
+
fi:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
project:
|
5
|
+
budget: Budjetti
|
6
|
+
decidim_category_id: Kategoria
|
7
|
+
decidim_scope_id: Konteksti
|
8
|
+
description: Kuvaus
|
9
|
+
proposal_ids: Liittyvät esitykset
|
10
|
+
title: Otsikko
|
11
|
+
decidim:
|
12
|
+
budgets:
|
13
|
+
actions:
|
14
|
+
attachments: Liitteet
|
15
|
+
confirm_destroy: Haluatko varmasti poistaa tämän projektin?
|
16
|
+
destroy: Poista
|
17
|
+
edit: Muokkaa
|
18
|
+
new: Uusi %{name}
|
19
|
+
title: Toiminnot
|
20
|
+
admin:
|
21
|
+
models:
|
22
|
+
project:
|
23
|
+
name: Projekti
|
24
|
+
projects:
|
25
|
+
create:
|
26
|
+
invalid: Tämän projektin lisäyksessä tapahtui virhe
|
27
|
+
success: Projekti lisätty onnistuneesti
|
28
|
+
destroy:
|
29
|
+
success: Projekti tuhottu onnistuneesti
|
30
|
+
edit:
|
31
|
+
title: Muokkaa projektia
|
32
|
+
update: Päivitä projektia
|
33
|
+
index:
|
34
|
+
finished_orders: Valmiit tilaukset
|
35
|
+
pending_orders: Odottavat tilaukset
|
36
|
+
title: Projektit
|
37
|
+
new:
|
38
|
+
create: Luo projekti
|
39
|
+
title: Uusi tulos
|
40
|
+
update:
|
41
|
+
invalid: Tämän projektin päivityksessä tapahtui virhe
|
42
|
+
success: Projekti päivitetty onnistuneesti
|
43
|
+
models:
|
44
|
+
project:
|
45
|
+
fields:
|
46
|
+
title: Otsikko
|
47
|
+
projects:
|
48
|
+
budget_confirm:
|
49
|
+
are_you_sure: Oletko samaa mieltä? Kun olet vahvistanut äänesi, et voi enää muuttaa sitä.
|
50
|
+
cancel: Peruuta
|
51
|
+
confirm: Vahvista
|
52
|
+
description: Olet valinnut nämä projektit osaksi budjettia.
|
53
|
+
title: Vahvista ääni
|
54
|
+
budget_excess:
|
55
|
+
close: Sulje
|
56
|
+
description: Tämä projekti ylittää maksimibudjetin, minkä takia sitä ei voida lisätä. Jos haluat, voit poistaa projektin, jonka olet jo valinnut lisättäväksi tai äänestää omien mieltymyksesi mukaisesti.
|
57
|
+
ok: OK
|
58
|
+
title: Maksimibudjetti ylitetty
|
59
|
+
budget_summary:
|
60
|
+
are_you_sure: Haluatko varmasti peruuttaa äänesi?
|
61
|
+
assigned: 'Varattu:'
|
62
|
+
cancel_order: poistaa äänesi ja aloittaa alusta
|
63
|
+
checked_out:
|
64
|
+
description: Olet jo äänestänyt tätä budjettia. Jos muutit mieltäsi, voit %{cancel_link}.
|
65
|
+
title: Budjetin äänestys suoritettu
|
66
|
+
description: Mitä projekteja varten sinun mielestäsi budjettia tulisi varata? Varaa vähintään %{minimum_budget} projekteille, jotka haluat toteutettavan ja äänestä mieltymystesi mukaisesti määrittääksesi budjetin.
|
67
|
+
title: Voit päättää budjetin
|
68
|
+
count:
|
69
|
+
projects_count:
|
70
|
+
one: 1 projekti
|
71
|
+
other: "%{count} projektia"
|
72
|
+
filters:
|
73
|
+
category: Kategoria
|
74
|
+
scopes: Konteksti
|
75
|
+
search: Haku
|
76
|
+
filters_small_view:
|
77
|
+
close_modal: Sulje ikkuna
|
78
|
+
filter: Suodata
|
79
|
+
filter_by: Suodata
|
80
|
+
unfold: Avaa
|
81
|
+
order_progress:
|
82
|
+
vote: Äänestä
|
83
|
+
order_selected_projects:
|
84
|
+
remove: Poista
|
85
|
+
selected_projects:
|
86
|
+
one: projekti valittu
|
87
|
+
other: projektia valittu
|
88
|
+
view: Näytä
|
89
|
+
project:
|
90
|
+
add: Lisää
|
91
|
+
count:
|
92
|
+
one: 1 kannatus
|
93
|
+
other: "%{count} kannatusta"
|
94
|
+
remove: Poista
|
95
|
+
project_budget_button:
|
96
|
+
add: Lisää
|
97
|
+
added: Lisätty
|
98
|
+
show:
|
99
|
+
budget: Budjetti
|
100
|
+
view_all_projects: Näytä kaikki projektit
|
101
|
+
features:
|
102
|
+
budgets:
|
103
|
+
actions:
|
104
|
+
vote: Äänestä
|
105
|
+
name: Budjetit
|
106
|
+
settings:
|
107
|
+
global:
|
108
|
+
comments_enabled: Kommentointi sallittu
|
109
|
+
total_budget: Koko budjetti
|
110
|
+
vote_threshold_percent: Äänestyskynnyksen prosentti
|
111
|
+
step:
|
112
|
+
comments_blocked: Kommentointi kielletty
|
113
|
+
votes_enabled: Äänestys sallittu
|
114
|
+
orders:
|
115
|
+
checkout:
|
116
|
+
error: Äänesi käsittelyssä tapahtui virhe
|
117
|
+
success: Äänesi on hyväksytty onnistuneesti
|
118
|
+
destroy:
|
119
|
+
error: Äänesi peruutuksen yhteydessä tapahtui virhe
|
120
|
+
success: Äänesi on peruttu onnistuneesti
|
121
|
+
index:
|
122
|
+
confirmed_orders_count: Tilauksien määrä
|
123
|
+
total_budget: Koko budjetti
|
@@ -27,6 +27,8 @@ Decidim.register_feature(:budgets) do |feature|
|
|
27
27
|
|
28
28
|
feature.settings(:step) do |settings|
|
29
29
|
settings.attribute :comments_blocked, type: :boolean, default: false
|
30
|
+
settings.attribute :votes_enabled, type: :boolean, default: true
|
31
|
+
settings.attribute :show_votes, type: :boolean, default: false
|
30
32
|
end
|
31
33
|
|
32
34
|
feature.seeds do
|
@@ -54,13 +56,13 @@ Decidim.register_feature(:budgets) do |feature|
|
|
54
56
|
Decidim::Attachment.create!(
|
55
57
|
title: Decidim::Faker::Localized.sentence(2),
|
56
58
|
description: Decidim::Faker::Localized.sentence(5),
|
57
|
-
file: File.new(
|
59
|
+
file: File.new(File.join(File.dirname(__FILE__), "seeds", "city.jpeg")),
|
58
60
|
attached_to: project
|
59
61
|
)
|
60
62
|
Decidim::Attachment.create!(
|
61
63
|
title: Decidim::Faker::Localized.sentence(2),
|
62
64
|
description: Decidim::Faker::Localized.sentence(5),
|
63
|
-
file: File.new(
|
65
|
+
file: File.new(File.join(File.dirname(__FILE__), "seeds", "Exampledocument.pdf")),
|
64
66
|
attached_to: project
|
65
67
|
)
|
66
68
|
Decidim::Comments::Seed.comments_for(project)
|
Binary file
|
Binary file
|
@@ -6,7 +6,7 @@ FactoryGirl.define do
|
|
6
6
|
factory :budget_feature, parent: :feature do
|
7
7
|
name { Decidim::Features::Namer.new(participatory_process.organization.available_locales, :budgets).i18n_name }
|
8
8
|
manifest_name :budgets
|
9
|
-
participatory_process
|
9
|
+
participatory_process { create(:participatory_process, :with_steps) }
|
10
10
|
|
11
11
|
trait :with_total_budget_and_vote_threshold_percent do
|
12
12
|
transient do
|
@@ -21,6 +21,26 @@ FactoryGirl.define do
|
|
21
21
|
}
|
22
22
|
end
|
23
23
|
end
|
24
|
+
|
25
|
+
trait :with_votes_disabled do
|
26
|
+
step_settings do
|
27
|
+
{
|
28
|
+
participatory_process.active_step.id => {
|
29
|
+
votes_enabled: false
|
30
|
+
}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
trait :with_show_votes_enabled do
|
36
|
+
step_settings do
|
37
|
+
{
|
38
|
+
participatory_process.active_step.id => {
|
39
|
+
show_votes: true
|
40
|
+
}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
24
44
|
end
|
25
45
|
|
26
46
|
factory :project, class: Decidim::Budgets::Project do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-budgets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-03-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: decidim-core
|
@@ -18,28 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.0.
|
21
|
+
version: 0.0.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.0.
|
28
|
+
version: 0.0.6
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: decidim-comments
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - '='
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.0.
|
35
|
+
version: 0.0.6
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - '='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.0.
|
42
|
+
version: 0.0.6
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rectify
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,42 +88,42 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - '='
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.0.
|
91
|
+
version: 0.0.6
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - '='
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.0.
|
98
|
+
version: 0.0.6
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: decidim-proposals
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - '='
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.0.
|
105
|
+
version: 0.0.6
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - '='
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.0.
|
112
|
+
version: 0.0.6
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: decidim-admin
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
117
|
- - '='
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 0.0.
|
119
|
+
version: 0.0.6
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - '='
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: 0.0.
|
126
|
+
version: 0.0.6
|
127
127
|
description: ''
|
128
128
|
email:
|
129
129
|
- josepjaume@gmail.com
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- app/views/decidim/budgets/projects/_budget_summary.html.erb
|
176
176
|
- app/views/decidim/budgets/projects/_count.html.erb
|
177
177
|
- app/views/decidim/budgets/projects/_filters.html.erb
|
178
|
+
- app/views/decidim/budgets/projects/_filters_small_view.html.erb
|
178
179
|
- app/views/decidim/budgets/projects/_linked_projects.html.erb
|
179
180
|
- app/views/decidim/budgets/projects/_order_progress.html.erb
|
180
181
|
- app/views/decidim/budgets/projects/_order_selected_projects.html.erb
|
@@ -191,15 +192,19 @@ files:
|
|
191
192
|
- config/locales/en.yml
|
192
193
|
- config/locales/es.yml
|
193
194
|
- config/locales/eu.yml
|
195
|
+
- config/locales/fi.yml
|
194
196
|
- db/migrate/20170127114122_create_projects.rb
|
195
197
|
- db/migrate/20170130095615_create_orders.rb
|
196
198
|
- db/migrate/20170130101825_create_line_items.rb
|
197
199
|
- db/migrate/20170207101750_remove_short_description_from_decidim_projects.rb
|
200
|
+
- db/migrate/20170215132708_add_reference_to_projects.rb
|
198
201
|
- lib/decidim/budgets.rb
|
199
202
|
- lib/decidim/budgets/admin.rb
|
200
203
|
- lib/decidim/budgets/admin_engine.rb
|
201
204
|
- lib/decidim/budgets/feature.rb
|
202
205
|
- lib/decidim/budgets/list_engine.rb
|
206
|
+
- lib/decidim/budgets/seeds/Exampledocument.pdf
|
207
|
+
- lib/decidim/budgets/seeds/city.jpeg
|
203
208
|
- lib/decidim/budgets/test/factories.rb
|
204
209
|
homepage: https://github.com/AjuntamentdeBarcelona/decidim
|
205
210
|
licenses:
|