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
@@ -1,15 +1,16 @@
|
|
1
|
-
|
1
|
+
//= require social-share-button
|
2
2
|
$size: 45px;
|
3
3
|
|
4
|
-
.share-link:hover
|
4
|
+
.share-link:hover{
|
5
5
|
text-decoration: underline;
|
6
6
|
cursor: pointer;
|
7
7
|
}
|
8
8
|
|
9
|
-
.social-share-button
|
9
|
+
.social-share-button{
|
10
10
|
display: inline-block;
|
11
11
|
vertical-align: top;
|
12
|
-
|
12
|
+
|
13
|
+
.ssb-icon{
|
13
14
|
margin-right: 5px;
|
14
15
|
background-size: $size $size;
|
15
16
|
height: $size;
|
@@ -1,15 +1,15 @@
|
|
1
|
-
.initiative-statistics
|
1
|
+
.initiative-statistics{
|
2
2
|
margin-top: 25px;
|
3
3
|
|
4
|
-
.definition-data__item
|
4
|
+
.definition-data__item{
|
5
5
|
flex-basis: 50%;
|
6
6
|
}
|
7
7
|
|
8
|
-
.definition-data__item:nth-child(odd)
|
8
|
+
.definition-data__item:nth-child(odd){
|
9
9
|
border-right: 1px solid #e8e8e8;
|
10
10
|
}
|
11
11
|
|
12
|
-
.definition-data__item:nth-last-child(2)
|
12
|
+
.definition-data__item:nth-last-child(2){
|
13
13
|
border-bottom: none;
|
14
14
|
}
|
15
15
|
}
|
@@ -25,10 +25,7 @@ module Decidim
|
|
25
25
|
if initiative_type.persisted?
|
26
26
|
broadcast(:ok, initiative_type)
|
27
27
|
else
|
28
|
-
if initiative_type.errors.include? :banner_image
|
29
|
-
form.errors.add(:banner_image, initiative_type.errors[:banner_image])
|
30
|
-
end
|
31
|
-
|
28
|
+
form.errors.add(:banner_image, initiative_type.errors[:banner_image]) if initiative_type.errors.include? :banner_image
|
32
29
|
broadcast(:invalid)
|
33
30
|
end
|
34
31
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Initiatives
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic that publishes an
|
7
|
+
# existing initiative.
|
8
|
+
class PublishInitiative < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# initiative - Decidim::Initiative
|
12
|
+
# current_user - the user performing the action
|
13
|
+
def initialize(initiative, current_user)
|
14
|
+
@initiative = initiative
|
15
|
+
@current_user = current_user
|
16
|
+
end
|
17
|
+
|
18
|
+
# Executes the command. Broadcasts these events:
|
19
|
+
#
|
20
|
+
# - :ok when everything is valid.
|
21
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
22
|
+
#
|
23
|
+
# Returns nothing.
|
24
|
+
def call
|
25
|
+
return broadcast(:invalid) if initiative.published?
|
26
|
+
|
27
|
+
@initiative = Decidim.traceability.perform_action!(
|
28
|
+
:publish,
|
29
|
+
initiative,
|
30
|
+
current_user
|
31
|
+
) do
|
32
|
+
initiative.publish!
|
33
|
+
initiative
|
34
|
+
end
|
35
|
+
broadcast(:ok, initiative)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_reader :initiative, :current_user
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Initiatives
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic that sends an
|
7
|
+
# existing initiative to technical validation.
|
8
|
+
class SendInitiativeToTechnicalValidation < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# initiative - Decidim::Initiative
|
12
|
+
# current_user - the user performing the action
|
13
|
+
def initialize(initiative, current_user)
|
14
|
+
@initiative = initiative
|
15
|
+
@current_user = current_user
|
16
|
+
end
|
17
|
+
|
18
|
+
# Executes the command. Broadcasts these events:
|
19
|
+
#
|
20
|
+
# - :ok when everything is valid.
|
21
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
22
|
+
#
|
23
|
+
# Returns nothing.
|
24
|
+
def call
|
25
|
+
@initiative = Decidim.traceability.perform_action!(
|
26
|
+
:send_to_technical_validation,
|
27
|
+
initiative,
|
28
|
+
current_user
|
29
|
+
) do
|
30
|
+
initiative.validating!
|
31
|
+
initiative
|
32
|
+
end
|
33
|
+
broadcast(:ok, initiative)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
attr_reader :initiative, :current_user
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Initiatives
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic that unpublishes an
|
7
|
+
# existing initiative.
|
8
|
+
class UnpublishInitiative < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# initiative - Decidim::Initiative
|
12
|
+
# current_user - the user performing the action
|
13
|
+
def initialize(initiative, current_user)
|
14
|
+
@initiative = initiative
|
15
|
+
@current_user = current_user
|
16
|
+
end
|
17
|
+
|
18
|
+
# Executes the command. Broadcasts these events:
|
19
|
+
#
|
20
|
+
# - :ok when everything is valid.
|
21
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
22
|
+
#
|
23
|
+
# Returns nothing.
|
24
|
+
def call
|
25
|
+
return broadcast(:invalid) unless initiative.published?
|
26
|
+
|
27
|
+
@initiative = Decidim.traceability.perform_action!(
|
28
|
+
:unpublish,
|
29
|
+
initiative,
|
30
|
+
current_user
|
31
|
+
) do
|
32
|
+
initiative.unpublish!
|
33
|
+
initiative
|
34
|
+
end
|
35
|
+
broadcast(:ok, initiative)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_reader :initiative, :current_user
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -24,13 +24,15 @@ module Decidim
|
|
24
24
|
# Returns nothing.
|
25
25
|
def call
|
26
26
|
return broadcast(:invalid) if form.invalid?
|
27
|
-
initiative.update(attributes)
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
@initiative = Decidim.traceability.update!(
|
29
|
+
initiative,
|
30
|
+
current_user,
|
31
|
+
attributes
|
32
|
+
)
|
33
|
+
broadcast(:ok, initiative)
|
34
|
+
rescue ActiveRecord::RecordInvalid
|
35
|
+
broadcast(:invalid, initiative)
|
34
36
|
end
|
35
37
|
|
36
38
|
private
|
@@ -47,7 +49,7 @@ module Decidim
|
|
47
49
|
answer_url: form.answer_url
|
48
50
|
}
|
49
51
|
|
50
|
-
attrs[:answered_at] = DateTime.
|
52
|
+
attrs[:answered_at] = DateTime.current if form.answer.present?
|
51
53
|
|
52
54
|
if current_user.admin?
|
53
55
|
attrs[:signature_start_time] = form.signature_start_time
|
@@ -36,15 +36,16 @@ module Decidim
|
|
36
36
|
|
37
37
|
attr_reader :form, :current_user
|
38
38
|
|
39
|
-
# Creates the initiative and all default
|
39
|
+
# Creates the initiative and all default components
|
40
40
|
def create_initiative
|
41
41
|
initiative = build_initiative
|
42
42
|
return initiative unless initiative.valid?
|
43
43
|
|
44
44
|
initiative.transaction do
|
45
45
|
initiative.save!
|
46
|
-
|
46
|
+
create_components_for(initiative)
|
47
47
|
send_notification(initiative)
|
48
|
+
add_author_as_follower(initiative)
|
48
49
|
end
|
49
50
|
|
50
51
|
initiative
|
@@ -59,7 +60,7 @@ module Decidim
|
|
59
60
|
decidim_user_group_id: form.decidim_user_group_id,
|
60
61
|
scoped_type: scoped_type,
|
61
62
|
signature_type: form.signature_type,
|
62
|
-
state:
|
63
|
+
state: "created"
|
63
64
|
)
|
64
65
|
end
|
65
66
|
|
@@ -70,23 +71,21 @@ module Decidim
|
|
70
71
|
)
|
71
72
|
end
|
72
73
|
|
73
|
-
def
|
74
|
-
Decidim::Initiatives.
|
75
|
-
|
76
|
-
name: Decidim::
|
77
|
-
|
78
|
-
feature_name).i18n_name,
|
79
|
-
manifest_name: feature_name,
|
74
|
+
def create_components_for(initiative)
|
75
|
+
Decidim::Initiatives.default_components.each do |component_name|
|
76
|
+
component = Decidim::Component.create!(
|
77
|
+
name: Decidim::Components::Namer.new(initiative.organization.available_locales, component_name).i18n_name,
|
78
|
+
manifest_name: component_name,
|
80
79
|
published_at: Time.current,
|
81
80
|
participatory_space: initiative
|
82
81
|
)
|
83
82
|
|
84
|
-
initialize_pages(
|
83
|
+
initialize_pages(component) if component_name == :pages
|
85
84
|
end
|
86
85
|
end
|
87
86
|
|
88
|
-
def initialize_pages(
|
89
|
-
Decidim::Pages::CreatePage.call(
|
87
|
+
def initialize_pages(component)
|
88
|
+
Decidim::Pages::CreatePage.call(component) do
|
90
89
|
on(:invalid) { raise "Can't create page" }
|
91
90
|
end
|
92
91
|
end
|
@@ -99,6 +98,17 @@ module Decidim
|
|
99
98
|
recipient_ids: initiative.author.followers.pluck(:id)
|
100
99
|
)
|
101
100
|
end
|
101
|
+
|
102
|
+
def add_author_as_follower(initiative)
|
103
|
+
form = Decidim::FollowForm
|
104
|
+
.from_params(followable_gid: initiative.to_signed_global_id.to_s)
|
105
|
+
.with_context(
|
106
|
+
current_organization: initiative.organization,
|
107
|
+
current_user: current_user
|
108
|
+
)
|
109
|
+
|
110
|
+
Decidim::CreateFollow.new(form, current_user).call
|
111
|
+
end
|
102
112
|
end
|
103
113
|
end
|
104
114
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Initiatives
|
5
|
+
# This class infers the current component on an initiative context
|
6
|
+
# request parameters and injects it into the environment.
|
7
|
+
class CurrentComponent
|
8
|
+
# Public: Initializes the class.
|
9
|
+
#
|
10
|
+
# manifest - The manifest of the component to check against.
|
11
|
+
def initialize(manifest)
|
12
|
+
@manifest = manifest
|
13
|
+
end
|
14
|
+
|
15
|
+
# Public: Matches the request against a component and injects it into the
|
16
|
+
# environment.
|
17
|
+
#
|
18
|
+
# request - The request that holds the current component relevant information.
|
19
|
+
#
|
20
|
+
# Returns a true if the request matches an initiative and a
|
21
|
+
# component belonging to that initiative, false otherwise
|
22
|
+
def matches?(request)
|
23
|
+
CurrentInitiative.new.matches?(request) &&
|
24
|
+
Decidim::CurrentComponent.new(@manifest).matches?(request)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -18,7 +18,7 @@ module Decidim
|
|
18
18
|
def matches?(request)
|
19
19
|
env = request.env
|
20
20
|
|
21
|
-
@organization = env[
|
21
|
+
@organization = env["decidim.current_organization"]
|
22
22
|
return false unless @organization
|
23
23
|
|
24
24
|
current_initiative(env, request.params) ? true : false
|
@@ -27,7 +27,7 @@ module Decidim
|
|
27
27
|
private
|
28
28
|
|
29
29
|
def current_initiative(env, params)
|
30
|
-
env[
|
30
|
+
env["decidim.current_participatory_space"] ||= Initiative.find_by(id: id_from_slug(params[:initiative_slug]))
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "active_support/concern"
|
4
4
|
|
5
5
|
module Decidim
|
6
6
|
module Initiatives
|
@@ -18,8 +18,6 @@ module Decidim
|
|
18
18
|
include Decidim::Admin::ParticipatorySpaceAdminContext
|
19
19
|
participatory_space_admin_layout
|
20
20
|
|
21
|
-
helper Decidim::Initiatives::PartialTranslationsHelper
|
22
|
-
|
23
21
|
alias_method :current_participatory_space, :current_initiative
|
24
22
|
end
|
25
23
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "active_support/concern"
|
4
4
|
|
5
5
|
module Decidim
|
6
6
|
module Initiatives
|
@@ -26,22 +26,22 @@ module Decidim
|
|
26
26
|
# Available orders based on enabled settings
|
27
27
|
def available_orders
|
28
28
|
@available_orders ||= begin
|
29
|
-
available_orders = %w
|
29
|
+
available_orders = %w(random recent most_voted most_commented)
|
30
30
|
available_orders
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
def default_order
|
35
|
-
|
35
|
+
"random"
|
36
36
|
end
|
37
37
|
|
38
38
|
def reorder(initiatives)
|
39
39
|
case order
|
40
|
-
when
|
40
|
+
when "most_voted"
|
41
41
|
initiatives.order_by_supports
|
42
|
-
when
|
42
|
+
when "most_commented"
|
43
43
|
initiatives.order_by_most_commented
|
44
|
-
when
|
44
|
+
when "recent"
|
45
45
|
initiatives.order_by_most_recent
|
46
46
|
else
|
47
47
|
initiatives.order_randomly(random_seed)
|