decidim-proposals 0.30.2 → 0.31.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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/collaborative_draft_metadata_cell.rb +1 -1
  3. data/app/cells/decidim/proposals/proposal_g_cell.rb +4 -4
  4. data/app/cells/decidim/proposals/proposal_l_cell.rb +4 -4
  5. data/app/cells/decidim/proposals/proposal_metadata_cell.rb +2 -2
  6. data/app/commands/decidim/proposals/admin/{assign_proposals_to_valuator.rb → assign_proposals_to_evaluator.rb} +16 -16
  7. data/app/commands/decidim/proposals/admin/create_proposal.rb +1 -2
  8. data/app/commands/decidim/proposals/admin/create_proposal_note.rb +4 -4
  9. data/app/commands/decidim/proposals/admin/merge_proposals.rb +60 -13
  10. data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +2 -2
  11. data/app/commands/decidim/proposals/admin/proposal_notes_methods.rb +5 -5
  12. data/app/commands/decidim/proposals/admin/reply_proposal_note.rb +1 -1
  13. data/app/commands/decidim/proposals/admin/{unassign_proposals_from_valuator.rb → unassign_proposals_from_evaluator.rb} +7 -7
  14. data/app/commands/decidim/proposals/admin/update_proposal.rb +1 -2
  15. data/app/commands/decidim/proposals/create_collaborative_draft.rb +3 -8
  16. data/app/commands/decidim/proposals/create_proposal.rb +4 -17
  17. data/app/commands/decidim/proposals/publish_collaborative_draft.rb +2 -2
  18. data/app/commands/decidim/proposals/publish_proposal.rb +1 -5
  19. data/app/commands/decidim/proposals/update_collaborative_draft.rb +2 -4
  20. data/app/commands/decidim/proposals/update_proposal.rb +5 -18
  21. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +6 -6
  22. data/app/controllers/concerns/decidim/proposals/orderable.rb +3 -3
  23. data/app/controllers/decidim/proposals/admin/evaluation_assignments_controller.rb +55 -0
  24. data/app/controllers/decidim/proposals/admin/participatory_texts_controller.rb +6 -6
  25. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +1 -1
  26. data/app/controllers/decidim/proposals/admin/proposal_states_controller.rb +2 -2
  27. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +2 -2
  28. data/app/controllers/decidim/proposals/admin/proposals_imports_controller.rb +1 -1
  29. data/app/controllers/decidim/proposals/admin/proposals_merges_controller.rb +12 -3
  30. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +2 -3
  31. data/app/controllers/decidim/proposals/proposals_controller.rb +5 -6
  32. data/app/events/decidim/proposals/admin/{proposal_assigned_to_valuator_event.rb → proposal_assigned_to_evaluator_event.rb} +1 -1
  33. data/app/events/decidim/proposals/{endorsing_enabled_event.rb → liking_enabled_event.rb} +1 -1
  34. data/app/events/decidim/proposals/merged_proposal_event.rb +9 -0
  35. data/app/events/decidim/proposals/proposal_liked_event.rb +33 -0
  36. data/app/forms/decidim/proposals/admin/evaluation_assignment_form.rb +38 -0
  37. data/app/forms/decidim/proposals/admin/proposal_base_form.rb +1 -27
  38. data/app/forms/decidim/proposals/admin/proposals_fork_form.rb +1 -1
  39. data/app/forms/decidim/proposals/admin/proposals_merge_form.rb +58 -2
  40. data/app/forms/decidim/proposals/collaborative_draft_form.rb +1 -5
  41. data/app/forms/decidim/proposals/proposal_form.rb +0 -29
  42. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +8 -8
  43. data/app/helpers/decidim/proposals/admin/proposal_rankings_helper.rb +6 -6
  44. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +2 -17
  45. data/app/helpers/decidim/proposals/application_helper.rb +3 -6
  46. data/app/jobs/decidim/proposals/settings_change_job.rb +6 -6
  47. data/app/models/decidim/proposals/collaborative_draft.rb +1 -1
  48. data/app/models/decidim/proposals/{valuation_assignment.rb → evaluation_assignment.rb} +7 -7
  49. data/app/models/decidim/proposals/proposal.rb +22 -32
  50. data/app/packs/entrypoints/decidim_proposals_admin.js +1 -0
  51. data/app/packs/src/decidim/proposals/add_proposal.js +1 -1
  52. data/app/packs/src/decidim/proposals/admin/proposals.js +22 -11
  53. data/app/packs/src/decidim/proposals/admin/proposals_form.js +1 -1
  54. data/app/packs/src/decidim/proposals/admin/proposals_merge.js +92 -0
  55. data/app/packs/src/decidim/proposals/choose_proposals.js +1 -1
  56. data/app/packs/src/decidim/proposals/exit_handler.js +1 -1
  57. data/app/packs/src/decidim/proposals/utils.js +1 -1
  58. data/app/packs/stylesheets/decidim/proposals/proposals.scss +29 -1
  59. data/app/permissions/decidim/proposals/admin/permissions.rb +20 -20
  60. data/app/presenters/decidim/proposals/admin_log/{valuation_assignment_presenter.rb → evaluation_assignment_presenter.rb} +7 -7
  61. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +15 -0
  62. data/app/presenters/decidim/proposals/admin_log/value_types/{valuator_role_user_presenter.rb → evaluator_role_user_presenter.rb} +2 -2
  63. data/app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb +1 -1
  64. data/app/presenters/decidim/proposals/collaborative_draft_presenter.rb +1 -6
  65. data/app/presenters/decidim/proposals/log/{valuation_assignment_presenter.rb → evaluation_assignment_presenter.rb} +1 -1
  66. data/app/presenters/decidim/proposals/proposal_presenter.rb +9 -13
  67. data/app/services/decidim/proposals/diff_renderer.rb +0 -1
  68. data/app/services/decidim/proposals/proposal_builder.rb +5 -10
  69. data/app/views/decidim/proposals/admin/participatory_texts/_article-preview.html.erb +1 -1
  70. data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +1 -2
  71. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +1 -1
  72. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +1 -1
  73. data/app/views/decidim/proposals/admin/proposal_states/index.html.erb +42 -12
  74. data/app/views/decidim/proposals/admin/proposals/_actions.html.erb +87 -21
  75. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +9 -13
  76. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +2 -24
  77. data/app/views/decidim/proposals/admin/proposals/_likes.html.erb +25 -0
  78. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +13 -12
  79. data/app/views/decidim/proposals/admin/proposals/_proposals-thead.html.erb +1 -1
  80. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_evaluator.html.erb +19 -0
  81. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +45 -49
  82. data/app/views/decidim/proposals/admin/proposals/bulk_actions/{_valuators_picker.html.erb → _evaluators_picker.html.erb} +4 -4
  83. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb +7 -14
  84. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_evaluator.html.erb +19 -0
  85. data/app/views/decidim/proposals/admin/proposals/index.html.erb +9 -5
  86. data/app/views/decidim/proposals/admin/proposals/manage_trash.html.erb +2 -1
  87. data/app/views/decidim/proposals/admin/proposals/show.html.erb +17 -17
  88. data/app/views/decidim/proposals/admin/proposals_merges/_form.html.erb +49 -0
  89. data/app/views/decidim/proposals/admin/proposals_merges/new.html.erb +14 -0
  90. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_actions.html.erb +2 -2
  91. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +1 -21
  92. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -1
  93. data/app/views/decidim/proposals/proposals/_actions.html.erb +2 -2
  94. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +1 -21
  95. data/app/views/decidim/proposals/proposals/_proposal_actions.html.erb +4 -4
  96. data/app/views/decidim/proposals/proposals/_proposal_aside.html.erb +2 -2
  97. data/app/views/decidim/proposals/proposals/_proposal_voting_rules.html.erb +1 -1
  98. data/app/views/decidim/proposals/proposals/participatory_texts/_view_index.html.erb +1 -1
  99. data/app/views/decidim/proposals/proposals/preview.html.erb +1 -1
  100. data/app/views/decidim/proposals/proposals/show.html.erb +2 -2
  101. data/config/assets.rb +2 -2
  102. data/config/locales/ar.yml +0 -65
  103. data/config/locales/bg.yml +0 -71
  104. data/config/locales/bs-BA.yml +0 -25
  105. data/config/locales/ca-IT.yml +64 -72
  106. data/config/locales/ca.yml +64 -72
  107. data/config/locales/cs.yml +52 -81
  108. data/config/locales/de.yml +66 -73
  109. data/config/locales/el.yml +0 -66
  110. data/config/locales/en.yml +69 -77
  111. data/config/locales/es-MX.yml +68 -76
  112. data/config/locales/es-PY.yml +68 -76
  113. data/config/locales/es.yml +68 -76
  114. data/config/locales/eu.yml +66 -74
  115. data/config/locales/fi-plain.yml +67 -75
  116. data/config/locales/fi.yml +67 -75
  117. data/config/locales/fr-CA.yml +49 -74
  118. data/config/locales/fr.yml +49 -74
  119. data/config/locales/ga-IE.yml +0 -22
  120. data/config/locales/gl.yml +0 -47
  121. data/config/locales/hu.yml +0 -64
  122. data/config/locales/id-ID.yml +0 -34
  123. data/config/locales/is-IS.yml +0 -14
  124. data/config/locales/it.yml +0 -58
  125. data/config/locales/ja.yml +68 -76
  126. data/config/locales/lb.yml +0 -3
  127. data/config/locales/lt.yml +0 -68
  128. data/config/locales/lv.yml +0 -62
  129. data/config/locales/nl.yml +0 -63
  130. data/config/locales/no.yml +0 -42
  131. data/config/locales/pl.yml +0 -73
  132. data/config/locales/pt-BR.yml +0 -59
  133. data/config/locales/pt.yml +0 -60
  134. data/config/locales/ro-RO.yml +45 -64
  135. data/config/locales/ru.yml +0 -15
  136. data/config/locales/sk.yml +0 -60
  137. data/config/locales/sr-CS.yml +0 -25
  138. data/config/locales/sv.yml +58 -76
  139. data/config/locales/tr-TR.yml +0 -58
  140. data/config/locales/uk.yml +0 -15
  141. data/config/locales/zh-CN.yml +0 -57
  142. data/config/locales/zh-TW.yml +0 -65
  143. data/db/migrate/20240110203500_add_withdrawn_at_field_to_proposals.rb +1 -1
  144. data/db/migrate/20240110203504_create_default_proposal_states.rb +1 -1
  145. data/db/migrate/20250121110014_rename_proposal_valuation_assignments_to_evaluation_assignments.rb +15 -0
  146. data/db/migrate/20250121110904_rename_valuation_assignments_count_to_evaluation_assignments_count.rb +16 -0
  147. data/db/migrate/20250211141313_rename_valuator_columns.rb +8 -0
  148. data/db/migrate/20250515132351_rename_proposals_endorsements_count_to_likes.rb +7 -0
  149. data/decidim-proposals.gemspec +1 -1
  150. data/lib/decidim/api/mutations/answer_proposal_attributes.rb +17 -0
  151. data/lib/decidim/api/mutations/proposal_answer_type.rb +57 -0
  152. data/lib/decidim/api/mutations/proposal_mutation_type.rb +14 -0
  153. data/lib/decidim/api/mutations/proposals_mutation_type.rb +23 -0
  154. data/lib/decidim/api/proposal_input_sort.rb +1 -1
  155. data/lib/decidim/api/proposal_state_type.rb +16 -0
  156. data/lib/decidim/api/proposal_type.rb +59 -9
  157. data/lib/decidim/proposals/admin_engine.rb +3 -3
  158. data/lib/decidim/proposals/admin_filter.rb +3 -3
  159. data/lib/decidim/proposals/api.rb +5 -0
  160. data/lib/decidim/proposals/component.rb +44 -24
  161. data/lib/decidim/proposals/engine.rb +18 -83
  162. data/lib/decidim/proposals/evaluable.rb +22 -0
  163. data/lib/decidim/proposals/import/proposal_creator.rb +1 -1
  164. data/lib/decidim/proposals/proposal_serializer.rb +9 -11
  165. data/lib/decidim/proposals/seeds.rb +16 -27
  166. data/lib/decidim/proposals/test/factories.rb +21 -53
  167. data/lib/decidim/proposals/version.rb +1 -1
  168. data/lib/decidim/proposals.rb +3 -3
  169. data/lib/tasks/proposals/upgrade/decidim_proposals_upgrade_tasks.rake +11 -11
  170. metadata +57 -47
  171. data/app/commands/decidim/proposals/hashtags_methods.rb +0 -36
  172. data/app/controllers/decidim/proposals/admin/valuation_assignments_controller.rb +0 -55
  173. data/app/events/decidim/proposals/proposal_endorsed_event.rb +0 -33
  174. data/app/forms/decidim/proposals/admin/proposals_file_import_form.rb +0 -31
  175. data/app/forms/decidim/proposals/admin/valuation_assignment_form.rb +0 -38
  176. data/app/queries/decidim/proposals/metrics/accepted_proposals_metric_manage.rb +0 -32
  177. data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +0 -58
  178. data/app/queries/decidim/proposals/metrics/proposal_followers_metric_measure.rb +0 -58
  179. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +0 -74
  180. data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +0 -48
  181. data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +0 -52
  182. data/app/views/decidim/proposals/admin/imports/_proposals_fields.html.erb +0 -11
  183. data/app/views/decidim/proposals/admin/proposals/_endorsers.html.erb +0 -25
  184. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +0 -19
  185. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +0 -19
  186. data/lib/decidim/proposals/valuatable.rb +0 -22
