decidim-reporting_proposals 0.4.2 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +2 -2
- data/.github/workflows/test_integration.yml +2 -2
- data/.github/workflows/test_unit.yml +2 -2
- data/.rubocop-disabled.yml +11 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_rails.yml +3 -0
- data/.rubocop_ruby.yml +24 -10
- data/.ruby-version +1 -1
- data/.simplecov +2 -2
- data/Gemfile.lock +286 -264
- data/README.md +2 -2
- data/Rakefile +2 -0
- data/app/commands/concerns/decidim/reporting_proposals/gallery_methods_override.rb +18 -0
- data/app/commands/decidim/reporting_proposals/admin/update_proposal_note.rb +1 -1
- data/app/commands/decidim/reporting_proposals/create_reporting_proposal.rb +2 -0
- data/app/commands/decidim/templates/admin/copy_proposal_answer_template.rb +1 -1
- data/app/commands/decidim/templates/admin/create_proposal_answer_template.rb +1 -1
- data/app/commands/decidim/templates/admin/update_proposal_answer_template.rb +1 -1
- data/app/controllers/concerns/decidim/reporting_proposals/admin/needs_header_snippets.rb +5 -7
- data/app/controllers/concerns/decidim/reporting_proposals/needs_proposal_extra_validations_snippets.rb +1 -1
- data/app/controllers/concerns/decidim/reporting_proposals/proposals_controller_override.rb +5 -5
- data/app/controllers/decidim/templates/admin/proposal_answer_templates_controller.rb +8 -6
- data/app/forms/concerns/decidim/reporting_proposals/form_builder_override.rb +9 -8
- data/app/forms/concerns/decidim/reporting_proposals/map_builder_override.rb +6 -4
- data/app/helpers/concerns/decidim/reporting_proposals/proposal_wizard_helper_override.rb +4 -4
- data/app/overrides/decidim/proposals/admin/proposal_answers/_form/add_template_chooser.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/admin/proposals/_proposal-tr/add_valuators_name.html.erb.deface +3 -3
- data/app/overrides/decidim/proposals/admin/proposals/show/add_photo_management.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/admin/proposals/show/add_send_email_btn.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/admin/proposals/show/add_valuators_form.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/admin/proposals/show/remove_photos.html.erb.deface +0 -1
- data/app/overrides/decidim/proposals/proposals/_edit_form_fields/replace_add_photos.html.erb.deface +37 -0
- data/app/overrides/decidim/proposals/proposals/_proposal_similar/add_distance_badge.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/proposals/_wizard_header/replace_title.html.erb.deface +9 -9
- data/app/overrides/decidim/proposals/proposals/edit/add_css.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/edit/replace_javascript.html.erb.deface +0 -1
- data/app/overrides/decidim/proposals/proposals/edit_draft/add_css.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/new/add_css.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/new/replace_javascript.html.erb.deface +0 -1
- data/app/overrides/decidim/reported_mailer/report/add_link_to_admin.html.erb.deface +1 -1
- data/app/overrides/layouts/decidim/_process_header_steps/always_show_new_proposals.html.erb.deface +1 -1
- data/app/packs/stylesheets/decidim/reporting_proposals/geocoding_addons.scss +8 -8
- data/app/packs/stylesheets/decidim/reporting_proposals/list_component_admin.scss +5 -5
- data/app/packs/stylesheets/decidim/reporting_proposals/manage_component_admin.scss +10 -10
- data/app/packs/stylesheets/decidim/reporting_proposals/proposals/add_proposal.scss +3 -3
- data/app/packs/stylesheets/decidim/reporting_proposals/user_camera_inputs.scss +5 -5
- data/app/permissions/decidim/templates/admin/extra_permissions.rb +37 -0
- data/app/queries/decidim/reporting_proposals/nearby_proposals.rb +1 -1
- data/app/validators/concerns/decidim/reporting_proposals/component_validator_override.rb +2 -2
- data/app/views/decidim/proposals/proposals/index.js.erb +1 -1
- data/app/views/decidim/reporting_proposals/proposals/_reporting_proposal_fields.html.erb +9 -21
- data/babel.config.json +25 -0
- data/config/locales/ca.yml +2 -0
- data/config/locales/de.yml +2 -0
- data/config/locales/en.yml +2 -0
- data/config/locales/es.yml +2 -0
- data/db/migrate/20230404103706_add_target_and_field_values_to_decidim_templates_templates.rb +2 -6
- data/decidim-reporting_proposals.gemspec +2 -1
- data/lib/decidim/reporting_proposals/component.rb +0 -9
- data/lib/decidim/reporting_proposals/engine.rb +27 -3
- data/lib/decidim/reporting_proposals/version.rb +3 -3
- data/package-lock.json +161 -142
- data/package.json +4 -163
- metadata +58 -49
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Templates
|
5
|
+
module Admin
|
6
|
+
class ExtraPermissions < Decidim::DefaultPermissions
|
7
|
+
# this should go to the standard templates/permissions class but to avoid hacking it we put it here
|
8
|
+
# to be removed when proposal templates is accepted into core
|
9
|
+
def permissions
|
10
|
+
return permission_action if permission_action.scope != :admin
|
11
|
+
return permission_action unless user
|
12
|
+
return permission_action if context[:current_organization] != user.organization
|
13
|
+
|
14
|
+
allow! if user_has_a_role? && (permission_action.subject == :template && permission_action.action == :read)
|
15
|
+
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def participatory_space
|
22
|
+
@participatory_space ||= context[:proposal].try(:participatory_space)
|
23
|
+
end
|
24
|
+
|
25
|
+
def user_roles
|
26
|
+
@user_roles ||= participatory_space.try(:user_roles)
|
27
|
+
end
|
28
|
+
|
29
|
+
def user_has_a_role?
|
30
|
+
return unless user_roles
|
31
|
+
|
32
|
+
user_roles.exists?(user: user)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Decidim
|
4
4
|
module ReportingProposals
|
5
5
|
# Class used to retrieve similar proposals.
|
6
|
-
class NearbyProposals <
|
6
|
+
class NearbyProposals < Decidim::Query
|
7
7
|
# Syntactic sugar to initialize the class and return the queried objects.
|
8
8
|
#
|
9
9
|
# components - Decidim::CurrentComponent
|
@@ -11,13 +11,13 @@ module Decidim
|
|
11
11
|
# over all the validators.
|
12
12
|
def validate_each(record, attribute, component)
|
13
13
|
unless component
|
14
|
-
record.errors
|
14
|
+
record.errors.add(attribute, :blank)
|
15
15
|
return
|
16
16
|
end
|
17
17
|
manifests = [options[:manifest].to_s]
|
18
18
|
manifests << "reporting_proposals" if manifests.first == "proposals"
|
19
19
|
|
20
|
-
record.errors
|
20
|
+
record.errors.add(attribute, :invalid) unless component.manifest_name.to_s.in?(manifests)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -8,7 +8,7 @@ $orderFilterInput.val('<%= order %>');
|
|
8
8
|
var $dropdownMenu = $('.dropdown.menu', $proposals);
|
9
9
|
$dropdownMenu.foundation();
|
10
10
|
|
11
|
-
var markerData = JSON.parse('<%= escape_javascript proposals_data_for_map(search.
|
11
|
+
var markerData = JSON.parse('<%= escape_javascript proposals_data_for_map(search.result.select(&:geocoded_and_valid?))
|
12
12
|
.to_json.html_safe %>');
|
13
13
|
|
14
14
|
var $map = $("#map");
|
@@ -12,8 +12,8 @@
|
|
12
12
|
<%= image_tag photo.thumbnail_url, class: "thumbnail", alt: photo.file.filename %>
|
13
13
|
<%= form.hidden_field :photos, multiple: true, value: photo.id, id: "photo-#{photo.id}" %>
|
14
14
|
<button class="close-button"
|
15
|
-
aria-label="<%= t("delete_image", scope: "decidim.
|
16
|
-
title="<%= t("delete_image", scope: "decidim.
|
15
|
+
aria-label="<%= t("delete_image", scope: "decidim.reporting_proposals.proposals.edit") %>"
|
16
|
+
title="<%= t("delete_image", scope: "decidim.reporting_proposals.proposals.edit") %>"
|
17
17
|
type="button"
|
18
18
|
data-close>
|
19
19
|
<span aria-hidden="true">×</span>
|
@@ -87,27 +87,15 @@
|
|
87
87
|
<% end %>
|
88
88
|
|
89
89
|
<% if component_settings.attachments_allowed? && !component_settings.only_photo_attachments? %>
|
90
|
-
|
90
|
+
<fieldset class="attachments_container gallery__container documents_container">
|
91
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">×</span>
|
104
|
-
</button>
|
105
|
-
</div>
|
106
|
-
<% end %>
|
107
|
-
<% end %>
|
108
|
-
|
109
92
|
<div class="row column">
|
110
|
-
<%= form.
|
93
|
+
<%= form.attachment :documents,
|
94
|
+
multiple: true,
|
95
|
+
label: t("decidim.proposals.proposals.edit.add_documents"),
|
96
|
+
button_label: t("decidim.proposals.proposals.edit.add_documents"),
|
97
|
+
button_edit_label: t("decidim.proposals.proposals.edit.edit_documents"),
|
98
|
+
help_i18n_scope: "decidim.forms.file_help.file" %>
|
111
99
|
</div>
|
112
100
|
</fieldset>
|
113
101
|
<% end %>
|
data/babel.config.json
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
{
|
2
|
+
"presets": [
|
3
|
+
[
|
4
|
+
"@babel/preset-env", {
|
5
|
+
"forceAllTransforms": true,
|
6
|
+
"useBuiltIns": "entry",
|
7
|
+
"corejs": 3,
|
8
|
+
"modules": false
|
9
|
+
}
|
10
|
+
],
|
11
|
+
["@babel/preset-react"]
|
12
|
+
],
|
13
|
+
"plugins": [
|
14
|
+
"@babel/plugin-transform-classes",
|
15
|
+
[
|
16
|
+
"@babel/plugin-transform-runtime",
|
17
|
+
{
|
18
|
+
"helpers": false,
|
19
|
+
"regenerator": true,
|
20
|
+
"corejs": false
|
21
|
+
}
|
22
|
+
],
|
23
|
+
["@babel/plugin-transform-regenerator", { "async": false }]
|
24
|
+
]
|
25
|
+
}
|
data/config/locales/ca.yml
CHANGED
@@ -414,6 +414,8 @@ ca:
|
|
414
414
|
away: "%{meters} de distància"
|
415
415
|
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.
|
416
416
|
title: Propostes properes
|
417
|
+
edit:
|
418
|
+
delete_image: Esborra la imatge
|
417
419
|
form:
|
418
420
|
image: Imatge/fotografia
|
419
421
|
templates:
|
data/config/locales/de.yml
CHANGED
@@ -414,6 +414,8 @@ de:
|
|
414
414
|
away: "%{meters} entfernt"
|
415
415
|
description: Dies sind Vorschläge, die in einem Radius von %{meters} zu dem von Ihnen erstellten sind. Allenfalls hat eine andere Person die die gleiche Situation gemeldet. In diesem Fall können Sie die bestehende Meldung Unterstützen, anstatt eine neue zu erstellen.
|
416
416
|
title: Bestehende Meldungen in der Umgebung
|
417
|
+
edit:
|
418
|
+
delete_image: Bild löschen
|
417
419
|
form:
|
418
420
|
image: Foto
|
419
421
|
templates:
|
data/config/locales/en.yml
CHANGED
data/config/locales/es.yml
CHANGED
@@ -414,6 +414,8 @@ es:
|
|
414
414
|
away: "A %{meters} de distancia"
|
415
415
|
description: Estas son propuestas que están en un radio de %{meters} a la que estás creando. En caso de que encuentres otra reportando la misma situación, puedes elegir apoyarla en lugar de crear una nueva.
|
416
416
|
title: Propuestas cercanas
|
417
|
+
edit:
|
418
|
+
delete_image: Eliminar imagen
|
417
419
|
form:
|
418
420
|
image: Imágen/foto
|
419
421
|
templates:
|
data/db/migrate/20230404103706_add_target_and_field_values_to_decidim_templates_templates.rb
CHANGED
@@ -2,11 +2,7 @@
|
|
2
2
|
|
3
3
|
class AddTargetAndFieldValuesToDecidimTemplatesTemplates < ActiveRecord::Migration[6.0]
|
4
4
|
def change
|
5
|
-
unless ActiveRecord::Base.connection.column_exists?(:decidim_templates_templates, :field_values)
|
6
|
-
|
7
|
-
end
|
8
|
-
unless ActiveRecord::Base.connection.column_exists?(:decidim_templates_templates, :target)
|
9
|
-
add_column :decidim_templates_templates, :target, :string
|
10
|
-
end
|
5
|
+
add_column :decidim_templates_templates, :field_values, :json, default: {} unless ActiveRecord::Base.connection.column_exists?(:decidim_templates_templates, :field_values)
|
6
|
+
add_column :decidim_templates_templates, :target, :string unless ActiveRecord::Base.connection.column_exists?(:decidim_templates_templates, :target)
|
11
7
|
end
|
12
8
|
end
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.description = "A module for Decidim that facilitates the creation of proposals related to geolocated issues in a city"
|
15
15
|
spec.license = "AGPL-3.0"
|
16
16
|
spec.homepage = "https://github.com/openpoke/decidim-module-reporting_proposals"
|
17
|
-
spec.required_ruby_version = ">=
|
17
|
+
spec.required_ruby_version = ">= 3.0"
|
18
18
|
|
19
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
20
|
f.match(%r{^(test|spec|features)/})
|
@@ -36,4 +36,5 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "decidim-elections", Decidim::ReportingProposals::COMPAT_DECIDIM_VERSION
|
37
37
|
spec.add_development_dependency "decidim-meetings", Decidim::ReportingProposals::COMPAT_DECIDIM_VERSION
|
38
38
|
spec.add_development_dependency "decidim-templates", Decidim::ReportingProposals::COMPAT_DECIDIM_VERSION
|
39
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
39
40
|
end
|
@@ -96,15 +96,6 @@ Decidim.register_component(:reporting_proposals) do |component|
|
|
96
96
|
settings.attribute :suggested_hashtags, type: :text, editor: false, required: false
|
97
97
|
end
|
98
98
|
|
99
|
-
component.register_resource(:reporting_proposal) do |resource|
|
100
|
-
resource.model_class_name = "Decidim::Proposals::Proposal"
|
101
|
-
resource.template = "decidim/proposals/proposals/linked_proposals"
|
102
|
-
resource.card = "decidim/proposals/proposal"
|
103
|
-
resource.reported_content_cell = "decidim/proposals/reported_content"
|
104
|
-
resource.actions = %w(endorse vote amend comment vote_comment)
|
105
|
-
resource.searchable = true
|
106
|
-
end
|
107
|
-
|
108
99
|
component.register_resource(:collaborative_draft) do |resource|
|
109
100
|
resource.model_class_name = "Decidim::Proposals::CollaborativeDraft"
|
110
101
|
resource.card = "decidim/proposals/collaborative_draft"
|
@@ -20,6 +20,7 @@ module Decidim
|
|
20
20
|
Decidim::ResourceHelper.include(Decidim::ReportingProposals::ResourceHelperOverride)
|
21
21
|
Decidim::Map::Autocomplete::Builder.include(Decidim::ReportingProposals::MapBuilderOverride)
|
22
22
|
Decidim::CreateReport.include(Decidim::ReportingProposals::CreateReportOverride)
|
23
|
+
Decidim::GalleryMethods.include(Decidim::ReportingProposals::GalleryMethodsOverride)
|
23
24
|
Decidim::Proposals::ProposalSerializer.include(Decidim::ReportingProposals::ProposalSerializerOverride)
|
24
25
|
Decidim::Proposals::ProposalsPickerCell.include(Decidim::ReportingProposals::ProposalsPickerCellOverride)
|
25
26
|
Decidim::Proposals::PublishProposal.include(Decidim::Proposals::PublishProposalOverride)
|
@@ -48,10 +49,33 @@ module Decidim
|
|
48
49
|
|
49
50
|
# port of https://github.com/openpoke/decidim/pull/31,23,29,24,43
|
50
51
|
Decidim::ReportedMailer.include(Decidim::ReportedMailerOverride)
|
51
|
-
|
52
|
+
|
53
|
+
# since version 0.27 Decidim uses its own version of attribute validation (used to be Rectify::Forms)
|
54
|
+
# To patch the ResourceManifest directly does not work now as the class is initialized by the proposals module on requiring the file component.rb
|
55
|
+
# So we remove the manifest and create it again after patching the class ResourceManifest
|
52
56
|
Decidim::ResourceManifest.include(Decidim::ResourceManifestOverride)
|
53
|
-
Decidim
|
54
|
-
Decidim.
|
57
|
+
Decidim.resource_manifests.delete(Decidim.find_resource_manifest(:proposal))
|
58
|
+
component = Decidim.find_component_manifest(:proposals)
|
59
|
+
component.register_resource(:proposal) do |resource|
|
60
|
+
resource.model_class_name = "Decidim::Proposals::Proposal"
|
61
|
+
resource.template = "decidim/proposals/proposals/linked_proposals"
|
62
|
+
resource.card = "decidim/proposals/proposal"
|
63
|
+
resource.reported_content_cell = "decidim/proposals/reported_content"
|
64
|
+
resource.actions = %w(endorse vote amend comment vote_comment)
|
65
|
+
resource.searchable = true
|
66
|
+
resource.admin_route_name = "proposal"
|
67
|
+
end
|
68
|
+
component = Decidim.find_component_manifest(:reporting_proposals)
|
69
|
+
component.register_resource(:reporting_proposal) do |resource|
|
70
|
+
resource.model_class_name = "Decidim::Proposals::Proposal"
|
71
|
+
resource.template = "decidim/proposals/proposals/linked_proposals"
|
72
|
+
resource.card = "decidim/proposals/proposal"
|
73
|
+
resource.reported_content_cell = "decidim/proposals/reported_content"
|
74
|
+
resource.actions = %w(endorse vote amend comment vote_comment)
|
75
|
+
resource.searchable = true
|
76
|
+
resource.admin_route_name = "proposal"
|
77
|
+
end
|
78
|
+
Decidim::ResourceLocatorPresenter.include(Decidim::ResourceLocatorPresenterOverride)
|
55
79
|
Decidim::Proposals::PublishProposalEvent.include(Decidim::Proposals::PublishProposalEventOverride)
|
56
80
|
Decidim::Proposals::Admin::AssignProposalsToValuator.include(Decidim::Proposals::Admin::AssignProposalsToValuatorOverride)
|
57
81
|
Decidim::Admin::HideResource.include(Decidim::Admin::HideResourceOverride)
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module ReportingProposals
|
5
|
-
VERSION = "0.
|
6
|
-
DECIDIM_VERSION = "0.
|
5
|
+
VERSION = "0.5.1"
|
6
|
+
DECIDIM_VERSION = "0.27.4"
|
7
7
|
|
8
|
-
COMPAT_DECIDIM_VERSION = [">= 0.
|
8
|
+
COMPAT_DECIDIM_VERSION = [">= 0.27.0", "< 0.28"].freeze
|
9
9
|
end
|
10
10
|
end
|