From bde932d52c76904c22aa4ff3ea189f44cfa263b0 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 6 Mar 2024 16:26:48 +0200 Subject: [PATCH 01/81] Add support for alternative IDs using Hashids --- Gemfile | 1 + Gemfile.lock | 4 ++++ spec/dummy/app/models/application_record.rb | 1 + 3 files changed, 6 insertions(+) diff --git a/Gemfile b/Gemfile index 45c452b147..e59a746ef8 100644 --- a/Gemfile +++ b/Gemfile @@ -46,6 +46,7 @@ gem "listen", ">= 3.5.1" gem "spring" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] +gem 'hashid-rails', '~> 1.4', '>= 1.4.1' gem "devise" # diff --git a/Gemfile.lock b/Gemfile.lock index 064c057882..a2945e7676 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -226,6 +226,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -572,6 +575,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/spec/dummy/app/models/application_record.rb b/spec/dummy/app/models/application_record.rb index 10a4cba84d..5b7e29b87e 100644 --- a/spec/dummy/app/models/application_record.rb +++ b/spec/dummy/app/models/application_record.rb @@ -1,3 +1,4 @@ class ApplicationRecord < ActiveRecord::Base self.abstract_class = true + include Hashid::Rails end From a92973f5f98bfe9172af8de6a90e7ae268c56276 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 6 Mar 2024 16:32:22 +0200 Subject: [PATCH 02/81] Fix rubocop --- Gemfile | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index e59a746ef8..cf6c58ef7d 100644 --- a/Gemfile +++ b/Gemfile @@ -14,8 +14,8 @@ gemspec # To use a debugger # gem 'byebug', group: [:development, :test] -gem 'jsbundling-rails' -gem 'cssbundling-rails' +gem "jsbundling-rails" +gem "cssbundling-rails" # # Dependencies for dummy_app @@ -30,7 +30,7 @@ gem "puma", "~> 6.4" # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder # gem "jbuilder", "~> 2.7" # Use Redis adapter to run Action Cable in production -gem 'redis', '~> 5.0' +gem "redis", "~> 5.0" # Use Active Model has_secure_password # gem 'bcrypt', '~> 3.1.7' @@ -46,7 +46,7 @@ gem "listen", ">= 3.5.1" gem "spring" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] -gem 'hashid-rails', '~> 1.4', '>= 1.4.1' +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "devise" # @@ -119,25 +119,25 @@ gem "active_link_to" gem "addressable" -gem 'meta-tags' +gem "meta-tags" # Search gem "ransack", "~> 4.1", ">= 4.1.1" -gem 'friendly_id', '~> 5.5.1' +gem "friendly_id", "~> 5.5.1" -gem 'aws-sdk-s3', require: false +gem "aws-sdk-s3", require: false -gem 'net-smtp', require: false +gem "net-smtp", require: false # Dashboard charts gem "groupdate" gem "hightop" gem "active_median" -gem 'acts_as_list' +gem "acts_as_list" -gem 'acts-as-taggable-on', '~> 10.0' +gem "acts-as-taggable-on", "~> 10.0" gem "bundler-integrity", "~> 1.0" From 89d4e2fe1849cdb719bbd17fee49335e7eeeb329 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 6 Mar 2024 17:54:47 +0200 Subject: [PATCH 03/81] Remove Hashid inclusion from ApplicationRecord --- spec/dummy/app/models/application_record.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/dummy/app/models/application_record.rb b/spec/dummy/app/models/application_record.rb index 5b7e29b87e..10a4cba84d 100644 --- a/spec/dummy/app/models/application_record.rb +++ b/spec/dummy/app/models/application_record.rb @@ -1,4 +1,3 @@ class ApplicationRecord < ActiveRecord::Base self.abstract_class = true - include Hashid::Rails end From d4a25be4e245832659ccf711f7b043f23c0ee115 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 6 Mar 2024 17:57:26 +0200 Subject: [PATCH 04/81] Add Hashid inclusion --- spec/dummy/app/models/city.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/dummy/app/models/city.rb b/spec/dummy/app/models/city.rb index ce4077dd37..d4e11af240 100644 --- a/spec/dummy/app/models/city.rb +++ b/spec/dummy/app/models/city.rb @@ -18,6 +18,7 @@ # city_center_area :json # class City < ApplicationRecord + include Hashid::Rails enum status: {Open: "open", Closed: "closed", Quarantine: "On Quarantine"} has_rich_text :description has_one_attached :description_file From 065920fd3087ac96132b573ead6501e1e8967aa6 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 6 Mar 2024 17:59:31 +0200 Subject: [PATCH 05/81] Fix error for hashid --- spec/dummy/app/avo/resources/city.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/dummy/app/avo/resources/city.rb b/spec/dummy/app/avo/resources/city.rb index 718ce92c54..1ceded0bc4 100644 --- a/spec/dummy/app/avo/resources/city.rb +++ b/spec/dummy/app/avo/resources/city.rb @@ -53,6 +53,7 @@ def base_fields }, update_using: -> do ActiveSupport::JSON.decode(value) + rescue JSON::ParserError => e end field :created_at, as: :date_time, filterable: true From f549b7fc99993fc55be853427134975da3554d34 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 7 Mar 2024 15:09:51 +0200 Subject: [PATCH 06/81] Fix lint error --- spec/dummy/app/avo/resources/city.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/dummy/app/avo/resources/city.rb b/spec/dummy/app/avo/resources/city.rb index 1ceded0bc4..00e3af0dc3 100644 --- a/spec/dummy/app/avo/resources/city.rb +++ b/spec/dummy/app/avo/resources/city.rb @@ -53,7 +53,7 @@ def base_fields }, update_using: -> do ActiveSupport::JSON.decode(value) - rescue JSON::ParserError => e + rescue JSON::ParserError end field :created_at, as: :date_time, filterable: true From 1303a9275274159ddec0b2b91cfd766ac608db8f Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 7 Mar 2024 16:03:24 +0200 Subject: [PATCH 07/81] Add hashid-rails on development test --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index cf6c58ef7d..b95fae3d09 100644 --- a/Gemfile +++ b/Gemfile @@ -46,7 +46,6 @@ gem "listen", ">= 3.5.1" gem "spring" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] -gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "devise" # @@ -107,6 +106,7 @@ group :development, :test do gem "factory_bot_rails" gem "appraisal" + gem "hashid-rails", "~> 1.4", ">= 1.4.1" end gem "zeitwerk" From 976f49df4676e0e94d819c6b4007b6d900676b4b Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 7 Mar 2024 16:21:31 +0200 Subject: [PATCH 08/81] Add require statement for hashid-rails gem in application.rb --- spec/dummy/config/application.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb index a64be263ec..0e6d92df71 100644 --- a/spec/dummy/config/application.rb +++ b/spec/dummy/config/application.rb @@ -8,6 +8,7 @@ require "action_view/railtie" require "action_mailer/railtie" require "action_text/engine" +require "hashid/rails" # require "active_job/railtie" # require "action_cable/engine" # require "action_mailbox/engine" From 37601524ab9222399685df23c3091c57bf7090a4 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 18 Mar 2024 11:41:07 +0200 Subject: [PATCH 09/81] Remove unnecessary require statement for 'hashid/rails' in application.rb --- spec/dummy/config/application.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb index 0e6d92df71..a64be263ec 100644 --- a/spec/dummy/config/application.rb +++ b/spec/dummy/config/application.rb @@ -8,7 +8,6 @@ require "action_view/railtie" require "action_mailer/railtie" require "action_text/engine" -require "hashid/rails" # require "active_job/railtie" # require "action_cable/engine" # require "action_mailbox/engine" From 6587cf874c6c99aa4f76cf4c2ae86711a5a9b1c6 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 18 Apr 2024 23:33:40 +0300 Subject: [PATCH 10/81] Update gemfile --- Gemfile | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index b95fae3d09..7db6e9c372 100644 --- a/Gemfile +++ b/Gemfile @@ -14,8 +14,8 @@ gemspec # To use a debugger # gem 'byebug', group: [:development, :test] -gem "jsbundling-rails" -gem "cssbundling-rails" +gem 'jsbundling-rails' +gem 'cssbundling-rails' # # Dependencies for dummy_app @@ -30,7 +30,7 @@ gem "puma", "~> 6.4" # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder # gem "jbuilder", "~> 2.7" # Use Redis adapter to run Action Cable in production -gem "redis", "~> 5.0" +gem 'redis', '~> 5.0' # Use Active Model has_secure_password # gem 'bcrypt', '~> 3.1.7' @@ -106,7 +106,6 @@ group :development, :test do gem "factory_bot_rails" gem "appraisal" - gem "hashid-rails", "~> 1.4", ">= 1.4.1" end gem "zeitwerk" @@ -119,25 +118,25 @@ gem "active_link_to" gem "addressable" -gem "meta-tags" +gem 'meta-tags' # Search gem "ransack", "~> 4.1", ">= 4.1.1" -gem "friendly_id", "~> 5.5.1" +gem 'friendly_id', '~> 5.5.1' -gem "aws-sdk-s3", require: false +gem 'aws-sdk-s3', require: false -gem "net-smtp", require: false +gem 'net-smtp', require: false # Dashboard charts gem "groupdate" gem "hightop" gem "active_median" -gem "acts_as_list" +gem 'acts_as_list' -gem "acts-as-taggable-on", "~> 10.0" +gem 'acts-as-taggable-on', '~> 10.0' gem "bundler-integrity", "~> 1.0" @@ -164,3 +163,5 @@ gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "./pluggy" + +gem "hashid-rails", "~> 1.4", ">= 1.4.1" From cd2943d5ed30ea7b284b4e5366e11e8216f8d888 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 18 Apr 2024 23:53:34 +0300 Subject: [PATCH 11/81] Resolve conflict git reset --- Gemfile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 7db6e9c372..117e12c24e 100644 --- a/Gemfile +++ b/Gemfile @@ -75,6 +75,7 @@ group :development do gem "rubocop" gem "ripper-tags" gem "rubocop-shopify", require: false + gem "rubycritic", require: false end group :test do @@ -86,6 +87,7 @@ group :test do gem "fuubar" gem "simplecov", require: false gem "simplecov-cobertura" + gem "simplecov-lcov" gem "webmock" gem "spring-commands-rspec" gem "launchy", require: false @@ -151,7 +153,7 @@ gem "activestorage" # Required by Avo gem "sprockets-rails" -# Avo file filed requires this gem +# Avo file field requires this gem # Use Active Storage variant gem "image_processing", "~> 1.12" @@ -165,3 +167,11 @@ gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "./pluggy" gem "hashid-rails", "~> 1.4", ">= 1.4.1" +# Avo money field +# gem "avo-money_field", path: "./../avo-money_field" +gem "money-rails", "~> 1.12" +gem "avo-money_field" + +# Avo record_link field +# gem "avo-record_link_field", path: "./../avo-record_link_field" +gem "avo-record_link_field" From 2bfacff1175790d7945c16abf50f861e862214c1 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Fri, 19 Apr 2024 00:30:47 +0300 Subject: [PATCH 12/81] Add gemfiles --- Gemfile.lock | 120 +++++++++++---------- gemfiles/rails_6.1_ruby_3.1.4.gemfile | 2 + gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock | 22 ++-- gemfiles/rails_6.1_ruby_3.2.2.gemfile | 2 + gemfiles/rails_6.1_ruby_3.3.0.gemfile | 2 + gemfiles/rails_7.1_ruby_3.1.4.gemfile | 2 + gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock | 22 ++-- gemfiles/rails_7.1_ruby_3.2.2.gemfile | 2 + gemfiles/rails_7.1_ruby_3.3.0.gemfile | 2 + 9 files changed, 101 insertions(+), 75 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index acc703cd7e..294e99dcf4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -124,17 +124,17 @@ GEM avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) - aws-partitions (1.888.0) - aws-sdk-core (3.191.1) + aws-partitions (1.916.0) + aws-sdk-core (3.192.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.77.0) + aws-sdk-kms (1.79.0) aws-sdk-core (~> 3, >= 3.191.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.143.0) - aws-sdk-core (~> 3, >= 3.191.0) + aws-sdk-s3 (1.147.0) + aws-sdk-core (~> 3, >= 3.192.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.8) aws-sigv4 (1.8.0) @@ -147,7 +147,7 @@ GEM base64 (0.2.0) bcrypt (3.1.20) benchmark (0.3.0) - better_html (2.0.2) + better_html (2.1.1) actionview (>= 6.0) activesupport (>= 6.0) ast (~> 2.0) @@ -171,14 +171,15 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - chartkick (5.0.5) + chartkick (5.0.6) + childprocess (5.0.0) coercible (1.0.0) descendants_tracker (~> 0.0.1) concurrent-ruby (1.2.3) connection_pool (2.4.1) - countries (5.7.1) + countries (6.0.0) unaccent (~> 0.3) - crack (0.4.6) + crack (1.0.0) bigdecimal rexml crass (1.0.6) @@ -194,7 +195,7 @@ GEM date (3.3.4) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - devise (4.9.3) + devise (4.9.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) @@ -202,10 +203,10 @@ GEM warden (~> 1.2.3) diff-lcs (1.5.1) docile (1.4.0) - dotenv (2.8.1) - dotenv-rails (2.8.1) - dotenv (= 2.8.1) - railties (>= 3.2) + dotenv (3.1.0) + dotenv-rails (3.1.0) + dotenv (= 3.1.0) + railties (>= 6.1) drb (2.2.1) dry-configurable (1.1.0) dry-core (~> 1.0, < 2) @@ -235,7 +236,7 @@ GEM dry-logic (~> 1.4) zeitwerk (~> 2.6) e2mmap (0.1.0) - erb-formatter (0.7.1) + erb-formatter (0.7.2) syntax_tree (~> 6.0) erubi (1.12.0) factory_bot (6.4.6) @@ -243,7 +244,7 @@ GEM factory_bot_rails (6.4.3) factory_bot (~> 6.4) railties (>= 5.0.0) - faker (3.2.3) + faker (3.3.1) i18n (>= 1.8.11, < 2) ferrum (0.14) addressable (~> 2.5) @@ -278,11 +279,11 @@ GEM highline (3.0.1) hightop (0.4.0) activesupport (>= 6.1) - hotwire-livereload (1.3.1) + hotwire-livereload (1.3.2) actioncable (>= 6.0.0) listen (>= 3.0.0) railties (>= 6.0.0) - htmlbeautifier (1.4.2) + htmlbeautifier (1.4.3) httparty (0.21.0) mini_mime (>= 1.0.0) multi_xml (>= 0.5.2) @@ -316,16 +317,17 @@ GEM jmespath (1.6.2) jsbundling-rails (1.3.0) railties (>= 6.0.0) - json (2.7.1) + json (2.7.2) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) language_server-protocol (3.17.0.3) - launchy (2.5.2) + launchy (3.0.0) addressable (~> 2.8) + childprocess (~> 5.0) lint_roller (1.1.0) - listen (3.8.0) + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) loofah (2.22.0) @@ -337,14 +339,14 @@ GEM net-pop net-smtp mapkick-rb (0.1.5) - marcel (1.0.2) + marcel (1.0.4) matrix (0.4.2) - meta-tags (2.20.0) + meta-tags (2.21.0) actionpack (>= 6.0.0, < 7.2) - method_source (1.0.0) + method_source (1.1.0) mini_magick (4.12.0) mini_mime (1.1.5) - mini_portile2 (2.8.5) + mini_portile2 (2.8.6) minitest (5.22.3) monetize (1.13.0) money (~> 6.12) @@ -365,29 +367,29 @@ GEM net-protocol net-protocol (0.2.2) timeout - net-smtp (0.4.0.1) + net-smtp (0.5.0) net-protocol - nio4r (2.7.0) - nokogiri (1.16.3) + nio4r (2.7.1) + nokogiri (1.16.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.16.3-x86_64-linux) + nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) orm_adapter (0.5.0) - pagy (7.0.6) + pagy (8.2.1) parallel (1.24.0) parser (3.3.0.5) ast (~> 2.4.1) racc path_expander (1.1.1) - pg (1.5.4) + pg (1.5.6) prefixed_ids (1.6.1) hashids (>= 1.0.0, < 2.0.0) rails (>= 6.0.0) prettier_print (1.2.1) psych (5.1.2) stringio - public_suffix (5.0.4) + public_suffix (5.0.5) puma (6.4.2) nio4r (~> 2.0) racc (1.7.3) @@ -424,7 +426,7 @@ GEM rails-html-sanitizer (1.6.0) loofah (~> 2.21) nokogiri (~> 1.14) - rails-i18n (7.0.8) + rails-i18n (7.0.9) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) railties (7.1.3.2) @@ -447,9 +449,9 @@ GEM rbs (2.8.4) rdoc (6.6.3.1) psych (>= 4.0.0) - redis (5.0.8) - redis-client (>= 0.17.0) - redis-client (0.19.1) + redis (5.2.0) + redis-client (>= 0.22.0) + redis-client (0.22.1) connection_pool reek (6.3.0) dry-schema (~> 1.13.0) @@ -457,7 +459,7 @@ GEM rainbow (>= 2.0, < 4.0) rexml (~> 3.1) regexp_parser (2.9.0) - reline (0.5.1) + reline (0.5.2) io-console (~> 0.5) responders (3.1.1) actionpack (>= 5.2) @@ -465,7 +467,7 @@ GEM reverse_markdown (2.1.1) nokogiri rexml (3.2.6) - ripper-tags (1.0.1) + ripper-tags (1.0.2) rspec-core (3.13.0) rspec-support (~> 3.13.0) rspec-expectations (3.13.0) @@ -474,37 +476,37 @@ GEM rspec-mocks (3.13.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (6.1.1) + rspec-rails (6.1.2) actionpack (>= 6.1) activesupport (>= 6.1) railties (>= 6.1) - rspec-core (~> 3.12) - rspec-expectations (~> 3.12) - rspec-mocks (~> 3.12) - rspec-support (~> 3.12) + rspec-core (~> 3.13) + rspec-expectations (~> 3.13) + rspec-mocks (~> 3.13) + rspec-support (~> 3.13) rspec-retry (0.6.2) rspec-core (> 3.3) - rspec-support (3.13.0) - rubocop (1.59.0) + rspec-support (3.13.1) + rubocop (1.62.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.4) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) - rubocop-shopify (2.14.0) + rubocop-shopify (2.15.1) rubocop (~> 1.51) ruby-progressbar (1.13.0) - ruby-vips (2.2.0) + ruby-vips (2.2.1) ffi (~> 1.12) ruby_parser (3.21.0) racc (~> 1.5) @@ -552,7 +554,7 @@ GEM solargraph-rails (1.1.0) activesupport solargraph - spring (4.1.3) + spring (4.2.0) spring-commands-rspec (1.0.4) spring (>= 0.9.1) sprockets (4.2.1) @@ -562,10 +564,10 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - standard (1.33.0) + standard (1.35.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.59.0) + rubocop (~> 1.62.0) standard-custom (~> 1.0.0) standard-performance (~> 1.3) standard-custom (1.0.2) @@ -579,13 +581,13 @@ GEM prettier_print (>= 1.2.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - test-prof (1.3.1) + test-prof (1.3.2) thor (1.3.1) thread_safe (0.3.6) tilt (2.3.0) timeout (0.4.1) tty-which (0.5.0) - turbo-rails (2.0.1) + turbo-rails (2.0.5) actionpack (>= 6.0.0) activejob (>= 6.0.0) railties (>= 6.0.0) @@ -595,7 +597,7 @@ GEM concurrent-ruby (~> 1.0) unaccent (0.4.0) unicode-display_width (2.5.0) - view_component (3.10.0) + view_component (3.12.1) activesupport (>= 5.2.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) @@ -610,7 +612,7 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) - webmock (3.19.1) + webmock (3.23.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -620,7 +622,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - yard (0.9.35) + yard (0.9.36) zeitwerk (2.6.13) PLATFORMS diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile b/gemfiles/rails_6.1_ruby_3.1.4.gemfile index 6de42f8e3b..713fe95acc 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock index 32bdf66225..a4d8f0a7b0 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -106,6 +106,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -253,6 +254,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -446,19 +450,19 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.13.0) - rubocop (1.59.0) + rubocop (1.62.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.4) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) @@ -523,10 +527,10 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - standard (1.33.0) + standard (1.35.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.59.0) + rubocop (~> 1.62.0) standard-custom (~> 1.0.0) standard-performance (~> 1.3) standard-custom (1.0.2) @@ -599,6 +603,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -620,6 +625,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/gemfiles/rails_6.1_ruby_3.2.2.gemfile b/gemfiles/rails_6.1_ruby_3.2.2.gemfile index 6de42f8e3b..713fe95acc 100644 --- a/gemfiles/rails_6.1_ruby_3.2.2.gemfile +++ b/gemfiles/rails_6.1_ruby_3.2.2.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do diff --git a/gemfiles/rails_6.1_ruby_3.3.0.gemfile b/gemfiles/rails_6.1_ruby_3.3.0.gemfile index 6de42f8e3b..713fe95acc 100644 --- a/gemfiles/rails_6.1_ruby_3.3.0.gemfile +++ b/gemfiles/rails_6.1_ruby_3.3.0.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do diff --git a/gemfiles/rails_7.1_ruby_3.1.4.gemfile b/gemfiles/rails_7.1_ruby_3.1.4.gemfile index d418725c31..2bb349272c 100644 --- a/gemfiles/rails_7.1_ruby_3.1.4.gemfile +++ b/gemfiles/rails_7.1_ruby_3.1.4.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do diff --git a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock index f0b0b92f42..fdaa190b55 100644 --- a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -121,6 +121,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -271,6 +272,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -478,19 +482,19 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.13.0) - rubocop (1.59.0) + rubocop (1.62.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.4) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) @@ -556,10 +560,10 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - standard (1.33.0) + standard (1.35.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.59.0) + rubocop (~> 1.62.0) standard-custom (~> 1.0.0) standard-performance (~> 1.3) standard-custom (1.0.2) @@ -632,6 +636,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -653,6 +658,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/gemfiles/rails_7.1_ruby_3.2.2.gemfile b/gemfiles/rails_7.1_ruby_3.2.2.gemfile index d418725c31..2bb349272c 100644 --- a/gemfiles/rails_7.1_ruby_3.2.2.gemfile +++ b/gemfiles/rails_7.1_ruby_3.2.2.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do diff --git a/gemfiles/rails_7.1_ruby_3.3.0.gemfile b/gemfiles/rails_7.1_ruby_3.3.0.gemfile index d418725c31..2bb349272c 100644 --- a/gemfiles/rails_7.1_ruby_3.3.0.gemfile +++ b/gemfiles/rails_7.1_ruby_3.3.0.gemfile @@ -41,8 +41,10 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" +gem "avo-record_link_field" gem "psych", "< 4" group :development do From e95de053d07d65d4fd12d4cacfab8fa3a9cda4ef Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Fri, 19 Apr 2024 17:34:37 +0300 Subject: [PATCH 13/81] appraisal bundle --- gemfiles/rails_6.1_ruby_3.2.2.gemfile.lock | 8 +++++++- gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock | 8 +++++++- gemfiles/rails_7.1_ruby_3.2.2.gemfile.lock | 8 +++++++- gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/gemfiles/rails_6.1_ruby_3.2.2.gemfile.lock b/gemfiles/rails_6.1_ruby_3.2.2.gemfile.lock index 11575ad66f..63dcd308d7 100644 --- a/gemfiles/rails_6.1_ruby_3.2.2.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.2.2.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -106,6 +106,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -253,6 +254,9 @@ GEM groupdate (6.2.1) activesupport (>= 5.2) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.3.0) @@ -599,6 +603,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -620,6 +625,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock index 32bdf66225..8cd01ae0de 100644 --- a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -106,6 +106,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -253,6 +254,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -599,6 +603,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -620,6 +625,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/gemfiles/rails_7.1_ruby_3.2.2.gemfile.lock b/gemfiles/rails_7.1_ruby_3.2.2.gemfile.lock index 8c6a682dec..b6817ae671 100644 --- a/gemfiles/rails_7.1_ruby_3.2.2.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.2.2.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -121,6 +121,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -271,6 +272,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -632,6 +636,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -653,6 +658,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier diff --git a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock index f0b0b92f42..0744f8fd71 100644 --- a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock @@ -6,7 +6,7 @@ PATH PATH remote: .. specs: - avo (3.6.0) + avo (3.6.1) actionview (>= 6.1) active_link_to activerecord (>= 6.1) @@ -121,6 +121,7 @@ GEM ast (2.4.2) avo-money_field (0.0.4) money-rails (~> 1.12) + avo-record_link_field (0.0.1) awesome_print (1.9.2) aws-eventstream (1.3.0) aws-partitions (1.888.0) @@ -271,6 +272,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.0.1) hightop (0.4.0) @@ -632,6 +636,7 @@ DEPENDENCIES appraisal avo! avo-money_field + avo-record_link_field awesome_print aws-sdk-s3 bootsnap (>= 1.4.2) @@ -653,6 +658,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier From 51dd8443d2b9ee81a9e6bf8ea638a60cda4cd022 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Sun, 21 Apr 2024 22:00:47 +0300 Subject: [PATCH 14/81] Replace direct record id expouser with safer alternative --- app/components/avo/actions_component.html.erb | 2 +- app/components/avo/index/grid_item_component.html.erb | 2 +- app/components/avo/index/resource_controls_component.rb | 8 ++++---- app/components/avo/index/table_row_component.html.erb | 2 +- app/components/avo/resource_component.rb | 2 +- app/components/avo/resource_sidebar_component.html.erb | 2 +- app/components/avo/views/resource_edit_component.html.erb | 4 ++-- app/components/avo/views/resource_show_component.html.erb | 2 +- app/controllers/avo/associations_controller.rb | 2 +- app/controllers/avo/search_controller.rb | 2 +- app/helpers/avo/application_helper.rb | 2 +- .../base/close_modal_and_reload_field.turbo_stream.erb | 2 +- lib/avo/base_resource.rb | 2 +- lib/avo/fields/belongs_to_field.rb | 2 +- spec/dummy/app/avo/resources/city.rb | 2 +- spec/dummy/app/avo/resources/membership.rb | 2 +- .../views/avo/resource_tools/_fish_information.html.erb | 2 +- 17 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/components/avo/actions_component.html.erb b/app/components/avo/actions_component.html.erb index 4d0288252d..ceab855bc0 100644 --- a/app/components/avo/actions_component.html.erb +++ b/app/components/avo/actions_component.html.erb @@ -4,7 +4,7 @@ data-actions-picker-enabled-class="text-black hover:bg-primary-500 hover:text-white" data-actions-picker-disabled-class="cursor-wait text-gray-500" data-resource-name="<%= @resource.class.to_s %>" - <% if @resource.record.present? %> data-record-id="<%= @resource.record.id %>" <% end %> + <% if @resource.record.present? %> data-record-id="<%= @resource.record.to_param %>" <% end %> > <%= a_button style: @style, type: :button, diff --git a/app/components/avo/index/grid_item_component.html.erb b/app/components/avo/index/grid_item_component.html.erb index f514ff4580..8e3410ca8c 100644 --- a/app/components/avo/index/grid_item_component.html.erb +++ b/app/components/avo/index/grid_item_component.html.erb @@ -3,7 +3,7 @@ data-component-name="<%= self.class.to_s.underscore %>" <%== item_selector_init @resource %> data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.id %>" + data-record-id="<%= @resource.record.to_param %>" <%= try :drag_reorder_item_attributes %> > <%= content_tag :div, diff --git a/app/components/avo/index/resource_controls_component.rb b/app/components/avo/index/resource_controls_component.rb index ac4b0cf4ad..4166b05c5b 100644 --- a/app/components/avo/index/resource_controls_component.rb +++ b/app/components/avo/index/resource_controls_component.rb @@ -93,7 +93,7 @@ def render_edit_button(control) data: { target: "control:edit", control: :edit, - "resource-id": @resource.record.id, + "resource-id": @resource.record.to_param, tippy: "tooltip", } end @@ -135,14 +135,14 @@ def render_delete_button(control) target: "control:destroy", control: :destroy, tippy: control.title ? :tooltip : nil, - "resource-id": @resource.record.id, + "resource-id": @resource.record.to_param, } end def render_detach_button(control) return unless can_detach? - a_button url: helpers.resource_detach_path(params[:resource_name], params[:id], params[:related_name], @resource.record.id), + a_button url: helpers.resource_detach_path(params[:resource_name], params[:id], params[:related_name], @resource.record.to_param), style: :icon, color: :gray, icon: "detach", @@ -155,7 +155,7 @@ def render_detach_button(control) turbo_confirm: control.confirmation_message, target: "control:detach", control: :detach, - "resource-id": @resource.record.id, + "resource-id": @resource.record.to_param, tippy: :tooltip, } end diff --git a/app/components/avo/index/table_row_component.html.erb b/app/components/avo/index/table_row_component.html.erb index 6c76011b2b..49ea796dcd 100644 --- a/app/components/avo/index/table_row_component.html.erb +++ b/app/components/avo/index/table_row_component.html.erb @@ -4,7 +4,7 @@ data-component-name="<%= self.class.to_s.underscore %>" <%== item_selector_init @resource %> data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.id %>" + data-record-id="<%= @resource.record.to_param %>" <%= try :drag_reorder_item_attributes %> > <% if @resource.record_selector %> diff --git a/app/components/avo/resource_component.rb b/app/components/avo/resource_component.rb index 86d9ff53dc..bcebb764df 100644 --- a/app/components/avo/resource_component.rb +++ b/app/components/avo/resource_component.rb @@ -172,7 +172,7 @@ def render_delete_button(control) target: "control:destroy", control: :destroy, tippy: control.title ? :tooltip : nil, - "resource-id": @resource.record.id, + "resource-id": @resource.record.to_param, } do control.label end diff --git a/app/components/avo/resource_sidebar_component.html.erb b/app/components/avo/resource_sidebar_component.html.erb index 68ac7538b5..fdc349985b 100644 --- a/app/components/avo/resource_sidebar_component.html.erb +++ b/app/components/avo/resource_sidebar_component.html.erb @@ -2,7 +2,7 @@ data-component-name="<%= self.class.to_s.underscore %>" data-component-index="<%= index %>" data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.id %>" + data-record-id="<%= @resource.record.to_param %>" > <%= render Avo::Items::VisibleItemsComponent.new( resource: @resource, diff --git a/app/components/avo/views/resource_edit_component.html.erb b/app/components/avo/views/resource_edit_component.html.erb index e01b583769..e219a5f2b4 100644 --- a/app/components/avo/views/resource_edit_component.html.erb +++ b/app/components/avo/views/resource_edit_component.html.erb @@ -3,9 +3,9 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.id, + record_id: @resource.record.to_param, selected_resources_name: @resource.model_key, - selected_resources: [@resource.record.id], + selected_resources: [@resource.record.to_param], **@resource.stimulus_data_attributes } do %> <%= render_cards_component %> diff --git a/app/components/avo/views/resource_show_component.html.erb b/app/components/avo/views/resource_show_component.html.erb index f64ff01f8b..7a4f38477a 100644 --- a/app/components/avo/views/resource_show_component.html.erb +++ b/app/components/avo/views/resource_show_component.html.erb @@ -2,7 +2,7 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.id, + record_id: @resource.record.to_param, selected_resources_name: @resource.model_key, selected_resources: [@resource.record.to_param], **@resource.stimulus_data_attributes diff --git a/app/controllers/avo/associations_controller.rb b/app/controllers/avo/associations_controller.rb index bdf0c5891c..d5956d8250 100644 --- a/app/controllers/avo/associations_controller.rb +++ b/app/controllers/avo/associations_controller.rb @@ -54,7 +54,7 @@ def new end @options = query.all.map do |record| - [@attachment_resource.new(record: record).record_title, record.id] + [@attachment_resource.new(record: record).record_title, record.to_param] end end end diff --git a/app/controllers/avo/search_controller.rb b/app/controllers/avo/search_controller.rb index 23458a5e18..03e3958ced 100644 --- a/app/controllers/avo/search_controller.rb +++ b/app/controllers/avo/search_controller.rb @@ -133,7 +133,7 @@ def fetch_result_information(record, resource, item) end { - _id: record.id, + _id: record.to_param, _label: highlighted_title, _url: resource.class.fetch_search(:result_path, record: resource.record) || record_path } diff --git a/app/helpers/avo/application_helper.rb b/app/helpers/avo/application_helper.rb index a74d4e7b0d..57b11e8192 100644 --- a/app/helpers/avo/application_helper.rb +++ b/app/helpers/avo/application_helper.rb @@ -130,7 +130,7 @@ def number_to_social(number, start_at: 10_000) end def frame_id(resource) - ["frame", resource.model_name.singular, resource.record.id].compact.join("-") + ["frame", resource.model_name.singular, resource.record.to_param].compact.join("-") end def chart_color(index) diff --git a/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb b/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb index f3f16f813c..e987334d3f 100644 --- a/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +++ b/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb @@ -2,7 +2,7 @@ diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index fc44226c66..af51ba3b33 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -380,7 +380,7 @@ def record_title return name if @record.nil? # Get the title from the record if title is not set, try to get the name, title or label, or fallback to the id - return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.id if title.nil? + return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? # If the title is a symbol, get the value from the record else execute the block/string case title diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index c459cf590b..096978b3d8 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -123,7 +123,7 @@ def values_for_type(model = nil) end query.all.map do |record| - [resource.new(record: record).record_title, record.id] + [resource.new(record: record).record_title, record.to_param] end end diff --git a/spec/dummy/app/avo/resources/city.rb b/spec/dummy/app/avo/resources/city.rb index 00e3af0dc3..4062bbac3f 100644 --- a/spec/dummy/app/avo/resources/city.rb +++ b/spec/dummy/app/avo/resources/city.rb @@ -69,7 +69,7 @@ def tool_fields path, data = Avo::Actions::City::Update.link_arguments( resource: resource, arguments: { - cities: [resource.record.id], + cities: [resource.record.to_param], render_name: true } ) diff --git a/spec/dummy/app/avo/resources/membership.rb b/spec/dummy/app/avo/resources/membership.rb index 338a395a40..56bf886567 100644 --- a/spec/dummy/app/avo/resources/membership.rb +++ b/spec/dummy/app/avo/resources/membership.rb @@ -20,7 +20,7 @@ def fields Beginner: :beginner, Intermediate: :intermediate, Advanced: :advanced, - "#{record.id}": "record_id", + "#{record.to_param}": "record_id", "#{resource.name}": "resource_name", "#{view}": "view", "#{field.id}": "field" diff --git a/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb b/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb index 482338c8d8..7cd3541047 100644 --- a/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb +++ b/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb @@ -26,7 +26,7 @@

