decidim-budgets 0.31.4 → 0.32.0.rc1

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -13
  3. data/app/commands/decidim/budgets/admin/create_project.rb +1 -0
  4. data/app/commands/decidim/budgets/admin/update_project.rb +1 -0
  5. data/app/commands/decidim/budgets/checkout.rb +7 -1
  6. data/app/controllers/concerns/decidim/budgets/admin/filterable.rb +0 -4
  7. data/app/controllers/decidim/budgets/admin/budgets_controller.rb +3 -2
  8. data/app/controllers/decidim/budgets/admin/projects_controller.rb +3 -2
  9. data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +1 -1
  10. data/app/controllers/decidim/budgets/line_items_controller.rb +4 -4
  11. data/app/controllers/decidim/budgets/projects_controller.rb +27 -27
  12. data/app/helpers/decidim/budgets/projects_helper.rb +9 -2
  13. data/app/models/decidim/budgets/project.rb +8 -8
  14. data/app/permissions/decidim/budgets/permissions.rb +7 -2
  15. data/app/views/decidim/budgets/admin/projects/_project-tr.html.erb +0 -3
  16. data/app/views/decidim/budgets/admin/projects/_projects-thead.html.erb +0 -1
  17. data/app/views/decidim/budgets/admin/projects/edit.html.erb +3 -2
  18. data/app/views/decidim/budgets/admin/projects/new.html.erb +3 -2
  19. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +1 -1
  20. data/app/views/decidim/budgets/projects/show.html.erb +2 -18
  21. data/config/locales/ar.yml +0 -3
  22. data/config/locales/bg.yml +0 -11
  23. data/config/locales/bs-BA.yml +0 -1
  24. data/config/locales/ca-IT.yml +3 -11
  25. data/config/locales/ca.yml +3 -11
  26. data/config/locales/cs.yml +3 -11
  27. data/config/locales/de.yml +1 -11
  28. data/config/locales/el.yml +0 -11
  29. data/config/locales/en.yml +3 -10
  30. data/config/locales/es-MX.yml +3 -11
  31. data/config/locales/es-PY.yml +3 -11
  32. data/config/locales/es.yml +3 -11
  33. data/config/locales/eu.yml +4 -12
  34. data/config/locales/fi-plain.yml +3 -11
  35. data/config/locales/fi.yml +3 -11
  36. data/config/locales/fr-CA.yml +1 -11
  37. data/config/locales/fr.yml +1 -11
  38. data/config/locales/ga-IE.yml +0 -1
  39. data/config/locales/gl.yml +0 -8
  40. data/config/locales/hu.yml +0 -11
  41. data/config/locales/id-ID.yml +0 -3
  42. data/config/locales/is-IS.yml +1 -3
  43. data/config/locales/it.yml +0 -10
  44. data/config/locales/ja.yml +3 -11
  45. data/config/locales/kaa.yml +0 -1
  46. data/config/locales/ko.yml +0 -3
  47. data/config/locales/lb.yml +0 -10
  48. data/config/locales/lt.yml +0 -11
  49. data/config/locales/lv.yml +0 -3
  50. data/config/locales/nl.yml +0 -11
  51. data/config/locales/no.yml +0 -11
  52. data/config/locales/pl.yml +0 -11
  53. data/config/locales/pt-BR.yml +3 -11
  54. data/config/locales/pt.yml +0 -10
  55. data/config/locales/ro-RO.yml +0 -11
  56. data/config/locales/ru.yml +0 -3
  57. data/config/locales/sk.yml +0 -3
  58. data/config/locales/sq-AL.yml +0 -5
  59. data/config/locales/sr-CS.yml +0 -1
  60. data/config/locales/sv.yml +1 -11
  61. data/config/locales/tr-TR.yml +0 -10
  62. data/config/locales/uk.yml +0 -3
  63. data/config/locales/zh-CN.yml +0 -10
  64. data/config/locales/zh-TW.yml +0 -11
  65. data/decidim-budgets.gemspec +8 -11
  66. data/lib/decidim/api/budget_type.rb +0 -2
  67. data/lib/decidim/api/budgets_type.rb +2 -2
  68. data/lib/decidim/api/project_type.rb +2 -4
  69. data/lib/decidim/budgets/component.rb +1 -5
  70. data/lib/decidim/budgets/project_serializer.rb +2 -2
  71. data/lib/decidim/budgets/version.rb +1 -1
  72. data/lib/decidim/budgets.rb +0 -2
  73. metadata +14 -18
  74. data/app/jobs/decidim/budgets/send_order_summary_job.rb +0 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 59a86b3d6e348fdb4112893ef2751ffca0b8feed0ad02ad1990fdd21634f855f