@@ -10,20 +10,16 @@ zh-CN:
10
10
  scope_id: 范围
11
11
  state: 状态
12
12
  title: 标题
13
- user_group_id: 创建协作草稿为
14
13
  proposal:
15
14
  address: 地址
16
15
  answer: 答案
17
16
  answered_at: 回答于
18
- automatic_hashtags: 自动添加标签
19
17
  body: 正文内容
20
18
  decidim_scope_id: 范围
21
19
  has_address: 有地址
22
20
  scope_id: 范围
23
21
  state: 状态
24
- suggested_hashtags: 建议的哈希标签
25
22
  title: 标题
26
- user_group_id: 创建提案为
27
23
  proposal_answer:
28
24
  answer: 答案
29
25
  proposals_copy:
@@ -31,9 +27,6 @@ zh-CN:
31
27
  proposals_import:
32
28
  import_proposals: 导入提议
33
29
  keep_authors: 保留原始作者
34
- valuation_assignment:
35
- admin_log:
36
- valuator_role_id: 值名称
37
30
  errors:
38
31
  models:
39
32
  proposal:
@@ -49,7 +42,6 @@ zh-CN:
49
42
  identical: 和正文不能相同
50
43
  models:
51
44
  decidim/proposals/creation_enabled_event: 建议创建已启用