- The fish's name is <%= @resource.record.name %>. The ID of the record is <%= @resource.record.id %> and the tool's name is <%= tool.class.to_s %>. + The fish's name is <%= @resource.record.name %>. The ID of the record is <%= @resource.record.to_param %> and the tool's name is <%= tool.class.to_s %>.

<%= turbo_frame_tag "fish_custom_action_demo" do %> From e1631a15aa15f06cfb1d8ee703f68d1e99578809 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Sun, 21 Apr 2024 22:04:39 +0300 Subject: [PATCH 15/81] Fix lint --- lib/avo/base_resource.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index af51ba3b33..52c20062cb 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -380,7 +380,7 @@ def record_title return name if @record.nil? # Get the title from the record if title is not set, try to get the name, title or label, or fallback to the id - return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? + return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? # If the title is a symbol, get the value from the record else execute the block/string case title From e4a229c5a7308698b661db3e6380d28fdb394570 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 18:51:08 +0300 Subject: [PATCH 16/81] Revert to record.id --- app/components/avo/fields/belongs_to_field/edit_component.rb | 2 +- app/components/avo/views/resource_edit_component.html.erb | 4 ++-- app/helpers/avo/application_helper.rb | 2 +- app/helpers/avo/resources_helper.rb | 2 +- lib/avo/fields/belongs_to_field.rb | 2 +- lib/avo/plugin_manager.rb | 1 + spec/dummy/app/avo/resources/membership.rb | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.rb b/app/components/avo/fields/belongs_to_field/edit_component.rb index 9b2ba56df4..684f4e44c6 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.rb +++ b/app/components/avo/fields/belongs_to_field/edit_component.rb @@ -63,7 +63,7 @@ def create_path(target_resource = nil) helpers.new_resource_path(**{ via_relation: @field.id.to_s, resource: target_resource || @field.target_resource, - via_record_id: resource.record.persisted? ? resource.record.to_param : nil, + via_record_id: resource.record.persisted? ? resource.record.id : nil, via_belongs_to_resource_class: resource.class.name }.compact) end diff --git a/app/components/avo/views/resource_edit_component.html.erb b/app/components/avo/views/resource_edit_component.html.erb index e219a5f2b4..e01b583769 100644 --- a/app/components/avo/views/resource_edit_component.html.erb +++ b/app/components/avo/views/resource_edit_component.html.erb @@ -3,9 +3,9 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.to_param, + record_id: @resource.record.id, selected_resources_name: @resource.model_key, - selected_resources: [@resource.record.to_param], + selected_resources: [@resource.record.id], **@resource.stimulus_data_attributes } do %> <%= render_cards_component %> diff --git a/app/helpers/avo/application_helper.rb b/app/helpers/avo/application_helper.rb index 57b11e8192..a74d4e7b0d 100644 --- a/app/helpers/avo/application_helper.rb +++ b/app/helpers/avo/application_helper.rb @@ -130,7 +130,7 @@ def number_to_social(number, start_at: 10_000) end def frame_id(resource) - ["frame", resource.model_name.singular, resource.record.to_param].compact.join("-") + ["frame", resource.model_name.singular, resource.record.id].compact.join("-") end def chart_color(index) diff --git a/app/helpers/avo/resources_helper.rb b/app/helpers/avo/resources_helper.rb index c84eeb72ef..453927d112 100644 --- a/app/helpers/avo/resources_helper.rb +++ b/app/helpers/avo/resources_helper.rb @@ -38,7 +38,7 @@ def filter_wrapper(name: nil, index: nil, **args, &block) end def item_selector_init(resource) - "data-resource-name='#{resource.model_key}' data-resource-id='#{resource.record.to_param}' data-controller='item-selector'" + "data-resource-name='#{resource.model_key}' data-resource-id='#{resource.record.id}' data-controller='item-selector'" end def item_selector_input(floating: false, size: :md) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 096978b3d8..c459cf590b 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -123,7 +123,7 @@ def values_for_type(model = nil) end query.all.map do |record| - [resource.new(record: record).record_title, record.to_param] + [resource.new(record: record).record_title, record.id] end end diff --git a/lib/avo/plugin_manager.rb b/lib/avo/plugin_manager.rb index 33bc7a2af0..d6b08fc75e 100644 --- a/lib/avo/plugin_manager.rb +++ b/lib/avo/plugin_manager.rb @@ -1,3 +1,4 @@ +require "ostruct" module Avo class PluginManager attr_reader :plugins diff --git a/spec/dummy/app/avo/resources/membership.rb b/spec/dummy/app/avo/resources/membership.rb index 56bf886567..338a395a40 100644 --- a/spec/dummy/app/avo/resources/membership.rb +++ b/spec/dummy/app/avo/resources/membership.rb @@ -20,7 +20,7 @@ def fields Beginner: :beginner, Intermediate: :intermediate, Advanced: :advanced, - "#{record.to_param}": "record_id", + "#{record.id}": "record_id", "#{resource.name}": "resource_name", "#{view}": "view", "#{field.id}": "field" From 9c9190c3e541a1677beac4d7aa5e0f9ea34c87b4 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 20:21:37 +0300 Subject: [PATCH 17/81] Fix selector in tabs_spec --- spec/system/avo/tabs_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/system/avo/tabs_spec.rb b/spec/system/avo/tabs_spec.rb index 876eb0161b..93fcd4ef53 100644 --- a/spec/system/avo/tabs_spec.rb +++ b/spec/system/avo/tabs_spec.rb @@ -9,7 +9,7 @@ visit "/admin/resources/users" expect(find("table thead").text).to eq "ID\n\t\nAVATAR\n\t\nFIRST NAME\n\t\nLAST NAME\n\t\nUSER EMAIL\n\t\nIS ACTIVE\n\t\nCV\n\t\nIS ADMIN\n\t\nROLES\n\t\nBIRTHDAY\n\t\nIS WRITER" - within find("tr[data-resource-id='#{user.to_param}']") do + within find("tr[data-resource-id='#{user.id}']") do expect(find_all("table tbody tr td")[10].text).to eq "Wednesday, 10 February 1988" end end From 562d5e5bed10385f7baac70ac3bbe261ff4fd0c1 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 20:24:15 +0300 Subject: [PATCH 18/81] Fix selector in has_many --- spec/system/avo/has_many_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/avo/has_many_spec.rb b/spec/system/avo/has_many_spec.rb index cd2f58612e..ef8b25e559 100644 --- a/spec/system/avo/has_many_spec.rb +++ b/spec/system/avo/has_many_spec.rb @@ -48,11 +48,11 @@ expect { accept_alert do - find("[data-resource-id='#{comments.first.id}'] [data-control='destroy']").click + find("[data-resource-id='#{comments.first.to_param}'] [data-control='destroy']").click end accept_alert do - find("[data-resource-id='#{comments.third.id}'] [data-control='destroy']").click + find("[data-resource-id='#{comments.third.to_param}'] [data-control='destroy']").click end }.to change(Comment, :count).by(-2) From 719cb081d660f0b3c2229574a8581881aa143330 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 20:50:57 +0300 Subject: [PATCH 19/81] Fix selector --- spec/features/avo/search_has_many_scope_spec.rb | 8 ++++---- .../select_field/enum_array_display_value_false_spec.rb | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/features/avo/search_has_many_scope_spec.rb b/spec/features/avo/search_has_many_scope_spec.rb index ee0dc6542d..dd87fa4a48 100644 --- a/spec/features/avo/search_has_many_scope_spec.rb +++ b/spec/features/avo/search_has_many_scope_spec.rb @@ -26,13 +26,13 @@ via_association: "has_many", via_association_id: "links", via_reflection_class: "Course", - via_reflection_id: course_with_three_links.id + via_reflection_id: course_with_three_links.to_param } expect(json["course links"]["results"].count).to eq 3 3.times do |index| - expect(json["course links"]["results"][index]["_id"]).to eq course_with_three_links.links[index].id + expect(json["course links"]["results"][index]["_id"]).to eq course_with_three_links.links[index].to_param end end @@ -45,13 +45,13 @@ via_association: "has_many", via_association_id: "links", via_reflection_class: "Course", - via_reflection_id: course_with_five_links.id + via_reflection_id: course_with_five_links.to_param } expect(json["course links"]["results"].count).to eq 5 5.times do |index| - expect(json["course links"]["results"][index]["_id"]).to eq course_with_five_links.links[index].id + expect(json["course links"]["results"][index]["_id"]).to eq course_with_five_links.links[index].to_param end end end diff --git a/spec/features/avo/select_field/enum_array_display_value_false_spec.rb b/spec/features/avo/select_field/enum_array_display_value_false_spec.rb index d7c5f0bc17..d121fe25c2 100644 --- a/spec/features/avo/select_field/enum_array_display_value_false_spec.rb +++ b/spec/features/avo/select_field/enum_array_display_value_false_spec.rb @@ -6,7 +6,7 @@ let(:url) { "/admin/resources/posts?view_type=table" } subject do visit url - field_element_by_resource_id "status", post.to_param + field_element_by_resource_id "status", post.id end describe "without status" do From 886619db58b0e79761496b3dd4ba92f98d204e84 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 21:17:35 +0300 Subject: [PATCH 20/81] Fix selector --- spec/features/avo/fields_methods_for_views_spec.rb | 2 +- spec/features/avo/has_many_field_spec.rb | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/features/avo/fields_methods_for_views_spec.rb b/spec/features/avo/fields_methods_for_views_spec.rb index e356fbd3f8..6ce1b715b3 100644 --- a/spec/features/avo/fields_methods_for_views_spec.rb +++ b/spec/features/avo/fields_methods_for_views_spec.rb @@ -166,7 +166,7 @@ def form_fields visit "#{Avo::Engine.routes.url_helpers.resources_course_path(course)}/links?turbo_frame=has_many_field_links&view=show" expect { - find("tr[data-resource-id='#{course.links.first.to_param}'] [data-control='detach']").click + find("tr[data-resource-id='#{course.links.first.id}'] [data-control='detach']").click }.to change(course.links, :count).by(-1) end diff --git a/spec/features/avo/has_many_field_spec.rb b/spec/features/avo/has_many_field_spec.rb index 8412f6c0b0..ea386ed7c2 100644 --- a/spec/features/avo/has_many_field_spec.rb +++ b/spec/features/avo/has_many_field_spec.rb @@ -62,32 +62,32 @@ expect(page).to have_css("a[data-control='show'][href='#{show_path}']") # id field show link - expect(field_element_by_resource_id("id", post.to_param)).to have_css("a[href='/admin/resources/posts/#{post.slug}?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser']") + expect(field_element_by_resource_id("id", post.id)).to have_css("a[href='/admin/resources/posts/#{post.slug}?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser']") # edit link edit_path = "/admin/resources/posts/#{post.slug}/edit?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser" - expect(page).to have_selector("[data-component='resources-index'] a[data-control='edit'][data-resource-id='#{post.id}'][href='#{edit_path}']") + expect(page).to have_selector("[data-component='resources-index'] a[data-control='edit'][data-resource-id='#{post.to_param}'][href='#{edit_path}']") # detach form - form = "form[action='/admin/resources/users/#{user.slug}/posts/#{post.id}']" + form = "form[action='/admin/resources/users/#{user.slug}/posts/#{post.to_param}']" expect(page).to have_selector("[data-component='resources-index'] #{form}") expect(page).to have_selector(:css, "#{form} input[type='hidden'][name='_method'][value='delete']", visible: false) # expect(page).to have_selector(:css, "#{form} input#referrer_detach_#{post.slug}[value='/admin/resources/users/#{user.slug}/posts?turbo_frame=has_many_field_posts']", visible: false) - expect(page).to have_selector("[data-component='resources-index'] #{form} button[data-control='detach'][data-resource-id='#{post.id}'][data-turbo-frame='has_many_field_posts']") + expect(page).to have_selector("[data-component='resources-index'] #{form} button[data-control='detach'][data-resource-id='#{post.to_param}'][data-turbo-frame='has_many_field_posts']") # destroy form form = "form[action='/admin/resources/posts/#{post.slug}']" expect(page).to have_selector("[data-component='resources-index'] #{form}") expect(page).to have_selector("#{form} input[type='hidden'][name='_method'][value='delete']", visible: false) # expect(page).to have_selector("#{form} input#referrer_destroy_#{post.id}[value='/admin/resources/users/#{user.slug}/posts?turbo_frame=has_many_field_posts']", visible: false) - expect(page).to have_selector("[data-component='resources-index'] #{form} button[data-control='destroy'][data-resource-id='#{post.id}'][data-turbo-frame='has_many_field_posts']") + expect(page).to have_selector("[data-component='resources-index'] #{form} button[data-control='destroy'][data-resource-id='#{post.to_param}'][data-turbo-frame='has_many_field_posts']") end it "deletes a post" do visit url expect { - find("[data-resource-id='#{post.to_param}'] [data-control='destroy']").click + find("[data-resource-id='#{post.id}'] [data-control='destroy']").click }.to change(Post, :count).by(-1) expect(page).to have_current_path url @@ -98,7 +98,7 @@ visit url expect { - find("tr[data-resource-id='#{post.to_param}'] [data-control='detach']").click + find("tr[data-resource-id='#{post.id}'] [data-control='detach']").click }.to change(user.posts, :count).by(-1) expect(page).to have_current_path url From 01d6962bbb9137ce213a7be351ebce40216ce3eb Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 22 Apr 2024 21:29:39 +0300 Subject: [PATCH 21/81] Fix selector --- spec/features/avo/record_passed_to_scope_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/features/avo/record_passed_to_scope_spec.rb b/spec/features/avo/record_passed_to_scope_spec.rb index f4bf4dde31..ac9b71d903 100644 --- a/spec/features/avo/record_passed_to_scope_spec.rb +++ b/spec/features/avo/record_passed_to_scope_spec.rb @@ -18,7 +18,7 @@ } expect(json["users"]["results"].count).to eq 1 - expect(json["users"]["results"].first["_id"]).to eq admin.id + expect(json["users"]["results"].first["_id"]).to eq admin.to_param end it "returns only the team that starts with the letter H" do @@ -32,7 +32,7 @@ } expect(json["teams"]["results"].count).to eq 1 - expect(json["teams"]["results"].first["_id"]).to eq team.id + expect(json["teams"]["results"].first["_id"]).to eq team.to_param expect(json["teams"]["results"].first["_label"]).to eq "Hershey" end end From 349f84f8ff1509b816c6947312d6bfc3e301fe9f Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 24 Apr 2024 16:57:16 +0300 Subject: [PATCH 22/81] Fix value for id --- lib/avo/fields/base_field.rb | 18 ++++++++++++------ lib/avo/fields/belongs_to_field.rb | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/avo/fields/base_field.rb b/lib/avo/fields/base_field.rb index 8d45ef8fe1..d6c1f80084 100644 --- a/lib/avo/fields/base_field.rb +++ b/lib/avo/fields/base_field.rb @@ -193,13 +193,9 @@ def execute_block ).handle end - # Fills the record with the received value on create and update actions. - def fill_field(record, key, value, params) - key = @for_attribute.to_s if @for_attribute.present? - return record unless has_attribute?(record, key) - + def update_using(record, key, value, params) if @update_using.present? - value = Avo::ExecutionContext.new( + Avo::ExecutionContext.new( target: @update_using, record: record, key: key, @@ -208,7 +204,17 @@ def fill_field(record, key, value, params) field: self, include: self.class.included_modules ).handle + else + value end + end + + # Fills the record with the received value on create and update actions. + def fill_field(record, key, value, params) + key = @for_attribute.to_s if @for_attribute.present? + return record unless has_attribute?(record, key) + + value = update_using(record, key, value, params) record.public_send(:"#{key}=", value) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index c459cf590b..f7f300a5ee 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -123,7 +123,7 @@ def values_for_type(model = nil) end query.all.map do |record| - [resource.new(record: record).record_title, record.id] + [resource.new(record: record).record_title, record.to_param] end end @@ -195,7 +195,7 @@ def to_permitted_param def fill_field(model, key, value, params) return model unless model.methods.include? key.to_sym - + value = update_using(record, key, value, params) if polymorphic_as.present? valid_model_class = valid_polymorphic_class params[:"#{polymorphic_as}_type"] From f52733646eb75e498001dd775f2bfeaf1ba333ec Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 30 Apr 2024 15:04:46 +0300 Subject: [PATCH 23/81] wip --- app/components/avo/fields/belongs_to_field/edit_component.rb | 2 +- app/components/avo/views/resource_edit_component.html.erb | 4 ++-- app/helpers/avo/resources_helper.rb | 2 +- spec/dummy/app/avo/resources/comment.rb | 2 +- spec/dummy/app/models/user.rb | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.rb b/app/components/avo/fields/belongs_to_field/edit_component.rb index 684f4e44c6..9b2ba56df4 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.rb +++ b/app/components/avo/fields/belongs_to_field/edit_component.rb @@ -63,7 +63,7 @@ def create_path(target_resource = nil) helpers.new_resource_path(**{ via_relation: @field.id.to_s, resource: target_resource || @field.target_resource, - via_record_id: resource.record.persisted? ? resource.record.id : nil, + via_record_id: resource.record.persisted? ? resource.record.to_param : nil, via_belongs_to_resource_class: resource.class.name }.compact) end diff --git a/app/components/avo/views/resource_edit_component.html.erb b/app/components/avo/views/resource_edit_component.html.erb index e01b583769..e219a5f2b4 100644 --- a/app/components/avo/views/resource_edit_component.html.erb +++ b/app/components/avo/views/resource_edit_component.html.erb @@ -3,9 +3,9 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.id, + record_id: @resource.record.to_param, selected_resources_name: @resource.model_key, - selected_resources: [@resource.record.id], + selected_resources: [@resource.record.to_param], **@resource.stimulus_data_attributes } do %> <%= render_cards_component %> diff --git a/app/helpers/avo/resources_helper.rb b/app/helpers/avo/resources_helper.rb index 453927d112..c84eeb72ef 100644 --- a/app/helpers/avo/resources_helper.rb +++ b/app/helpers/avo/resources_helper.rb @@ -38,7 +38,7 @@ def filter_wrapper(name: nil, index: nil, **args, &block) end def item_selector_init(resource) - "data-resource-name='#{resource.model_key}' data-resource-id='#{resource.record.id}' data-controller='item-selector'" + "data-resource-name='#{resource.model_key}' data-resource-id='#{resource.record.to_param}' data-controller='item-selector'" end def item_selector_input(floating: false, size: :md) diff --git a/spec/dummy/app/avo/resources/comment.rb b/spec/dummy/app/avo/resources/comment.rb index ebf7218ca3..68e561e92d 100644 --- a/spec/dummy/app/avo/resources/comment.rb +++ b/spec/dummy/app/avo/resources/comment.rb @@ -18,7 +18,7 @@ def fields as: :date_time, picker_format: "Y-m-d H:i:S", format: "cccc, d LLLL yyyy, HH:mm ZZZZ" # Wednesday, 10 February 1988, 16:00 GMT - field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser + field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser, update_using: -> { User.find(value).id } field :commentable, as: :belongs_to, polymorphic_as: :commentable, types: [::Post, ::Project] end diff --git a/spec/dummy/app/models/user.rb b/spec/dummy/app/models/user.rb index ac3b9a2ff2..4311a294ac 100644 --- a/spec/dummy/app/models/user.rb +++ b/spec/dummy/app/models/user.rb @@ -42,7 +42,7 @@ class User < ApplicationRecord has_one_attached :cv - friendly_id :name, use: :slugged + friendly_id :name, use: [:slugged, :finders] scope :active, -> { where active: true } scope :admins, -> { where "(roles->>'admin')::boolean is true" } From e78fa912935bf5650ac53295c31bc7ff5a1e7e61 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 7 May 2024 10:29:30 +0300 Subject: [PATCH 24/81] Fix enum_array_display_value_false_spec --- .../avo/select_field/enum_array_display_value_false_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/avo/select_field/enum_array_display_value_false_spec.rb b/spec/features/avo/select_field/enum_array_display_value_false_spec.rb index d121fe25c2..d7c5f0bc17 100644 --- a/spec/features/avo/select_field/enum_array_display_value_false_spec.rb +++ b/spec/features/avo/select_field/enum_array_display_value_false_spec.rb @@ -6,7 +6,7 @@ let(:url) { "/admin/resources/posts?view_type=table" } subject do visit url - field_element_by_resource_id "status", post.id + field_element_by_resource_id "status", post.to_param end describe "without status" do From 2135b3e25cceb8b79e6d51af10c7159335316275 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Tue, 7 May 2024 13:43:03 +0300 Subject: [PATCH 25/81] possible quick fix for not showing belongs to --- .../avo/fields/belongs_to_field/edit_component.html.erb | 2 +- lib/avo/fields/belongs_to_field.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index bf98b437e8..53a75ac56d 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -100,7 +100,7 @@ <%= @form.select @field.id_input_foreign_key, @field.options, { include_blank: @field.placeholder, - value: @field.value + selected: @field.selected }, { class: classes("w-full"), diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index f7f300a5ee..8b85dd017b 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -96,6 +96,10 @@ def value end end + def selected + value.to_param + end + # The value def field_value value.send(database_value) From fca8ac4dafeded6d74f810c0bb1468a334742baf Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 7 May 2024 14:26:45 +0300 Subject: [PATCH 26/81] Fix has_many_field_spec --- spec/features/avo/has_many_field_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/features/avo/has_many_field_spec.rb b/spec/features/avo/has_many_field_spec.rb index ea386ed7c2..f556c06893 100644 --- a/spec/features/avo/has_many_field_spec.rb +++ b/spec/features/avo/has_many_field_spec.rb @@ -62,7 +62,7 @@ expect(page).to have_css("a[data-control='show'][href='#{show_path}']") # id field show link - expect(field_element_by_resource_id("id", post.id)).to have_css("a[href='/admin/resources/posts/#{post.slug}?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser']") + expect(field_element_by_resource_id("id", post.to_param)).to have_css("a[href='/admin/resources/posts/#{post.slug}?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser']") # edit link edit_path = "/admin/resources/posts/#{post.slug}/edit?via_record_id=#{user.slug}&via_resource_class=Avo%3A%3AResources%3A%3AUser" @@ -87,7 +87,7 @@ visit url expect { - find("[data-resource-id='#{post.id}'] [data-control='destroy']").click + find("[data-resource-id='#{post.to_param}'] [data-control='destroy']").click }.to change(Post, :count).by(-1) expect(page).to have_current_path url @@ -98,7 +98,7 @@ visit url expect { - find("tr[data-resource-id='#{post.id}'] [data-control='detach']").click + find("tr[data-resource-id='#{post.to_param}'] [data-control='detach']").click }.to change(user.posts, :count).by(-1) expect(page).to have_current_path url From 055e39a23022fb57a1d2ff90b507bc007cec0619 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 7 May 2024 14:43:30 +0300 Subject: [PATCH 27/81] Fix fields_methods_for_views_spec --- spec/features/avo/fields_methods_for_views_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/avo/fields_methods_for_views_spec.rb b/spec/features/avo/fields_methods_for_views_spec.rb index 6ce1b715b3..e356fbd3f8 100644 --- a/spec/features/avo/fields_methods_for_views_spec.rb +++ b/spec/features/avo/fields_methods_for_views_spec.rb @@ -166,7 +166,7 @@ def form_fields visit "#{Avo::Engine.routes.url_helpers.resources_course_path(course)}/links?turbo_frame=has_many_field_links&view=show" expect { - find("tr[data-resource-id='#{course.links.first.id}'] [data-control='detach']").click + find("tr[data-resource-id='#{course.links.first.to_param}'] [data-control='detach']").click }.to change(course.links, :count).by(-1) end From ca4460d3aacfa5a65926ed4f86fbbc8bb70c5f79 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Sun, 21 Apr 2024 11:24:43 +0300 Subject: [PATCH 28/81] fix: check proper dir for internal controller override (#2712) --- lib/generators/avo/concerns/override_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/avo/concerns/override_controller.rb b/lib/generators/avo/concerns/override_controller.rb index 1baf419217..01c1f06654 100644 --- a/lib/generators/avo/concerns/override_controller.rb +++ b/lib/generators/avo/concerns/override_controller.rb @@ -12,7 +12,7 @@ def override_controller? end def controllers_list - Dir["app/controllers/avo/*.rb"].map { |file_path| File.basename(file_path, ".rb") } + Dir[::Avo::Engine.root.join("app", "controllers", "avo", "*.rb")].map { |file_path| File.basename(file_path, ".rb") } end end end From f199fc5cce32184afb55b96d0170064f7c6627e7 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:17:26 +0300 Subject: [PATCH 29/81] feature: configurable default pagination (#2717) * feature: configurable default pagination * add on template * revert countless config --- lib/avo/concerns/pagination.rb | 2 +- lib/avo/configuration.rb | 6 ++++++ lib/generators/avo/templates/initializer/avo.tt | 6 ++++++ spec/dummy/config/initializers/avo.rb | 6 ++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/avo/concerns/pagination.rb b/lib/avo/concerns/pagination.rb index 36c3aff55a..a5b12ded17 100644 --- a/lib/avo/concerns/pagination.rb +++ b/lib/avo/concerns/pagination.rb @@ -46,7 +46,7 @@ def apply_pagination(index_params:, query:) private def pagination_hash - @pagination ||= PAGINATION_DEFAULTS.merge Avo::ExecutionContext.new( + @pagination ||= PAGINATION_DEFAULTS.merge(Avo.configuration.pagination).merge Avo::ExecutionContext.new( target: pagination, resource: self, view: @view diff --git a/lib/avo/configuration.rb b/lib/avo/configuration.rb index 0650078800..ea0ab0ff48 100644 --- a/lib/avo/configuration.rb +++ b/lib/avo/configuration.rb @@ -8,6 +8,7 @@ class Configuration attr_writer :cache_store attr_writer :logger attr_writer :turbo + attr_writer :pagination attr_accessor :timezone attr_accessor :per_page attr_accessor :per_page_steps @@ -103,6 +104,7 @@ def initialize @logger = default_logger @turbo = default_turbo @default_url_options = [] + @pagination = {} end def current_user_method(&block) @@ -230,6 +232,10 @@ def default_turbo } end end + + def pagination + Avo::ExecutionContext.new(target: @pagination).handle + end end def self.configuration diff --git a/lib/generators/avo/templates/initializer/avo.tt b/lib/generators/avo/templates/initializer/avo.tt index 500ca546aa..cdca85d3c8 100644 --- a/lib/generators/avo/templates/initializer/avo.tt +++ b/lib/generators/avo/templates/initializer/avo.tt @@ -51,6 +51,12 @@ Avo.configure do |config| # config.per_page_steps = [12, 24, 48, 72] # config.via_per_page = 8 # config.id_links_to_resource = false + # config.pagination = -> do + # { + # type: :default, + # size: [1, 2, 2, 1], + # } + # end ## == Cache options == ## Provide a lambda to customize the cache store used by Avo. diff --git a/spec/dummy/config/initializers/avo.rb b/spec/dummy/config/initializers/avo.rb index d0c0048f4c..3c7c883b33 100644 --- a/spec/dummy/config/initializers/avo.rb +++ b/spec/dummy/config/initializers/avo.rb @@ -126,6 +126,12 @@ link "Profile", path: "/profile", icon: "user-circle" # link_to "Sign out", path: main_app.destroy_user_session_path, icon: "user-circle", method: :post, params: {hehe: :hoho} end + + # config.pagination = -> do + # { + # type: :countless + # } + # end end if defined?(Avo::DynamicFilters) From c2971b215aee7c12ee77a269e158e38ac55d1cd6 Mon Sep 17 00:00:00 2001 From: Adrian Marin Date: Wed, 24 Apr 2024 11:48:33 -0300 Subject: [PATCH 30/81] feature: linkable association titles (#2591) --- app/components/avo/views/resource_index_component.html.erb | 2 +- app/components/avo/views/resource_index_component.rb | 2 +- lib/avo/base_resource.rb | 3 ++- spec/dummy/app/avo/resources/team.rb | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/components/avo/views/resource_index_component.html.erb b/app/components/avo/views/resource_index_component.html.erb index a044e75b3c..65fc5a0045 100644 --- a/app/components/avo/views/resource_index_component.html.erb +++ b/app/components/avo/views/resource_index_component.html.erb @@ -8,7 +8,7 @@ <%= render_cards_component %> <%= render Avo::PanelComponent.new(description: description, data: { component: 'resources-index' }, display_breadcrumbs: @reflection.blank?) do |c| %> <% c.with_name_slot do %> - <%= render Avo::PanelNameComponent.new name: title, url: params[:turbo_frame].present? ? field.frame_url(add_turbo_frame: false) : nil, target: :_blank do |panel_name_component| %> + <%= render Avo::PanelNameComponent.new name: title, url: params[:turbo_frame].present? && linkable? ? field.frame_url(add_turbo_frame: false) : nil, target: :_blank do |panel_name_component| %> <% panel_name_component.with_body do %> <% if reloadable %> <%= button_tag data: { controller: "panel-refresh", action: "click->panel-refresh#refresh" } do %> diff --git a/app/components/avo/views/resource_index_component.rb b/app/components/avo/views/resource_index_component.rb index 978b52a03d..897bd7b550 100644 --- a/app/components/avo/views/resource_index_component.rb +++ b/app/components/avo/views/resource_index_component.rb @@ -228,7 +228,7 @@ def reloadable field&.reloadable? end - def linkable + def linkable? field&.linkable? end end diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index 52c20062cb..6b1e264005 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -124,7 +124,8 @@ def valid_attachment_name(record, association_name) association_exists = get_record_associations(record).keys.any? do |name| name == "#{association_name}_attachment" || name == "#{association_name}_attachments" end - return association_name if association_exists + + association_name if association_exists end def get_available_models diff --git a/spec/dummy/app/avo/resources/team.rb b/spec/dummy/app/avo/resources/team.rb index 1071d850a5..8001fbf5a9 100644 --- a/spec/dummy/app/avo/resources/team.rb +++ b/spec/dummy/app/avo/resources/team.rb @@ -78,7 +78,7 @@ def fields query.where.not(user_id: parent.id).or(query.where(user_id: nil)) end - field :admin, as: :has_one + field :admin, as: :has_one, linkable: true field :team_members, as: :has_many, through: :memberships, translation_key: "avo.resource_translations.team_members" field :reviews, as: :has_many, reloadable: -> { From 71888d2878ced0d62ce543ab47d9a87e10e43d66 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Thu, 25 Apr 2024 02:07:16 +0300 Subject: [PATCH 31/81] fix: eager load actions (#2719) --- lib/avo.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/avo.rb b/lib/avo.rb index 94ee5bb7ad..e5bad569ab 100644 --- a/lib/avo.rb +++ b/lib/avo.rb @@ -64,6 +64,7 @@ def boot @cache_store = Avo.configuration.cache_store plugin_manager.boot_plugins Avo.run_load_hooks(:boot, self) + eager_load_actions end # Runs on each request @@ -139,6 +140,10 @@ def mount_engines def extra_gems [:pro, :advanced, :menu, :dynamic_filters, :dashboards, :enterprise, :audits] end + + def eager_load_actions + Rails.autoloaders.main.eager_load_namespace(Avo::Actions) + end end end From f465c67675b2d82ee39c9ae582e1fa78858622fe Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:09:53 +0300 Subject: [PATCH 32/81] fix: actions eager loader (#2726) --- lib/avo.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo.rb b/lib/avo.rb index e5bad569ab..a18a18ac3c 100644 --- a/lib/avo.rb +++ b/lib/avo.rb @@ -142,7 +142,7 @@ def extra_gems end def eager_load_actions - Rails.autoloaders.main.eager_load_namespace(Avo::Actions) + Rails.autoloaders.main.eager_load_namespace(Avo::Actions) if defined?(Avo::Actions) end end end From 8dfac0f15d190c69091354777080553e45d74e6e Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Wed, 1 May 2024 16:02:33 +0300 Subject: [PATCH 33/81] fix: render background context when accessing extrernal action links (#2730) * fix: actions links POC * wip * TODO * wip * wip * correct frame id * lint * lint --- app/controllers/avo/actions_controller.rb | 24 +++++++++++++++++++++++ app/views/avo/actions/show.html.erb | 4 ++++ lib/avo.rb | 1 + 3 files changed, 29 insertions(+) diff --git a/app/controllers/avo/actions_controller.rb b/app/controllers/avo/actions_controller.rb index b3cf642adc..b719b0fe5a 100644 --- a/app/controllers/avo/actions_controller.rb +++ b/app/controllers/avo/actions_controller.rb @@ -20,6 +20,30 @@ def show @resource.hydrate(record: @record, view: @view, user: _current_user, params: params) @fields = @action.get_fields + + build_background_url + end + + def build_background_url + uri = URI.parse(request.url) + + # Remove the "/actions" segment from the path + path_without_actions = uri.path.sub("/actions", "") + + params = URI.decode_www_form(uri.query || "").to_h + + params.delete("action_id") + params[:turbo_frame] = ACTIONS_BACKGROUND_FRAME + + # Reconstruct the query string + new_query_string = URI.encode_www_form(params) + + # Update the URI components + uri.path = path_without_actions + uri.query = (new_query_string == "") ? nil : new_query_string + + # Reconstruct the modified URL + @background_url = uri.to_s end def handle diff --git a/app/views/avo/actions/show.html.erb b/app/views/avo/actions/show.html.erb index b407b4b0c0..eb958568bb 100644 --- a/app/views/avo/actions/show.html.erb +++ b/app/views/avo/actions/show.html.erb @@ -1,3 +1,7 @@ +<%= turbo_frame_tag Avo::ACTIONS_BACKGROUND_FRAME, src: @background_url, loading: :lazy, target: :_top, class: "block" do %> + <%= render Avo::LoadingComponent.new(title: "...") %> +<% end %> + <%= turbo_frame_tag Avo::ACTIONS_TURBO_FRAME_ID do %>

