decidim-core 0.30.0.rc2 → 0.30.0

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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/amendable/amendments/show.erb +1 -1
  3. data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +5 -3
  4. data/app/cells/decidim/profile_actions/show.erb +1 -1
  5. data/app/cells/decidim/report_button/already_reported_modal.erb +2 -2
  6. data/app/cells/decidim/report_button/flag_modal.erb +13 -27
  7. data/app/cells/decidim/report_button_cell.rb +2 -8
  8. data/app/cells/decidim/report_user_button/already_reported_modal.erb +11 -0
  9. data/app/cells/decidim/report_user_button/flag_modal.erb +46 -0
  10. data/app/cells/decidim/report_user_button/show.erb +2 -0
  11. data/app/cells/decidim/report_user_button_cell.rb +59 -0
  12. data/app/cells/decidim/resource_types_filter/show.erb +1 -1
  13. data/app/cells/decidim/resource_types_filter_cell.rb +6 -6
  14. data/app/cells/decidim/user_activity/show.erb +1 -1
  15. data/app/commands/decidim/create_omniauth_registration.rb +14 -8
  16. data/app/commands/decidim/create_report.rb +1 -6
  17. data/app/commands/decidim/search.rb +14 -0
  18. data/app/controllers/decidim/profiles_controller.rb +2 -2
  19. data/app/controllers/decidim/reports_controller.rb +1 -1
  20. data/app/controllers/decidim/user_activities_controller.rb +1 -1
  21. data/app/forms/decidim/account_form.rb +5 -2
  22. data/app/jobs/decidim/hide_child_resources_job.rb +3 -3
  23. data/app/jobs/decidim/migrate/paper_trail_job.rb +33 -0
  24. data/app/mailers/decidim/reported_mailer.rb +1 -0
  25. data/app/models/decidim/action_log.rb +1 -9
  26. data/app/models/decidim/user.rb +0 -4
  27. data/app/models/decidim/user_base_entity.rb +4 -0
  28. data/app/packs/src/decidim/datepicker/datepicker_functions.js +3 -3
  29. data/app/packs/src/decidim/index.js +4 -2
  30. data/app/packs/src/decidim/sticky_footer.js +19 -0
  31. data/app/packs/stylesheets/decidim/_cards.scss +4 -0
  32. data/app/packs/stylesheets/decidim/_content_blocks.scss +5 -1
  33. data/app/packs/stylesheets/decidim/_header.scss +6 -2
  34. data/app/packs/stylesheets/decidim/_login.scss +4 -0
  35. data/app/packs/stylesheets/decidim/_modal_authorization.scss +1 -1
  36. data/app/packs/stylesheets/decidim/_profile.scss +1 -1
  37. data/app/presenters/decidim/log/user_presenter.rb +1 -0
  38. data/app/presenters/decidim/user_presenter.rb +1 -1
  39. data/app/resolvers/decidim/meta_image_url_resolver.rb +1 -0
  40. data/app/services/decidim/base_diff_renderer.rb +2 -0
  41. data/app/services/decidim/static_map_generator.rb +1 -1
  42. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  43. data/app/views/decidim/devise/sessions/new.html.erb +1 -1
  44. data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +1 -1
  45. data/app/views/decidim/last_activities/index.html.erb +1 -1
  46. data/app/views/decidim/open_data/index.html.erb +1 -1
  47. data/app/views/decidim/reported_mailer/hide.html.erb +17 -1
  48. data/app/views/decidim/reported_mailer/report.html.erb +1 -1
  49. data/app/views/decidim/searches/_count.html.erb +1 -1
  50. data/app/views/decidim/searches/_filters.html.erb +40 -38
  51. data/app/views/layouts/decidim/footer/_main_legal.html.erb +1 -1
  52. data/config/locales/ar.yml +15 -28
  53. data/config/locales/bg.yml +10 -24
  54. data/config/locales/bs-BA.yml +2 -0
  55. data/config/locales/ca-IT.yml +2400 -0
  56. data/config/locales/ca.yml +43 -35
  57. data/config/locales/cs.yml +25 -32
  58. data/config/locales/de.yml +19 -25
  59. data/config/locales/el.yml +10 -15
  60. data/config/locales/en.yml +24 -16
  61. data/config/locales/eo.yml +2 -0
  62. data/config/locales/es-MX.yml +39 -31
  63. data/config/locales/es-PY.yml +44 -36
  64. data/config/locales/es.yml +42 -34
  65. data/config/locales/eu.yml +104 -98
  66. data/config/locales/fi-plain.yml +14 -28
  67. data/config/locales/fi.yml +15 -29
  68. data/config/locales/fr-CA.yml +74 -24
  69. data/config/locales/fr.yml +73 -23
  70. data/config/locales/ga-IE.yml +4 -4
  71. data/config/locales/gl.yml +25 -14
  72. data/config/locales/hu.yml +9 -23
  73. data/config/locales/id-ID.yml +24 -15
  74. data/config/locales/is-IS.yml +10 -0
  75. data/config/locales/it.yml +34 -26
  76. data/config/locales/ja.yml +188 -27
  77. data/config/locales/lb.yml +24 -22
  78. data/config/locales/lt.yml +5 -17
  79. data/config/locales/lv.yml +18 -15
  80. data/config/locales/nl.yml +22 -17
  81. data/config/locales/no.yml +18 -16
  82. data/config/locales/pl.yml +6 -20
  83. data/config/locales/pt-BR.yml +11 -24
  84. data/config/locales/pt.yml +18 -16
  85. data/config/locales/ro-RO.yml +187 -20
  86. data/config/locales/ru.yml +23 -8
  87. data/config/locales/sk.yml +29 -18
  88. data/config/locales/sr-CS.yml +2 -0
  89. data/config/locales/sv.yml +30 -26
  90. data/config/locales/tr-TR.yml +24 -23
  91. data/config/locales/uk.yml +12 -1
  92. data/config/locales/zh-CN.yml +18 -15
  93. data/config/locales/zh-TW.yml +8 -16
  94. data/db/migrate/20240722215500_change_object_changes_on_versions.rb +4 -24
  95. data/lib/decidim/asset_router/storage.rb +7 -2
  96. data/lib/decidim/attributes/time_with_zone.rb +5 -1
  97. data/lib/decidim/content_parsers/blob_parser.rb +10 -8
  98. data/lib/decidim/content_parsers/user_parser.rb +1 -1
  99. data/lib/decidim/core/test/shared_examples/reports_examples.rb +8 -15
  100. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +26 -0
  101. data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +26 -0
  102. data/lib/decidim/core/version.rb +1 -1
  103. data/lib/decidim/map/provider/static_map/here.rb +34 -0
  104. data/lib/decidim/moderation_tools.rb +14 -8
  105. data/lib/decidim/nicknamizable.rb +1 -1
  106. data/lib/decidim/participatory_space_user.rb +1 -3
  107. data/lib/decidim/reportable.rb +6 -2
  108. data/lib/decidim/translatable_attributes.rb +5 -1
  109. data/lib/tasks/upgrade/decidim_fix_nickname_uniqueness.rake +23 -20
  110. metadata +12 -14
  111. data/app/cells/decidim/author/flag.erb +0 -6
  112. data/app/cells/decidim/author/flag_user.erb +0 -14
  113. data/app/cells/decidim/flag_modal/flag_user.erb +0 -34
  114. data/app/cells/decidim/flag_modal/show.erb +0 -52
  115. data/app/cells/decidim/flag_modal_cell.rb +0 -56
  116. data/app/cells/decidim/profile_sidebar/show.erb +0 -167
  117. data/app/cells/decidim/profile_sidebar_cell.rb +0 -68
  118. data/lib/tasks/upgrade/clean_hidden_resources.rake +0 -33