52
- decidim/proposals/endorsing_enabled_event: 提案已启用
53
45
  decidim/proposals/proposal_mentioned_event: 提及的建议
54
46
  decidim/proposals/publish_proposal_event: 建议已发布
55
47
  decidim/proposals/voting_enabled_event: 提案投票已启用
@@ -79,15 +71,10 @@ zh-CN:
79
71
  rejected: 已拒绝
80
72
  validating: 技术验证
81
73
  withdrawn: 取出
82
- valuator_role_ids_has:
83
- label: 分配给值者
84
- search_placeholder:
85
- id_string_or_title_cont: 通过ID或标题搜索 %{collection}。
86
74
  components:
87
75
  proposals:
88
76
  actions:
89
77
  amend: 修改:
90
- endorse: 批准
91
78
  withdraw: 取款
92
79
  name: 建议
93
80
  settings:
@@ -126,20 +113,13 @@ zh-CN:
126
113
  amendments_visibility_help: 如果选择“修改仅对作者可见”,参与者必须登录才能看到所做的修改。
127
114
  announcement: 通 知
128
115
  answers_with_costs: 启用建议答案的成本
129
- automatic_hashtags: 添加到所有建议的标签
130
116
  comments_blocked: 评论已阻止
131
- endorsements_blocked: 已阻止授权
132
- endorsements_enabled: 授权已启用
133
117
  proposal_answering_enabled: 建议答案已启用
