decidim-budgets 0.20.1 → 0.23.1

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 (188) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -3
  3. data/app/assets/images/decidim/budgets/icon.svg +1 -11
  4. data/app/assets/javascripts/decidim/budgets/projects.js.es6 +26 -4
  5. data/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +152 -24
  6. data/app/cells/decidim/budgets/base_cell.rb +22 -0
  7. data/app/cells/decidim/budgets/budget_cell.rb +21 -0
  8. data/app/cells/decidim/budgets/budget_information_modal/show.erb +28 -0
  9. data/app/cells/decidim/budgets/budget_information_modal_cell.rb +22 -0
  10. data/app/cells/decidim/budgets/budget_list_item/show.erb +22 -0
  11. data/app/cells/decidim/budgets/budget_list_item_cell.rb +40 -0
  12. data/app/cells/decidim/budgets/budget_m/data.erb +12 -0
  13. data/app/cells/decidim/budgets/budget_m/footer.erb +5 -0
  14. data/app/cells/decidim/budgets/budget_m_cell.rb +16 -0
  15. data/app/cells/decidim/budgets/budgets_header/show.erb +7 -0
  16. data/app/cells/decidim/budgets/budgets_header_cell.rb +14 -0
  17. data/app/cells/decidim/budgets/budgets_list/card_list.erb +7 -0
  18. data/app/cells/decidim/budgets/budgets_list/highlighted.erb +11 -0
  19. data/app/cells/decidim/budgets/budgets_list/show.erb +20 -0
  20. data/app/cells/decidim/budgets/budgets_list/voted.erb +43 -0
  21. data/app/cells/decidim/budgets/budgets_list_cell.rb +39 -0
  22. data/app/cells/decidim/budgets/limit_announcement_cell.rb +52 -0
  23. data/app/cells/decidim/budgets/project_list_item/project_data.erb +19 -0
  24. data/app/cells/decidim/budgets/project_list_item/project_data_vote_button.erb +15 -0
  25. data/app/cells/decidim/budgets/project_list_item/project_image.erb +5 -0
  26. data/app/cells/decidim/budgets/project_list_item/project_text.erb +23 -0
  27. data/app/cells/decidim/budgets/project_list_item/show.erb +5 -0
  28. data/app/cells/decidim/budgets/project_list_item_cell.rb +66 -0
  29. data/app/cells/decidim/budgets/project_m/data.erb +3 -3
  30. data/app/cells/decidim/budgets/project_m/footer.erb +1 -1
  31. data/app/cells/decidim/budgets/project_m_cell.rb +4 -0
  32. data/app/cells/decidim/budgets/project_selected_status_cell.rb +28 -0
  33. data/app/cells/decidim/budgets/project_tags/show.erb +5 -0
  34. data/app/cells/decidim/budgets/project_tags_cell.rb +18 -0
  35. data/app/cells/decidim/budgets/project_voted_hint_cell.rb +33 -0
  36. data/app/cells/decidim/budgets/project_votes_count_cell.rb +44 -0
  37. data/app/commands/decidim/budgets/add_line_item.rb +7 -10
  38. data/app/commands/decidim/budgets/admin/create_budget.rb +48 -0
  39. data/app/commands/decidim/budgets/admin/create_project.rb +26 -11
  40. data/app/commands/decidim/budgets/admin/destroy_budget.rb +42 -0
  41. data/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +26 -25
  42. data/app/commands/decidim/budgets/admin/update_budget.rb +48 -0
  43. data/app/commands/decidim/budgets/admin/update_project.rb +20 -2
  44. data/app/commands/decidim/budgets/checkout.rb +7 -6
  45. data/app/commands/decidim/budgets/remove_line_item.rb +3 -2
  46. data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +18 -2
  47. data/app/controllers/concerns/decidim/budgets/orderable.rb +57 -0
  48. data/app/controllers/decidim/budgets/admin/application_controller.rb +10 -2
  49. data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +1 -1
  50. data/app/controllers/decidim/budgets/admin/attachments_controller.rb +2 -2
  51. data/app/controllers/decidim/budgets/admin/budgets_controller.rb +82 -0
  52. data/app/controllers/decidim/budgets/admin/projects_controller.rb +15 -12
  53. data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +10 -2
  54. data/app/controllers/decidim/budgets/application_controller.rb +23 -0
  55. data/app/controllers/decidim/budgets/budgets_controller.rb +24 -0
  56. data/app/controllers/decidim/budgets/line_items_controller.rb +10 -6
  57. data/app/controllers/decidim/budgets/orders_controller.rb +20 -6
  58. data/app/controllers/decidim/budgets/projects_controller.rb +28 -7
  59. data/app/forms/decidim/budgets/admin/budget_form.rb +39 -0
  60. data/app/forms/decidim/budgets/admin/component_form.rb +44 -0
  61. data/app/forms/decidim/budgets/admin/project_form.rb +25 -9
  62. data/app/forms/decidim/budgets/admin/project_import_proposals_form.rb +4 -0
  63. data/app/helpers/decidim/budgets/admin/application_helper.rb +13 -0
  64. data/app/helpers/decidim/budgets/application_helper.rb +11 -0
  65. data/app/helpers/decidim/budgets/projects_helper.rb +13 -0
  66. data/app/jobs/decidim/budgets/send_order_summary_job.rb +15 -0
  67. data/app/mailers/decidim/budgets/order_summary_mailer.rb +36 -0
  68. data/app/models/decidim/budgets/budget.rb +34 -0
  69. data/app/models/decidim/budgets/line_item.rb +4 -4
  70. data/app/models/decidim/budgets/order.rb +46 -16
  71. data/app/models/decidim/budgets/project.rb +37 -4
  72. data/app/permissions/decidim/budgets/admin/permissions.rb +23 -10
  73. data/app/permissions/decidim/budgets/permissions.rb +28 -6
  74. data/app/presenters/decidim/budgets/admin_log/budget_presenter.rb +42 -0
  75. data/app/queries/decidim/budgets/filtered_projects.rb +9 -1
  76. data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +3 -2
  77. data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +6 -5
  78. data/app/serializers/decidim/budgets/data_portability_budgets_order_serializer.rb +3 -2
  79. data/app/services/decidim/budgets/project_search.rb +13 -17
  80. data/app/types/decidim/budgets/budget_type.rb +24 -0
  81. data/app/types/decidim/budgets/budgets_type.rb +32 -0
  82. data/app/types/decidim/budgets/project_type.rb +26 -0
  83. data/app/views/decidim/budgets/admin/budgets/_form.html.erb +23 -0
  84. data/app/views/decidim/budgets/admin/budgets/edit.html.erb +7 -0
  85. data/app/views/decidim/budgets/admin/budgets/index.html.erb +58 -0
  86. data/app/views/decidim/budgets/admin/budgets/new.html.erb +7 -0
  87. data/app/views/decidim/budgets/admin/projects/_form.html.erb +15 -10
  88. data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
  89. data/app/views/decidim/budgets/admin/projects/index.html.erb +20 -7
  90. data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -2
  91. data/app/views/decidim/budgets/admin/projects/proposals_picker.html.erb +1 -0
  92. data/app/views/decidim/budgets/admin/proposals_imports/new.html.erb +1 -1
  93. data/app/views/decidim/budgets/budgets/index.html.erb +5 -0
  94. data/app/views/decidim/budgets/order_summary_mailer/order_summary.html.erb +22 -0
  95. data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +3 -3
  96. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +26 -7
  97. data/app/views/decidim/budgets/projects/_filters.html.erb +15 -7
  98. data/app/views/decidim/budgets/projects/_linked_projects.html.erb +2 -2
  99. data/app/views/decidim/budgets/projects/_order_progress.html.erb +14 -18
  100. data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
  101. data/app/views/decidim/budgets/projects/_project.html.erb +1 -57
  102. data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +36 -7
  103. data/app/views/decidim/budgets/projects/_projects.html.erb +8 -1
  104. data/app/views/decidim/budgets/projects/index.html.erb +15 -7
  105. data/app/views/decidim/budgets/projects/index.js.erb +8 -0
  106. data/app/views/decidim/budgets/projects/show.html.erb +18 -11
  107. data/config/locales/am-ET.yml +1 -0
  108. data/config/locales/ar.yml +3 -17
  109. data/config/locales/bg-BG.yml +7 -0
  110. data/config/locales/bg.yml +6 -0
  111. data/config/locales/ca.yml +126 -12
  112. data/config/locales/cs.yml +145 -31
  113. data/config/locales/da-DK.yml +1 -0
  114. data/config/locales/da.yml +1 -0
  115. data/config/locales/de.yml +115 -12
  116. data/config/locales/el.yml +169 -0
  117. data/config/locales/en.yml +126 -12
  118. data/config/locales/eo.yml +1 -0
  119. data/config/locales/es-MX.yml +126 -12
  120. data/config/locales/es-PY.yml +126 -12
  121. data/config/locales/es.yml +126 -12
  122. data/config/locales/et-EE.yml +1 -0
  123. data/config/locales/et.yml +1 -0
  124. data/config/locales/eu.yml +4 -14
  125. data/config/locales/fi-plain.yml +127 -13
  126. data/config/locales/fi.yml +137 -23
  127. data/config/locales/fr-CA.yml +266 -0
  128. data/config/locales/fr.yml +125 -12
  129. data/config/locales/ga-IE.yml +1 -0
  130. data/config/locales/gl.yml +3 -13
  131. data/config/locales/hr-HR.yml +1 -0
  132. data/config/locales/hr.yml +1 -0
  133. data/config/locales/hu.yml +19 -13
  134. data/config/locales/id-ID.yml +3 -12
  135. data/config/locales/is-IS.yml +1 -12
  136. data/config/locales/is.yml +114 -0
  137. data/config/locales/it.yml +97 -13
  138. data/config/locales/ja-JP.yml +172 -0
  139. data/config/locales/ja.yml +262 -0
  140. data/config/locales/ko-KR.yml +1 -0
  141. data/config/locales/ko.yml +1 -0
  142. data/config/locales/lt-LT.yml +1 -0
  143. data/config/locales/lt.yml +1 -0
  144. data/config/locales/lv.yml +164 -0
  145. data/config/locales/mt-MT.yml +1 -0
  146. data/config/locales/mt.yml +1 -0
  147. data/config/locales/nl.yml +113 -13
  148. data/config/locales/no.yml +39 -13
  149. data/config/locales/om-ET.yml +1 -0
  150. data/config/locales/pl.yml +175 -62
  151. data/config/locales/pt-BR.yml +4 -14
  152. data/config/locales/pt.yml +63 -47
  153. data/config/locales/ro-RO.yml +172 -0
  154. data/config/locales/ru.yml +3 -15
  155. data/config/locales/sk-SK.yml +180 -0
  156. data/config/locales/sk.yml +166 -0
  157. data/config/locales/sl.yml +1 -0
  158. data/config/locales/so-SO.yml +1 -0
  159. data/config/locales/sr-CS.yml +27 -0
  160. data/config/locales/sv.yml +126 -12
  161. data/config/locales/ti-ER.yml +1 -0
  162. data/config/locales/tr-TR.yml +3 -13
  163. data/config/locales/uk.yml +3 -15
  164. data/config/locales/vi-VN.yml +1 -0
  165. data/config/locales/vi.yml +1 -0
  166. data/config/locales/zh-CN.yml +260 -0
  167. data/config/locales/zh-TW.yml +1 -0
  168. data/db/migrate/20200617105120_create_decidim_budgets.rb +15 -0
  169. data/db/migrate/20200629072626_rename_budget_to_budget_ammount.rb +7 -0
  170. data/db/migrate/20200629134013_add_budget_reference_to_project.rb +7 -0
  171. data/db/migrate/20200706142609_add_budget_reference_to_order.rb +7 -0
  172. data/db/migrate/20200714103519_move_budgets_to_own_model.rb +109 -0
  173. data/db/migrate/20200717140012_add_scope_to_budgets.rb +7 -0
  174. data/db/migrate/20200728075039_add_selected_at_to_project.rb +7 -0
  175. data/db/migrate/20200804175222_votes_enabled_to_votes_choices.rb +35 -0
  176. data/db/migrate/20200827154129_add_commentable_counter_cache_to_projects.rb +9 -0
  177. data/lib/decidim/budgets.rb +1 -0
  178. data/lib/decidim/budgets/admin_engine.rb +12 -5
  179. data/lib/decidim/budgets/component.rb +94 -38
  180. data/lib/decidim/budgets/engine.rb +8 -6
  181. data/lib/decidim/budgets/seeds/city.jpeg +0 -0
  182. data/lib/decidim/budgets/test/factories.rb +71 -9
  183. data/lib/decidim/budgets/version.rb +1 -1
  184. data/lib/decidim/budgets/workflows.rb +17 -0
  185. data/lib/decidim/budgets/workflows/all.rb +20 -0
  186. data/lib/decidim/budgets/workflows/base.rb +132 -0
  187. data/lib/decidim/budgets/workflows/one.rb +33 -0
  188. metadata +121 -16
