decidim-reporting_proposals 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +32 -0
  3. data/.erb-lint.yml +30 -0
  4. data/.eslintignore +3 -0
  5. data/.eslintrc.json +239 -0
  6. data/.github/workflows/codeql-analysis.yml +74 -0
  7. data/.github/workflows/lint.yml +45 -0
  8. data/.github/workflows/test_integration.yml +125 -0
  9. data/.github/workflows/test_unit.yml +51 -0
  10. data/.gitignore +27 -0
  11. data/.rspec +3 -0
  12. data/.rubocop.yml +3 -0
  13. data/.rubocop_rails.yml +87 -0
  14. data/.rubocop_ruby.yml +1754 -0
  15. data/.ruby-version +1 -0
  16. data/.simplecov +13 -0
  17. data/CODE_OF_CONDUCT.md +74 -0
  18. data/Gemfile +40 -0
  19. data/Gemfile.lock +815 -0
  20. data/LICENSE-AGPLv3.txt +661 -0
  21. data/README.md +166 -0
  22. data/Rakefile +40 -0
  23. data/app/cells/decidim/reporting_proposals/edit_note_modal/show.erb +20 -0
  24. data/app/cells/decidim/reporting_proposals/edit_note_modal_cell.rb +37 -0
  25. data/app/commands/concerns/decidim/reporting_proposals/admin/create_category_override.rb +32 -0
  26. data/app/commands/concerns/decidim/reporting_proposals/admin/update_category_override.rb +32 -0
  27. data/app/commands/concerns/decidim/reporting_proposals/create_report_override.rb +19 -0
  28. data/app/commands/decidim/reporting_proposals/admin/update_proposal.rb +46 -0
  29. data/app/commands/decidim/reporting_proposals/admin/update_proposal_note.rb +36 -0
  30. data/app/commands/decidim/reporting_proposals/create_reporting_proposal.rb +68 -0
  31. data/app/controllers/concerns/decidim/reporting_proposals/admin/categories_controller_override.rb +16 -0
  32. data/app/controllers/concerns/decidim/reporting_proposals/admin/needs_header_snippets.rb +50 -0
  33. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answer_templates_controller_override.rb +18 -0
  34. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answers_controller_override.rb +35 -0
  35. data/app/controllers/concerns/decidim/reporting_proposals/admin/proposals_controller_override.rb +28 -0
  36. data/app/controllers/concerns/decidim/reporting_proposals/needs_proposal_extra_validations_snippets.rb +51 -0
  37. data/app/controllers/concerns/decidim/reporting_proposals/proposals_controller_override.rb +113 -0
  38. data/app/controllers/decidim/reporting_proposals/admin/application_controller.rb +18 -0
  39. data/app/controllers/decidim/reporting_proposals/admin/proposal_notes_controller.rb +38 -0
  40. data/app/controllers/decidim/reporting_proposals/admin/proposals_controller.rb +61 -0
  41. data/app/controllers/decidim/reporting_proposals/application_controller.rb +11 -0
  42. data/app/controllers/decidim/reporting_proposals/geolocation_controller.rb +32 -0
  43. data/app/forms/concerns/decidim/reporting_proposals/admin/category_form_override.rb +19 -0
  44. data/app/forms/concerns/decidim/reporting_proposals/form_builder_override.rb +48 -0
  45. data/app/forms/concerns/decidim/reporting_proposals/map_builder_override.rb +60 -0
  46. data/app/forms/decidim/reporting_proposals/admin/proposal_photo_form.rb +23 -0
  47. data/app/forms/decidim/reporting_proposals/proposal_form.rb +33 -0
  48. data/app/helpers/concerns/decidim/reporting_proposals/admin/proposals_helper_override.rb +63 -0
  49. data/app/helpers/concerns/decidim/reporting_proposals/proposal_wizard_helper_override.rb +61 -0
  50. data/app/jobs/decidim/reporting_proposals/assign_proposal_valuators_job.rb +51 -0
  51. data/app/models/concerns/decidim/reporting_proposals/category_override.rb +28 -0
  52. data/app/models/concerns/decidim/reporting_proposals/participatory_space_role_config/valuator_override.rb +17 -0
  53. data/app/models/concerns/decidim/reporting_proposals/participatory_space_user_role_override.rb +25 -0
  54. data/app/models/decidim/reporting_proposals/category_valuator.rb +28 -0
  55. data/app/overrides/decidim/admin/categories/_form/add_valuators_field.html.erb.deface +3 -0
  56. data/app/overrides/decidim/admin/categories/index/add_table_column_name.html.erb.deface +3 -0
  57. data/app/overrides/decidim/admin/categories/index/add_valuators.html.erb.deface +3 -0
  58. data/app/overrides/decidim/proposals/admin/proposal_notes/_proposal_notes/add_edit_link.html.erb.deface +3 -0
  59. data/app/overrides/decidim/proposals/admin/proposal_notes/_proposal_notes/add_links_to_note.html.erb.deface +3 -0
  60. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/add_td_hide_action.html.erb.deface +3 -0
  61. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/add_valuators_name.html.erb.deface +9 -0
  62. data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/replace_td_title.html.erb.deface +3 -0
  63. data/app/overrides/decidim/proposals/admin/proposals/show/add_photo_management.html.erb.deface +3 -0
  64. data/app/overrides/decidim/proposals/admin/proposals/show/add_send_email_btn.html.erb.deface +3 -0
  65. data/app/overrides/decidim/proposals/admin/proposals/show/remove_photos.html.erb.deface +4 -0
  66. data/app/overrides/decidim/proposals/admin/proposals/show/replace_valuators.html.erb.deface +3 -0
  67. data/app/overrides/decidim/proposals/proposals/_proposal_similar/add_distance_badge.html.erb.deface +5 -0
  68. data/app/overrides/decidim/proposals/proposals/_wizard_header/replace_title.html.erb.deface +14 -0
  69. data/app/overrides/decidim/proposals/proposals/edit/add_user_group.html.erb.deface +3 -0
  70. data/app/overrides/decidim/proposals/proposals/edit/replace_javascript.html.erb.deface +8 -0
  71. data/app/overrides/decidim/proposals/proposals/edit/replace_partial_edit_form_fields.html.erb.deface +3 -0
  72. data/app/overrides/decidim/proposals/proposals/edit_draft/add_user_group.html.erb.deface +3 -0
  73. data/app/overrides/decidim/proposals/proposals/edit_draft/replace_javascript.html.erb.deface +8 -0
  74. data/app/overrides/decidim/proposals/proposals/edit_draft/replace_partial_edit_form_fields.html.erb.deface +3 -0
  75. data/app/overrides/decidim/proposals/proposals/index/add_additional_button.html.erb.deface +3 -0
  76. data/app/overrides/decidim/proposals/proposals/new/remove_title.html.erb.deface +1 -0
  77. data/app/overrides/decidim/proposals/proposals/new/replace_body.html.erb.deface +3 -0
  78. data/app/overrides/decidim/proposals/proposals/new/replace_javascript.html.erb.deface +8 -0
  79. data/app/overrides/decidim/proposals/proposals/show/add_additional_button.html.erb.deface +3 -0
  80. data/app/overrides/layouts/decidim/_process_header_steps/always_show_new_proposals.html.erb.deface +3 -0
  81. data/app/packs/entrypoints/decidim_reporting_proposals.js +6 -0
  82. data/app/packs/entrypoints/decidim_reporting_proposals_camera.js +2 -0
  83. data/app/packs/entrypoints/decidim_reporting_proposals_geocoding.js +2 -0
  84. data/app/packs/entrypoints/decidim_reporting_proposals_js_validations.js +1 -0
  85. data/app/packs/entrypoints/decidim_reporting_proposals_list_component_admin.js +1 -0
  86. data/app/packs/entrypoints/decidim_reporting_proposals_manage_component_admin.js +1 -0
  87. data/app/packs/images/.keep +0 -0
  88. data/app/packs/src/decidim/reporting_proposals/proposal_extra_validations.js +89 -0
  89. data/app/packs/src/decidim/reporting_proposals/proposals/add_proposal.js +66 -0
  90. data/app/packs/src/decidim/reporting_proposals/reverse_geocoding.js +54 -0
  91. data/app/packs/src/decidim/reporting_proposals/user_camera_inputs.js +49 -0
  92. data/app/packs/stylesheets/decidim/reporting_proposals/geocoding_addons.scss +34 -0
  93. data/app/packs/stylesheets/decidim/reporting_proposals/list_component_admin.scss +27 -0
  94. data/app/packs/stylesheets/decidim/reporting_proposals/manage_component_admin.scss +31 -0
  95. data/app/packs/stylesheets/decidim/reporting_proposals/proposals/add_proposal.scss +12 -0
  96. data/app/packs/stylesheets/decidim/reporting_proposals/user_camera_inputs.scss +19 -0
  97. data/app/permissions/concerns/decidim/reporting_proposals/admin/permissions_override.rb +27 -0
  98. data/app/permissions/decidim/reporting_proposals/admin/permissions.rb +79 -0
  99. data/app/permissions/decidim/reporting_proposals/permissions.rb +17 -0
  100. data/app/queries/decidim/reporting_proposals/nearby_proposals.rb +57 -0
  101. data/app/serializers/decidim/reporting_proposals/proposal_serializer_override.rb +77 -0
  102. data/app/validators/concerns/decidim/reporting_proposals/component_validator_override.rb +25 -0
  103. data/app/views/decidim/proposals/admin/proposal_notes/_editing_note.html.erb +18 -0
  104. data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes_body.html.erb +6 -0
  105. data/app/views/decidim/proposals/admin/proposals/_send_email_button.html.erb +4 -0
  106. data/app/views/decidim/proposals/proposals/_additional_button.html.erb +6 -0
  107. data/app/views/decidim/reporting_proposals/admin/categories/_column_valuators.html.erb +1 -0
  108. data/app/views/decidim/reporting_proposals/admin/categories/_valuators.html.erb +1 -0
  109. data/app/views/decidim/reporting_proposals/admin/categories/_valuators_field.html.erb +7 -0
  110. data/app/views/decidim/reporting_proposals/admin/proposals/_photo_form.html.erb +24 -0
  111. data/app/views/decidim/reporting_proposals/admin/proposals/_photo_gallery.html.erb +21 -0
  112. data/app/views/decidim/reporting_proposals/admin/proposals/_photos.html.erb +14 -0
  113. data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_hide.html.erb +20 -0
  114. data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_title.html.erb +41 -0
  115. data/app/views/decidim/reporting_proposals/proposals/_additional_button_for_show.html.erb +6 -0
  116. data/app/views/decidim/reporting_proposals/proposals/_new_proposal_fields.html.erb +7 -0
  117. data/app/views/decidim/reporting_proposals/proposals/_reporting_proposal_fields.html.erb +113 -0
  118. data/app/views/decidim/reporting_proposals/proposals/_user_group.html.erb +5 -0
  119. data/bin/rails +6 -0
  120. data/bin/webpack-dev-server +6 -0
  121. data/codecov.yml +11 -0
  122. data/config/assets.rb +13 -0
  123. data/config/i18n-tasks.yml +13 -0
  124. data/config/locales/ca.yml +366 -0
  125. data/config/locales/de.yml +366 -0
  126. data/config/locales/en.yml +426 -0
  127. data/config/locales/es.yml +366 -0
  128. data/crowdin.yml +45 -0
  129. data/db/migrate/20221219151846_create_decidim_categories_valuators.rb +17 -0
  130. data/decidim-reporting_proposals.gemspec +34 -0
  131. data/lib/decidim/api/reporting_proposals_type.rb +10 -0
  132. data/lib/decidim/reporting_proposals/admin.rb +8 -0
  133. data/lib/decidim/reporting_proposals/admin_engine.rb +31 -0
  134. data/lib/decidim/reporting_proposals/component.rb +490 -0
  135. data/lib/decidim/reporting_proposals/config.rb +53 -0
  136. data/lib/decidim/reporting_proposals/engine.rb +96 -0
  137. data/lib/decidim/reporting_proposals/test/factories.rb +13 -0
  138. data/lib/decidim/reporting_proposals/version.rb +15 -0
  139. data/lib/decidim/reporting_proposals.rb +13 -0
  140. data/package-lock.json +7844 -0
  141. data/package.json +195 -0
  142. metadata +319 -0
