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.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -16
  3. data/Rakefile +1 -1
  4. data/app/assets/javascripts/decidim/initiatives/admin/invite_users.js +7 -8
  5. data/app/assets/javascripts/decidim/initiatives/application.js +1 -1
  6. data/app/assets/javascripts/decidim/initiatives/identity_selector_dialog.js +6 -9
  7. data/app/assets/javascripts/decidim/initiatives/scoped_type.js +8 -12
  8. data/app/assets/stylesheet/decidim/initiatives/admin.css.scss +10 -11
  9. data/app/assets/stylesheet/decidim/initiatives/application.css.scss +19 -19
  10. data/app/assets/stylesheet/decidim/initiatives/popularity_item.css.scss +40 -24
  11. data/app/assets/stylesheet/decidim/initiatives/print-initiative.css.scss +26 -26
  12. data/app/assets/stylesheet/decidim/initiatives/social_share.css.scss +5 -4
  13. data/app/assets/stylesheet/decidim/initiatives/statistics.css.scss +4 -4
  14. data/app/commands/decidim/initiatives/admin/create_initiative_type.rb +1 -4
  15. data/app/commands/decidim/initiatives/admin/publish_initiative.rb +44 -0
  16. data/app/commands/decidim/initiatives/admin/send_initiative_to_technical_validation.rb +42 -0
  17. data/app/commands/decidim/initiatives/admin/unpublish_initiative.rb +44 -0
  18. data/app/commands/decidim/initiatives/admin/update_initiative.rb +9 -7
  19. data/app/commands/decidim/initiatives/admin/update_initiative_type.rb +1 -4
  20. data/app/commands/decidim/initiatives/create_initiative.rb +23 -13
  21. data/app/commands/decidim/initiatives/spawn_committee_request.rb +1 -1
  22. data/app/constraints/decidim/initiatives/current_component.rb +28 -0
  23. data/app/constraints/decidim/initiatives/current_initiative.rb +2 -2
  24. data/app/controllers/concerns/decidim/initiatives/action_authorization.rb +1 -1
  25. data/app/controllers/concerns/decidim/initiatives/admin/initiative_admin.rb +1 -3
  26. data/app/controllers/concerns/decidim/initiatives/orderable.rb +6 -6
  27. data/app/controllers/concerns/decidim/initiatives/type_selector_options.rb +1 -1
  28. data/app/controllers/decidim/initiatives/admin/application_controller.rb +1 -1
  29. data/app/controllers/decidim/initiatives/admin/{feature_permissions_controller.rb → component_permissions_controller.rb} +2 -2
  30. data/app/controllers/decidim/initiatives/admin/components_controller.rb +15 -0
  31. data/app/controllers/decidim/initiatives/admin/initiatives_controller.rb +29 -18
  32. data/app/controllers/decidim/initiatives/admin/initiatives_type_scopes_controller.rb +6 -6
  33. data/app/controllers/decidim/initiatives/admin/initiatives_types_controller.rb +7 -7
  34. data/app/controllers/decidim/initiatives/committee_requests_controller.rb +2 -3
  35. data/app/controllers/decidim/initiatives/create_initiative_controller.rb +5 -9
  36. data/app/controllers/decidim/initiatives/initiative_votes_controller.rb +3 -3
  37. data/app/controllers/decidim/initiatives/initiatives_controller.rb +0 -1
  38. data/app/forms/decidim/initiatives/admin/initiative_form.rb +1 -1
  39. data/app/forms/decidim/initiatives/admin/initiative_type_scope_form.rb +3 -2
  40. data/app/helpers/decidim/initiatives/create_initiative_helper.rb +7 -7
  41. data/app/helpers/decidim/initiatives/initiative_helper.rb +36 -29
  42. data/app/helpers/decidim/initiatives/initiatives_helper.rb +1 -1
  43. data/app/mailers/decidim/initiatives/initiatives_mailer.rb +18 -16
  44. data/app/models/decidim/initiative.rb +15 -7
  45. data/app/models/decidim/initiatives/abilities/admin/attachments_ability.rb +1 -0
  46. data/app/models/decidim/initiatives/abilities/admin/{features_ability.rb → components_ability.rb} +2 -3
  47. data/app/models/decidim/initiatives_vote.rb +3 -3
  48. data/app/presenters/decidim/initiatives/admin_log/initiative_presenter.rb +49 -0
  49. data/app/presenters/decidim/initiatives/initiative_stats_presenter.rb +4 -4
  50. data/app/queries/decidim/initiatives/admin/manageable_initiatives.rb +8 -8
  51. data/app/queries/decidim/initiatives/freetext_initiative_types.rb +1 -1
  52. data/app/queries/decidim/initiatives/initiatives_created.rb +1 -1
  53. data/app/queries/decidim/initiatives/initiatives_promoted.rb +3 -3
  54. data/app/queries/decidim/initiatives/outdated_validating_initiatives.rb +3 -3
  55. data/app/queries/decidim/initiatives/support_period_finished_initiatives.rb +3 -3
  56. data/app/services/decidim/initiatives/initiative_search.rb +5 -5
  57. data/app/services/decidim/initiatives/progress_notifier.rb +1 -1
  58. data/app/services/decidim/initiatives/status_change_notifier.rb +3 -9
  59. data/app/views/decidim/initiatives/_initiative.html.erb +11 -11
  60. data/app/views/decidim/initiatives/admin/committee_requests/index.html.erb +14 -14
  61. data/app/views/decidim/initiatives/admin/initiatives/_form.html.erb +5 -5
  62. data/app/views/decidim/initiatives/admin/initiatives/edit.html.erb +25 -25
  63. data/app/views/decidim/initiatives/admin/initiatives/index.html.erb +31 -31
  64. data/app/views/decidim/initiatives/admin/initiatives/show.html.erb +7 -8
  65. data/app/views/decidim/initiatives/admin/initiatives_type_scopes/_form.html.erb +1 -3
  66. data/app/views/decidim/initiatives/admin/initiatives_type_scopes/edit.html.erb +8 -8
  67. data/app/views/decidim/initiatives/admin/initiatives_type_scopes/new.html.erb +5 -5
  68. data/app/views/decidim/initiatives/admin/initiatives_types/_form.html.erb +2 -2
  69. data/app/views/decidim/initiatives/admin/initiatives_types/_initiative_type_scopes.html.erb +9 -9
  70. data/app/views/decidim/initiatives/admin/initiatives_types/edit.html.erb +8 -8
  71. data/app/views/decidim/initiatives/admin/initiatives_types/index.html.erb +3 -3
  72. data/app/views/decidim/initiatives/admin/initiatives_types/new.html.erb +3 -3
  73. data/app/views/decidim/initiatives/committee_requests/new.html.erb +13 -13
  74. data/app/views/decidim/initiatives/create_initiative/_finish_help.html.erb +7 -0
  75. data/app/views/decidim/initiatives/create_initiative/_share_committee_link.html.erb +4 -4
  76. data/app/views/decidim/initiatives/create_initiative/fill_data.html.erb +8 -8
  77. data/app/views/decidim/initiatives/create_initiative/finish.html.erb +10 -10
  78. data/app/views/decidim/initiatives/create_initiative/previous_form.html.erb +9 -9
  79. data/app/views/decidim/initiatives/create_initiative/promotal_committee.html.erb +8 -8
  80. data/app/views/decidim/initiatives/create_initiative/select_initiative_type.html.erb +9 -10
  81. data/app/views/decidim/initiatives/create_initiative/show_similar_initiatives.html.erb +7 -7
  82. data/app/views/decidim/initiatives/initiative_votes/update_buttons_and_counters.js.erb +2 -2
  83. data/app/views/decidim/initiatives/initiative_widgets/show.html.erb +1 -1
  84. data/app/views/decidim/initiatives/initiatives/_author.html.erb +3 -3
  85. data/app/views/decidim/initiatives/initiatives/_count.html.erb +1 -1
  86. data/app/views/decidim/initiatives/initiatives/_filters.html.erb +11 -11
  87. data/app/views/decidim/initiatives/initiatives/_filters_small_view.html.erb +5 -5
  88. data/app/views/decidim/initiatives/initiatives/_index_header.html.erb +1 -1
  89. data/app/views/decidim/initiatives/initiatives/_initiative_badge.html.erb +1 -1
  90. data/app/views/decidim/initiatives/initiatives/_initiatives.html.erb +2 -2
  91. data/app/views/decidim/initiatives/initiatives/_result.html.erb +4 -4
  92. data/app/views/decidim/initiatives/initiatives/_statistics.html.erb +5 -5
  93. data/app/views/decidim/initiatives/initiatives/_supports.html.erb +1 -1
  94. data/app/views/decidim/initiatives/initiatives/_supports_count.html.erb +1 -2
  95. data/app/views/decidim/initiatives/initiatives/_tags.html.erb +2 -2
  96. data/app/views/decidim/initiatives/initiatives/_vote_button.html.erb +3 -3
  97. data/app/views/decidim/initiatives/initiatives/_vote_cabin.html.erb +3 -3
  98. data/app/views/decidim/initiatives/initiatives/_votes_count.html.erb +2 -2
  99. data/app/views/decidim/initiatives/initiatives/index.html.erb +8 -8
  100. data/app/views/decidim/initiatives/initiatives/index.js.erb +2 -2
  101. data/app/views/decidim/initiatives/initiatives/show.html.erb +21 -21
  102. data/app/views/decidim/initiatives/initiatives/signature_identities.html.erb +6 -6
  103. data/app/views/decidim/initiatives/initiatives_mailer/_initiative_link.html.erb +2 -2
  104. data/app/views/decidim/initiatives/initiatives_mailer/notify_creation.html.erb +6 -6
  105. data/app/views/decidim/initiatives/initiatives_mailer/notify_progress.html.erb +2 -2
  106. data/app/views/decidim/initiatives/initiatives_mailer/notify_state_change.html.erb +2 -2
  107. data/app/views/decidim/initiatives/initiatives_mailer/notify_validating_request.html.erb +2 -2
  108. data/app/views/decidim/initiatives/initiatives_type_scopes/search.html.erb +1 -1
  109. data/app/views/layouts/decidim/_initiative_creation_header.html.erb +3 -4
  110. data/app/views/layouts/decidim/_initiative_header.html.erb +21 -21
  111. data/app/views/layouts/decidim/_initiative_header_steps.html.erb +1 -1
  112. data/app/views/layouts/decidim/admin/initiative.html.erb +15 -15
  113. data/app/views/layouts/decidim/admin/initiatives.html.erb +4 -4
  114. data/app/views/layouts/decidim/initiative.html.erb +2 -2
  115. data/app/views/layouts/decidim/initiative_creation.html.erb +4 -6
  116. data/config/locales/ca.yml +243 -246
  117. data/config/locales/en.yml +218 -222
  118. data/config/locales/es.yml +243 -246
  119. data/config/locales/eu.yml +322 -0
  120. data/config/locales/fi.yml +322 -0
  121. data/config/locales/fr.yml +322 -0
  122. data/config/locales/gl.yml +322 -0
  123. data/config/locales/it.yml +322 -0
  124. data/config/locales/nl.yml +322 -0
  125. data/config/locales/pl.yml +328 -0
  126. data/config/locales/pt-BR.yml +322 -0
  127. data/config/locales/pt.yml +322 -0
  128. data/config/locales/ru.yml +5 -0
  129. data/config/locales/sv.yml +322 -0
  130. data/config/locales/uk.yml +5 -0
  131. data/db/migrate/20170906091626_create_decidim_initiatives_types.rb +1 -1
  132. data/db/migrate/20170906094044_create_decidim_initiatives.rb +3 -3
  133. data/db/migrate/20170922152432_create_decidim_initiatives_committee_members.rb +2 -2
  134. data/db/migrate/20170927153744_change_signature_interval_to_optional.rb +2 -0
  135. data/db/migrate/20170928160302_add_decidim_user_group_id_to_decidim_initiatives_votes.rb +2 -0
  136. data/db/migrate/20170928160912_remove_scope_from_decidim_initiatives_votes.rb +2 -0
  137. data/db/migrate/20171011110714_add_banner_image_to_initiative_type.rb +2 -0
  138. data/db/migrate/20171011152425_add_hashtag_to_initiatives.rb +2 -0
  139. data/db/migrate/20171013090432_add_initiative_supports_count_to_initiative.rb +7 -1
  140. data/db/migrate/20171017090551_create_decidim_initiatives_decidim_initiatives_type_scopes.rb +4 -2
  141. data/db/migrate/20171017091458_remove_supports_required_from_decidim_initiatives_types.rb +2 -0
  142. data/db/migrate/20171017091734_add_scopes_for_all_initiative_types.rb +29 -5
  143. data/db/migrate/20171017094911_add_scoped_type_to_initiative.rb +2 -0
  144. data/db/migrate/20171017095143_update_initiative_scoped_type.rb +47 -4
  145. data/db/migrate/20171017103029_remove_unused_attributes_from_initiative.rb +2 -0
  146. data/db/migrate/20171019103358_add_initiative_notification_dates.rb +2 -0
  147. data/db/migrate/20171023075942_create_initiative_extra_data.rb +2 -0
  148. data/db/migrate/20171023122747_create_static_pages.rb +15 -6
  149. data/db/migrate/20171023141639_optional_validation_support.rb +2 -0
  150. data/db/migrate/20171031183855_add_offline_votes_to_initiative.rb +2 -0
  151. data/db/migrate/20171102094250_drop_initiative_description_index.rb +2 -0
  152. data/db/migrate/20171102094556_create_initiative_description_index.rb +4 -2
  153. data/db/migrate/20171109132011_enable_pg_extensions.rb +5 -5
  154. data/db/migrate/20171204094639_drop_decidim_initiatives_extra_data.rb +2 -0
  155. data/db/migrate/20171204103119_remove_requires_validation_from_decidim_initiatives_type.rb +2 -0
  156. data/db/migrate/20171214161410_add_unique_on_votes.rb +10 -9
  157. data/lib/decidim/initiatives.rb +2 -2
  158. data/lib/decidim/initiatives/admin_engine.rb +26 -26
  159. data/lib/decidim/initiatives/current_locale.rb +1 -1
  160. data/lib/decidim/initiatives/engine.rb +5 -5
  161. data/lib/decidim/initiatives/initiative_slug.rb +2 -3
  162. data/lib/decidim/initiatives/participatory_space.rb +19 -17
  163. data/lib/decidim/initiatives/test/factories.rb +2 -7
  164. data/lib/decidim/initiatives/version.rb +3 -1
  165. data/lib/tasks/decidim_initiatives.rake +2 -0
  166. metadata +57 -90
  167. data/LICENSE-AGPLv3.txt +0 -661
  168. data/app/constraints/decidim/initiatives/current_feature.rb +0 -28
  169. data/app/controllers/decidim/initiatives/admin/features_controller.rb +0 -16
  170. data/app/helpers/decidim/initiatives/partial_translations_helper.rb +0 -28
  171. data/app/views/decidim/initiatives/create_initiative/_compare_help.ca.html.erb +0 -2
  172. data/app/views/decidim/initiatives/create_initiative/_compare_help.en.html.erb +0 -2
  173. data/app/views/decidim/initiatives/create_initiative/_compare_help.es.html.erb +0 -2
  174. data/app/views/decidim/initiatives/create_initiative/_finish_help.ca.html.erb +0 -19
  175. data/app/views/decidim/initiatives/create_initiative/_finish_help.en.html.erb +0 -20
  176. data/app/views/decidim/initiatives/create_initiative/_finish_help.es.html.erb +0 -19
