decidim-budgets 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -3
  3. data/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +5 -0
  4. data/app/cells/decidim/budgets/base_cell.rb +22 -0
  5. data/app/cells/decidim/budgets/budget_cell.rb +21 -0
  6. data/app/cells/decidim/budgets/budget_information_modal/show.erb +28 -0
  7. data/app/cells/decidim/budgets/budget_information_modal_cell.rb +22 -0
  8. data/app/cells/decidim/budgets/budget_list_item/show.erb +22 -0
  9. data/app/cells/decidim/budgets/budget_list_item_cell.rb +40 -0
  10. data/app/cells/decidim/budgets/budget_m/data.erb +12 -0
  11. data/app/cells/decidim/budgets/budget_m/footer.erb +5 -0
  12. data/app/cells/decidim/budgets/budget_m_cell.rb +16 -0
  13. data/app/cells/decidim/budgets/budgets_header/show.erb +7 -0
  14. data/app/cells/decidim/budgets/budgets_header_cell.rb +14 -0
  15. data/app/cells/decidim/budgets/budgets_list/card_list.erb +7 -0
  16. data/app/cells/decidim/budgets/budgets_list/highlighted.erb +11 -0
  17. data/app/cells/decidim/budgets/budgets_list/show.erb +20 -0
  18. data/app/cells/decidim/budgets/budgets_list/voted.erb +43 -0
  19. data/app/cells/decidim/budgets/budgets_list_cell.rb +39 -0
  20. data/app/cells/decidim/budgets/limit_announcement_cell.rb +52 -0
  21. data/app/cells/decidim/budgets/project_list_item/project_data.erb +17 -3
  22. data/app/cells/decidim/budgets/project_list_item/project_data_vote_button.erb +2 -2
  23. data/app/cells/decidim/budgets/project_list_item/project_text.erb +11 -5
  24. data/app/cells/decidim/budgets/project_list_item/show.erb +3 -3
  25. data/app/cells/decidim/budgets/project_list_item_cell.rb +8 -28
  26. data/app/cells/decidim/budgets/project_m/data.erb +1 -1
  27. data/app/cells/decidim/budgets/project_m_cell.rb +4 -0
  28. data/app/cells/decidim/budgets/project_selected_status_cell.rb +28 -0
  29. data/app/cells/decidim/budgets/project_tags/show.erb +5 -0
  30. data/app/cells/decidim/budgets/project_tags_cell.rb +18 -0
  31. data/app/cells/decidim/budgets/project_voted_hint_cell.rb +33 -0
  32. data/app/cells/decidim/budgets/project_votes_count_cell.rb +44 -0
  33. data/app/commands/decidim/budgets/add_line_item.rb +7 -10
  34. data/app/commands/decidim/budgets/admin/create_budget.rb +48 -0
  35. data/app/commands/decidim/budgets/admin/create_project.rb +12 -7
  36. data/app/commands/decidim/budgets/admin/destroy_budget.rb +42 -0
  37. data/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +26 -25
  38. data/app/commands/decidim/budgets/admin/update_budget.rb +48 -0
  39. data/app/commands/decidim/budgets/admin/update_project.rb +8 -1
  40. data/app/commands/decidim/budgets/checkout.rb +6 -6
  41. data/app/commands/decidim/budgets/remove_line_item.rb +3 -2
  42. data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +14 -2
  43. data/app/controllers/concerns/decidim/budgets/orderable.rb +3 -7
  44. data/app/controllers/decidim/budgets/admin/application_controller.rb +10 -2
  45. data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +1 -1
  46. data/app/controllers/decidim/budgets/admin/attachments_controller.rb +2 -2
  47. data/app/controllers/decidim/budgets/admin/budgets_controller.rb +82 -0
  48. data/app/controllers/decidim/budgets/admin/projects_controller.rb +7 -7
  49. data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +10 -2
  50. data/app/controllers/decidim/budgets/application_controller.rb +23 -0
  51. data/app/controllers/decidim/budgets/budgets_controller.rb +24 -0
  52. data/app/controllers/decidim/budgets/line_items_controller.rb +9 -5
  53. data/app/controllers/decidim/budgets/orders_controller.rb +20 -6
  54. data/app/controllers/decidim/budgets/projects_controller.rb +19 -18
  55. data/app/forms/decidim/budgets/admin/budget_form.rb +39 -0
  56. data/app/forms/decidim/budgets/admin/project_form.rb +14 -10
  57. data/app/forms/decidim/budgets/admin/project_import_proposals_form.rb +4 -0
  58. data/app/helpers/decidim/budgets/admin/application_helper.rb +13 -0
  59. data/app/helpers/decidim/budgets/application_helper.rb +10 -0
  60. data/app/helpers/decidim/budgets/projects_helper.rb +0 -4
  61. data/app/mailers/decidim/budgets/order_summary_mailer.rb +5 -3
  62. data/app/models/decidim/budgets/budget.rb +34 -0
  63. data/app/models/decidim/budgets/line_item.rb +4 -4
  64. data/app/models/decidim/budgets/order.rb +22 -19
  65. data/app/models/decidim/budgets/project.rb +34 -5
  66. data/app/permissions/decidim/budgets/admin/permissions.rb +23 -10
  67. data/app/permissions/decidim/budgets/permissions.rb +28 -6
  68. data/app/presenters/decidim/budgets/admin_log/budget_presenter.rb +42 -0
  69. data/app/queries/decidim/budgets/filtered_projects.rb +9 -1
  70. data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +3 -2
  71. data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +6 -5
  72. data/app/serializers/decidim/budgets/data_portability_budgets_order_serializer.rb +3 -2
  73. data/app/services/decidim/budgets/project_search.rb +12 -24
  74. data/app/types/decidim/budgets/budget_type.rb +24 -0
  75. data/app/types/decidim/budgets/budgets_type.rb +6 -6
  76. data/app/types/decidim/budgets/project_type.rb +2 -1
  77. data/app/views/decidim/budgets/admin/budgets/_form.html.erb +23 -0
  78. data/app/views/decidim/budgets/admin/budgets/edit.html.erb +7 -0
  79. data/app/views/decidim/budgets/admin/budgets/index.html.erb +58 -0
  80. data/app/views/decidim/budgets/admin/budgets/new.html.erb +7 -0
  81. data/app/views/decidim/budgets/admin/projects/_form.html.erb +12 -4
  82. data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
  83. data/app/views/decidim/budgets/admin/projects/index.html.erb +20 -7
  84. data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -2
  85. data/app/views/decidim/budgets/admin/proposals_imports/new.html.erb +1 -1
  86. data/app/views/decidim/budgets/budgets/index.html.erb +5 -0
  87. data/app/views/decidim/budgets/order_summary_mailer/order_summary.html.erb +1 -0
  88. data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +3 -3
  89. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +19 -6
  90. data/app/views/decidim/budgets/projects/_filters.html.erb +6 -2
  91. data/app/views/decidim/budgets/projects/_linked_projects.html.erb +1 -1
  92. data/app/views/decidim/budgets/projects/_order_progress.html.erb +10 -6
  93. data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
  94. data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +36 -7
  95. data/app/views/decidim/budgets/projects/index.html.erb +12 -4
  96. data/app/views/decidim/budgets/projects/show.html.erb +17 -10
  97. data/config/locales/am-ET.yml +1 -0
  98. data/config/locales/ar.yml +2 -11
  99. data/config/locales/bg.yml +6 -0
  100. data/config/locales/ca.yml +102 -10
  101. data/config/locales/cs.yml +105 -13
  102. data/config/locales/da.yml +1 -0
  103. data/config/locales/de.yml +90 -9
  104. data/config/locales/el.yml +3 -9
  105. data/config/locales/en.yml +101 -9
  106. data/config/locales/eo.yml +1 -0
  107. data/config/locales/es-MX.yml +101 -9
  108. data/config/locales/es-PY.yml +101 -9
  109. data/config/locales/es.yml +102 -10
  110. data/config/locales/et.yml +1 -0
  111. data/config/locales/eu.yml +3 -8
  112. data/config/locales/fi-plain.yml +102 -10
  113. data/config/locales/fi.yml +103 -11
  114. data/config/locales/fr-CA.yml +100 -9
  115. data/config/locales/fr.yml +100 -9
  116. data/config/locales/gl.yml +2 -7
  117. data/config/locales/hr.yml +1 -0
  118. data/config/locales/hu.yml +2 -7
  119. data/config/locales/id-ID.yml +2 -6
  120. data/config/locales/is-IS.yml +0 -6
  121. data/config/locales/is.yml +114 -0
  122. data/config/locales/it.yml +71 -9
  123. data/config/locales/ja-JP.yml +1 -0
  124. data/config/locales/ja.yml +262 -0
  125. data/config/locales/ko-KR.yml +1 -0
  126. data/config/locales/ko.yml +1 -0
  127. data/config/locales/lt.yml +1 -0
  128. data/config/locales/{lv-LV.yml → lv.yml} +2 -10
  129. data/config/locales/mt.yml +1 -0
  130. data/config/locales/nl.yml +88 -10
  131. data/config/locales/no.yml +22 -9
  132. data/config/locales/om-ET.yml +1 -0
  133. data/config/locales/pl.yml +113 -22
  134. data/config/locales/pt-BR.yml +2 -7
  135. data/config/locales/pt.yml +3 -9
  136. data/config/locales/ro-RO.yml +3 -10
  137. data/config/locales/ru.yml +2 -9
  138. data/config/locales/sk.yml +2 -11
  139. data/config/locales/sl.yml +0 -4
  140. data/config/locales/so-SO.yml +1 -0
  141. data/config/locales/sr-CS.yml +0 -2
  142. data/config/locales/sv.yml +80 -9
  143. data/config/locales/ti-ER.yml +1 -0
  144. data/config/locales/tr-TR.yml +2 -7
  145. data/config/locales/uk.yml +2 -9
  146. data/config/locales/vi-VN.yml +1 -0
  147. data/config/locales/vi.yml +1 -0
  148. data/config/locales/zh-CN.yml +260 -0
  149. data/config/locales/zh-TW.yml +1 -0
  150. data/db/migrate/20200617105120_create_decidim_budgets.rb +15 -0
  151. data/db/migrate/20200629072626_rename_budget_to_budget_ammount.rb +7 -0
  152. data/db/migrate/20200629134013_add_budget_reference_to_project.rb +7 -0
  153. data/db/migrate/20200706142609_add_budget_reference_to_order.rb +7 -0
  154. data/db/migrate/20200714103519_move_budgets_to_own_model.rb +109 -0
  155. data/db/migrate/20200717140012_add_scope_to_budgets.rb +7 -0
  156. data/db/migrate/20200728075039_add_selected_at_to_project.rb +7 -0
  157. data/db/migrate/20200804175222_votes_enabled_to_votes_choices.rb +35 -0
  158. data/db/migrate/20200827154129_add_commentable_counter_cache_to_projects.rb +9 -0
  159. data/lib/decidim/budgets.rb +1 -0
  160. data/lib/decidim/budgets/admin_engine.rb +10 -5
  161. data/lib/decidim/budgets/component.rb +83 -38
  162. data/lib/decidim/budgets/engine.rb +8 -6
  163. data/lib/decidim/budgets/test/factories.rb +42 -13
  164. data/lib/decidim/budgets/version.rb +1 -1
  165. data/lib/decidim/budgets/workflows.rb +17 -0
  166. data/lib/decidim/budgets/workflows/all.rb +20 -0
  167. data/lib/decidim/budgets/workflows/base.rb +132 -0
  168. data/lib/decidim/budgets/workflows/one.rb +33 -0
  169. metadata +84 -17
  170. data/app/cells/decidim/budgets/project_list_item/project_data_number.erb +0 -3
  171. data/app/cells/decidim/budgets/project_list_item/project_data_votes.erb +0 -7
@@ -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
- votes_enabled: Голосування увімкнене
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,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameBudgetToBudgetAmmount < ActiveRecord::Migration[5.2]
4
+ def change
5
+ rename_column :decidim_budgets_projects, :budget, :budget_amount
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBudgetReferenceToProject < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_reference :decidim_budgets_projects, :decidim_budgets_budget, foreign_key: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddBudgetReferenceToOrder < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_reference :decidim_budgets_orders, :decidim_budgets_budget, foreign_key: true
6
+ end
7
+ 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