134
118
  publish_answers_immediately: 立即发布提案答案
135
- suggested_hashtags: 推荐给参与者的新建议标签
136
119
  events:
137
120
  proposals:
138
121
  admin:
139
- proposal_assigned_to_valuator:
140
- email_outro: 您收到此通知是因为您可以评估提案。
141
122
  proposal_note_created:
142
- email_outro: 您收到此通知是因为您可以评估提案。
143
123
  email_subject: 有人在建议 %{resource_title} 留下了一条笔记。
144
124
  collaborative_draft_access_accepted:
145
125
  email_subject: "%{requester_name} 已被接受作为贡献者访问 %{resource_title}。"
@@ -161,10 +141,6 @@ zh-CN:
161
141
  email_intro: '您现在可以在 %{participatory_space_title}中创建新的建议 !开始参与这个页面:'
162
142
  email_outro: 您收到此通知是因为您正在关注 %{participatory_space_title}。您可以停止收到跟随上一个链接的通知。
163
143
  email_subject: 建议已在 %{participatory_space_title} 中可用
164
- endorsing_enabled:
165
- email_intro: '您可以在 %{participatory_space_title}中批准提案!开始参与此页面:'
166
- email_outro: 您收到此通知是因为您正在关注 %{participatory_space_title}。您可以停止收到跟随上一个链接的通知。
167
- email_subject: '%{participatory_space_title} 的建议已经开始'
168
144
  proposal_mentioned:
169
145
  email_outro: 您收到此通知是因为您是"%{resource_title} "的作者。
170
146
  email_subject: 您的提议 "%{mentioned_proposal_title}" 已被提到了
@@ -206,21 +182,6 @@ zh-CN:
206
182
  name: 建议
207
183
  next_level_in: 再创建 %{score} 个建议以达到下一关!
208
184
  unearned_own: 您尚未创建任何提案。
209
- metrics:
210
- accepted_proposals:
211
- description: 接受的建议数
212
- object: 提议
213
- title: 已接受的提议
214
- endorsements:
215
- description: 建议认可次数
216
- object: 核准
217
- title: 授权
218
- proposals:
219
- description: 建议数
220
- object: 提议
221
- title: 建议
222
- votes:
223
- title: 所得票数
224
185
  participatory_spaces:
225
186
  highlighted_proposals:
226
187
  see_all: 查看所有建议
@@ -286,10 +247,8 @@ zh-CN:
286
247
  select_a_meeting: 选择会议
287
248
  index:
288
249
  actions: 行动
289
- assign_to_valuator: 分配给值器
290
250
  cancel: 取消
291
251
  merge: 合并为一个新的
292
- merge_button: 合并
293
252
  publish: 发布
294
253
  publish_answers: 发布答案
295
254
  select_component: 选择一个组件
@@ -297,25 +256,19 @@ zh-CN:
297
256
  split: 拆分提案
298
257
  split_button: 拆分
299
258
  title: 建议
300
- unassign_from_valuator: 取消分配给值
301
259
  update: 更新
302
260
  new:
303
261
  create: 创建
304
262
  title: 创建提案
305
263
  show:
306
264
  amendments_count: 修改计数
307
- assigned_valuators: 分配给值者
308
265
  body: 正文内容
309
266
  comments_count: 评论计数
310
267
  documents: www.un.org/webcast
311
- endorsements_count: 批准次数
312
- endorsers: 核可者
313
268
  photos: 照片
314
269
  ranking: "%{ranking} / %{total}"
315
270
  related_meetings: 相关会议
316
271
  remove_assignment: 移除作业
317
- remove_assignment_confirmation: 您确定要从此建议中删除值吗?
318
- valuators: 估价器
319
272
  proposals_imports:
320
273
  new:
321
274
  create: 导入提议
@@ -331,14 +284,10 @@ zh-CN:
331
284
  admin_log:
332
285
  proposal:
333
286
  answer: "%{user_name} 回答了 %{resource_name} 在 %{space_name} 空间的建议"
334
- create: "%{user_name} 在 %{space_name} 空间上创建了 %{resource_name} 提案作为官方提案"
335
287
  publish_answer: "%{user_name} 在 %{space_name} 空间上发布了 %{resource_name} 建议的答案"
336
288
  update: "%{user_name} 更新了 %{resource_name} 在 %{space_name} 空间的官方提议"
337
289
  proposal_note:
338
290
  create: "%{user_name} 在 %{space_name} 空间的 %{resource_name} 提案上留下了一个私人笔记"
