decidim-proposals 0.19.1 → 0.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/admin/decidim_proposals_manifest.js +1 -0
  3. data/app/assets/images/decidim/gamification/badges/accepted_proposals.svg +1 -234
  4. data/app/assets/images/decidim/gamification/badges/proposal_votes.svg +1 -95
  5. data/app/assets/images/decidim/gamification/badges/proposals.svg +1 -229
  6. data/app/assets/images/decidim/proposals/icon.svg +1 -3
  7. data/app/assets/javascripts/decidim/proposals/add_proposal.js.es6 +6 -0
  8. data/app/assets/javascripts/decidim/proposals/admin/proposals.es6 +24 -11
  9. data/app/assets/javascripts/decidim/proposals/admin/proposals_form.js.es6 +3 -5
  10. data/app/assets/javascripts/decidim/proposals/admin/proposals_picker.js.es6 +35 -0
  11. data/app/cells/decidim/proposals/collaborative_draft_cell.rb +1 -1
  12. data/app/cells/decidim/proposals/collaborative_draft_link_to_proposal_cell.rb +1 -1
  13. data/app/cells/decidim/proposals/collaborative_draft_m/footer.erb +1 -1
  14. data/app/cells/decidim/proposals/collaborative_draft_m_cell.rb +1 -1
  15. data/app/cells/decidim/proposals/cost_report/show.erb +35 -0
  16. data/app/cells/decidim/proposals/cost_report_cell.rb +42 -0
  17. data/app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb +3 -3
  18. data/app/cells/decidim/proposals/highlighted_proposals_for_component_cell.rb +1 -1
  19. data/app/cells/decidim/proposals/irreversible_action_modal/show.erb +2 -2
  20. data/app/cells/decidim/proposals/irreversible_action_modal_cell.rb +1 -1
  21. data/app/cells/decidim/proposals/participatory_text_proposal/buttons.erb +3 -3
  22. data/app/cells/decidim/proposals/participatory_text_proposal_cell.rb +2 -2
  23. data/app/cells/decidim/proposals/proposal_cell.rb +1 -1
  24. data/app/cells/decidim/proposals/proposal_m/footer.erb +4 -1
  25. data/app/cells/decidim/proposals/proposal_m_cell.rb +37 -9
  26. data/app/cells/decidim/proposals/proposal_tags/show.erb +18 -10
  27. data/app/cells/decidim/proposals/proposal_tags_cell.rb +5 -0
  28. data/app/cells/decidim/proposals/proposals_picker/proposals.erb +12 -0
  29. data/app/cells/decidim/proposals/proposals_picker/show.erb +14 -0
  30. data/app/cells/decidim/proposals/proposals_picker_cell.rb +72 -0
  31. data/app/commands/decidim/proposals/admin/answer_proposal.rb +24 -46
  32. data/app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb +61 -0
  33. data/app/commands/decidim/proposals/admin/create_proposal.rb +10 -3
  34. data/app/commands/decidim/proposals/admin/create_proposal_note.rb +15 -0
  35. data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +85 -0
  36. data/app/commands/decidim/proposals/admin/publish_answers.rb +67 -0
  37. data/app/commands/decidim/proposals/admin/publish_participatory_text.rb +6 -1
  38. data/app/commands/decidim/proposals/admin/unassign_proposals_from_valuator.rb +62 -0
  39. data/app/commands/decidim/proposals/admin/update_participatory_text.rb +10 -2
  40. data/app/commands/decidim/proposals/admin/update_proposal.rb +5 -3
  41. data/app/commands/decidim/proposals/admin/update_proposal_scope.rb +75 -0
  42. data/app/commands/decidim/proposals/create_collaborative_draft.rb +1 -1
  43. data/app/commands/decidim/proposals/create_proposal.rb +7 -3
  44. data/app/commands/decidim/proposals/gallery_methods.rb +2 -51
  45. data/app/commands/decidim/proposals/publish_collaborative_draft.rb +2 -2
  46. data/app/commands/decidim/proposals/update_proposal.rb +25 -9
  47. data/app/controllers/concerns/decidim/proposals/admin/filterable.rb +82 -0
  48. data/app/controllers/concerns/decidim/proposals/admin/picker.rb +21 -0
  49. data/app/controllers/concerns/decidim/proposals/orderable.rb +13 -2
  50. data/app/controllers/decidim/proposals/admin/proposal_answers_controller.rb +16 -6
  51. data/app/controllers/decidim/proposals/admin/proposal_notes_controller.rb +8 -9
  52. data/app/controllers/decidim/proposals/admin/proposals_controller.rb +107 -31
  53. data/app/controllers/decidim/proposals/admin/valuation_assignments_controller.rb +58 -0
  54. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +10 -3
  55. data/app/controllers/decidim/proposals/proposals_controller.rb +31 -11
  56. data/app/controllers/decidim/proposals/versions_controller.rb +9 -16
  57. data/app/controllers/decidim/proposals/{proposal_widgets_controller.rb → widgets_controller.rb} +2 -2
  58. data/app/events/decidim/proposals/admin/proposal_note_created_event.rb +27 -0
  59. data/app/events/decidim/proposals/admin/update_proposal_scope_event.rb +11 -0
  60. data/app/forms/decidim/proposals/admin/import_participatory_text_form.rb +3 -1
  61. data/app/forms/decidim/proposals/admin/participatory_text_proposal_form.rb +20 -0
  62. data/app/forms/decidim/proposals/admin/preview_participatory_text_form.rb +2 -2
  63. data/app/forms/decidim/proposals/admin/proposal_answer_form.rb +27 -2
  64. data/app/forms/decidim/proposals/admin/proposal_base_form.rb +136 -0
  65. data/app/forms/decidim/proposals/admin/proposal_form.rb +6 -117
  66. data/app/forms/decidim/proposals/admin/valuation_assignment_form.rb +37 -0
  67. data/app/forms/decidim/proposals/proposal_form.rb +25 -12
  68. data/app/forms/decidim/proposals/proposal_wizard_create_step_form.rb +13 -1
  69. data/app/helpers/decidim/proposals/admin/filterable_helper.rb +17 -0
  70. data/app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb +35 -0
  71. data/app/helpers/decidim/proposals/admin/proposal_rankings_helper.rb +63 -0
  72. data/app/helpers/decidim/proposals/admin/proposals_helper.rb +124 -0
  73. data/app/helpers/decidim/proposals/admin/proposals_picker_helper.rb +30 -0
  74. data/app/helpers/decidim/proposals/application_helper.rb +64 -38
  75. data/app/helpers/decidim/proposals/collaborative_draft_helper.rb +9 -9
  76. data/app/helpers/decidim/proposals/control_version_helper.rb +1 -37
  77. data/app/helpers/decidim/proposals/proposal_cells_helper.rb +1 -1
  78. data/app/helpers/decidim/proposals/proposal_endorsements_helper.rb +0 -145
  79. data/app/helpers/decidim/proposals/proposal_votes_helper.rb +2 -2
  80. data/app/helpers/decidim/proposals/proposal_wizard_helper.rb +24 -7
  81. data/app/helpers/decidim/proposals/proposals_helper.rb +66 -0
  82. data/app/models/decidim/proposals/collaborative_draft.rb +2 -2
  83. data/app/models/decidim/proposals/participatory_text.rb +3 -0
  84. data/app/models/decidim/proposals/proposal.rb +153 -42
  85. data/app/models/decidim/proposals/valuation_assignment.rb +24 -0
  86. data/app/permissions/decidim/proposals/admin/permissions.rb +77 -11
  87. data/app/permissions/decidim/proposals/permissions.rb +1 -22
  88. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +1 -1
  89. data/app/presenters/decidim/proposals/admin_log/valuation_assignment_presenter.rb +51 -0
  90. data/app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb +6 -1
  91. data/app/presenters/decidim/proposals/admin_log/value_types/valuator_role_user_presenter.rb +19 -0
  92. data/app/presenters/decidim/proposals/collaborative_draft_presenter.rb +2 -28
  93. data/app/presenters/decidim/proposals/log/valuation_assignment_presenter.rb +22 -0
  94. data/app/presenters/decidim/proposals/official_author_presenter.rb +1 -29
  95. data/app/presenters/decidim/proposals/proposal_presenter.rb +80 -12
  96. data/app/queries/decidim/proposals/metrics/accepted_proposals_metric_manage.rb +1 -2
  97. data/app/queries/decidim/proposals/metrics/endorsements_metric_manage.rb +15 -12
  98. data/app/queries/decidim/proposals/metrics/proposal_participants_metric_measure.rb +5 -4
  99. data/app/queries/decidim/proposals/metrics/proposals_metric_manage.rb +2 -8
  100. data/app/queries/decidim/proposals/metrics/votes_metric_manage.rb +3 -9
  101. data/app/queries/decidim/proposals/similar_proposals.rb +4 -4
  102. data/app/services/decidim/proposals/collaborative_draft_search.rb +8 -10
  103. data/app/services/decidim/proposals/diff_renderer.rb +17 -5
  104. data/app/services/decidim/proposals/proposal_builder.rb +9 -3
  105. data/app/services/decidim/proposals/proposal_search.rb +17 -70
  106. data/app/types/decidim/proposals/proposal_input_filter.rb +29 -0
  107. data/app/types/decidim/proposals/proposal_input_sort.rb +22 -0
  108. data/app/types/decidim/proposals/proposal_type.rb +34 -13
  109. data/app/types/decidim/proposals/proposals_type.rb +22 -15
  110. data/app/validators/proposal_length_validator.rb +38 -0
  111. data/app/views/decidim/proposals/admin/participatory_texts/index.html.erb +9 -1
  112. data/app/views/decidim/proposals/admin/proposal_answers/_form.html.erb +35 -0
  113. data/app/views/decidim/proposals/admin/proposal_notes/_form.html.erb +1 -1
  114. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb +3 -3
  115. data/app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb +8 -2
  116. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +8 -28
  117. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +26 -27
  118. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb +15 -0
  119. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb +21 -1
  120. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb +14 -0
  121. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb +25 -0
  122. data/app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb +15 -0
  123. data/app/views/decidim/proposals/admin/proposals/index.html.erb +18 -9
  124. data/app/views/decidim/proposals/admin/proposals/publish_answers.js.erb +12 -0
  125. data/app/views/decidim/proposals/admin/proposals/show.html.erb +186 -0
  126. data/app/views/decidim/proposals/admin/proposals/update_category.js.erb +3 -2
  127. data/app/views/decidim/proposals/admin/proposals/update_scope.js.erb +27 -0
  128. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +11 -9
  129. data/app/views/decidim/proposals/collaborative_drafts/_filters.html.erb +10 -8
  130. data/app/views/decidim/proposals/collaborative_drafts/_new_collaborative_draft_button.html.erb +4 -4
  131. data/app/views/decidim/proposals/collaborative_drafts/_reject_request_access_form.html.erb +1 -1
  132. data/app/views/decidim/proposals/collaborative_drafts/_wizard_aside.html.erb +4 -2
  133. data/app/views/decidim/proposals/collaborative_drafts/compare.html.erb +2 -0
  134. data/app/views/decidim/proposals/collaborative_drafts/complete.html.erb +2 -0
  135. data/app/views/decidim/proposals/collaborative_drafts/edit.html.erb +3 -1
  136. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +4 -2
  137. data/app/views/decidim/proposals/collaborative_drafts/new.html.erb +4 -0
  138. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +29 -30
  139. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +52 -22
  140. data/app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb +0 -16
  141. data/app/views/decidim/proposals/proposals/_filters.html.erb +19 -17
  142. data/app/views/decidim/proposals/proposals/_proposal_badge.html.erb +1 -4
  143. data/app/views/decidim/proposals/proposals/_proposal_preview.html.erb +1 -11
  144. data/app/views/decidim/proposals/proposals/_proposal_similar.html.erb +2 -2
  145. data/app/views/decidim/proposals/proposals/_proposals.html.erb +14 -0
  146. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +14 -7
  147. data/app/views/decidim/proposals/proposals/_wizard_aside.html.erb +4 -2
  148. data/app/views/decidim/proposals/proposals/_wizard_header.html.erb +4 -3
  149. data/app/views/decidim/proposals/proposals/compare.html.erb +2 -0
  150. data/app/views/decidim/proposals/proposals/complete.html.erb +2 -0
  151. data/app/views/decidim/proposals/proposals/edit.html.erb +3 -1
  152. data/app/views/decidim/proposals/proposals/edit_draft.html.erb +2 -0
  153. data/app/views/decidim/proposals/proposals/index.html.erb +7 -14
  154. data/app/views/decidim/proposals/proposals/new.html.erb +6 -2
  155. data/app/views/decidim/proposals/proposals/participatory_texts/_index.html.erb +1 -1
  156. data/app/views/decidim/proposals/proposals/participatory_texts/_proposal_vote_button.html.erb +10 -3
  157. data/app/views/decidim/proposals/proposals/participatory_texts/_view_index.html.erb +1 -1
  158. data/app/views/decidim/proposals/proposals/preview.html.erb +7 -8
  159. data/app/views/decidim/proposals/proposals/show.html.erb +62 -71
  160. data/app/views/decidim/proposals/versions/index.html.erb +14 -32
  161. data/app/views/decidim/proposals/versions/show.html.erb +16 -34
  162. data/config/locales/am-ET.yml +1 -0
  163. data/config/locales/ar.yml +73 -67
  164. data/config/locales/bg-BG.yml +237 -0
  165. data/config/locales/bg.yml +237 -0
  166. data/config/locales/ca.yml +183 -67
  167. data/config/locales/cs.yml +196 -80
  168. data/config/locales/da-DK.yml +1 -0
  169. data/config/locales/da.yml +1 -0
  170. data/config/locales/de.yml +269 -162
  171. data/config/locales/el-GR.yml +1 -0
  172. data/config/locales/el.yml +876 -0
  173. data/config/locales/en.yml +187 -71
  174. data/config/locales/eo.yml +1 -0
  175. data/config/locales/es-MX.yml +181 -65
  176. data/config/locales/es-PY.yml +181 -65
  177. data/config/locales/es.yml +186 -70
  178. data/config/locales/et-EE.yml +1 -0
  179. data/config/locales/et.yml +1 -0
  180. data/config/locales/eu.yml +28 -63
  181. data/config/locales/fi-plain.yml +181 -65
  182. data/config/locales/fi.yml +219 -103
  183. data/config/locales/fr-CA.yml +906 -0
  184. data/config/locales/fr.yml +184 -68
  185. data/config/locales/ga-IE.yml +1 -0
  186. data/config/locales/gl.yml +28 -63
  187. data/config/locales/hr-HR.yml +1 -0
  188. data/config/locales/hr.yml +1 -0
  189. data/config/locales/hu.yml +148 -70
  190. data/config/locales/id-ID.yml +28 -62
  191. data/config/locales/is-IS.yml +274 -0
  192. data/config/locales/is.yml +274 -0
  193. data/config/locales/it.yml +177 -85
  194. data/config/locales/ja-JP.yml +865 -0
  195. data/config/locales/ja.yml +889 -0
  196. data/config/locales/ko-KR.yml +1 -0
  197. data/config/locales/ko.yml +1 -0
  198. data/config/locales/lt-LT.yml +1 -0
  199. data/config/locales/lt.yml +1 -0
  200. data/config/locales/lv.yml +858 -0
  201. data/config/locales/mt-MT.yml +1 -0
  202. data/config/locales/mt.yml +1 -0
  203. data/config/locales/nl.yml +282 -188
  204. data/config/locales/no.yml +586 -19
  205. data/config/locales/om-ET.yml +1 -0
  206. data/config/locales/pl.yml +524 -393
  207. data/config/locales/pt-BR.yml +29 -67
  208. data/config/locales/pt.yml +438 -331
  209. data/config/locales/ro-RO.yml +841 -0
  210. data/config/locales/ru.yml +14 -47
  211. data/config/locales/sk-SK.yml +896 -0
  212. data/config/locales/sk.yml +869 -0
  213. data/config/locales/sl.yml +26 -0
  214. data/config/locales/so-SO.yml +1 -0
  215. data/config/locales/sr-CS.yml +126 -0
  216. data/config/locales/sv.yml +285 -171
  217. data/config/locales/ti-ER.yml +1 -0
  218. data/config/locales/tr-TR.yml +28 -63
  219. data/config/locales/uk.yml +14 -47
  220. data/config/locales/vi-VN.yml +1 -0
  221. data/config/locales/vi.yml +1 -0
  222. data/config/locales/zh-CN.yml +885 -0
  223. data/config/locales/zh-TW.yml +1 -0
  224. data/db/migrate/20181003074440_fix_user_groups_ids_in_proposals_endorsements.rb +4 -0
  225. data/db/migrate/20191206154128_add_endorsements_counter_cache_to_proposals.rb +7 -0
  226. data/db/migrate/20200120215928_move_proposal_endorsements_to_core_endorsements.rb +54 -0
  227. data/db/migrate/20200120230130_drop_proposal_endorsements.rb +8 -0
  228. data/db/migrate/20200203111239_add_proposal_valuation_assignments.rb +12 -0
  229. data/db/migrate/20200210135152_add_costs_to_proposals.rb +9 -0
  230. data/db/migrate/20200212120110_sync_proposals_state_with_amendments_state.rb +28 -0
  231. data/db/migrate/20200227175922_add_state_published_at_to_proposals.rb +7 -0
  232. data/db/migrate/20200306123652_publish_existing_proposals_state.rb +15 -0
  233. data/db/migrate/20200708091228_move_proposals_fields_to_i18n.rb +80 -0
  234. data/db/migrate/20200730131631_move_proposal_endorsed_event_notifications_to_resource_endorsed_event.rb +20 -0
  235. data/db/migrate/20200827154156_add_commentable_counter_cache_to_proposals.rb +12 -0
  236. data/db/migrate/20200915151348_fix_proposals_data_to_ensure_title_and_body_are_hashes.rb +37 -0
  237. data/db/migrate/20201002085508_fix_proposals_data.rb +37 -0
  238. data/lib/decidim/content_renderers/proposal_renderer.rb +3 -1
  239. data/lib/decidim/proposals.rb +1 -0
  240. data/lib/decidim/proposals/admin_engine.rb +7 -3
  241. data/lib/decidim/proposals/component.rb +55 -28
  242. data/lib/decidim/proposals/engine.rb +3 -7
  243. data/lib/decidim/proposals/markdown_to_proposals.rb +2 -2
  244. data/lib/decidim/proposals/proposal_serializer.rb +3 -3
  245. data/lib/decidim/proposals/test/capybara_proposals_picker.rb +49 -0
  246. data/lib/decidim/proposals/test/factories.rb +100 -28
  247. data/lib/decidim/proposals/valuatable.rb +21 -0
  248. data/lib/decidim/proposals/version.rb +1 -1
  249. metadata +119 -54
  250. data/app/assets/javascripts/decidim/proposals/identity_selector_dialog.js.es6 +0 -56
  251. data/app/cells/decidim/proposals/endorsers_list/show.erb +0 -17
  252. data/app/cells/decidim/proposals/endorsers_list_cell.rb +0 -31
  253. data/app/commands/decidim/proposals/attachment_methods.rb +0 -43
  254. data/app/commands/decidim/proposals/endorse_proposal.rb +0 -59
  255. data/app/commands/decidim/proposals/unendorse_proposal.rb +0 -40
  256. data/app/controllers/decidim/proposals/proposal_endorsements_controller.rb +0 -60
  257. data/app/models/decidim/proposals/proposal_endorsement.rb +0 -37
  258. data/app/views/decidim/proposals/admin/proposal_answers/edit.html.erb +0 -22
  259. data/app/views/decidim/proposals/admin/proposal_notes/index.html.erb +0 -3
  260. data/app/views/decidim/proposals/admin/shared/_info_proposal.html.erb +0 -20
  261. data/app/views/decidim/proposals/proposal_endorsements/_identity.html.erb +0 -9
  262. data/app/views/decidim/proposals/proposal_endorsements/identities.html.erb +0 -12
  263. data/app/views/decidim/proposals/proposal_endorsements/update_buttons_and_counters.js.erb +0 -20
  264. data/app/views/decidim/proposals/proposal_widgets/show.html.erb +0 -4
  265. data/app/views/decidim/proposals/proposals/_endorsement_button.html.erb +0 -11
  266. data/app/views/decidim/proposals/proposals/_endorsement_identities_cabin.html.erb +0 -13
  267. data/app/views/decidim/proposals/versions/_version.html.erb +0 -20