4
- data.tar.gz: 5918d35aa1abdfd998c18ef8102eea7949cb63515521851a3923c889da98b8c2
3
+ metadata.gz: 8d1e9a57f1570f7e7c744aa5491727f328cddc0eb68cab35598f7f67042e1820
4
+ data.tar.gz: e66a4b84c85494fcd0f56c9f7231dafca776d6e43cdd1c61fcc5e51d258f05b1
5
5
  SHA512:
6
- metadata.gz: 689f8302e2524750845f1e20b4db5c228f3f518ee05cd60db89669fc61c3f372d92810a3aab63155515ee331ec912c0741b08e9580841a19599e62f148e5dc66
7
- data.tar.gz: a03c55f1a71db5107e6c72773cd74045c21d9355cecbec5d907dc49fe711ac2cbe6425d827225048a41033fd5feadc5fb7d5845e728238dc6abff0b26ec98541
6
+ metadata.gz: 70d15990935083ada78aad11f412d08c9beb4207b848a726eb362bc965a3e0adb0c61e4e85db1742615293691a838c6c7e62db252f20a6b28f5ea548b3b51e1a
7
+ data.tar.gz: 7fa445aa14f232f290e66ff43d57f52302d81b640dc33248dad3868e5de52e2d73d2ca130d2186becacf4e82d5540d67cf61d8a152d0a5e2242d2bf73108a371
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Decidim::Budgets
1
+ # decidim-budgets
2
2
 
3
- The Budgets module adds budgets with projects related to them to any participatory process. It adds a CRUD engine to the admin and public views scoped inside the participatory space. Projects will link to related proposals and have a budget. The users should be able to distribute a budget between these projects.
3
+ The Budgets module adds budgets with projects related to them to any participatory space. It adds a CRUD engine to the admin and public views scoped inside the participatory space. Projects will link to related proposals and have a budget. The users should be able to distribute a budget between these projects.
4
4
 
5
5
  ## Usage
6
6
 
@@ -16,17 +16,7 @@ This plugin provides:
16
16
 
17
17
  ## Installation
18
18
 
19
- Add this line to your application's Gemfile:
20
-
21
- ```ruby
22
- gem "decidim-budgets"
23
- ```
24
-
25
- And then execute:
26
-
27
- ```bash
28
- bundle
29
- ```
19
+ This is on the default Decidim installation so you should not change anything to use this component.
30
20
 
31
21
  ## Budget Workflows
32
22
 
@@ -7,6 +7,7 @@ module Decidim
7
7
  # panel.
8
8
  class CreateProject < Decidim::Commands::CreateResource
9
9
  include ::Decidim::GalleryMethods
10
+
10
11
  fetch_form_attributes :budget, :taxonomizations, :title, :description, :budget_amount, :address, :latitude, :longitude
11
12
 
12
13
  private
@@ -7,6 +7,7 @@ module Decidim
7
7
  # panel.
8
8
  class UpdateProject < Decidim::Commands::UpdateResource
9
9
  include ::Decidim::GalleryMethods
10
+
10
11
  fetch_form_attributes :taxonomizations, :title, :description, :budget_amount, :address, :latitude, :longitude
11
12
 
12
13
  def initialize(form, project)
@@ -31,7 +31,7 @@ module Decidim
31
31
  return unless order && order.valid?
32
32
 
33
33
  @order.with_lock do
34
- SendOrderSummaryJob.perform_later(@order)
34
+ send_order_summary_job(@order)
35
35
 