339
- valuation_assignment:
340
- create: "%{user_name} 将 %{resource_name} 的建议分配给了一个值者"
341
- delete: "%{user_name} 在 %{proposal_title} 提议中没有分配到一个值者"
342
291
  answers:
343
292
  accepted: 已接受
344
293
  evaluating: 评价
@@ -350,7 +299,6 @@ zh-CN:
350
299
  all: 所有的
351
300
  meetings: 会议
352
301
  official: 官方的
353
- user_groups: 群組
354
302
  filter_state_values:
355
303
  all: 所有的
356
304
  not_answered: 未回答
@@ -456,8 +404,6 @@ zh-CN:
456
404
  published_at: 发布于
457
405
  state: 状态
458
406
  title: 标题
459
- valuator: 值者
460
- valuators: 估价器
461
407
  votes: 所得票数
462
408
  participatory_text_proposal:
463
409
  alternative_title: 目前没有参与性文本
@@ -495,7 +441,6 @@ zh-CN:
495
441
  orders:
496
442
  label: '排序提议:'
497
443
  most_commented: 最多评论
498
- most_endorsed: 最多支持
499
444
  most_followed: 关注最多的
500
445
  random: 随机播放
501
446
  recent: 最近的
@@ -510,8 +455,6 @@ zh-CN:
510
455
  answer: 答案
511
456
  changes_at_title: 对"%{title}" 的修正
512
457
  estimated_cost: 估计费用
513
- hidden_endorsers_count:
514
- other: 和更多 %{count} 人
515
458
  link_to_collaborative_draft_help_text: 此建议是协作草稿的结果,请查看历史记录
516
459
  link_to_collaborative_draft_text: 查看协作草稿
517
460
  link_to_promoted_emendation_help_text: 这项建议是一项提倡的修正
@@ -10,20 +10,16 @@ zh-TW:
10
10
  scope_id: 範圍
11
11
  state: 狀態
12
12
  title: 標題
13
- user_group_id: 建立協作草稿為
14
13
  proposal:
15
14
  address: 地址
16
15
  answer: 回答
17
16
  answered_at: 回答
18
- automatic_hashtags: 已自動添加標籤
19
17
  body: 內容
20
18
  decidim_scope_id: 範圍
21
19
  has_address: 有地址
22
20
  scope_id: 範圍
23
21
  state: 狀態
24
- suggested_hashtags: 建議使用標籤
25
22
  title: 標題
26
- user_group_id: 建立提案
27
23
  proposal_answer:
28
24
  answer: 回答
29
25
  cost: 費用
@@ -36,9 +32,6 @@ zh-TW:
36
32
  import_proposals: 導入提案
37
33
  keep_answers: 保留狀態和回答
38
34
  keep_authors: 保留原作者
39
- valuation_assignment:
40
- admin_log:
41
- valuator_role_id: 檢核者名稱
42
35
  errors:
43
36
  models:
44
37
  participatory_text:
@@ -66,7 +59,6 @@ zh-TW:
66
59
  not_official: 非正式
67
60
  models:
68
61
  decidim/proposals/creation_enabled_event: 建立提案已啟用
69
- decidim/proposals/endorsing_enabled_event: 提案連署功能已啟用
70
62
  decidim/proposals/proposal_mentioned_event: 提案已被提及
71
63
  decidim/proposals/publish_proposal_event: 提案已發佈
72
64
  decidim/proposals/voting_enabled_event: 提案投票已啟用
@@ -96,16 +88,11 @@ zh-TW:
96
88
  rejected: 已拒絕
97
89
  validating: 技術驗證
98
90
  withdrawn: 已撤回
99
- valuator_role_ids_has:
100
- label: 已分配給評估人員
101
- search_placeholder:
102
- id_string_or_title_cont: 透過 ID 或標題搜尋%{collection}
103
91
  components:
104
92
  proposals:
105
93
  actions:
106
94
  amend: 修訂
107
95
  comment: 評論
108
- endorse: 連署
109
96
  vote_comment: 投票評論
110
97
  withdraw: 撤回
111
98
  name: 提案
@@ -122,7 +109,6 @@ zh-TW:
122
109
  default_sort_order: 預設提案排序
123
110
  default_sort_order_options:
124
111
  most_commented: 最多評論
125
- most_endorsed: 最多已連署
126
112
  most_followed: 最多追蹤者
127
113
  random: 隨機
128
114
  recent: 最近
@@ -157,31 +143,23 @@ zh-TW:
157
143
  amendments_visibility_help: 若選擇「修正案僅限作者可見」選項,參與者必須登入以查看所做的修正。
158
144
  announcement: 公告
159
145
  answers_with_costs: 啟用提案回答的成本
160
- automatic_hashtags: 所有提案都已添加標籤
161
146
  comments_blocked: 留言已封鎖
162
147
  creation_enabled: 參與者可以建立提案
163
148
  creation_enabled_readonly: 啟用參與式文本功能後,此設置將被禁用。要將提案上傳為參與式文本,請點擊“參與式文本”按鈕,然後按照說明進行操作。
164
149
  default_sort_order: 預設提案排序
165
150
  default_sort_order_options:
166
151
  most_commented: 最多評論
167
- most_endorsed: 最多已連署
168
152
  most_followed: 最多追蹤者
