decidim-debates 0.28.2 → 0.29.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc225a06710d3f62e1d7e78c90c80106db14169a07b090515b165becf5548cb8
4
- data.tar.gz: dc7740a978e83c189848d92642b2478571d48abf2613b9b22db38c59b07fc924
3
+ metadata.gz: a949fe9f6dc4fe6f3554ec71c9039a3126573bbe17e92abf662d0aba33bf1790
4
+ data.tar.gz: c6bc45679856e1759135352bb78ea8e9401a22fce2386c6a28ad6dbd376fcb13
5
5
  SHA512:
6
- metadata.gz: aa534652134cdf5c6e1e9dcd6f0ddc82ed814707a201406090e10174d29f393b1f5472d667d0f8be74d6f5d90ee7d8f0454bf460a9183cc55a8a82172f6eb5d8
7
- data.tar.gz: b63bd359841719ebbaad98ea758181e3e7ebb5382dbed08e82315e01f9299b391a75512d11221deb31f39f00a9c9ffdab74540f2bf3f1f04a35598ee00126472
6
+ metadata.gz: 0be328dbe0deb9e6ad8bda5d15e95c02f9b73c9131104fac316fbdb02f6f7adc409fb6377e3ad2c247a33988664754fbdca6d60161ebb88c08698adcd987ee50
7
+ data.tar.gz: 698c3ae06ad7b2b72db4dcc22f46afe255c9354ec34ec34f29e29af8f33eff8391cb470a9a2699e39fc71289ada2512d5ba01ce50d72ae234054aa63fe02fe99
@@ -4,49 +4,14 @@ module Decidim
4
4
  module Debates
5
5
  module Admin
6
6
  # A command with all the business logic when an admin closes a debate.
7
- class CloseDebate < Decidim::Command
8
- # Public: Initializes the command.
9
- #
10
- # form - A form object with the params.
11
- def initialize(form)
12
- @form = form
13
- end
14
-
15
- # Executes the command. Broadcasts these events:
16
- #
17
- # - :ok when everything is valid, together with the debate.
18
- # - :invalid if the form was not valid and we could not proceed.
19
- #
20
- # Returns nothing.
21
- def call
22
- return broadcast(:invalid) if form.invalid?
23
-
24
- close_debate
25
- broadcast(:ok, debate)
26
- end
27
-
7
+ class CloseDebate < Decidim::Debates::CloseDebate
28
8
  private
29
9
 
30
- attr_reader :form
31
-
32
- def close_debate
33
- @debate = Decidim.traceability.perform_action!(
34
- :close,
35
- form.debate,
36
- form.current_user
37
- ) do
38
- form.debate.update!(
39
- conclusions: form.conclusions,
40
- closed_at: form.closed_at
41
- )
42
- end
43
-
44
- Decidim::EventsManager.publish(
45
- event: "decidim.events.debates.debate_closed",
46
- event_class: Decidim::Debates::CloseDebateEvent,
47
- resource: debate,
48
- followers: debate.followers
49
- )
10
+ def attributes
11
+ {
12
+ conclusions: form.conclusions,
13
+ closed_at: form.closed_at
14
+ }
50
15
  end
51
16
  end
52
17
  end
@@ -5,59 +5,33 @@ module Decidim
5
5
  module Admin
6
6
  # This command is executed when the user creates a Debate from the admin
7
7
  # panel.
8
- class CreateDebate < Decidim::Command
9
- def initialize(form)
10
- @form = form
11
- end
12
-
13
- # Creates the debate if valid.
14
- #
15
- # Broadcasts :ok if successful, :invalid otherwise.
16
- def call
17
- return broadcast(:invalid) if form.invalid?
8
+ class CreateDebate < Decidim::Commands::CreateResource
9
+ fetch_form_attributes :category, :component, :information_updates, :instructions, :scope, :start_time, :end_time, :comments_enabled
18
10
 
19
- transaction do
20
- create_debate
21
- send_notification_to_space_followers
22
- end
23
- broadcast(:ok)
24
- end
11
+ protected
25
12
 
26
- private
13
+ def resource_class = Decidim::Debates::Debate
27
14
 
28
- attr_reader :debate, :form
15
+ def extra_params = { visibility: "all" }
29
16
 
30
- def create_debate
17
+ def attributes
31
18
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
32
19
  parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
33
- params = {
34
- category: form.category,
35
- title: parsed_title,
36
- description: parsed_description,
37
- information_updates: form.information_updates,
38
- instructions: form.instructions,
39
- end_time: (form.end_time if form.finite),
40
- start_time: (form.start_time if form.finite),
41
- scope: form.scope,
42
- component: form.current_component,
43
- author: form.current_organization,
44
- comments_enabled: form.comments_enabled
45
- }
46
-
47
- @debate = Decidim.traceability.create!(
48
- Debate,
49
- form.current_user,
50
- params,
51
- visibility: "all"
52
- )
20
+ super.merge({
21
+ author: form.current_organization,
22
+ title: parsed_title,
23
+ description: parsed_description,
24
+ end_time: (form.end_time if form.finite),
25
+ start_time: (form.start_time if form.finite)
26
+ })
53
27
  end