@@ -0,0 +1,5 @@
1
+ uk:
2
+ activemodel:
3
+ attributes:
4
+ initiative:
5
+ decidim_user_group_id: Автор
@@ -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: 'index_decidim_initiative_types_on_decidim_organization_id'
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: 'index_decidim_initiatives_on_decidim_organization_id'
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: 'decidim_initiatives_title_search'
18
- t.index :description, name: 'decidim_initiatives_description_search'
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: 'index_decidim_committee_members_initiative'
8
+ name: "index_decidim_committee_members_initiative"
9
9
  }
10
10
  t.references :decidim_users, index: {
11
- name: 'index_decidim_committee_members_user'
11
+ name: "index_decidim_committee_members_user"
12
12
  }
13
13
  t.integer :state, index: true, null: false, default: 0
14
14
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ChangeSignatureIntervalToOptional < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  change_column :decidim_initiatives, :signature_start_time, :date, null: true
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddDecidimUserGroupIdToDecidimInitiativesVotes < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives_votes,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveScopeFromDecidimInitiativesVotes < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  remove_column :decidim_initiatives_votes, :scope, :integer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddBannerImageToInitiativeType < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives_types, :banner_image, :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddHashtagToInitiatives < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives, :hashtag, :string, unique: true
@@ -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
- Decidim::Initiative.find_each do |initiative|
13
+ Initiative.find_each do |initiative|
8
14
  initiative.initiative_supports_count = initiative.votes.supports.count
