decidim-proposals 0.27.2 → 0.27.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/proposals/collaborative_draft_m_cell.rb +1 -1
  3. data/app/cells/decidim/proposals/proposal_tags/show.erb +2 -2
  4. data/app/commands/decidim/proposals/admin/notify_proposal_answer.rb +2 -0
  5. data/app/helpers/decidim/proposals/application_helper.rb +7 -1
  6. data/app/helpers/decidim/proposals/proposals_helper.rb +1 -1
  7. data/app/views/decidim/proposals/admin/participatory_texts/_article-preview.html.erb +2 -2
  8. data/app/views/decidim/proposals/admin/participatory_texts/new_import.html.erb +1 -1
  9. data/app/views/decidim/proposals/admin/proposals/edit.html.erb +1 -0
  10. data/app/views/decidim/proposals/admin/proposals/index.html.erb +1 -0
  11. data/app/views/decidim/proposals/admin/proposals/new.html.erb +1 -0
  12. data/app/views/decidim/proposals/admin/proposals/show.html.erb +1 -0
  13. data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +1 -1
  14. data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +1 -1
  15. data/app/views/decidim/proposals/proposals/_linked_proposals.html.erb +2 -1
  16. data/app/views/decidim/proposals/proposals/_proposals.html.erb +1 -1
  17. data/config/environment.rb +0 -0
  18. data/config/locales/ar.yml +265 -2
  19. data/config/locales/bg.yml +5 -0
  20. data/config/locales/ca.yml +4 -4
  21. data/config/locales/cs.yml +1 -1
  22. data/config/locales/de.yml +55 -5
  23. data/config/locales/el.yml +151 -2
  24. data/config/locales/es-MX.yml +5 -5
  25. data/config/locales/es-PY.yml +5 -5
  26. data/config/locales/es.yml +3 -3
  27. data/config/locales/eu.yml +112 -102
  28. data/config/locales/fa-IR.yml +1 -0
  29. data/config/locales/fi-plain.yml +5 -5
  30. data/config/locales/fi.yml +9 -9
  31. data/config/locales/fr-CA.yml +6 -8
  32. data/config/locales/fr.yml +6 -8
  33. data/config/locales/gl.yml +2 -2
  34. data/config/locales/hu.yml +52 -4
  35. data/config/locales/id-ID.yml +10 -2
  36. data/config/locales/is-IS.yml +15 -6
  37. data/config/locales/it.yml +5 -7
  38. data/config/locales/ja.yml +16 -16
  39. data/config/locales/kaa.yml +1 -0
  40. data/config/locales/lt.yml +0 -2
  41. data/config/locales/lv.yml +7 -2
  42. data/config/locales/nl.yml +9 -7
  43. data/config/locales/no.yml +4 -3
  44. data/config/locales/pl.yml +0 -2
  45. data/config/locales/pt-BR.yml +2 -2
  46. data/config/locales/pt.yml +1 -3
  47. data/config/locales/ro-RO.yml +0 -2
  48. data/config/locales/ru.yml +15 -7
  49. data/config/locales/sk.yml +8 -3
  50. data/config/locales/sl.yml +0 -3
  51. data/config/locales/sv.yml +2 -4
  52. data/config/locales/tr-TR.yml +2 -4
  53. data/config/locales/uk.yml +15 -7
  54. data/config/locales/zh-CN.yml +3 -2
  55. data/config/locales/zh-TW.yml +967 -0
  56. data/db/migrate/20181003074440_fix_user_groups_ids_in_proposals_endorsements.rb +9 -2
  57. data/db/migrate/20200708091228_move_proposals_fields_to_i18n.rb +28 -18
  58. data/db/migrate/20201002085508_fix_proposals_data.rb +25 -13
  59. data/lib/decidim/proposals/component.rb +7 -6
  60. data/lib/decidim/proposals/engine.rb +6 -0
  61. data/lib/decidim/proposals/import/proposal_answer_creator.rb +10 -4
  62. data/lib/decidim/proposals/proposal_serializer.rb +9 -1
  63. data/lib/decidim/proposals/version.rb +1 -1
  64. data/lib/tasks/proposals/upgrade/decdim_proposal_upgrade_tasks.rake +34 -0
  65. metadata +40 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2940b19c42d51731768e53f2f1b7e7f3397894c98bbf882b8fe467ce00660669