" diff --git a/lib/avo.rb b/lib/avo.rb index a18a18ac3c..53caf9dc30 100644 --- a/lib/avo.rb +++ b/lib/avo.rb @@ -19,6 +19,7 @@ module Avo PACKED = !IN_DEVELOPMENT COOKIES_KEY = "avo" ACTIONS_TURBO_FRAME_ID = :actions_show + ACTIONS_BACKGROUND_FRAME = :actions_background class LicenseVerificationTemperedError < StandardError; end From 8dee9ecfbcb722ae910e9d18fa9498b24dbbb892 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Wed, 1 May 2024 16:12:25 +0300 Subject: [PATCH 34/81] fix: don't export `avo.custom.js` build (#2731) --- avo.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avo.gemspec b/avo.gemspec index 7cf5a9bf78..77c4e1489a 100644 --- a/avo.gemspec +++ b/avo.gemspec @@ -32,7 +32,7 @@ Gem::Specification.new do |spec| spec.post_install_message = "Thank you for using Avo 💪 Docs are available at https://docs.avohq.io" spec.files = Dir["{bin,app,config,db,lib,public}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "avo.gemspec", "Gemfile", "Gemfile.lock", "tailwind.preset.js", "tailwind.custom.js"] - spec.files.reject! { |file_name| %w[application.js application.js.map spec/dummy/app/javascript/avo.custom.js avo.custom.js.map].any? { |rejected_file| file_name.include? rejected_file } } + spec.files.reject! { |file_name| %w[application.js application.js.map app/assets/builds/avo.custom.js avo.custom.js.map].any? { |rejected_file| file_name.include? rejected_file } } spec.add_dependency "activerecord", ">= 6.1" spec.add_dependency "activesupport", ">= 6.1" From f1698d19b62ae775fd6f0ee56d5e69a94a6bc068 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Wed, 1 May 2024 16:31:27 +0300 Subject: [PATCH 35/81] Bumped avo to 3.6.2 --- Gemfile.lock | 2 +- lib/avo/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 294e99dcf4..4a86a3ec00 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - avo (3.6.1) + avo (3.6.2) actionview (>= 6.1) active_link_to activerecord (>= 6.1) diff --git a/lib/avo/version.rb b/lib/avo/version.rb index 201cca20be..1005761cc4 100644 --- a/lib/avo/version.rb +++ b/lib/avo/version.rb @@ -1,3 +1,3 @@ module Avo - VERSION = "3.6.1" unless const_defined?(:VERSION) + VERSION = "3.6.2" unless const_defined?(:VERSION) end From f0ad575b78396db8cb12ec878600b716c25f5358 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Wed, 1 May 2024 20:32:06 +0300 Subject: [PATCH 36/81] fix: cache_table_rows (#2733) --- app/components/avo/index/resource_table_component.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/components/avo/index/resource_table_component.rb b/app/components/avo/index/resource_table_component.rb index eddb177fd5..e61427b987 100644 --- a/app/components/avo/index/resource_table_component.rb +++ b/app/components/avo/index/resource_table_component.rb @@ -4,6 +4,8 @@ class Avo::Index::ResourceTableComponent < Avo::BaseComponent include Avo::ApplicationHelper attr_reader :pagy, :query + def before_render = cache_table_rows + def initialize(resources: nil, resource: nil, reflection: nil, parent_record: nil, parent_resource: nil, pagy: nil, query: nil, actions: nil) @resources = resources @resource = resource @@ -13,7 +15,6 @@ def initialize(resources: nil, resource: nil, reflection: nil, parent_record: ni @pagy = pagy @query = query @actions = actions - cache_table_rows end def encrypted_query From 9a608faa41083caaf1e8d33bd9fbad265e0755aa Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Wed, 1 May 2024 20:53:35 +0300 Subject: [PATCH 37/81] Bumped avo to 3.6.3 --- Gemfile.lock | 2 +- lib/avo/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4a86a3ec00..30a99202b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - avo (3.6.2) + avo (3.6.3) actionview (>= 6.1) active_link_to activerecord (>= 6.1) diff --git a/lib/avo/version.rb b/lib/avo/version.rb index 1005761cc4..be61b78a33 100644 --- a/lib/avo/version.rb +++ b/lib/avo/version.rb @@ -1,3 +1,3 @@ module Avo - VERSION = "3.6.2" unless const_defined?(:VERSION) + VERSION = "3.6.3" unless const_defined?(:VERSION) end From 0ebf0c2a8ed6487dffc7772b822a071e3318001d Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Thu, 2 May 2024 00:29:02 +0300 Subject: [PATCH 38/81] fix: table cache (#2734) * fiix: table cache * revert --- .../avo/index/resource_table_component.rb | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/components/avo/index/resource_table_component.rb b/app/components/avo/index/resource_table_component.rb index e61427b987..32b6d3b333 100644 --- a/app/components/avo/index/resource_table_component.rb +++ b/app/components/avo/index/resource_table_component.rb @@ -4,7 +4,9 @@ class Avo::Index::ResourceTableComponent < Avo::BaseComponent include Avo::ApplicationHelper attr_reader :pagy, :query - def before_render = cache_table_rows + def before_render + @header_fields, @table_row_components = cache_table_rows + end def initialize(resources: nil, resource: nil, reflection: nil, parent_record: nil, parent_resource: nil, pagy: nil, query: nil, actions: nil) @resources = resources @@ -45,33 +47,33 @@ def selected_all_label def cache_table_rows # Cache the execution of the following block if caching is enabled in Avo configuration cache_if Avo.configuration.cache_resources_on_index_view, @resource.cache_hash(@parent_record), expires_in: 1.day do - # Initialize arrays to hold header fields and table row components - @header_fields = [] - @table_row_components = [] - - generate_table_row_components - - # Remove duplicate header fields based on table_header_label - @header_fields.uniq!(&:table_header_label) + header_fields, table_row_components = generate_table_row_components # Create an array of header field labels used for each row to render values on the right column - @header_fields_ids = @header_fields.map(&:table_header_label) + header_fields_ids = header_fields.map(&:table_header_label) # Assign header field IDs to each TableRowComponent # We assign it here because only complete header fields array after last table row. - @table_row_components.map { |table_row_component| table_row_component.header_fields = @header_fields_ids } + table_row_components.map { |table_row_component| table_row_component.header_fields = header_fields_ids } + + # Return header fields and table row components + return [header_fields, table_row_components] end end def generate_table_row_components + # Initialize arrays to hold header fields and table row components + header_fields = [] + table_row_components = [] + # Loop through each resource in @resources @resources.each do |resource| # Get fields for the current resource and concat them to the @header_fields row_fields = resource.get_fields(reflection: @reflection, only_root: true) - @header_fields.concat row_fields + header_fields.concat row_fields # Create a TableRowComponent instance for the resource and add it to @table_row_components - @table_row_components << Avo::Index::TableRowComponent.new( + table_row_components << Avo::Index::TableRowComponent.new( resource: resource, fields: row_fields, reflection: @reflection, @@ -80,5 +82,10 @@ def generate_table_row_components actions: @actions ) end + + # Remove duplicate header fields based on table_header_label + header_fields.uniq!(&:table_header_label) + + [header_fields, table_row_components] end end From 44032208d2297efc95b3c2cca6b165f50542fea7 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Thu, 2 May 2024 00:33:00 +0300 Subject: [PATCH 39/81] Bumped avo to 3.6.4 --- Gemfile.lock | 2 +- lib/avo/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 30a99202b1..d3b0f3abb4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - avo (3.6.3) + avo (3.6.4) actionview (>= 6.1) active_link_to activerecord (>= 6.1) diff --git a/lib/avo/version.rb b/lib/avo/version.rb index be61b78a33..eda4aabbbf 100644 --- a/lib/avo/version.rb +++ b/lib/avo/version.rb @@ -1,3 +1,3 @@ module Avo - VERSION = "3.6.3" unless const_defined?(:VERSION) + VERSION = "3.6.4" unless const_defined?(:VERSION) end From f21fc5270c878f821dde910ae15b5179b03fbbc1 Mon Sep 17 00:00:00 2001 From: Adrian Marin Date: Sat, 4 May 2024 04:24:14 -0300 Subject: [PATCH 40/81] fix: resource controls spacing issue (#2740) --- app/components/avo/index/resource_controls_component.html.erb | 4 ++-- app/components/avo/views/resource_index_component.html.erb | 1 + tailwind.preset.js | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/components/avo/index/resource_controls_component.html.erb b/app/components/avo/index/resource_controls_component.html.erb index 2942ca38d1..4de64b35fe 100644 --- a/app/components/avo/index/resource_controls_component.html.erb +++ b/app/components/avo/index/resource_controls_component.html.erb @@ -1,5 +1,5 @@ -
+<%= content_tag :div, class: "space-x-2 flex flex-row justify-between ml-2 has-record-selector:ml-0" do %> <% @resource.render_row_controls(item: singular_resource_name).each do |control| %> <%= render_control control %> <% end %> -
+<% end %> diff --git a/app/components/avo/views/resource_index_component.html.erb b/app/components/avo/views/resource_index_component.html.erb index 65fc5a0045..7b4511aca1 100644 --- a/app/components/avo/views/resource_index_component.html.erb +++ b/app/components/avo/views/resource_index_component.html.erb @@ -1,4 +1,5 @@ <%= content_tag :div, + class: class_names('has-record-selector': @resource.record_selector), data: { component_name: self.class.to_s.underscore, model_name: @resource.model_name.to_s, diff --git a/tailwind.preset.js b/tailwind.preset.js index e58613232c..6fd1b40d36 100644 --- a/tailwind.preset.js +++ b/tailwind.preset.js @@ -147,9 +147,11 @@ module.exports = { }, } + addUtilities(newUtilities, ['group-hover']) + // Add has-sidebar variant to make it easier to target fields in panels and use the full-width addVariant('has-sidebar', '.has-sidebar & ') - addUtilities(newUtilities, ['group-hover']) + addVariant('has-record-selector', '.has-record-selector & ') }), ], } From 06178eb880cbfb93742fdf3a8057dbc965d816e2 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Tue, 7 May 2024 13:24:22 +0300 Subject: [PATCH 41/81] fix: check if ActionText::RichText is defined (#2741) --- lib/avo/fields/trix_field.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/fields/trix_field.rb b/lib/avo/fields/trix_field.rb index 84c92e6f29..fd16d473a8 100644 --- a/lib/avo/fields/trix_field.rb +++ b/lib/avo/fields/trix_field.rb @@ -23,7 +23,7 @@ def initialize(id, **args, &block) # Identify if field is bonded to a rich text model attribute def is_action_text? - return false if record.nil? || !record.respond_to?(id) + return false if !defined?(ActionText::RichText) || record.nil? || !record.respond_to?(id) record.send(id).is_a?(ActionText::RichText) end From 7001a032d42df21e60c0f8e776f6e4463ba67848 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Tue, 7 May 2024 14:05:31 +0300 Subject: [PATCH 42/81] Bumped avo to 3.7.0 --- Gemfile.lock | 2 +- lib/avo/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d3b0f3abb4..f9f26e91ea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - avo (3.6.4) + avo (3.7.0) actionview (>= 6.1) active_link_to activerecord (>= 6.1) diff --git a/lib/avo/version.rb b/lib/avo/version.rb index eda4aabbbf..fd566846ff 100644 --- a/lib/avo/version.rb +++ b/lib/avo/version.rb @@ -1,3 +1,3 @@ module Avo - VERSION = "3.6.4" unless const_defined?(:VERSION) + VERSION = "3.7.0" unless const_defined?(:VERSION) end From 36ae68887ec95cff1edfe5401dc2d7c65c9b9bf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 20:32:53 +0300 Subject: [PATCH 43/81] chore(deps): bump trix in the npm_and_yarn group across 1 directory (#2749) Bumps the npm_and_yarn group with 1 update in the / directory: [trix](https://github.com/basecamp/trix). Updates `trix` from 2.1.0 to 2.1.1 - [Release notes](https://github.com/basecamp/trix/releases) - [Commits](https://github.com/basecamp/trix/compare/v2.1.0...v2.1.1) --- updated-dependencies: - dependency-name: trix dependency-type: direct:production dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f46f733d0a..68a42c0c07 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "tailwindcss": "^3.4.3", "tailwindcss-stimulus-components": "^3.0.4", "tippy.js": "^6.3.7", - "trix": "^2.1.0", + "trix": "^2.1.1", "turbo_power": "^0.6.1", "urijs": "^1.19.11" }, diff --git a/yarn.lock b/yarn.lock index 098dcba50f..e401ac05a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4882,10 +4882,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -trix@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.0.tgz#da9daddded6ee0cb2ba5676246bb343e1d45eaab" - integrity sha512-TPhgGvIjM1VqcfoR/OQQERRlMDuEw7UBIoGroJGuiTmu5yqk5KqR29ZzPgGIoOJgsqoAgxGUCK92+CRJLoO43Q== +trix@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/trix/-/trix-2.1.1.tgz#688f1213601316cf8b92c5e625d2f562c118c780" + integrity sha512-IljOMGOlRUPg1i5Pk/+x/Ia65ZY7Gw5JxxKCh/4caxG5ZaKuFJCKdn1+TF0efUYfdg+bqWenB/mAYCHjZu0zpQ== ts-interface-checker@^0.1.9: version "0.1.13" From dfbc2640d52035207fea311646b7c584111db3ab Mon Sep 17 00:00:00 2001 From: Adrian Marin Date: Tue, 7 May 2024 16:37:23 -0300 Subject: [PATCH 44/81] chore: require ostruct (#2750) --- .github/release-drafter.yml | 2 +- lib/avo.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 66363e52d8..c17c50430f 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -26,7 +26,7 @@ categories: label: 'Style' - title: '🎡 CI' label: 'CI' - - title: '⚡️ Perf' + - title: '⚡️ Performance' labels: - 'Perf' - 'Performance' diff --git a/lib/avo.rb b/lib/avo.rb index 53caf9dc30..0c8b52352a 100644 --- a/lib/avo.rb +++ b/lib/avo.rb @@ -1,4 +1,5 @@ require "zeitwerk" +require "ostruct" require_relative "avo/version" require_relative "avo/engine" if defined?(Rails) From b50e3400b8b3e78dd866c968437ea9dea6ed9e84 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 22:48:01 +0300 Subject: [PATCH 45/81] [js] Update all Yarn dependencies (2024-04-25) (#2720) Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> Co-authored-by: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Co-authored-by: Adrian Marin --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 68a42c0c07..c963e157ff 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "chart.js": "^3.9.1", "chartkick": "^4.2.0", "codemirror": "5.59.1", - "core-js": "^3.36.1", + "core-js": "^3.37.0", "css-loader": "^6.11.0", "dompurify": "^3.1.0", "easymde": "^2.18.0", diff --git a/yarn.lock b/yarn.lock index e401ac05a1..e0fe75aa0b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2232,10 +2232,10 @@ core-js-compat@^3.36.1: dependencies: browserslist "^4.23.0" -core-js@^3.36.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" - integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== +core-js@^3.37.0: + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" + integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== cosmiconfig@^8.3.5: version "8.3.6" From 5bf6edbd766a13f0dcfedb42d227c5241b075cc8 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 8 May 2024 20:52:37 +0300 Subject: [PATCH 46/81] wip --- .ruby-version | 1 + Gemfile | 3 + Gemfile.lock | 3 +- app/assets/stylesheets/css/pagination.css | 134 ++++++++++++------ .../avo/paginator_component.html.erb | 2 +- app/components/avo/paginator_component.rb | 9 ++ lib/avo/concerns/pagination.rb | 3 +- spec/dummy/db/seeds.rb | 1 + 8 files changed, 106 insertions(+), 50 deletions(-) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000000..15a2799817 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.0 diff --git a/Gemfile b/Gemfile index 17e1527a8f..a4fe279391 100644 --- a/Gemfile +++ b/Gemfile @@ -176,3 +176,6 @@ gem "avo-money_field" # Avo record_link field # gem "avo-record_link_field", path: "./../avo-record_link_field" gem "avo-record_link_field" + +# gem "pagy", "< 8.0.0" +gem "pagy", "> 8" diff --git a/Gemfile.lock b/Gemfile.lock index f9f26e91ea..3279ab39e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -376,7 +376,7 @@ GEM nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) orm_adapter (0.5.0) - pagy (8.2.1) + pagy (8.4.0) parallel (1.24.0) parser (3.3.0.5) ast (~> 2.4.1) @@ -677,6 +677,7 @@ DEPENDENCIES meta-tags money-rails (~> 1.12) net-smtp + pagy (> 8) pg (>= 0.18, < 2.0) pluggy! prefixed_ids diff --git a/app/assets/stylesheets/css/pagination.css b/app/assets/stylesheets/css/pagination.css index 6cae529708..e2f30acf9f 100644 --- a/app/assets/stylesheets/css/pagination.css +++ b/app/assets/stylesheets/css/pagination.css @@ -1,63 +1,103 @@ -.pagy-nav, -.pagy-nav-js, -.pagy-combo-nav-js { - @apply relative z-0 flex; -} - -.pagy-nav.pagination, -.pagy-nav-js.pagination, -.pagy-combo-nav-js.pagination { - @apply space-x-2; -} +.pagy-gem-version-7 { + .pagy-nav, + .pagy-nav-js, + .pagy-combo-nav-js { + @apply relative z-0 flex; + } -.pagy-nav .page a{ - @apply block; -} + .pagy-nav.pagination, + .pagy-nav-js.pagination, + .pagy-combo-nav-js.pagination { + @apply space-x-2; + } -.pagy-nav .page a, -.pagy-nav .page.active a, -.pagy-nav .page.prev.disabled a, -.pagy-nav .page.next.disabled a, -.pagy-nav-js .page a, -.pagy-combo-nav-js .page a, -.pagy-combo-nav-js .pagy-combo-input a { - @apply rounded px-3 py-1 text-sm text-gray-500 font-semibold bg-white shadow-md border border-gray-300; - - &:hover{ - @apply bg-gray-150; + .pagy-nav .page a{ + @apply block; } - &:active{ - @apply bg-gray-200; + .pagy-nav .page a, + .pagy-nav .page.active a, + .pagy-nav .page.prev.disabled a, + .pagy-nav .page.next.disabled a, + .pagy-nav-js .page a, + .pagy-combo-nav-js .page a, + .pagy-combo-nav-js .pagy-combo-input a { + @apply rounded px-3 py-1 text-sm text-gray-500 font-semibold bg-white shadow-md border border-gray-300; + + &:hover{ + @apply bg-gray-150; + } + + &:active{ + @apply bg-gray-200; + } } -} -.pagy-nav .page.prev.disabled a, -.pagy-nav-js .page.prev.disabled a, -.pagy-combo-nav-js .page.prev.disabled a, -.pagy-nav .page.next.disabled a, -.pagy-nav-js .page.next.disabled a, -.pagy-combo-nav-js .page.next.disabled a { - @apply text-gray-300 cursor-default; + .pagy-nav .page.prev.disabled a, + .pagy-nav-js .page.prev.disabled a, + .pagy-combo-nav-js .page.prev.disabled a, + .pagy-nav .page.next.disabled a, + .pagy-nav-js .page.next.disabled a, + .pagy-combo-nav-js .page.next.disabled a { + @apply text-gray-300 cursor-default; + + &:hover { + @apply text-gray-300 bg-white; + } - &:hover { - @apply text-gray-300 bg-white; + &:active { + @apply text-gray-300 bg-white; + } } - &:active { - @apply text-gray-300 bg-white; + .pagy-nav .page.active a, + .pagy-nav-js .page.active a { + @apply text-white cursor-default bg-gray-500 border-gray-500; + + &:hover { + @apply text-white bg-gray-500; + } + + &:active { + @apply bg-gray-500 text-white; + } } } -.pagy-nav .page.active a, -.pagy-nav-js .page.active a { - @apply text-white cursor-default bg-gray-500 border-gray-500; +.pagy-gem-version-8-or-more { + .pagy.nav { + @apply relative z-0 flex space-x-2; - &:hover { - @apply text-white bg-gray-500; - } + a.gap { + @apply text-gray-500; + } + + & a:not(.gap) { + @apply block rounded px-3 py-1 text-sm text-gray-500 font-semibold bg-white shadow-md border border-gray-300; + + &:hover{ + @apply bg-gray-150; + } + + &:active{ + @apply bg-gray-200; + } + + &.current { + @apply text-white cursor-default bg-gray-500 border-gray-500; + + &:hover { + @apply text-white bg-gray-500; + } + + &:active { + @apply bg-gray-500 text-white; + } + } - &:active { - @apply bg-gray-500 text-white; + &[aria-disabled="true"]:not(.current) { + @apply bg-gray-100 text-gray-300 cursor-default; + } + } } } diff --git a/app/components/avo/paginator_component.html.erb b/app/components/avo/paginator_component.html.erb index c099a8f872..a42a5f42a8 100644 --- a/app/components/avo/paginator_component.html.erb +++ b/app/components/avo/paginator_component.html.erb @@ -22,7 +22,7 @@
-
+
<% if @resource.pagination_type.default? %>
<%== helpers.pagy_info @pagy %>
<% end %> diff --git a/app/components/avo/paginator_component.rb b/app/components/avo/paginator_component.rb index 361762973b..a07528f464 100644 --- a/app/components/avo/paginator_component.rb +++ b/app/components/avo/paginator_component.rb @@ -42,4 +42,13 @@ def per_page_options options.sort.uniq end end + + def pagy_major_version + return nil unless defined?(Pagy::VERSION) + version = Pagy::VERSION&.split(".")&.first&.to_i + + return "8-or-more" if version >= 8 + + version + end end diff --git a/lib/avo/concerns/pagination.rb b/lib/avo/concerns/pagination.rb index a5b12ded17..9436646781 100644 --- a/lib/avo/concerns/pagination.rb +++ b/lib/avo/concerns/pagination.rb @@ -38,7 +38,8 @@ def apply_pagination(index_params:, query:) send PAGINATION_METHOD[pagination_type.to_sym], query, items: index_params[:per_page], - link_extra: "data-turbo-frame=\"#{params[:turbo_frame]}\"", + link_extra: "data-turbo-frame=\"#{params[:turbo_frame]}\"", # Add extra arguments in pagy 7. + anchor_string: "data-turbo-frame=\"#{params[:turbo_frame]}\"", # Add extra arguments in pagy 8. params: extra_pagy_params, size: pagination_hash[:size] end diff --git a/spec/dummy/db/seeds.rb b/spec/dummy/db/seeds.rb index 4a7952f662..3e167b6e69 100644 --- a/spec/dummy/db/seeds.rb +++ b/spec/dummy/db/seeds.rb @@ -43,6 +43,7 @@ users.push(FactoryBot.create(:user, team_id: teams.sample.id)) end +# Login with this one User.create( first_name: "Avo", last_name: "Cado", From 9d30c43397b4936693aab4749bbb0e461999c954 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Wed, 8 May 2024 18:17:26 +0300 Subject: [PATCH 47/81] feature: heading target (#2753) --- app/components/avo/field_wrapper_component.rb | 10 ++-------- .../avo/fields/common/heading_component.html.erb | 10 +++++----- .../avo/fields/common/heading_component.rb | 12 +++++++----- .../avo/fields/heading_field/edit_component.html.erb | 2 +- .../avo/fields/heading_field/show_component.html.erb | 2 +- .../concerns/has_resource_stimulus_controllers.rb | 12 +++++++++--- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/app/components/avo/field_wrapper_component.rb b/app/components/avo/field_wrapper_component.rb index d777aa090c..5cc063b714 100644 --- a/app/components/avo/field_wrapper_component.rb +++ b/app/components/avo/field_wrapper_component.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class Avo::FieldWrapperComponent < ViewComponent::Base + include Avo::Concerns::HasResourceStimulusControllers + attr_reader :dash_if_blank attr_reader :compact attr_reader :field @@ -112,12 +114,4 @@ def short? def full_width? @full_width end - - private - - def add_stimulus_attributes_for(entity, attributes) - entity.get_stimulus_controllers.split(" ").each do |controller| - attributes["#{controller}-target"] = "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower) - end - end end diff --git a/app/components/avo/fields/common/heading_component.html.erb b/app/components/avo/fields/common/heading_component.html.erb index ee2e5a5a39..93cc1d3ede 100644 --- a/app/components/avo/fields/common/heading_component.html.erb +++ b/app/components/avo/fields/common/heading_component.html.erb @@ -1,9 +1,9 @@ -
+<%= content_tag :div, class: "flex items-start py-1 leading-tight bg-gray-100 text-gray-500 text-xs", data: @data do %>
- <% if as_html %> - <%= sanitize value %> + <% if @field.as_html %> + <%= sanitize @field.value %> <% else %> -
<%= value %>
+
<%= @field.value %>
<% end %>
-
+<% end %> diff --git a/app/components/avo/fields/common/heading_component.rb b/app/components/avo/fields/common/heading_component.rb index cc44c6c2d8..47e92787c9 100644 --- a/app/components/avo/fields/common/heading_component.rb +++ b/app/components/avo/fields/common/heading_component.rb @@ -1,11 +1,13 @@ # frozen_string_literal: true class Avo::Fields::Common::HeadingComponent < ViewComponent::Base - attr_reader :value - attr_reader :as_html + include Avo::Concerns::HasResourceStimulusControllers - def initialize(value:, as_html:) - @value = value - @as_html = as_html + def initialize(field:) + @field = field + @view = field.resource.view + + @data = stimulus_data_attributes + add_stimulus_attributes_for(field.resource, @data) end end diff --git a/app/components/avo/fields/heading_field/edit_component.html.erb b/app/components/avo/fields/heading_field/edit_component.html.erb index 2eb1cc1be0..d4ae74d508 100644 --- a/app/components/avo/fields/heading_field/edit_component.html.erb +++ b/app/components/avo/fields/heading_field/edit_component.html.erb @@ -1,3 +1,3 @@
class="overflow-hidden rounded-t" <% end %> data-field-id="<%= @field.id %>"> - <%= render Avo::Fields::Common::HeadingComponent.new value: @field.value, as_html: @field.as_html %> + <%= render Avo::Fields::Common::HeadingComponent.new field: @field %>
diff --git a/app/components/avo/fields/heading_field/show_component.html.erb b/app/components/avo/fields/heading_field/show_component.html.erb index 2eb1cc1be0..d4ae74d508 100644 --- a/app/components/avo/fields/heading_field/show_component.html.erb +++ b/app/components/avo/fields/heading_field/show_component.html.erb @@ -1,3 +1,3 @@
class="overflow-hidden rounded-t" <% end %> data-field-id="<%= @field.id %>"> - <%= render Avo::Fields::Common::HeadingComponent.new value: @field.value, as_html: @field.as_html %> + <%= render Avo::Fields::Common::HeadingComponent.new field: @field %>
diff --git a/lib/avo/concerns/has_resource_stimulus_controllers.rb b/lib/avo/concerns/has_resource_stimulus_controllers.rb index f08ac0cfc4..b560dfd3da 100644 --- a/lib/avo/concerns/has_resource_stimulus_controllers.rb +++ b/lib/avo/concerns/has_resource_stimulus_controllers.rb @@ -8,11 +8,11 @@ module HasResourceStimulusControllers end def get_stimulus_controllers - return "" if view.nil? + return "" if @view.nil? controllers = [] - case view.to_sym + case @view.to_sym when :show controllers << "resource-show" when :new, :edit @@ -32,11 +32,17 @@ def stimulus_data_attributes } get_stimulus_controllers.split(" ").each do |controller| - attributes["#{controller}-view-value"] = view + attributes["#{controller}-view-value"] = @view end attributes end + + def add_stimulus_attributes_for(entity, attributes) + entity.get_stimulus_controllers.split(" ").each do |controller| + attributes["#{controller}-target"] = "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower) + end + end end end end From 4b49ad48b663d9a8eb55f7d3793bfcdb09c93375 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 8 May 2024 20:46:44 +0300 Subject: [PATCH 48/81] Update Gemfile --- Gemfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Gemfile b/Gemfile index a4fe279391..da21e8d545 100644 --- a/Gemfile +++ b/Gemfile @@ -179,3 +179,5 @@ gem "avo-record_link_field" # gem "pagy", "< 8.0.0" gem "pagy", "> 8" + +gem "hashid-rails", "~> 1.4", ">= 1.4.1" From dda5072b0104198d058bf6e916df6ddade73feb4 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 18 Apr 2024 23:53:34 +0300 Subject: [PATCH 49/81] Resolve conflict git reset --- Gemfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Gemfile b/Gemfile index da21e8d545..1dc1b82186 100644 --- a/Gemfile +++ b/Gemfile @@ -181,3 +181,11 @@ gem "avo-record_link_field" gem "pagy", "> 8" gem "hashid-rails", "~> 1.4", ">= 1.4.1" +# Avo money field +# gem "avo-money_field", path: "./../avo-money_field" +gem "money-rails", "~> 1.12" +gem "avo-money_field" + +# Avo record_link field +# gem "avo-record_link_field", path: "./../avo-record_link_field" +gem "avo-record_link_field" From b849c847aafc3c9fcaab2e57b75f99ea5dc427e5 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 8 May 2024 20:50:57 +0300 Subject: [PATCH 50/81] Update Gemfile --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3279ab39e7..4b3fbe6a9e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -376,7 +376,7 @@ GEM nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) orm_adapter (0.5.0) - pagy (8.4.0) + pagy (8.4.0) parallel (1.24.0) parser (3.3.0.5) ast (~> 2.4.1) From a28eb05a2b869b6d4c36eaef4c32ad4419d03280 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 8 May 2024 20:57:09 +0300 Subject: [PATCH 51/81] Removed duplication --- Gemfile | 1 - Gemfile.lock | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 8bb8f76f02..fe85620067 100644 --- a/Gemfile +++ b/Gemfile @@ -180,7 +180,6 @@ gem "avo-record_link_field" # gem "pagy", "< 8.0.0" gem "pagy", "> 8" -gem "hashid-rails", "~> 1.4", ">= 1.4.1" # Avo money field # gem "avo-money_field", path: "./../avo-money_field" gem "money-rails", "~> 1.12" diff --git a/Gemfile.lock b/Gemfile.lock index 4b3fbe6a9e..9f0d2b4853 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -376,7 +376,8 @@ GEM nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) orm_adapter (0.5.0) - pagy (8.4.0) + pagy (= 8.4.0) + pagy (8.4.0) parallel (1.24.0) parser (3.3.0.5) ast (~> 2.4.1) From d7a565f18f7d7e4b5875ef0842b11c851bf9a279 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Wed, 8 May 2024 20:59:43 +0300 Subject: [PATCH 52/81] Removed duplication --- Gemfile | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Gemfile b/Gemfile index fe85620067..a4fe279391 100644 --- a/Gemfile +++ b/Gemfile @@ -179,15 +179,3 @@ gem "avo-record_link_field" # gem "pagy", "< 8.0.0" gem "pagy", "> 8" - -# Avo money field -# gem "avo-money_field", path: "./../avo-money_field" -gem "money-rails", "~> 1.12" -gem "avo-money_field" - -# Avo record_link field -# gem "avo-record_link_field", path: "./../avo-record_link_field" -gem "avo-record_link_field" - -# gem "pagy", "< 8.0.0" -gem "pagy", "> 8" From 017f5a4a71e35489eff8a6962eb13af82d76a30b Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 16 May 2024 13:23:24 +0300 Subject: [PATCH 53/81] wip --- app/controllers/avo/base_controller.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/controllers/avo/base_controller.rb b/app/controllers/avo/base_controller.rb index 908e229103..6958a5823f 100644 --- a/app/controllers/avo/base_controller.rb +++ b/app/controllers/avo/base_controller.rb @@ -155,6 +155,15 @@ def create end end end + @record.class.reflect_on_all_associations.each do |association| + if association&.foreign_key == @record._reflections[association.class_name.underscore]&.foreign_key && params[@record.model_name.name.underscore.to_sym][@record._reflections[association.class_name.underscore].foreign_key.to_sym].present? + # Find the associated record by the obfuscated id + associated_record = association.class_name.constantize.find(params[@record.model_name.name.underscore.to_sym][@record._reflections[association.class_name.underscore].foreign_key.to_sym]) + + # Override the foreign key with the real one + @record.send(:"#{association.foreign_key}=", associated_record.send(association.association_primary_key)) + end + end # record gets instantiated and filled in the fill_record method saved = save_record @@ -238,6 +247,7 @@ def perform_action_and_record_errors(&block) # Example: When you save a license that should create a user for it and creating that user throws and error. # Example: When you Try to delete a record and has a foreign key constraint. exception_message = exception.message + puts ["exception->", exception].inspect end # Add the errors from the record From 8be554f6c4df76b8bfe8f643a62925db8980d07d Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 16 May 2024 13:32:56 +0300 Subject: [PATCH 54/81] wip --- app/controllers/avo/base_controller.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/controllers/avo/base_controller.rb b/app/controllers/avo/base_controller.rb index 05c70fe5a0..c98af96c43 100644 --- a/app/controllers/avo/base_controller.rb +++ b/app/controllers/avo/base_controller.rb @@ -233,7 +233,6 @@ def perform_action_and_record_errors(&block) # Example: When you save a license that should create a user for it and creating that user throws and error. # Example: When you Try to delete a record and has a foreign key constraint. exception_message = exception.message - puts ["exception->", exception].inspect end # Add the errors from the record From 3094efc12c7ad11c2501b7f02857adb949bc1f3f Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 16 May 2024 16:01:35 +0300 Subject: [PATCH 55/81] wip --- spec/dummy/app/avo/resources/comment.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/dummy/app/avo/resources/comment.rb b/spec/dummy/app/avo/resources/comment.rb index 68e561e92d..2e1b300e3e 100644 --- a/spec/dummy/app/avo/resources/comment.rb +++ b/spec/dummy/app/avo/resources/comment.rb @@ -18,7 +18,9 @@ def fields as: :date_time, picker_format: "Y-m-d H:i:S", format: "cccc, d LLLL yyyy, HH:mm ZZZZ" # Wednesday, 10 February 1988, 16:00 GMT - field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser, update_using: -> { User.find(value).id } + field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser, update_using: -> { + User.find(value).id if value.present? && User.exists?(value) + } field :commentable, as: :belongs_to, polymorphic_as: :commentable, types: [::Post, ::Project] end From 65fbfba0b179dfeeee0fa7ea1587abe98869d0d5 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Thu, 16 May 2024 16:36:36 +0300 Subject: [PATCH 56/81] tweaks for https://github.com/avo-hq/avo/pull/2564 (#2776) * tweaks * . * lint * . * test * tweak * revert tests on special branch --- app/components/avo/actions_component.html.erb | 2 +- .../belongs_to_field/edit_component.html.erb | 4 +-- .../fields/belongs_to_field/show_component.rb | 2 +- .../fields/has_one_field/show_component.rb | 4 +-- .../avo/index/grid_item_component.html.erb | 2 +- .../avo/index/resource_controls_component.rb | 8 ++--- .../avo/index/table_row_component.html.erb | 2 +- app/components/avo/resource_component.rb | 4 +-- .../avo/resource_sidebar_component.html.erb | 2 +- .../views/resource_edit_component.html.erb | 4 +-- .../views/resource_show_component.html.erb | 4 +-- app/controllers/avo/base_controller.rb | 9 ------ lib/avo/base_resource.rb | 4 +++ lib/avo/fields/belongs_to_field.rb | 31 +++++++++++-------- spec/dummy/app/avo/resources/comment.rb | 4 +-- .../resource_tools/_fish_information.html.erb | 2 +- spec/features/avo/belongs_to_spec.rb | 2 +- .../system/avo/belongs_to_polymorphic_spec.rb | 2 +- spec/system/avo/create_via_belongs_to_spec.rb | 2 +- spec/system/avo/tabs_spec.rb | 2 +- 20 files changed, 47 insertions(+), 49 deletions(-) diff --git a/app/components/avo/actions_component.html.erb b/app/components/avo/actions_component.html.erb index ceab855bc0..6d25819ab7 100644 --- a/app/components/avo/actions_component.html.erb +++ b/app/components/avo/actions_component.html.erb @@ -4,7 +4,7 @@ data-actions-picker-enabled-class="text-black hover:bg-primary-500 hover:text-white" data-actions-picker-disabled-class="cursor-wait text-gray-500" data-resource-name="<%= @resource.class.to_s %>" - <% if @resource.record.present? %> data-record-id="<%= @resource.record.to_param %>" <% end %> + <% if @resource.record.present? %> data-record-id="<%= @resource.record_param %>" <% end %> > <%= a_button style: @style, type: :button, diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index 0e7656b399..127e9b9540 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -48,9 +48,9 @@ %> <% else %> <%= @form.select @field.id_input_foreign_key, - options_for_select(@field.values_for_type(type), @resource.present? && @resource.record.present? && @field.value.class == type ? @resource.record[@field.id_input_foreign_key] : nil), + options_for_select(@field.values_for_type(type), @field.selected), { - value: @field.value.class == type ? @resource.record[@field.id_input_foreign_key].to_s : nil, + value: @field.selected, include_blank: @field.placeholder, }, { diff --git a/app/components/avo/fields/belongs_to_field/show_component.rb b/app/components/avo/fields/belongs_to_field/show_component.rb index ff7345bca1..c40834add8 100644 --- a/app/components/avo/fields/belongs_to_field/show_component.rb +++ b/app/components/avo/fields/belongs_to_field/show_component.rb @@ -6,7 +6,7 @@ def resource_view_path record: @field.value, resource: @field.target_resource, via_resource_class: @resource.class.to_s, - via_record_id: @resource.record.to_param + via_record_id: @resource.record_param ) end end diff --git a/app/components/avo/fields/has_one_field/show_component.rb b/app/components/avo/fields/has_one_field/show_component.rb index 4e27e74e4e..ccb5fe05de 100644 --- a/app/components/avo/fields/has_one_field/show_component.rb +++ b/app/components/avo/fields/has_one_field/show_component.rb @@ -24,7 +24,7 @@ def can_attach? def attach_path helpers.avo.resources_associations_new_path( @resource.singular_model_key, - @resource.record.to_param, + @resource.record_param, @field.id, for_attribute: @field.for_attribute ) @@ -48,7 +48,7 @@ def create_path via_relation: association_id, via_relation_class: @resource.model_class.to_s, via_resource_class: @resource.class, - via_record_id: @resource.record.to_param, + via_record_id: @resource.record_param, via_association_type: :has_one } diff --git a/app/components/avo/index/grid_item_component.html.erb b/app/components/avo/index/grid_item_component.html.erb index 8e3410ca8c..f1bbd4e8e9 100644 --- a/app/components/avo/index/grid_item_component.html.erb +++ b/app/components/avo/index/grid_item_component.html.erb @@ -3,7 +3,7 @@ data-component-name="<%= self.class.to_s.underscore %>" <%== item_selector_init @resource %> data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.to_param %>" + data-record-id="<%= @resource.record_param %>" <%= try :drag_reorder_item_attributes %> > <%= content_tag :div, diff --git a/app/components/avo/index/resource_controls_component.rb b/app/components/avo/index/resource_controls_component.rb index 4166b05c5b..95d5201a16 100644 --- a/app/components/avo/index/resource_controls_component.rb +++ b/app/components/avo/index/resource_controls_component.rb @@ -93,7 +93,7 @@ def render_edit_button(control) data: { target: "control:edit", control: :edit, - "resource-id": @resource.record.to_param, + "resource-id": @resource.record_param, tippy: "tooltip", } end @@ -135,14 +135,14 @@ def render_delete_button(control) target: "control:destroy", control: :destroy, tippy: control.title ? :tooltip : nil, - "resource-id": @resource.record.to_param, + "resource-id": @resource.record_param, } end def render_detach_button(control) return unless can_detach? - a_button url: helpers.resource_detach_path(params[:resource_name], params[:id], params[:related_name], @resource.record.to_param), + a_button url: helpers.resource_detach_path(params[:resource_name], params[:id], params[:related_name], @resource.record_param), style: :icon, color: :gray, icon: "detach", @@ -155,7 +155,7 @@ def render_detach_button(control) turbo_confirm: control.confirmation_message, target: "control:detach", control: :detach, - "resource-id": @resource.record.to_param, + "resource-id": @resource.record_param, tippy: :tooltip, } end diff --git a/app/components/avo/index/table_row_component.html.erb b/app/components/avo/index/table_row_component.html.erb index 49ea796dcd..579db15995 100644 --- a/app/components/avo/index/table_row_component.html.erb +++ b/app/components/avo/index/table_row_component.html.erb @@ -4,7 +4,7 @@ data-component-name="<%= self.class.to_s.underscore %>" <%== item_selector_init @resource %> data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.to_param %>" + data-record-id="<%= @resource.record_param %>" <%= try :drag_reorder_item_attributes %> > <% if @resource.record_selector %> diff --git a/app/components/avo/resource_component.rb b/app/components/avo/resource_component.rb index bcebb764df..69aafe05c0 100644 --- a/app/components/avo/resource_component.rb +++ b/app/components/avo/resource_component.rb @@ -36,7 +36,7 @@ def can_detach? def detach_path return "/" if @reflection.blank? - helpers.resource_detach_path(params[:resource_name], params[:id], @reflection.name.to_s, @resource.record.to_param) + helpers.resource_detach_path(params[:resource_name], params[:id], @reflection.name.to_s, @resource.record_param) end def can_see_the_edit_button? @@ -172,7 +172,7 @@ def render_delete_button(control) target: "control:destroy", control: :destroy, tippy: control.title ? :tooltip : nil, - "resource-id": @resource.record.to_param, + "resource-id": @resource.record_param, } do control.label end diff --git a/app/components/avo/resource_sidebar_component.html.erb b/app/components/avo/resource_sidebar_component.html.erb index fdc349985b..5ad85802e2 100644 --- a/app/components/avo/resource_sidebar_component.html.erb +++ b/app/components/avo/resource_sidebar_component.html.erb @@ -2,7 +2,7 @@ data-component-name="<%= self.class.to_s.underscore %>" data-component-index="<%= index %>" data-resource-name="<%= @resource.class.to_s %>" - data-record-id="<%= @resource.record.to_param %>" + data-record-id="<%= @resource.record_param %>" > <%= render Avo::Items::VisibleItemsComponent.new( resource: @resource, diff --git a/app/components/avo/views/resource_edit_component.html.erb b/app/components/avo/views/resource_edit_component.html.erb index e219a5f2b4..367f273234 100644 --- a/app/components/avo/views/resource_edit_component.html.erb +++ b/app/components/avo/views/resource_edit_component.html.erb @@ -3,9 +3,9 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.to_param, + record_id: @resource.record_param, selected_resources_name: @resource.model_key, - selected_resources: [@resource.record.to_param], + selected_resources: [@resource.record_param], **@resource.stimulus_data_attributes } do %> <%= render_cards_component %> diff --git a/app/components/avo/views/resource_show_component.html.erb b/app/components/avo/views/resource_show_component.html.erb index 7a4f38477a..a51bf0dff4 100644 --- a/app/components/avo/views/resource_show_component.html.erb +++ b/app/components/avo/views/resource_show_component.html.erb @@ -2,9 +2,9 @@ data: { model_name: @resource.model_name.to_s, resource_name: @resource.class.to_s, - record_id: @resource.record.to_param, + record_id: @resource.record_param, selected_resources_name: @resource.model_key, - selected_resources: [@resource.record.to_param], + selected_resources: [@resource.record_param], **@resource.stimulus_data_attributes } do %> <%= content_tag :div, class: 'space-y-12' do %> diff --git a/app/controllers/avo/base_controller.rb b/app/controllers/avo/base_controller.rb index c98af96c43..6fe8459857 100644 --- a/app/controllers/avo/base_controller.rb +++ b/app/controllers/avo/base_controller.rb @@ -141,15 +141,6 @@ def create end end end - @record.class.reflect_on_all_associations.each do |association| - if association&.foreign_key == @record._reflections[association.class_name.underscore]&.foreign_key && params[@record.model_name.name.underscore.to_sym][@record._reflections[association.class_name.underscore].foreign_key.to_sym].present? - # Find the associated record by the obfuscated id - associated_record = association.class_name.constantize.find(params[@record.model_name.name.underscore.to_sym][@record._reflections[association.class_name.underscore].foreign_key.to_sym]) - - # Override the foreign key with the real one - @record.send(:"#{association.foreign_key}=", associated_record.send(association.association_primary_key)) - end - end # record gets instantiated and filled in the fill_record method saved = save_record diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index 6b1e264005..3a0b10fefe 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -586,5 +586,9 @@ def description_attributes def entity_loader(entity) instance_variable_get("@#{entity.to_s.pluralize}_loader") end + + def record_param + @record_param ||= @record.persisted? ? @record.to_param : nil + end end end diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 11ab2ac3ea..4052e3f5d6 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -97,7 +97,7 @@ def value end def selected - value.to_param + @selected ||= value.to_param end # The value @@ -199,20 +199,25 @@ def to_permitted_param def fill_field(model, key, value, params) return model unless model.methods.include? key.to_sym - value = update_using(record, key, value, params) if polymorphic_as.present? valid_model_class = valid_polymorphic_class params[:"#{polymorphic_as}_type"] model.send(:"#{polymorphic_as}_type=", valid_model_class) # If the type is blank, reset the id too. - if valid_model_class.blank? + id_from_param = params["#{polymorphic_as}_id"] + + if valid_model_class.blank? || id_from_param.blank? model.send(:"#{polymorphic_as}_id=", nil) else - model.send(:"#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) + record_id = target_resource(record: model, polymorphic_model_class: value.safe_constantize).find_record(id_from_param).id + + model.send(:"#{polymorphic_as}_id=", record_id) end else - model.send("#{key}=", value) + record_id = value.blank? ? value : target_resource(record: model).find_record(value).id + + model.send(:"#{key}=", record_id) end model @@ -233,22 +238,22 @@ def database_id id end - def target_resource + def target_resource(record: @record, polymorphic_model_class: value&.class) @target_resource ||= if use_resource.present? use_resource elsif is_polymorphic? - if value.present? - get_resource_by_model_class(value.class) + if polymorphic_model_class.present? + get_resource_by_model_class(polymorphic_model_class) else - return nil + nil end else reflection_key = polymorphic_as || id - if @record._reflections[reflection_key.to_s].klass.present? - get_resource_by_model_class(@record._reflections[reflection_key.to_s].klass.to_s) - elsif @record._reflections[reflection_key.to_s].options[:class_name].present? - get_resource_by_model_class(@record._reflections[reflection_key.to_s].options[:class_name]) + if record._reflections[reflection_key.to_s].klass.present? + get_resource_by_model_class(record._reflections[reflection_key.to_s].klass.to_s) + elsif record._reflections[reflection_key.to_s].options[:class_name].present? + get_resource_by_model_class(record._reflections[reflection_key.to_s].options[:class_name]) else App.get_resource_by_name reflection_key.to_s end diff --git a/spec/dummy/app/avo/resources/comment.rb b/spec/dummy/app/avo/resources/comment.rb index 2e1b300e3e..ebf7218ca3 100644 --- a/spec/dummy/app/avo/resources/comment.rb +++ b/spec/dummy/app/avo/resources/comment.rb @@ -18,9 +18,7 @@ def fields as: :date_time, picker_format: "Y-m-d H:i:S", format: "cccc, d LLLL yyyy, HH:mm ZZZZ" # Wednesday, 10 February 1988, 16:00 GMT - field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser, update_using: -> { - User.find(value).id if value.present? && User.exists?(value) - } + field :user, as: :belongs_to, use_resource: Avo::Resources::CompactUser field :commentable, as: :belongs_to, polymorphic_as: :commentable, types: [::Post, ::Project] end diff --git a/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb b/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb index 7cd3541047..591cbc49c7 100644 --- a/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb +++ b/spec/dummy/app/views/avo/resource_tools/_fish_information.html.erb @@ -26,7 +26,7 @@

