decidim-reporting_proposals 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +3 -3
- data/.github/workflows/test_integration.yml +17 -3
- data/.github/workflows/test_unit.yml +18 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +1 -3
- data/.rubocop_ruby.yml +1 -2
- data/.ruby-version +1 -1
- data/Gemfile +6 -5
- data/Gemfile.lock +382 -400
- data/README.md +14 -9
- data/Rakefile +0 -2
- data/app/cells/concerns/decidim/reporting_proposals/linked_resources_for_cell_override.rb +23 -0
- data/app/cells/decidim/reporting_proposals/edit_note_modal/show.erb +22 -19
- data/app/commands/concerns/decidim/{proposals → reporting_proposals}/admin/answer_proposal_override.rb +2 -2
- data/app/commands/concerns/decidim/{proposals → reporting_proposals}/admin/assign_proposals_to_valuator_override.rb +1 -1
- data/app/commands/concerns/decidim/reporting_proposals/admin/update_category_override.rb +1 -1
- data/app/commands/concerns/decidim/reporting_proposals/admin/update_proposal_answer_template_override.rb +26 -0
- data/app/commands/concerns/decidim/{proposals → reporting_proposals}/publish_proposal_override.rb +2 -2
- data/app/commands/decidim/reporting_proposals/create_reporting_proposal.rb +1 -1
- data/app/commands/decidim/reporting_proposals/update_reporting_proposal.rb +38 -0
- data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answer_templates_controller_override.rb +31 -0
- data/app/controllers/concerns/decidim/reporting_proposals/admin/proposal_answers_controller_override.rb +1 -1
- data/app/controllers/concerns/decidim/reporting_proposals/admin/proposals_controller_override.rb +2 -2
- data/app/controllers/concerns/decidim/{proposals → reporting_proposals}/admin/valuation_assignments_controller_override.rb +5 -5
- data/app/controllers/concerns/decidim/reporting_proposals/needs_proposal_extra_validations_snippets.rb +0 -1
- data/app/controllers/concerns/decidim/reporting_proposals/proposals_controller_override.rb +39 -0
- data/app/controllers/decidim/reporting_proposals/admin/proposals_controller.rb +4 -4
- data/app/controllers/decidim/reporting_proposals/geolocation_controller.rb +1 -1
- data/app/events/concerns/decidim/{proposals → reporting_proposals}/publish_proposal_event_override.rb +1 -1
- data/app/forms/concerns/decidim/reporting_proposals/form_builder_override.rb +9 -16
- data/app/forms/concerns/decidim/reporting_proposals/map_builder_override.rb +6 -5
- data/app/forms/decidim/reporting_proposals/admin/proposal_photo_form.rb +1 -5
- data/app/forms/decidim/reporting_proposals/proposal_form.rb +2 -0
- data/app/helpers/concerns/decidim/reporting_proposals/proposal_wizard_helper_override.rb +7 -30
- data/app/helpers/concerns/decidim/reporting_proposals/resource_helper_override.rb +1 -1
- data/app/mailers/concerns/decidim/reporting_proposals/admin/hidden_resource_mailer.rb +30 -0
- data/app/mailers/concerns/decidim/{proposals → reporting_proposals}/admin/notification_answer_proposal_mailer.rb +1 -1
- data/app/mailers/concerns/decidim/{proposals → reporting_proposals}/admin/proposals_valuator_mailer.rb +2 -2
- data/app/mailers/concerns/decidim/{proposals → reporting_proposals}/notification_publish_proposal_mailer.rb +1 -1
- data/app/mailers/concerns/decidim/reporting_proposals/reported_mailer_override.rb +18 -0
- data/app/overrides/decidim/proposals/admin/proposals/show/add_address.html.erb.deface +1 -1
- 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 +16 -10
- data/app/overrides/decidim/proposals/proposals/_wizard_header/add_description.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/_wizard_header/replace_title.html.erb.deface +5 -6
- data/app/overrides/decidim/proposals/proposals/compare/add_css.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/compare/add_distance_badge.html.erb.deface +10 -0
- data/app/overrides/decidim/proposals/proposals/edit/add_css.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/proposals/edit/replace_javascript.html.erb.deface +2 -2
- data/app/overrides/decidim/proposals/proposals/edit_draft/replace_javascript.html.erb.deface +3 -3
- data/app/overrides/decidim/proposals/proposals/edit_draft/replace_partial_edit_form_fields.html.erb.deface +6 -1
- data/app/overrides/decidim/proposals/proposals/new/add_css.html.erb.deface +2 -2
- data/app/overrides/decidim/proposals/proposals/new/remove_body.html.erb.deface +1 -0
- data/app/overrides/decidim/proposals/proposals/new/remove_title.html.erb.deface +1 -1
- data/app/overrides/decidim/proposals/proposals/new/replace_javascript.html.erb.deface +2 -2
- data/app/overrides/decidim/proposals/proposals/preview/add_css.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/show/add_additional_button.html.erb.deface +1 -1
- data/app/packs/entrypoints/decidim_reporting_proposals.js +1 -0
- data/app/packs/src/decidim/reporting_proposals/proposal_extra_validations.js +12 -13
- data/app/packs/src/decidim/reporting_proposals/proposals/add_proposal.js +45 -41
- data/app/packs/src/decidim/reporting_proposals/reverse_geocoding.js +0 -2
- data/app/packs/src/decidim/reporting_proposals/user_camera_inputs.js +7 -7
- data/app/packs/stylesheets/decidim/reporting_proposals/geocoding_addons.scss +9 -26
- data/app/packs/stylesheets/decidim/reporting_proposals/list_component_admin.scss +6 -6
- data/app/packs/stylesheets/decidim/reporting_proposals/manage_component_admin.scss +44 -30
- data/app/packs/stylesheets/decidim/reporting_proposals/proposals/add_proposal.scss +9 -4
- data/app/packs/stylesheets/decidim/reporting_proposals/user_camera_inputs.scss +21 -13
- data/app/permissions/decidim/templates/admin/permissions.rb +51 -0
- data/app/presenters/concerns/decidim/reporting_proposals/resource_locator_presenter_override.rb +40 -0
- data/app/resources/concerns/decidim/reporting_proposals/resource_manifest_override.rb +16 -0
- data/app/serializers/decidim/reporting_proposals/proposal_serializer_override.rb +4 -4
- data/app/views/decidim/proposals/admin/proposal_notes/_editing_note.html.erb +3 -3
- data/app/views/decidim/proposals/admin/proposal_notes/_proposal_notes_body.html.erb +1 -1
- data/app/views/decidim/proposals/admin/proposals/_address.html.erb +11 -10
- data/app/views/decidim/proposals/admin/proposals/_send_email_button.html.erb +6 -4
- data/app/views/decidim/proposals/proposals/_additional_button.html.erb +1 -1
- data/app/views/decidim/proposals/proposals/index.js.erb +0 -2
- data/app/views/decidim/reporting_proposals/admin/proposals/_photo_form.html.erb +2 -3
- data/app/views/decidim/reporting_proposals/admin/proposals/_photo_gallery.html.erb +3 -4
- data/app/views/decidim/reporting_proposals/admin/proposals/_photos.html.erb +15 -11
- data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_hide.html.erb +7 -11
- data/app/views/decidim/reporting_proposals/admin/proposals/_proposal_td_title.html.erb +2 -2
- data/app/views/decidim/reporting_proposals/admin/proposals_valuator_mailer/notify_proposals_valuator.html.erb +17 -0
- data/app/views/decidim/reporting_proposals/proposals/_additional_button_for_show.html.erb +5 -2
- data/app/views/decidim/reporting_proposals/proposals/_camera_button.html.erb +26 -0
- data/app/views/decidim/reporting_proposals/proposals/_new_proposal_fields.html.erb +7 -5
- data/app/views/decidim/reporting_proposals/proposals/_reporting_proposal_fields.html.erb +61 -86
- data/app/views/decidim/reporting_proposals/proposals/_user_group.html.erb +1 -1
- data/bin/dev +5 -0
- data/bin/{webpack-dev-server → shakapacker} +1 -1
- data/bin/shakapacker-dev-server +6 -0
- data/config/assets.rb +1 -3
- data/config/locales/ca.yml +0 -2
- data/config/locales/en.yml +22 -48
- data/decidim-reporting_proposals.gemspec +1 -2
- data/lib/decidim/reporting_proposals/admin_engine.rb +4 -0
- data/lib/decidim/reporting_proposals/component.rb +26 -26
- data/lib/decidim/reporting_proposals/engine.rb +18 -12
- data/lib/decidim/reporting_proposals/test/factories.rb +2 -12
- data/lib/decidim/reporting_proposals/version.rb +3 -4
- data/lib/tasks/reporting_proposals_upgrade.rake +5 -0
- data/package-lock.json +4072 -5101
- data/package.json +12 -7
- metadata +73 -105
- data/app/commands/concerns/decidim/admin/hide_resource_override.rb +0 -34
- data/app/commands/concerns/decidim/templates/admin/copy_questionnaire_template_override.rb +0 -32
- data/app/commands/concerns/decidim/templates/admin/create_questionnaire_template_override.rb +0 -32
- data/app/commands/decidim/templates/admin/copy_proposal_answer_template.rb +0 -35
- data/app/commands/decidim/templates/admin/create_proposal_answer_template.rb +0 -48
- data/app/commands/decidim/templates/admin/update_proposal_answer_template.rb +0 -52
- data/app/controllers/concerns/decidim/templates/admin/application_controller_override.rb +0 -20
- data/app/controllers/decidim/templates/admin/proposal_answer_templates_controller.rb +0 -183
- data/app/forms/decidim/templates/admin/proposal_answer_template_form.rb +0 -21
- data/app/mailers/concerns/decidim/admin/hidden_resource_mailer.rb +0 -28
- data/app/mailers/concerns/decidim/reported_mailer_override.rb +0 -16
- data/app/overrides/decidim/proposals/admin/proposal_answers/_form/add_template_chooser.html.erb.deface +0 -5
- data/app/overrides/decidim/proposals/proposals/_edit_form_fields/replace_add_photos.html.erb.deface +0 -37
- data/app/overrides/decidim/proposals/proposals/_proposal_similar/add_distance_badge.html.erb.deface +0 -5
- data/app/overrides/decidim/proposals/proposals/edit_draft/add_css.html.erb.deface +0 -5
- data/app/overrides/decidim/proposals/proposals/edit_draft/add_user_group.html.erb.deface +0 -3
- data/app/packs/entrypoints/decidim_reporting_proposals_js_validations.js +0 -1
- data/app/packs/entrypoints/decidim_templates_admin.js +0 -1
- data/app/packs/src/decidim/templates/admin/proposal_answer_template_chooser.js +0 -27
- data/app/permissions/decidim/templates/admin/extra_permissions.rb +0 -37
- data/app/presenters/concerns/decidim/resource_locator_presenter_override.rb +0 -38
- data/app/resources/concerns/decidim/resource_manifest_override.rb +0 -14
- data/app/views/decidim/proposals/admin/proposals_valuator_mailer/notify_proposals_valuator.html.erb +0 -17
- data/app/views/decidim/templates/admin/proposal_answer_templates/_form.html.erb +0 -34
- data/app/views/decidim/templates/admin/proposal_answer_templates/_template_chooser.html.erb +0 -16
- data/app/views/decidim/templates/admin/proposal_answer_templates/edit.html.erb +0 -3
- data/app/views/decidim/templates/admin/proposal_answer_templates/index.html.erb +0 -52
- data/app/views/decidim/templates/admin/proposal_answer_templates/new.html.erb +0 -6
- data/db/migrate/20230404103706_add_target_and_field_values_to_decidim_templates_templates.rb +0 -8
- data/db/migrate/20230404104741_migrate_templatable.rb +0 -13
- /data/app/views/decidim/{admin → reporting_proposals/admin}/hidden_resource_mailer/notify_mail.html.erb +0 -0
- /data/app/views/decidim/{proposals → reporting_proposals}/admin/notification_answer_proposal_mailer/notify_proposal_author.html.erb +0 -0
- /data/app/views/decidim/{proposals → reporting_proposals}/notification_publish_proposal_mailer/notify_proposal_author.html.erb +0 -0
@@ -1,62 +1,76 @@
|
|
1
1
|
.global-settings,
|
2
|
-
.step-settings{
|
3
|
-
.readonly_container{
|
2
|
+
.step-settings {
|
3
|
+
.readonly_container {
|
4
4
|
display: none;
|
5
5
|
}
|
6
6
|
}
|
7
7
|
|
8
|
-
.proposal-photo.gallery__item{
|
8
|
+
.proposal-photo.gallery__item {
|
9
9
|
position: relative;
|
10
10
|
margin: 0 0 1rem;
|
11
|
-
border: 1px solid rgba(0, 0, 0, .2);
|
11
|
+
border: 1px solid rgba(0, 0, 0, 0.2);
|
12
12
|
border-radius: 0;
|
13
13
|
background-color: white;
|
14
14
|
color: #202734;
|
15
15
|
}
|
16
16
|
|
17
|
-
.proposal-photo .thumbnail{
|
17
|
+
.proposal-photo .thumbnail {
|
18
18
|
margin-bottom: 0;
|
19
19
|
}
|
20
20
|
|
21
|
-
.delete-proposal__button{
|
21
|
+
.delete-proposal__button {
|
22
22
|
position: absolute;
|
23
|
-
right:
|
23
|
+
right: 7px;
|
24
24
|
top: 7px;
|
25
|
-
width:
|
26
|
-
height:
|
27
|
-
background: rgba(var(--
|
28
|
-
color: #fff;
|
25
|
+
width: 1.3rem;
|
26
|
+
height: 1.3rem;
|
27
|
+
background-color: rgba(var(--tertiary-rgb) / 0.8);
|
29
28
|
border-radius: 50%;
|
30
29
|
text-align: center;
|
30
|
+
display: flex;
|
31
|
+
justify-content: center;
|
32
|
+
align-items: center;
|
33
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
34
|
+
cursor: pointer;
|
35
|
+
transition: background-color 0.3s ease;
|
36
|
+
|
37
|
+
svg {
|
38
|
+
fill: #fff;
|
39
|
+
stroke: #fff;
|
40
|
+
stroke-width: 2px;
|
41
|
+
}
|
31
42
|
}
|
32
43
|
|
33
|
-
|
44
|
+
.delete-proposal__button:hover {
|
45
|
+
background: rgba(var(--tertiary-rgb) / 1);
|
46
|
+
}
|
34
47
|
|
35
|
-
|
36
|
-
.
|
37
|
-
display: flex;
|
38
|
-
padding: 1rem;
|
48
|
+
.delete-proposal__button:active {
|
49
|
+
transform: scale(0.95);
|
39
50
|
}
|
40
51
|
|
41
|
-
|
42
|
-
|
52
|
+
#proposal_photo_add_photos {
|
53
|
+
display: block;
|
54
|
+
margin-top: 1rem;
|
43
55
|
}
|
44
56
|
|
45
|
-
.
|
57
|
+
.admin-address {
|
46
58
|
display: flex;
|
47
|
-
|
59
|
+
gap: 1rem;
|
60
|
+
margin-top: 1rem;
|
61
|
+
|
62
|
+
.component__show-address {
|
63
|
+
max-height: 3rem;
|
64
|
+
}
|
48
65
|
}
|
49
66
|
|
50
|
-
.
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
fill: var(--primary);
|
67
|
+
.component__show_notes-grid {
|
68
|
+
a {
|
69
|
+
text-decoration: underline;
|
70
|
+
}
|
55
71
|
}
|
56
72
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
padding-left: .5em;
|
61
|
-
align-self: center;
|
73
|
+
//Variables
|
74
|
+
.layout-content table svg.hide-button {
|
75
|
+
fill: var(--secondary);
|
62
76
|
}
|
@@ -1,12 +1,17 @@
|
|
1
|
-
.has_no_address{
|
1
|
+
.has_no_address {
|
2
2
|
text-align: right;
|
3
3
|
}
|
4
4
|
|
5
|
-
.editor{
|
6
|
-
.form-error{
|
5
|
+
.editor {
|
6
|
+
.form-error {
|
7
7
|
margin: -1rem 0 1rem;
|
8
|
-
font-size: .75rem;
|
8
|
+
font-size: 0.75rem;
|
9
9
|
font-weight: 600;
|
10
10
|
color: var(--alert);
|
11
11
|
}
|
12
12
|
}
|
13
|
+
|
14
|
+
/* reporting proposals have only 3 steps */
|
15
|
+
.wizard-steps > * {
|
16
|
+
width: 33%;
|
17
|
+
}
|
@@ -1,19 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
max-height: 3rem;
|
4
|
-
}
|
1
|
+
.camera-container {
|
2
|
+
@apply md:flex md:justify-between md:items-center;
|
5
3
|
|
6
|
-
.
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
button.user-device-camera {
|
5
|
+
@apply md:flex-none whitespace-nowrap w-full md:w-auto p-2 mt-2 text-lg;
|
6
|
+
|
7
|
+
svg {
|
8
|
+
margin-right: 0.2rem;
|
9
|
+
}
|
10
|
+
}
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
display: block;
|
12
|
+
.input-group-button {
|
13
|
+
@apply w-full md:w-auto;
|
14
14
|
}
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
label {
|
17
|
+
@apply truncate mr-2;
|
18
18
|
}
|
19
|
+
|
20
|
+
#proposal_add_photos {
|
21
|
+
@apply mt-2 block;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
.has_no_image {
|
26
|
+
@apply md:text-right -mt-1;
|
19
27
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Templates
|
5
|
+
module Admin
|
6
|
+
# this is here due a bug in Decidim 0.28 when they introduced proposal answer templates
|
7
|
+
# they didn't take into account that valuators can answer proposals
|
8
|
+
# This can be removed after https://github.com/decidim/decidim/pull/12765 is merge & backported
|
9
|
+
class Permissions < Decidim::DefaultPermissions
|
10
|
+
def permissions
|
11
|
+
return permission_action if permission_action.scope != :admin
|
12
|
+
return permission_action unless user
|
13
|
+
return permission_action if context[:current_organization] != user.organization
|
14
|
+
|
15
|
+
if user_has_a_role? && (permission_action.subject == :template && permission_action.action == :read)
|
16
|
+
allow!
|
17
|
+
else
|
18
|
+
return permission_action unless user.admin?
|
19
|
+
|
20
|
+
case permission_action.subject
|
21
|
+
when :template
|
22
|
+
allow! if [:read, :create, :update, :destroy, :copy].include? permission_action.action
|
23
|
+
when :templates
|
24
|
+
allow! if permission_action.action == :index
|
25
|
+
when :questionnaire
|
26
|
+
allow!
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
permission_action
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def participatory_space
|
36
|
+
@participatory_space ||= context[:proposal].try(:participatory_space)
|
37
|
+
end
|
38
|
+
|
39
|
+
def user_roles
|
40
|
+
@user_roles ||= participatory_space.try(:user_roles)
|
41
|
+
end
|
42
|
+
|
43
|
+
def user_has_a_role?
|
44
|
+
return unless user_roles
|
45
|
+
|
46
|
+
user_roles.exists?(user:)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/app/presenters/concerns/decidim/reporting_proposals/resource_locator_presenter_override.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ReportingProposals
|
5
|
+
module ResourceLocatorPresenterOverride
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
# Generates and admin url only if the manifest has the property :admin_route_name defined
|
10
|
+
# this allows to distinct from resources that can be administrated from those that are not
|
11
|
+
def admin_url(options = {})
|
12
|
+
admin_member_route("url", options.merge(host: root_resource.organization.host))
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def admin_member_route(route_type, options)
|
18
|
+
return if manifest_for(target).admin_route_name.blank?
|
19
|
+
|
20
|
+
options.merge!(options_for_polymorphic)
|
21
|
+
admin_route_proxy.send("#{admin_member_route_name}_#{route_type}", target, options)
|
22
|
+
end
|
23
|
+
|
24
|
+
def admin_member_route_name
|
25
|
+
if polymorphic?
|
26
|
+
admin_polymorphic_member_route_name
|
27
|
+
else
|
28
|
+
manifest_for(target).admin_route_name
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def admin_polymorphic_member_route_name
|
33
|
+
return unless polymorphic?
|
34
|
+
|
35
|
+
resource.map { |record| manifest_for(record).admin_route_name }.join("_")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ReportingProposals
|
5
|
+
module ResourceManifestOverride
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
# The name of the named Rails route to create the url to admin the resource
|
10
|
+
# If it is not defined, the resource will be considered non-administrable
|
11
|
+
# and no link will be generated in some places
|
12
|
+
attribute :admin_route_name, String
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -33,19 +33,19 @@ module Decidim
|
|
33
33
|
state: proposal.state.to_s,
|
34
34
|
reference: proposal.reference,
|
35
35
|
answer: ensure_translatable(proposal.answer),
|
36
|
-
answer_time
|
36
|
+
answer_time:,
|
37
37
|
supports: proposal.proposal_votes_count,
|
38
38
|
endorsements: {
|
39
39
|
total_count: proposal.endorsements.size,
|
40
|
-
user_endorsements:
|
40
|
+
user_endorsements:
|
41
41
|
},
|
42
42
|
comments: proposal.comments_count,
|
43
43
|
attachments: proposal.attachments.size,
|
44
44
|
followers: proposal.follows.size,
|
45
45
|
published_at: proposal.published_at,
|
46
|
-
url
|
46
|
+
url:,
|
47
47
|
meeting_urls: meetings,
|
48
|
-
related_proposals
|
48
|
+
related_proposals:,
|
49
49
|
is_amend: proposal.emendation?,
|
50
50
|
original_proposal: {
|
51
51
|
title: proposal&.amendable&.title,
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<% if note.author == current_user %>
|
2
2
|
<%= cell("decidim/reporting_proposals/edit_note_modal", note, modal_id: "editNoteModal#{note.id}", note: note, proposal: proposal) %>
|
3
3
|
<button type="button" class="link-alt m-xs"
|
4
|
-
data-open="<%=
|
4
|
+
data-dialog-open="editNoteModal<%= note.id %>"
|
5
5
|
title="<%= t("modal.title", scope: "decidim.reporting_proposals.admin.proposal_notes") %>"
|
6
|
-
aria-controls="<%=
|
6
|
+
aria-controls="editNoteModal<%= note.id %>"
|
7
7
|
aria-haspopup="true"
|
8
8
|
tabindex="0"
|
9
9
|
style="color:#97a2b2; cursor: pointer">
|
10
|
-
<%= icon "pencil", aria_hidden: true, class: "action-icon--preview", role: "img", "aria-hidden": true %>
|
10
|
+
<%= icon "pencil-line", aria_hidden: true, class: "action-icon--preview", role: "img", "aria-hidden": true %>
|
11
11
|
</button>
|
12
12
|
<% end %>
|
13
13
|
<% if note.created_at != note.updated_at %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% note.body.split("\n").each_with_index do |paragraph, index| %>
|
2
|
-
<%= Decidim::ContentRenderers::LinkRenderer.new(paragraph.
|
2
|
+
<%= Decidim::ContentRenderers::LinkRenderer.new(paragraph).render("data-external-link"=> false).html_safe %>
|
3
3
|
<% unless index == note.body.split("\n").size - 1 %>
|
4
4
|
<br>
|
5
5
|
<% end %>
|
@@ -1,13 +1,14 @@
|
|
1
1
|
<% if component_settings.geocoding_enabled? %>
|
2
|
-
|
3
|
-
|
4
|
-
<div class="
|
5
|
-
<
|
6
|
-
|
7
|
-
</div>
|
8
|
-
<div class="address__details">
|
9
|
-
<%= render partial: "decidim/shared/address_details", locals: { geolocalizable: proposal } %>
|
10
|
-
</div>
|
2
|
+
</div><!-- close previous .row.column -->
|
3
|
+
<div class="row column admin-address">
|
4
|
+
<div class="left">
|
5
|
+
<span class="component__show-title"><%= t ".geolocated_at" %>:</span>
|
6
|
+
<%= cell("decidim/address", proposal) %>
|
11
7
|
</div>
|
12
|
-
|
8
|
+
<div class="component__show-address">
|
9
|
+
<% if Decidim::Map.available?(:static) || Decidim::Map.available?(:dynamic) %>
|
10
|
+
<%= static_map_link(proposal) %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
<%# Skip close here as is in the overriden view %>
|
13
14
|
<% end %>
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
<% if presented_author.respond_to?(:email) %>
|
2
|
+
<p>
|
3
|
+
<%= link_to t(".send_mail"), "mailto:#{presented_author.email}?subject=#{translated_attribute(proposal.title)}&body=#{resource_locator(proposal).url}",
|
4
|
+
class: "help-text", target: "_blank" %>
|
5
|
+
</p>
|
6
|
+
<% end %>
|
@@ -2,5 +2,5 @@
|
|
2
2
|
current_component.settings.additional_button_text.present? &&
|
3
3
|
current_component.settings.additional_button_link.present? %>
|
4
4
|
<%= link_to translated_attribute(component_settings.additional_button_text),
|
5
|
-
component_settings.additional_button_link, class: "
|
5
|
+
component_settings.additional_button_link, class: "button button__sm button__transparent-secondary" %>
|
6
6
|
<% end %>
|
@@ -1,8 +1,6 @@
|
|
1
1
|
var $proposals = $('#proposals');
|
2
|
-
var $proposalsCount = $('#proposals-count');
|
3
2
|
var $orderFilterInput = $('.order_filter');
|
4
3
|
$proposals.html('<%= j(render partial: "proposals").strip.html_safe %>');
|
5
|
-
$proposalsCount.html('<%= j(render partial: "count").strip.html_safe %>');
|
6
4
|
$orderFilterInput.val('<%= order %>');
|
7
5
|
|
8
6
|
var $dropdownMenu = $('.dropdown.menu', $proposals);
|
@@ -3,11 +3,10 @@
|
|
3
3
|
html: { multipart: true, class: "form edit_proposal proposal_form_admin" }) do |f| %>
|
4
4
|
<div class="row column gallery__container">
|
5
5
|
<fieldset>
|
6
|
-
<legend><%= t(".gallery_legend") %></legend>
|
7
6
|
<% if proposal.photos.any? %>
|
8
7
|
<div class="gallery row">
|
9
8
|
<% proposal.photos.each do |photo| %>
|
10
|
-
<div class="
|
9
|
+
<div class="gallery__item">
|
11
10
|
<%= f.hidden_field :photos, multiple: true, value: photo.id, id: "photo-#{photo.id}" %>
|
12
11
|
</div>
|
13
12
|
<% end %>
|
@@ -17,7 +16,7 @@
|
|
17
16
|
<%= f.file_field :add_photos, multiple: true %>
|
18
17
|
</div>
|
19
18
|
<div class="actions">
|
20
|
-
<%= f.submit t(".action") %>
|
19
|
+
<%= f.submit t(".action"), class: "button button__sm button__secondary" %>
|
21
20
|
</div>
|
22
21
|
</fieldset>
|
23
22
|
</div>
|
@@ -1,17 +1,16 @@
|
|
1
1
|
<% if proposal.photos.any? %>
|
2
2
|
<div class="row column">
|
3
|
-
<
|
4
|
-
<div id="photos" class="gallery row flex--fsc proposal-<%= proposal.id %>">
|
3
|
+
<div id="photos" class="gallery grid grid-cols-1 md:grid-cols-4 gap-6 proposal-<%= proposal.id %>">
|
5
4
|
<% proposal.photos.each do |photo| %>
|
6
5
|
<div class="proposal-photo gallery__item" id="photo-<%= photo.id %>">
|
7
6
|
<%= link_to photo.big_url, target: "_blank", rel: "noopener" do %>
|
8
7
|
<%= image_tag photo.thumbnail_url, class: "thumbnail", alt: strip_tags(translated_attribute(photo.title)) %>
|
9
8
|
<% if admin_allowed_to? :edit_photos, :proposals, extra_context = { proposal: proposal }, chain = [::Decidim::ReportingProposals::Admin::Permissions] %>
|
10
|
-
<%= icon_link_to "
|
9
|
+
<%= icon_link_to "close-line",
|
11
10
|
decidim_admin_reporting_proposals.remove_photo_path(id: proposal.id, photo_id: photo.id),
|
12
11
|
t(".delete_image"),
|
13
12
|
method: :delete,
|
14
|
-
class: "delete-proposal__button"
|
13
|
+
class: "delete-proposal__button" %>
|
15
14
|
<% end %>
|
16
15
|
<% end %>
|
17
16
|
</div>
|
@@ -1,14 +1,18 @@
|
|
1
|
-
<% if
|
2
|
-
<div class="card">
|
3
|
-
<div class="
|
4
|
-
<
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
<% if component_settings.attachments_allowed? %>
|
2
|
+
<div class="card-section">
|
3
|
+
<div class="component__show_photos" data-component="accordion" id="accordion-photos">
|
4
|
+
<button class="card-divider-button" data-controls="panel-photos" type="button">
|
5
|
+
<%= icon "arrow-right-s-line" %>
|
6
|
+
<h2 class="card-title">
|
7
|
+
<%= t(".title") %>
|
8
|
+
</h2>
|
9
|
+
</button>
|
10
|
+
<div id="panel-photos">
|
11
|
+
<%= render partial: "decidim/reporting_proposals/admin/proposals/photo_gallery" %>
|
12
|
+
<% if admin_allowed_to? :edit_photos, :proposals, extra_context = { proposal: proposal }, chain = [::Decidim::ReportingProposals::Admin::Permissions] %>
|
13
|
+
<%= render partial: "decidim/reporting_proposals/admin/proposals/photo_form" %>
|
14
|
+
<% end %>
|
15
|
+
</div>
|
12
16
|
</div>
|
13
17
|
</div>
|
14
18
|
<% end %>
|
@@ -1,20 +1,16 @@
|
|
1
1
|
<% if admin_allowed_to?(:hide_proposal, :proposals, extra_context = { proposal: proposal }, chain = [::Decidim::ReportingProposals::Admin::Permissions]) %>
|
2
2
|
<% if proposal.reported? %>
|
3
|
-
<%= icon_link_to "
|
3
|
+
<%= icon_link_to "delete-bin-line", decidim_admin_reporting_proposals.hide_proposal_path(id: proposal),
|
4
4
|
t("actions.hide", scope: "decidim.moderations"), method: :put, class: "action-icon" %>
|
5
5
|
<% else %>
|
6
6
|
<%= cell("decidim/flag_modal", proposal, modal_id: "flagModal#{proposal.id}") %>
|
7
|
-
<button type="button" class="
|
8
|
-
data-open="<%=
|
9
|
-
title="<%= t("report", scope: "decidim.proposals.proposals.show") %>"
|
10
|
-
aria-controls="<%=
|
7
|
+
<button type="button" class="action-icon icon--small action-icon--show-proposal"
|
8
|
+
data-dialog-open="flagModal<%= proposal.id %>"
|
9
|
+
title="<%= t("report", scope: "decidim.proposals.admin.proposals.show") %>"
|
10
|
+
aria-controls="flagModal<%= proposal.id %>"
|
11
11
|
aria-haspopup="true"
|
12
|
-
tabindex="0"
|
13
|
-
|
14
|
-
<%= icon "flag", aria_hidden: true, class: "action-icon--preview", role: "img", "aria-hidden": true %>
|
15
|
-
<span class="show-for-sr">
|
16
|
-
<%= t("report", scope: "decidim.proposals.proposals.show") %>
|
17
|
-
</span>
|
12
|
+
tabindex="0">
|
13
|
+
<%= icon "flag-line", aria_hidden: true, class: "hide-button icon--small action-icon--show-proposal", role: "img", "aria-hidden": true %>
|
18
14
|
</button>
|
19
15
|
<% end %>
|
20
16
|
<% end %>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<div class="table__title-block">
|
2
2
|
<span class="table__title-icon">
|
3
3
|
<% if unanswered_proposals_overdue?(proposal) || evaluating_proposals_overdue?(proposal) %>
|
4
|
-
<%= icon "
|
4
|
+
<%= icon "timer-line", class: "text-alert" %>
|
5
5
|
<% elsif grace_period_unanswered?(proposal) || grace_period_evaluating?(proposal) %>
|
6
|
-
<%= icon "timer", class: "text-warning" %>
|
6
|
+
<%= icon "timer-line", class: "text-warning" %>
|
7
7
|
<% end %>
|
8
8
|
</span>
|
9
9
|
<div class="table__list-title">
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<p class="email-greeting"><%= t("greeting", scope: "decidim.reporting_proposals.admin.proposals_valuator_mailer.notify_proposals_valuator", name: @valuator_user.name) %></p>
|
2
|
+
|
3
|
+
<p class="email-instructions"><%= t("email_body", scope: "decidim.reporting_proposals.admin.proposals_valuator_mailer.notify_proposals_valuator") %></p>
|
4
|
+
|
5
|
+
<p class="email-instructions">
|
6
|
+
<ul>
|
7
|
+
<% @proposals.each do |proposal| %>
|
8
|
+
<li class="mb-sm">
|
9
|
+
<span><%= translated_attribute(proposal.title) %></span>:
|
10
|
+
<%= sanitize link_to(t("public_side", scope: "decidim.reporting_proposals.admin.proposals_valuator_mailer.notify_proposals_valuator"), Decidim::ResourceLocatorPresenter.new(proposal).url), tags: ["a"], attributes: ["href"] %>,
|
11
|
+
<%= sanitize link_to(t("admin_panel", scope: "decidim.reporting_proposals.admin.proposals_valuator_mailer.notify_proposals_valuator"), Decidim::ResourceLocatorPresenter.new(proposal).admin_url), tags: ["a"], attributes: ["href"] %>
|
12
|
+
</li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
</p>
|
16
|
+
|
17
|
+
<p class="email-closing"><%= t("gratitude", scope: "decidim.reporting_proposals.admin.proposals_valuator_mailer.notify_proposals_valuator") %></p>
|
@@ -1,6 +1,9 @@
|
|
1
1
|
<% if current_component.settings.try(:additional_buttons_for_show_proposal_show) &&
|
2
2
|
current_component.settings.additional_button_for_show_proposal_text.present? &&
|
3
3
|
current_component.settings.additional_button_for_show_proposal_link.present? %>
|
4
|
-
|
5
|
-
|
4
|
+
|
5
|
+
<section class="layout-aside__section">
|
6
|
+
<%= link_to translated_attribute(component_settings.additional_button_for_show_proposal_text),
|
7
|
+
component_settings.additional_button_for_show_proposal_link, class: "button button__sm button__transparent-secondary w-full" %>
|
8
|
+
</section>
|
6
9
|
<% end %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<% if component_settings.attachments_allowed? %>
|
2
|
+
<div class="gallery__container photos_container">
|
3
|
+
<% if @form.respond_to?(:photos) && @form.photos.any? %>
|
4
|
+
<% @form.photos.each do |photo| %>
|
5
|
+
<div class="callout gallery__item" id="attachment_<%= photo.id %>" data-closable>
|
6
|
+
<%= image_tag photo.thumbnail_url, class: "thumbnail", alt: photo.file.filename %>
|
7
|
+
<%= form.hidden_field :photos, multiple: true, value: photo.id, id: "photo-#{photo.id}" %>
|
8
|
+
<button class="close-button"
|
9
|
+
aria-label="<%= t("delete_image", scope: "decidim.reporting_proposals.proposals.edit") %>"
|
10
|
+
title="<%= t("delete_image", scope: "decidim.reporting_proposals.proposals.edit") %>"
|
11
|
+
type="button"
|
12
|
+
data-close>
|
13
|
+
<span aria-hidden="true">×</span>
|
14
|
+
</button>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
18
|
+
<div class="field">
|
19
|
+
<%= form.file_field :add_photos, multiple: false, label: t("image", scope: "decidim.reporting_proposals.proposals.form") %>
|
20
|
+
|
21
|
+
<div class="has_no_image">
|
22
|
+
<%= form.check_box :has_no_image %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
@@ -1,7 +1,9 @@
|
|
1
|
-
<div class="
|
2
|
-
|
3
|
-
|
1
|
+
<div class="form__wrapper">
|
2
|
+
<div class="field hashtags__container">
|
3
|
+
<%= form.text_field :title, class: "js-hashtags" %>
|
4
|
+
</div>
|
4
5
|
|
5
|
-
<div class="field hashtags__container">
|
6
|
-
|
6
|
+
<div class="field hashtags__container">
|
7
|
+
<%= text_editor_for_proposal_body(form) %>
|
8
|
+
</div>
|
7
9
|
</div>
|