4
- data.tar.gz: 3bff962915003a9c34ef6b4aa9708c3c20542c480dec991ada691727e112db2c
3
+ metadata.gz: c1365c0d325e5a7f66b393bfbc6147bd1502ac8e2125d845315ca84a654c69d6
4
+ data.tar.gz: c7c9b07fda158bf3a999e2bb91312cd3ba49e9250d7de706010b0401617eaede
5
5
  SHA512:
6
- metadata.gz: 97bd0c8a20959ef3eaf6d74f940bbfae11ac735ab72d4af493dbb5124b5480a1a72802d550b96abd0dc471f82589ee06a10ab1f90462e070fdedd967314c211e
7
- data.tar.gz: 42f5d73b718b4444a025b333cae6746b925aaa7c22b54fa2626f6c987a50b02062082232c9b8937e74fbcce2c321dda4fa355c81e0c1e86add8dceb87bd99f1a
6
+ metadata.gz: cc8ea5518ea1e7b7707a606fee3249aa2390a8b88fcbc055d6e9d8dd5b5c9b5b7cfc131abd74c6ca15b0a70bd555fb345092fadcc283d31c2da2d55add16f22f
7
+ data.tar.gz: d95d858d704a8487807953fe06b94fb32d5c8341f34739ac3225c8292b24753c6a66b3c7d02b0549c1110f96d2958de3f562d4976c4394f04bc7461ab80c616f
@@ -23,7 +23,7 @@ module Decidim
23
23
  end
24
24
 
25
25
  def description
26
- decidim_sanitize_editor(present(model).body.truncate(100, separator: /\s/))
26
+ decidim_sanitize_editor(present(model).body.truncate(100, separator: /\s/), strip_tags: true)
27
27
  end
28
28
 
29
29
  def has_badge?
@@ -2,7 +2,7 @@
2
2
  <ul class="tags tags--proposal tags--list">
3
3
  <% if category.present? %>
4
4
  <li>
5
- <%= link_to resource_locator(model).index(filter: { category_id: [category.id.to_s] }), title: t("decidim.tags.filter_results_for_category", resource: translated_attribute(category.name)) do %>
5
+ <%= link_to resource_locator(model).index(filter: { with_any_category: [category.id.to_s] }), title: t("decidim.tags.filter_results_for_category", resource: translated_attribute(category.name)) do %>
6
6
  <span class="show-for-sr"><%= t "decidim.tags.filter_results_for_category", resource: translated_attribute(category.name) %></span>
7
7
  <span aria-hidden="true"><%= translated_attribute(category.name) %></span>
8
8
  <% end %>
@@ -17,7 +17,7 @@
17
17
 
18
18
  <% if has_visible_scopes?(model) %>
19
19
  <li>
20
- <%= link_to resource_locator(model).index(filter: { scope_id: [scope.id] }), title: t("decidim.tags.filter_results_for_scope", resource: translated_attribute(scope.name)) do %>
20
+ <%= link_to resource_locator(model).index(filter: { with_any_scope: [scope.id] }), title: t("decidim.tags.filter_results_for_scope", resource: translated_attribute(scope.name)) do %>
21
21
  <span class="show-for-sr"><%= t "decidim.tags.filter_results_for_scope", resource: translated_attribute(scope.name) %></span>
22
22
  <span aria-hidden="true"><%= translated_attribute(scope.name) %></span>
23
23
  <% end %>
@@ -21,6 +21,8 @@ module Decidim
21
21
  #
22
22
  # Returns nothing.
23
23
  def call
24
+ return broadcast(:invalid) if proposal.blank?
25
+
24
26
  if proposal.published_state? && state_changed?
25
27
  transaction do
26
28
  increment_score
@@ -95,7 +95,13 @@ module Decidim
95
95
  # the proposal comes from a collaborative_draft or a participatory_text.
96
96
  def safe_content?
97
97
  (rich_text_editor_in_public_views? && not_from_collaborative_draft(@proposal)) ||
98
- ((@proposal.official? || @proposal.official_meeting?) && not_from_participatory_text(@proposal))
98
+ safe_content_admin?
99
+ end
100
+
101
+ # For admin entered content, the proposal body can contain certain extra
102
+ # tags, such as iframes.
103
+ def safe_content_admin?
104
+ (@proposal.official? || @proposal.official_meeting?) && not_from_participatory_text(@proposal)
99
105
  end
100
106
 
101
107
  # If the content is safe, HTML tags are sanitized, otherwise, they are stripped.
@@ -7,7 +7,7 @@ module Decidim
7
7
  def proposal_reason_callout_announcement