@@ -17,9 +17,6 @@ module Decidim
17
17
 
18
18
  routes do
19
19
  resources :proposals, except: [:destroy] do
20
- resource :proposal_endorsement, only: [:create, :destroy] do
21
- get :identities, on: :collection
22
- end
23
20
  member do
24
21
  get :compare
25
22
  get :complete
@@ -31,7 +28,7 @@ module Decidim
31
28
  put :withdraw
32
29
  end
33
30
  resource :proposal_vote, only: [:create, :destroy]
34
- resource :proposal_widget, only: :show, path: "embed"
31
+ resource :widget, only: :show, path: "embed"
35
32
  resources :versions, only: [:show, :index]
36
33
  end
37
34
  resources :collaborative_drafts, except: [:destroy] do
@@ -50,8 +47,7 @@ module Decidim
50
47
  end
51
48
 
52
49
  initializer "decidim_proposals.assets" do |app|
53
- app.config.assets.precompile += %w(decidim_proposals_manifest.js
54
- decidim/proposals/identity_selector_dialog.js)
50
+ app.config.assets.precompile += %w(decidim_proposals_manifest.js)
55
51
  end
56
52
 
57
53
  initializer "decidim.content_processors" do |_app|
@@ -112,7 +108,7 @@ module Decidim
112
108
  payload = data[:this]