@@ -0,0 +1 @@
1
+ ti:
@@ -2,7 +2,6 @@ tr:
2
2
  activemodel:
3
3
  attributes:
4
4
  project:
5
- budget: Bütçe
6
5
  decidim_category_id: Kategori
7
6
  decidim_scope_id: kapsam
8
7
  description: Açıklama
@@ -22,7 +21,6 @@ tr:
22
21
  destroy: silmek
23
22
  edit: Düzenle
24
23
  import: Projelere teklif alma
25
- new: Yeni proje
26
24
  preview: Ön izleme
27
25
  title: Eylemler
28
26
  admin:
@@ -67,7 +65,6 @@ tr:
67
65
  title: Başlık
68
66
  projects:
69
67
  budget_confirm:
70
- are_you_sure: Katılıyor musun? Oyunuzu onayladıktan sonra, değiştiremezsiniz.
71
68
  cancel: İptal etmek
72
69
  confirm: Onaylamak
73
70
  description: Bunlar bütçenin bir parçası olmak için seçtiğiniz projeler.
@@ -92,7 +89,7 @@ tr:
92
89
  other: "%{count} proje"
93
90
  filters:
94
91
  category: Kategori
95
- category_prompt: bir kategori seç
92
+ scope: kapsam
96
93
  search: Arama