8
8
  {
9
9
  title: proposal_reason_callout_title,
10
- body: decidim_sanitize_editor(translated_attribute(@proposal.answer))
10
+ body: decidim_sanitize_editor_admin(translated_attribute(@proposal.answer))
11
11
  }
12
12
  end
13
13
 
@@ -1,13 +1,13 @@
1
1
  <div class="grid-x">
2
2
  <div class="cell">
3
3
  <%= form.hidden_field :position, class: "position" %>
4
- <%= form.text_field :title, optional: false %>
4
+ <%= form.text_field :title, required: true %>
5
5
  </div>
6
6
  </div>
7
7
  <% if proposal.article? %>
8
8
  <div class="grid-x">
9
9
  <div class="cell">
10
- <%= form.text_area :body, optional: false, rows: 5 %>
10
+ <%= form.text_area :body, required: true, rows: 5 %>
11
11
  </div>
12
12
  </div>
13
13
  <% end %>
@@ -23,7 +23,7 @@
23
23
  <fieldset>
24
24
  <legend> <%= t(".document_legend", valid_mime_types: mime_types_with_document_examples).html_safe %> </legend>
25
25
  <div class="row column">
26
- <%= form.upload :document, optional: false %>
26
+ <%= form.upload :document, required: true %>
27
27
  </div>
28
28
  </fieldset>
29
29
  </div>
@@ -1,3 +1,4 @@
1
+ <% add_decidim_page_title(t(".title")) %>
1
2
  <%= decidim_form_for(@form, html: { class: "form edit_proposal proposal_form_admin" }) do |f| %>
2
3
  <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
4
 
@@ -1,3 +1,4 @@
1
+ <% add_decidim_page_title(t(".title")) %>
1
2
  <div class="card with-overflow">
2
3
  <div class="card-divider">
3
4
  <h2 class="card-title flex--sbc">
@@ -1,3 +1,4 @@
1
+ <% add_decidim_page_title(t(".title")) %>
1
2
  <%= decidim_form_for(@form, html: { class: "form new_proposal proposal_form_admin" }) do |f| %>
2
3
  <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
4
 
@@ -1,3 +1,4 @@
1
+ <% add_decidim_page_title(translated_attribute(proposal.title)) %>
1
2
  <div class="card">
2
3
  <div class="card-divider">
3
4
  <h2 class="card-title">
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
 
7
7
  <div class="field hashtags__container">
8
- <%= form.text_area :body, rows: 10, class: "js-hashtags", value: form_presenter.body(extras: false).strip %>
8
+ <%= text_editor_for_proposal_body(form) %>
9
9
  </div>
10
10
 
11
11
  <% if @form.component_automatic_hashtags.any? %>
@@ -33,7 +33,7 @@
33
33
  <div class="section">
34
34
  <%== cell("decidim/proposals/collaborative_draft_m", @collaborative_draft, full_badge: true).badge %>
35
35
 
36
- <%= simple_format(present(@collaborative_draft).body(links: true, strip_tags: true), nil, sanitize: false) %>
36
+ <%= decidim_sanitize_editor present(@collaborative_draft).body(links: true) %>
37
37
 
38
38
  <% if component_settings.geocoding_enabled? %>
39
39
  <%= render partial: "decidim/shared/static_map", locals: { icon_name: "proposals", geolocalizable: @collaborative_draft } %>
@@ -22,7 +22,8 @@
22
22
  <% end %>
23
23
  </div>
24
24
  </div>
25
- <% if !current_settings.try(:votes_hidden?) && !proposal.component.current_settings.votes_hidden? %>
25
+ <% if !current_settings.try(:votes_hidden?) && !proposal.component.current_settings.votes_hidden? &&
26
+ proposal.component.current_settings.votes_enabled? %>
26
27
  <div class="card--list__data">
27
28
  <span class="card--list__data__number">
28
29
  <%= proposal.votes.size %>
@@ -40,7 +40,7 @@
40
40
  <% if params.dig("filter", "with_availability").present? && params["filter"]["with_availability"] == "withdrawn" %>
41
41
  <%= link_to t("decidim.proposals.proposals.index.see_all"), proposals_path("filter[with_availability]" => nil) %>
42
42
  <% else %>
43
- <%= link_to t("decidim.proposals.proposals.index.see_all_withdrawn"), proposals_path(filter: { with_availability: "withdrawn", state: [""] }) %>
43
+ <%= link_to t("decidim.proposals.proposals.index.see_all_withdrawn"), proposals_path(filter: { with_availability: "withdrawn", with_any_state: [] }) %>
44
44
  <% end %>
45
45
  </div>
46
46
  </div>
File without changes