113
109
  if payload[:from_type] == Decidim::Accountability::Result.name && payload[:to_type] == Proposal.name
114
110
  proposal = Proposal.find(payload[:to_id])
115
- proposal.update(state: "accepted")
111
+ proposal.update(state: "accepted", state_published_at: Time.current)
116
112
  end
117
113
  end
118
114
  end
@@ -131,8 +131,8 @@ module Decidim
131
131
  def create_proposal(title, body, participatory_text_level)
132
132
  attributes = {
133
133
  component: @component,
134
- title: title,
135
- body: body,
134
+ title: { I18n.locale => title },
135
+ body: { I18n.locale => body },
136
136
  participatory_text_level: participatory_text_level
137
137
  }
138
138
 
@@ -31,8 +31,8 @@ module Decidim
31
31
  url: Decidim::ResourceLocatorPresenter.new(proposal.participatory_space).url
32
32
  },
33
33
  component: { id: component.id },
34
- title: present(proposal).title,
35
- body: present(proposal).body,
34
+ title: proposal.title,
35
+ body: proposal.body,
36
36
  state: proposal.state.to_s,
37
37
  reference: proposal.reference,
38
38
  answer: ensure_translatable(proposal.answer),
@@ -41,7 +41,7 @@ module Decidim
41
41
  total_count: proposal.endorsements.count,
42
42
  user_endorsements: user_endorsements
43
43
  },
44
- comments: proposal.comments.count,
44
+ comments: proposal.comments_count,
45
45
  attachments: proposal.attachments.count,