169
153
  random: 隨機
170
154
  recent: 最近
171
155
  with_more_authors: 有更多作者
172
- endorsements_blocked: 連署已封鎖
173
- endorsements_enabled: 連署已啟用
174
156
  proposal_answering_enabled: 提案回答已啟用
175
157
  publish_answers_immediately: 立即發布提案回答
176
158
  publish_answers_immediately_help_html: '請注意,如果您在未啟用此功能的情況下回答任何提案,您將需要手動選擇它們並使用發布操作進行發布。有關此操作的更多信息,請參閱 <a href="https://docs.decidim.org/en/admin/components/proposals/answers#_publication" target="_blank">提案答案文檔頁面</a>。'
177
- suggested_hashtags: 為新提案建議參與者使用的標籤
178
159
  events:
179
160
  proposals:
180
161
  admin:
181
- proposal_assigned_to_valuator:
182
- email_outro: 您收到此通知,因為您可以對提案進行評估。
183
162
  proposal_note_created:
184
- email_outro: 您收到此通知,因為您可以對提案進行評估。
185
163
  email_subject: 有人在提案 %{resource_title} 上留下了一則註記。
186
164
  collaborative_draft_access_accepted:
187
165
  email_intro: '%{requester_name} 已經被接受成為 <a href="%{resource_url}">%{resource_title}</a> 協作草稿的貢獻者。'
@@ -218,11 +196,6 @@ zh-TW:
218
196
  email_outro: 你收到此通知是因為你正在追蹤 %{participatory_space_title}。你可以透過前面的連結停止接收通知。
219
197
  email_subject: 現在可以在 %{participatory_space_title} 中建立新的提案了!
220
198
  notification_title: 現在您可以在<a href="%{participatory_space_url}">%{participatory_space_title}</a>中提出<a href="%{resource_path}">新提案</a>。
221
- endorsing_enabled:
222
- email_intro: '您可以連署 %{participatory_space_title} 中的提案!請點擊以下連結參與:'
223
- email_outro: 你收到此通知是因為你正在追蹤 %{participatory_space_title}。你可以透過前面的連結停止接收通知。
224
- email_subject: 已開始對於 %{participatory_space_title} 的提案進行連署
225
- notification_title: 現在您可以在<a href="%{participatory_space_url}">%{participatory_space_title}</a>中開始<a href="%{resource_path}">連署提案</a>。
226
199
  proposal_mentioned:
227
200
  email_intro: 你的提案「%{mentioned_proposal_title}」在評論中被提及,<a href="%{resource_url}">請至此空間查看</a>。
228
201
  email_outro: 你收到此通知,是因為你是「%{resource_title}」的作者。
@@ -269,21 +242,6 @@ zh-TW:
269
242
  next_level_in: 建立更多 %{score} 個提案以達到下一個等級!
270
243
  unearned_another: 這位參與者還沒有建立任何提案。
271
244
  unearned_own: 你還沒有建立提案。
272
- metrics:
273
- accepted_proposals:
274
- description: 已接受的提案數
275
- object: 提案
276
- title: 已通過的提案
277
- endorsements:
278
- description: 對提案的連署次數
279
- object: 連署
280
- title: 連署
281
- proposals:
282
- description: 提案總數
283
- object: 提案
284
- title: 提案
285
- votes:
286
- title: 投票
287
245
  participatory_spaces:
288
246
  highlighted_proposals:
289
247
  see_all: 檢視所有提案
@@ -371,10 +329,8 @@ zh-TW:
371
329
  select_a_meeting: 選擇一個會議
372
330
  index:
373
331
  actions: 操作
374
- assign_to_valuator: 分配給評估人員
375
332
  cancel: 取消
376
333
  merge: 合併為新提案
377
- merge_button: 合併
378
334
  publish: 發布
379
335
  publish_answers: 發佈回應
380
336
  select_component: 選擇一個元件
@@ -382,7 +338,6 @@ zh-TW:
382
338
  split: 拆分提案
383
339
  split_button: 拆分
384
340
  title: 提案
385
- unassign_from_valuator: 取消分派給評估者
386
341
  update: 更新
387
342
  new:
388
343
  create: 建立
@@ -391,18 +346,13 @@ zh-TW:
391
346
  select_a_proposal: 請選擇一個提案。
392
347
  show:
393
348
  amendments_count: 修改案數量
394
- assigned_valuators: 已分配給評估人員
395
349
  body: 正文
396
350
  comments_count: 評論次數
397
351
  documents: 文件
398
- endorsements_count: 連署人數
399
- endorsers: 贊助人
400
352
  photos: 圖片
401
353
  ranking: "%{total} 的%{ranking}"
402
354
  related_meetings: 相關會議
403
355
  remove_assignment: 移除指派
404
- remove_assignment_confirmation: 您確定要將評估者從此提案中移除嗎?
405
- valuators: 評估者
406
356
  proposals_imports:
407
357
  create:
408
358
  invalid: 匯入提案時發生問題.
@@ -417,22 +367,13 @@ zh-TW:
417
367
  proposals_splits:
418
368
  create:
419
369
  success: 成功將提案拆分為新的提案。
420
- valuation_assignments:
421
- create:
422
- success: 提案已成功分配給評估人員.
423
- delete:
424
- success: 評估員已成功取消分配提案.
425
370
  admin_log:
