decidim-budgets 0.22.0 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +38 -3
- data/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +5 -0
- data/app/cells/decidim/budgets/base_cell.rb +22 -0
- data/app/cells/decidim/budgets/budget_cell.rb +21 -0
- data/app/cells/decidim/budgets/budget_information_modal/show.erb +28 -0
- data/app/cells/decidim/budgets/budget_information_modal_cell.rb +22 -0
- data/app/cells/decidim/budgets/budget_list_item/show.erb +22 -0
- data/app/cells/decidim/budgets/budget_list_item_cell.rb +40 -0
- data/app/cells/decidim/budgets/budget_m/data.erb +12 -0
- data/app/cells/decidim/budgets/budget_m/footer.erb +5 -0
- data/app/cells/decidim/budgets/budget_m_cell.rb +16 -0
- data/app/cells/decidim/budgets/budgets_header/show.erb +7 -0
- data/app/cells/decidim/budgets/budgets_header_cell.rb +14 -0
- data/app/cells/decidim/budgets/budgets_list/card_list.erb +7 -0
- data/app/cells/decidim/budgets/budgets_list/highlighted.erb +11 -0
- data/app/cells/decidim/budgets/budgets_list/show.erb +20 -0
- data/app/cells/decidim/budgets/budgets_list/voted.erb +43 -0
- data/app/cells/decidim/budgets/budgets_list_cell.rb +39 -0
- data/app/cells/decidim/budgets/limit_announcement_cell.rb +52 -0
- data/app/cells/decidim/budgets/project_list_item/project_data.erb +17 -3
- data/app/cells/decidim/budgets/project_list_item/project_data_vote_button.erb +2 -2
- data/app/cells/decidim/budgets/project_list_item/project_text.erb +11 -5
- data/app/cells/decidim/budgets/project_list_item/show.erb +3 -3
- data/app/cells/decidim/budgets/project_list_item_cell.rb +8 -28
- data/app/cells/decidim/budgets/project_m/data.erb +1 -1
- data/app/cells/decidim/budgets/project_m_cell.rb +4 -0
- data/app/cells/decidim/budgets/project_selected_status_cell.rb +28 -0
- data/app/cells/decidim/budgets/project_tags/show.erb +5 -0
- data/app/cells/decidim/budgets/project_tags_cell.rb +18 -0
- data/app/cells/decidim/budgets/project_voted_hint_cell.rb +33 -0
- data/app/cells/decidim/budgets/project_votes_count_cell.rb +44 -0
- data/app/commands/decidim/budgets/add_line_item.rb +7 -10
- data/app/commands/decidim/budgets/admin/create_budget.rb +48 -0
- data/app/commands/decidim/budgets/admin/create_project.rb +12 -7
- data/app/commands/decidim/budgets/admin/destroy_budget.rb +42 -0
- data/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +26 -25
- data/app/commands/decidim/budgets/admin/update_budget.rb +48 -0
- data/app/commands/decidim/budgets/admin/update_project.rb +8 -1
- data/app/commands/decidim/budgets/checkout.rb +6 -6
- data/app/commands/decidim/budgets/remove_line_item.rb +3 -2
- data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +14 -2
- data/app/controllers/concerns/decidim/budgets/orderable.rb +3 -7
- data/app/controllers/decidim/budgets/admin/application_controller.rb +10 -2
- data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +1 -1
- data/app/controllers/decidim/budgets/admin/attachments_controller.rb +2 -2
- data/app/controllers/decidim/budgets/admin/budgets_controller.rb +82 -0
- data/app/controllers/decidim/budgets/admin/projects_controller.rb +7 -7
- data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +10 -2
- data/app/controllers/decidim/budgets/application_controller.rb +23 -0
- data/app/controllers/decidim/budgets/budgets_controller.rb +24 -0
- data/app/controllers/decidim/budgets/line_items_controller.rb +9 -5
- data/app/controllers/decidim/budgets/orders_controller.rb +20 -6
- data/app/controllers/decidim/budgets/projects_controller.rb +19 -18
- data/app/forms/decidim/budgets/admin/budget_form.rb +39 -0
- data/app/forms/decidim/budgets/admin/project_form.rb +14 -10
- data/app/forms/decidim/budgets/admin/project_import_proposals_form.rb +4 -0
- data/app/helpers/decidim/budgets/admin/application_helper.rb +13 -0
- data/app/helpers/decidim/budgets/application_helper.rb +10 -0
- data/app/helpers/decidim/budgets/projects_helper.rb +0 -4
- data/app/mailers/decidim/budgets/order_summary_mailer.rb +5 -3
- data/app/models/decidim/budgets/budget.rb +34 -0
- data/app/models/decidim/budgets/line_item.rb +4 -4
- data/app/models/decidim/budgets/order.rb +22 -19
- data/app/models/decidim/budgets/project.rb +34 -5
- data/app/permissions/decidim/budgets/admin/permissions.rb +23 -10
- data/app/permissions/decidim/budgets/permissions.rb +28 -6
- data/app/presenters/decidim/budgets/admin_log/budget_presenter.rb +42 -0
- data/app/queries/decidim/budgets/filtered_projects.rb +9 -1
- data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +3 -2
- data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +6 -5
- data/app/serializers/decidim/budgets/data_portability_budgets_order_serializer.rb +3 -2
- data/app/services/decidim/budgets/project_search.rb +12 -24
- data/app/types/decidim/budgets/budget_type.rb +24 -0
- data/app/types/decidim/budgets/budgets_type.rb +6 -6
- data/app/types/decidim/budgets/project_type.rb +2 -1
- data/app/views/decidim/budgets/admin/budgets/_form.html.erb +23 -0
- data/app/views/decidim/budgets/admin/budgets/edit.html.erb +7 -0
- data/app/views/decidim/budgets/admin/budgets/index.html.erb +58 -0
- data/app/views/decidim/budgets/admin/budgets/new.html.erb +7 -0
- data/app/views/decidim/budgets/admin/projects/_form.html.erb +12 -4
- data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
- data/app/views/decidim/budgets/admin/projects/index.html.erb +20 -7
- data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -2
- data/app/views/decidim/budgets/admin/proposals_imports/new.html.erb +1 -1
- data/app/views/decidim/budgets/budgets/index.html.erb +5 -0
- data/app/views/decidim/budgets/order_summary_mailer/order_summary.html.erb +1 -0
- data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +3 -3
- data/app/views/decidim/budgets/projects/_budget_summary.html.erb +19 -6
- data/app/views/decidim/budgets/projects/_filters.html.erb +6 -2
- data/app/views/decidim/budgets/projects/_linked_projects.html.erb +1 -1
- data/app/views/decidim/budgets/projects/_order_progress.html.erb +10 -6
- data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
- data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +36 -7
- data/app/views/decidim/budgets/projects/index.html.erb +12 -4
- data/app/views/decidim/budgets/projects/show.html.erb +17 -10
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/ar.yml +2 -11
- data/config/locales/bg.yml +6 -0
- data/config/locales/ca.yml +102 -10
- data/config/locales/cs.yml +105 -13
- data/config/locales/da.yml +1 -0
- data/config/locales/de.yml +90 -9
- data/config/locales/el.yml +3 -9
- data/config/locales/en.yml +101 -9
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +101 -9
- data/config/locales/es-PY.yml +101 -9
- data/config/locales/es.yml +102 -10
- data/config/locales/et.yml +1 -0
- data/config/locales/eu.yml +3 -8
- data/config/locales/fi-plain.yml +102 -10
- data/config/locales/fi.yml +103 -11
- data/config/locales/fr-CA.yml +100 -9
- data/config/locales/fr.yml +100 -9
- data/config/locales/gl.yml +2 -7
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +2 -7
- data/config/locales/id-ID.yml +2 -6
- data/config/locales/is-IS.yml +0 -6
- data/config/locales/is.yml +114 -0
- data/config/locales/it.yml +71 -9
- data/config/locales/ja-JP.yml +1 -0
- data/config/locales/ja.yml +262 -0
- data/config/locales/ko-KR.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt.yml +1 -0
- data/config/locales/{lv-LV.yml → lv.yml} +2 -10
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +88 -10
- data/config/locales/no.yml +22 -9
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +113 -22
- data/config/locales/pt-BR.yml +2 -7
- data/config/locales/pt.yml +3 -9
- data/config/locales/ro-RO.yml +3 -10
- data/config/locales/ru.yml +2 -9
- data/config/locales/sk.yml +2 -11
- data/config/locales/sl.yml +0 -4
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sr-CS.yml +0 -2
- data/config/locales/sv.yml +80 -9
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/tr-TR.yml +2 -7
- data/config/locales/uk.yml +2 -9
- data/config/locales/vi-VN.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +260 -0
- data/config/locales/zh-TW.yml +1 -0
- data/db/migrate/20200617105120_create_decidim_budgets.rb +15 -0
- data/db/migrate/20200629072626_rename_budget_to_budget_ammount.rb +7 -0
- data/db/migrate/20200629134013_add_budget_reference_to_project.rb +7 -0
- data/db/migrate/20200706142609_add_budget_reference_to_order.rb +7 -0
- data/db/migrate/20200714103519_move_budgets_to_own_model.rb +109 -0
- data/db/migrate/20200717140012_add_scope_to_budgets.rb +7 -0
- data/db/migrate/20200728075039_add_selected_at_to_project.rb +7 -0
- data/db/migrate/20200804175222_votes_enabled_to_votes_choices.rb +35 -0
- data/db/migrate/20200827154129_add_commentable_counter_cache_to_projects.rb +9 -0
- data/lib/decidim/budgets.rb +1 -0
- data/lib/decidim/budgets/admin_engine.rb +10 -5
- data/lib/decidim/budgets/component.rb +83 -38
- data/lib/decidim/budgets/engine.rb +8 -6
- data/lib/decidim/budgets/test/factories.rb +42 -13
- data/lib/decidim/budgets/version.rb +1 -1
- data/lib/decidim/budgets/workflows.rb +17 -0
- data/lib/decidim/budgets/workflows/all.rb +20 -0
- data/lib/decidim/budgets/workflows/base.rb +132 -0
- data/lib/decidim/budgets/workflows/one.rb +33 -0
- metadata +84 -17
- data/app/cells/decidim/budgets/project_list_item/project_data_number.erb +0 -3
- data/app/cells/decidim/budgets/project_list_item/project_data_votes.erb +0 -7
data/config/locales/uk.yml
CHANGED
@@ -2,7 +2,6 @@ uk:
|
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
4
|
project:
|
5
|
-
budget: Бюджет
|
6
5
|
decidim_category_id: Категорія
|
7
6
|
decidim_scope_id: Обсяг
|
8
7
|
description: Опис
|
@@ -24,7 +23,6 @@ uk:
|
|
24
23
|
destroy: Видалити
|
25
24
|
edit: Редагувати
|
26
25
|
import: Внести до проектів запозичені пропозиції
|
27
|
-
new: Додати новий проект
|
28
26
|
preview: Попередній перегляд
|
29
27
|
title: Дії
|
30
28
|
admin:
|
@@ -69,7 +67,6 @@ uk:
|
|
69
67
|
title: Назва
|
70
68
|
projects:
|
71
69
|
budget_confirm:
|
72
|
-
are_you_sure: Чи ви згодні? Підтвердивши свій голос, ви не зможете його потім змінити.
|
73
70
|
cancel: Скасувати
|
74
71
|
confirm: Підтвердити
|
75
72
|
description: Ось проекти, які ви обрали складовими бюджету.
|
@@ -114,11 +111,6 @@ uk:
|
|
114
111
|
other: обраних проектів
|
115
112
|
view: Переглянути
|
116
113
|
project:
|
117
|
-
count:
|
118
|
-
one: 1 людина підтримує
|
119
|
-
few: "%{count} людей підтримує"
|
120
|
-
many: "%{count} людей підтримують"
|
121
|
-
other: "%{count} людей підтримують"
|
122
114
|
view: Переглянути
|
123
115
|
show:
|
124
116
|
budget: Бюджет
|
@@ -140,7 +132,8 @@ uk:
|
|
140
132
|
announcement: Оголошення
|
141
133
|
comments_blocked: Коментарі вимкнено
|
142
134
|
show_votes: Показати голоси
|
143
|
-
|
135
|
+
votes_choices:
|
136
|
+
enabled: Голосування увімкнене
|
144
137
|
orders:
|
145
138
|
checkout:
|
146
139
|
error: При обробці вашого голосу сталася помилка
|
@@ -0,0 +1 @@
|
|
1
|
+
vi:
|
@@ -0,0 +1 @@
|
|
1
|
+
vi:
|
@@ -0,0 +1,260 @@
|
|
1
|
+
zh-CN:
|
2
|
+
activemodel:
|
3
|
+
attributes:
|
4
|
+
budget:
|
5
|
+
decidim_scope_id: 范围
|
6
|
+
description: 描述
|
7
|
+
title: 标题
|
8
|
+
total_budget: 预算总额
|
9
|
+
weight: 权重
|
10
|
+
project:
|
11
|
+
budget_amount: 预算金额
|
12
|
+
decidim_category_id: 类别
|
13
|
+
decidim_scope_id: 范围
|
14
|
+
description: 描述
|
15
|
+
proposal_ids: 有关提议
|
16
|
+
title: 标题
|
17
|
+
activerecord:
|
18
|
+
models:
|
19
|
+
decidim/budgets/project:
|
20
|
+
other: 项目
|
21
|
+
decidim:
|
22
|
+
budgets:
|
23
|
+
actions:
|
24
|
+
attachment_collections: 文件夹
|
25
|
+
attachments: 附件
|
26
|
+
confirm_destroy: 您确定要删除此项目吗?
|
27
|
+
destroy: 删除
|
28
|
+
edit: 编辑
|
29
|
+
edit_projects: 管理项目
|
30
|
+
import: 导入提案到项目
|
31
|
+
new: 新建 %{name}
|
32
|
+
preview: 预览
|
33
|
+
title: 行动
|
34
|
+
admin:
|
35
|
+
budgets:
|
36
|
+
create:
|
37
|
+
invalid: 创建此预算时出现问题
|
38
|
+
success: 预算创建成功
|
39
|
+
destroy:
|
40
|
+
invalid: 删除这个预算时出错
|
41
|
+
success: 预算已成功删除
|
42
|
+
edit:
|
43
|
+
title: 编辑预算
|
44
|
+
update: 更新预算
|
45
|
+
index:
|
46
|
+
title: 预算
|
47
|
+
new:
|
48
|
+
create: 创建预算
|
49
|
+
title: 新预算
|
50
|
+
update:
|
51
|
+
invalid: 更新这个预算时出现问题
|
52
|
+
success: 预算已成功更新
|
53
|
+
models:
|
54
|
+
budget:
|
55
|
+
name: 三. 预算
|
56
|
+
project:
|
57
|
+
name: 项目
|
58
|
+
projects:
|
59
|
+
create:
|
60
|
+
invalid: 创建此项目时出现问题
|
61
|
+
success: 项目创建成功
|
62
|
+
destroy:
|
63
|
+
success: 工程删除成功
|
64
|
+
edit:
|
65
|
+
title: 编辑项目
|
66
|
+
update: 更新
|
67
|
+
index:
|
68
|
+
finished_orders: 完成的投票
|
69
|
+
pending_orders: 待决投票
|
70
|
+
selected: 已选择
|
71
|
+
title: 项目
|
72
|
+
new:
|
73
|
+
create: 创建
|
74
|
+
title: 新建项目
|
75
|
+
update:
|
76
|
+
invalid: 更新此项目时出现问题
|
77
|
+
success: 项目已成功更新
|
78
|
+
proposals_imports:
|
79
|
+
create:
|
80
|
+
invalid: 将建议导入项目时遇到问题
|
81
|
+
success: "%{number} 个建议已成功导入到项目"
|
82
|
+
new:
|
83
|
+
create: 导入提案到项目
|
84
|
+
no_components: 在这个参与性空间中,没有其他提案组成部分可以将提案导入项目。
|
85
|
+
select_component: 请选择一个组件
|
86
|
+
admin_log:
|
87
|
+
budget:
|
88
|
+
create: "%{user_name} 在 %{space_name} 空间中创建了 %{resource_name} 预算"
|
89
|
+
delete: "%{user_name} 删除了 %{resource_name} 在 %{space_name} 空间的预算"
|
90
|
+
update: "%{user_name} 在 %{space_name} 空间中更新了 %{resource_name} 预算"
|
91
|
+
project:
|
92
|
+
create: "%{user_name} 在 %{space_name} 空间中创建了 %{resource_name} 项目"
|
93
|
+
delete: "%{user_name} 在 %{space_name} 空间中删除了 %{resource_name} 项目"
|
94
|
+
update: "%{user_name} 在 %{resource_name} 空间更新 %{space_name} 项目"
|
95
|
+
budget:
|
96
|
+
view: 查看所有预算项目
|
97
|
+
budget_information_modal:
|
98
|
+
back_to: 返回 %{component_name}
|
99
|
+
close_modal: 关闭模式
|
100
|
+
continue: 继续
|
101
|
+
more_information: 更多信息
|
102
|
+
budgets_list:
|
103
|
+
cancel_order:
|
104
|
+
more_than_one: 删除您对 %{name} 的投票并开始
|
105
|
+
only_one: 删除您的投票并重新开始
|
106
|
+
finished_message: 您已经完成投票过程。感谢您的参与!
|
107
|
+
highlighted_cta: 对 %{name} 投票
|
108
|
+
if_change_opinion: 如果你改变了主意,你可以:
|
109
|
+
my_budgets: 我的预算
|
110
|
+
voted_on: 您已对 %{links} 投票
|
111
|
+
limit_announcement:
|
112
|
+
cant_vote: 您不能对此预算进行投票。 <a href="%{landing_path}">请尝试另一个预算</a>。
|
113
|
+
limit_reached: 您在 %{links}有活跃的投票。要对此预算进行投票,您必须 <a href="%{landing_path}">删除您的投票并开始于</a> 开始投票。
|
114
|
+
models:
|
115
|
+
budget:
|
116
|
+
fields:
|
117
|
+
name: 名称
|
118
|
+
projects_count: 项目计数
|
119
|
+
total_budget: 预算总额
|
120
|
+
project:
|
121
|
+
fields:
|
122
|
+
title: 标题
|
123
|
+
order_summary_mailer:
|
124
|
+
order_summary:
|
125
|
+
selected_projects: '您选择的项目是:'
|
126
|
+
subject: 您已经在 %{space_name} 参与性空间上投票
|
127
|
+
voted_on_space: 您在 %{budget_name} 的参与性空间中投票了 %{space_name} 的预算。
|
128
|
+
projects:
|
129
|
+
budget_confirm:
|
130
|
+
are_you_sure: 如果你改变主意,你可以稍后更改你的投票。
|
131
|
+
cancel: 取消
|
132
|
+
confirm: 确认
|
133
|
+
description: 这些是你选择作为预算一部分的项目。
|
134
|
+
title: 确认投票
|
135
|
+
budget_excess:
|
136
|
+
close: 关闭
|
137
|
+
description: 此项目超出了最大预算,无法添加。 如果你想要,你可以删除一个你已经选择添加的项目,或者选择你的首选项投票。
|
138
|
+
ok: 好的
|
139
|
+
title: 超出最大预算
|
140
|
+
budget_summary:
|
141
|
+
are_you_sure: 您确定要取消您的投票吗?
|
142
|
+
assigned: '已指派:'
|
143
|
+
cancel_order: 删除您的投票并开始
|
144
|
+
checked_out:
|
145
|
+
description: 您已经投票给了预算。如果您改变了主意,您可以 %{cancel_link}。
|
146
|
+
title: 预算投票完成
|
147
|
+
description: 你认为我们应该为哪些项目分配预算? 给您想要的项目分配至少 %{minimum_budget} ,并且以您的首选项投票来定义预算。
|
148
|
+
description_minimum_projects_rule: 你认为我们应该为哪些项目分配预算? 选择至少 %{minimum_number} 个项目,您想要并以您的首选项投票来定义预算。
|
149
|
+
title: 您决定预算
|
150
|
+
count:
|
151
|
+
projects_count:
|
152
|
+
other: "%{count} 个项目"
|
153
|
+
filters:
|
154
|
+
category: 类别
|
155
|
+
scope: 范围
|
156
|
+
search: 搜索
|
157
|
+
status: 状态
|
158
|
+
status_values:
|
159
|
+
all: 所有的
|
160
|
+
not_selected: 未选择
|
161
|
+
selected: 已选择
|
162
|
+
filters_small_view:
|
163
|
+
close_modal: 关闭模式
|
164
|
+
filter: 筛选器
|
165
|
+
filter_by: 筛选方式
|
166
|
+
unfold: 展开...
|
167
|
+
order_progress:
|
168
|
+
vote: 投票
|
169
|
+
order_selected_projects:
|
170
|
+
remove: 删除
|
171
|
+
selected_projects:
|
172
|
+
other: 已选择的项目
|
173
|
+
view: 查看
|
174
|
+
orders:
|
175
|
+
highest_cost: 最高成本
|
176
|
+
label: 项目订购方式
|
177
|
+
lowest_cost: 最低成本
|
178
|
+
most_voted: 最多投票
|
179
|
+
random: 随机顺序
|
180
|
+
selected: 已选择
|
181
|
+
project:
|
182
|
+
add: 将项目 %{resource_name} 添加到您的投票
|
183
|
+
remove: 从您的投票中删除项目 %{resource_name}
|
184
|
+
selected: 已选择
|
185
|
+
view: 查看
|
186
|
+
votes:
|
187
|
+
other: 投票
|
188
|
+
you_voted: 您投票了
|
189
|
+
project_budget_button:
|
190
|
+
add: 添加到您的投票
|
191
|
+
add_descriptive: 将项目 %{resource_name} 添加到您的投票
|
192
|
+
added: 添加到您的投票
|
193
|
+
added_descriptive: 项目 %{resource_name} 添加到您的投票
|
194
|
+
projects_for: '%{name} 的项目'
|
195
|
+
show:
|
196
|
+
budget: 三. 预算
|
197
|
+
view_all_projects: 查看所有项目
|
198
|
+
components:
|
199
|
+
budgets:
|
200
|
+
actions:
|
201
|
+
vote: 投票
|
202
|
+
name: 预算
|
203
|
+
settings:
|
204
|
+
global:
|
205
|
+
announcement: 通 知
|
206
|
+
comments_enabled: 评论已启用
|
207
|
+
comments_max_length: 评论最大长度 (默认值留0)
|
208
|
+
form:
|
209
|
+
errors:
|
210
|
+
budget_voting_rule_only_one: 只能启用一个投票规则
|
211
|
+
budget_voting_rule_required: 需要一个投票规则
|
212
|
+
landing_page_content: 预算登陆页
|
213
|
+
more_information_modal: 更多信息模式
|
214
|
+
projects_per_page: 每页项目数
|
215
|
+
resources_permissions_enabled: 每次会议都可以设置动作权限
|
216
|
+
scope_id: 范围
|
217
|
+
scopes_enabled: 范围已启用
|
218
|
+
title: 标题
|
219
|
+
total_budget: 预算总额
|
220
|
+
vote_minimum_budget_projects_number: 要投票的项目最小数量
|
221
|
+
vote_rule_minimum_budget_projects_enabled: '启用规则:要投票的项目最小数量'
|
222
|
+
vote_rule_threshold_percent_enabled: '启用规则:最小预算百分比'
|
223
|
+
vote_threshold_percent: 投票阈值百分比
|
224
|
+
workflow: 工作流
|
225
|
+
workflow_choices:
|
226
|
+
all: '投票:允许参与者在所有预算中投票。'
|
227
|
+
one: '一次投票:允许与会者在任何预算中投票,但只能在一个预算中投票。'
|
228
|
+
step:
|
229
|
+
announcement: 通 知
|
230
|
+
comments_blocked: 评论已阻止
|
231
|
+
highlighted_heading: 高亮标题
|
232
|
+
landing_page_content: 预算登陆页
|
233
|
+
list_heading: 列表标题
|
234
|
+
more_information_modal: 更多信息模式
|
235
|
+
show_votes: 显示投票
|
236
|
+
title: 标题
|
237
|
+
votes: 表 决
|
238
|
+
votes_choices:
|
239
|
+
disabled: 投票已禁用
|
240
|
+
finished: 投票结束
|
241
|
+
events:
|
242
|
+
budgets:
|
243
|
+
budget_published:
|
244
|
+
email_intro: '%{resource_title} 的预算现在为 %{participatory_space_title}激活。您可以从这个页面查看:'
|
245
|
+
email_outro: 您收到此通知是因为您正在关注 %{participatory_space_title}。您可以停止收到跟随上一个链接的通知。
|
246
|
+
email_subject: '%{resource_title} 的预算现在在 %{participatory_space_title} 处于活动状态。'
|
247
|
+
notification_title: <a href="%{resource_path}">%{resource_title}</a> 预算现在已经在 %{participatory_space_title} 中生效。
|
248
|
+
orders:
|
249
|
+
checkout:
|
250
|
+
error: 处理您的投票时出现问题
|
251
|
+
success: 您的投票已被接受
|
252
|
+
destroy:
|
253
|
+
error: 取消投票时出现问题
|
254
|
+
success: 您的投票已成功取消
|
255
|
+
resource_links:
|
256
|
+
included_proposals:
|
257
|
+
project_proposal: '本项目中的建议:'
|
258
|
+
index:
|
259
|
+
confirmed_orders_count: 所得票数
|
260
|
+
total_budget: 预算总额
|
@@ -0,0 +1 @@
|
|
1
|
+
zh-TW:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateDecidimBudgets < ActiveRecord::Migration[5.0]
|
4
|
+
def change
|
5
|
+
create_table :decidim_budgets_budgets do |t|
|
6
|
+
t.jsonb :title
|
7
|
+
t.integer :weight, null: false, default: 0
|
8
|
+
t.jsonb :description
|
9
|
+
t.integer :total_budget, default: 0
|
10
|
+
t.references :decidim_component, index: true
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class MoveBudgetsToOwnModel < ActiveRecord::Migration[5.2]
|
4
|
+
class Component < ApplicationRecord
|
5
|
+
self.table_name = :decidim_components
|
6
|
+
end
|
7
|
+
|
8
|
+
class Budget < ApplicationRecord
|
9
|
+
self.table_name = :decidim_budgets_budgets
|
10
|
+
end
|
11
|
+
|
12
|
+
class Project < ApplicationRecord
|
13
|
+
self.table_name = :decidim_budgets_projects
|
14
|
+
end
|
15
|
+
|
16
|
+
class Order < ApplicationRecord
|
17
|
+
self.table_name = :decidim_budgets_orders
|
18
|
+
end
|
19
|
+
|
20
|
+
def up
|
21
|
+
Project.reset_column_information
|
22
|
+
Order.reset_column_information
|
23
|
+
|
24
|
+
budget_components.each do |component|
|
25
|
+
resource = create_budget_resource_from(component)
|
26
|
+
|
27
|
+
add_budget_references_to_projects(resource)
|
28
|
+
add_budget_reference_to_orders(resource)
|
29
|
+
end
|
30
|
+
|
31
|
+
remove_column :decidim_budgets_projects, :decidim_component_id
|
32
|
+
remove_column :decidim_budgets_orders, :decidim_component_id
|
33
|
+
end
|
34
|
+
|
35
|
+
def down
|
36
|
+
add_column :decidim_budgets_projects, :decidim_component_id, :integer, index: true
|
37
|
+
add_column :decidim_budgets_orders, :decidim_component_id, :integer, index: true
|
38
|
+
|
39
|
+
Budget.find_each do |resource|
|
40
|
+
revert_budget_to_component(resource)
|
41
|
+
if resource
|
42
|
+
add_component_reference_to_projects(resource)
|
43
|
+
add_component_reference_to_orders(resource)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# up methods
|
49
|
+
def budget_components
|
50
|
+
@budget_components ||= Component.where(manifest_name: "budgets")
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_budget_resource_from(component)
|
54
|
+
component_total_budget = if component["settings"].dig("global", "total_budget")
|
55
|
+
component["settings"]["global"]["total_budget"]
|
56
|
+
else
|
57
|
+
100_000_000
|
58
|
+
end
|
59
|
+
|
60
|
+
Budget.create!(
|
61
|
+
decidim_component_id: component.id,
|
62
|
+
total_budget: component_total_budget,
|
63
|
+
title: component.name
|
64
|
+
)
|
65
|
+
end
|
66
|
+
|
67
|
+
def add_budget_references_to_projects(resource)
|
68
|
+
# rubocop:disable Rails/SkipsModelValidations
|
69
|
+
Project.where(decidim_component_id: resource.decidim_component_id)
|
70
|
+
.update_all(decidim_budgets_budget_id: resource.id)
|
71
|
+
# rubocop:enable Rails/SkipsModelValidations
|
72
|
+
end
|
73
|
+
|
74
|
+
def add_budget_reference_to_orders(resource)
|
75
|
+
# rubocop:disable Rails/SkipsModelValidations
|
76
|
+
Order.where(decidim_component_id: resource.decidim_component_id)
|
77
|
+
.update_all(decidim_budgets_budget_id: resource.id)
|
78
|
+
# rubocop:enable Rails/SkipsModelValidations
|
79
|
+
end
|
80
|
+
|
81
|
+
# down methods
|
82
|
+
|
83
|
+
def revert_budget_to_component(resource)
|
84
|
+
component = Component.find_by(id: resource.decidim_component_id, manifest_name: "budgets")
|
85
|
+
component_settings = if resource.total_budget && component["settings"].try(:key?, "global")
|
86
|
+
component["settings"]["global"].merge!(total_budget: resource.total_budget)
|
87
|
+
component["settings"]
|
88
|
+
end
|
89
|
+
|
90
|
+
component.update!(
|
91
|
+
settings: component_settings,
|
92
|
+
name: resource.title
|
93
|
+
)
|
94
|
+
end
|
95
|
+
|
96
|
+
def add_component_reference_to_orders(resource)
|
97
|
+
# rubocop:disable Rails/SkipsModelValidations
|
98
|
+
Order.where(decidim_budgets_budget_id: resource.id)
|
99
|
+
.update_all(decidim_component_id: resource.decidim_component_id)
|
100
|
+
# rubocop:enable Rails/SkipsModelValidations
|
101
|
+
end
|
102
|
+
|
103
|
+
def add_component_reference_to_projects(resource)
|
104
|
+
# rubocop:disable Rails/SkipsModelValidations
|
105
|
+
Project.where(decidim_budgets_budget_id: resource.id)
|
106
|
+
.update_all(decidim_component_id: resource.decidim_component_id)
|
107
|
+
# rubocop:enable Rails/SkipsModelValidations
|
108
|
+
end
|
109
|
+
end
|