46
46
  followers: proposal.followers.count,
47
47
  published_at: proposal.published_at,
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "decidim/dev/test/rspec_support/capybara_data_picker"
4
+
5
+ module Capybara
6
+ module ProposalsPicker
7
+ include DataPicker
8
+
9
+ RSpec::Matchers.define :have_proposals_picked do |expected|
10
+ match do |proposals_picker|
11
+ data_picker = proposals_picker.data_picker
12
+
13
+ expected.each do |proposal|
14
+ expect(data_picker).to have_selector(".picker-values div input[value='#{proposal.id}']", visible: :all)
15
+ expect(data_picker).to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,\"#{translated(proposal.title)}\")]]")
16
+ end
17
+ end
18
+ end
19
+
20
+ RSpec::Matchers.define :have_proposals_not_picked do |expected|
21
+ match do |proposals_picker|
22
+ data_picker = proposals_picker.data_picker
23
+
24
+ expected.each do |proposal|
25
+ expect(data_picker).not_to have_selector(".picker-values div input[value='#{proposal.id}']", visible: :all)
26
+ expect(data_picker).not_to have_selector(:xpath, "//div[contains(@class,'picker-values')]/div/a[text()[contains(.,\"#{translated(proposal.title)}\")]]")
27
+ end
28
+ end
29
+ end
30
+
31
+ def proposals_pick(proposals_picker, proposals)
32
+ data_picker = proposals_picker.data_picker
33
+
34
+ expect(data_picker).to have_selector(".picker-prompt")
35
+ data_picker.find(".picker-prompt").click
36
+
37
+ proposals.each do |proposal|
38
+ data_picker_choose_value(proposal.id)
39
+ end
40
+ data_picker_close
41
+
42
+ expect(proposals_picker).to have_proposals_picked(proposals)
43
+ end
44
+ end
45
+ end
46
+
47
+ RSpec.configure do |config|
48
+ config.include Capybara::ProposalsPicker, type: :system
49
+ end
@@ -160,15 +160,6 @@ FactoryBot.define do
160
160
  end
161
161
  end
162
162
 
163
- trait :with_geocoding_and_collaborative_drafts_enabled do
164
- settings do
165
- {
166
- geocoding_enabled: true,
167
- collaborative_drafts_enabled: true
168
- }
169
- end
170
- end
171
-
172
163
  trait :with_attachments_allowed_and_collaborative_drafts_enabled do
173
164
  settings do
174
165
  {
@@ -223,6 +214,14 @@ FactoryBot.define do
223
214
  end
224
215
  end
225
216
 
217
+ trait :with_card_image_allowed do
218
+ settings do
219
+ {
220
+ allow_card_image: true
221
+ }
222
+ end
223
+ end
224
+
226
225
  trait :with_extra_hashtags do
227
226
  transient do
228
227
  automatic_hashtags { "AutoHashtag AnotherAutoHashtag" }
@@ -239,6 +238,16 @@ FactoryBot.define do
239
238
  }
240
239
  end
241
240
  end
241
+
242
+ trait :without_publish_answers_immediately do
243
+ step_settings do
244
+ {
245
+ participatory_space.active_step.id => {
246
+ publish_answers_immediately: false
247
+ }
248
+ }
249
+ end
250
+ end
242
251
  end
243
252
 
244
253
  factory :proposal, class: "Decidim::Proposals::Proposal" do
@@ -250,20 +259,38 @@ FactoryBot.define do
250
259
  end
251
260
 
252
261
  title do
253
- content = generate(:title).dup
254
- content.prepend("<script>alert('TITLE');</script> ") unless skip_injection
255
- content
262
+ if skip_injection
263
+ Decidim::Faker::Localized.localized { generate(:title) }
264
+ else
265
+ Decidim::Faker::Localized.localized { "<script>alert(\"TITLE\");</script> " + generate(:title) }
266
+ end
256
267
  end
257
268
  body do
258
- content = Faker::Lorem.sentences(3).join("\n")
259
- content.prepend("<script>alert('BODY');</script> ") unless skip_injection
260
- content
269
+ if skip_injection
270
+ Decidim::Faker::Localized.localized { Faker::Lorem.sentences(3).join("\n") }
271
+ else
272
+ Decidim::Faker::Localized.localized { "<script>alert(\"TITLE\");</script> " + Faker::Lorem.sentences(3).join("\n") }
273
+ end
261
274
  end
262
275
  component { create(:proposal_component) }
263
276
  published_at { Time.current }
264
277
  address { "#{Faker::Address.street_name}, #{Faker::Address.city}" }
265
278
 
266
279
  after(:build) do |proposal, evaluator|
280
+ proposal.title = if evaluator.title.is_a?(String)
281
+ { proposal.try(:organization).try(:default_locale) || "en" => evaluator.title }
282
+ else
283
+ evaluator.title
284
+ end
285
+ proposal.body = if evaluator.body.is_a?(String)
286
+ { proposal.try(:organization).try(:default_locale) || "en" => evaluator.body }
287
+ else
288
+ evaluator.body
289
+ end
290
+
291
+ proposal.title = Decidim::ContentProcessor.parse_with_processor(:hashtag, proposal.title, current_organization: proposal.organization).rewrite
292
+ proposal.body = Decidim::ContentProcessor.parse_with_processor(:hashtag, proposal.body, current_organization: proposal.organization).rewrite
293
+
267
294
  if proposal.component
268
295
  users = evaluator.users || [create(:user, organization: proposal.component.participatory_space.organization)]
269
296
  users.each_with_index do |user, idx|
@@ -281,6 +308,23 @@ FactoryBot.define do
281
308
  published_at { nil }
282
309
  end
283
310
 
311
+ trait :citizen_author do
312
+ after :build do |proposal|
313
+ proposal.coauthorships.clear
314
+ user = build(:user, organization: proposal.component.participatory_space.organization)
315
+ proposal.coauthorships.build(author: user)
316
+ end
317
+ end
318
+
319
+ trait :user_group_author do
320
+ after :build do |proposal|
321
+ proposal.coauthorships.clear
322
+ user = create(:user, organization: proposal.component.participatory_space.organization)
323
+ user_group = create(:user_group, :verified, organization: user.organization, users: [user])
324
+ proposal.coauthorships.build(author: user, user_group: user_group)
325
+ end
326
+ end
327
+
284
328
  trait :official do
285
329
  after :build do |proposal|
286
330
  proposal.coauthorships.clear
@@ -291,7 +335,7 @@ FactoryBot.define do
291
335
  trait :official_meeting do
292
336
  after :build do |proposal|
293
337
  proposal.coauthorships.clear
294
- component = create(:meeting_component, participatory_space: proposal.component.participatory_space)
338
+ component = build(:meeting_component, participatory_space: proposal.component.participatory_space)
295
339
  proposal.coauthorships.build(author: build(:meeting, component: component))
296
340
  end
297
341
  end
@@ -299,26 +343,41 @@ FactoryBot.define do
299
343
  trait :evaluating do
300
344
  state { "evaluating" }
301
345
  answered_at { Time.current }
346
+ state_published_at { Time.current }
302
347
  end
303
348
 
304
349
  trait :accepted do
305
350
  state { "accepted" }
306
351
  answered_at { Time.current }
352
+ state_published_at { Time.current }
307
353
  end
308
354
 
309
355
  trait :rejected do
310
356
  state { "rejected" }
311
357
  answered_at { Time.current }
358
+ state_published_at { Time.current }
312
359
  end
313
360
 
314
361
  trait :withdrawn do
315
362
  state { "withdrawn" }
316
363
  end
317
364
 
365
+ trait :accepted_not_published do
366
+ state { "accepted" }
367
+ answered_at { Time.current }
368
+ state_published_at { nil }
369
+ answer { generate_localized_title }
370
+ end
371
+
318
372
  trait :with_answer do
319
373
  state { "accepted" }
320
374
  answer { generate_localized_title }
321
375
  answered_at { Time.current }
376
+ state_published_at { Time.current }
377
+ end
378
+
379
+ trait :not_answered do
380
+ state { nil }
322
381
  end
323
382
 
324
383
  trait :draft do
@@ -339,7 +398,15 @@ FactoryBot.define do
339
398
 
340
399
  trait :with_endorsements do
341
400
  after :create do |proposal|
342
- create_list(:proposal_endorsement, 5, proposal: proposal)
401
+ 5.times.collect do
402
+ create(:endorsement, resource: proposal, author: build(:user, organization: proposal.participatory_space.organization))
403
+ end
404
+ end
405
+ end
406
+
407
+ trait :with_amendments do
408
+ after :create do |proposal|
409
+ create_list(:proposal_amendment, 5, amendable: proposal)
343
410
  end
344
411
  end
345
412
  end
@@ -349,15 +416,11 @@ FactoryBot.define do
349
416
  author { build(:user, organization: proposal.organization) }
350
417
  end
351
418
 
352
- factory :proposal_endorsement, class: "Decidim::Proposals::ProposalEndorsement" do
353
- proposal { build(:proposal) }
354
- author { build(:user, organization: proposal.organization) }
355
- end
356
-
357
- factory :user_group_proposal_endorsement, class: "Decidim::Proposals::ProposalEndorsement" do
358
- proposal { build(:proposal) }
359
- author { build(:user, organization: proposal.organization) }
360
- user_group { create(:user_group, verified_at: Time.current, organization: proposal.organization, users: [author]) }
419
+ factory :proposal_amendment, class: "Decidim::Amendment" do
420
+ amendable { build(:proposal) }
421
+ emendation { build(:proposal, component: amendable.component) }
422
+ amender { build(:user, organization: amendable.component.participatory_space.organization) }
423
+ state { Decidim::Amendment::STATES.sample }
361
424
  end
362
425
 
363
426
  factory :proposal_note, class: "Decidim::Proposals::ProposalNote" do
@@ -404,8 +467,17 @@ FactoryBot.define do
404
467
  end
405
468
 
406
469
  factory :participatory_text, class: "Decidim::Proposals::ParticipatoryText" do
407
- title { "<script>alert(\"TITLE\");</script> " + generate(:title) }
408
- description { "<script>alert(\"DESCRIPTION\");</script>\n" + Faker::Lorem.sentences(3).join("\n") }
470
+ title { { en: "<script>alert(\"TITLE\");</script> " + generate(:title) } }
471
+ description { { en: "<script>alert(\"DESCRIPTION\");</script>\n" + Faker::Lorem.sentences(3).join("\n") } }
409
472
  component { create(:proposal_component) }
410
473
  end
474
+
475
+ factory :valuation_assignment, class: "Decidim::Proposals::ValuationAssignment" do
476
+ proposal
477
+ valuator_role do
478
+ space = proposal.component.participatory_space
479
+ organization = space.organization
480
+ build :participatory_process_user_role, role: :valuator, user: build(:user, organization: organization)
481
+ end
482
+ end
411
483
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Proposals
5
+ # A set of methods and features related to proposal valuations.
6
+ module Valuatable
7
+ extend ActiveSupport::Concern
8
+ include Decidim::Comments::Commentable
9
+
10
+ included do
11
+ has_many :valuation_assignments, foreign_key: "decidim_proposal_id", dependent: :destroy
12
+
13
+ def valuators
14
+ valuator_role_ids = valuation_assignments.where(proposal: self).pluck(:valuator_role_id)
15
+ user_ids = participatory_space.user_roles(:valuator).where(id: valuator_role_ids).pluck(:decidim_user_id)
16
+ participatory_space.organization.users.where(id: user_ids)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds decidim-proposals version.
5
5
  module Proposals
6
6
  def self.version
7
- "0.19.1"
7
+ "0.23.0"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-proposals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.1
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-12-13 00:00:00.000000000 Z
13
+ date: 2020-11-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: acts_as_list
@@ -60,42 +60,28 @@ dependencies:
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.19.1
63
+ version: 0.23.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.19.1
70
+ version: 0.23.0
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: decidim-core
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.19.1
77
+ version: 0.23.0
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 0.19.1
85
- - !ruby/object:Gem::Dependency
86
- name: diffy
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '3.3'
92
- type: :runtime
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: '3.3'
84
+ version: 0.23.0
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: doc2text
101
87
  requirement: !ruby/object:Gem::Requirement
@@ -116,14 +102,20 @@ dependencies:
116
102
  requirements:
117
103
  - - "~>"
118
104
  - !ruby/object:Gem::Version
119
- version: '1.1'
105
+ version: '1.2'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.2.1
120
109
  type: :runtime
121
110
  prerelease: false
122
111
  version_requirements: !ruby/object:Gem::Requirement
123
112
  requirements:
124
113
  - - "~>"
125
114
  - !ruby/object:Gem::Version
126
- version: '1.1'
115
+ version: '1.2'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 1.2.1
127
119
  - !ruby/object:Gem::Dependency
128
120
  name: ransack
129
121
  requirement: !ruby/object:Gem::Requirement
@@ -158,84 +150,84 @@ dependencies:
158
150
  requirements:
159
151
  - - '='
160
152
  - !ruby/object:Gem::Version
161
- version: 0.19.1
153
+ version: 0.23.0
162
154
  type: :development
163
155
  prerelease: false
164
156
  version_requirements: !ruby/object:Gem::Requirement
165
157
  requirements:
166
158
  - - '='
167
159
  - !ruby/object:Gem::Version
168
- version: 0.19.1
160
+ version: 0.23.0
169
161
  - !ruby/object:Gem::Dependency
170
162
  name: decidim-assemblies
171
163
  requirement: !ruby/object:Gem::Requirement
172
164
  requirements:
173
165
  - - '='
174
166
  - !ruby/object:Gem::Version
175
- version: 0.19.1
167
+ version: 0.23.0
176
168
  type: :development
177
169
  prerelease: false
178
170
  version_requirements: !ruby/object:Gem::Requirement
179
171
  requirements:
180
172
  - - '='
181
173
  - !ruby/object:Gem::Version
182
- version: 0.19.1
174
+ version: 0.23.0
183
175
  - !ruby/object:Gem::Dependency
184
176
  name: decidim-budgets
185
177
  requirement: !ruby/object:Gem::Requirement
186
178
  requirements:
187
179
  - - '='
188
180
  - !ruby/object:Gem::Version
189
- version: 0.19.1
181
+ version: 0.23.0
190
182
  type: :development
191
183
  prerelease: false
192
184
  version_requirements: !ruby/object:Gem::Requirement
193
185
  requirements:
194
186
  - - '='
195
187
  - !ruby/object:Gem::Version
196
- version: 0.19.1
188
+ version: 0.23.0
197
189
  - !ruby/object:Gem::Dependency
198
190
  name: decidim-dev
199
191
  requirement: !ruby/object:Gem::Requirement
200
192
  requirements:
201
193
  - - '='
202
194
  - !ruby/object:Gem::Version
203
- version: 0.19.1
195
+ version: 0.23.0
204
196
  type: :development
205
197
  prerelease: false
206
198
  version_requirements: !ruby/object:Gem::Requirement
207
199
  requirements:
208
200
  - - '='
209
201
  - !ruby/object:Gem::Version
210
- version: 0.19.1
202
+ version: 0.23.0
211
203
  - !ruby/object:Gem::Dependency
212
204
  name: decidim-meetings
213
205
  requirement: !ruby/object:Gem::Requirement
214
206
  requirements:
215
207
  - - '='
216
208
  - !ruby/object:Gem::Version
217
- version: 0.19.1
209
+ version: 0.23.0
218
210
  type: :development
219
211
  prerelease: false
220
212
  version_requirements: !ruby/object:Gem::Requirement
221
213
  requirements:
222
214
  - - '='
223
215
  - !ruby/object:Gem::Version
224
- version: 0.19.1
216
+ version: 0.23.0
225
217
  - !ruby/object:Gem::Dependency
226
218
  name: decidim-participatory_processes
227
219
  requirement: !ruby/object:Gem::Requirement
228
220
  requirements:
229
221
  - - '='
230
222
  - !ruby/object:Gem::Version
231
- version: 0.19.1
223
+ version: 0.23.0
232
224
  type: :development
233
225
  prerelease: false
234
226
  version_requirements: !ruby/object:Gem::Requirement
235
227
  requirements:
236
228
  - - '='
237
229
  - !ruby/object:Gem::Version
238
- version: 0.19.1
230
+ version: 0.23.0
239
231
  description: A proposals component for decidim's participatory spaces.
240
232
  email:
241
233
  - josepjaume@gmail.com
@@ -258,7 +250,7 @@ files:
258
250
  - app/assets/javascripts/decidim/proposals/add_proposal.js.es6
259
251
  - app/assets/javascripts/decidim/proposals/admin/proposals.es6
260
252
  - app/assets/javascripts/decidim/proposals/admin/proposals_form.js.es6
261
- - app/assets/javascripts/decidim/proposals/identity_selector_dialog.js.es6
253
+ - app/assets/javascripts/decidim/proposals/admin/proposals_picker.js.es6
262
254
  - app/assets/javascripts/decidim/proposals/utils.js.es6
263
255
  - app/cells/decidim/proposals/collaborative_draft_cell.rb
264
256
  - app/cells/decidim/proposals/collaborative_draft_link_to_proposal/show.erb
@@ -266,8 +258,8 @@ files:
266
258
  - app/cells/decidim/proposals/collaborative_draft_m/footer.erb
267
259
  - app/cells/decidim/proposals/collaborative_draft_m/tags.erb
268
260
  - app/cells/decidim/proposals/collaborative_draft_m_cell.rb
269
- - app/cells/decidim/proposals/endorsers_list/show.erb
270
- - app/cells/decidim/proposals/endorsers_list_cell.rb
261
+ - app/cells/decidim/proposals/cost_report/show.erb
262
+ - app/cells/decidim/proposals/cost_report_cell.rb
271
263
  - app/cells/decidim/proposals/highlighted_proposals/show.erb
272
264
  - app/cells/decidim/proposals/highlighted_proposals_cell.rb
273
265
  - app/cells/decidim/proposals/highlighted_proposals_for_component/show.erb
@@ -289,38 +281,45 @@ files:
289
281
  - app/cells/decidim/proposals/proposal_m_cell.rb
290
282
  - app/cells/decidim/proposals/proposal_tags/show.erb
291
283
  - app/cells/decidim/proposals/proposal_tags_cell.rb
284
+ - app/cells/decidim/proposals/proposals_picker/proposals.erb
285
+ - app/cells/decidim/proposals/proposals_picker/show.erb
286
+ - app/cells/decidim/proposals/proposals_picker_cell.rb
292
287
  - app/commands/decidim/proposals/accept_access_to_collaborative_draft.rb
293
288
  - app/commands/decidim/proposals/admin/answer_proposal.rb
289
+ - app/commands/decidim/proposals/admin/assign_proposals_to_valuator.rb
294
290
  - app/commands/decidim/proposals/admin/create_proposal.rb
295
291
  - app/commands/decidim/proposals/admin/create_proposal_note.rb
296
292
  - app/commands/decidim/proposals/admin/discard_participatory_text.rb
297
293
  - app/commands/decidim/proposals/admin/import_participatory_text.rb
298
294
  - app/commands/decidim/proposals/admin/import_proposals.rb
299
295
  - app/commands/decidim/proposals/admin/merge_proposals.rb
296
+ - app/commands/decidim/proposals/admin/notify_proposal_answer.rb
297
+ - app/commands/decidim/proposals/admin/publish_answers.rb
300
298
  - app/commands/decidim/proposals/admin/publish_participatory_text.rb
301
299
  - app/commands/decidim/proposals/admin/split_proposals.rb
300
+ - app/commands/decidim/proposals/admin/unassign_proposals_from_valuator.rb
302
301
  - app/commands/decidim/proposals/admin/update_participatory_text.rb
303
302
  - app/commands/decidim/proposals/admin/update_proposal.rb
304
303
  - app/commands/decidim/proposals/admin/update_proposal_category.rb
305
- - app/commands/decidim/proposals/attachment_methods.rb
304
+ - app/commands/decidim/proposals/admin/update_proposal_scope.rb
306
305
  - app/commands/decidim/proposals/create_collaborative_draft.rb
307
306
  - app/commands/decidim/proposals/create_proposal.rb
308
307
  - app/commands/decidim/proposals/create_proposal_export.rb
309
308
  - app/commands/decidim/proposals/destroy_proposal.rb
310
- - app/commands/decidim/proposals/endorse_proposal.rb
311
309
  - app/commands/decidim/proposals/gallery_methods.rb
312
310
  - app/commands/decidim/proposals/hashtags_methods.rb
313
311
  - app/commands/decidim/proposals/publish_collaborative_draft.rb
314
312
  - app/commands/decidim/proposals/publish_proposal.rb
315
313
  - app/commands/decidim/proposals/reject_access_to_collaborative_draft.rb
316
314
  - app/commands/decidim/proposals/request_access_to_collaborative_draft.rb
317
- - app/commands/decidim/proposals/unendorse_proposal.rb
318
315
  - app/commands/decidim/proposals/unvote_proposal.rb
319
316
  - app/commands/decidim/proposals/update_collaborative_draft.rb
320
317
  - app/commands/decidim/proposals/update_proposal.rb
321
318
  - app/commands/decidim/proposals/vote_proposal.rb
322
319
  - app/commands/decidim/proposals/withdraw_collaborative_draft.rb
323
320
  - app/commands/decidim/proposals/withdraw_proposal.rb
321
+ - app/controllers/concerns/decidim/proposals/admin/filterable.rb
322
+ - app/controllers/concerns/decidim/proposals/admin/picker.rb
324
323
  - app/controllers/concerns/decidim/proposals/collaborative_orderable.rb
325
324
  - app/controllers/concerns/decidim/proposals/orderable.rb
326
325
  - app/controllers/decidim/proposals/admin/application_controller.rb
@@ -331,16 +330,18 @@ files:
331
330
  - app/controllers/decidim/proposals/admin/proposals_imports_controller.rb
332
331
  - app/controllers/decidim/proposals/admin/proposals_merges_controller.rb
333
332
  - app/controllers/decidim/proposals/admin/proposals_splits_controller.rb
333
+ - app/controllers/decidim/proposals/admin/valuation_assignments_controller.rb
334
334
  - app/controllers/decidim/proposals/application_controller.rb
335
335
  - app/controllers/decidim/proposals/collaborative_draft_collaborator_requests_controller.rb
336
336
  - app/controllers/decidim/proposals/collaborative_drafts_controller.rb
337
- - app/controllers/decidim/proposals/proposal_endorsements_controller.rb
338
337
  - app/controllers/decidim/proposals/proposal_votes_controller.rb
339
- - app/controllers/decidim/proposals/proposal_widgets_controller.rb
340
338
  - app/controllers/decidim/proposals/proposals_controller.rb
341
339
  - app/controllers/decidim/proposals/versions_controller.rb
340
+ - app/controllers/decidim/proposals/widgets_controller.rb
342
341
  - app/events/decidim/proposals/accepted_proposal_event.rb
342
+ - app/events/decidim/proposals/admin/proposal_note_created_event.rb
343
343
  - app/events/decidim/proposals/admin/update_proposal_category_event.rb
344
+ - app/events/decidim/proposals/admin/update_proposal_scope_event.rb
344
345
  - app/events/decidim/proposals/collaborative_draft_access_accepted_event.rb