426
371
  proposal:
427
372
  answer: "%{user_name} 回覆了在 %{space_name} 空間的 %{resource_name} 提案。"
428
- create: "%{user_name} 在%{space_name} 空間中創建了官方提案%{resource_name}"
429
373
  publish_answer: "%{user_name} 在%{space_name} 空間中發表了對%{resource_name} 提案的回答"
430
374
  update: "%{user_name} 在%{space_name} 空間中更新了%{resource_name} 官方提案"
431
375
  proposal_note:
432
376
  create: "%{user_name} 在 %{space_name} 空間的 %{resource_name} 提案中留下了私人註記。"
433
- valuation_assignment:
434
- create: "%{user_name} 將 %{resource_name} 提案指派給了一個評估者。"
435
- delete: "%{user_name} 取消了 %{proposal_title} 提案的評估者指派。"
436
377
  answers:
437
378
  accepted: 已接受
438
379
  evaluating: 評估
@@ -445,7 +386,6 @@ zh-TW:
445
386
  meetings: 會議
446
387
  official: 官方
447
388
  participants: 參與者
448
- user_groups: 群組
449
389
  filter_state_values:
450
390
  all: 全部
451
391
  not_answered: 未回答
@@ -563,8 +503,6 @@ zh-TW:
563
503
  published_at: 發佈於
564
504
  state: 狀態
565
505
  title: 標題
566
- valuator: 評估者
567
- valuators: 評估者
568
506
  votes: 投票
569
507
  new:
570
508
  limit_reached: 你已經超過了提案數量的限制,因此無法創建新的提案。
@@ -610,7 +548,6 @@ zh-TW:
610
548
  orders:
611
549
  label: '依順序排序提案:'
612
550
  most_commented: 最多評論
613
- most_endorsed: 最多已連署
614
551
  most_followed: 最多追蹤者
615
552
  random: 隨機
616
553
  recent: 最近
@@ -632,8 +569,6 @@ zh-TW:
632
569
  answer: 回答
633
570
  changes_at_title: 修正案 "%{title}"
634
571
  estimated_cost: 預估成本
635
- hidden_endorsers_count:
636
- other: "one\n以及其他 %{count} 個人\n\nOther\n以及其他 %{count} 個人"
637
572
  link_to_collaborative_draft_help_text: 這個提案是由協作草稿所產生的。請查看歷史記錄。
638
573
  link_to_collaborative_draft_text: 查看協作草稿
639
574
  link_to_promoted_emendation_help_text: 這份提案是一項推動性的修正案
@@ -4,7 +4,7 @@ class AddWithdrawnAtFieldToProposals < ActiveRecord::Migration[6.1]
4
4
  class CustomProposal < Decidim::Proposals::ApplicationRecord
5
5
  self.table_name = "decidim_proposals_proposals"
6
6
  STATES = { not_answered: 0, evaluating: 10, accepted: 20, rejected: -10, withdrawn: -20 }.freeze
7
- enum state: STATES, _default: "not_answered"
7
+ enum :state, STATES, default: "not_answered"
8
8
  end
9
9
 
10
10
  def up
@@ -10,7 +10,7 @@ class CreateDefaultProposalStates < ActiveRecord::Migration[6.1]
10
10
 
11
11
  self.table_name = :decidim_proposals_proposals
12
12
  STATES = { not_answered: 0, evaluating: 10, accepted: 20, rejected: -10 }.freeze
13
- enum old_state: STATES, _default: "not_answered"
13
+ enum :old_state, STATES, default: "not_answered"
14
14
  end
15
15
 
16
16
  def up
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameProposalValuationAssignmentsToEvaluationAssignments < ActiveRecord::Migration[7.0]
4
+ def change
5
+ rename_table :decidim_proposals_valuation_assignments, :decidim_proposals_evaluation_assignments
6
+
7
+ rename_index :decidim_proposals_evaluation_assignments,
8
+ "decidim_proposals_valuation_assignment_proposal",
9
+ "decidim_proposals_evaluation_assignment_proposal"
10
+
11
+ rename_index :decidim_proposals_evaluation_assignments,
12
+ "decidim_proposals_valuation_assignment_valuator_role",
13
+ "decidim_proposals_evaluation_assignment_valuator_role"
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameValuationAssignmentsCountToEvaluationAssignmentsCount < ActiveRecord::Migration[7.0]
4
+ def change
5
+ rename_column :decidim_proposals_proposals, :valuation_assignments_count, :evaluation_assignments_count
6
+
7
+ reversible do |dir|
8
+ dir.up do
9
+ Decidim::Proposals::Proposal.reset_column_information
10
+ Decidim::Proposals::Proposal.unscoped.find_each do |record|
11
+ Decidim::Proposals::Proposal.reset_counters(record.id, :evaluation_assignments)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameValuatorColumns < ActiveRecord::Migration[7.0]
4
+ def change
5
+ rename_column :decidim_proposals_evaluation_assignments, :valuator_role_type, :evaluator_role_type
6
+ rename_column :decidim_proposals_evaluation_assignments, :valuator_role_id, :evaluator_role_id
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameProposalsEndorsementsCountToLikes < ActiveRecord::Migration[7.0]
4
+ def change
5
+ rename_column :decidim_proposals_proposals, :endorsements_count, :likes_count
6
+ end
7
+ end
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
 
