decidim-debates 0.28.2 → 0.29.0.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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