9
15
  initiative.save
10
16
  end
@@ -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: 'idx_scoped_initiative_type_type' }
5
- t.references :decidim_scopes, index: { name: 'idx_scoped_initiative_type_scope' }
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveSupportsRequiredFromDecidimInitiativesTypes < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  remove_column :decidim_initiatives_types, :supports_required, :integer, null: false
@@ -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
- Decidim::Organization.find_each do |organization|
7
- Decidim::InitiativesType.where(organization: organization).find_each do |type|
30
+ Organization.find_each do |organization|
31
+ InitiativesType.where(organization: organization).find_each do |type|
8
32
  organization.scopes.each do |scope|
9
- Decidim::InitiativesTypeScope.create(
10
- type: type,
11
- scope: scope,
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddScopedTypeToInitiative < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives,
@@ -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
- Decidim::Initiative.find_each do |initiative|
4
- initiative.scoped_type = Decidim::InitiativesTypeScope.find_by(
5
- type: Decidim::InitiativesType.find(initiative.type_id),
6
- scope: Decidim::Scope.find_by(id: initiative.decidim_scope_id) || initiative.organization.top_scopes.first
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveUnusedAttributesFromInitiative < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  remove_column :decidim_initiatives, :banner_image, :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddInitiativeNotificationDates < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateInitiativeExtraData < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  create_table :decidim_initiatives_extra_data do |t|
@@ -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
- Decidim::Organization.find_each do |organization|
4
- Decidim::StaticPage.find_or_create_by!(slug: 'initiatives') do |page|
5
- page.organization = organization
6
- page.title = localized_attribute(organization,'initiatives', :title)
7
- page.content = localized_attribute(organization,'initiatives', :content)
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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class OptionalValidationSupport < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives_types,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddOfflineVotesToInitiative < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  add_column :decidim_initiatives,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class DropInitiativeDescriptionIndex < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  remove_index :decidim_initiatives, :description
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateInitiativeDescriptionIndex < ActiveRecord::Migration[5.1]
2
4
  def up
3
- execute 'CREATE INDEX decidim_initiatives_description_search ON decidim_initiatives(md5(description::text))'
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 'DROP INDEX decidim_initiatives_description_search'
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
- begin
4
- enable_extension 'pg_trgm'
5
- rescue => e
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class DropDecidimInitiativesExtraData < ActiveRecord::Migration[5.1]
2
4
  def up
3
5
  drop_table :decidim_initiatives_extra_data
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RemoveRequiresValidationFromDecidimInitiativesType < ActiveRecord::Migration[5.1]
2
4
  def change
3
5
  remove_column :decidim_initiatives_types,
@@ -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
- Decidim::InitiativesVote.select("#{columns.join(',')}, COUNT(*)").group(columns).having('COUNT(*) > 1')
10
+ InitiativesVote.select("#{columns.join(",")}, COUNT(*)").group(columns).having("COUNT(*) > 1")
7
11
  end
8
12
 
9
13
  def row_count(issue)
10
- Decidim::InitiativesVote.where(
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
- Decidim::InitiativesVote.find_by(
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 = %i[decidim_initiative_id decidim_author_id decidim_user_group_id]
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 do
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: 'decidim_initiatives_voutes_author_uniqueness_index'
39
+ name: "decidim_initiatives_voutes_author_uniqueness_index"
39
40
  end
40
41
  end
@@ -41,8 +41,8 @@ module Decidim
41
41
  120
42
42
  end
43
43
 
44
- # Features enabled for a new initiative
45
- config_accessor :default_features do
44
+ # Components enabled for a new initiative
45
+ config_accessor :default_components do
46
46
  [:pages, :meetings]
47
47
  end
48
48
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rails'
4
- require 'active_support/all'
5
- require 'decidim/core'
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['db/migrate'] = nil
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: %i[index show]
17
+ resources :initiatives_type_scopes, except: [:index, :show]
18
18
  end
19
19
 
20
- resources :initiatives, only: %i[index show edit update], param: :slug do
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: 'initiative_attachments'
31
+ resources :attachments, controller: "initiative_attachments"
32
32
 
33
- resources :committee_requests, only: %i[index] do
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 '/initiatives/:initiative_slug' do
42
- resources :features do
43
- resource :permissions, controller: 'feature_permissions'
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 '/initiatives/:initiative_slug/features/:feature_id/manage' do
53
- Decidim.feature_manifests.each do |manifest|
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 CurrentFeature.new(manifest) do
57
- mount manifest.admin_engine, at: '/', as: "decidim_admin_initiative_#{manifest.name}"
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 'admin_decidim_initiatives.assets' do |app|
64
- app.config.assets.precompile += %w[
65
- admin_decidim_initiatives_manifest.js
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 'decidim_assemblies.inject_abilities_to_user' do |_app|
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::FeaturesAbility
79
- ]
78
+ Decidim::Initiatives::Abilities::Admin::ComponentsAbility
79
+ )
80
80
  end
81
81
  end
82
82
 
83
- initializer 'decidim_assemblies.admin_menu' do
83
+ initializer "decidim_assemblies.admin_menu" do
84
84
  Decidim.menu :admin_menu do |menu|
85
- menu.item I18n.t('menu.initiatives', scope: 'decidim.admin'),
85
+ menu.item I18n.t("menu.initiatives", scope: "decidim.admin"),
86
86
  decidim_admin_initiatives.initiatives_path,
87
- icon_name: 'chat',
87
+ icon_name: "chat",
88
88
  position: 3.7,
89
89
  active: :inclusive,
90
90
  if: can?(:index, Decidim::Initiative)