35
35
  s.add_dependency "decidim-comments", Decidim::Proposals.version
36
36
  s.add_dependency "decidim-core", Decidim::Proposals.version
37
- s.add_dependency "doc2text", "~> 0.4.7"
37
+ s.add_dependency "doc2text", "~> 0.4.0", ">= 0.4.8"
38
38
  s.add_dependency "redcarpet", "~> 3.5", ">= 3.5.1"
39
39
 
40
40
  s.add_development_dependency "decidim-admin", Decidim::Proposals.version
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class AnswerProposalAttributes < Decidim::Api::Types::BaseInputObject
6
+ graphql_name "ProposalAttributes"
7
+ description "Attributes of a proposal"
8
+
9
+ argument :answer_content, GraphQL::Types::JSON, description: "The answer feedback for the status for this proposal", required: false
10
+ argument :cost, GraphQL::Types::Float, description: "Estimated cost of the proposal", required: false
11
+ argument :cost_report, GraphQL::Types::JSON, description: "Report on expenses", required: false
12
+ argument :execution_period, GraphQL::Types::JSON, description: "Report on the execution period", required: false
13
+ argument :state, GraphQL::Types::String,
14
+ description: "The answer status in which the proposal is in. Can be one of 'accepted', 'rejected' or 'evaluating'", required: false
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class ProposalAnswerType < Decidim::Api::Types::BaseMutation
6
+ graphql_name "Answer"
7
+
8
+ description "Answers a proposal"
9
+ type Decidim::Proposals::ProposalType
10
+
11
+ argument :attributes, AnswerProposalAttributes, description: "input attributes of a proposal", required: true
12
+
13
+ def resolve(attributes:)
14
+ answer_content = attributes.to_h.fetch(:answer_content, object.answer)
15
+ internal_state = attributes.to_h.fetch(:state, object.internal_state)
16
+ params = attributes.to_h.reverse_merge(
17
+ internal_state:,
18
+ answer: answer_content,
19
+ cost: object.cost,
20
+ cost_report: object.cost_report,
21
+ execution_period: object.execution_period
22
+ )
23
+
24
+ form = Decidim::Proposals::Admin::ProposalAnswerForm.from_params(
25
+ params
26
+ ).with_context(
27
+ current_component: object.component,
28
+ current_user:,
29
+ current_organization: current_user.organization
30
+ )
31
+
32
+ Admin::AnswerProposal.call(form, object) do
33
+ on(:ok) do
34
+ return object
35
+ end
36
+ on(:invalid) do
37
+ return GraphQL::ExecutionError.new(
38
+ form.errors.full_messages.join(", ")
39
+ )
40
+ end
41
+
42
+ GraphQL::ExecutionError.new(
43
+ I18n.t("decidim.proposals.admin.proposals.answer.invalid")
44
+ )
45
+ end
46
+ end
47
+
48
+ def authorized?(attributes:)
49
+ super && allowed_to?(:create, :proposal_answer, object, context, scope: :admin)
50
+ end
51
+
52
+ def current_user
53
+ context[:current_user]
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class ProposalMutationType < Decidim::Api::Types::BaseObject
6
+ include Decidim::ApiResponseHelper
7
+
8
+ graphql_name "ProposalMutation"
9
+ description "a proposal which includes its available mutations"
10
+
11
+ field :answer, mutation: Decidim::Proposals::ProposalAnswerType, description: "Answers a proposal"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class ProposalsMutationType < Decidim::Core::ComponentType
6
+ description "A proposals of a component."
7
+
8
+ field :proposal, type: Decidim::Proposals::ProposalMutationType, description: "Mutates a proposal", null: true do
9
+ argument :id, GraphQL::Types::ID, "The ID of the proposal", required: true
10
+ end
11
+
12
+ def proposal(id:)
13
+ collection.find(id)
14
+ end
15
+
16
+ private
17
+
18
+ def collection
19
+ Proposal.where(component: object).not_hidden.published
20
+ end
21
+ end
22
+ end
23
+ end
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Proposals
5
5
  class ProposalInputSort < Decidim::Core::BaseInputSort
6
6
  include Decidim::Core::HasPublishableInputSort
7
- include Decidim::Core::HasEndorsableInputSort
7
+ include Decidim::Core::HasLikeableInputSort
8
8
 
9
9
  graphql_name "ProposalSort"
10
10
  description "A type used for sorting proposals"
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ class ProposalStateType < Decidim::Api::Types::BaseObject
6
+ description "A proposal state"
7
+
8
+ field :announcement_title, Decidim::Core::TranslatedFieldType, "The announcement for this proposal state", null: true
9
+ field :bg_color, GraphQL::Types::String, description: "The background color of proposal state label", null: true
10
+ field :id, GraphQL::Types::ID, "The id of the proposal state", null: false
11
+ field :proposals_count, GraphQL::Types::Int, "The number of proposals having this state", null: true
12
+ field :text_color, GraphQL::Types::String, description: "The text color of this proposal state label", null: true
13
+ field :title, Decidim::Core::TranslatedFieldType, "The title for this proposal state", null: true
14
+ end
15
+ end
16
+ end