97
94
  filters_small_view:
98
95
  close_modal: Kalıcı modal
@@ -108,15 +105,7 @@ tr:
108
105
  other: seçilen projeler
109
106
  view: Görünüm
110
107
  project:
111
- add: Eklemek
112
- count:
113
- one: 1 destek
114
- other: "%{count} destek"
115
- remove: Kaldır
116
108
  view: Görünüm
117
- project_budget_button:
118
- add: Eklemek
119
- added: Katma
120
109
  show:
121
110
  budget: Bütçe
122
111
  view_all_projects: Tüm projeleri görüntüle
@@ -137,7 +126,8 @@ tr:
137
126
  announcement: duyuru
138
127
  comments_blocked: Yorumlar engellendi
139
128
  show_votes: Oyları göster
140
- votes_enabled: Oylama etkin
129
+ votes_choices:
130
+ enabled: Oylama etkin
141
131
  orders:
142
132
  checkout:
143
133
  error: Oyunuzu işleme koymada bir sorun oluştu
@@ -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: Ось проекти, які ви обрали складовими бюджету.
@@ -96,7 +93,7 @@ uk:
96
93
  other: "%{count} проектів"
97
94
  filters:
98
95
  category: Категорія
99
- category_prompt: Оберіть категорію
96
+ scope: Обсяг
100
97
  search: Шукати
101
98
  filters_small_view:
102
99
  close_modal: Закрити віконце
@@ -114,17 +111,7 @@ uk:
114
111
  other: обраних проектів
115
112
  view: Переглянути
116
113
  project:
117
- add: Додати
118
- count:
119
- one: 1 людина підтримує
120
- few: "%{count} людей підтримує"
121
- many: "%{count} людей підтримують"
122
- other: "%{count} людей підтримують"
123
- remove: Видалити
124
114
  view: Переглянути
125
- project_budget_button:
126
- add: Додати
127
- added: Додано
128
115
  show:
129
116
  budget: Бюджет
130
117
  view_all_projects: Переглянути всi проекти
@@ -145,7 +132,8 @@ uk:
145
132
  announcement: Оголошення
146
133
  comments_blocked: Коментарі вимкнено
147
134
  show_votes: Показати голоси
148
- votes_enabled: Голосування увімкнене
135
+ votes_choices:
136
+ enabled: Голосування увімкнене
149
137
  orders:
150
138
  checkout:
151
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