decidim-initiatives 0.9.1 → 0.11.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -16
- data/Rakefile +1 -1
- data/app/assets/javascripts/decidim/initiatives/admin/invite_users.js +7 -8
- data/app/assets/javascripts/decidim/initiatives/application.js +1 -1
- data/app/assets/javascripts/decidim/initiatives/identity_selector_dialog.js +6 -9
- data/app/assets/javascripts/decidim/initiatives/scoped_type.js +8 -12
- data/app/assets/stylesheet/decidim/initiatives/admin.css.scss +10 -11
- data/app/assets/stylesheet/decidim/initiatives/application.css.scss +19 -19
- data/app/assets/stylesheet/decidim/initiatives/popularity_item.css.scss +40 -24
- data/app/assets/stylesheet/decidim/initiatives/print-initiative.css.scss +26 -26
- data/app/assets/stylesheet/decidim/initiatives/social_share.css.scss +5 -4
- data/app/assets/stylesheet/decidim/initiatives/statistics.css.scss +4 -4
- data/app/commands/decidim/initiatives/admin/create_initiative_type.rb +1 -4
- data/app/commands/decidim/initiatives/admin/publish_initiative.rb +44 -0
- data/app/commands/decidim/initiatives/admin/send_initiative_to_technical_validation.rb +42 -0
- data/app/commands/decidim/initiatives/admin/unpublish_initiative.rb +44 -0
- data/app/commands/decidim/initiatives/admin/update_initiative.rb +9 -7
- data/app/commands/decidim/initiatives/admin/update_initiative_type.rb +1 -4
- data/app/commands/decidim/initiatives/create_initiative.rb +23 -13
- data/app/commands/decidim/initiatives/spawn_committee_request.rb +1 -1
- data/app/constraints/decidim/initiatives/current_component.rb +28 -0
- data/app/constraints/decidim/initiatives/current_initiative.rb +2 -2
- data/app/controllers/concerns/decidim/initiatives/action_authorization.rb +1 -1
- data/app/controllers/concerns/decidim/initiatives/admin/initiative_admin.rb +1 -3
- data/app/controllers/concerns/decidim/initiatives/orderable.rb +6 -6
- data/app/controllers/concerns/decidim/initiatives/type_selector_options.rb +1 -1
- data/app/controllers/decidim/initiatives/admin/application_controller.rb +1 -1
- data/app/controllers/decidim/initiatives/admin/{feature_permissions_controller.rb → component_permissions_controller.rb} +2 -2
- data/app/controllers/decidim/initiatives/admin/components_controller.rb +15 -0
- data/app/controllers/decidim/initiatives/admin/initiatives_controller.rb +29 -18
- data/app/controllers/decidim/initiatives/admin/initiatives_type_scopes_controller.rb +6 -6
- data/app/controllers/decidim/initiatives/admin/initiatives_types_controller.rb +7 -7
- data/app/controllers/decidim/initiatives/committee_requests_controller.rb +2 -3
- data/app/controllers/decidim/initiatives/create_initiative_controller.rb +5 -9
- data/app/controllers/decidim/initiatives/initiative_votes_controller.rb +3 -3
- data/app/controllers/decidim/initiatives/initiatives_controller.rb +0 -1
- data/app/forms/decidim/initiatives/admin/initiative_form.rb +1 -1
- data/app/forms/decidim/initiatives/admin/initiative_type_scope_form.rb +3 -2
- data/app/helpers/decidim/initiatives/create_initiative_helper.rb +7 -7
- data/app/helpers/decidim/initiatives/initiative_helper.rb +36 -29
- data/app/helpers/decidim/initiatives/initiatives_helper.rb +1 -1
- data/app/mailers/decidim/initiatives/initiatives_mailer.rb +18 -16
- data/app/models/decidim/initiative.rb +15 -7
- data/app/models/decidim/initiatives/abilities/admin/attachments_ability.rb +1 -0
- data/app/models/decidim/initiatives/abilities/admin/{features_ability.rb → components_ability.rb} +2 -3
- data/app/models/decidim/initiatives_vote.rb +3 -3
- data/app/presenters/decidim/initiatives/admin_log/initiative_presenter.rb +49 -0
- data/app/presenters/decidim/initiatives/initiative_stats_presenter.rb +4 -4
- data/app/queries/decidim/initiatives/admin/manageable_initiatives.rb +8 -8
- data/app/queries/decidim/initiatives/freetext_initiative_types.rb +1 -1
- data/app/queries/decidim/initiatives/initiatives_created.rb +1 -1
- data/app/queries/decidim/initiatives/initiatives_promoted.rb +3 -3
- data/app/queries/decidim/initiatives/outdated_validating_initiatives.rb +3 -3
- data/app/queries/decidim/initiatives/support_period_finished_initiatives.rb +3 -3
- data/app/services/decidim/initiatives/initiative_search.rb +5 -5
- data/app/services/decidim/initiatives/progress_notifier.rb +1 -1
- data/app/services/decidim/initiatives/status_change_notifier.rb +3 -9
- data/app/views/decidim/initiatives/_initiative.html.erb +11 -11
- data/app/views/decidim/initiatives/admin/committee_requests/index.html.erb +14 -14
- data/app/views/decidim/initiatives/admin/initiatives/_form.html.erb +5 -5
- data/app/views/decidim/initiatives/admin/initiatives/edit.html.erb +25 -25
- data/app/views/decidim/initiatives/admin/initiatives/index.html.erb +31 -31
- data/app/views/decidim/initiatives/admin/initiatives/show.html.erb +7 -8
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/_form.html.erb +1 -3
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/edit.html.erb +8 -8
- data/app/views/decidim/initiatives/admin/initiatives_type_scopes/new.html.erb +5 -5
- data/app/views/decidim/initiatives/admin/initiatives_types/_form.html.erb +2 -2
- data/app/views/decidim/initiatives/admin/initiatives_types/_initiative_type_scopes.html.erb +9 -9
- data/app/views/decidim/initiatives/admin/initiatives_types/edit.html.erb +8 -8
- data/app/views/decidim/initiatives/admin/initiatives_types/index.html.erb +3 -3
- data/app/views/decidim/initiatives/admin/initiatives_types/new.html.erb +3 -3
- data/app/views/decidim/initiatives/committee_requests/new.html.erb +13 -13
- data/app/views/decidim/initiatives/create_initiative/_finish_help.html.erb +7 -0
- data/app/views/decidim/initiatives/create_initiative/_share_committee_link.html.erb +4 -4
- data/app/views/decidim/initiatives/create_initiative/fill_data.html.erb +8 -8
- data/app/views/decidim/initiatives/create_initiative/finish.html.erb +10 -10
- data/app/views/decidim/initiatives/create_initiative/previous_form.html.erb +9 -9
- data/app/views/decidim/initiatives/create_initiative/promotal_committee.html.erb +8 -8
- data/app/views/decidim/initiatives/create_initiative/select_initiative_type.html.erb +9 -10
- data/app/views/decidim/initiatives/create_initiative/show_similar_initiatives.html.erb +7 -7
- data/app/views/decidim/initiatives/initiative_votes/update_buttons_and_counters.js.erb +2 -2
- data/app/views/decidim/initiatives/initiative_widgets/show.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_author.html.erb +3 -3
- data/app/views/decidim/initiatives/initiatives/_count.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_filters.html.erb +11 -11
- data/app/views/decidim/initiatives/initiatives/_filters_small_view.html.erb +5 -5
- data/app/views/decidim/initiatives/initiatives/_index_header.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_initiative_badge.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_initiatives.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives/_result.html.erb +4 -4
- data/app/views/decidim/initiatives/initiatives/_statistics.html.erb +5 -5
- data/app/views/decidim/initiatives/initiatives/_supports.html.erb +1 -1
- data/app/views/decidim/initiatives/initiatives/_supports_count.html.erb +1 -2
- data/app/views/decidim/initiatives/initiatives/_tags.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives/_vote_button.html.erb +3 -3
- data/app/views/decidim/initiatives/initiatives/_vote_cabin.html.erb +3 -3
- data/app/views/decidim/initiatives/initiatives/_votes_count.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives/index.html.erb +8 -8
- data/app/views/decidim/initiatives/initiatives/index.js.erb +2 -2
- data/app/views/decidim/initiatives/initiatives/show.html.erb +21 -21
- data/app/views/decidim/initiatives/initiatives/signature_identities.html.erb +6 -6
- data/app/views/decidim/initiatives/initiatives_mailer/_initiative_link.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb +6 -6
- data/app/views/decidim/initiatives/initiatives_mailer/notify_progress.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives_mailer/notify_state_change.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives_mailer/notify_validating_request.html.erb +2 -2
- data/app/views/decidim/initiatives/initiatives_type_scopes/search.html.erb +1 -1
- data/app/views/layouts/decidim/_initiative_creation_header.html.erb +3 -4
- data/app/views/layouts/decidim/_initiative_header.html.erb +21 -21
- data/app/views/layouts/decidim/_initiative_header_steps.html.erb +1 -1
- data/app/views/layouts/decidim/admin/initiative.html.erb +15 -15
- data/app/views/layouts/decidim/admin/initiatives.html.erb +4 -4
- data/app/views/layouts/decidim/initiative.html.erb +2 -2
- data/app/views/layouts/decidim/initiative_creation.html.erb +4 -6
- data/config/locales/ca.yml +243 -246
- data/config/locales/en.yml +218 -222
- data/config/locales/es.yml +243 -246
- data/config/locales/eu.yml +322 -0
- data/config/locales/fi.yml +322 -0
- data/config/locales/fr.yml +322 -0
- data/config/locales/gl.yml +322 -0
- data/config/locales/it.yml +322 -0
- data/config/locales/nl.yml +322 -0
- data/config/locales/pl.yml +328 -0
- data/config/locales/pt-BR.yml +322 -0
- data/config/locales/pt.yml +322 -0
- data/config/locales/ru.yml +5 -0
- data/config/locales/sv.yml +322 -0
- data/config/locales/uk.yml +5 -0
- data/db/migrate/20170906091626_create_decidim_initiatives_types.rb +1 -1
- data/db/migrate/20170906094044_create_decidim_initiatives.rb +3 -3
- data/db/migrate/20170922152432_create_decidim_initiatives_committee_members.rb +2 -2
- data/db/migrate/20170927153744_change_signature_interval_to_optional.rb +2 -0
- data/db/migrate/20170928160302_add_decidim_user_group_id_to_decidim_initiatives_votes.rb +2 -0
- data/db/migrate/20170928160912_remove_scope_from_decidim_initiatives_votes.rb +2 -0
- data/db/migrate/20171011110714_add_banner_image_to_initiative_type.rb +2 -0
- data/db/migrate/20171011152425_add_hashtag_to_initiatives.rb +2 -0
- data/db/migrate/20171013090432_add_initiative_supports_count_to_initiative.rb +7 -1
- data/db/migrate/20171017090551_create_decidim_initiatives_decidim_initiatives_type_scopes.rb +4 -2
- data/db/migrate/20171017091458_remove_supports_required_from_decidim_initiatives_types.rb +2 -0
- data/db/migrate/20171017091734_add_scopes_for_all_initiative_types.rb +29 -5
- data/db/migrate/20171017094911_add_scoped_type_to_initiative.rb +2 -0
- data/db/migrate/20171017095143_update_initiative_scoped_type.rb +47 -4
- data/db/migrate/20171017103029_remove_unused_attributes_from_initiative.rb +2 -0
- data/db/migrate/20171019103358_add_initiative_notification_dates.rb +2 -0
- data/db/migrate/20171023075942_create_initiative_extra_data.rb +2 -0
- data/db/migrate/20171023122747_create_static_pages.rb +15 -6
- data/db/migrate/20171023141639_optional_validation_support.rb +2 -0
- data/db/migrate/20171031183855_add_offline_votes_to_initiative.rb +2 -0
- data/db/migrate/20171102094250_drop_initiative_description_index.rb +2 -0
- data/db/migrate/20171102094556_create_initiative_description_index.rb +4 -2
- data/db/migrate/20171109132011_enable_pg_extensions.rb +5 -5
- data/db/migrate/20171204094639_drop_decidim_initiatives_extra_data.rb +2 -0
- data/db/migrate/20171204103119_remove_requires_validation_from_decidim_initiatives_type.rb +2 -0
- data/db/migrate/20171214161410_add_unique_on_votes.rb +10 -9
- data/lib/decidim/initiatives.rb +2 -2
- data/lib/decidim/initiatives/admin_engine.rb +26 -26
- data/lib/decidim/initiatives/current_locale.rb +1 -1
- data/lib/decidim/initiatives/engine.rb +5 -5
- data/lib/decidim/initiatives/initiative_slug.rb +2 -3
- data/lib/decidim/initiatives/participatory_space.rb +19 -17
- data/lib/decidim/initiatives/test/factories.rb +2 -7
- data/lib/decidim/initiatives/version.rb +3 -1
- data/lib/tasks/decidim_initiatives.rake +2 -0
- metadata +57 -90
- data/LICENSE-AGPLv3.txt +0 -661
- data/app/constraints/decidim/initiatives/current_feature.rb +0 -28
- data/app/controllers/decidim/initiatives/admin/features_controller.rb +0 -16
- data/app/helpers/decidim/initiatives/partial_translations_helper.rb +0 -28
- data/app/views/decidim/initiatives/create_initiative/_compare_help.ca.html.erb +0 -2
- data/app/views/decidim/initiatives/create_initiative/_compare_help.en.html.erb +0 -2
- data/app/views/decidim/initiatives/create_initiative/_compare_help.es.html.erb +0 -2
- data/app/views/decidim/initiatives/create_initiative/_finish_help.ca.html.erb +0 -19
- data/app/views/decidim/initiatives/create_initiative/_finish_help.en.html.erb +0 -20
- data/app/views/decidim/initiatives/create_initiative/_finish_help.es.html.erb +0 -19
@@ -5,7 +5,7 @@ module Decidim
|
|
5
5
|
# Helper functions for initiatives views
|
6
6
|
module InitiativesHelper
|
7
7
|
def initiatives_filter_form_for(filter)
|
8
|
-
content_tag :div, class:
|
8
|
+
content_tag :div, class: "filters" do
|
9
9
|
form_for filter,
|
10
10
|
builder: Decidim::Initiatives::InitiativesFilterFormBuilder,
|
11
11
|
url: url_for,
|
@@ -4,7 +4,9 @@ module Decidim
|
|
4
4
|
module Initiatives
|
5
5
|
# Mailer for initiatives engine.
|
6
6
|
class InitiativesMailer < Decidim::ApplicationMailer
|
7
|
-
|
7
|
+
include Decidim::TranslatableAttributes
|
8
|
+
|
9
|
+
add_template_helper Decidim::TranslatableAttributes
|
8
10
|
|
9
11
|
# Notifies initiative creation
|
10
12
|
def notify_creation(initiative)
|
@@ -13,8 +15,8 @@ module Decidim
|
|
13
15
|
|
14
16
|
with_user(initiative.author) do
|
15
17
|
@subject = I18n.t(
|
16
|
-
|
17
|
-
title:
|
18
|
+
"decidim.initiatives.initiatives_mailer.creation_subject",
|
19
|
+
title: translated_attribute(initiative.title)
|
18
20
|
)
|
19
21
|
|
20
22
|
mail(to: "#{initiative.author.name} <#{initiative.author.email}>", subject: @subject)
|
@@ -27,14 +29,14 @@ module Decidim
|
|
27
29
|
|
28
30
|
with_user(user) do
|
29
31
|
@subject = I18n.t(
|
30
|
-
|
31
|
-
title:
|
32
|
+
"decidim.initiatives.initiatives_mailer.status_change_for",
|
33
|
+
title: translated_attribute(initiative.title)
|
32
34
|
)
|
33
35
|
|
34
36
|
@body = I18n.t(
|
35
|
-
|
36
|
-
title:
|
37
|
-
state: I18n.t(initiative.state, scope:
|
37
|
+
"decidim.initiatives.initiatives_mailer.status_change_body_for",
|
38
|
+
title: translated_attribute(initiative.title),
|
39
|
+
state: I18n.t(initiative.state, scope: "decidim.initiatives.admin_states")
|
38
40
|
)
|
39
41
|
|
40
42
|
@link = initiative_url(initiative, host: @organization.host)
|
@@ -50,12 +52,12 @@ module Decidim
|
|
50
52
|
|
51
53
|
with_user(user) do
|
52
54
|
@subject = I18n.t(
|
53
|
-
|
54
|
-
title:
|
55
|
+
"decidim.initiatives.initiatives_mailer.technical_validation_for",
|
56
|
+
title: translated_attribute(initiative.title)
|
55
57
|
)
|
56
58
|
@body = I18n.t(
|
57
|
-
|
58
|
-
title:
|
59
|
+
"decidim.initiatives.initiatives_mailer.technical_validation_body_for",
|
60
|
+
title: translated_attribute(initiative.title)
|
59
61
|
)
|
60
62
|
|
61
63
|
mail(to: "#{user.name} <#{user.email}>", subject: @subject)
|
@@ -69,14 +71,14 @@ module Decidim
|
|
69
71
|
|
70
72
|
with_user(user) do
|
71
73
|
@body = I18n.t(
|
72
|
-
|
73
|
-
title:
|
74
|
+
"decidim.initiatives.initiatives_mailer.progress_report_body_for",
|
75
|
+
title: translated_attribute(initiative.title),
|
74
76
|
percentage: initiative.percentage
|
75
77
|
)
|
76
78
|
|
77
79
|
@subject = I18n.t(
|
78
|
-
|
79
|
-
title:
|
80
|
+
"decidim.initiatives.initiatives_mailer.progress_report_for",
|
81
|
+
title: translated_attribute(initiative.title)
|
80
82
|
)
|
81
83
|
|
82
84
|
mail(to: "#{user.name} <#{user.email}>", subject: @subject)
|
@@ -11,6 +11,9 @@ module Decidim
|
|
11
11
|
include Decidim::Comments::Commentable
|
12
12
|
include Decidim::Followable
|
13
13
|
include Decidim::HasAttachments
|
14
|
+
include Decidim::HasAttachmentCollections
|
15
|
+
include Decidim::Traceable
|
16
|
+
include Decidim::Loggable
|
14
17
|
include Decidim::Initiatives::InitiativeSlug
|
15
18
|
|
16
19
|
belongs_to :organization,
|
@@ -27,7 +30,8 @@ module Decidim
|
|
27
30
|
|
28
31
|
has_many :votes,
|
29
32
|
foreign_key: "decidim_initiative_id",
|
30
|
-
class_name: "Decidim::InitiativesVote",
|
33
|
+
class_name: "Decidim::InitiativesVote",
|
34
|
+
dependent: :destroy,
|
31
35
|
inverse_of: :initiative
|
32
36
|
|
33
37
|
has_many :committee_members,
|
@@ -36,7 +40,7 @@ module Decidim
|
|
36
40
|
dependent: :destroy,
|
37
41
|
inverse_of: :initiative
|
38
42
|
|
39
|
-
has_many :
|
43
|
+
has_many :components, as: :participatory_space, dependent: :destroy
|
40
44
|
|
41
45
|
# This relationship exists only by compatibility reasons.
|
42
46
|
# Initiatives are not intended to have categories.
|
@@ -77,7 +81,7 @@ module Decidim
|
|
77
81
|
scope :order_by_supports, -> { order("initiative_votes_count + coalesce(offline_votes, 0) desc") }
|
78
82
|
scope :order_by_most_commented, lambda {
|
79
83
|
select("decidim_initiatives.*")
|
80
|
-
.
|
84
|
+
.left_joins(:comments)
|
81
85
|
.group("decidim_initiatives.id")
|
82
86
|
.order("count(decidim_comments_comments.id) desc")
|
83
87
|
}
|
@@ -92,6 +96,10 @@ module Decidim
|
|
92
96
|
end
|
93
97
|
end
|
94
98
|
|
99
|
+
def self.log_presenter_class_for(_log)
|
100
|
+
Decidim::Initiatives::AdminLog::InitiativePresenter
|
101
|
+
end
|
102
|
+
|
95
103
|
# PUBLIC
|
96
104
|
#
|
97
105
|
# Returns true when an initiative has been created by an individual person.
|
@@ -181,12 +189,12 @@ module Decidim
|
|
181
189
|
true
|
182
190
|
end
|
183
191
|
|
184
|
-
# Public: Publishes this
|
192
|
+
# Public: Publishes this initiative
|
185
193
|
#
|
186
194
|
# Returns true if the record was properly saved, false otherwise.
|
187
195
|
def publish!
|
188
196
|
return false if published?
|
189
|
-
|
197
|
+
update(
|
190
198
|
published_at: Time.current,
|
191
199
|
state: "published",
|
192
200
|
signature_start_time: DateTime.now.utc,
|
@@ -195,12 +203,12 @@ module Decidim
|
|
195
203
|
end
|
196
204
|
|
197
205
|
#
|
198
|
-
# Public: Unpublishes this
|
206
|
+
# Public: Unpublishes this initiative
|
199
207
|
#
|
200
208
|
# Returns true if the record was properly saved, false otherwise.
|
201
209
|
def unpublish!
|
202
210
|
return false unless published?
|
203
|
-
|
211
|
+
update(published_at: nil, state: "discarded")
|
204
212
|
end
|
205
213
|
|
206
214
|
# Public: Returns wether the signature interval is already defined or not.
|
data/app/models/decidim/initiatives/abilities/admin/{features_ability.rb → components_ability.rb}
RENAMED
@@ -4,10 +4,9 @@ module Decidim
|
|
4
4
|
module Initiatives
|
5
5
|
module Abilities
|
6
6
|
module Admin
|
7
|
-
# Defines the abilities related to user able to administer
|
8
|
-
# for an initiative.
|
7
|
+
# Defines the abilities related to user able to administer components for an initiative.
|
9
8
|
# Intended to be used with `cancancan`.
|
10
|
-
class
|
9
|
+
class ComponentsAbility
|
11
10
|
include CanCan::Ability
|
12
11
|
|
13
12
|
attr_reader :user, :context
|
@@ -5,7 +5,7 @@ require "digest/sha1"
|
|
5
5
|
module Decidim
|
6
6
|
# Initiatives can be voted by users and supported by organizations.
|
7
7
|
class InitiativesVote < ApplicationRecord
|
8
|
-
include Decidim::
|
8
|
+
include Decidim::TranslatableAttributes
|
9
9
|
|
10
10
|
belongs_to :author,
|
11
11
|
foreign_key: "decidim_author_id",
|
@@ -34,8 +34,8 @@ module Decidim
|
|
34
34
|
def sha1
|
35
35
|
return unless decidim_user_group_id.nil?
|
36
36
|
|
37
|
-
title =
|
38
|
-
description =
|
37
|
+
title = translated_attribute(initiative.title)
|
38
|
+
description = translated_attribute(initiative.description)
|
39
39
|
|
40
40
|
Digest::SHA1.hexdigest "#{authorization_unique_id}#{title}#{description}"
|
41
41
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Initiatives
|
5
|
+
module AdminLog
|
6
|
+
# This class holds the logic to present a `Decidim::Initiative`
|
7
|
+
# for the `AdminLog` log.
|
8
|
+
#
|
9
|
+
# Usage should be automatic and you shouldn't need to call this class
|
10
|
+
# directly, but here's an example:
|
11
|
+
#
|
12
|
+
# action_log = Decidim::ActionLog.last
|
13
|
+
# view_helpers # => this comes from the views
|
14
|
+
# InitiativePresenter.new(action_log, view_helpers).present
|
15
|
+
class InitiativePresenter < Decidim::Log::BasePresenter
|
16
|
+
private
|
17
|
+
|
18
|
+
def action_string
|
19
|
+
case action
|
20
|
+
when "publish", "unpublish", "update", "send_to_technical_validation"
|
21
|
+
"decidim.initiatives.admin_log.initiative.#{action}"
|
22
|
+
else
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def diff_fields_mapping
|
28
|
+
{
|
29
|
+
state: :string,
|
30
|
+
published_at: :date,
|
31
|
+
signature_start_time: :date,
|
32
|
+
signature_end_time: :date,
|
33
|
+
description: :i18n,
|
34
|
+
title: :i18n,
|
35
|
+
hashtag: :string
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def i18n_labels_scope
|
40
|
+
"activemodel.attributes.initiatives"
|
41
|
+
end
|
42
|
+
|
43
|
+
def has_diff?
|
44
|
+
%w(publish unpublish send_to_technical_validation).include?(action) || super
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -24,7 +24,7 @@ module Decidim
|
|
24
24
|
"initiative/#{initiative.id}/meetings_count",
|
25
25
|
expires_in: Decidim::Initiatives.stats_cache_expiration_time
|
26
26
|
) do
|
27
|
-
Decidim::Meetings::Meeting.where(
|
27
|
+
Decidim::Meetings::Meeting.where(component: meetings_component).count
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -34,7 +34,7 @@ module Decidim
|
|
34
34
|
expires_in: Decidim::Initiatives.stats_cache_expiration_time
|
35
35
|
) do
|
36
36
|
result = 0
|
37
|
-
Decidim::Meetings::Meeting.where(
|
37
|
+
Decidim::Meetings::Meeting.where(component: meetings_component).each do |meeting|
|
38
38
|
result += meeting.attendees_count || 0
|
39
39
|
end
|
40
40
|
|
@@ -44,8 +44,8 @@ module Decidim
|
|
44
44
|
|
45
45
|
private
|
46
46
|
|
47
|
-
def
|
48
|
-
@
|
47
|
+
def meetings_component
|
48
|
+
@meetings_component ||= Decidim::Component.find_by(participatory_space: initiative, manifest_name: "meetings")
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -47,14 +47,14 @@ module Decidim
|
|
47
47
|
return base if q.blank?
|
48
48
|
|
49
49
|
organization.available_locales.each_with_index do |loc, index|
|
50
|
-
if index.zero?
|
51
|
-
|
52
|
-
.or(Initiative.where(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
50
|
+
base = if index.zero?
|
51
|
+
base.where("title->>? ilike ?", loc, "#{q}%")
|
52
|
+
.or(Initiative.where("description->>? ilike ?", loc, "#{q}%"))
|
53
|
+
else
|
54
|
+
base
|
55
|
+
.or(Initiative.where("title->>? ilike ?", loc, "#{q}%"))
|
56
|
+
.or(Initiative.where("description->>? ilike ?", loc, "#{q}%"))
|
57
|
+
end
|
58
58
|
end
|
59
59
|
|
60
60
|
base
|
@@ -24,9 +24,9 @@ module Decidim
|
|
24
24
|
def query
|
25
25
|
Initiative
|
26
26
|
.joins(:committee_members)
|
27
|
-
.where(
|
28
|
-
.where(
|
27
|
+
.where("decidim_initiatives_committee_members.state = 2")
|
28
|
+
.where("decidim_initiatives_committee_members.decidim_users_id = ?", user.id)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
@@ -16,14 +16,14 @@ module Decidim
|
|
16
16
|
#
|
17
17
|
# period_length - Maximum time in validating state
|
18
18
|
def initialize(period_length)
|
19
|
-
@period_length = DateTime.
|
19
|
+
@period_length = DateTime.current - period_length
|
20
20
|
end
|
21
21
|
|
22
22
|
# Retrieves the available initiative types for the given organization.
|
23
23
|
def query
|
24
24
|
Decidim::Initiative
|
25
|
-
.where(state:
|
26
|
-
.where(
|
25
|
+
.where(state: "validating")
|
26
|
+
.where("updated_at < ?", @period_length)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -10,9 +10,9 @@ module Decidim
|
|
10
10
|
def query
|
11
11
|
Decidim::Initiative
|
12
12
|
.includes(:scoped_type)
|
13
|
-
.where(state:
|
14
|
-
.where(signature_type:
|
15
|
-
.where(
|
13
|
+
.where(state: "published")
|
14
|
+
.where(signature_type: "online")
|
15
|
+
.where("signature_end_time < ?", DateTime.current)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -34,7 +34,7 @@ module Decidim
|
|
34
34
|
# Handle the state filter
|
35
35
|
def search_state
|
36
36
|
case state
|
37
|
-
when
|
37
|
+
when "closed"
|
38
38
|
query.closed
|
39
39
|
else # Assume open
|
40
40
|
query.open
|
@@ -42,18 +42,18 @@ module Decidim
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def search_type
|
45
|
-
return query if type ==
|
45
|
+
return query if type == "all"
|
46
46
|
|
47
47
|
query
|
48
48
|
.joins(:scoped_type)
|
49
49
|
.where(
|
50
|
-
|
50
|
+
"decidim_initiatives_type_scopes.decidim_initiatives_types_id = ?",
|
51
51
|
type
|
52
52
|
)
|
53
53
|
end
|
54
54
|
|
55
55
|
def search_author
|
56
|
-
if author ==
|
56
|
+
if author == "myself" && options[:current_user]
|
57
57
|
query.where(decidim_author_id: options[:current_user].id)
|
58
58
|
else
|
59
59
|
query
|
@@ -65,7 +65,7 @@ module Decidim
|
|
65
65
|
query
|
66
66
|
.joins(:scoped_type)
|
67
67
|
.where(
|
68
|
-
|
68
|
+
"decidim_initiatives_type_scopes.decidim_scopes_id": scope_id
|
69
69
|
)
|
70
70
|
end
|
71
71
|
end
|
@@ -26,14 +26,8 @@ module Decidim
|
|
26
26
|
def notify
|
27
27
|
notify_initiative_creation if initiative.created?
|
28
28
|
notify_validating_initiative if initiative.validating?
|
29
|
-
|
30
|
-
if initiative.
|
31
|
-
notify_validating_result
|
32
|
-
end
|
33
|
-
|
34
|
-
if initiative.rejected? || initiative.accepted?
|
35
|
-
notify_support_result
|
36
|
-
end
|
29
|
+
notify_validating_result if initiative.published? || initiative.discarded?
|
30
|
+
notify_support_result if initiative.rejected? || initiative.accepted?
|
37
31
|
end
|
38
32
|
|
39
33
|
private
|
@@ -83,4 +77,4 @@ module Decidim
|
|
83
77
|
end
|
84
78
|
end
|
85
79
|
end
|
86
|
-
end
|
80
|
+
end
|
@@ -2,32 +2,32 @@
|
|
2
2
|
<article class="card card--initiative">
|
3
3
|
<div class="card__content">
|
4
4
|
<div class="card__header">
|
5
|
-
<%= link_to initiative do%>
|
6
|
-
|
5
|
+
<%= link_to initiative do %>
|
6
|
+
<h5 class="card__title"><%= translated_attribute initiative.title %></h5>
|
7
7
|
<% end %>
|
8
|
-
<%= render partial:
|
8
|
+
<%= render partial: "decidim/initiatives/initiatives/author", locals: { initiative: initiative } %>
|
9
9
|
</div>
|
10
|
-
<%= render partial:
|
11
|
-
<%= simple_format Truncato.truncate(
|
12
|
-
<%= render partial:
|
10
|
+
<%= render partial: "decidim/initiatives/initiatives/initiative_badge", locals: { initiative: initiative } %>
|
11
|
+
<%= simple_format Truncato.truncate(translated_attribute(initiative.description), max_length: 100, separator: "...") %>
|
12
|
+
<%= render partial: "decidim/initiatives/initiatives/tags", locals: { resource: initiative } %>
|
13
13
|
</div>
|
14
14
|
|
15
15
|
<div class="card__footer">
|
16
16
|
<div class="card__support">
|
17
17
|
<% if initiative.published? %>
|
18
|
-
<%= render partial:
|
18
|
+
<%= render partial: "decidim/initiatives/initiatives/supports_count", locals: { initiative: initiative } %>
|
19
19
|
<% else %>
|
20
20
|
<div class="card__support__data"></div>
|
21
21
|
<% end %>
|
22
22
|
|
23
23
|
<% if initiative.closed? || initiative.offline? %>
|
24
|
-
<%= link_to t(
|
24
|
+
<%= link_to t("initiatives.initiative.check", scope: "layouts.decidim"),
|
25
25
|
initiative,
|
26
|
-
class:
|
26
|
+
class: "card__button button small secondary" %>
|
27
27
|
<% else %>
|
28
|
-
<%= link_to t(
|
28
|
+
<%= link_to t("initiatives.initiative.check_and_support", scope: "layouts.decidim"),
|
29
29
|
initiative,
|
30
|
-
class:
|
30
|
+
class: "card__button button small secondary" %>
|
31
31
|
<% end %>
|
32
32
|
</div>
|
33
33
|
</div>
|