@@ -0,0 +1,113 @@
1
+ <% if @form.categories&.any? %>
2
+ <div class="field">
3
+ <%= form.categories_select :category_id, @form.categories, include_blank: t("decidim.proposals.proposals.edit.select_a_category") %>
4
+ </div>
5
+ <% end %>
6
+
7
+ <% if component_settings.attachments_allowed? %>
8
+ <fieldset class="gallery__container photos_container">
9
+ <% if @form.photos.any? %>
10
+ <% @form.photos.each do |photo| %>
11
+ <div class="callout gallery__item" id="attachment_<%= photo.id %>" data-closable>
12
+ <%= image_tag photo.thumbnail_url, class: "thumbnail", alt: photo.file.filename %>
13
+ <%= form.hidden_field :photos, multiple: true, value: photo.id, id: "photo-#{photo.id}" %>
14
+ <button class="close-button"
15
+ aria-label="<%= t("delete_image", scope: "decidim.proposals.proposals.edit") %>"
16
+ title="<%= t("delete_image", scope: "decidim.proposals.proposals.edit") %>"
17
+ type="button"
18
+ data-close>
19
+ <span aria-hidden="true">&times;</span>
20
+ </button>
21
+ </div>
22
+ <% end %>
23
+ <% end %>
24
+ <div class="field row column">
25
+ <%= form.file_field :add_photos, multiple: false, label: t("image", scope: "decidim.reporting_proposals.proposals.form") %>
26
+
27
+ <div class="has_no_image">
28
+ <%= form.check_box :has_no_image %>
29
+ </div>
30
+ </div>
31
+ </fieldset>
32
+
33
+ <% end %>
34
+
35
+ <% if @form.geocoding_enabled? %>
36
+ <div class="field" id="address_input">
37
+ <div class="address-fill">
38
+ <%= form.geocoding_field :address, placeholder: t("decidim.proposals.proposals.placeholder.address") %>
39
+ </div>
40
+ <div class="has_no_address">
41
+ <%= form.check_box :has_no_address %>
42
+ <%= form.hidden_field :has_address, value: "1" %>
43
+ </div>
44
+ <div class="map address-fill" id="address_map">
45
+ <%= render partial: "dynamic_map_instructions" %>
46
+ <%= dynamic_map_for proposal_preview_data_for_map(@form.to_h) %>
47
+ </div>
48
+ </div>
49
+ <% end %>
50
+
51
+ <div class="field hashtags__container">
52
+ <%= form.text_field :title, class: "js-hashtags", value: form_presenter.title %>
53
+ </div>
54
+
55
+ <div class="field hashtags__container">
56
+ <%= text_editor_for_proposal_body(form) %>
57
+ </div>
58
+
59
+ <% if @form.component_automatic_hashtags.any? %>
60
+ <div class="field">
61
+ <%= form.label :automatic_hashtags %>
62
+ <div class="checkboxes hashtags">
63
+ <% @form.component_automatic_hashtags.each do |hashtag| %>
64
+ <label>
65
+ <%= check_box_tag "", "", { checked: true }, { disabled: true } %>#<%= hashtag %>
66
+ </label>
67
+ <% end %>
68
+ </div>
69
+ </div>
70
+ <% end %>
71
+
72
+ <% if @form.component_suggested_hashtags.any? %>
73
+ <div class="field">
74
+ <%= form.label :suggested_hashtags, nil, for: nil %>
75
+ <div class="checkboxes hashtags">
76
+ <%= form.collection_check_boxes :suggested_hashtags, @form.component_suggested_hashtags.map { |hashtag| [hashtag.downcase, "##{hashtag}"] }, :first, :last do |option|
77
+ option.label { option.check_box(checked: @form.suggested_hashtag_checked?(option.value)) + option.text }
78
+ end %>
79
+ </div>
80
+ </div>
81
+ <% end %>
82
+
83
+ <% if current_component.has_subscopes? %>
84
+ <div class="field">
85
+ <%= scopes_picker_field form, :scope_id, root: current_component.scope %>
86
+ </div>
87
+ <% end %>
88
+
89
+ <% if component_settings.attachments_allowed? && !component_settings.only_photo_attachments? %>
90
+ <fieldset class="attachments_container gallery__container documents_container">
91
+ <legend><%= t("attachment_legend", scope: "decidim.proposals.proposals.edit") %></legend>
92
+
93
+ <% if @form.documents.any? %>
94
+ <% @form.documents.each do |document| %>
95
+ <div class="callout" id="attachment_<%= document.id %>" data-closable>
96
+ <%= link_to translated_attribute(document.title), document.url %>
97
+ <small><%= document.file_type %> <%= number_to_human_size(document.file_size) %></small>
98
+ <%= form.hidden_field :documents, multiple: true, value: document.id, id: "document-#{document.id}" %>
99
+ <button class="close-button"
100
+ aria-label="<%= t("delete_document", scope: "decidim.proposals.proposals.edit") %>"
101
+ title="<%= t("delete_document", scope: "decidim.proposals.proposals.edit") %>"
102
+ type="button" data-close>
103
+ <span aria-hidden="true">&times;</span>
104
+ </button>
105
+ </div>
106
+ <% end %>
107
+ <% end %>
108
+
109
+ <div class="row column">
110
+ <%= form.file_field :add_documents, multiple: true, label: t("add_documents", scope: "decidim.proposals.proposals.edit") %>
111
+ </div>
112
+ </fieldset>
113
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if current_organization.user_groups_enabled? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? %>
2
+ <div class="field">
3
+ <%= user_group_select_field(form, :user_group_id) %>
4
+ </div>
5
+ <% end %>
data/bin/rails ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ Dir.chdir("development_app")
5
+
6
+ load "bin/rails"
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ Dir.chdir("development_app")
5
+
6
+ load "bin/webpack-dev-server"
data/codecov.yml ADDED
@@ -0,0 +1,11 @@
1
+ coverage:
2
+ status:
3
+ patch: false
4
+ project:
5
+ default:
6
+ threshold: 0.1%
7
+ github_checks:
8
+ annotations: true
9
+ flag_management:
10
+ default_rules:
11
+ carryforward: true
data/config/assets.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ base_path = File.expand_path("..", __dir__)
4
+
5
+ Decidim::Webpacker.register_path("#{base_path}/app/packs")
6
+ Decidim::Webpacker.register_entrypoints(
7
+ decidim_reporting_proposals: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals.js",
8
+ decidim_reporting_proposals_manage_component_admin: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals_manage_component_admin.js",
9
+ decidim_reporting_proposals_list_component_admin: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals_list_component_admin.js",
10
+ decidim_reporting_proposals_geocoding: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals_geocoding.js",
11
+ decidim_reporting_proposals_camera: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals_camera.js",
12
+ decidim_reporting_proposals_js_validations: "#{base_path}/app/packs/entrypoints/decidim_reporting_proposals_js_validations.js"
13
+ )
@@ -0,0 +1,13 @@
1
+ ---
2
+
3
+ base_locale: en
4
+ locales: [en]
5
+
6
+ data:
7
+ external:
8
+ - "<%= %x[bundle info decidim-core --path].chomp %>/config/locales/%{locale}.yml"
9
+ - "<%= %x[bundle info decidim-proposals --path].chomp %>/config/locales/%{locale}.yml"
10
+
11
+ ignore_unused:
12
+
13
+ ignore_missing:
@@ -0,0 +1,366 @@
1
+ ---
2
+ ca:
3
+ activemodel:
4
+ attributes:
5
+ category:
6
+ valuator_ids: Avaluadores assignades
7
+ proposal:
8
+ has_no_address: No té adreça
9
+ decidim:
10
+ application:
11
+ geocoding:
12
+ unconfigured: La geocodificació no està configurada!
13
+ components:
14
+ proposals:
15
+ settings:
16
+ global:
17
+ evaluating_proposals_overdue: Quants dies després una proposta amb estat avaluació es considera vençuda
18
+ evaluating_proposals_overdue_help: Aquesta regla afegeix una alerta visual a la llista e propostes. Si no ho vols utilitzar, deixa aquest valor a zero.
19
+ geocoding_comparison_enabled: Compara propostes per proximitat de distància
20
+ geocoding_comparison_enabled_help: La configuració permet comparar propostes per proximitat de distància en lloc de semblança de text. Aquesta característica requereix que un servei de geocodificació estigui configurat i habilitat al component (en cas contrari, el valor predeterminat és la comparació de semblança de text).
21
+ geocoding_comparison_newer_than: Compareu només les propostes fetes en els últims X dies
22
+ geocoding_comparison_newer_than_help: Aquesta configuració només s'aplica quan es comparen propostes per proximitat a distància. Les propostes anteriors al nombre de dies especificat són ignorades. Deixeu a zero per comparar totes les propostes.
23
+ geocoding_comparison_radius: Radi màxim (en metres) per considerar propostes similars (s'ordenaran per proximitat) per distància proximitat
24
+ proposal_photo_editing_enabled: Permet que les administradores i les avaluadores editin les fotos quan responen les propostes
25
+ unanswered_proposals_overdue: Quants dies després una proposta sense resposta es considera vençuda
26
+ unanswered_proposals_overdue_help: Aquesta regla afegeix una alerta visual a la llista e propostes. Si no ho vols utilitzar, deixa aquest valor a zero.
27
+ reporting_proposals:
28
+ name: Propostes directes
29
+ settings:
30
+ global:
31
+ additional_button_for_show_proposal_link: Botó d'acció addicional després de l'enllaç "tornar a la llista" quan visiteu una proposta concreta (enllaç)
32
+ additional_button_for_show_proposal_text: Botó d'acció addicional després de l'enllaç "tornar a la llista" quan visiteu una proposta concreta (text)
33
+ additional_button_link: Botó d'acció addicional al costat de la proposta nova (enllaç)
34
+ additional_button_text: Botó d'acció addicional al costat de la proposta nova (text)
35
+ additional_buttons_for_show_proposal_show: Mostra un botó addicional a la vista pública en el detall de les propostes
36
+ additional_buttons_show: Mostra un botó addicional a la vista pública del llistat de propostes
37
+ additional_buttons_show_help: Afegeix el text i l'enllaç a sota
38
+ amendments_enabled: Esmenes habilitades
39
+ amendments_enabled_help: Si l'actives, configura les funcionalitats de l'esmena per cada fase.
40
+ amendments_wizard_help_text: Text d'ajuda en crear una nova esmena
41
+ announcement: Anunci
42
+ attachments_allowed: Permetre arxius adjunts
43
+ can_accumulate_supports_beyond_threshold: Pot acumular suports més enllà del llindar
44
+ collaborative_drafts_enabled: Esborranys col·laboratius habilitats
45
+ comments_enabled: Comentaris habilitats
46
+ comments_max_length: Longitud màxima dels comentaris (deixa 0 si vols mantenir la configuració per defecte)
47
+ default_sort_order: Ordre de propostes directes per defecte
48
+ default_sort_order_help: '''Per defecte'' vol dir que si els suports estan habilitats, les propostes es mostraran aleatòriament, i si els suports estan bloquejats, aleshores es mostraran de més a menys suports.'
49
+ default_sort_order_options:
50
+ default: Per defecte
51
+ most_commented: Més comentada
52
+ most_endorsed: Més adhesions
53
+ most_followed: Més seguida
54
+ most_voted: Més suports
55
+ random: Aleatori
56
+ recent: Recent
57
+ with_more_authors: Amb més autores
58
+ evaluating_proposals_overdue: Quants dies després una proposta amb estat avaluació es considera vençuda
59
+ evaluating_proposals_overdue_help: Aquesta regla afegeix una alerta visual a la llista e propostes. Si no ho vols utilitzar, deixa aquest valor a zero.
60
+ geocoding_comparison_enabled: Compara propostes per proximitat de distància
61
+ geocoding_comparison_enabled_help: La configuració permet comparar propostes per proximitat de distància en lloc de semblança de text. Aquesta característica requereix que un servei de geocodificació estigui configurat i habilitat al component (en cas contrari, el valor predeterminat és la comparació de semblança de text).
62
+ geocoding_comparison_newer_than: Compareu només les propostes fetes en els últims X dies
63
+ geocoding_comparison_newer_than_help: Aquesta configuració només s'aplica quan es comparen propostes per proximitat a distància. Les propostes anteriors al nombre de dies especificat són ignorades. Deixeu a zero per comparar totes les propostes.
64
+ geocoding_comparison_radius: Radi màxim (en metres) per considerar propostes similars (s'ordenaran per proximitat) per distància proximitat
65
+ geocoding_enabled: Geocodificació habilitada
66
+ minimum_votes_per_user: Suports mínims per participant
67
+ new_proposal_body_template: Plantilla pel text de nova proposta
68
+ new_proposal_body_template_help: Pots definir el text predefinit que hauria de tenir una nova proposta
69
+ new_proposal_help_text: Text d'ajuda per la creació d'una nova proposta
70
+ official_proposals_enabled: Propostes d'administradora (oficials) habilitades
71
+ only_photo_attachments: Utilitza només fitxers de fotos
72
+ participatory_texts_enabled: Textos participatius habilitats
73
+ participatory_texts_enabled_readonly: No es pot interactuar amb aquesta configuració si hi ha propostes existents. Si us plau, crea un nou 'component de propostes' si vols habilitar aquesta característica o descarta totes les propostes importades al menú "textos participatius" si vols deshabilitar-lo.
74
+ proposal_answering_enabled: Resposta a les propostes habilitada
75
+ proposal_edit_before_minutes: Les propostes poden ser editades per les autores abans que passin aquests minuts
76
+ proposal_edit_time: Edició de proposta
77
+ proposal_edit_time_choices:
78
+ infinite: Permet l'edició de propostes durant un període infinit
79
+ limited: Permet l'edició de propostes durant una finestra temporal específica
80
+ proposal_length: Longitud màxima del cos de la proposta
81
+ proposal_limit: Límit de propostes per participant
82
+ proposal_photo_editing_enabled: Permet a les administradores i avaluadores editar les fotos quan responen a les propostes
83
+ proposal_wizard_step_1_help_text: Text d'ajuda pel pas "Crear" de l'assistent de propostes
84
+ proposal_wizard_step_2_help_text: Text d'ajuda pel pas "Comparar" de l'assistent de propostes
85
+ proposal_wizard_step_3_help_text: Text d'ajuda pel pas "Completar" de l'assistent de propostes
86
+ proposal_wizard_step_4_help_text: Text d'ajuda pel pas "Publicar" de l'assistent de propostes
87
+ resources_permissions_enabled: Es poden establir permisos d'accions per a cada proposta
88
+ scope_id: Àmbit
89
+ scopes_enabled: Àmbits habilitats
90
+ threshold_per_proposal: Llindar per proposta
91
+ unanswered_proposals_overdue: Quants dies després una proposta sense resposta es considera vençuda
92
+ unanswered_proposals_overdue_help: Aquesta regla afegeix una alerta visual a la llista e propostes. Si no ho vols utilitzar, deixa aquest valor a zero.
93
+ vote_limit: Límit de suports per participant
94
+ step:
95
+ amendment_creation_enabled: Creació d'esmena habilitada
96
+ amendment_creation_enabled_help: La participant pot esmenar propostes.
97
+ amendment_promotion_enabled: Promoció d'esmenes habilitada
98
+ amendment_promotion_enabled_help: Les autores de les esmenes rebutjades poden promocionar-les a propostes.
99
+ amendment_reaction_enabled: Resposta a l'esmena habilitada
100
+ amendment_reaction_enabled_help: Les autores de les propostes poden acceptar o rebutjar les esmenes proposades pels participants.
101
+ amendments_visibility: Visibilitat de les esmenes
102
+ amendments_visibility_choices:
103
+ all: Les esmenes són visibles per tothom
104
+ participants: Les esmenes són visibles només per les autores
105
+ amendments_visibility_help: Si se selecciona l'opció "Les esmenes són visibles únicament per als seus autors", els participants han d'estar identificats per a veure les esmenes realitzades.
106
+ announcement: Anunci
107
+ answers_with_costs: Habilita el cost en la resposta de les propostes
108
+ automatic_hashtags: Hashtags afegits a totes les propostes
109
+ comments_blocked: Comentaris bloquejats
110
+ creation_enabled: Les participants poden crear propostes directes
111
+ creation_enabled_readonly: Aquesta opció es desactiva quan actives la funcionalitat de Textos Participatius. Per a pujar propostes com a text participatiu fes clic al botó de Textos Participatius i segueix les instruccions.
112
+ default_sort_order: Ordre de propostes per defecte
113
+ default_sort_order_help: '''Per defecte'' vol dir que si els suports estan habilitats, les propostes es mostraran aleatòriament, i si els suports estan bloquejats, aleshores es mostraran de més a menys suports.'
114
+ default_sort_order_options:
115
+ default: Per defecte
116
+ most_commented: Més comentada
117
+ most_endorsed: Més adhesions
118
+ most_followed: Més seguida
119
+ most_voted: Més suports
120
+ random: Aleatori
121
+ recent: Recent
122
+ with_more_authors: Amb més autores
123
+ endorsements_blocked: Adhesions bloquejades
124
+ endorsements_enabled: Adhesions habilitades
125
+ proposal_answering_enabled: Resposta a les propostes habilitada
126
+ publish_answers_immediately: Publica la resposta de la proposta immediatament
127
+ publish_answers_immediately_help_html: 'Tingues present que si respons alguna proposta sense que això estigui habilitat, l''hauràs de publicar manualment seleccionant i fent servir l''acció de publicar. Per a més informació sobre el funcionament, consulta la <a href="https://docs.decidim.org/en/admin/components/proposals/answers#_publication" target="_blank">pàgina de documentació de les respostes a les propostes</a>.'
128
+ suggested_hashtags: Hashtags suggerits a les participants per a noves propostes
129
+ votes_blocked: Suports bloquejats
130
+ votes_enabled: Suports habilitats
131
+ votes_hidden: Suports ocults (si els suports estan habilitats, marcant aquesta opció s'amagarà el nombre de suports)
132
+ moderations:
133
+ actions:
134
+ hide: Amagar
135
+ admin:
136
+ reportable:
137
+ hide:
138
+ invalid: Hi ha hagut un problema amagant aquest recurs.
139
+ success: Recurs amagat amb èxit.
140
+ proposals:
141
+ admin:
142
+ proposals:
143
+ send_email_button:
144
+ send_mail: Send an email to user
145
+ reporting_proposals:
146
+ actions:
147
+ answer_proposal: Resposta de la proposta
148
+ edit_proposal: Edita la proposta
149
+ import: Importa propostes d'un altre component
150
+ new: Nova proposta
151
+ participatory_texts: Textos participatius
152
+ show: Veure proposta
153
+ title: Accions
154
+ admin:
155
+ actions:
156
+ edit_valuators: Edita les avaluadores
157
+ preview: Vista prèvia
158
+ answer_overdue:
159
+ datetime:
160
+ distance_in_words:
161
+ about_x_hours:
162
+ one: aproximadament 1 hora de retard
163
+ other: aproximadament %{count} hores de retard
164
+ about_x_months:
165
+ one: aproximadament 1 mes de retard
166
+ other: aproximadament %{count} mesos de retard
167
+ about_x_years:
168
+ one: aproximadament 1 any de retard
169
+ other: aproximadament %{count} anys de retard
170
+ almost_x_years:
171
+ one: aproximadament 1 any de retard
172
+ other: aproximadament %{count} anys de retard
173
+ half_a_minute: mig minut de retard
174
+ less_than_x_minutes:
175
+ one: menys d'un minut de retard
176
+ other: menys de %{count} minuts de retard
177
+ less_than_x_seconds:
178
+ one: menys d'1 segon de retard
179
+ other: menys de %{count} segons de retard
180
+ over_x_years:
181
+ one: més d'1 any de retard
182
+ other: més de %{count} anys de retard
183
+ x_days:
184
+ one: 1 dia de retard
185
+ other: "%{count} dies de retard"
186
+ x_minutes:
187
+ one: 1 minut de retard
188
+ other: "%{count} minuts de retard"
189
+ x_months:
190
+ one: 1 mes de retard
191
+ other: "%{count} mesos de retard"
192
+ x_seconds:
193
+ one: 1 segon de retard
194
+ other: "%{count} segons de retard"
195
+ x_years:
196
+ one: 1 any de retard
197
+ other: "%{count} anys de retard"
198
+ answer_pending:
199
+ datetime:
200
+ distance_in_words:
201
+ about_x_hours:
202
+ one: aproximadament 1 hora per respondre
203
+ other: aproximadament %{count} hores per respondre
204
+ about_x_months:
205
+ one: aproximadament 1 mes per respondre
206
+ other: uns %{count} mesos per respondre
207
+ about_x_years:
208
+ one: aproximadament 1 any per respondre
209
+ other: aproximadament %{count} anys per respondre
210
+ almost_x_years:
211
+ one: gairebé 1 any per respondre
212
+ other: gairebé %{count} anys per respondre
213
+ half_a_minute: mig minut per respondre
214
+ less_than_x_minutes:
215
+ one: menys d'un minut per respondre
216
+ other: menys de %{count} minuts per respondre
217
+ less_than_x_seconds:
218
+ one: menys d'1 segon per respondre
219
+ other: menys de %{count} segons per respondre
220
+ over_x_years:
221
+ one: més d'1 any per respondre
222
+ other: més de %{count} anys per respondre
223
+ x_days:
224
+ one: 1 dia per respondre
225
+ other: "%{count} dies per respondre"
226
+ x_minutes:
227
+ one: 1 minut per respondre
228
+ other: "%{count} minuts per respondre"
229
+ x_months:
230
+ one: 1 mes per respondre
231
+ other: "%{count} mesos per respondre"
232
+ x_seconds:
233
+ one: 1 segon per respondre
234
+ other: "%{count} segons per respondre"
235
+ x_years:
236
+ one: 1 any per respondre
237
+ other: "%{count} anys per respondre"
238
+ categories:
239
+ form:
240
+ valuators_help: Seleccioneu les avaluadores que s'assignaran automàticament quan es publiqui una proposta en aquesta categoria (rebran una notificació).
241
+ index:
242
+ valuators_column: Avaluadores assignades
243
+ evaluate_pending:
244
+ datetime:
245
+ distance_in_words:
246
+ about_x_hours:
247
+ one: aproximadament 1 hora per avaluar
248
+ other: aproximadament %{count} hores per avaluar
249
+ about_x_months:
250
+ one: aproximadament 1 hora per avaluar
251
+ other: aproximadament %{count} mesos per avaluar
252
+ about_x_years:
253
+ one: aproximadament 1 any per avaluar
254
+ other: aproximadament %{count} anys per avaluar
255
+ almost_x_years:
256
+ one: gairebé 1 any per avaluar
257
+ other: gairebé %{count} anys per avaluar
258
+ half_a_minute: half a minute to evaluate
259
+ less_than_x_minutes:
260
+ one: menys d'un minut per avaluar
261
+ other: menys de %{count} minuts per avaluar
262
+ less_than_x_seconds:
263
+ one: menys d'1 segon per avaluar
264
+ other: menys de %{count} segons per avaluar
265
+ over_x_years:
266
+ one: més d'1 any per avaluar
267
+ other: més de %{count} anys per avaluar
268
+ x_days:
269
+ one: 1 dia per avaluar
270
+ other: "%{count} dies per avaluar"
271
+ x_minutes:
272
+ one: 1 minut per avaluar
273
+ other: "%{count} minuts per avaluar"
274
+ x_months:
275
+ one: 1 mes per avaluar
276
+ other: "%{count} mesos per avaluar"
277
+ x_seconds:
278
+ one: 1 segon per avaluar
279
+ other: "%{count} segons per avaluar"
280
+ x_years:
281
+ one: 1 any per avaluar
282
+ other: "%{count} anys per avaluar"
283
+ exports:
284
+ proposal_comments: Comentaris
285
+ proposals: Propostes directes
286
+ proposal_notes:
287
+ modal:
288
+ body: Note
289
+ title: Edit note
290
+ update: Update
291
+ update:
292
+ edited: Edited
293
+ invalid: There was a problem updating the proposal note.
294
+ success: Proposal note successfully updated.
295
+ proposals:
296
+ photo_form:
297
+ action: Afageix imatge
298
+ add_images: Afegeix imatges
299
+ gallery_legend: Afegeix imatges
300
+ title: Fotografies
301
+ upload_msg: Cap arxiu seleccionat
302
+ photo_gallery:
303
+ delete_image: Esborrar imatge
304
+ photos: Fotografies
305
+ photos:
306
+ title: Fotografies
307
+ valuators_list:
308
+ assigned_valuators: Avaluadores assignades
309
+ remove_assignment: desfer assignació
310
+ remove_assignment_confirmation: eliminar la confirmació de l'assignació
311
+ valuators: Avaluadores
312
+ resolution_time: Temps de resolució
313
+ time_elapsed:
314
+ datetime:
315
+ distance_in_words:
316
+ about_x_hours:
317
+ one: aproximadament 1 hora
318
+ other: aproximadament %{count} hores
319
+ about_x_months:
320
+ one: aproximadament 1 mes
321
+ other: aproximadament %{count} mesos
322
+ about_x_years:
323
+ one: aproximadament 1 any
324
+ other: aproximadament %{count} anys
325
+ almost_x_years:
326
+ one: gairebé 1 any
327
+ other: gairebé %{count} anys
328
+ half_a_minute: mig minut
329
+ less_than_x_minutes:
330
+ one: menys d'un minut
331
+ other: menys de %{count} minuts
332
+ less_than_x_seconds:
333
+ one: menys d'un segon
334
+ other: menys de %{count} segons
335
+ over_x_years:
336
+ one: més d’1 any
337
+ other: més de %{count} anys
338
+ x_days:
339
+ one: 1 dia
340
+ other: "%{count} dies"
341
+ x_minutes:
342
+ one: 1 minut
343
+ other: "%{count} minuts"
344
+ x_months:
345
+ one: 1 mes
346
+ other: "%{count} mesos"
347
+ x_seconds:
348
+ one: 1 segon
349
+ other: "%{count} segons"
350
+ x_years:
351
+ one: 1 any
352
+ other: "%{count} anys"
353
+ forms:
354
+ errors:
355
+ device_not_supported: La geolocalització no és compatible amb el vostre navegador.
356
+ no_device_location: Ho sentim, no hem pogut detectar la teva localització.
357
+ use_my_camera: Usa la meva càmera
358
+ use_my_location: Usa la meva localització
359
+ proposals:
360
+ compare:
361
+ geocoding:
362
+ away: "%{meters} de distància"
363
+ description: Aquestes són propostes que es troben en un radi de %{meters} respecte a la que esteu creant. En cas que trobeu un altra proposta d'informe en la mateixa situació, podeu optar per donar-li una adhesió en comptes de crear-ne un de nou.
364
+ title: Propostes properes
365
+ form:
366
+ image: Imatge/fotografia