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
@@ -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: 'filters' do
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
- extend Decidim::Initiatives::PartialTranslationsHelper
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
- 'decidim.initiatives.initiatives_mailer.creation_subject',
17
- title: partially_translated_attribute(initiative.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
- 'decidim.initiatives.initiatives_mailer.status_change_for',
31
- title: partially_translated_attribute(initiative.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
- 'decidim.initiatives.initiatives_mailer.status_change_body_for',
36
- title: partially_translated_attribute(initiative.title),
37
- state: I18n.t(initiative.state, scope: 'decidim.initiatives.admin_states')
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
- 'decidim.initiatives.initiatives_mailer.technical_validation_for',
54
- title: partially_translated_attribute(initiative.title)
55
+ "decidim.initiatives.initiatives_mailer.technical_validation_for",
56
+ title: translated_attribute(initiative.title)
55
57
  )
56
58
  @body = I18n.t(
57
- 'decidim.initiatives.initiatives_mailer.technical_validation_body_for',
58
- title: partially_translated_attribute(initiative.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
- 'decidim.initiatives.initiatives_mailer.progress_report_body_for',
73
- title: partially_translated_attribute(initiative.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
- 'decidim.initiatives.initiatives_mailer.progress_report_for',
79
- title: partially_translated_attribute(initiative.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", dependent: :destroy,
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 :features, as: :participatory_space
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
- .joins(%q(LEFT OUTER JOIN "decidim_comments_comments" ON "decidim_comments_comments"."decidim_commentable_id" = "decidim_initiatives"."id" AND "decidim_comments_comments"."decidim_commentable_type" = 'Decidim::Initiative'))
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 feature
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
- update_attributes(
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 feature
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
- update_attributes(published_at: nil, state: "discarded")
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.
@@ -25,6 +25,7 @@ module Decidim
25
25
 
26
26
  def define_abilities
27
27
  return if user.admin?
28
+ return unless context[:current_participatory_space].is_a? Initiative
28
29
 
29
30
  can :read, Decidim::Attachment do |attachment|
30
31
  attachment.attached_to.is_a?(Decidim::Initiative) &&
@@ -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 features
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 FeaturesAbility
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::Initiatives::PartialTranslationsHelper
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 = partially_translated_attribute(initiative.title)
38
- description = partially_translated_attribute(initiative.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(feature: meetings_feature).count
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(feature: meetings_feature).each do |meeting|
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 meetings_feature
48
- @meetings_feature ||= Decidim::Feature.find_by(participatory_space: initiative, manifest_name: "meetings")
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
- base = base.where('title->>? ilike ?', loc, "#{q}%")
52
- .or(Initiative.where('description->>? ilike ?', loc, "#{q}%"))
53
- else
54
- base = base
55
- .or(Initiative.where('title->>? ilike ?', loc, "#{q}%"))
56
- .or(Initiative.where('description->>? ilike ?', loc, "#{q}%"))
57
- end
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
@@ -32,7 +32,7 @@ module Decidim
32
32
 
33
33
  InitiativesType
34
34
  .where(organization: @organization)
35
- .where('title->>? ilike ?', @lang, "#{@text}%")
35
+ .where("title->>? ilike ?", @lang, "#{@text}%")
36
36
  end
37
37
  end
38
38
  end
@@ -26,4 +26,4 @@ module Decidim
26
26
  end
27
27
  end
28
28
  end
29
- end
29
+ end
@@ -24,9 +24,9 @@ module Decidim
24
24
  def query
25
25
  Initiative
26
26
  .joins(:committee_members)
27
- .where('decidim_initiatives_committee_members.state = 2')
28
- .where('decidim_initiatives_committee_members.decidim_users_id = ?', user.id)
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.now - period_length
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: 'validating')
26
- .where('updated_at < ?', @period_length)
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: 'published')
14
- .where(signature_type: 'online')
15
- .where('signature_end_time < ?', DateTime.now)
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 'closed'
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 == 'all'
45
+ return query if type == "all"
46
46
 
47
47
  query
48
48
  .joins(:scoped_type)
49
49
  .where(
50
- 'decidim_initiatives_type_scopes.decidim_initiatives_types_id = ?',
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 == 'myself' && options[:current_user]
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
- 'decidim_initiatives_type_scopes.decidim_scopes_id': scope_id
68
+ "decidim_initiatives_type_scopes.decidim_scopes_id": scope_id
69
69
  )
70
70
  end
71
71
  end
@@ -33,4 +33,4 @@ module Decidim
33
33
  end
34
34
  end
35
35
  end
36
- end
36
+ 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.published? || initiative.discarded?
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
- <h5 class="card__title"><%= partially_translated_attribute initiative.title %></h5>
5
+ <%= link_to initiative do %>
6
+ <h5 class="card__title"><%= translated_attribute initiative.title %></h5>
7
7
  <% end %>
8
- <%= render partial: 'decidim/initiatives/initiatives/author', locals: { initiative: initiative } %>
8
+ <%= render partial: "decidim/initiatives/initiatives/author", locals: { initiative: initiative } %>
9
9
  </div>
10
- <%= render partial: 'decidim/initiatives/initiatives/initiative_badge', locals: { initiative: initiative } %>
11
- <%= simple_format Truncato.truncate(partially_translated_attribute(initiative.description), max_length: 100, separator: '...') %>
12
- <%= render partial: 'decidim/initiatives/initiatives/tags', locals: { resource: initiative } %>
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: 'decidim/initiatives/initiatives/supports_count', locals: { initiative: initiative } %>
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('initiatives.initiative.check', scope: 'layouts.decidim'),
24
+ <%= link_to t("initiatives.initiative.check", scope: "layouts.decidim"),
25
25
  initiative,
26
- class: 'card__button button small secondary' %>
26
+ class: "card__button button small secondary" %>
27
27
  <% else %>
28
- <%= link_to t('initiatives.initiative.check_and_support', scope: 'layouts.decidim'),
28
+ <%= link_to t("initiatives.initiative.check_and_support", scope: "layouts.decidim"),
29
29
  initiative,
30
- class: 'card__button button small secondary' %>
30
+ class: "card__button button small secondary" %>
31
31
  <% end %>
32
32
  </div>
33
33
  </div>