36
36
  Decidim.traceability.update!(
37
37
  @order,
@@ -43,6 +43,12 @@ module Decidim
43
43
  false
44
44
  end
45
45
  end
46
+
47
+ def send_order_summary_job(order)
48
+ return if order&.user&.email.blank?
49
+
50
+ OrderSummaryMailer.order_summary(order).deliver_later
51
+ end
46
52
  end
47
53
  end
48
54
  end
@@ -23,10 +23,6 @@ module Decidim
23
23
  collection.includes(:taxonomies).joins(:taxonomies)
24
24
  end
25
25
 
26
- def search_field_predicate
27
- :id_string_or_title_cont
28
- end
29
-
30
26
  def filters
31
27
  [
32
28
  :taxonomies_part_of_contains,
@@ -6,6 +6,7 @@ module Decidim
6
6
  # This controller allows the create or update a budget.
7
7
  class BudgetsController < Admin::ApplicationController
8
8
  include Decidim::Admin::HasTrashableResources
9
+
9
10
  helper_method :budgets, :budget, :finished_orders, :pending_orders,
10
11
  :users_with_pending_orders, :users_with_finished_orders
11
12
 
@@ -26,7 +27,7 @@ module Decidim
26
27
 
27
28
  on(:invalid) do
28
29
  flash.now[:alert] = I18n.t("budgets.create.invalid", scope: "decidim.budgets.admin")
29
- render action: "new", status: :unprocessable_entity
30
+ render action: "new", status: :unprocessable_content
30
31
  end
31
32
  end
32
33
  end
@@ -48,7 +49,7 @@ module Decidim
48
49
 
49
50
  on(:invalid) do
50
51
  flash.now[:alert] = I18n.t("budgets.update.invalid", scope: "decidim.budgets.admin")
51
- render action: "edit", status: :unprocessable_entity
52
+ render action: "edit", status: :unprocessable_content
52
53
  end
53
54
  end
54
55
  end
@@ -9,6 +9,7 @@ module Decidim
9
9
  include Decidim::Admin::HasTrashableResources
10
10
  include Decidim::Admin::ComponentTaxonomiesHelper
11
11
  include Decidim::Budgets::Admin::Filterable
12
+
12
13
  helper Decidim::Budgets::Admin::ProjectBulkActionsHelper
13
14
  helper Decidim::Budgets::ProjectsHelper
14
15
 
@@ -39,7 +40,7 @@ module Decidim
39
40
 
40
41
  on(:invalid) do
41
42
  flash.now[:alert] = I18n.t("projects.create.invalid", scope: "decidim.budgets.admin")
42
- render action: "new", status: :unprocessable_entity
43
+ render action: "new", status: :unprocessable_content
43
44
  end
44
45
  end
45
46
  end
@@ -62,7 +63,7 @@ module Decidim
62
63
 
63
64
  on(:invalid) do
64
65
  flash.now[:alert] = I18n.t("projects.update.invalid", scope: "decidim.budgets.admin")
65
- render action: "edit", status: :unprocessable_entity
66
+ render action: "edit", status: :unprocessable_content
66
67
  end
67
68
  end
68
69
  end
@@ -24,7 +24,7 @@ module Decidim
24
24
 
25
25
  on(:invalid) do
26
26
  flash[:alert] = I18n.t("proposals_imports.create.invalid", scope: "decidim.budgets.admin")
27
- render action: "new", status: :unprocessable_entity
27
+ render action: "new", status: :unprocessable_content
28
28
  end
29
29
  end
30
30
  end
@@ -22,12 +22,12 @@ module Decidim
22
22
  AddLineItem.call(persisted_current_order, project, current_user) do
23
23
  on(:ok) do |order|
24
24
  self.current_order = order
25
- format.html { redirect_back(fallback_location: budget_path(budget)) }
25
+ format.html { redirect_back_or_to(budget_path(budget)) }
26
26
  format.js { render "update_budget" }
27
27
  end
28
28
 
29
29
  on(:invalid) do
30
- format.js { render "update_budget", status: :unprocessable_entity }
30
+ format.js { render "update_budget", status: :unprocessable_content }
31
31
  end
32
32
  end
33
33
  end
@@ -38,12 +38,12 @@ module Decidim
38
38
  respond_to do |format|
39
39
  RemoveLineItem.call(current_order, project) do
40
40
  on(:ok) do |_order|
41
- format.html { redirect_back(fallback_location: budget_path(budget)) }
41
+ format.html { redirect_back_or_to(budget_path(budget)) }
42
42
  format.js { render "update_budget" }
43
43
  end
44
44
 
45
45
  on(:invalid) do
46
- format.js { render "update_budget", status: :unprocessable_entity }
46
+ format.js { render "update_budget", status: :unprocessable_content }
47
47
  end
48
48
  end
49
49
  end
@@ -6,10 +6,11 @@ module Decidim
6
6
  class ProjectsController < Decidim::Budgets::ApplicationController
7
7
  include FilterResource
8
8
  include NeedsCurrentOrder
9
+ include Decidim::AttachmentsHelper
9
10
  include Decidim::Budgets::Orderable
10
11
  include Decidim::IconHelper
11
12
 
12
- helper_method :projects, :project, :budget, :all_geocoded_projects, :tabs, :panels, :resource_added?
13
+ helper_method :projects, :project, :budget, :all_geocoded_projects, :resource_added?, :tab_panel_items
13
14
 
14
15
  before_action :set_focus_mode_if_voting_open
15
16
 
@@ -64,16 +65,8 @@ module Decidim
64
65
  voting_finished? && budget.projects.selected.any?
65
66
  end
66
67
 
67
- def tabs
68
- @tabs ||= items.map { |item| item.slice(:id, :text, :icon) }
69
- end
70
-
71
- def panels
72
- @panels ||= items.map { |item| item.slice(:id, :method, :args) }
73
- end
74
-
75
- def items
76
- @items ||= [
68
+ def tab_panel_items
69
+ @tab_panel_items ||= [
77
70
  {
78
71
  enabled: ProjectHistoryCell.new(@project).render?,
79
72
  id: "included_history",
@@ -82,24 +75,31 @@ module Decidim
82
75
  method: :cell,
83
76
  args: ["decidim/budgets/project_history", @project]
84
77
  },
85
- {
86
- enabled: @project.photos.present?,
87
- id: "images",
88
- text: t("decidim.application.photos.photos"),
89
- icon: resource_type_icon_key("images"),
90
- method: :cell,
91
- args: ["decidim/images_panel", @project]
92
- },
93
- {
94
- enabled: @project.documents.present?,
95
- id: "documents",
96
- text: t("decidim.application.documents.documents"),
97
- icon: resource_type_icon_key("documents"),
98
- method: :cell,
99
- args: ["decidim/documents_panel", @project]
100
- }
78
+ *attachments_tab_panel_items(@project)
101
79
  ].select { |item| item[:enabled] }
102
80
  end
81
+
82
+ def add_breadcrumb_item
83
+ return {} if project.blank?
84
+
85
+ {
86
+ label: translated_attribute(project.title),
87
+ url: Decidim::EngineRouter.main_proxy(current_component).budget_project_url(budget, project),
88
+ active: false,
89
+ resource: project
90
+ }
91
+ end
92
+
93
+ def add_parent_breadcrumb_item
94
+ return {} if budget.blank?
95
+
96
+ {
97
+ label: translated_attribute(budget.title),
98
+ url: Decidim::EngineRouter.main_proxy(current_component).budget_projects_url(budget),
99
+ active: false,
100
+ resource: budget
101
+ }
102
+ end
103
103
  end
104
104
  end
105
105
  end
@@ -117,9 +117,16 @@ module Decidim
117
117
  def filter_sections
118
118
  @filter_sections ||= begin
119
119
  items = []
120
- items.append(method: :with_any_status, collection: filter_status_values, label: t("decidim.budgets.projects.filters.status"), id: "status") if voting_finished?
120
+ if voting_finished?
121
+ items.append(method: :with_any_status,
122
+ name: "[with_any_status]",
123
+ collection: filter_status_values,
124
+ label: t("decidim.budgets.projects.filters.status"),
125
+ id: "status")
126
+ end
121
127
  current_component.available_taxonomy_filters.each do |taxonomy_filter|
122
- items.append(method: "with_any_taxonomies[#{taxonomy_filter.root_taxonomy_id}]",
128
+ items.append(method: :with_any_taxonomies,
129
+ name: "[with_any_taxonomies][#{taxonomy_filter.root_taxonomy_id}]",
123
130
  collection: filter_taxonomy_values_for(taxonomy_filter),
124
131
  label: decidim_sanitize_translated(taxonomy_filter.name),
125
132
  id: "taxonomy-#{taxonomy_filter.root_taxonomy_id}")
@@ -134,14 +134,14 @@ module Decidim
134
134
  end
135
135
 
136
136
  ransacker :confirmed_orders_count do
137
- query = <<-SQL.squish
138
- (
139
- SELECT COUNT(decidim_budgets_line_items.decidim_order_id)
140
- FROM decidim_budgets_line_items
141
- LEFT JOIN decidim_budgets_orders ON decidim_budgets_orders.id = decidim_budgets_line_items.decidim_order_id
142
- WHERE decidim_budgets_orders.checked_out_at IS NOT NULL
143
- AND decidim_budgets_projects.id = decidim_budgets_line_items.decidim_project_id
144
- )
137
+ query = <<~SQL.squish
138
+ (
139
+ SELECT COUNT(decidim_budgets_line_items.decidim_order_id)
140
+ FROM decidim_budgets_line_items
141
+ LEFT JOIN decidim_budgets_orders ON decidim_budgets_orders.id = decidim_budgets_line_items.decidim_order_id
142
+ WHERE decidim_budgets_orders.checked_out_at IS NOT NULL
143
+ AND decidim_budgets_projects.id = decidim_budgets_line_items.decidim_project_id
144
+ )
145
145
  SQL
146
146
  Arel.sql(query)
147
147
  end
@@ -4,6 +4,7 @@ module Decidim
4
4
  module Budgets
5
5
  class Permissions < Decidim::DefaultPermissions
6
6
  def permissions
7
+ return permission_action if permission_action.scope == :public && public_action_allowed?
7
8
  return permission_action unless user
8
9
 
9
10
  # Delegate the admin permission checks to the admin permissions class
@@ -15,8 +16,6 @@ module Decidim
15
16
  can_vote?(false) if can_vote_project?(project || order&.projects&.first)
16
17
  when [:report, :project]
17
18
  permission_action.allow!
18
- when [:read, :project]
19
- toggle_allow(project.visible?)
20
19
  when [:create, :order]
21
20
  can_vote?(true)
22
21
  when [:export_pdf, :order]
@@ -44,6 +43,12 @@ module Decidim
44
43
  @workflow ||= context.fetch(:workflow, nil)
45
44
  end
46
45
 
46
+ def public_action_allowed?
47
+ return unless permission_action.subject == :project && permission_action.action == :read
48
+
49
+ toggle_allow(project&.visible? && !project.deleted? && !project.budget.deleted?)
50
+ end
51
+
47
52
  def can_vote?(active_allow)
48
53
  is_allowed = workflow.vote_allowed?(budget)
49
54
 
@@ -2,9 +2,6 @@
2
2
  <td>
3
3
  <%= check_box_tag "project_ids_s[]", project.id, false, class: "js-check-all-resources js-project-list-check js-resource-id-#{project.id}" %><br>
4
4
  </td>
5
- <td data-label="<%= t("models.project.fields.id", scope: "decidim.budgets") %>">
6
- <%= project.id %><br>
7
- </td>
8
5
  <td class="!text-left" data-label="<%= t("models.project.fields.title", scope: "decidim.budgets") %>">
9
6
  <% if allowed_to? :update, :project, project: project %>
10
7
  <%= link_to translated_attribute(project.title), resource_locator([budget, project]).edit %><br>
@@ -1,7 +1,6 @@
1
1
  <thead>
2
2
  <tr>
3
3
  <th><%= check_box_tag "projects_bulk", "all", false, class: "js-check-all" %></th>
4
- <th><%= sort_link(query, :id, t("models.project.fields.id", scope: "decidim.budgets"), default_order: :desc) %></th>
5
4
  <th class="!text-left"><%= sort_link(query, :title, t("models.project.fields.title", scope: "decidim.budgets")) %></th>
6
5
  <th><%= sort_link(query, :taxonomies_name, t("models.project.fields.taxonomies", scope: "decidim.budgets") ) %></th>
7
6
  <th><%= sort_link(query, :confirmed_orders_count, t("index.confirmed_orders_count")) %></th>
@@ -1,7 +1,8 @@
1
- <% add_decidim_page_title("#{translated_attribute(budget.title)} - #{t(".title")}") %>
1
+ <% add_decidim_page_title(t(".title", budget: decidim_sanitize_translated(budget.title))) %>
2
+
2
3
  <div class="item_show__header">
3
4
  <h1 class="item_show__header-title">
4
- <%= "#{decidim_sanitize_translated(budget.title)} #{t(".title")}" %>
5
+ <%= t(".title", budget: decidim_sanitize_translated(budget.title)) %>
5
6
  </h1>
6
7
  </div>
7
8
  <div class="item__edit item__edit-1col">
@@ -1,7 +1,8 @@
1
- <% add_decidim_page_title("#{translated_attribute(budget.title)} - #{t(".title")}") %>
1
+ <% add_decidim_page_title(t(".title", budget: translated_attribute(budget.title))) %>
2
+
2
3
  <div class="item_show__header">
3
4
  <h1 class="item_show__header-title">
4
- <%= "#{decidim_escape_translated(budget.title)} &gt; #{t(".title")}".html_safe %>
5
+ <%= t(".title", budget: translated_attribute(budget.title)) %>
5
6
  </h1>
6
7
  </div>
7
8
  <div class="item__edit item__edit-1col">
@@ -1,6 +1,6 @@
1
1
  <div id="order-progress<%= "-responsive" if responsive %>" class="budget-summary <%= responsive ? "block md:hidden" : "hidden md:block" %>" data-progress-reference data-safe-url="<%= budget_url(budget) %>">
2
2
  <% if responsive %>
3
- <%= render partial: "decidim/budgets/projects/order_progress_summary/content_responsive", locals: { focus_mode_origin: focus_mode_origin } %>
3
+ <%= render partial: "decidim/budgets/projects/order_progress_summary/content_responsive", locals: { focus_mode_origin: } %>
4
4
  <% else %>
5
5
  <%= render partial: "decidim/budgets/projects/order_progress_summary/content" %>
6
6
  <% end %>
@@ -54,24 +54,8 @@ edit_link(
54
54
  </div>
55
55
  </section>
56
56
  <section class="layout-main__section">
57
- <% if tabs.any? %>
58
- <div class="mt-8" data-controller="accordion" data-multiselectable="false" data-collapsible="false">
59
- <ul class="tab-x-container">
60
- <% tabs.each_with_index do |tab, i| %>
61
- <li>
62
- <button id="trigger-<%= tab[:id] %>" class="tab-x" data-controls="panel-<%= tab[:id] %>" data-open="<%= "true" if i.zero? %>">
63
- <%= icon tab[:icon], class: "text-gray fill-current" %><%= tab[:text] %>
64
- </button>
65
- </li>
66
- <% end %>
67
- </ul>
68
-
69
- <% panels.each do |panel| %>
70
- <div id="panel-<%= panel[:id] %>" class="py-8 panel-container">
71
- <%= send(panel[:method], *panel[:args]) %>
72
- </div>
73
- <% end %>
74
- </div>
57
+ <% if tab_panel_items.any? %>
58
+ <%= cell "decidim/tab_panels", tab_panel_items %>
75
59
  <% end %>
76
60
  </section>
77
61
 
@@ -1,4 +1,3 @@
1
- ---
2
1
  ar:
3
2
  activemodel:
4
3
  attributes:
@@ -39,7 +38,6 @@ ar:
39
38
  name: مشروع
40
39
  projects:
41
40
  edit:
42
- title: تحرير المشروع
43
41
  update: تحديث
44
42
  index:
45
43
  actions: الإجراءات
@@ -54,7 +52,6 @@ ar:
54
52
  update_budget_button: تحديث ميزانية المشروع
55
53
  new:
56
54
  create: إنشاء
57
- title: مشروع جديد
58
55
  proposals_imports:
59
56
  new:
60
57
  create: استيراد مقترحات للمشاريع
@@ -1,4 +1,3 @@
1
- ---
2
1
  bg:
3
2
  activemodel:
4
3
  attributes:
@@ -72,7 +71,6 @@ bg:
72
71
  invalid: Възникна проблем при създаването на този проект.
73
72
  success: Проектът беше създаден успешно.
74
73
  edit:
75
- title: Редактиране на проект
76
74
  update: Актуализация
77
75
  index:
78
76
  actions: Активности
@@ -92,7 +90,6 @@ bg:
92
90
  update_budget_button: Актуализирайте бюджета на проекта
93
91
  new:
94
92
  create: Създаване
95
- title: Нов проект
96
93
  update:
97
94
  invalid: Възникна проблем при актуализирането на този проект.
98
95
  success: Проектът беше актуализиран успешно.
@@ -168,7 +165,6 @@ bg:
168
165
  total_budget: Общ бюджет
169
166
  project:
170
167
  fields:
171
- id: ID
172
168
  map: Карта
173
169
  title: Заглавие
174
170
  order:
@@ -308,13 +304,6 @@ bg:
308
304
  disabled: Гласуването е деактивирано
309
305
  enabled: Гласуването е активирано
310
306
  finished: Гласуването е приключило
311
- events:
312
- budgets:
313
- budget_published:
314
- email_intro: 'Бюджетът %{resource_title} вече е активен за %{participatory_space_title}. Можете да го видите от тази страница:'
315
- email_outro: Получавате това известие, защото следвате %{participatory_space_title}. Може да прекратите известията чрез предходния линк.
316
- email_subject: Бюджетът %{resource_title} вече е активен за %{participatory_space_title}.
317
- notification_title: Бюджетът <a href="%{resource_path}">%{resource_title}</a> вече е активен за %{participatory_space_title}.
318
307
  orders:
319
308
  checkout:
320
309
  error: Възникна проблем при обработването на Вашия глас.
@@ -1,4 +1,3 @@
1
- ---
2
1
  bs:
3
2
  decidim:
4
3
  budgets:
@@ -1,4 +1,3 @@
1
- ---
2
1
  ca-IT:
3
2
  activemodel:
4
3
  attributes:
@@ -91,7 +90,7 @@ ca-IT:
91
90
  invalid: S'ha produït un error en crear aquest projecte.
92
91
  success: Projecte creat correctament.
93
92
  edit:
94
- title: Editar projecte
93
+ title: Editar projecte a "%{budget}"
95
94
  update: Actualitzar
96
95
  index:
97
96
  actions: Accions
@@ -114,7 +113,7 @@ ca-IT:
114
113
  title: Projectes eliminats
115
114
  new:
116
115
  create: Crear
117
- title: Afegir projecte
116
+ title: Nova projecte a "%{budget}"
118
117
  update:
119
118
  invalid: S'ha produït un error en actualitzar aquest projecte.
120
119
  success: Projecte actualitzat correctament.
@@ -215,7 +214,6 @@ ca-IT:
215
214
  total_budget: Pressupost total
216
215
  project:
217
216
  fields:
218
- id: ID
219
217
  map: Mapa
220
218
  taxonomies: Taxonomies
221
219
  title: Títol
@@ -341,6 +339,7 @@ ca-IT:
341
339
  actions:
342
340
  comment: Comentar
343
341
  vote: Vota
342
+ vote_comment: Votar el comentari
344
343
  name: Pressupostos
345
344
  settings:
346
345
  global:
@@ -405,13 +404,6 @@ ca-IT:
405
404
  updated_at: La data i l'hora en què es va actualitzar la petició
406
405
  show:
407
406
  projects: Exportar els projectes
408
- events:
409
- budgets:
410
- budget_published:
411
- email_intro: 'Ja està activa la fase %{resource_title} per a %{participatory_space_title}. Pots veure-la des d''aquesta pàgina:'
412
- email_outro: Has rebut aquesta notificació perquè estàs seguint l'espai "%{participatory_space_title}". Pots deixar de rebre notificacions a través de l'enllaç anterior.
413
- email_subject: El component %{resource_title} ja està actiu per %{participatory_space_title}.
414
- notification_title: El pressupost <a href="%{resource_path}">%{resource_title}</a> a %{participatory_space_title} ja està actiu.
415
407
  open_data:
416
408
  help:
417
409
  projects:
@@ -1,4 +1,3 @@
1
- ---
2
1
  ca:
3
2
  activemodel:
4
3
  attributes:
@@ -91,7 +90,7 @@ ca:
91
90
  invalid: S'ha produït un error en crear aquest projecte.
92
91
  success: Projecte creat correctament.
93
92
  edit:
94
- title: Editar projecte
93
+ title: Editar projecte a "%{budget}"
95
94
  update: Actualitzar
96
95
  index:
97
96
  actions: Accions
@@ -114,7 +113,7 @@ ca:
114
113
  title: Projectes eliminats
115
114
  new:
116
115
  create: Crear
117
- title: Afegir projecte
116
+ title: Nova projecte a "%{budget}"
118
117
  update:
119
118
  invalid: S'ha produït un error en actualitzar aquest projecte.
120
119
  success: Projecte actualitzat correctament.
@@ -215,7 +214,6 @@ ca:
215
214
  total_budget: Pressupost total
216
215
  project:
217
216
  fields:
218
- id: ID
219
217
  map: Mapa
220
218
  taxonomies: Taxonomies
221
219
  title: Títol
@@ -341,6 +339,7 @@ ca:
341
339
  actions:
342
340
  comment: Comentar
343
341
  vote: Vota
342
+ vote_comment: Votar el comentari
344
343
  name: Pressupostos
345
344
  settings:
346
345
  global:
@@ -405,13 +404,6 @@ ca:
405
404
  updated_at: La data i l'hora en què es va actualitzar la petició
406
405
  show:
407
406
  projects: Exportar els projectes
408
- events:
409
- budgets:
410
- budget_published:
411
- email_intro: 'Ja està activa la fase %{resource_title} per a %{participatory_space_title}. Pots veure-la des d''aquesta pàgina:'
412
- email_outro: Has rebut aquesta notificació perquè estàs seguint l'espai "%{participatory_space_title}". Pots deixar de rebre notificacions a través de l'enllaç anterior.
413
- email_subject: El component %{resource_title} ja està actiu per %{participatory_space_title}.
414
- notification_title: El pressupost <a href="%{resource_path}">%{resource_title}</a> a %{participatory_space_title} ja està actiu.
415
407
  open_data:
416
408
  help:
417
409
  projects:
@@ -1,4 +1,3 @@
1
- ---
2
1
  cs:
3
2
  activemodel:
4
3
  attributes:
@@ -95,7 +94,7 @@ cs:
95
94
  invalid: Při vytváření tohoto projektu došlo k chybě.
96
95
  success: Projekt byl úspěšně vytvořen.
97
96
  edit:
98
- title: Upravit projekt
97
+ title: Upravit projekt v %{budget}
99
98
  update: Aktualizace
100
99
  index:
101
100
  actions: Akce
@@ -118,7 +117,7 @@ cs:
118
117
  title: Smazané projekty
119
118
  new:
120
119
  create: Vytvořit
121
- title: Nový projekt
120
+ title: Nový projekt v %{budget}
122
121
  update:
123
122
  invalid: Při aktualizaci tohoto projektu došlo k chybě.
124
123
  success: Projekt byl úspěšně aktualizován.
@@ -223,7 +222,6 @@ cs:
223
222
  total_budget: Celkový rozpočet
224
223
  project:
225
224
  fields:
226
- id: ID
227
225
  map: Mapa
228
226
  taxonomies: Taxonomie
229
227
  title: Titul
@@ -361,6 +359,7 @@ cs:
361
359
  actions:
362
360
  comment: Komentář
363
361
  vote: Hlasovat
362
+ vote_comment: Komentář hlasování
364
363
  name: Rozpočty
365
364
  settings:
366
365
  global:
@@ -425,13 +424,6 @@ cs:
425
424
  updated_at: Datum a čas, kdy byl pokyn aktualizován
426
425
  show:
427
426
  projects: Export projektů
428
- events:
429
- budgets:
430
- budget_published:
431
- email_intro: 'Rozpočet %{resource_title} je nyní aktivní pro %{participatory_space_title}. Můžete jej vidět z této stránky:'
432
- email_outro: Obdrželi jste toto oznámení, protože sledujete %{participatory_space_title}. Můžete přestat přijímat oznámení na předchozím odkazu.
433
- email_subject: Rozpočet %{resource_title} je nyní aktivní pro %{participatory_space_title}.
434
- notification_title: Rozpočet <a href="%{resource_path}">%{resource_title}</a> je nyní aktivní pro %{participatory_space_title}.
435
427
  open_data:
436
428
  help:
437
429
  projects: