decidim-proposals 0.13.1 → 0.14.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/decidim_proposals_manifest.js +1 -0
  3. data/app/assets/images/decidim/gamification/badges/accepted_proposals.svg +144 -0
  4. data/app/assets/images/decidim/gamification/badges/proposal_votes.svg +95 -0
  5. data/app/assets/images/decidim/gamification/badges/proposals.svg +145 -0
  6. data/app/assets/javascripts/decidim/proposals/add_proposal.js.es6 +1 -2
  7. data/app/cells/decidim/proposals/collaborative_draft_cell.rb +55 -0
  8. data/app/cells/decidim/proposals/collaborative_draft_link_to_proposal/show.erb +13 -0
  9. data/app/cells/decidim/proposals/collaborative_draft_link_to_proposal_cell.rb +57 -0
  10. data/app/cells/decidim/proposals/collaborative_draft_m/footer.erb +6 -0
  11. data/app/cells/decidim/proposals/collaborative_draft_m/tags.erb +1 -0
  12. data/app/cells/decidim/proposals/collaborative_draft_m_cell.rb +39 -0
  13. data/app/cells/decidim/proposals/endorsers_list/show.erb +1 -2
  14. data/app/cells/decidim/proposals/irreversible_action_modal/show.erb +27 -0
  15. data/app/cells/decidim/proposals/irreversible_action_modal_cell.rb +79 -0
  16. data/app/cells/decidim/proposals/proposal_cell.rb +1 -1
  17. data/app/cells/decidim/proposals/proposal_link_to_collaborative_draft/show.erb +9 -0
  18. data/app/cells/decidim/proposals/proposal_link_to_collaborative_draft_cell.rb +30 -0
  19. data/app/cells/decidim/proposals/proposal_m/footer.erb +1 -1
  20. data/app/cells/decidim/proposals/proposal_m_cell.rb +9 -1
  21. data/app/commands/decidim/proposals/accept_access_to_collaborative_draft.rb +70 -0
  22. data/app/commands/decidim/proposals/admin/answer_proposal.rb +9 -0
  23. data/app/commands/decidim/proposals/admin/create_proposal.rb +5 -2
  24. data/app/commands/decidim/proposals/attachment_methods.rb +43 -0
  25. data/app/commands/decidim/proposals/create_collaborative_draft.rb +73 -0
  26. data/app/commands/decidim/proposals/create_proposal.rb +13 -48
  27. data/app/commands/decidim/proposals/publish_collaborative_draft.rb +87 -0
  28. data/app/commands/decidim/proposals/publish_proposal.rb +7 -0
  29. data/app/commands/decidim/proposals/reject_access_to_collaborative_draft.rb +63 -0
  30. data/app/commands/decidim/proposals/request_access_to_collaborative_draft.rb +50 -0
  31. data/app/commands/decidim/proposals/unvote_proposal.rb +6 -7
  32. data/app/commands/decidim/proposals/update_collaborative_draft.rb +60 -0
  33. data/app/commands/decidim/proposals/update_proposal.rb +16 -3
  34. data/app/commands/decidim/proposals/vote_proposal.rb +3 -0
  35. data/app/commands/decidim/proposals/withdraw_collaborative_draft.rb +65 -0
  36. data/app/controllers/concerns/decidim/proposals/collaborative_orderable.rb +56 -0
  37. data/app/controllers/decidim/proposals/admin/application_controller.rb +1 -0
  38. data/app/controllers/decidim/proposals/collaborative_draft_collaborator_requests_controller.rb +53 -0
  39. data/app/controllers/decidim/proposals/collaborative_drafts_controller.rb +171 -0
  40. data/app/controllers/decidim/proposals/proposals_controller.rb +38 -33
  41. data/app/controllers/decidim/proposals/versions_controller.rb +23 -0
  42. data/app/events/decidim/proposals/collaborative_draft_access_accepted_event.rb +8 -0
  43. data/app/events/decidim/proposals/collaborative_draft_access_rejected_event.rb +8 -0
  44. data/app/events/decidim/proposals/collaborative_draft_access_request_event.rb +27 -0
  45. data/app/events/decidim/proposals/collaborative_draft_access_requested_event.rb +8 -0
  46. data/app/events/decidim/proposals/collaborative_draft_access_requester_accepted_event.rb +8 -0
  47. data/app/events/decidim/proposals/collaborative_draft_access_requester_rejected_event.rb +8 -0
  48. data/app/events/decidim/proposals/collaborative_draft_withdrawn_event.rb +29 -0
  49. data/app/events/decidim/proposals/proposal_mentioned_event.rb +3 -1
  50. data/app/forms/decidim/proposals/accept_access_to_collaborative_draft_form.rb +10 -0
  51. data/app/forms/decidim/proposals/access_to_collaborative_draft_form.rb +35 -0
  52. data/app/forms/decidim/proposals/collaborative_draft_form.rb +18 -0
  53. data/app/forms/decidim/proposals/proposal_form.rb +2 -21
  54. data/app/forms/decidim/proposals/proposal_wizard_create_step_form.rb +36 -0
  55. data/app/forms/decidim/proposals/reject_access_to_collaborative_draft_form.rb +9 -0
  56. data/app/forms/decidim/proposals/request_access_to_collaborative_draft_form.rb +20 -0
  57. data/app/helpers/decidim/proposals/application_helper.rb +23 -8
  58. data/app/helpers/decidim/proposals/collaborative_draft_cells_helper.rb +48 -0
  59. data/app/helpers/decidim/proposals/collaborative_draft_helper.rb +29 -0
  60. data/app/helpers/decidim/proposals/map_helper.rb +3 -2
  61. data/app/helpers/decidim/proposals/proposal_cells_helper.rb +1 -1
  62. data/app/helpers/decidim/proposals/proposal_endorsements_helper.rb +15 -0
  63. data/app/helpers/decidim/proposals/proposal_wizard_helper.rb +52 -4
  64. data/app/models/decidim/proposals/collaborative_draft.rb +54 -0
  65. data/app/models/decidim/proposals/collaborative_draft_collaborator_request.rb +13 -0
  66. data/app/models/decidim/proposals/proposal.rb +9 -3
  67. data/app/permissions/decidim/proposals/permissions.rb +53 -9
  68. data/app/presenters/decidim/proposals/admin_log/proposal_presenter.rb +2 -2
  69. data/app/presenters/decidim/proposals/admin_log/value_types/proposal_title_body_presenter.rb +17 -0
  70. data/app/presenters/decidim/proposals/collaborative_draft_presenter.rb +27 -0
  71. data/app/presenters/decidim/proposals/proposal_presenter.rb +24 -1
  72. data/app/queries/decidim/proposals/similar_collaborative_drafts.rb +52 -0
  73. data/app/queries/decidim/proposals/similar_proposals.rb +2 -4
  74. data/app/services/decidim/proposals/collaborative_draft_search.rb +61 -0
  75. data/app/services/decidim/proposals/diff_renderer.rb +58 -0
  76. data/app/services/decidim/proposals/proposal_search.rb +1 -1
  77. data/app/views/decidim/participatory_processes/participatory_process_groups/_highlighted_proposals.html.erb +8 -3
  78. data/app/views/decidim/participatory_spaces/_highlighted_proposals.html.erb +8 -3
  79. data/app/views/decidim/proposals/admin/proposal_answers/edit.html.erb +1 -1
  80. data/app/views/decidim/proposals/admin/proposals/_form.html.erb +4 -4
  81. data/app/views/decidim/proposals/admin/proposals/_proposal-tr.html.erb +5 -2
  82. data/app/views/decidim/proposals/admin/proposals/index.html.erb +1 -1
  83. data/app/views/decidim/proposals/admin/proposals/update_category.js.erb +4 -4
  84. data/app/views/decidim/proposals/admin/shared/_info_proposal.html.erb +2 -2
  85. data/app/views/decidim/proposals/collaborative_drafts/_accept_request_access_form.html.erb +8 -0
  86. data/app/views/decidim/proposals/collaborative_drafts/_collaborative_drafts.html.erb +16 -0
  87. data/app/views/decidim/proposals/collaborative_drafts/_collaborator_requests.html.erb +20 -0
  88. data/app/views/decidim/proposals/collaborative_drafts/_count.html.erb +1 -0
  89. data/app/views/decidim/proposals/collaborative_drafts/_filters.html.erb +30 -0
  90. data/app/views/decidim/proposals/collaborative_drafts/_filters_small_view.html.erb +18 -0
  91. data/app/views/decidim/proposals/collaborative_drafts/_new_collaborative_draft_button.html.erb +11 -0
  92. data/app/views/decidim/proposals/collaborative_drafts/_reject_request_access_form.html.erb +10 -0
  93. data/app/views/decidim/proposals/collaborative_drafts/_request_access_form.html.erb +7 -0
  94. data/app/views/decidim/proposals/collaborative_drafts/compare.html.erb +19 -0
  95. data/app/views/decidim/proposals/collaborative_drafts/complete.html.erb +70 -0
  96. data/app/views/decidim/proposals/collaborative_drafts/edit.html.erb +57 -0
  97. data/app/views/decidim/proposals/collaborative_drafts/index.html.erb +23 -0
  98. data/app/views/decidim/proposals/collaborative_drafts/index.js.erb +10 -0
  99. data/app/views/decidim/proposals/collaborative_drafts/new.html.erb +28 -0
  100. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +136 -0
  101. data/app/views/decidim/proposals/proposal_endorsements/_identity.html.erb +1 -1
  102. data/app/views/decidim/proposals/proposal_endorsements/update_buttons_and_counters.js.erb +1 -1
  103. data/app/views/decidim/proposals/proposal_votes/update_buttons_and_counters.js.erb +5 -5
  104. data/app/views/decidim/proposals/proposals/_edit_form_fields.html.erb +57 -0
  105. data/app/views/decidim/proposals/proposals/_endorsement_button.html.erb +3 -3
  106. data/app/views/decidim/proposals/proposals/_endorsements_card_row.html.erb +1 -7
  107. data/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +1 -1
  108. data/app/views/decidim/proposals/proposals/_proposal.html.erb +1 -1
  109. data/app/views/decidim/proposals/proposals/_proposal_preview.html.erb +1 -1
  110. data/app/views/decidim/proposals/proposals/_proposal_similar.html.erb +3 -3
  111. data/app/views/decidim/proposals/proposals/_vote_button.html.erb +4 -3
  112. data/app/views/decidim/proposals/proposals/_wizard_aside.html.erb +2 -2
  113. data/app/views/decidim/proposals/proposals/compare.html.erb +5 -3
  114. data/app/views/decidim/proposals/proposals/complete.html.erb +2 -57
  115. data/app/views/decidim/proposals/proposals/edit.html.erb +1 -34
  116. data/app/views/decidim/proposals/proposals/edit_draft.html.erb +1 -34
  117. data/app/views/decidim/proposals/proposals/index.html.erb +5 -1
  118. data/app/views/decidim/proposals/proposals/new.html.erb +13 -7
  119. data/app/views/decidim/proposals/proposals/preview.html.erb +2 -2
  120. data/app/views/decidim/proposals/proposals/show.html.erb +6 -5
  121. data/app/views/decidim/proposals/versions/_version.html.erb +20 -0
  122. data/app/views/decidim/proposals/versions/index.html.erb +34 -0
  123. data/app/views/decidim/proposals/versions/show.html.erb +39 -0
  124. data/config/locales/ca.yml +222 -17
  125. data/config/locales/en.yml +208 -3
  126. data/config/locales/es-PY.yml +208 -3
  127. data/config/locales/es.yml +281 -76
  128. data/config/locales/eu.yml +208 -3
  129. data/config/locales/fi.yml +335 -131
  130. data/config/locales/fr.yml +208 -3
  131. data/config/locales/gl.yml +208 -3
  132. data/config/locales/hu.yml +622 -0
  133. data/config/locales/it.yml +208 -3
  134. data/config/locales/nl.yml +208 -3
  135. data/config/locales/pl.yml +214 -3
  136. data/config/locales/pt-BR.yml +212 -7
  137. data/config/locales/pt.yml +208 -3
  138. data/config/locales/ru.yml +20 -19
  139. data/config/locales/sv.yml +313 -108
  140. data/config/locales/uk.yml +25 -24
  141. data/db/migrate/20180326091532_create_decidim_proposals_collaborative_drafts.rb +29 -0
  142. data/db/migrate/20180613151121_create_collaborative_draft_collaborator_requests.rb +12 -0
  143. data/db/migrate/20180711074134_add_counter_cache_coauthorships_to_collaborative_drafts.rb +7 -0
  144. data/db/migrate/20180711075004_remove_index_counter_cache_coauthorships_to_proposals.rb +7 -0
  145. data/lib/decidim/proposals/admin_engine.rb +1 -0
  146. data/lib/decidim/proposals/commentable_collaborative_draft.rb +38 -0
  147. data/lib/decidim/proposals/component.rb +69 -4
  148. data/lib/decidim/proposals/engine.rb +48 -2
  149. data/lib/decidim/proposals/proposal_serializer.rb +4 -3
  150. data/lib/decidim/proposals/test/factories.rb +74 -13
  151. data/lib/decidim/proposals/version.rb +1 -1
  152. data/lib/decidim/proposals.rb +1 -0
  153. metadata +94 -24
  154. data/app/cells/decidim/proposals/coauthorships_cell.rb +0 -40
  155. data/app/views/decidim/participatory_processes/participatory_process_groups/_proposal.html.erb +0 -1
  156. data/app/views/decidim/participatory_spaces/_proposal.html.erb +0 -1
@@ -0,0 +1,57 @@
1
+ <div class="field hashtags__container">
2
+ <%= form.text_field :title, class: "js-hashtags", hashtaggable: true, value: present(@proposal).title %>
3
+ </div>
4
+
5
+ <div class="field hashtags__container">
6
+ <%= form.text_area :body, rows: 10, class: "js-hashtags", hashtaggable: true, value: present(@proposal).body %>
7
+ </div>
8
+
9
+ <% if component_settings.geocoding_enabled? %>
10
+ <div class="field">
11
+ <%= form.check_box :has_address, checked: form_has_address? %>
12
+ </div>
13
+
14
+ <div class="field" id="address_input">
15
+ <%= form.text_field :address %>
16
+ </div>
17
+ <% end %>
18
+
19
+ <% if @form.categories&.any? %>
20
+ <div class="field">
21
+ <%= form.categories_select :category_id, @form.categories, prompt: t("decidim.proposals.proposals.edit.select_a_category") %>
22
+ </div>
23
+ <% end %>
24
+
25
+ <% if current_participatory_space.has_subscopes? %>
26
+ <div class="field">
27
+ <%= scopes_picker_field form, :scope_id %>
28
+ </div>
29
+ <% end %>
30
+
31
+ <% if current_user.user_groups.verified.any? %>
32
+ <div class="field">
33
+ <%= user_group_select_field form, :user_group_id %>
34
+ </div>
35
+ <% end %>
36
+
37
+ <% if component_settings.attachments_allowed? && @proposal %>
38
+ <fieldset>
39
+ <legend><%= t("attachment_legend", scope: "decidim.proposals.proposals.edit") %></legend>
40
+ <%= form.fields_for :attachment, @form.attachment do |nested_form| %>
41
+ <div class="field">
42
+ <%= nested_form.text_field :title %>
43
+ </div>
44
+
45
+ <div class="field">
46
+ <%= nested_form.upload :file, optional: false %>
47
+ <% if @form.errors[:attachment].present? %>
48
+ <% @form.errors[:attachment].each do |message| %>
49
+ <small class="form-error is-visible">
50
+ <%= message %>
51
+ </small>
52
+ <% end %>
53
+ <% end %>
54
+ </div>
55
+ <% end %>
56
+ </fieldset>
57
+ <% end %>
@@ -1,11 +1,11 @@
1
1
  <div id="proposal-<%= proposal.id %>-endorsement-button<%= user_group&.id ? "-#{user_group.id}" : "" %>">
2
2
  <% if !current_user %>
3
- <%= action_authorized_button_to :endorse, endorse_label, current_endorsement_url, class: "button #{endorsement_button_classes(from_proposals_list)} secondary" %>
3
+ <%= action_authorized_button_to :endorse, endorse_label, current_endorsement_url, resource: proposal, class: "button #{endorsement_button_classes(from_proposals_list)} secondary" %>
4
4
  <% else %>
5
5
  <% if proposal.endorsed_by?(current_user, user_group) %>
6
- <%= action_authorized_button_to :endorse, unendorse_label, current_endorsement_url, method: :delete, remote: true, class: "button #{endorsement_button_classes(from_proposals_list)} success", id: "endorsement_button" %>
6
+ <%= action_authorized_button_to :endorse, unendorse_label, current_endorsement_url, resource: proposal, method: :delete, remote: true, class: "button #{endorsement_button_classes(from_proposals_list)} success", id: "endorsement_button" %>
7
7
  <% else %>
8
- <%= action_authorized_button_to :endorse, endorse_label, current_endorsement_url, remote: true, data: { }, class: "button #{endorsement_button_classes(from_proposals_list)} secondary" %>
8
+ <%= action_authorized_button_to :endorse, endorse_label, current_endorsement_url, resource: proposal, remote: true, data: {}, class: "button #{endorsement_button_classes(from_proposals_list)} secondary" %>
9
9
  <% end %>
10
10
  <% end %>
11
11
  </div>
@@ -4,13 +4,7 @@
4
4
  <div class="column small-9 collapse">
5
5
  <div class="button-group button-group--collapse button--nomargin small">
6
6
  <%= render_endorsements_count_card_part(@proposal, fully_endorsed) %>
7
- <% if current_settings.endorsements_blocked? || !current_component.participatory_space.can_participate?(current_user) %>
8
- <%= content_tag :span, t(".endorse"), class: "card__button button #{endorsement_button_classes(false)} disabled", disabled: true, title: t(".endorse") %>
9
- <% elsif current_user %>
10
- <%= render partial: "endorsement_identities_cabin", locals: { proposal: @proposal, fully_endorsed: fully_endorsed } %>
11
- <% else %>
12
- <%= action_authorized_button_to :endorse, t(".endorse"), "", class: "card__button button #{endorsement_button_classes(false)} secondary" %>
13
- <% end %>
7
+ <%= render_endorsements_button_card_part(@proposal, fully_endorsed) %>
14
8
  </div>
15
9
  </div>
16
10
  <% end %>
@@ -7,7 +7,7 @@
7
7
  <% end %>
8
8
  <div>
9
9
  <%= link_to resource_locator(proposal).path, class: "card__link" do %>
10
- <h5 class="card--list__heading"><%= proposal.title %></h5>
10
+ <h5 class="card--list__heading"><%= present(proposal).title %></h5>
11
11
  <% end %>
12
12
  <% present(proposal) do |proposal| %>
13
13
  <div class="author">
@@ -1 +1 @@
1
- <%= card_for proposal, from: proposal, context: { current_user: current_user } %>
1
+ <%= card_for proposal, from: proposal %>
@@ -1 +1 @@
1
- <%= card_for proposal, size: :m, context: { current_user: current_user } %>
1
+ <%= card_for proposal, size: :m %>
@@ -3,9 +3,9 @@
3
3
  <div class="card__content">
4
4
  <div class="card__header">
5
5
  <%= link_to proposal, target: "_blank" do %>
6
- <h5 class="card__title"><%= proposal.title %></h5>
6
+ <h5 class="card__title"><%= present(proposal).title %></h5>
7
7
  <% end %>
8
- <%= cell("decidim/proposals/coauthorships", proposal) %>
8
+ <%= cell("decidim/coauthorships", proposal, has_actions: false) %>
9
9
 
10
10
  <div class="tech-info tech-info--text-left">
11
11
  <%= t("decidim.proposals.proposals.proposal.creation_date", date: l(proposal.created_at, format: :decidim_short)) %>
@@ -15,7 +15,7 @@
15
15
 
16
16
  <%== cell("decidim/proposals/proposal_m", proposal).badge %>
17
17
 
18
- <p><%= truncate(proposal.body, length: 100) %></p>
18
+ <p><%= truncate(present(proposal).html_body, length: 100) %></p>
19
19
  <%= cell "decidim/tags", proposal, context: {extra_classes: ["tags--proposal"]} %>
20
20
  </div>
21
21
  </article>
@@ -4,15 +4,16 @@
4
4
  <div id="proposal-<%= proposal.id %>-vote-button">
5
5
  <% if !current_user %>
6
6
  <% if current_settings.votes_blocked? %>
7
- <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.votes_blocked"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), class: "button #{vote_button_classes(from_proposals_list)} disabled", disabled: true %>
7
+ <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.votes_blocked"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), resource: proposal, class: "button #{vote_button_classes(from_proposals_list)} disabled", disabled: true %>
8
8
  <% else %>
9
- <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.vote"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), class: "button #{vote_button_classes(from_proposals_list)}", data: { disable: true, "redirect-url": proposal_path(proposal) } %>
9
+ <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.vote"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), resource: proposal, class: "button #{vote_button_classes(from_proposals_list)}", data: { disable: true, "redirect-url": proposal_path(proposal) } %>
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% if @voted_proposals ? @voted_proposals.include?(proposal.id) : proposal.voted_by?(current_user) %>
13
13
  <%= action_authorized_button_to(
14
14
  :vote,
15
15
  proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list),
16
+ resource: proposal,
16
17
  method: :delete,
17
18
  remote: true,
18
19
  data: {
@@ -36,7 +37,7 @@
36
37
  <% elsif current_settings.votes_blocked? || !current_component.participatory_space.can_participate?(current_user) %>
37
38
  <%= content_tag :span, t("decidim.proposals.proposals.vote_button.votes_blocked"), class: "button #{vote_button_classes(from_proposals_list)} disabled", disabled: true %>
38
39
  <% else %>
39
- <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.vote"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), remote: true, data: { disable: true, "redirect-url": proposal_path(proposal) }, class: "button #{vote_button_classes(from_proposals_list)}" %>
40
+ <%= action_authorized_button_to :vote, t("decidim.proposals.proposals.vote_button.vote"), proposal_proposal_vote_path(proposal_id: proposal, from_proposals_list: from_proposals_list), resource: proposal, remote: true, data: { disable: true, "redirect-url": proposal_path(proposal) }, class: "button #{vote_button_classes(from_proposals_list)}" %>
40
41
  <% end %>
41
42
  <% end %>
42
43
  <% end %>
@@ -2,12 +2,12 @@
2
2
  <div class="m-bottom">
3
3
  <%= link_to :back do %>
4
4
  <%= icon "chevron-left", class: "icon--small" %>
5
- <%= t(".back") %>
5
+ <%= wizard_aside_back_text %>
6
6
  <% end %>
7
7
  </div>
8
8
  <div class="section">
9
9
  <p>
10
- <%= t(".info").html_safe %>
10
+ <%= wizard_aside_info_text %>
11
11
  </p>
12
12
  </div>
13
13
  <div class="show-for-large">
@@ -2,18 +2,20 @@
2
2
  <%= render partial: "wizard_aside" %>
3
3
 
4
4
  <div class="columns large-6">
5
- <%= render partial: "wizard_header", locals: {callout_step_help_text_class: "warning"} %>
5
+ <%= render partial: "wizard_header", locals: { callout_step_help_text_class: "warning" } %>
6
6
 
7
7
  <% if @similar_proposals.presence %>
8
8
  <div class="row small-up-1 card-grid">
9
9
  <% @similar_proposals.each do |proposal| %>
10
- <%= render partial: "proposal_similar", locals: {proposal: proposal} %>
10
+ <%= render partial: "proposal_similar", locals: { proposal: proposal } %>
11
11
  <% end %>
12
12
  </div>
13
13
  <% end %>
14
+
14
15
  <div class="row column text-center">
15
- <%= link_to t(".mine_is_different"), complete_proposals_path(proposal: {title: @form.title, body: @form.body}), class: "button small" %>
16
+ <%= link_to t(".mine_is_different"), complete_proposal_path(@proposal), class: "button small" %>
16
17
  </div>
17
18
  </div>
19
+
18
20
  <div class="columns large-3"></div>
19
21
  </div>
@@ -6,63 +6,8 @@
6
6
 
7
7
  <div class="card">
8
8
  <div class="card__content">
9
- <%= decidim_form_for(@form) do |form| %>
10
- <div class="field">
11
- <%= form.text_field :title %>
12
- </div>
13
-
14
- <div class="field">
15
- <%= form.text_area :body, rows: 10 %>
16
- </div>
17
-
18
- <% if component_settings.geocoding_enabled? %>
19
- <div class="field">
20
- <%= form.check_box :has_address %>
21
- </div>
22
- <div class="field" id="address_input">
23
- <%= form.text_field :address %>
24
- </div>
25
- <% end %>
26
-
27
- <% if @form.categories&.any? %>
28
- <div class="field">
29
- <%= form.categories_select :category_id, @form.categories, prompt: t(".select_a_category") %>
30
- </div>
31
- <% end %>
32
-
33
- <% if current_participatory_space.has_subscopes? %>
34
- <div class="field">
35
- <%= scopes_picker_field form, :scope_id %>
36
- </div>
37
- <% end %>
38
-
39
- <% if current_user.user_groups.verified.any? %>
40
- <div class="field">
41
- <%= user_group_select_field form, :user_group_id %>
42
- </div>
43
- <% end %>
44
-
45
- <% if component_settings.attachments_allowed? %>
46
- <fieldset>
47
- <legend><%= t(".attachment_legend") %></legend>
48
- <%= form.fields_for :attachment, @form.attachment do |nested_form| %>
49
- <div class="field">
50
- <%= nested_form.text_field :title %>
51
- </div>
52
-
53
- <div class="field">
54
- <%= nested_form.upload :file, optional: false %>
55
- <% if @form.errors[:attachment].present? %>
56
- <% @form.errors[:attachment].each do |message| %>
57
- <small class="form-error is-visible">
58
- <%= message %>
59
- </small>
60
- <% end %>
61
- <% end %>
62
- </div>
63
- <% end %>
64
- </fieldset>
65
- <% end %>
9
+ <%= decidim_form_for(@form, url: update_draft_proposal_path(@proposal), method: :patch) do |form| %>
10
+ <%= render partial: "edit_form_fields", locals: { form: form } %>
66
11
 
67
12
  <div class="actions">
68
13
  <%= form.submit t(".send"), class: "button expanded mt-s mb-none", data: { disable: true } %>
@@ -15,40 +15,7 @@
15
15
 
16
16
  <div class="card__content">
17
17
  <%= decidim_form_for(@form) do |form| %>
18
- <div class="field">
19
- <%= form.text_field :title %>
20
- </div>
21
-
22
- <div class="field">
23
- <%= form.text_area :body, rows: 10 %>
24
- </div>
25
-
26
- <% if component_settings.geocoding_enabled? %>
27
- <div class="field">
28
- <%= form.check_box :has_address %>
29
- </div>
30
- <div class="field" id="address_input">
31
- <%= form.text_field :address %>
32
- </div>
33
- <% end %>
34
-
35
- <% if @form.categories&.any? %>
36
- <div class="field">
37
- <%= form.categories_select :category_id, @form.categories, prompt: t(".select_a_category") %>
38
- </div>
39
- <% end %>
40
-
41
- <% if current_participatory_space.has_subscopes? %>
42
- <div class="field">
43
- <%= scopes_picker_field form, :scope_id %>
44
- </div>
45
- <% end %>
46
-
47
- <% if current_user.user_groups.verified.any? %>
48
- <div class="field">
49
- <%= form.select :user_group_id, current_user.user_groups.verified.map{|g| [g.name, g.id]}, prompt: current_user.name %>
50
- </div>
51
- <% end %>
18
+ <%= render partial: "edit_form_fields", locals: { form: form } %>
52
19
 
53
20
  <div class="actions">
54
21
  <%= form.submit t(".send"), class: "button expanded", data: { disable: true } %>
@@ -7,40 +7,7 @@
7
7
  <div class="card">
8
8
  <div class="card__content">
9
9
  <%= decidim_form_for(@form, url: update_draft_proposal_path(@proposal), method: :patch) do |form| %>
10
- <div class="field">
11
- <%= form.text_field :title %>
12
- </div>
13
-
14
- <div class="field">
15
- <%= form.text_area :body, rows: 10 %>
16
- </div>
17
-
18
- <% if component_settings.geocoding_enabled? %>
19
- <div class="field">
20
- <%= form.check_box :has_address %>
21
- </div>
22
- <div class="field" id="address_input">
23
- <%= form.text_field :address %>
24
- </div>
25
- <% end %>
26
-
27
- <% if @form.categories&.any? %>
28
- <div class="field">
29
- <%= form.categories_select :category_id, @form.categories, prompt: t("decidim.proposals.proposals.edit.select_a_category") %>
30
- </div>
31
- <% end %>
32
-
33
- <% if current_participatory_space.has_subscopes? %>
34
- <div class="field">
35
- <%= scopes_picker_field form, :scope_id %>
36
- </div>
37
- <% end %>
38
-
39
- <% if current_user.user_groups.verified.any? %>
40
- <div class="field">
41
- <%= user_group_select_field form, :user_group_id %>
42
- </div>
43
- <% end %>
10
+ <%= render partial: "edit_form_fields", locals: { form: form } %>
44
11
 
45
12
  <div class="row column flex-center">
46
13
  <%= link_to t(".discard"), destroy_draft_proposal_path(@proposal), method: :delete, data: { confirm: t(".discard_confirmation") } %>
@@ -1,7 +1,7 @@
1
1
  <%= render partial: "decidim/shared/component_announcement" %>
2
2
 
3
3
  <% if component_settings.geocoding_enabled? %>
4
- <%= dynamic_map_for proposals_data_for_map(geocoded_proposals) do %>
4
+ <%= dynamic_map_for proposals_data_for_map(@proposals.select(&:geocoded?)) do %>
5
5
  <template id="marker-popup">
6
6
  <div class="map-info__content">
7
7
  <h3>${title}</h3>
@@ -44,6 +44,10 @@
44
44
  <%= icon "plus" %>
45
45
  </span>
46
46
  <% end %>
47
+
48
+ <% if component_settings.collaborative_drafts_enabled? %>
49
+ <%= link_to t(".collaborative_drafts_list"), collaborative_drafts_path, class: "title-action__action button small hollow ml-s" %>
50
+ <% end %>
47
51
  </div>
48
52
  </div>
49
53
  <div class="row">
@@ -1,20 +1,26 @@
1
1
  <div class="row">
2
- <%= render partial: "wizard_aside" %>
2
+ <%= render partial: "decidim/proposals/proposals/wizard_aside" %>
3
3
 
4
4
  <div class="columns large-6">
5
- <%= render partial: "wizard_header" %>
5
+ <%= render partial: "decidim/proposals/proposals/wizard_header" %>
6
6
 
7
7
  <div class="card">
8
8
  <div class="card__content">
9
- <%= decidim_form_for(@form, url: compare_proposals_path, method: :get) do |form| %>
10
- <div class="field">
11
- <%= form.text_field :title %>
9
+ <%= decidim_form_for(@form) do |form| %>
10
+ <div class="field hashtags__container">
11
+ <%= form.text_field :title, class: "js-hashtags", hashtaggable: true %>
12
12
  </div>
13
13
 
14
- <div class="field">
15
- <%= form.text_area :body, rows: 10 %>
14
+ <div class="field hashtags__container">
15
+ <%= form.text_area :body, rows: 10, class: "js-hashtags", hashtaggable: true %>
16
16
  </div>
17
17
 
18
+ <% if current_user.user_groups.verified.any? %>
19
+ <div class="field">
20
+ <%= user_group_select_field form, :user_group_id %>
21
+ </div>
22
+ <% end %>
23
+
18
24
  <div class="actions">
19
25
  <%= form.submit t(".send"), class: "button expanded mt-s mb-none", data: { disable: true } %>
20
26
  </div>
@@ -2,10 +2,10 @@
2
2
  <%= render partial: "wizard_aside" %>
3
3
 
4
4
  <div class="columns large-6">
5
- <%= render partial: "wizard_header", locals: {callout_help_text_class: "warning"} %>
5
+ <%= render partial: "wizard_header", locals: { callout_help_text_class: "warning" } %>
6
6
  <div class="card">
7
7
  <div class="p-l">
8
- <%= render partial: "proposal_preview", locals: {proposal: @proposal} %>
8
+ <%= render partial: "proposal_preview", locals: { proposal: @proposal } %>
9
9
  <div class="row column flex-center">
10
10
  <%= link_to t(".modify"), edit_draft_proposal_path(@proposal) %>
11
11
 
@@ -1,13 +1,13 @@
1
1
  <% add_decidim_meta_tags({
2
- description: @proposal.body,
3
- title: @proposal.title,
2
+ description: present(@proposal).body,
3
+ title: present(@proposal).title,
4
4
  url: proposal_url(@proposal.id)
5
5
  }) %>
6
6
 
7
7
  <%= render partial: "voting_rules" %>
8
8
  <div class="row column view-header">
9
- <h2 class="heading2"><%= @proposal.title %></h2>
10
- <%= cell("decidim/proposals/coauthorships", @proposal) %>
9
+ <h2 class="heading2"><%= present(@proposal).html_title %></h2>
10
+ <%= cell("decidim/coauthorships", @proposal, has_actions: true, size: 3) %>
11
11
  </div>
12
12
  <div class="row">
13
13
  <div class="columns section view-side mediumlarge-4 mediumlarge-push-8 large-3 large-push-9">
@@ -31,11 +31,12 @@
31
31
  <%= cell("decidim/fingerprint", @proposal) %>
32
32
  <%= render partial: "decidim/shared/share_modal" %>
33
33
  <%= embed_modal_for proposal_proposal_widget_url(@proposal, format: :js) %>
34
+ <%= cell "decidim/proposals/proposal_link_to_collaborative_draft", @proposal %>
34
35
  </div>
35
36
  <div class="columns mediumlarge-8 mediumlarge-pull-4">
36
37
  <div class="section">
37
38
  <%== cell("decidim/proposals/proposal_m", @proposal, full_badge: true).badge %>
38
- <%= simple_format @proposal.body %>
39
+ <%= simple_format present(@proposal).html_body %>
39
40
  <% if component_settings.geocoding_enabled? %>
40
41
  <%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @proposal } %>
41
42
  <% end %>
@@ -0,0 +1,20 @@
1
+ <div class="card--list__item">
2
+ <div class="card--list__text">
3
+ <div>
4
+ <%= link_to collaborative_draft_version_path(item, index + 1) do %>
5
+ <h6 class="card--list__heading heading6">
6
+ <%= t(".version_index", index: index + 1) %>
7
+ </h6>
8
+ <% end %>
9
+ <div class="author-data">
10
+ <%= render_resource_editor(version) %>
11
+ <%= l version.created_at, format: :decidim_short %>
12
+ </div>
13
+ </div>
14
+ </div>
15
+ <div class="card--list__data">
16
+ <%= link_to collaborative_draft_version_path(item, index + 1), class: "card--list__data__icon" do %>
17
+ <%= icon "chevron-right" %>
18
+ <% end %>
19
+ </div>
20
+ </div>
@@ -0,0 +1,34 @@
1
+ <div class="row">
2
+ <div class="small-12 columns">
3
+ <h2 class="heading2">
4
+ <%= t("changes_at_title", scope: "decidim.proposals.versions", title: item.title) %>
5
+ </h2>
6
+
7
+ <h3 class="section-heading">
8
+ <%= t(".title") %>
9
+ </h3>
10
+
11
+ <div class="row">
12
+ <div class="mediumlarge-8 columns">
13
+ <div class="section">
14
+ <div class="card card--list">
15
+ <% item.versions.each_with_index do |version, index| %>
16
+ <%= render partial: "version", locals: { version: version, index: index } %>
17
+ <% end %>
18
+ </div>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="columns section mediumlarge-4 large-3">
23
+ <div class="card extra definition-data">
24
+ <div class="definition-data__item versions_count">
25
+ <span class="definition-data__title"><%= t("versions.stats.number_of_versions", scope: "decidim.proposals") %></span>
26
+ <%= item.versions.count %>
27
+
28
+ <%= link_to t("versions.stats.back_to_collaborative_draft", scope: "decidim.proposals"), collaborative_draft_path(item), class: "button button--sc hollow secondary small expanded" %>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
@@ -0,0 +1,39 @@
1
+ <div class="row">
2
+ <div class="small-12 columns">
3
+ <h2 class="heading2">
4
+ <%= t("changes_at_title", scope: "decidim.proposals.versions", title: item.title) %>
5
+ </h2>
6
+
7
+ <div class="row">
8
+ <div class="mediumlarge-8 columns">
9
+ <div class="section">
10
+ <% diff_renderer.diff.each_value do |data| %>
11
+ <h3 class="section-heading"><%= data[:label] %></h3>
12
+ <%= render_diff_data(data) %>
13
+ <% end %>
14
+ </div>
15
+ </div>
16
+
17
+ <div class="columns section mediumlarge-4 large-3">
18
+ <div class="card extra definition-data">
19
+ <div class="definition-data__item versions_count">
20
+ <span class="definition-data__title"><%= t("versions.stats.version_number", scope: "decidim.proposals") %></span>
21
+ <%= t("versions.stats.version_number_out_of_total", scope: "decidim.proposals", current_version: params[:id], total_count: item.versions_count) %>
22
+ <%= link_to t("versions.stats.show_all_versions", scope: "decidim.proposals"), collaborative_draft_versions_path(item), class: "button button--sc hollow secondary small expanded" %>
23
+ <%= link_to t("versions.stats.back_to_collaborative_draft", scope: "decidim.proposals"), collaborative_draft_path(item), class: "button button--sc hollow secondary small expanded" %>
24
+ </div>
25
+ <% if current_version.whodunnit.present? %>
26
+ <div class="definition-data__item last_revision_by">
27
+ <span class="definition-data__title"><%= t("versions.stats.version_author", scope: "decidim.proposals") %></span>
28
+ <%= render_resource_editor(current_version) %>
29
+ </div>
30
+ <% end %>
31
+ <div class="definition-data__item versions_count">
32
+ <span class="definition-data__title"><%= t("versions.stats.version_created_at", scope: "decidim.proposals") %></span>
33
+ <%= l current_version.created_at, format: :decidim_short %>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>