decidim-decidim_awesome 0.11.4 → 0.12.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -6
  3. data/README.md +9 -25
  4. data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/show.erb +1 -1
  5. data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb +3 -5
  6. data/app/commands/concerns/decidim/decidim_awesome/system/{register_organization_override.rb → create_organization_override.rb} +1 -1
  7. data/app/commands/concerns/decidim/decidim_awesome/update_account_override.rb +4 -4
  8. data/app/commands/decidim/decidim_awesome/admin/create_constraint.rb +1 -1
  9. data/app/commands/decidim/decidim_awesome/create_editor_image.rb +2 -2
  10. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +0 -6
  11. data/app/forms/concerns/decidim/decidim_awesome/proposals/{proposal_wizard_create_step_form_override.rb → proposal_form_customizations.rb} +1 -1
  12. data/app/forms/concerns/decidim/decidim_awesome/system/organization_form_override.rb +2 -2
  13. data/app/packs/entrypoints/decidim_admin_decidim_awesome_search_form.scss +1 -0
  14. data/app/packs/stylesheets/decidim/decidim_awesome/admin/admin_accountability.scss +67 -0
  15. data/app/permissions/decidim/decidim_awesome/permissions.rb +3 -2
  16. data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +12 -0
  17. data/app/views/decidim/decidim_awesome/admin/admin_accountability/index.html.erb +1 -0
  18. data/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb +41 -32
  19. data/app/views/decidim/decidim_awesome/map_component/map/_map_template.html.erb +1 -1
  20. data/config/assets.rb +2 -1
  21. data/lib/decidim/decidim_awesome/awesome.rb +20 -20
  22. data/lib/decidim/decidim_awesome/checksums.yml +32 -2
  23. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +2 -2
  24. data/lib/decidim/decidim_awesome/engine.rb +5 -4
  25. data/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor_examples.rb +14 -14
  26. data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +1 -1
  27. data/lib/decidim/decidim_awesome/test/shared_examples/custom_fields_examples.rb +8 -8
  28. data/lib/decidim/decidim_awesome/test/shared_examples/custom_styles_examples.rb +6 -6
  29. data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +3 -3
  30. data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +5 -5
  31. data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +8 -8
  32. data/lib/decidim/decidim_awesome/version.rb +2 -2
  33. data/lib/decidim/decidim_awesome.rb +0 -1
  34. data/lib/tasks/decidim_awesome_upgrade_tasks.rake +0 -4
  35. data/package.json +8 -16
  36. metadata +15 -17
  37. data/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +0 -107
  38. data/app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb +0 -26
  39. data/lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb +0 -39
  40. data/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +0 -35
  41. /data/{app/middleware/decidim/decidim_awesome → lib/decidim/decidim_awesome/middleware}/current_config.rb +0 -0
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  # This holds the decidim-decidim_awesome version.
5
5
  module DecidimAwesome
6
- VERSION = "0.11.4"
7
- COMPAT_DECIDIM_VERSION = [">= 0.28.0", "< 0.29"].freeze
6
+ VERSION = "0.12.0"
7
+ COMPAT_DECIDIM_VERSION = [">= 0.29.1", "< 0.30"].freeze
8
8
  end
9
9
  end
@@ -11,7 +11,6 @@ require "decidim/decidim_awesome/map_component/component"
11
11
  require "decidim/decidim_awesome/iframe_component/engine"
12
12
  require "decidim/decidim_awesome/iframe_component/admin_engine"
13
13
  require "decidim/decidim_awesome/iframe_component/component"
14
- require "decidim/decidim_awesome/content_parsers/editor_images_parser"
15
14
 
16
15
  # Engines to handle logic unrelated to participatory spaces or components