@@ -20,19 +20,19 @@ module Decidim
20
20
  # https://github.com/rails/rails/blob/a7e379896552ce43b822385c03c37f2bd47739d3/activestorage/config/routes.rb#L5-L14
21
21
  BLOB_REGEX = %r{
22
22
  # Group 1: Host part
23
- (
23
+ (?<host_part>
24
24
  # Group 2: Domain and subpath part
25
- https?://((?!/rails).)+
25
+ #{URI::DEFAULT_PARSER.make_regexp(%w(https http))}
26
26
  )?
27
27
  /rails/active_storage
28
28
  # Group 3: Blob path, representation path or disk service path
29
- /(blobs/redirect|blobs/proxy|blobs|representations/redirect|representations/proxy|representations|disk)
29
+ /(?<type_part>blobs/redirect|blobs/proxy|blobs|representations/redirect|representations/proxy|representations|disk)
30
30
  # Group 4: Signed ID for blobs or encoded key for disk service
31
- /([^/]+)
31
+ /(?<key_part>[^/]+)
32
32
  # Group 5: Variation part (only for representations)
33
33
  (
34
34
  # Group 6: Variation key for representations
35
- /([\w.=-]+)
35
+ /(?<variation_part>[\w.=-]+)
36
36
  )?
37
37
  # Group 7: Filename
38
38
  /([\w.=-]+)
@@ -46,8 +46,10 @@ module Decidim
46
46
 
47
47
  def replace_blobs(text)
48
48
  text.gsub(BLOB_REGEX) do |match|
49
- type_part = Regexp.last_match(3)
50
- key_part = Regexp.last_match(4)
49
+ named_captures = Regexp.last_match.named_captures
50
+
51
+ type_part = named_captures["type_part"]
52
+ key_part = named_captures["key_part"]
51
53
 
52
54
  variation_key = nil
53
55
  blob =
@@ -59,7 +61,7 @@ module Decidim
59
61
  # Representation or blob
60
62
  if type_part.start_with?("representations")
61
63
  # Representation
62
- variation_part = Regexp.last_match(6)
64
+ variation_part = named_captures["variation_part"]
63
65
  variation_key = generate_variation_key(variation_part)
64
66
  end
65
67
 
@@ -49,7 +49,7 @@ module Decidim
49
49
 
50
50
  def existing_mentionables
51
51
  @existing_mentionables ||= mentionable_class.where(
52
- "decidim_organization_id = ? AND LOWER(nickname) IN (?)",
52
+ "decidim_organization_id = ? AND nickname IN (?)",
53
53
  current_organization.id,
54
54
  content_nicknames
55
55
  )
@@ -33,13 +33,6 @@ shared_examples "higher user role hides" do
33
33
  before do
34
34
  login_as user, scope: :user
35
35
  end
36
- around do |example|
37
- previous = Capybara.raise_server_errors
38
-
39
- Capybara.raise_server_errors = false
40
- example.run
41
- Capybara.raise_server_errors = previous
42
- end
43
36
 
44
37
  it "reports the resource" do
45
38
  visit reportable_path
@@ -54,6 +47,10 @@ shared_examples "higher user role hides" do
54
47
  click_on "Hide"
55
48
  end
56
49
 
50
+ sleep(1)
51
+
52
+ expect(page).to have_current_path(reportable_index_path, ignore_query: true)
53
+
57
54
  expect(reportable.reload).to be_hidden
58
55
  end
59
56
  end
@@ -67,14 +64,6 @@ shared_examples "higher user role hides resource with comments" do
67
64
  login_as user, scope: :user
68
65
  Decidim::Ai::SpamDetection.create_reporting_user!
69
66
  end
70
- around do |example|
71
- previous = Capybara.raise_server_errors
72
-
73
- # Disabling server errors to that we can test page not found error.
74
- Capybara.raise_server_errors = false
75
- example.run
76
- Capybara.raise_server_errors = previous
77
- end
78
67
 
79
68
  it "hides the resource" do
80
69
  visit decidim.search_path
@@ -96,6 +85,10 @@ shared_examples "higher user role hides resource with comments" do
96
85
  click_on "Hide"
97
86
  end
98
87
 
88
+ sleep(1)
89
+
90
+ expect(page).to have_current_path(reportable_index_path, ignore_query: true)
91
+
99
92
  perform_enqueued_jobs
100
93
 
101
94
  expect(reportable.reload).to be_hidden
@@ -8,6 +8,7 @@ shared_examples "an uncommentable component" do
8
8
  manifest:,
9
9
  participatory_space:)
10
10
  end
11
+ let!(:comment) { create(:comment, commentable: resources.first) }
11
12
 
12
13
  it "does not displays comments count" do
13
14
  component.update!(settings: { comments_enabled: false })
@@ -18,4 +19,29 @@ shared_examples "an uncommentable component" do
18
19
  expect(page).to have_no_link(resource_locator(resource).path)
19
20
  end
20
21
  end
22
+
23
+ describe "when search a comment in the global search" do
24
+ it "does displays the comments" do
25
+ visit decidim.root_path
26
+
27
+ within ".main-bar__search" do
28
+ fill_in "term", with: comment.body["en"]
29
+ find("input#input-search").native.send_keys :enter
30
+ end
31
+
32
+ expect(page).to have_content("1 Results for the search")
33
+ end
34
+
35
+ it "does not displays the comment when comments are disable" do
36
+ component.update!(settings: { comments_enabled: false })
37
+ visit decidim.root_path
38
+
39
+ within ".main-bar__search" do
40
+ fill_in "term", with: comment.body["en"]
41
+ find("input#input-search").native.send_keys :enter
42
+ end
43
+
44
+ expect(page).to have_content("0 Results for the search")
45
+ end
46
+ end
21
47
  end
@@ -2,6 +2,32 @@
2
2
 
3
3
  require "spec_helper"
4
4
 
5
+ shared_examples "a version of a hidden object" do
6
+ before do
7
+ visit resource_path
8
+ click_on "see other versions"
9
+ click_on("Version 1 of #{hidden_object.reload.versions.size}")
10
+ end
11
+
12
+ around do |example|
13
+ previous = Capybara.raise_server_errors
14
+
15
+ Capybara.raise_server_errors = false
16
+ example.run
17
+ Capybara.raise_server_errors = previous
18
+ end
19
+
20
+ it "shows an error page" do
21
+ expect(page).to have_content("Changes at")
22
+
23
+ create(:moderation, reportable: hidden_object, hidden_at: 1.day.ago)
24
+
25
+ visit current_path
26
+
27
+ expect(page).to have_content(ActiveRecord::RecordNotFound)
28
+ end
29
+ end
30
+
5
31
  shared_examples "versions controller" do
6
32
  let(:base_params) do
7
33
  if resource.is_a?(Decidim::Participable)
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.30.0.rc2"
7
+ "0.30.0"
8
8
  end
9
9
  end
10
10
  end
@@ -6,8 +6,42 @@ module Decidim
6
6
  module StaticMap
7
7
  # The static map utility class for the HERE maps service
8
8
  class Here < ::Decidim::Map::StaticMap
9
+ def url(latitude:, longitude:, options: {})
10
+ map_url = configuration.fetch(:url, nil)
11
+ return super unless map_url
12
+
13
+ return super unless map_url.include?("mia/v3")
14
+
15
+ w = options[:width] || Decidim::Map::StaticMap::DEFAULT_SIZE
16
+ h = options[:height] || Decidim::Map::StaticMap::DEFAULT_SIZE
17
+
18
+ params = {
19
+ apiKey: configuration[:api_key],
20
+ overlay: "point:#{latitude},#{longitude};icon=cp;size=large|#{latitude},#{longitude};style=circle;width=50m;color=%231B9D2C60"
21
+ }
22
+
23
+ URI.parse("#{map_url}:radius=90/#{w}x#{h}/png8").tap do |uri|
24
+ uri.query = URI.encode_www_form(params)
25
+ end.to_s
26
+ end
27
+
9
28
  # @See Decidim::Map::StaticMap#url_params
10
29
  def url_params(latitude:, longitude:, options: {})
30
+ ActiveSupport::Deprecation.warn(
31
+ <<~DEPRECATION.strip
32
+ Please use a V3 version HERE maps.
33
+ For further information, see:
34
+ https://www.here.com/docs/bundle/map-image-migration-guide-v3/page/README.html
35
+ Also make sure your Decidim.maps configurations are using the
36
+ up to date format.
37
+ You need to change:
38
+ static_url = "https://image.maps.ls.hereapi.com/mia/1.6/mapview" if static_provider == "here" && static_url.blank?
39
+ to:
40
+ static_url = "https://image.maps.hereapi.com/mia/v3/base/mc/overlay" if static_provider == "here"
41
+ in your config/initializers/decidim.rb file.
42
+ DEPRECATION
43
+ )
44
+
11
45
  params = {
12
46
  c: "#{latitude}, #{longitude}",
13
47
  z: options[:zoom] || Decidim::Map::StaticMap::DEFAULT_ZOOM,
@@ -60,15 +60,21 @@ module Decidim
60
60
  def send_notification_to_author
61
61
  return if affected_users.blank?
62
62
 
63
- data = {
64
- event: "decidim.events.reports.resource_hidden",
65
- event_class: Decidim::ResourceHiddenEvent,
63
+ data = if @reportable.moderation.reports.last&.reason == "parent_hidden"
64
+ { event: "decidim.events.reports.parent_hidden", event_class: Decidim::ParentHiddenEvent }
65
+ else
66
+ { event: "decidim.events.reports.resource_hidden", event_class: Decidim::ResourceHiddenEvent }
67
+ end
68
+
69
+ data.merge!(
66
70
  resource: @reportable,
67
71
  extra: {
68
- report_reasons:
72
+ report_reasons:,
73
+ force_email: true
69
74
  },
70
- affected_users:
71
- }
75
+ affected_users:,
76
+ force_send: true
77
+ )
72
78
 
73
79
  Decidim::EventsManager.publish(**data)
74
80
  end
@@ -95,7 +101,7 @@ module Decidim
95
101
 
96
102
  if @reportable.is_a?(Decidim::Comments::Commentable)
97
103
  @reportable.comment_threads.each do |comment|
98
- Decidim::HideChildResourcesJob.perform_later(comment, @current_user.id)
104
+ Decidim::HideChildResourcesJob.perform_later(comment, current_user.id)
99
105
  end
100
106
  end
101
107
 
@@ -109,7 +115,7 @@ module Decidim
109
115
  end
110
116
 
111
117
  def report_reasons
112
- @reportable.moderation.reports.pluck(:reason).uniq
118
+ [@reportable.moderation.reports.last&.reason]
113
119
  end
114
120
  end
115
121
  end
@@ -52,7 +52,7 @@ module Decidim
52
52
  candidate = name
53
53
 
54
54
  2.step do |n|
55
- return candidate if Decidim::UserBaseEntity.where("nickname ILIKE ?", candidate.downcase).where(scope).empty?
55
+ return candidate if Decidim::UserBaseEntity.where(nickname: candidate.downcase).where(scope).empty?
56
56
 
57
57
  candidate = numbered_variation_of(name, n)
58
58
  end
@@ -37,9 +37,7 @@ module Decidim
37
37
  raise "Not implemented"
38
38
  end
39
39
 
40
- def self.ransackable_attributes(auth_object = nil)
41
- return [] unless auth_object&.admin?
42
-
40
+ def self.ransackable_attributes(_auth_object = nil)
43
41
  %w(name nickname email invitation_accepted_at last_sign_in_at role)
44
42
  end
45
43
 
@@ -53,8 +53,12 @@ module Decidim
53
53
  # Public: The reported content url
54
54
  #
55
55
  # Returns String
56
- def reported_content_url
57
- raise NotImplementedError
56
+ def reported_content_url(options = {})
57
+ if hidden?
58
+ ResourceLocatorPresenter.new(self).index(options)
59
+ else
60
+ ResourceLocatorPresenter.new(self).url(options)
61
+ end
58
62
  end
59
63
 
60
64
  # Public: The collection of attribute names that are considered
@@ -62,7 +62,7 @@ module Decidim
62
62
  final = super(value)
63
63
  return unless final # Do not set the `nil` values for the parent hash
64
64
 
65
- final = value_type.serialize(final) if value_type
65
+ final = value_type.serialize(final) if value_type && !attachment?(final)
66
66
 
67
67
  public_send("#{name}=", field.merge(locale => final))
68
68
  end
@@ -127,5 +127,9 @@ module Decidim
127
127
  locale.to_s == try(:default_locale).to_s ||
128
128
  locale.to_s == try(:current_organization).try(:default_locale).to_s
129
129
  end
130
+
131
+ def attachment?(value)
132
+ value.is_a?(String) && value.include?(ActiveStorage.routes_prefix)
133
+ end
130
134
  end
131
135
  end
@@ -2,37 +2,40 @@
2
2
 
3
3
  namespace :decidim do
4
4
  namespace :upgrade do
5
- desc "Modifies nicknames with random numbers when exists similar ones case-insensitively"
6
- task fix_nickname_uniqueness: :environment do
7
- logger = Logger.new($stdout)
8
- logger.info("Updating conflicting user nicknames...")
5
+ desc "Modifies nickname of the user to lower case"
6
+ task :fix_nickname_casing => :environment do
7
+ logger.info("Fixing user nicknames case...")
9
8
 
10
- # list of users already changed in the process
11
9
  has_changed = []
10
+ Decidim::UserBaseEntity.not_deleted.find_each do |user|
11
+ user.nickname.downcase!
12
12
 
13
- Decidim::User.not_deleted.find_each do |user|
14
- next if has_changed.include? user.id
15
-
16
- Decidim::User.where(organization: user.organization)
17
- .where("nickname ILIKE ?", user.nickname.downcase)
18
- .where.not(id: has_changed + [user.id])
19
- .not_deleted
20
- .order(:created_at)
21
- .each do |similar_user|
22
- # change her nickname to the lowercased one with numbers if needed
23
- begin
24
- update_user_nickname(similar_user, Decidim::UserBaseEntity.nicknamize(similar_user.nickname, organization: similar_user.organization))
25
- rescue ActiveRecord::RecordInvalid => e
26
- logger.warn("User ID (#{similar_user.id}) : #{e}")
13
+ begin
14
+ if user.nickname_changed?
15
+ user.save!
16
+ has_changed << user.id
27
17
  end
28
- has_changed.append(similar_user.id)
18
+ rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique
19
+ update_user_nickname(user, Decidim::UserBaseEntity.nicknamize(user.nickname, organization: user.organization))
20
+ has_changed << user.id
21
+ rescue ActiveRecord::RecordInvalid # rubocop:disable Lint/DuplicateRescueException
22
+ logger.warn("User ID (#{user.id}) : #{e}")
29
23
  end
30
24
  end
31
25
  logger.info("Process terminated, #{has_changed.count} users nickname have been updated.")
32
26
  end
33
27
 
28
+ desc "Modifies nicknames with random numbers when exists similar ones case-insensitively"
29
+ task :fix_nickname_uniqueness => :environment do
30
+ Rake::Task["decidim:upgrade:fix_nickname_casing"].execute
31
+ end
32
+
34
33
  private
35
34
 
35
+ def logger
36
+ @logger ||= Logger.new($stdout)
37
+ end
38
+
36
39
  def send_notification_to(user)
37
40
  Decidim::EventsManager.publish(
38
41
  event: "decidim.events.nickname_event",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0.rc2
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-03-03 00:00:00.000000000 Z
13
+ date: 2025-04-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -780,28 +780,28 @@ dependencies:
780
780
  requirements:
781
781
  - - '='
782
782
  - !ruby/object:Gem::Version
783
- version: 0.30.0.rc2
783
+ version: 0.30.0
784
784
  type: :development
785
785
  prerelease: false
786
786
  version_requirements: !ruby/object:Gem::Requirement
787
787
  requirements:
788
788
  - - '='
789
789
  - !ruby/object:Gem::Version
790
- version: 0.30.0.rc2
790
+ version: 0.30.0
791
791
  - !ruby/object:Gem::Dependency
792
792
  name: decidim-dev
793
793
  requirement: !ruby/object:Gem::Requirement
794
794
  requirements:
795
795
  - - '='
796
796
  - !ruby/object:Gem::Version
797
- version: 0.30.0.rc2
797
+ version: 0.30.0
798
798
  type: :development
799
799
  prerelease: false
800
800
  version_requirements: !ruby/object:Gem::Requirement
801
801
  requirements:
802
802
  - - '='
803
803
  - !ruby/object:Gem::Version
804
- version: 0.30.0.rc2
804
+ version: 0.30.0
805
805
  description: Adds core features so other engines can hook into the framework.
806
806
  email:
807
807
  - josepjaume@gmail.com
@@ -843,8 +843,6 @@ files:
843
843
  - app/cells/decidim/author/contact.erb
844
844
  - app/cells/decidim/author/date.erb
845
845
  - app/cells/decidim/author/endorsements.erb
846
- - app/cells/decidim/author/flag.erb
847
- - app/cells/decidim/author/flag_user.erb
848
846
  - app/cells/decidim/author/name.erb
849
847
  - app/cells/decidim/author/profile_minicard.erb
850
848
  - app/cells/decidim/author/show.erb
@@ -996,9 +994,6 @@ files:
996
994
  - app/cells/decidim/endorsers_list/full.erb
997
995
  - app/cells/decidim/endorsers_list/show.erb
998
996
  - app/cells/decidim/endorsers_list_cell.rb
999
- - app/cells/decidim/flag_modal/flag_user.erb
1000
- - app/cells/decidim/flag_modal/show.erb
1001
- - app/cells/decidim/flag_modal_cell.rb
1002
997
  - app/cells/decidim/follow_button/content.erb
1003
998
  - app/cells/decidim/follow_button/show.erb
1004
999
  - app/cells/decidim/follow_button_cell.rb
@@ -1074,8 +1069,6 @@ files:
1074
1069
  - app/cells/decidim/profile_actions/show.erb
1075
1070
  - app/cells/decidim/profile_actions_cell.rb
1076
1071
  - app/cells/decidim/profile_cell.rb
1077
- - app/cells/decidim/profile_sidebar/show.erb
1078
- - app/cells/decidim/profile_sidebar_cell.rb
1079
1072
  - app/cells/decidim/progress_bar/show.erb
1080
1073
  - app/cells/decidim/progress_bar_cell.rb
1081
1074
  - app/cells/decidim/public_participation/show.erb
@@ -1084,6 +1077,10 @@ files:
1084
1077
  - app/cells/decidim/report_button/flag_modal.erb
1085
1078
  - app/cells/decidim/report_button/show.erb
1086
1079
  - app/cells/decidim/report_button_cell.rb
1080
+ - app/cells/decidim/report_user_button/already_reported_modal.erb
1081
+ - app/cells/decidim/report_user_button/flag_modal.erb
1082
+ - app/cells/decidim/report_user_button/show.erb
1083
+ - app/cells/decidim/report_user_button_cell.rb
1087
1084
  - app/cells/decidim/reported_content/show.erb
1088
1085
  - app/cells/decidim/reported_content_cell.rb
1089
1086
  - app/cells/decidim/represent_user_group/show.erb
@@ -1421,6 +1418,7 @@ files:
1421
1418
  - app/jobs/decidim/machine_translation_resource_job.rb
1422
1419
  - app/jobs/decidim/machine_translation_save_job.rb
1423
1420
  - app/jobs/decidim/metric_job.rb
1421
+ - app/jobs/decidim/migrate/paper_trail_job.rb
1424
1422
  - app/jobs/decidim/newsletters_opt_in_job.rb
1425
1423
  - app/jobs/decidim/notification_generator_for_recipient_job.rb
1426
1424
  - app/jobs/decidim/notification_generator_job.rb
@@ -2201,6 +2199,7 @@ files:
2201
2199
  - config/locales/bg.yml
2202
2200
  - config/locales/bn-BD.yml
2203
2201
  - config/locales/bs-BA.yml
2202
+ - config/locales/ca-IT.yml
2204
2203
  - config/locales/ca.yml
2205
2204
  - config/locales/cs-CZ.yml
2206
2205
  - config/locales/cs.yml
@@ -3081,7 +3080,6 @@ files:
3081
3080
  - lib/tasks/decidim_taxonomies.rake
3082
3081
  - lib/tasks/decidim_webpacker_tasks.rake
3083
3082
  - lib/tasks/upgrade/clean.rake
3084
- - lib/tasks/upgrade/clean_hidden_resources.rake
3085
3083
  - lib/tasks/upgrade/decidim_active_storage_migration_tasks.rake
3086
3084
  - lib/tasks/upgrade/decidim_attachments.rake
3087
3085
  - lib/tasks/upgrade/decidim_content_blocks_tasks.rake
@@ -1,6 +0,0 @@
1
- <button type="button" data-open="<%= current_user.present? ? "flagModal" : "loginModal" %>" title="<%= t("report", scope: "decidim.shared.flag_modal" ) %>" aria-controls="<%= current_user.present? ? "flagModal" : "loginModal" %>" aria-haspopup="true" tabindex="0">
2
- <%= icon "flag", aria_hidden: true, class: "icon--small", role: "img", "aria-hidden": true %>
3
- <span>
4
- <%= t("report", scope: "decidim.shared.flag_modal" ) %>
5
- </span>
6
- </button>
@@ -1,14 +0,0 @@
1
- <% if user_flaggable? && model.try(:id) != current_user.try(:id) %>
2
- <%= cell(
3
- "decidim/button",
4
- { icon: "flag-line", text: t("decidim.shared.flag_modal.report") },
5
- button_classes: "button button__sm button__text-secondary only:m-auto",
6
- html_options: {
7
- "data-open" => current_user.present? ? "flagUserModal" : "loginModal",
8
- "aria-controls" => current_user.present? ? "flagUserModal" : "loginModal",
9
- "aria-haspopup" => "dialog"
10
- }
11
- ) %>
12
-
13
- <%= cell("decidim/flag_modal", model).flag_user %>
14
- <% end %>
@@ -1,34 +0,0 @@
1
- <div class="flag-modal hidden" id="flagUserModal" data-reveal role="dialog" aria-modal="true" aria-labelledby="flagUserModal-label">
2
- <div>
3
- <h3 id="flagUserModal-label"><%= t("decidim.shared.flag_user_modal.title") %></h3>
4
- <button class="close-button" data-close aria-label="<%= t("decidim.shared.flag_user_modal.close") %>" type="button">
5
- <span aria-hidden="true">&times;</span>
6
- </button>
7
- </div>
8
- <% if model.reported_by? current_user %>
9
- <p><%= t("decidim.shared.flag_user_modal.already_reported") %></p>
10
- <% else %>
11
- <p><%= t("decidim.shared.flag_user_modal.description") %></p>
12
- <%= decidim_form_for report_form, url: decidim.report_user_path(sgid: model.to_sgid.to_s), method: :post do |f| %>
13
- <%= f.collection_radio_buttons :reason, [
14
- [:spam, t("decidim.shared.flag_user_modal.spam")],
15
- [:offensive, t("decidim.shared.flag_user_modal.offensive")],
16
- [:does_not_belong, t("decidim.shared.flag_user_modal.does_not_belong", organization_name: current_organization.name)]
17
- ], :first, :last do |builder| %>
18
- <%= builder.label { builder.radio_button + builder.text } %>
19
- <% end %>
20
- <%= f.text_area :details, rows: 4 %>
21
- <% if current_user&.admin? %>
22
- <%= f.check_box :block, label: t("decidim.shared.flag_user_modal.block"),
23
- include_hidden: false,
24
- data: {
25
- label_action: t("decidim.shared.flag_user_modal.block"),
26
- label_report: t("decidim.shared.flag_user_modal.report"),
27
- block: "true"
28
- } %>
29
- <%= f.check_box :hide, label: t("decidim.shared.flag_user_modal.hide"), label_options: { id: "block_and_hide" } %>
30
- <% end %>
31
- <%= f.submit t("decidim.shared.flag_user_modal.report") %>
32
- <% end %>
33
- <% end %>
34
- </div>
@@ -1,52 +0,0 @@
1
- <%= decidim_modal id: modal_id do %>
2
- <%= decidim_form_for report_form, url: decidim.report_path(sgid: model.to_sgid.to_s), method: :post, html: { id: nil, class: "modal__report form-defaults" } do |f| %>
3
- <div data-dialog-container>
4
- <%= icon "flag-line", class: "inline-block align-middle" %>
5
- <h3 data-dialog-title id="dialog-title-<%= modal_id %>">
6
- <%= t("decidim.shared.flag_modal.title") %>
7
- </h3>
8
-
9
- <% if model.reported_by? current_user %>
10
- <div>
11
- <p class="modal__report-text">
12
- <%= t("decidim.shared.flag_modal.already_reported") %>
13
- </p>
14
- </div>
15
- <% else %>
16
- <div>
17
- <p class="modal__report-text">
18
- <%= t("decidim.shared.flag_modal.description") %>
19
- </p>
20
- <fieldset>
21
- <legend><%= t("decidim.shared.flag_modal.reason") %></legend>
22
- <%= f.collection_radio_buttons :reason, [
23
- [:spam, t("decidim.shared.flag_modal.spam")],
24
- [:offensive, t("decidim.shared.flag_modal.offensive")],
25
- [:does_not_belong, t("decidim.shared.flag_modal.does_not_belong", organization_name: current_organization.name)]
26
- ], :first, :last do |builder| %>
27
- <div class="modal__report-container__radio">
28
- <%= builder.radio_button(id: builder.value) %>
29
- <label for="<%= builder.value %>">
30
- <%= builder.text %>
31
- </label>
32
- </div>
33
- <% end %>
34
- </fieldset>
35
- <% unless model.reported_by? current_user %>
36
- <%= f.text_area :details, class: "w-full rounded border min-h-[160px] border-text-gray-2 mt-2", id: "#{modal_id}_details", label_options: { for: "#{modal_id}_details", class: "text-gray-2" } %>
37
- <% end %>
38
- </div>
39
- <% end %>
40
- </div>
41
- <div data-dialog-actions>
42
- <% unless model.reported_by? current_user %>
43
- <button type="submit" class="button button__lg button__secondary">
44
- <span>
45
- <%= t("decidim.shared.flag_modal.report") %>
46
- </span>
47
- <%= icon "arrow-right-line" %>
48
- </button>
49
- <% end %>
50
- </div>
51
- <% end %>
52
- <% end %>