- The fish's name is <%= @resource.record.name %>. The ID of the record is <%= @resource.record.to_param %> and the tool's name is <%= tool.class.to_s %>. + The fish's name is <%= @resource.record.name %>. The ID of the record is <%= @resource.record_param %> and the tool's name is <%= tool.class.to_s %>.

<%= turbo_frame_tag "fish_custom_action_demo" do %> diff --git a/spec/features/avo/belongs_to_spec.rb b/spec/features/avo/belongs_to_spec.rb index ee0409613c..e4864d86de 100644 --- a/spec/features/avo/belongs_to_spec.rb +++ b/spec/features/avo/belongs_to_spec.rb @@ -113,7 +113,7 @@ it "saves the related comment" do expect(Course::Link.count).to be 0 - visit "/admin/resources/course_links/new?via_relation=course&via_record_id=#{course.id}&via_relation_class=Course" + visit "/admin/resources/course_links/new?via_relation=course&via_record_id=#{course.to_param}&via_relation_class=Course" fill_in "course_link_link", with: "https://avo.cool" diff --git a/spec/system/avo/belongs_to_polymorphic_spec.rb b/spec/system/avo/belongs_to_polymorphic_spec.rb index a8c7cdb8f3..eccd2bf4d1 100644 --- a/spec/system/avo/belongs_to_polymorphic_spec.rb +++ b/spec/system/avo/belongs_to_polymorphic_spec.rb @@ -214,7 +214,7 @@ click_on "Edit" expect(find_field("comment_body").value).to eql "hey there" - expect(find_field("comment_user_id").value).to eql user.id.to_s + expect(find_field("comment_user_id").value).to eql user.to_param.to_s expect(page).to have_select "comment_commentable_type", options: ["Choose an option", "Post", "Project"], selected: "Project", disabled: true expect(page).to have_select "comment_commentable_id", options: ["Choose an option", project.name], selected: project.name, disabled: true diff --git a/spec/system/avo/create_via_belongs_to_spec.rb b/spec/system/avo/create_via_belongs_to_spec.rb index 5661d4947e..32022bf0ee 100644 --- a/spec/system/avo/create_via_belongs_to_spec.rb +++ b/spec/system/avo/create_via_belongs_to_spec.rb @@ -39,7 +39,7 @@ let(:comment) { create(:comment, user: create(:user), commentable: create(:project)) } it 'successfully creates a new commentable and assigns it to the comment', :aggregate_failures do - visit "/admin/resources/comments/#{comment.id}/edit" + visit "/admin/resources/comments/#{comment.to_param}/edit" page.select 'Post', from: 'comment_commentable_type' click_on 'Create new post' diff --git a/spec/system/avo/tabs_spec.rb b/spec/system/avo/tabs_spec.rb index 93fcd4ef53..876eb0161b 100644 --- a/spec/system/avo/tabs_spec.rb +++ b/spec/system/avo/tabs_spec.rb @@ -9,7 +9,7 @@ visit "/admin/resources/users" expect(find("table thead").text).to eq "ID\n\t\nAVATAR\n\t\nFIRST NAME\n\t\nLAST NAME\n\t\nUSER EMAIL\n\t\nIS ACTIVE\n\t\nCV\n\t\nIS ADMIN\n\t\nROLES\n\t\nBIRTHDAY\n\t\nIS WRITER" - within find("tr[data-resource-id='#{user.id}']") do + within find("tr[data-resource-id='#{user.to_param}']") do expect(find_all("table tbody tr td")[10].text).to eq "Wednesday, 10 February 1988" end end From 7af4de91633e9ec12058d83f5ea7e9de82011112 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 28 May 2024 14:56:16 +0300 Subject: [PATCH 57/81] wip --- .../avo/fields/belongs_to_field/edit_component.html.erb | 6 +++--- lib/avo/base_resource.rb | 2 +- lib/avo/fields/belongs_to_field.rb | 4 ---- lib/avo/plugin_manager.rb | 1 - 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index 127e9b9540..f1adff858c 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -48,9 +48,9 @@ %> <% else %> <%= @form.select @field.id_input_foreign_key, - options_for_select(@field.values_for_type(type), @field.selected), + options_for_select(@field.values_for_type(type), @resource.present? && @resource.record.present? && @field.value.class == type ? @resource.record[@field.id_input_foreign_key] : nil), { - value: @field.selected, + value: @field.value.class == type ? @resource.record[@field.id_input_foreign_key].to_s : nil, include_blank: @field.placeholder, }, { @@ -100,7 +100,7 @@ <%= @form.select @field.id_input_foreign_key, @field.options, { include_blank: @field.placeholder, - selected: @field.selected + value: @field.value }, { class: classes("w-full"), diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index 3a0b10fefe..183f2e727d 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -588,7 +588,7 @@ def entity_loader(entity) end def record_param - @record_param ||= @record.persisted? ? @record.to_param : nil + @record_param ||= @record.to_param end end end diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 4052e3f5d6..402102406e 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -96,10 +96,6 @@ def value end end - def selected - @selected ||= value.to_param - end - # The value def field_value value.send(database_value) diff --git a/lib/avo/plugin_manager.rb b/lib/avo/plugin_manager.rb index d6b08fc75e..33bc7a2af0 100644 --- a/lib/avo/plugin_manager.rb +++ b/lib/avo/plugin_manager.rb @@ -1,4 +1,3 @@ -require "ostruct" module Avo class PluginManager attr_reader :plugins From add775e40e48aba536dd5469b19a2a0a968988ff Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Tue, 28 May 2024 21:52:22 +0300 Subject: [PATCH 58/81] wip --- .../avo/fields/belongs_to_field/edit_component.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index 43cd70ee36..6ee5a0b98e 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -100,7 +100,7 @@ <%= @form.select @field.id_input_foreign_key, @field.options, { include_blank: @field.placeholder, - value: @field.value + value: @field.value.to_param }, { class: classes("w-full"), From f099acf1bb5949e3149c254fb12e36fbd27c3567 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Thu, 30 May 2024 14:52:53 +0300 Subject: [PATCH 59/81] wip --- lib/avo/fields/belongs_to_field.rb | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 402102406e..cbc58df76e 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -206,14 +206,10 @@ def fill_field(model, key, value, params) if valid_model_class.blank? || id_from_param.blank? model.send(:"#{polymorphic_as}_id=", nil) else - record_id = target_resource(record: model, polymorphic_model_class: value.safe_constantize).find_record(id_from_param).id - - model.send(:"#{polymorphic_as}_id=", record_id) + model.send(:"#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) end else - record_id = value.blank? ? value : target_resource(record: model).find_record(value).id - - model.send(:"#{key}=", record_id) + model.send(:"#{key}=", value.to_param) end model @@ -234,22 +230,22 @@ def database_id id end - def target_resource(record: @record, polymorphic_model_class: value&.class) + def target_resource @target_resource ||= if use_resource.present? use_resource elsif is_polymorphic? - if polymorphic_model_class.present? - get_resource_by_model_class(polymorphic_model_class) + if value&.class.present? + get_resource_by_model_class(value&.class) else - nil + return nil end else reflection_key = polymorphic_as || id - if record._reflections[reflection_key.to_s].klass.present? - get_resource_by_model_class(record._reflections[reflection_key.to_s].klass.to_s) - elsif record._reflections[reflection_key.to_s].options[:class_name].present? - get_resource_by_model_class(record._reflections[reflection_key.to_s].options[:class_name]) + if @record._reflections[reflection_key.to_s].klass.present? + get_resource_by_model_class(@record._reflections[reflection_key.to_s].klass.to_s) + elsif @record._reflections[reflection_key.to_s].options[:class_name].present? + get_resource_by_model_class(@record._reflections[reflection_key.to_s].options[:class_name]) else App.get_resource_by_name reflection_key.to_s end From 3f234da4be704b93df4d39519135384f1f58ec7e Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Fri, 7 Jun 2024 15:33:02 +0300 Subject: [PATCH 60/81] wip --- lib/avo/fields/belongs_to_field.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 73aef67206..949b4993c8 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -206,10 +206,20 @@ def fill_field(model, key, value, params) if valid_model_class.blank? || id_from_param.blank? model.send(:"#{polymorphic_as}_id=", nil) else - model.send(:"#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) + model.send(:"#{polymorphic_as}_id=", value.constantize.find(params["#{polymorphic_as}_id"]).id) + end else - model.send(:"#{key}=", value.to_param) + association_reflection = model.class.reflect_on_all_associations.find do |association| + association.foreign_key.to_s == key + end + if association_reflection + associated_class = association_reflection.klass + associated_record = associated_class.find_by(slug: value) + model.send(:"#{key}=", associated_record&.id) + else + model.send(:"#{key}=", nil) + end end model From 783cb9eb00caec9bf34d95d08625df91c2ef4626 Mon Sep 17 00:00:00 2001 From: gabrielgiroe1 Date: Mon, 10 Jun 2024 11:34:26 +0300 Subject: [PATCH 61/81] wip --- lib/avo/base_resource.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/base_resource.rb b/lib/avo/base_resource.rb index 448ec6f24e..6b3b79c6e5 100644 --- a/lib/avo/base_resource.rb +++ b/lib/avo/base_resource.rb @@ -578,7 +578,7 @@ def entity_loader(entity) end def record_param - @record_param ||= @record.to_param + @record_param ||= @record.persisted? ? @record.to_param : nil end end end From c126c0e01d781c6f2a3883cc839d708d34195da1 Mon Sep 17 00:00:00 2001 From: Paul Bob <69730720+Paul-Bob@users.noreply.github.com> Date: Thu, 4 Jul 2024 15:26:09 +0300 Subject: [PATCH 62/81] Update lib/avo/fields/belongs_to_field.rb --- lib/avo/fields/belongs_to_field.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 949b4993c8..ced7f51db9 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -195,6 +195,7 @@ def to_permitted_param def fill_field(model, key, value, params) return model unless model.methods.include? key.to_sym + if polymorphic_as.present? valid_model_class = valid_polymorphic_class params[:"#{polymorphic_as}_type"] From 8735410e4005411ecfad3836be7158816986f585 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:02:05 +0300 Subject: [PATCH 63/81] . --- lib/avo/resources/base.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/avo/resources/base.rb b/lib/avo/resources/base.rb index e30eb8ba4b..bcd8e6d10f 100644 --- a/lib/avo/resources/base.rb +++ b/lib/avo/resources/base.rb @@ -394,8 +394,8 @@ def model_class def record_title return name if @record.nil? - # Get the title from the record if title is not set, try to get the name, title or label, or fallback to the id - return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.id if title.nil? + # Get the title from the record if title is not set, try to get the name, title or label, or fallback to the to_param + return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? # If the title is a symbol, get the value from the record else execute the block/string case title From b33e5c37424a9d55e184bb635144aaa99d6e5a84 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:04:58 +0300 Subject: [PATCH 64/81] belongs to field tweaks --- lib/avo/fields/belongs_to_field.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index d14131dfa3..b299e6ca76 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -204,12 +204,18 @@ def fill_field(record, key, value, params) record.send(:"#{polymorphic_as}_type=", valid_model_class) # If the type is blank, reset the id too. - if valid_model_class.blank? + id_from_param = params["#{polymorphic_as}_id"] + + if valid_model_class.blank? || id_from_param.blank? record.send(:"#{polymorphic_as}_id=", nil) else - record.send(:"#{polymorphic_as}_id=", params["#{polymorphic_as}_id"]) + record_id = target_resource(record:, polymorphic_model_class: value.safe_constantize).find_record(id_from_param).id + + record.send(:"#{polymorphic_as}_id=", record_id) end else + record_id = value.blank? ? value : target_resource(record:).find_record(value).id + record.send(:"#{key}=", value) end @@ -231,7 +237,7 @@ def database_id id end - def target_resource + def target_resource(record: @record, polymorphic_model_class: value&.class) @target_resource ||= if use_resource.present? use_resource elsif is_polymorphic? From 40e3798039ade2582ab852195967af5494423e74 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:05:49 +0300 Subject: [PATCH 65/81] lint --- lib/avo/resources/base.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/resources/base.rb b/lib/avo/resources/base.rb index bcd8e6d10f..108804dbd4 100644 --- a/lib/avo/resources/base.rb +++ b/lib/avo/resources/base.rb @@ -395,7 +395,7 @@ def record_title return name if @record.nil? # Get the title from the record if title is not set, try to get the name, title or label, or fallback to the to_param - return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? + return @record.try(:name) || @record.try(:title) || @record.try(:label) || @record.to_param if title.nil? # If the title is a symbol, get the value from the record else execute the block/string case title From 44cf343c7b4b7b950e8269a8e6d7e41484e4592f Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:07:48 +0300 Subject: [PATCH 66/81] bundle --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f2291f6d0d..49402c796c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -440,7 +440,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) From 00917a1f5a83149bd0c2839d4143f59fa755a2db Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:09:11 +0300 Subject: [PATCH 67/81] fix belongs_to --- lib/avo/fields/belongs_to_field.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index b299e6ca76..bfd6ce480f 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -216,7 +216,7 @@ def fill_field(record, key, value, params) else record_id = value.blank? ? value : target_resource(record:).find_record(value).id - record.send(:"#{key}=", value) + record.send(:"#{key}=", record_id) end record From 40d57a5a9356dd8988caf2e282660c218073e211 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:20:11 +0300 Subject: [PATCH 68/81] force lock --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 49402c796c..4d8e144ce5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -514,11 +514,11 @@ GEM json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.3.0.2) + parser (>= 3.2.2.4) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + rubocop-ast (< 2.0, >= 1.30.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.31.3) From a9a8ade9ab50570080eda246d5806087f0a485d0 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:22:34 +0300 Subject: [PATCH 69/81] bundle --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4d8e144ce5..49402c796c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -514,11 +514,11 @@ GEM json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.4) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (< 2.0, >= 1.30.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.31.3) From a3a6cb0704958bdc85e3d8c3ece6306bd2bb5ae9 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:24:08 +0300 Subject: [PATCH 70/81] try --full-index --- .github/workflows/feature-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/feature-tests.yml b/.github/workflows/feature-tests.yml index 23dd94dc70..23a3058bff 100644 --- a/.github/workflows/feature-tests.yml +++ b/.github/workflows/feature-tests.yml @@ -68,7 +68,7 @@ jobs: - name: Bundle install run: | bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 + bundle install --jobs 4 --retry 3 --full-index bin/rails db:create bin/rails db:migrate From 74fec879d06dad077b188a32eeb89efe69cc2671 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:28:52 +0300 Subject: [PATCH 71/81] appraisal update rubocop --- gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock | 59 ++++++++++++++----- gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock | 2 +- gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock | 59 ++++++++++++++----- gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock | 2 +- .../rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock | 2 +- .../rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock | 2 +- gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock | 2 +- gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock | 2 +- 8 files changed, 92 insertions(+), 38 deletions(-) diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock index fd61a310f0..62cf35bc55 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock @@ -201,6 +201,33 @@ GEM dotenv-rails (3.1.2) dotenv (= 3.1.2) railties (>= 6.1) + dry-configurable (1.2.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.1.0) + dry-initializer (3.1.1) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-schema (1.13.4) + concurrent-ruby (~> 1.0) + dry-configurable (~> 1.0, >= 1.0.1) + dry-core (~> 1.0, < 2) + dry-initializer (~> 3.0) + dry-logic (>= 1.4, < 2) + dry-types (>= 1.7, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) e2mmap (0.1.0) erb-formatter (0.7.3) syntax_tree (~> 6.0) @@ -290,7 +317,6 @@ GEM rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - kwalify (0.7.2) language_server-protocol (3.17.0.3) launchy (3.0.1) addressable (~> 2.8) @@ -345,7 +371,7 @@ GEM orm_adapter (0.5.0) pagy (8.6.3) parallel (1.25.1) - parser (3.2.2.4) + parser (3.3.4.0) ast (~> 2.4.1) racc path_expander (1.1.2) @@ -358,7 +384,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (2.2.9) rack-test (2.1.0) rack (>= 1.3) @@ -411,10 +437,11 @@ GEM redis-client (>= 0.22.0) redis-client (0.22.2) connection_pool - reek (6.1.4) - kwalify (~> 0.7.0) - parser (~> 3.2.0) + reek (6.3.0) + dry-schema (~> 1.13.0) + parser (~> 3.3.0) rainbow (>= 2.0, < 4.0) + rexml (~> 3.1) regexp_parser (2.9.2) reline (0.5.9) io-console (~> 0.5) @@ -445,19 +472,19 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.13.1) - rubocop (1.59.0) + rubocop (1.65.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) + regexp_parser (>= 2.4, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) @@ -470,15 +497,15 @@ GEM ruby_parser (3.21.1) racc (~> 1.5) sexp_processor (~> 4.16) - rubycritic (4.9.1) + rubycritic (4.9.0) flay (~> 2.13) flog (~> 4.7) launchy (>= 2.5.2) - parser (>= 3.2.2.4) + parser (>= 3.2.2.1) rainbow (~> 3.1.1) - reek (~> 6.0, < 6.2) + reek (~> 6.0, < 7.0) rexml - ruby_parser (~> 3.21) + ruby_parser (~> 3.20) simplecov (>= 0.22.0) tty-which (~> 0.5.0) virtus (~> 2.0) @@ -523,10 +550,10 @@ GEM actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - standard (1.35.1) + standard (1.35.0.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.62.0) + rubocop (~> 1.62) standard-custom (~> 1.0.0) standard-performance (~> 1.3) standard-custom (1.0.2) diff --git a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock index a0f3ca52ae..853fc85c2a 100644 --- a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock @@ -358,7 +358,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (2.2.9) rack-test (2.1.0) rack (>= 1.3) diff --git a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock index 72fda2b5f6..fa546ca992 100644 --- a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock @@ -218,6 +218,33 @@ GEM dotenv (= 3.1.2) railties (>= 6.1) drb (2.2.1) + dry-configurable (1.2.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.1.0) + dry-initializer (3.1.1) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-schema (1.13.4) + concurrent-ruby (~> 1.0) + dry-configurable (~> 1.0, >= 1.0.1) + dry-core (~> 1.0, < 2) + dry-initializer (~> 3.0) + dry-logic (>= 1.4, < 2) + dry-types (>= 1.7, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) e2mmap (0.1.0) erb-formatter (0.7.3) syntax_tree (~> 6.0) @@ -310,7 +337,6 @@ GEM rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - kwalify (0.7.2) language_server-protocol (3.17.0.3) launchy (3.0.1) addressable (~> 2.8) @@ -366,7 +392,7 @@ GEM orm_adapter (0.5.0) pagy (8.6.3) parallel (1.25.1) - parser (3.2.2.4) + parser (3.3.4.0) ast (~> 2.4.1) racc path_expander (1.1.2) @@ -379,7 +405,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) @@ -439,10 +465,11 @@ GEM redis-client (>= 0.22.0) redis-client (0.22.2) connection_pool - reek (6.1.4) - kwalify (~> 0.7.0) - parser (~> 3.2.0) + reek (6.3.0) + dry-schema (~> 1.13.0) + parser (~> 3.3.0) rainbow (>= 2.0, < 4.0) + rexml (~> 3.1) regexp_parser (2.9.2) reline (0.5.9) io-console (~> 0.5) @@ -473,19 +500,19 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.13.1) - rubocop (1.59.0) + rubocop (1.65.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) + regexp_parser (>= 2.4, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) rubocop-performance (1.20.2) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.30.0, < 2.0) @@ -498,15 +525,15 @@ GEM ruby_parser (3.21.1) racc (~> 1.5) sexp_processor (~> 4.16) - rubycritic (4.9.1) + rubycritic (4.9.0) flay (~> 2.13) flog (~> 4.7) launchy (>= 2.5.2) - parser (>= 3.2.2.4) + parser (>= 3.2.2.1) rainbow (~> 3.1.1) - reek (~> 6.0, < 6.2) + reek (~> 6.0, < 7.0) rexml - ruby_parser (~> 3.21) + ruby_parser (~> 3.20) simplecov (>= 0.22.0) tty-which (~> 0.5.0) virtus (~> 2.0) @@ -551,10 +578,10 @@ GEM actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - standard (1.35.1) + standard (1.35.0.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.62.0) + rubocop (~> 1.62) standard-custom (~> 1.0.0) standard-performance (~> 1.3) standard-custom (1.0.2) diff --git a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock index a2f2f1d086..509b534610 100644 --- a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock @@ -379,7 +379,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock index 4a917f0f96..42e79796d5 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock @@ -376,7 +376,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock index 4a917f0f96..42e79796d5 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock @@ -376,7 +376,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) diff --git a/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock b/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock index 2769c28989..d972db48fe 100644 --- a/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock @@ -408,7 +408,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) diff --git a/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock b/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock index 2769c28989..d972db48fe 100644 --- a/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock @@ -408,7 +408,7 @@ GEM public_suffix (6.0.0) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-session (2.0.0) rack (>= 3.0.0) From 07e2bcb951629145aa39abe599dde2238a74f43e Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:29:17 +0300 Subject: [PATCH 72/81] rm --full-index --- .github/workflows/feature-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/feature-tests.yml b/.github/workflows/feature-tests.yml index 23a3058bff..23dd94dc70 100644 --- a/.github/workflows/feature-tests.yml +++ b/.github/workflows/feature-tests.yml @@ -68,7 +68,7 @@ jobs: - name: Bundle install run: | bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 --full-index + bundle install --jobs 4 --retry 3 bin/rails db:create bin/rails db:migrate From b98d3dfe00b19c2e09aa67a8f3bd4d33f02c16bf Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:42:09 +0300 Subject: [PATCH 73/81] add record_param --- lib/avo/resources/base.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/avo/resources/base.rb b/lib/avo/resources/base.rb index 108804dbd4..b156cd5153 100644 --- a/lib/avo/resources/base.rb +++ b/lib/avo/resources/base.rb @@ -603,6 +603,10 @@ def description_attributes def entity_loader(entity) instance_variable_get("@#{entity.to_s.pluralize}_loader") end + + def record_param + @record_param ||= @record.persisted? ? @record.to_param : nil + end end end end From 970d736c033569d7a142a09a108db55c5a92f786 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:50:53 +0300 Subject: [PATCH 74/81] fix target_resource --- lib/avo/fields/belongs_to_field.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index bfd6ce480f..4f3c48cbe5 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -249,7 +249,7 @@ def target_resource(record: @record, polymorphic_model_class: value&.class) else reflection_key = polymorphic_as || id - reflection_object = @record.class.reflect_on_association(reflection_key) + reflection_object = record.class.reflect_on_association(reflection_key) if reflection_object.klass.present? get_resource_by_model_class(reflection_object.klass.to_s) From e09ad18acd539d61781445cc591f4ae67c4bc20e Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 12:59:19 +0300 Subject: [PATCH 75/81] tweaks --- .../avo/fields/belongs_to_field/edit_component.html.erb | 2 +- app/helpers/avo/application_helper.rb | 2 +- lib/avo/fields/has_one_field.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index b41f52de1e..bcedc63305 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -101,7 +101,7 @@ <%= @form.select @field.id_input_foreign_key, @field.options, { include_blank: @field.placeholder, - value: @field.value.to_param + selected: @field.value.to_param }, { class: classes("w-full"), diff --git a/app/helpers/avo/application_helper.rb b/app/helpers/avo/application_helper.rb index cb7367a484..c9babc1418 100644 --- a/app/helpers/avo/application_helper.rb +++ b/app/helpers/avo/application_helper.rb @@ -134,7 +134,7 @@ def number_to_social(number, start_at: 10_000) end def frame_id(resource) - ["frame", resource.model_name.singular, resource.record.id].compact.join("-") + ["frame", resource.model_name.singular, resource.record_param].compact.join("-") end def chart_color(index) diff --git a/lib/avo/fields/has_one_field.rb b/lib/avo/fields/has_one_field.rb index 4f0a20c657..5b80072b1a 100644 --- a/lib/avo/fields/has_one_field.rb +++ b/lib/avo/fields/has_one_field.rb @@ -19,7 +19,7 @@ def label def frame_url Avo::Services::URIService.parse(field_resource.record_path) - .append_paths(id, value.id) + .append_paths(id, value.to_param) .append_query(query_params) .to_s end From bb6c07cb9b8995de73575309b8121063a7d9cf6e Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:05:12 +0300 Subject: [PATCH 76/81] wip --- gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock | 2 +- spec/dummy/app/models/city.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock index 62cf35bc55..314bf437cf 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock @@ -609,7 +609,7 @@ GEM xpath (3.2.0) nokogiri (~> 1.8) yard (0.9.36) - zeitwerk (2.6.16) + zeitwerk (2.6.17) PLATFORMS arm64-darwin-23 diff --git a/spec/dummy/app/models/city.rb b/spec/dummy/app/models/city.rb index 5585822cd5..fea50cd41c 100644 --- a/spec/dummy/app/models/city.rb +++ b/spec/dummy/app/models/city.rb @@ -18,7 +18,7 @@ # city_center_area :json # class City < ApplicationRecord - include Hashid::Rails + include ::Hashid::Rails if Gem::Version.new(Rails.version) >= Gem::Version.new("7.3.0") enum :status, {Open: "open", Closed: "closed", Quarantine: "On Quarantine"} else From de524069ea7122b46fcc431f7e99ed8c0cd95518 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:07:21 +0300 Subject: [PATCH 77/81] fix target_resource --- lib/avo/fields/belongs_to_field.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/avo/fields/belongs_to_field.rb b/lib/avo/fields/belongs_to_field.rb index 4f3c48cbe5..049e27d0dc 100644 --- a/lib/avo/fields/belongs_to_field.rb +++ b/lib/avo/fields/belongs_to_field.rb @@ -241,8 +241,8 @@ def target_resource(record: @record, polymorphic_model_class: value&.class) @target_resource ||= if use_resource.present? use_resource elsif is_polymorphic? - if value&.class.present? - get_resource_by_model_class(value&.class) + if polymorphic_model_class.present? + get_resource_by_model_class(polymorphic_model_class) else return nil end From 0f89087416fd441a1f29d5c0f1d95167e18c0bb6 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:22:28 +0300 Subject: [PATCH 78/81] ransack cleanup --- Appraisals | 6 ------ Gemfile | 5 +---- Gemfile.lock | 16 +++++---------- gemfiles/rails_6.1_ruby_3.1.4.gemfile | 2 +- gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock | 2 +- gemfiles/rails_6.1_ruby_3.3.0.gemfile | 2 +- gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock | 2 +- gemfiles/rails_7.1_ruby_3.1.4.gemfile | 2 +- gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock | 2 +- gemfiles/rails_7.1_ruby_3.3.0.gemfile | 2 +- gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock | 2 +- gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile | 3 +-- .../rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock | 9 +-------- gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile | 3 +-- .../rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock | 9 +-------- gemfiles/rails_8.0_ruby_3.1.4.gemfile | 3 ++- gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock | 20 +++++++++---------- gemfiles/rails_8.0_ruby_3.3.0.gemfile | 3 ++- gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock | 20 +++++++++---------- 19 files changed, 40 insertions(+), 73 deletions(-) diff --git a/Appraisals b/Appraisals index d7141110cd..cae721aced 100644 --- a/Appraisals +++ b/Appraisals @@ -4,12 +4,7 @@ gem "psych", "< 4" gem "rails", "~> #{rails_version}" gem "activestorage", "~> #{rails_version}" - gem "ransack", "~> 4.1", ">= 4.1.1" gem "activestorage" - - # source "https://rubygems.pkg.github.com/avo-hq" do - # gem "avo-dynamic_filters" - # end end end @@ -21,6 +16,5 @@ # Temporary Rails 8 support gem "acts-as-taggable-on", github: "avo-hq/acts-as-taggable-on" - gem "ransack", github: "avo-hq/ransack", branch: "fix/rails-8/delegate-alias-tracker-to-relation" end end diff --git a/Gemfile b/Gemfile index 76aece3bec..96698d28c1 100644 --- a/Gemfile +++ b/Gemfile @@ -130,10 +130,7 @@ gem "addressable" gem 'meta-tags' # Search -# gem "ransack", "~> 4.1", ">= 4.1.1" - -# Temporary use of fork to add Rails 8 support -gem "ransack", github: "avo-hq/ransack", branch: "fix/rails-8/delegate-alias-tracker-to-relation" +gem "ransack", ">= 4.2.0" gem 'friendly_id', '~> 5.5.1' diff --git a/Gemfile.lock b/Gemfile.lock index 49402c796c..b9d95b42fe 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,16 +5,6 @@ GIT acts-as-taggable-on (10.0.0) activerecord (>= 6.1) -GIT - remote: https://github.com/avo-hq/ransack.git - revision: 0af36d53a784e19b5a56f3b112f433c54f4d709f - branch: fix/rails-8/delegate-alias-tracker-to-relation - specs: - ransack (4.1.1) - activerecord (>= 6.1.5) - activesupport (>= 6.1.5) - i18n - GIT remote: https://github.com/rails/rails.git revision: 55c4adeb36eff229972eecbb53723c1b80393091 @@ -465,6 +455,10 @@ GEM railties (>= 6.0.0, < 8) rainbow (3.1.1) rake (13.2.1) + ransack (4.2.0) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) + i18n rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) @@ -712,7 +706,7 @@ DEPENDENCIES puma (~> 6.4) rails! rails-controller-testing - ransack! + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile b/gemfiles/rails_6.1_ruby_3.1.4.gemfile index 22923f8d75..0acdedf1b5 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock index 314bf437cf..3131cee0aa 100644 --- a/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.1.4.gemfile.lock @@ -673,7 +673,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 6.1) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_6.1_ruby_3.3.0.gemfile b/gemfiles/rails_6.1_ruby_3.3.0.gemfile index 22923f8d75..0acdedf1b5 100644 --- a/gemfiles/rails_6.1_ruby_3.3.0.gemfile +++ b/gemfiles/rails_6.1_ruby_3.3.0.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock index 853fc85c2a..4ce4f1bc1c 100644 --- a/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_6.1_ruby_3.3.0.gemfile.lock @@ -646,7 +646,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 6.1) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_7.1_ruby_3.1.4.gemfile b/gemfiles/rails_7.1_ruby_3.1.4.gemfile index a74f3256c2..7cfa4890b2 100644 --- a/gemfiles/rails_7.1_ruby_3.1.4.gemfile +++ b/gemfiles/rails_7.1_ruby_3.1.4.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock index fa546ca992..aa2ee8b5d1 100644 --- a/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.1.4.gemfile.lock @@ -701,7 +701,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 7.1) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_7.1_ruby_3.3.0.gemfile b/gemfiles/rails_7.1_ruby_3.3.0.gemfile index a74f3256c2..7cfa4890b2 100644 --- a/gemfiles/rails_7.1_ruby_3.3.0.gemfile +++ b/gemfiles/rails_7.1_ruby_3.3.0.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock index 509b534610..ad489e59f6 100644 --- a/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_7.1_ruby_3.3.0.gemfile.lock @@ -674,7 +674,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 7.1) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile index 4cc6377265..830fd642fc 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile @@ -19,12 +19,11 @@ gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem "devise" gem "awesome_print" gem "zeitwerk" -gem "httparty" gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock index 42e79796d5..4c4adf021e 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.1.4.gemfile.lock @@ -270,10 +270,6 @@ GEM listen (>= 3.0.0) railties (>= 6.0.0) htmlbeautifier (1.4.3) - httparty (0.22.0) - csv - mini_mime (>= 1.0.0) - multi_xml (>= 0.5.2) i18n (1.14.5) concurrent-ruby (~> 1.0) i18n-tasks (1.0.14) @@ -346,8 +342,6 @@ GEM money (~> 6.13) railties (>= 3.0) msgpack (1.7.2) - multi_xml (0.7.1) - bigdecimal (~> 3.1) net-imap (0.4.14) date net-protocol @@ -653,7 +647,6 @@ DEPENDENCIES hightop hotwire-livereload (~> 1.3.0) htmlbeautifier - httparty i18n-tasks (~> 1.0.12) image_processing (~> 1.12) iso @@ -672,7 +665,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 7.2.0.beta2) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile index 4cc6377265..830fd642fc 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile @@ -19,12 +19,11 @@ gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] gem "devise" gem "awesome_print" gem "zeitwerk" -gem "httparty" gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", "~> 4.1", ">= 4.1.1" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false diff --git a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock index 42e79796d5..4c4adf021e 100644 --- a/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_7.2.0.beta2_ruby_3.3.0.gemfile.lock @@ -270,10 +270,6 @@ GEM listen (>= 3.0.0) railties (>= 6.0.0) htmlbeautifier (1.4.3) - httparty (0.22.0) - csv - mini_mime (>= 1.0.0) - multi_xml (>= 0.5.2) i18n (1.14.5) concurrent-ruby (~> 1.0) i18n-tasks (1.0.14) @@ -346,8 +342,6 @@ GEM money (~> 6.13) railties (>= 3.0) msgpack (1.7.2) - multi_xml (0.7.1) - bigdecimal (~> 3.1) net-imap (0.4.14) date net-protocol @@ -653,7 +647,6 @@ DEPENDENCIES hightop hotwire-livereload (~> 1.3.0) htmlbeautifier - httparty i18n-tasks (~> 1.0.12) image_processing (~> 1.12) iso @@ -672,7 +665,7 @@ DEPENDENCIES puma (~> 6.4) rails (~> 7.2.0.beta2) rails-controller-testing - ransack (~> 4.1, >= 4.1.1) + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_8.0_ruby_3.1.4.gemfile b/gemfiles/rails_8.0_ruby_3.1.4.gemfile index 46c9ab43b1..403cc61288 100644 --- a/gemfiles/rails_8.0_ruby_3.1.4.gemfile +++ b/gemfiles/rails_8.0_ruby_3.1.4.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", branch: "fix/rails-8/delegate-alias-tracker-to-relation", git: "https://github.com/avo-hq/ransack.git" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false @@ -40,6 +40,7 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" gem "avo-record_link_field" diff --git a/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock b/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock index d972db48fe..2658d1e292 100644 --- a/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock +++ b/gemfiles/rails_8.0_ruby_3.1.4.gemfile.lock @@ -5,16 +5,6 @@ GIT acts-as-taggable-on (10.0.0) activerecord (>= 6.1) -GIT - remote: https://github.com/avo-hq/ransack.git - revision: 0af36d53a784e19b5a56f3b112f433c54f4d709f - branch: fix/rails-8/delegate-alias-tracker-to-relation - specs: - ransack (4.1.1) - activerecord (>= 6.1.5) - activesupport (>= 6.1.5) - i18n - GIT remote: https://github.com/rails/rails.git revision: 55c4adeb36eff229972eecbb53723c1b80393091 @@ -296,6 +286,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.1.0) reline @@ -433,6 +426,10 @@ GEM railties (>= 6.0.0, < 8) rainbow (3.1.1) rake (13.2.1) + ransack (4.2.0) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) + i18n rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) @@ -656,6 +653,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier @@ -677,7 +675,7 @@ DEPENDENCIES puma (~> 6.4) rails! rails-controller-testing - ransack! + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) diff --git a/gemfiles/rails_8.0_ruby_3.3.0.gemfile b/gemfiles/rails_8.0_ruby_3.3.0.gemfile index 46c9ab43b1..403cc61288 100644 --- a/gemfiles/rails_8.0_ruby_3.3.0.gemfile +++ b/gemfiles/rails_8.0_ruby_3.3.0.gemfile @@ -23,7 +23,7 @@ gem "iso" gem "active_link_to" gem "addressable" gem "meta-tags" -gem "ransack", branch: "fix/rails-8/delegate-alias-tracker-to-relation", git: "https://github.com/avo-hq/ransack.git" +gem "ransack", ">= 4.2.0" gem "friendly_id", "~> 5.5.1" gem "aws-sdk-s3", require: false gem "net-smtp", require: false @@ -40,6 +40,7 @@ gem "image_processing", "~> 1.12" gem "prefixed_ids" gem "mapkick-rb", "~> 0.1.4" gem "pluggy", path: "../pluggy" +gem "hashid-rails", "~> 1.4", ">= 1.4.1" gem "money-rails", "~> 1.12" gem "avo-money_field" gem "avo-record_link_field" diff --git a/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock b/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock index d972db48fe..2658d1e292 100644 --- a/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock +++ b/gemfiles/rails_8.0_ruby_3.3.0.gemfile.lock @@ -5,16 +5,6 @@ GIT acts-as-taggable-on (10.0.0) activerecord (>= 6.1) -GIT - remote: https://github.com/avo-hq/ransack.git - revision: 0af36d53a784e19b5a56f3b112f433c54f4d709f - branch: fix/rails-8/delegate-alias-tracker-to-relation - specs: - ransack (4.1.1) - activerecord (>= 6.1.5) - activesupport (>= 6.1.5) - i18n - GIT remote: https://github.com/rails/rails.git revision: 55c4adeb36eff229972eecbb53723c1b80393091 @@ -296,6 +286,9 @@ GEM groupdate (6.4.0) activesupport (>= 6.1) hashdiff (1.1.0) + hashid-rails (1.4.1) + activerecord (>= 4.0) + hashids (~> 1.0) hashids (1.0.6) highline (3.1.0) reline @@ -433,6 +426,10 @@ GEM railties (>= 6.0.0, < 8) rainbow (3.1.1) rake (13.2.1) + ransack (4.2.0) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) + i18n rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) @@ -656,6 +653,7 @@ DEPENDENCIES fuubar gem-release groupdate + hashid-rails (~> 1.4, >= 1.4.1) hightop hotwire-livereload (~> 1.3.0) htmlbeautifier @@ -677,7 +675,7 @@ DEPENDENCIES puma (~> 6.4) rails! rails-controller-testing - ransack! + ransack (>= 4.2.0) redis (~> 5.0) ripper-tags rspec-rails (~> 6.0, >= 6.0.3) From db92d8e1eea09ffc2a8a34325b7a10bcc10894b9 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:25:10 +0300 Subject: [PATCH 79/81] dont include hashids for rails 8 --- spec/dummy/app/models/city.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spec/dummy/app/models/city.rb b/spec/dummy/app/models/city.rb index fea50cd41c..9cf9c9ec66 100644 --- a/spec/dummy/app/models/city.rb +++ b/spec/dummy/app/models/city.rb @@ -18,7 +18,10 @@ # city_center_area :json # class City < ApplicationRecord - include ::Hashid::Rails + if Gem::Version.new(Rails.version) < Gem::Version.new("8.0.0") + include Hashid::Rails + end + if Gem::Version.new(Rails.version) >= Gem::Version.new("7.3.0") enum :status, {Open: "open", Closed: "closed", Quarantine: "On Quarantine"} else From b1ac3a0d4ef99389cbe69e40720afc27ab51fa17 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:30:43 +0300 Subject: [PATCH 80/81] attach issue message --- spec/dummy/app/models/city.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/dummy/app/models/city.rb b/spec/dummy/app/models/city.rb index 9cf9c9ec66..094101f37b 100644 --- a/spec/dummy/app/models/city.rb +++ b/spec/dummy/app/models/city.rb @@ -18,6 +18,7 @@ # city_center_area :json # class City < ApplicationRecord + # https://github.com/jcypret/hashid-rails/issues/86 if Gem::Version.new(Rails.version) < Gem::Version.new("8.0.0") include Hashid::Rails end From 1aa46cc22331147913c6cf7454608c8f88bb6bb2 Mon Sep 17 00:00:00 2001 From: Paul Bob Date: Mon, 5 Aug 2024 13:57:55 +0300 Subject: [PATCH 81/81] fix belongs to selects --- .../fields/belongs_to_field/edit_component.html.erb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/components/avo/fields/belongs_to_field/edit_component.html.erb b/app/components/avo/fields/belongs_to_field/edit_component.html.erb index bcedc63305..e2fd48bd1c 100644 --- a/app/components/avo/fields/belongs_to_field/edit_component.html.erb +++ b/app/components/avo/fields/belongs_to_field/edit_component.html.erb @@ -48,9 +48,13 @@ %> <% else %> <%= @form.select @field.id_input_foreign_key, - options_for_select(@field.values_for_type(type), @resource.present? && @resource.record.present? && @field.value.class == type ? @resource.record[@field.id_input_foreign_key] : nil), + options_for_select( + # Options + @field.values_for_type(type), + # Selected + @field.value.is_a?(type) ? @field.value.to_param : nil + ), { - value: @field.value.class == type ? @resource.record[@field.id_input_foreign_key].to_s : nil, include_blank: @field.placeholder, }, { @@ -98,10 +102,10 @@ style: @field.get_html(:style, view: view, element: :input) %> <% else %> - <%= @form.select @field.id_input_foreign_key, @field.options, + <%= @form.select @field.id_input_foreign_key, + options_for_select(@field.options, @field.value.to_param), { include_blank: @field.placeholder, - selected: @field.value.to_param }, { class: classes("w-full"),