54
28
 
55
- def send_notification_to_space_followers
29
+ def run_after_hooks
56
30
  Decidim::EventsManager.publish(
57
31
  event: "decidim.events.debates.debate_created",
58
32
  event_class: Decidim::Debates::CreateDebateEvent,
59
- resource: debate,
60
- followers: form.current_component.participatory_space.followers,
33
+ resource:,
34
+ followers: form.component.participatory_space.followers,
61
35
  extra: {
62
36
  type: "participatory_space"
63
37
  }
@@ -5,47 +5,19 @@ module Decidim
5
5
  module Admin
6
6
  # This command is executed when the user changes a Debate from the admin
7
7
  # panel.
8
- class UpdateDebate < Decidim::Command
9
- # Initializes a UpdateDebate Command.
10
- #
11
- # form - The form from which to get the data.
12
- # debate - The current instance of the page to be updated.
13
- def initialize(form, debate)
14
- @form = form
15
- @debate = debate
16
- end
17
-
18
- # Updates the debate if valid.
19
- #
20
- # Broadcasts :ok if successful, :invalid otherwise.
21
- def call
22
- return broadcast(:invalid) if form.invalid?
23
-
24
- update_debate
25
- broadcast(:ok)
26
- end
8
+ class UpdateDebate < Decidim::Commands::UpdateResource
9
+ fetch_form_attributes :category, :information_updates, :instructions, :scope, :start_time, :end_time, :comments_enabled
27
10
 
28
11
  private
29
12
 
30
- attr_reader :debate, :form
31
-
32
- def update_debate
13
+ def attributes
33
14
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
34
15
  parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
35
16
 
36
- Decidim.traceability.update!(
37
- debate,
38
- form.current_user,
39
- category: form.category,
40
- title: parsed_title,
41
- description: parsed_description,
42
- information_updates: form.information_updates,
43
- instructions: form.instructions,
44
- end_time: form.end_time,
45
- start_time: form.start_time,
46
- scope: form.scope,
47
- comments_enabled: form.comments_enabled
48
- )
17
+ super.merge({
18
+ title: parsed_title,
19
+ description: parsed_description
20
+ })
49
21
  end
50
22
  end
51
23
  end
@@ -4,33 +4,30 @@ module Decidim
4
4
  module Debates
5
5
  # This command is executed when the user creates a Debate from the public
6
6
  # views.
7
- class CreateDebate < Decidim::Command
8
- def initialize(form)
9
- @form = form
10
- end
7
+ class CreateDebate < Decidim::Commands::CreateResource
8
+ fetch_form_attributes :category, :scope
9
+
10
+ private
11
11
 
12
- # Creates the debate if valid.
13
- #
14
- # Broadcasts :ok if successful, :invalid otherwise.
15
- def call
16
- return broadcast(:invalid) if form.invalid?
12
+ def resource_class = Decidim::Debates::Debate
17
13
 
14
+ def extra_params = { visibility: "public-only" }
15
+
16
+ def create_resource
18
17
  with_events(with_transaction: true) do
19
- create_debate
18
+ super
20
19
  end
20
+ end
21
+
22
+ def run_after_hooks
21
23
  send_notification_to_author_followers
22
24
  send_notification_to_space_followers
23
25
  follow_debate
24
- broadcast(:ok, debate)
25
26
  end
26
27
 
27
- private
28
-
29
- attr_reader :debate, :form
30
-
31
28
  def event_arguments
32
29
  {
33
- resource: debate,
30
+ resource:,
34
31
  extra: {
35
32
  event_author: form.current_user,
36
33
  locale:
@@ -38,37 +35,25 @@ module Decidim
38
35
  }
39
36
  end
40
37
 
41
- def create_debate
38
+ def attributes
42
39
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
43
40
  parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
44
- params = {
45
- author: form.current_user,
46
- decidim_user_group_id: form.user_group_id,
47
- category: form.category,
48
- title: {
49
- I18n.locale => parsed_title
50
- },
51
- description: {
52
- I18n.locale => parsed_description
53
- },
54
- scope: form.scope,
55
- component: form.current_component
56
- }
57
41
 
58
- @debate = Decidim.traceability.create!(
59
- Debate,
60
- form.current_user,
61
- params,
62
- visibility: "public-only"
63
- )
42
+ super.merge({
43
+ author: form.current_user,
44
+ decidim_user_group_id: form.user_group_id,
45
+ title: { I18n.locale => parsed_title },
46
+ description: { I18n.locale => parsed_description },
47
+ component: form.current_component
48
+ })
64
49
  end
65
50
 
66
51
  def send_notification_to_author_followers
67
52
  Decidim::EventsManager.publish(
68
53
  event: "decidim.events.debates.debate_created",
69
54
  event_class: Decidim::Debates::CreateDebateEvent,
70
- resource: debate,
71
- followers: debate.author.followers,
55
+ resource:,
56
+ followers: resource.author.followers,
72
57
  extra: {
73
58
  type: "user"
74
59
  }
@@ -79,8 +64,8 @@ module Decidim
79
64
  Decidim::EventsManager.publish(
80
65
  event: "decidim.events.debates.debate_created",
81
66
  event_class: Decidim::Debates::CreateDebateEvent,
82
- resource: debate,
83
- followers: debate.participatory_space.followers,
67
+ resource:,
68
+ followers: resource.participatory_space.followers,
84
69
  extra: {
85
70
  type: "participatory_space"
86
71
  }
@@ -89,9 +74,9 @@ module Decidim
89
74
 
90
75
  def follow_debate
91
76
  follow_form = Decidim::FollowForm
92
- .from_params(followable_gid: debate.to_signed_global_id.to_s)
93
- .with_context(current_user: debate.author)
94
- Decidim::CreateFollow.call(follow_form, debate.author)
77
+ .from_params(followable_gid: resource.to_signed_global_id.to_s)
78
+ .with_context(current_user: resource.author)
79
+ Decidim::CreateFollow.call(follow_form)
95
80
  end
96
81
  end
97
82
  end
@@ -3,38 +3,20 @@
3
3
  module Decidim
4
4
  module Debates
5
5
  # A command with all the business logic when a user updates a debate.
6
- class UpdateDebate < Decidim::Command
7
- # Public: Initializes the command.
8
- #
9
- # form - A form object with the params.
10
- def initialize(form)
11
- @form = form
12
- end
6
+ class UpdateDebate < Decidim::Commands::UpdateResource
7
+ fetch_form_attributes :category, :scope
13
8
 
14
- # Executes the command. Broadcasts these events:
15
- #
16
- # - :ok when everything is valid, together with the debate.
17
- # - :invalid if the form was not valid and we could not proceed.
18
- #
19
- # Returns nothing.
20
- def call
21
- return broadcast(:invalid) if form.invalid?
22
- return broadcast(:invalid) unless form.debate.editable_by?(form.current_user)
9
+ private
23
10
 
11
+ def update_resource
24
12
  with_events(with_transaction: true) do
25
- update_debate
13
+ super
26
14
  end
27
-
28
- broadcast(:ok, @debate)
29
15
  end
30
16
 
31
- private
32
-
33
- attr_reader :form
34
-
35
17
  def event_arguments
36
18
  {
37
- resource: @debate,
19
+ resource:,
38
20
  extra: {
39
21
  event_author: form.current_user,
40
22
  locale:
@@ -42,28 +24,16 @@ module Decidim
42
24
  }
43
25
  end
44
26
 
45
- def update_debate
46
- @debate = Decidim.traceability.update!(
47
- @form.debate,
48
- @form.current_user,
49
- attributes,
50
- visibility: "public-only"
51
- )
52
- end
27
+ def extra_params = { visibility: "public-only" }
53
28
 
54
29
  def attributes
55
30
  parsed_title = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.title, current_organization: form.current_organization).rewrite
56
31
  parsed_description = Decidim::ContentProcessor.parse_with_processor(:hashtag, form.description, current_organization: form.current_organization).rewrite
57
- {
58
- category: form.category,
59
- title: {
60
- I18n.locale => parsed_title
61
- },
62
- description: {
63
- I18n.locale => parsed_description
64
- },
65
- scope: form.scope
66
- }
32
+
33
+ super.merge({
34
+ title: { I18n.locale => parsed_title },
35
+ description: { I18n.locale => parsed_description }
36
+ })
67
37
  end
68
38
  end
69
39
  end
@@ -54,7 +54,7 @@ module Decidim
54
54
 
55
55
  @form = form(DebateForm).from_params(params)
56
56
 
57
- UpdateDebate.call(@form) do
57
+ UpdateDebate.call(@form, debate) do
58
58
  on(:ok) do |debate|
59
59
  flash[:notice] = I18n.t("debates.update.success", scope: "decidim.debates")
60
60
  redirect_to Decidim::ResourceLocatorPresenter.new(debate).path
@@ -7,7 +7,7 @@ module Decidim
7
7
  #
8
8
  # "user" - The event is being sent to the followers of the debate
9
9
  # author
10
- # "participatory_space" - The event is being sento to the followers
10
+ # "participatory_space" - The event is being sent to the followers
11
11
  # of the event's participatory space.
12
12
  class CreateDebateEvent < Decidim::Events::SimpleEvent
13
13
  include Decidim::Events::AuthorEvent
@@ -43,7 +43,7 @@ module Decidim
43
43
  @category ||= current_component.categories.find_by(id: decidim_category_id)
44
44
  end
45
45
 
46
- # Finds the Scope from the given decidim_scope_id, uses the compoenent scope if missing.
46
+ # Finds the Scope from the given decidim_scope_id, uses the component scope if missing.
47
47
  #
48
48
  # Returns a Decidim::Scope
49
49
  def scope
@@ -86,7 +86,7 @@ module Decidim
86
86
 
87
87
  # Public: Overrides the `reported_searchable_content_extras` Reportable concern method.
88
88
  def reported_searchable_content_extras
89
- [normalized_author.name]
89
+ [author_name]
90
90
  end
91
91
 
92
92
  # Public: Calculates whether the current debate is an AMA-styled one or not.
@@ -1,11 +1,11 @@
1
1
  <div class="form__wrapper">
2
2
  <div class="card pt-4">
3
3
  <div class="card-section debate-fields">
4
- <div class="row column hashtags__container">
4
+ <div class="row column">
5
5
  <%= form.translated :text_field, :title, autofocus: true, class: "js-hashtags", hashtaggable: true, aria: { label: :title } %>
6
6
  </div>
7
7
 
8
- <div class="row column hashtags__container">
8
+ <div class="row column">
9
9
  <%= form.translated :editor, :description, hashtaggable: true, aria: { label: :description } %>
10
10
  </div>
11
11
 
@@ -16,7 +16,7 @@
16
16
  <th><%= t("models.debate.fields.start_time", scope: "decidim.debates") %></th>
17
17
  <th><%= t("models.debate.fields.end_time", scope: "decidim.debates") %></th>
18
18
  <%= th_resource_scope_label %>
19
- <th class="actions"><%= t("actions.title", scope: "decidim.debates") %></th>
19
+ <th><%= t("actions.title", scope: "decidim.debates") %></th>
20
20
  </tr>
21
21
  </thead>
22
22
  <tbody>
@@ -30,7 +30,7 @@ edit_link(
30
30
  <div class="layout-author">
31
31
  <%= cell "decidim/author", debate_presenter.author, skip_profile_link: true %>
32
32
  <% if debate.closed? %>
33
- <span class="success label proposal-status">
33
+ <span class="success label">
34
34
  <%= t("debate_closed", scope: "decidim.debates.debates.show") %>
35
35
  </span>
36
36
  <% end %>
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  "homepage_uri" => "https://decidim.org",
19
19
  "source_code_uri" => "https://github.com/decidim/decidim"
20
20
  }
21
- s.required_ruby_version = "~> 3.1.0"
21
+ s.required_ruby_version = "~> 3.2.0"
22
22
 
23
23
  s.name = "decidim-debates"
24
24
  s.summary = "Decidim debates module"
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-debates version.
5
5
  module Debates
6
6
  def self.version
7
- "0.28.2"
7
+ "0.29.0.rc2"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-debates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.2
4
+ version: 0.29.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -19,56 +19,56 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.28.2
22
+ version: 0.29.0.rc2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.28.2
29
+ version: 0.29.0.rc2
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: decidim-core
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 0.28.2
36
+ version: 0.29.0.rc2
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 0.28.2
43
+ version: 0.29.0.rc2
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: decidim-admin
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: 0.28.2
50
+ version: 0.29.0.rc2
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: 0.28.2
57
+ version: 0.29.0.rc2
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: decidim-dev
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - '='
63
63
  - !ruby/object:Gem::Version
64
- version: 0.28.2
64
+ version: 0.29.0.rc2
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: 0.28.2
71
+ version: 0.29.0.rc2
72
72
  description: A debates component for decidim's participatory spaces.
73
73
  email:
74
74
  - josepjaume@gmail.com
@@ -279,14 +279,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
279
279
  requirements:
280
280
  - - "~>"
281
281
  - !ruby/object:Gem::Version
282
- version: 3.1.0
282
+ version: 3.2.0
283
283
  required_rubygems_version: !ruby/object:Gem::Requirement
284
284
  requirements:
285
- - - ">="
285
+ - - ">"
286
286
  - !ruby/object:Gem::Version
287
- version: '0'
287
+ version: 1.3.1
288
288
  requirements: []
289
- rubygems_version: 3.3.7
289
+ rubygems_version: 3.4.10
290
290
  signing_key:
291
291
  specification_version: 4
292
292
  summary: Decidim debates module