17
16
  Decidim.register_global_engine(
@@ -7,7 +7,3 @@ end
7
7
  Rake::Task["decidim:choose_target_plugins"].enhance do
8
8
  ENV["FROM"] = "#{ENV.fetch("FROM", nil)},decidim_decidim_awesome"
9
9
  end
10
-
11
- Rake::Task["decidim:webpacker:upgrade"].enhance do
12
- Rake::Task["decidim_decidim_awesome:webpacker:install"].invoke
13
- end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decidim-module-decidim_awesome",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "description": "Mods and tweaks for Decidim",
5
5
  "main": "index.js",
6
6
  "directories": {
@@ -34,26 +34,18 @@
34
34
  },
35
35
  "prettier": "@decidim/prettier-config",
36
36
  "devDependencies": {
37
- "@babel/eslint-parser": "^7.23.10",
38
- "@babel/plugin-transform-classes": "^7.23.8",
39
- "@babel/plugin-transform-regenerator": "^7.23.3",
40
- "@babel/plugin-transform-runtime": "^7.23.9",
41
- "@babel/preset-env": "^7.23.9",
42
- "@babel/preset-react": "^7.23.3",
43
- "@decidim/dev": "0.28.4",
44
- "@decidim/eslint-config": "0.28.4",
45
- "@decidim/prettier-config": "0.28.4",
46
- "@decidim/stylelint-config": "0.28.4",
37
+ "@decidim/dev": "0.29.1",
38
+ "@decidim/eslint-config": "0.29.1",
39
+ "@decidim/prettier-config": "0.29.1",
40
+ "@decidim/stylelint-config": "0.29.1",
47
41
  "postcss-scss": "^4.0.9",
48
- "sass-embedded": "~1.57.1",
49
- "@tarekraafat/autocomplete.js": "10.2.7"
42
+ "sass-embedded": "^1.83.1",
43
+ "@tarekraafat/autocomplete.js": "^10.2.9"
50
44
  },
51
45
  "dependencies": {
52
- "@rails/actioncable": "^6.1.7-6",
53
- "codemirror": "^5.65.0",
46
+ "codemirror": "^5.65.16",
54
47
  "form-storage": "^1.3.5",
55
48
  "formBuilder": "^3.19.12",
56
- "highlight.js": "^11.4.0",
57
49
  "inline-attacher": "^0.0.7",
58
50
  "jsrender": "^1.0.9",
59
51
  "leaflet.featuregroup.subgroup": "^1.0.2",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-decidim_awesome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.4
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Vergés
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.28.0
19
+ version: 0.29.1
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '0.29'
22
+ version: '0.30'
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.0
29
+ version: 0.29.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.29'
32
+ version: '0.30'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: decidim-core
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.28.0
39
+ version: 0.29.1
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '0.29'
42
+ version: '0.30'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.28.0
49
+ version: 0.29.1
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '0.29'
52
+ version: '0.30'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: deface
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +108,7 @@ files:
108
108
  - app/commands/concerns/decidim/decidim_awesome/proposals/create_proposal_override.rb
109
109
  - app/commands/concerns/decidim/decidim_awesome/proposals/update_collaborative_draft_override.rb
110
110
  - app/commands/concerns/decidim/decidim_awesome/proposals/update_proposal_override.rb
111
- - app/commands/concerns/decidim/decidim_awesome/system/register_organization_override.rb
111
+ - app/commands/concerns/decidim/decidim_awesome/system/create_organization_override.rb
112
112
  - app/commands/concerns/decidim/decidim_awesome/system/update_organization_override.rb
113
113
  - app/commands/concerns/decidim/decidim_awesome/update_account_override.rb
114
114
  - app/commands/decidim/decidim_awesome/admin/create_constraint.rb
@@ -161,8 +161,8 @@ files:
161
161
  - app/controllers/decidim/decidim_awesome/map_component/map_controller.rb
162
162
  - app/controllers/decidim/decidim_awesome/required_authorizations_controller.rb
163
163
  - app/forms/concerns/decidim/decidim_awesome/account_form_override.rb
164
+ - app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_customizations.rb
164
165
  - app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_override.rb
165
- - app/forms/concerns/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb
166
166
  - app/forms/concerns/decidim/decidim_awesome/system/organization_form_override.rb
167
167
  - app/forms/decidim/decidim_awesome/admin/config_form.rb
168
168
  - app/forms/decidim/decidim_awesome/admin/constraint_form.rb
@@ -178,8 +178,6 @@ files:
178
178
  - app/helpers/decidim/decidim_awesome/map_helper.rb
179
179
  - app/jobs/decidim/decidim_awesome/destroy_private_data_job.rb
180
180
  - app/jobs/decidim/decidim_awesome/export_admin_actions_job.rb
181
- - app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb
182
- - app/middleware/decidim/decidim_awesome/current_config.rb
183
181
  - app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb
184
182
  - app/models/concerns/decidim/decidim_awesome/has_vote_weight.rb
185
183
  - app/models/concerns/decidim/decidim_awesome/user_override.rb
@@ -209,6 +207,7 @@ files:
209
207
  - app/packs/entrypoints/decidim_admin_decidim_awesome.scss
210
208
  - app/packs/entrypoints/decidim_admin_decidim_awesome_global.js
211
209
  - app/packs/entrypoints/decidim_admin_decidim_awesome_global.scss
210
+ - app/packs/entrypoints/decidim_admin_decidim_awesome_search_form.scss
212
211
  - app/packs/entrypoints/decidim_decidim_awesome.js
213
212
  - app/packs/entrypoints/decidim_decidim_awesome.scss
214
213
  - app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js
@@ -252,6 +251,7 @@ files:
252
251
  - app/packs/src/decidim/decidim_awesome/proposals/images.js
253
252
  - app/packs/src/decidim/decidim_awesome/voting/voting_cards.js
254
253
  - app/packs/src/vendor/jquery.truncate.js
254
+ - app/packs/stylesheets/decidim/decidim_awesome/admin/admin_accountability.scss
255
255
  - app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss
256
256
  - app/packs/stylesheets/decidim/decidim_awesome/admin/check_redirections.scss
257
257
  - app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss
@@ -291,7 +291,6 @@ files:
291
291
  - app/serializers/decidim/decidim_awesome/proposals/private_proposal_serializer.rb
292
292
  - app/types/concerns/decidim/decidim_awesome/add_proposal_type_custom_fields.rb
293
293
  - app/types/concerns/decidim/decidim_awesome/add_proposal_type_vote_weights.rb
294
- - app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb
295
294
  - app/uploaders/decidim/decidim_awesome/image_uploader.rb
296
295
  - app/validators/concerns/decidim/decidim_awesome/etiquette_validator_override.rb
297
296
  - app/views/decidim/decidim_awesome/account/_timezone_select.html.erb
@@ -398,7 +397,6 @@ files:
398
397
  - lib/decidim/decidim_awesome/awesome_helpers.rb
399
398
  - lib/decidim/decidim_awesome/checksums.yml
400
399
  - lib/decidim/decidim_awesome/config.rb
401
- - lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb
402
400
  - lib/decidim/decidim_awesome/context_analyzers.rb
403
401
  - lib/decidim/decidim_awesome/context_analyzers/component_analyzer.rb
404
402
  - lib/decidim/decidim_awesome/context_analyzers/participatory_space_analyzer.rb
@@ -414,6 +412,7 @@ files:
414
412
  - lib/decidim/decidim_awesome/map_component/engine.rb
415
413
  - lib/decidim/decidim_awesome/menu.rb
416
414
  - lib/decidim/decidim_awesome/menu_hacker.rb
415
+ - lib/decidim/decidim_awesome/middleware/current_config.rb
417
416
  - lib/decidim/decidim_awesome/request_memoizer.rb
418
417
  - lib/decidim/decidim_awesome/system_checker.rb
419
418
  - lib/decidim/decidim_awesome/test/factories.rb
@@ -434,7 +433,6 @@ files:
434
433
  - lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb
435
434
  - lib/decidim/decidim_awesome/version.rb
436
435
  - lib/decidim/decidim_awesome/voting_manifest.rb
437
- - lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake
438
436
  - lib/tasks/decidim_awesome_upgrade_tasks.rake
439
437
  - lib/tasks/decidim_awesome_webpacker_tasks.rake
440
438
  - package.json
@@ -451,7 +449,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
451
449
  requirements:
452
450
  - - ">="
453
451
  - !ruby/object:Gem::Version
454
- version: '3.1'
452
+ version: '3.2'
455
453
  required_rubygems_version: !ruby/object:Gem::Requirement
456
454
  requirements:
457
455
  - - ">="
@@ -1,107 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module DecidimAwesome
5
- class MigrateLegacyImagesJob < ApplicationJob
6
- queue_as :default
7
-
8
- def perform(organization_id, mappings = [], logger = Rails.logger)
9
- @organization_id = organization_id
10
- @routes_mappings = mappings
11
- @logger = logger
12
-
13
- migrate_all!
14
- transform_images_urls
15
- end
16
-
17
- private
18
-
19
- attr_reader :routes_mappings, :logger
20
-
21
- def migrate_all!
22
- Decidim::CarrierWaveMigratorService.migrate_attachment!(
23
- klass: Decidim::DecidimAwesome::EditorImage,
24
- cw_attribute: "image",
25
- cw_uploader: Decidim::Cw::DecidimAwesome::ImageUploader,
26
- as_attribute: "file",
27
- logger: @logger,
28
- routes_mappings:
29
- )
30
- end
31
-
32
- def transform_images_urls
33
- mappings = routes_mappings.map do |mapping|
34
- klass, id = mapping[:instance].split("#")
35
- next unless klass == "Decidim::DecidimAwesome::EditorImage"
36
-
37
- instance = Decidim::DecidimAwesome::EditorImage.find_by(id:)
38
-
39
- next if instance.blank?
40
-
41
- mapping.merge!(instance:)
42
- end.compact
43
-
44
- editor_images_available_attributes.each do |model, attributes|
45
- model.all.each do |item|
46
- attributes.each do |attribute|
47
- item.update(attribute => rewrite_value(item.send(attribute), mappings))
48
- end
49
- end
50
- @logger.info "Updated model #{model.name} (attributes: #{attributes.join(", ")})"
51
- end
52
- end
53
-
54
- def rewrite_value(value, mappings)
55
- if value.is_a?(Hash)
56
- value.transform_values do |nested_value|
57
- rewrite_value(nested_value, mappings)
58
- end
59
- else
60
- parser = Decidim::DecidimAwesome::ContentParsers::EditorImagesParser.new(value, routes_mappings: mappings)
61
- parser.rewrite
62
- end
63
- end
64
-
65
- def editor_images_available_attributes
66
- {
67
- "Decidim::Accountability::Result" => %w(description),
68
- "Decidim::Proposals::Proposal" => %w(body answer cost_report execution_period),
69
- "Decidim::Votings::Voting" => %w(description),
70
- "Decidim::Elections::Question" => %w(description),
71
- "Decidim::Elections::Answer" => %w(description),
72
- "Decidim::Elections::Election" => %w(description),
73
- "Decidim::Initiative" => %w(description answer),
74
- "Decidim::InitiativesType" => %w(description extra_fields_legal_information),
75
- "Decidim::Assembly" => %w(short_description description purpose_of_action composition internal_organisation announcement closing_date_reason special_features),
76
- "Decidim::Forms::Questionnaire" => %w(description tos),
77
- "Decidim::Forms::Question" => %w(description),
78
- "Decidim::Organization" => %w(welcome_notification_body admin_terms_of_service_body description highlighted_content_banner_short_description
79
- id_documents_explanation_text),
80
- "Decidim::StaticPage" => %w(content),
81
- "Decidim::ContextualHelpSection" => %w(content),
82
- "Decidim::Category" => %w(description),
83
- "Decidim::Blogs::Post" => %w(body),
84
- "Decidim::Pages::Page" => %w(body),
85
- "Decidim::Sortitions::Sortition" => %w(additional_info witnesses cancel_reason),
86
- "Decidim::Consultations::Question" => %w(title question_context what_is_decided instructions),
87
- "Decidim::Consultation" => %w(description),
88
- "Decidim::Debates::Debate" => %w(description instructions information_updates conclusions),
89
- "Decidim::Budgets::Budget" => %w(description),
90
- "Decidim::Budgets::Project" => %w(description),
91
- "Decidim::ConferenceSpeaker" => %w(short_bio),
92
- "Decidim::Conferences::RegistrationType" => %w(description),
93
- "Decidim::Conference" => %w(short_description description objectives registration_terms),
94
- "Decidim::ParticipatoryProcessGroup" => %w(description),
95
- "Decidim::ParticipatoryProcess" => %w(short_description description announcement),
96
- "Decidim::ParticipatoryProcessStep" => %w(description),
97
- "Decidim::Meetings::AgendaItem" => %w(description),
98
- "Decidim::Meetings::Meeting" => %w(registration_terms description registration_email_custom_content closing_report)
99
- }.each_with_object({}) do |(main_model, attributes), hash|
100
- hash[main_model.constantize] = attributes
101
- rescue NameError
102
- hash
103
- end
104
- end
105
- end
106
- end
107
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim::Cw
4
- module DecidimAwesome
5
- # Transitional class to allow carrierwave to active storage migrations
6
- class ImageUploader < Decidim::Cw::ImageUploader
7
- process :validate_size, :validate_dimensions
8
-
9
- version :thumbnail do
10
- process resize_to_fit: [nil, 237]
11
- end
12
-
13
- def extension_whitelist
14
- %w(jpg jpeg png)
15
- end
16
-
17
- def content_type_whitelist
18
- %w(image/jpeg image/png)
19
- end
20
-
21
- def max_image_height_or_width
22
- 8000
23
- end
24
- end
25
- end
26
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module DecidimAwesome
5
- module ContentParsers
6
- # A parser that searches for editor images from CarrierWave in html
7
- # contents and replaces them with migrated images to ActiveStorage
8
- #
9
- # @see BaseParser Examples of how to use a content parser
10
- class EditorImagesParser < Decidim::ContentParsers::BaseParser
11
- # @return [String] the content with the CarrierWave images replaced.
12
- def rewrite
13
- return content if editor_images.blank?
14
-
15
- replace_editor_images
16
- parsed_content.to_html
17
- end
18
-
19
- def editor_images
20
- @editor_images ||= parsed_content.search(:img).index_with do |image|
21
- context[:routes_mappings].find { |mapping| image.attr(:src).end_with?(mapping[:origin_path]) }
22
- end.compact
23
- end
24
-
25
- private
26
-
27
- def parsed_content
28
- @parsed_content ||= Nokogiri::HTML(content)
29
- end
30
-
31
- def replace_editor_images
32
- editor_images.each do |image, mapping|
33
- image.set_attribute(:src, mapping[:instance].attached_uploader(:file).path)
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- namespace :decidim_awesome do
4
- namespace :active_storage_migrations do
5
- desc "Migrates editor images from Carrierwave to ActiveStorage"
6
- task migrate_from_carrierwave: :environment do
7
- stdout = Logger.new($stdout)
8
- stdout.level = Logger::INFO
9
- Rails.logger.extend(ActiveSupport::Logger.broadcast(stdout))
10
- Decidim::Organization.find_each do |organization|
11
- puts "Migrating Organization #{organization.id} (#{organization.host})..."
12
- routes_mappings = []
13
- Decidim::DecidimAwesome::MigrateLegacyImagesJob.perform_now(organization.id, routes_mappings)
14
-
15
- path = Rails.root.join("tmp/decidim_awesome_editor_images_mappings.csv")
16
- dirname = File.dirname(path)
17
- FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
18
- File.binwrite(path, Decidim::Exporters::CSV.new(routes_mappings).export.read)
19
- end
20
- end
21
-
22
- desc "Checks editor images migrated from Carrierwave to ActiveStorage"
23
- task check_migration_from_carrierwave: :environment do
24
- logger = ActiveSupport::TaggedLogging.new(Logger.new($stdout))
25
-
26
- Decidim::CarrierWaveMigratorService.check_migration(
27
- klass: Decidim::DecidimAwesome::EditorImage,
28
- cw_attribute: "image",
29
- cw_uploader: Decidim::Cw::DecidimAwesome::ImageUploader,
30
- as_attribute: "file",
31
- logger:
32
- )
33
- end
34
- end
35
- end