345
346
  - app/events/decidim/proposals/collaborative_draft_access_rejected_event.rb
346
347
  - app/events/decidim/proposals/collaborative_draft_access_request_event.rb
@@ -359,20 +360,27 @@ files:
359
360
  - app/forms/decidim/proposals/accept_access_to_collaborative_draft_form.rb
360
361
  - app/forms/decidim/proposals/access_to_collaborative_draft_form.rb
361
362
  - app/forms/decidim/proposals/admin/import_participatory_text_form.rb
363
+ - app/forms/decidim/proposals/admin/participatory_text_proposal_form.rb
362
364
  - app/forms/decidim/proposals/admin/preview_participatory_text_form.rb
363
365
  - app/forms/decidim/proposals/admin/proposal_answer_form.rb
366
+ - app/forms/decidim/proposals/admin/proposal_base_form.rb
364
367
  - app/forms/decidim/proposals/admin/proposal_form.rb
365
368
  - app/forms/decidim/proposals/admin/proposal_note_form.rb
366
369
  - app/forms/decidim/proposals/admin/proposals_fork_form.rb
367
370
  - app/forms/decidim/proposals/admin/proposals_import_form.rb
368
371
  - app/forms/decidim/proposals/admin/proposals_merge_form.rb
369
372
  - app/forms/decidim/proposals/admin/proposals_split_form.rb
373
+ - app/forms/decidim/proposals/admin/valuation_assignment_form.rb
370
374
  - app/forms/decidim/proposals/collaborative_draft_form.rb
371
375
  - app/forms/decidim/proposals/proposal_form.rb
372
376
  - app/forms/decidim/proposals/proposal_wizard_create_step_form.rb
373
377
  - app/forms/decidim/proposals/reject_access_to_collaborative_draft_form.rb
374
378
  - app/forms/decidim/proposals/request_access_to_collaborative_draft_form.rb
379
+ - app/helpers/decidim/proposals/admin/filterable_helper.rb
380
+ - app/helpers/decidim/proposals/admin/proposal_bulk_actions_helper.rb
381
+ - app/helpers/decidim/proposals/admin/proposal_rankings_helper.rb
375
382
  - app/helpers/decidim/proposals/admin/proposals_helper.rb
383
+ - app/helpers/decidim/proposals/admin/proposals_picker_helper.rb
376
384
  - app/helpers/decidim/proposals/application_helper.rb
377
385
  - app/helpers/decidim/proposals/collaborative_draft_cells_helper.rb
378
386
  - app/helpers/decidim/proposals/collaborative_draft_helper.rb
@@ -383,6 +391,7 @@ files:
383
391
  - app/helpers/decidim/proposals/proposal_endorsements_helper.rb
384
392
  - app/helpers/decidim/proposals/proposal_votes_helper.rb
385
393
  - app/helpers/decidim/proposals/proposal_wizard_helper.rb
394
+ - app/helpers/decidim/proposals/proposals_helper.rb
386
395
  - app/jobs/decidim/proposals/notify_proposals_mentioned_job.rb
387
396
  - app/jobs/decidim/proposals/settings_change_job.rb
388
397
  - app/models/decidim/proposals/application_record.rb
@@ -390,17 +399,20 @@ files:
390
399
  - app/models/decidim/proposals/collaborative_draft_collaborator_request.rb
391
400
  - app/models/decidim/proposals/participatory_text.rb
392
401
  - app/models/decidim/proposals/proposal.rb
393
- - app/models/decidim/proposals/proposal_endorsement.rb
394
402
  - app/models/decidim/proposals/proposal_note.rb
395
403
  - app/models/decidim/proposals/proposal_vote.rb
404
+ - app/models/decidim/proposals/valuation_assignment.rb
396
405
  - app/permissions/decidim/proposals/admin/permissions.rb
397
406
  - app/permissions/decidim/proposals/permissions.rb
398
407
  - app/presenters/decidim/proposals/admin_log/proposal_note_presenter.rb
399
408
  - app/presenters/decidim/proposals/admin_log/proposal_presenter.rb
409
+ - app/presenters/decidim/proposals/admin_log/valuation_assignment_presenter.rb
400
410
  - app/presenters/decidim/proposals/admin_log/value_types/proposal_state_presenter.rb
401
411
  - app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb
412
+ - app/presenters/decidim/proposals/admin_log/value_types/valuator_role_user_presenter.rb
402
413
  - app/presenters/decidim/proposals/collaborative_draft_presenter.rb
403
414
  - app/presenters/decidim/proposals/log/resource_presenter.rb
415
+ - app/presenters/decidim/proposals/log/valuation_assignment_presenter.rb
404
416
  - app/presenters/decidim/proposals/official_author_presenter.rb
405
417
  - app/presenters/decidim/proposals/proposal_presenter.rb
406
418
  - app/queries/decidim/proposals/filtered_proposals.rb
@@ -416,31 +428,39 @@ files:
416
428
  - app/services/decidim/proposals/diff_renderer.rb
417
429
  - app/services/decidim/proposals/proposal_builder.rb
418
430
  - app/services/decidim/proposals/proposal_search.rb
431
+ - app/types/decidim/proposals/proposal_input_filter.rb
432
+ - app/types/decidim/proposals/proposal_input_sort.rb
419
433
  - app/types/decidim/proposals/proposal_type.rb
420
434
  - app/types/decidim/proposals/proposals_type.rb
435
+ - app/validators/proposal_length_validator.rb
421
436
  - app/views/decidim/participatory_processes/participatory_process_groups/_highlighted_proposals.html.erb
422
437
  - app/views/decidim/proposals/admin/participatory_texts/_article-preview.html.erb
423
438
  - app/views/decidim/proposals/admin/participatory_texts/_bulk-actions.html.erb
424
439
  - app/views/decidim/proposals/admin/participatory_texts/index.html.erb
425
440
  - app/views/decidim/proposals/admin/participatory_texts/new_import.html.erb
426
- - app/views/decidim/proposals/admin/proposal_answers/edit.html.erb
441
+ - app/views/decidim/proposals/admin/proposal_answers/_form.html.erb
427
442
  - app/views/decidim/proposals/admin/proposal_notes/_form.html.erb
428
443
  - app/views/decidim/proposals/admin/proposal_notes/_proposal_notes.html.erb
429
- - app/views/decidim/proposals/admin/proposal_notes/index.html.erb
430
444
  - app/views/decidim/proposals/admin/proposals/_bulk-actions.html.erb
431
445
  - app/views/decidim/proposals/admin/proposals/_form.html.erb
432
446
  - app/views/decidim/proposals/admin/proposals/_js-callout.html.erb
433
447
  - app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb
448
+ - app/views/decidim/proposals/admin/proposals/bulk_actions/_assign_to_valuator.html.erb
434
449
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_dropdown.html.erb
435
450
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_merge.html.erb
451
+ - app/views/decidim/proposals/admin/proposals/bulk_actions/_publish_answers.html.erb
436
452
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_recategorize.html.erb
453
+ - app/views/decidim/proposals/admin/proposals/bulk_actions/_scope-change.html.erb
437
454
  - app/views/decidim/proposals/admin/proposals/bulk_actions/_split.html.erb
455
+ - app/views/decidim/proposals/admin/proposals/bulk_actions/_unassign_from_valuator.html.erb
438
456
  - app/views/decidim/proposals/admin/proposals/edit.html.erb
439
457
  - app/views/decidim/proposals/admin/proposals/index.html.erb
440
458
  - app/views/decidim/proposals/admin/proposals/new.html.erb
459
+ - app/views/decidim/proposals/admin/proposals/publish_answers.js.erb
460
+ - app/views/decidim/proposals/admin/proposals/show.html.erb
441
461
  - app/views/decidim/proposals/admin/proposals/update_category.js.erb
462
+ - app/views/decidim/proposals/admin/proposals/update_scope.js.erb
442
463
  - app/views/decidim/proposals/admin/proposals_imports/new.html.erb
