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
@@ -10,7 +10,7 @@ class CreateDecidimInitiativesTypes < ActiveRecord::Migration[5.1]
|
|
10
10
|
t.integer :decidim_organization_id,
|
11
11
|
foreign_key: true,
|
12
12
|
index: {
|
13
|
-
name:
|
13
|
+
name: "index_decidim_initiative_types_on_decidim_organization_id"
|
14
14
|
}
|
15
15
|
|
16
16
|
t.timestamps
|
@@ -10,12 +10,12 @@ class CreateDecidimInitiatives < ActiveRecord::Migration[5.1]
|
|
10
10
|
t.integer :decidim_organization_id,
|
11
11
|
foreign_key: true,
|
12
12
|
index: {
|
13
|
-
name:
|
13
|
+
name: "index_decidim_initiatives_on_decidim_organization_id"
|
14
14
|
}
|
15
15
|
|
16
16
|
# Text search indexes for initiatives.
|
17
|
-
t.index :title, name:
|
18
|
-
t.index :description, name:
|
17
|
+
t.index :title, name: "decidim_initiatives_title_search"
|
18
|
+
t.index :description, name: "decidim_initiatives_description_search"
|
19
19
|
|
20
20
|
t.references :decidim_author, index: true
|
21
21
|
t.string :banner_image
|
@@ -5,10 +5,10 @@ class CreateDecidimInitiativesCommitteeMembers < ActiveRecord::Migration[5.1]
|
|
5
5
|
def change
|
6
6
|
create_table :decidim_initiatives_committee_members do |t|
|
7
7
|
t.references :decidim_initiatives, index: {
|
8
|
-
name:
|
8
|
+
name: "index_decidim_committee_members_initiative"
|
9
9
|
}
|
10
10
|
t.references :decidim_users, index: {
|
11
|
-
name:
|
11
|
+
name: "index_decidim_committee_members_user"
|
12
12
|
}
|
13
13
|
t.integer :state, index: true, null: false, default: 0
|
14
14
|
|
@@ -1,10 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class AddInitiativeSupportsCountToInitiative < ActiveRecord::Migration[5.1]
|
4
|
+
class Initiative < ApplicationRecord
|
5
|
+
self.table_name = :decidim_initiatives
|
6
|
+
end
|
7
|
+
|
2
8
|
def change
|
3
9
|
add_column :decidim_initiatives, :initiative_supports_count, :integer, null: false, default: 0
|
4
10
|
|
5
11
|
reversible do |change|
|
6
12
|
change.up do
|
7
|
-
|
13
|
+
Initiative.find_each do |initiative|
|
8
14
|
initiative.initiative_supports_count = initiative.votes.supports.count
|
9
15
|
initiative.save
|
10
16
|
end
|
data/db/migrate/20171017090551_create_decidim_initiatives_decidim_initiatives_type_scopes.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class CreateDecidimInitiativesDecidimInitiativesTypeScopes < ActiveRecord::Migration[5.1]
|
2
4
|
def change
|
3
5
|
create_table :decidim_initiatives_type_scopes do |t|
|
4
|
-
t.references :decidim_initiatives_types, index: { name:
|
5
|
-
t.references :decidim_scopes, index: { name:
|
6
|
+
t.references :decidim_initiatives_types, index: { name: "idx_scoped_initiative_type_type" }
|
7
|
+
t.references :decidim_scopes, index: { name: "idx_scoped_initiative_type_scope" }
|
6
8
|
t.integer :supports_required, null: false
|
7
9
|
|
8
10
|
t.timestamps
|
@@ -1,14 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class AddScopesForAllInitiativeTypes < ActiveRecord::Migration[5.1]
|
4
|
+
class Scope < ApplicationRecord
|
5
|
+
self.table_name = :decidim_scopes
|
6
|
+
end
|
7
|
+
|
8
|
+
class Organization < ApplicationRecord
|
9
|
+
self.table_name = :decidim_organizations
|
10
|
+
|
11
|
+
has_many :scopes, foreign_key: "decidim_organization_id", class_name: "Scope"
|
12
|
+
end
|
13
|
+
|
14
|
+
class InitiativesType < ApplicationRecord
|
15
|
+
self.table_name = :decidim_initiatives_types
|
16
|
+
|
17
|
+
belongs_to :organization,
|
18
|
+
foreign_key: "decidim_organization_id",
|
19
|
+
class_name: "Organization"
|
20
|
+
end
|
21
|
+
|
22
|
+
class InitiativesTypeScope < ApplicationRecord
|
23
|
+
self.table_name = :decidim_initiatives_type_scopes
|
24
|
+
end
|
25
|
+
|
2
26
|
def up
|
3
27
|
# This migrantion intent is simply to keep seed data at staging
|
4
28
|
# environment consistent with the underlying data model. It is
|
5
29
|
# not relevant for production environments.
|
6
|
-
|
7
|
-
|
30
|
+
Organization.find_each do |organization|
|
31
|
+
InitiativesType.where(organization: organization).find_each do |type|
|
8
32
|
organization.scopes.each do |scope|
|
9
|
-
|
10
|
-
|
11
|
-
|
33
|
+
InitiativesTypeScope.create(
|
34
|
+
decidim_initiatives_types_id: type.id,
|
35
|
+
decidim_scopes_id: scope.id,
|
12
36
|
supports_required: 1000
|
13
37
|
)
|
14
38
|
end
|
@@ -1,9 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class UpdateInitiativeScopedType < ActiveRecord::Migration[5.1]
|
4
|
+
class InitiativesTypeScope < ApplicationRecord
|
5
|
+
self.table_name = :decidim_initiatives_type_scopes
|
6
|
+
end
|
7
|
+
|
8
|
+
class Scope < ApplicationRecord
|
9
|
+
self.table_name = :decidim_scopes
|
10
|
+
|
11
|
+
# Scope to return only the top level scopes.
|
12
|
+
#
|
13
|
+
# Returns an ActiveRecord::Relation.
|
14
|
+
def self.top_level
|
15
|
+
where parent_id: nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Organization < ApplicationRecord
|
20
|
+
self.table_name = :decidim_organizations
|
21
|
+
|
22
|
+
has_many :scopes, foreign_key: "decidim_organization_id", class_name: "Scope"
|
23
|
+
|
24
|
+
# Returns top level scopes for this organization.
|
25
|
+
#
|
26
|
+
# Returns an ActiveRecord::Relation.
|
27
|
+
def top_scopes
|
28
|
+
@top_scopes ||= scopes.top_level
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Initiative < ApplicationRecord
|
33
|
+
self.table_name = :decidim_initiatives
|
34
|
+
|
35
|
+
belongs_to :scoped_type,
|
36
|
+
foreign_key: "scoped_type_id",
|
37
|
+
class_name: "InitiativesTypeScope"
|
38
|
+
|
39
|
+
belongs_to :organization,
|
40
|
+
foreign_key: "decidim_organization_id",
|
41
|
+
class_name: "Organization"
|
42
|
+
end
|
43
|
+
|
2
44
|
def up
|
3
|
-
|
4
|
-
initiative.scoped_type =
|
5
|
-
|
6
|
-
|
45
|
+
Initiative.find_each do |initiative|
|
46
|
+
initiative.scoped_type = InitiativesTypeScope.find_by(
|
47
|
+
decidim_initiatives_types_id: initiative.type_id,
|
48
|
+
decidim_scopes_id: initiative.decidim_scope_id || initiative.organization.top_scopes.first
|
7
49
|
)
|
8
50
|
|
9
51
|
initiative.save!
|
@@ -11,5 +53,6 @@ class UpdateInitiativeScopedType < ActiveRecord::Migration[5.1]
|
|
11
53
|
end
|
12
54
|
|
13
55
|
def down
|
56
|
+
raise ActiveRecord::IrreversibleMigration, "Can't undo initialization of mandatory attribute"
|
14
57
|
end
|
15
58
|
end
|
@@ -1,10 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class CreateStaticPages < ActiveRecord::Migration[5.1]
|
4
|
+
class Organization < ApplicationRecord
|
5
|
+
self.table_name = :decidim_organizations
|
6
|
+
end
|
7
|
+
|
8
|
+
class StaticPage < ApplicationRecord
|
9
|
+
self.table_name = :decidim_static_pages
|
10
|
+
end
|
11
|
+
|
2
12
|
def change
|
3
|
-
|
4
|
-
|
5
|
-
page.
|
6
|
-
page.title = localized_attribute(organization,
|
7
|
-
page.content = localized_attribute(organization,
|
13
|
+
Organization.find_each do |organization|
|
14
|
+
StaticPage.find_or_create_by!(slug: "initiatives") do |page|
|
15
|
+
page.decidim_organization_id = organization.id
|
16
|
+
page.title = localized_attribute(organization, "initiatives", :title)
|
17
|
+
page.content = localized_attribute(organization, "initiatives", :content)
|
8
18
|
end
|
9
19
|
end
|
10
20
|
end
|
@@ -20,5 +30,4 @@ class CreateStaticPages < ActiveRecord::Migration[5.1]
|
|
20
30
|
result.update(locale => text)
|
21
31
|
end
|
22
32
|
end
|
23
|
-
|
24
33
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class CreateInitiativeDescriptionIndex < ActiveRecord::Migration[5.1]
|
2
4
|
def up
|
3
|
-
execute
|
5
|
+
execute "CREATE INDEX decidim_initiatives_description_search ON decidim_initiatives(md5(description::text))"
|
4
6
|
end
|
5
7
|
|
6
8
|
def down
|
7
|
-
execute
|
9
|
+
execute "DROP INDEX decidim_initiatives_description_search"
|
8
10
|
end
|
9
11
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class EnablePgExtensions < ActiveRecord::Migration[5.1]
|
2
4
|
def change
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
puts "Can not deal with pg_trgm extension: #{e}"
|
7
|
-
end
|
5
|
+
enable_extension "pg_trgm"
|
6
|
+
rescue ActiveRecord::CatchAll => e
|
7
|
+
logger.error "Can not deal with pg_trgm extension: #{e}"
|
8
8
|
end
|
9
9
|
end
|
@@ -2,12 +2,16 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class AddUniqueOnVotes < ActiveRecord::Migration[5.1]
|
5
|
+
class InitiativesVote < ApplicationRecord
|
6
|
+
self.table_name = :decidim_initiatives_votes
|
7
|
+
end
|
8
|
+
|
5
9
|
def get_duplicates(*columns)
|
6
|
-
|
10
|
+
InitiativesVote.select("#{columns.join(",")}, COUNT(*)").group(columns).having("COUNT(*) > 1")
|
7
11
|
end
|
8
12
|
|
9
13
|
def row_count(issue)
|
10
|
-
|
14
|
+
InitiativesVote.where(
|
11
15
|
decidim_initiative_id: issue.decidim_initiative_id,
|
12
16
|
decidim_author_id: issue.decidim_author_id,
|
13
17
|
decidim_user_group_id: issue.decidim_user_group_id
|
@@ -15,7 +19,7 @@ class AddUniqueOnVotes < ActiveRecord::Migration[5.1]
|
|
15
19
|
end
|
16
20
|
|
17
21
|
def find_next(issue)
|
18
|
-
|
22
|
+
InitiativesVote.find_by(
|
19
23
|
decidim_initiative_id: issue.decidim_initiative_id,
|
20
24
|
decidim_author_id: issue.decidim_author_id,
|
21
25
|
decidim_user_group_id: issue.decidim_user_group_id
|
@@ -23,18 +27,15 @@ class AddUniqueOnVotes < ActiveRecord::Migration[5.1]
|
|
23
27
|
end
|
24
28
|
|
25
29
|
def up
|
26
|
-
columns =
|
30
|
+
columns = [:decidim_initiative_id, :decidim_author_id, :decidim_user_group_id]
|
27
31
|
|
28
32
|
get_duplicates(columns).each do |issue|
|
29
|
-
while row_count(issue) > 1
|
30
|
-
find_next(issue)&.destroy
|
31
|
-
end
|
33
|
+
find_next(issue)&.destroy while row_count(issue) > 1
|
32
34
|
end
|
33
35
|
|
34
|
-
|
35
36
|
add_index :decidim_initiatives_votes,
|
36
37
|
columns,
|
37
38
|
unique: true,
|
38
|
-
name:
|
39
|
+
name: "decidim_initiatives_voutes_author_uniqueness_index"
|
39
40
|
end
|
40
41
|
end
|
data/lib/decidim/initiatives.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "rails"
|
4
|
+
require "active_support/all"
|
5
|
+
require "decidim/core"
|
6
6
|
|
7
7
|
module Decidim
|
8
8
|
module Initiatives
|
@@ -10,14 +10,14 @@ module Decidim
|
|
10
10
|
class AdminEngine < ::Rails::Engine
|
11
11
|
isolate_namespace Decidim::Initiatives::Admin
|
12
12
|
|
13
|
-
paths[
|
13
|
+
paths["db/migrate"] = nil
|
14
14
|
|
15
15
|
routes do
|
16
16
|
resources :initiatives_types, except: :show do
|
17
|
-
resources :initiatives_type_scopes, except:
|
17
|
+
resources :initiatives_type_scopes, except: [:index, :show]
|
18
18
|
end
|
19
19
|
|
20
|
-
resources :initiatives, only:
|
20
|
+
resources :initiatives, only: [:index, :show, :edit, :update], param: :slug do
|
21
21
|
member do
|
22
22
|
get :send_to_technical_validation
|
23
23
|
post :publish
|
@@ -28,9 +28,9 @@ module Decidim
|
|
28
28
|
delete :reject
|
29
29
|
end
|
30
30
|
|
31
|
-
resources :attachments, controller:
|
31
|
+
resources :attachments, controller: "initiative_attachments"
|
32
32
|
|
33
|
-
resources :committee_requests, only:
|
33
|
+
resources :committee_requests, only: [:index] do
|
34
34
|
member do
|
35
35
|
get :approve
|
36
36
|
delete :revoke
|
@@ -38,9 +38,9 @@ module Decidim
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
scope
|
42
|
-
resources :
|
43
|
-
resource :permissions, controller:
|
41
|
+
scope "/initiatives/:initiative_slug" do
|
42
|
+
resources :components do
|
43
|
+
resource :permissions, controller: "component_permissions"
|
44
44
|
member do
|
45
45
|
put :publish
|
46
46
|
put :unpublish
|
@@ -49,42 +49,42 @@ module Decidim
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
scope
|
53
|
-
Decidim.
|
52
|
+
scope "/initiatives/:initiative_slug/components/:component_id/manage" do
|
53
|
+
Decidim.component_manifests.each do |manifest|
|
54
54
|
next unless manifest.admin_engine
|
55
55
|
|
56
|
-
constraints
|
57
|
-
mount manifest.admin_engine, at:
|
56
|
+
constraints CurrentComponent.new(manifest) do
|
57
|
+
mount manifest.admin_engine, at: "/", as: "decidim_admin_initiative_#{manifest.name}"
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
initializer
|
64
|
-
app.config.assets.precompile += %w
|
65
|
-
|
66
|
-
|
63
|
+
initializer "admin_decidim_initiatives.assets" do |app|
|
64
|
+
app.config.assets.precompile += %w(
|
65
|
+
admin_decidim_initiatives_manifest.js
|
66
|
+
)
|
67
67
|
end
|
68
68
|
|
69
|
-
initializer
|
69
|
+
initializer "decidim_assemblies.inject_abilities_to_user" do |_app|
|
70
70
|
Decidim.configure do |config|
|
71
|
-
config.admin_abilities += %w
|
71
|
+
config.admin_abilities += %w(
|
72
72
|
Decidim::Initiatives::Abilities::Admin::CommitteeUserAbility
|
73
73
|
Decidim::Initiatives::Abilities::Admin::InitiativeUserAbility
|
74
74
|
Decidim::Initiatives::Abilities::Admin::CommitteeAdminAbility
|
75
75
|
Decidim::Initiatives::Abilities::Admin::InitiativeAdminAbility
|
76
76
|
Decidim::Initiatives::Abilities::Admin::InitiativeTypeAbility
|
77
77
|
Decidim::Initiatives::Abilities::Admin::AttachmentsAbility
|
78
|
-
Decidim::Initiatives::Abilities::Admin::
|
79
|
-
|
78
|
+
Decidim::Initiatives::Abilities::Admin::ComponentsAbility
|
79
|
+
)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
initializer
|
83
|
+
initializer "decidim_assemblies.admin_menu" do
|
84
84
|
Decidim.menu :admin_menu do |menu|
|
85
|
-
menu.item I18n.t(
|
85
|
+
menu.item I18n.t("menu.initiatives", scope: "decidim.admin"),
|
86
86
|
decidim_admin_initiatives.initiatives_path,
|
87
|
-
icon_name:
|
87
|
+
icon_name: "chat",
|
88
88
|
position: 3.7,
|
89
89
|
active: :inclusive,
|
90
90
|
if: can?(:index, Decidim::Initiative)
|