443
- - app/views/decidim/proposals/admin/shared/_info_proposal.html.erb
444
464
  - app/views/decidim/proposals/collaborative_drafts/_accept_request_access_form.html.erb
445
465
  - app/views/decidim/proposals/collaborative_drafts/_collaborative_drafts.html.erb
446
466
  - app/views/decidim/proposals/collaborative_drafts/_collaborator_requests.html.erb
@@ -459,15 +479,9 @@ files:
459
479
  - app/views/decidim/proposals/collaborative_drafts/index.js.erb
460
480
  - app/views/decidim/proposals/collaborative_drafts/new.html.erb
461
481
  - app/views/decidim/proposals/collaborative_drafts/show.html.erb
462
- - app/views/decidim/proposals/proposal_endorsements/_identity.html.erb
463
- - app/views/decidim/proposals/proposal_endorsements/identities.html.erb
464
- - app/views/decidim/proposals/proposal_endorsements/update_buttons_and_counters.js.erb
465
482
  - app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb
466
- - app/views/decidim/proposals/proposal_widgets/show.html.erb
467
483
  - app/views/decidim/proposals/proposals/_count.html.erb
468
484
  - app/views/decidim/proposals/proposals/_edit_form_fields.html.erb
469
- - app/views/decidim/proposals/proposals/_endorsement_button.html.erb
470
- - app/views/decidim/proposals/proposals/_endorsement_identities_cabin.html.erb
471
485
  - app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb
472
486
  - app/views/decidim/proposals/proposals/_filters.html.erb
473
487
  - app/views/decidim/proposals/proposals/_filters_small_view.html.erb
@@ -497,38 +511,74 @@ files:
497
511
  - app/views/decidim/proposals/proposals/participatory_texts/participatory_text.html.erb
498
512
  - app/views/decidim/proposals/proposals/preview.html.erb
499
513
  - app/views/decidim/proposals/proposals/show.html.erb
500
- - app/views/decidim/proposals/versions/_version.html.erb
501
514
  - app/views/decidim/proposals/versions/index.html.erb
502
515
  - app/views/decidim/proposals/versions/show.html.erb
516
+ - config/locales/am-ET.yml
503
517
  - config/locales/ar-SA.yml
504
518
  - config/locales/ar.yml
519
+ - config/locales/bg-BG.yml
520
+ - config/locales/bg.yml
505
521
  - config/locales/ca.yml
506
522
  - config/locales/cs-CZ.yml
507
523
  - config/locales/cs.yml
524
+ - config/locales/da-DK.yml
525
+ - config/locales/da.yml
508
526
  - config/locales/de.yml
527
+ - config/locales/el-GR.yml
528
+ - config/locales/el.yml
509
529
  - config/locales/en.yml
510
530
  - config/locales/eo-UY.yml
531
+ - config/locales/eo.yml
511
532
  - config/locales/es-MX.yml
512
533
  - config/locales/es-PY.yml
513
534
  - config/locales/es.yml
535
+ - config/locales/et-EE.yml
536
+ - config/locales/et.yml
514
537
  - config/locales/eu.yml
515
538
  - config/locales/fi-pl.yml
516
539
  - config/locales/fi-plain.yml
517
540
  - config/locales/fi.yml
541
+ - config/locales/fr-CA.yml
518
542
  - config/locales/fr.yml
543
+ - config/locales/ga-IE.yml
519
544
  - config/locales/gl.yml
545
+ - config/locales/hr-HR.yml
546
+ - config/locales/hr.yml
520
547
  - config/locales/hu.yml
521
548
  - config/locales/id-ID.yml
549
+ - config/locales/is-IS.yml
550
+ - config/locales/is.yml
522
551
  - config/locales/it.yml
552
+ - config/locales/ja-JP.yml
553
+ - config/locales/ja.yml
554
+ - config/locales/ko-KR.yml
555
+ - config/locales/ko.yml
556
+ - config/locales/lt-LT.yml
557
+ - config/locales/lt.yml
558
+ - config/locales/lv.yml
559
+ - config/locales/mt-MT.yml
560
+ - config/locales/mt.yml
523
561
  - config/locales/nl.yml
524
562
  - config/locales/no.yml
563
+ - config/locales/om-ET.yml
525
564
  - config/locales/pl.yml
526
565
  - config/locales/pt-BR.yml
527
566
  - config/locales/pt.yml
567
+ - config/locales/ro-RO.yml
528
568
  - config/locales/ru.yml
569
+ - config/locales/sk-SK.yml
570
+ - config/locales/sk.yml
571
+ - config/locales/sl.yml
572
+ - config/locales/so-SO.yml
573
+ - config/locales/sr-CS.yml
529
574
  - config/locales/sv.yml
575
+ - config/locales/ti-ER.yml
530
576
  - config/locales/tr-TR.yml
531
577
  - config/locales/uk.yml
578
+ - config/locales/vi-VN.yml
579
+ - config/locales/vi.yml
580
+ - config/locales/zh-CN.yml
581
+ - config/locales/zh-TW.yml
532
582
  - db/migrate/20161212110850_create_decidim_proposals.rb
533
583
  - db/migrate/20170112115253_create_proposal_votes.rb
534
584
  - db/migrate/20170113114245_add_text_search_indexes.rb
@@ -568,6 +618,19 @@ files:
568
618
  - db/migrate/20181017084221_make_author_polymorhpic_for_proposal_endorsements.rb
569
619
  - db/migrate/20181026073215_add_created_in_meeting.rb
570
620
  - db/migrate/20190215113158_use_md5_indexes.rb
621
+ - db/migrate/20191206154128_add_endorsements_counter_cache_to_proposals.rb
622
+ - db/migrate/20200120215928_move_proposal_endorsements_to_core_endorsements.rb
623
+ - db/migrate/20200120230130_drop_proposal_endorsements.rb
624
+ - db/migrate/20200203111239_add_proposal_valuation_assignments.rb
625
+ - db/migrate/20200210135152_add_costs_to_proposals.rb
626
+ - db/migrate/20200212120110_sync_proposals_state_with_amendments_state.rb
627
+ - db/migrate/20200227175922_add_state_published_at_to_proposals.rb
628
+ - db/migrate/20200306123652_publish_existing_proposals_state.rb
629
+ - db/migrate/20200708091228_move_proposals_fields_to_i18n.rb
630
+ - db/migrate/20200730131631_move_proposal_endorsed_event_notifications_to_resource_endorsed_event.rb
631
+ - db/migrate/20200827154156_add_commentable_counter_cache_to_proposals.rb
632
+ - db/migrate/20200915151348_fix_proposals_data_to_ensure_title_and_body_are_hashes.rb
633
+ - db/migrate/20201002085508_fix_proposals_data.rb
571
634
  - lib/decidim/content_parsers/proposal_parser.rb
572
635
  - lib/decidim/content_renderers/proposal_renderer.rb
573
636
  - lib/decidim/proposals.rb
@@ -582,7 +645,9 @@ files:
582
645
  - lib/decidim/proposals/odt_to_markdown.rb
583
646
  - lib/decidim/proposals/participatory_text_section.rb
584
647
  - lib/decidim/proposals/proposal_serializer.rb
648
+ - lib/decidim/proposals/test/capybara_proposals_picker.rb
585
649
  - lib/decidim/proposals/test/factories.rb
650
+ - lib/decidim/proposals/valuatable.rb
586
651
  - lib/decidim/proposals/version.rb
587
652
  homepage: https://github.com/decidim/decidim
588
653
  licenses:
@@ -596,7 +661,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
596
661
  requirements:
597
662
  - - ">="
598
663
  - !ruby/object:Gem::Version
599
- version: '2.5'
664
+ version: '2.6'
600
665
  required_rubygems_version: !ruby/object:Gem::Requirement
601
666
  requirements:
602
667
  - - ">="