From d321ce9d31b27701685186c9ec0b7b5a98f25834 Mon Sep 17 00:00:00 2001 From: Lea Ann Bradford Date: Tue, 25 Jul 2023 14:32:07 -0700 Subject: [PATCH] Reshare feature test (#630) * Switches thumbnail method for gallery view partial * Allow selenium specs to run on m1 (#551) * Switches thumbnail method for gallery view partial * allow selenium specs to run on m1 * fix so we can view selenium in browser * temporary commit for docs? --------- Co-authored-by: leaannbradford * Add depositor name to published tab (#577) * fix some margins in the dashboard * hide-per-tenant-analytics-on-prod (#579) * use the default analytics as a default on prod only. the per tenant analytics work was already merged to main and the defaults were hidden on staging. however, pals wants to hold off on deploying that code to production until the ga4 switch has happened so both major changes can happen at the same time. putting the analytics defaults in a conditional ensures that we can still deploy to production from main. related to: https://github.com/scientist-softserv/palni-palci/issues/569 * rubocop fix * default the env variables in analytics.yml to be empty strings so they do not fail when the env variable is not present (#580) * Advanced Search (#578) * initial generate command * get advanced search working! woooo! * remove facets * remove extra place where things were being added to search builder, update spec * unskip tests * fix button style and location * rubocop * fix test so advanced search params are included * add back range limit helper! * remove unnecessary comment * Advanced search rework (#581) * refactor and start adding missing properties * update so it includes all fields * add descriptionn & abstract * remove based near * rubocop * remove format- it should not be included in advanced search due to conflicts with Blacklight proper * add comments, add back format but do not include in advanced search * add advanced to the themes (#587) * 530 - Bring Back Based Near (#591) * re-enable based_near everywhere * remove location.rb since we now have a working decorator * update help text/locales * update comments * update comments * rubocop * fix comment! * more specific decorator * enable deleting, make sure location is bold (#596) * Hyrax 2.6 upgrade for GA4 and Workflow bug fixes into main branch (#611) * upgrade to hyrax 3.6 for new analytics * fix depenency upgrade issue * working on getting a version to pass specs * fix bug with workflow pagination - updates overridden hyrax files * rubocop --------- Co-authored-by: Rob Kaufman * reverts change that was doing nothing (#613) * update gemfile.lock --------- Co-authored-by: Summer <73361970+summer-cook@users.noreply.github.com> Co-authored-by: Summer Cook Co-authored-by: Alisha Evans Co-authored-by: Rob Kaufman --- Gemfile | 4 +- Gemfile.lock | 377 ++++++++++-------- app/models/concerns/account_settings.rb | 13 +- app/models/generic_work.rb | 1 + .../hyrax/solr_query_service_decorator.rb | 6 +- .../hyrax/workflow/permission_query.rb | 38 +- .../hyrax/admin/workflows/index.html.erb | 37 +- config/analytics.yml | 4 +- config/initializers/hyrax.rb | 5 +- ops/demo-deploy.tmpl.yaml | 2 + ops/staging-deploy.tmpl.yaml | 4 +- 11 files changed, 296 insertions(+), 195 deletions(-) diff --git a/Gemfile b/Gemfile index 299e65bb8..c7a35e799 100644 --- a/Gemfile +++ b/Gemfile @@ -81,8 +81,8 @@ gem 'bulkrax', '~> 5.0' gem 'blacklight', '~> 6.7' gem 'blacklight_oai_provider', '~> 6.1', '>= 6.1.1' -gem 'hyrax', '~> 3.5.0' - +gem 'hyrax', git: 'https://github.com/samvera/hyrax.git', branch: 'privkey_for_ga4_3.x' #'~> 3.6.0' +gem 'addressable', '2.8.1' gem 'bolognese', '>= 1.9.10' gem 'hyrax-doi', git: 'https://github.com/samvera-labs/hyrax-doi.git', branch: 'hyrax_upgrade' gem 'hyrax-iiif_av', git: 'https://github.com/samvera-labs/hyrax-iiif_av.git', branch: 'main' diff --git a/Gemfile.lock b/Gemfile.lock index 1eea75ce1..5142b2284 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -31,19 +31,83 @@ GIT iiif_manifest (> 0.5) rails (~> 5.1) +GIT + remote: https://github.com/samvera/hyrax.git + revision: 8bc9944164fdf8446b22bd4be66e5478292ceaa8 + branch: privkey_for_ga4_3.x + specs: + hyrax (3.6.0) + active-fedora (~> 13.1, >= 13.1.2) + almond-rails (~> 0.1) + awesome_nested_set (~> 3.1) + blacklight (~> 6.14) + blacklight-gallery (~> 0.7) + breadcrumbs_on_rails (~> 3.0) + browse-everything (>= 0.16, < 2.0) + carrierwave (~> 1.0) + clipboard-rails (~> 1.5) + draper (~> 4.0) + dry-equalizer (~> 0.2) + dry-events (~> 0.2.0) + dry-monads (< 1.5) + dry-struct (~> 1.0) + dry-transaction (~> 0.11) + dry-validation (~> 1.3) + flipflop (~> 2.3) + flot-rails (~> 0.0.6) + font-awesome-rails (~> 4.2) + hydra-derivatives (~> 3.3) + hydra-editor (~> 5.0, >= 5.0.4) + hydra-file_characterization (~> 1.1.2) + hydra-head (~> 11.0, >= 11.0.1) + hydra-works (>= 0.16) + iiif_manifest (>= 0.3, < 2.0) + jquery-datatables-rails (~> 3.4) + jquery-ui-rails (~> 6.0) + json-ld (< 3.2) + json-schema + kaminari_route_prefix (~> 0.1.1) + legato (~> 0.3) + linkeddata + mailboxer (~> 0.12) + nest (~> 3.1) + noid-rails (~> 3.0.0) + oauth + oauth2 (~> 1.2) + posix-spawn + power_converter (~> 0.1, >= 0.1.2) + psych (~> 3.3) + qa (~> 5.5, >= 5.5.1) + rails (~> 5.0) + rails_autolink (~> 1.1) + rdf-rdfxml + rdf-vocab (~> 3.0) + redis (~> 4.0) + redis-namespace (~> 1.5) + redlock (>= 0.1.2, < 2.0) + reform (~> 2.3) + reform-rails (~> 0.2.0) + retriable (>= 2.9, < 4.0) + samvera-nesting_indexer (~> 2.0) + sass-rails (~> 5.0) + select2-rails (~> 3.5) + signet + tinymce-rails (~> 5.10) + valkyrie (~> 2, >= 2.1.1) + GIT remote: https://github.com/scientist-softserv/iiif_print.git - revision: 8aaa943573bdf561c5382ba75f0da5762ff9b73f + revision: eb320b1c454f0219d9e17fd12fd2b525770123b2 branch: main specs: iiif_print (1.0.0) blacklight_iiif_search (~> 1.0) + derivative-rodeo (~> 0.4) dry-monads (~> 1.4.0) - hyrax (>= 2.5, < 4.0) + hyrax (>= 2.5, < 4) nokogiri (>= 1.13.2) rails (~> 5.0) rdf-vocab (~> 3.0) - reform-rails (= 0.2.3) GEM remote: https://rubygems.org/ @@ -81,7 +145,7 @@ GEM ldp (>= 0.7.0, < 2) rsolr (>= 1.1.2, < 3) ruby-progressbar (~> 1.0) - active-triples (1.1.1) + active-triples (1.2.0) activemodel (>= 3.0.0) activesupport (>= 3.0.0) rdf (>= 2.0.2, < 4.0) @@ -105,7 +169,7 @@ GEM activemodel (= 5.2.8.1) activesupport (= 5.2.8.1) arel (>= 9.0) - activerecord-import (1.4.0) + activerecord-import (1.4.1) activerecord (>= 4.2) activerecord-nulldb-adapter (0.8.0) activerecord (>= 5.2.0, < 7.1) @@ -122,7 +186,7 @@ GEM public_suffix (>= 2.0.2, < 6.0) almond-rails (0.3.0) rails (>= 4.2) - amazing_print (1.4.0) + amazing_print (1.5.0) apartment (2.2.1) activerecord (>= 3.1.2, < 6.0) parallel (>= 0.7.1) @@ -130,28 +194,28 @@ GEM rack (>= 1.3.6) arel (9.0.0) ast (2.4.2) - autoprefixer-rails (10.4.7.0) + autoprefixer-rails (10.4.13.0) execjs (~> 2) awesome_nested_set (3.5.0) activerecord (>= 4.0.0, < 7.1) aws-eventstream (1.2.0) - aws-partitions (1.626.0) - aws-sdk-core (3.140.0) + aws-partitions (1.783.0) + aws-sdk-core (3.176.1) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.68.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.127.0) + aws-sdk-core (~> 3, >= 3.176.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) + aws-sigv4 (~> 1.6) aws-sdk-sqs (1.51.1) aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sigv4 (1.5.1) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) babel-source (5.8.35) babel-transpiler (0.7.0) @@ -194,13 +258,13 @@ GEM bootstrap-sass (~> 3.0) openseadragon (>= 0.2.0) rails + blacklight_advanced_search (6.4.1) + blacklight (~> 6.0, >= 6.0.1) + parslet blacklight_iiif_search (1.0.0) blacklight (~> 6.0) iiif-presentation rails (>= 4.2, < 6) - blacklight_advanced_search (6.4.1) - blacklight (~> 6.0, >= 6.0.1) - parslet blacklight_oai_provider (6.1.1) blacklight (~> 6.0) oai (~> 1.0) @@ -280,11 +344,11 @@ GEM capybara-screenshot (1.0.26) capybara (>= 1.0, < 4) launchy - carrierwave (1.3.2) + carrierwave (1.3.3) activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) - ssrf_filter (~> 1.0) + ssrf_filter (~> 1.0, < 1.1.0) carrierwave-aws (1.4.0) aws-sdk-s3 (~> 1.0) carrierwave (>= 0.7, < 2.1) @@ -309,11 +373,11 @@ GEM execjs coffee-script-source (1.12.2) colorize (0.8.1) - concurrent-ruby (1.1.10) + concurrent-ruby (1.2.2) config (2.2.3) deep_merge (~> 1.2, >= 1.2.1) dry-validation (~> 1.0, >= 1.0.0) - connection_pool (2.2.5) + connection_pool (2.4.1) coveralls (0.8.23) json (>= 1.8, < 3) simplecov (~> 0.16.1) @@ -334,6 +398,7 @@ GEM activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) + date (3.3.3) declarative (0.0.20) declarative-builder (0.1.0) declarative-option (< 0.2.0) @@ -341,6 +406,15 @@ GEM deep_merge (1.2.2) deprecation (1.1.0) activesupport + derivative-rodeo (0.4.2) + activesupport (>= 5) + aws-sdk-s3 + aws-sdk-sqs + httparty + marcel + mime-types + mini_magick + nokogiri devise (4.8.1) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -373,13 +447,14 @@ GEM dropbox_api (0.1.21) faraday (< 3.0) oauth2 (~> 1.1) - dry-configurable (0.15.0) - concurrent-ruby (~> 1.0) + dry-configurable (0.16.1) dry-core (~> 0.6) - dry-container (0.10.1) + zeitwerk (~> 2.6) + dry-container (0.11.0) concurrent-ruby (~> 1.0) - dry-core (0.8.1) + dry-core (0.9.1) concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) dry-equalizer (0.3.0) dry-events (0.2.0) concurrent-ruby (~> 1.0) @@ -387,42 +462,47 @@ GEM dry-equalizer (~> 0.2) dry-inflector (0.3.0) dry-initializer (3.1.1) - dry-logic (1.2.0) + dry-logic (1.3.0) concurrent-ruby (~> 1.0) - dry-core (~> 0.5, >= 0.5) + dry-core (~> 0.9, >= 0.9) + zeitwerk (~> 2.6) dry-matcher (0.9.0) dry-core (~> 0.4, >= 0.4.8) dry-monads (1.4.0) concurrent-ruby (~> 1.0) dry-core (~> 0.7) - dry-schema (1.10.2) + dry-schema (1.11.3) concurrent-ruby (~> 1.0) - dry-configurable (~> 0.13, >= 0.13.0) - dry-core (~> 0.5, >= 0.5) + dry-configurable (~> 0.16, >= 0.16) + dry-core (~> 0.9, >= 0.9) dry-initializer (~> 3.0) - dry-logic (~> 1.0) - dry-types (~> 1.5) - dry-struct (1.4.0) - dry-core (~> 0.5, >= 0.5) - dry-types (~> 1.5) + dry-logic (~> 1.3) + dry-types (~> 1.6) + zeitwerk (~> 2.6) + dry-struct (1.5.2) + dry-core (~> 0.9, >= 0.9) + dry-types (~> 1.6) ice_nine (~> 0.11) + zeitwerk (~> 2.6) dry-transaction (0.13.3) dry-container (>= 0.2.8) dry-events (>= 0.1.0) dry-matcher (>= 0.7.0) dry-monads (>= 0.4.0) - dry-types (1.5.1) + dry-types (1.6.1) concurrent-ruby (~> 1.0) dry-container (~> 0.3) - dry-core (~> 0.5, >= 0.5) + dry-core (~> 0.9, >= 0.9) dry-inflector (~> 0.1, >= 0.1.2) - dry-logic (~> 1.0, >= 1.0.2) - dry-validation (1.8.1) + dry-logic (~> 1.3, >= 1.3) + zeitwerk (~> 2.6) + dry-validation (1.9.0) concurrent-ruby (~> 1.0) dry-container (~> 0.7, >= 0.7.1) - dry-core (~> 0.5, >= 0.5) + dry-core (~> 0.9, >= 0.9) dry-initializer (~> 3.0) - dry-schema (~> 1.8, >= 1.8.0) + dry-schema (~> 1.11, >= 1.11.0) + zeitwerk (~> 2.6) easy_translate (0.5.1) thread thread_safe @@ -437,11 +517,11 @@ GEM activesupport (>= 3.0, < 8.0) equivalent-xml (0.6.0) nokogiri (>= 1.4.3) - erubi (1.11.0) + erubi (1.12.0) erubis (2.7.0) et-orbi (1.2.7) tzinfo - ethon (0.15.0) + ethon (0.16.0) ffi (>= 1.15.0) excon (0.71.1) execjs (2.8.1) @@ -450,7 +530,7 @@ GEM factory_bot_rails (6.2.0) factory_bot (~> 6.2.0) railties (>= 5.0.0) - faraday (0.17.5) + faraday (0.17.6) multipart-post (>= 1.2, < 3) faraday-encoding (0.0.5) faraday @@ -464,7 +544,7 @@ GEM path_expander (~> 1.0) ruby_parser (~> 3.0) sexp_processor (~> 4.0) - flipflop (2.7.0) + flipflop (2.7.1) activesupport (>= 4.0) terminal-table (>= 1.8) flot-rails (0.0.7) @@ -477,13 +557,13 @@ GEM raabro (~> 1.4) gender_detector (0.1.2) unicode_utils (>= 1.3.0) - geocoder (1.8.0) + geocoder (1.8.1) gitlab (4.19.0) httparty (~> 0.20) terminal-table (>= 1.5.1) - globalid (1.0.0) + globalid (1.1.0) activesupport (>= 5.0) - google-apis-core (0.10.0) + google-apis-core (0.11.0) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -492,9 +572,9 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-drive_v3 (0.33.0) - google-apis-core (>= 0.9.1, < 2.a) - googleauth (1.3.0) + google-apis-drive_v3 (0.42.0) + google-apis-core (>= 0.11.0, < 2.a) + googleauth (1.6.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -550,73 +630,16 @@ GEM hydra-access-controls (= 11.0.7) hydra-core (= 11.0.7) rails (>= 5.2, < 6.1) - hydra-pcdm (1.1.0) - active-fedora (>= 10, < 14) + hydra-pcdm (1.3.0) + active-fedora (>= 10, < 15) mime-types (>= 1) - hydra-works (2.0.0) - activesupport (>= 5.2, < 7.0) + rdf-vocab + hydra-works (2.1.0) + activesupport (>= 5.2, < 7.1) hydra-derivatives (~> 3.6) hydra-file_characterization (~> 1.0) hydra-pcdm (>= 0.9) - hyrax (3.5.0) - active-fedora (~> 13.1, >= 13.1.2) - almond-rails (~> 0.1) - awesome_nested_set (~> 3.1) - blacklight (~> 6.14) - blacklight-gallery (~> 0.7) - breadcrumbs_on_rails (~> 3.0) - browse-everything (>= 0.16, < 2.0) - carrierwave (~> 1.0) - clipboard-rails (~> 1.5) - draper (~> 4.0) - dry-equalizer (~> 0.2) - dry-events (~> 0.2.0) - dry-monads (< 1.5) - dry-struct (~> 1.0) - dry-transaction (~> 0.11) - dry-validation (~> 1.3) - flipflop (~> 2.3) - flot-rails (~> 0.0.6) - font-awesome-rails (~> 4.2) - hydra-derivatives (~> 3.3) - hydra-editor (~> 5.0, >= 5.0.4) - hydra-file_characterization (~> 1.1.2) - hydra-head (~> 11.0, >= 11.0.1) - hydra-works (>= 0.16) - iiif_manifest (>= 0.3, < 2.0) - jquery-datatables-rails (~> 3.4) - jquery-ui-rails (~> 6.0) - json-ld (< 3.2) - json-schema - kaminari_route_prefix (~> 0.1.1) - legato (~> 0.3) - linkeddata - mailboxer (~> 0.12) - nest (~> 3.1) - noid-rails (~> 3.0.0) - oauth - oauth2 (~> 1.2) - posix-spawn - power_converter (~> 0.1, >= 0.1.2) - psych (~> 3.3) - qa (~> 5.5, >= 5.5.1) - rails (~> 5.0) - rails_autolink (~> 1.1) - rdf-rdfxml - rdf-vocab (~> 3.0) - redis (~> 4.0) - redis-namespace (~> 1.5) - redlock (>= 0.1.2) - reform (~> 2.3) - reform-rails (~> 0.2.0) - retriable (>= 2.9, < 4.0) - samvera-nesting_indexer (~> 2.0) - sass-rails (~> 5.0) - select2-rails (~> 3.5) - signet - tinymce-rails (~> 5.10) - valkyrie (~> 2, >= 2.1.1) - i18n (1.12.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) i18n-debug (1.2.0) i18n (< 2) @@ -636,7 +659,7 @@ GEM activesupport (>= 3.2.18) faraday (>= 0.9) json - iiif_manifest (1.3.0) + iiif_manifest (1.3.1) activesupport (>= 4) is_it_working (1.1.0) iso-639 (0.3.5) @@ -644,20 +667,20 @@ GEM jbuilder (2.11.5) actionview (>= 5.0.0) activesupport (>= 5.0.0) - jmespath (1.6.1) + jmespath (1.6.2) jquery-datatables-rails (3.4.0) actionpack (>= 3.1) jquery-rails railties (>= 3.1) sass-rails - jquery-rails (4.5.0) + jquery-rails (4.6.0) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-ui-rails (6.0.1) railties (>= 3.2.16) - json (2.6.2) - json-canonicalization (0.3.0) + json (2.6.3) + json-canonicalization (0.3.2) json-ld (3.1.10) htmlentities (~> 4.3) json-canonicalization (~> 0.2) @@ -668,12 +691,12 @@ GEM json-ld-preloaded (3.1.6) json-ld (~> 3.1) rdf (~> 3.1) - json-schema (3.0.0) + json-schema (4.0.0) addressable (>= 2.8) jsonlint (0.3.0) oj (~> 3) optimist (~> 3) - jwt (2.7.0) + jwt (2.7.1) kaminari (1.2.2) activesupport (>= 4.1.0) kaminari-actionview (= 1.2.2) @@ -754,11 +777,14 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.18.0) + loofah (2.21.3) crass (~> 1.0.2) - nokogiri (>= 1.5.9) - mail (2.7.1) + nokogiri (>= 1.12.0) + mail (2.8.1) mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp mailboxer (0.15.1) carrierwave (>= 0.5.8) rails (>= 5.0.0) @@ -779,10 +805,10 @@ GEM method_source (1.0.0) mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2022.0105) - mini_magick (4.11.0) + mime-types-data (3.2023.0218.1) + mini_magick (4.12.0) mini_mime (1.1.2) - minitest (5.16.3) + minitest (5.18.1) mods (2.4.1) edtf iso-639 @@ -790,23 +816,32 @@ GEM nom-xml (~> 1.0) multi_json (1.15.0) multi_xml (0.6.0) - multipart-post (2.2.3) + multipart-post (2.3.0) namae (1.1.1) negative_captcha (0.5) actionpack activesupport nest (3.2.0) redic - net-http-persistent (4.0.1) + net-http-persistent (4.0.2) connection_pool (~> 2.2) - nio4r (2.5.8) + net-imap (0.3.6) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.1) + timeout + net-smtp (0.3.3) + net-protocol + nio4r (2.5.9) noid (0.9.0) noid-rails (3.0.3) actionpack (>= 5.0.0, < 7) noid (~> 0.9) - nokogiri (1.13.8-aarch64-linux) + nokogiri (1.13.10-aarch64-linux) racc (~> 1.4) - nokogiri (1.13.8-x86_64-linux) + nokogiri (1.13.10-x86_64-linux) racc (~> 1.4) nom-xml (1.2.0) i18n @@ -819,14 +854,14 @@ GEM oauth-tty (~> 1.0, >= 1.0.1) snaky_hash (~> 2.0) version_gem (~> 1.1) - oauth-tty (1.0.3) - version_gem (~> 1.1) - oauth2 (1.4.10) + oauth-tty (1.0.5) + version_gem (~> 1.1, >= 1.1.1) + oauth2 (1.4.11) faraday (>= 0.17.3, < 3.0) jwt (>= 1.0, < 3.0) multi_json (~> 1.3) multi_xml (~> 0.5) - rack (>= 1.2, < 3) + rack (>= 1.2, < 4) octokit (4.22.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) @@ -885,22 +920,22 @@ GEM pry-byebug (3.10.1) byebug (~> 11.0) pry (>= 0.13, < 0.15) - psych (3.3.2) + psych (3.3.4) public_suffix (2.0.5) puma (4.3.12) nio4r (~> 2.0) - qa (5.9.0) + qa (5.10.0) activerecord-import deprecation faraday (< 3.0, != 2.0.0) geocoder ldpath nokogiri (~> 1.6) - rails (>= 5.0, < 6.2) + rails (>= 5.0, < 7.1) rdf raabro (1.4.0) - racc (1.6.0) - rack (2.2.4) + racc (1.7.1) + rack (2.2.7) rack-test (0.7.0) rack (>= 1.0, < 3) rails (5.2.8.1) @@ -920,16 +955,19 @@ GEM actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) activesupport (>= 5.0.1.rc1) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) + rails-dom-testing (2.1.1) + activesupport (>= 5.0.0) + minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.4.3) - loofah (~> 2.3) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) rails-i18n (5.1.3) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) - rails_autolink (1.1.6) - rails (> 3.1) + rails_autolink (1.1.8) + actionview (> 3.1) + activesupport (> 3.1) + railties (> 3.1) rails_best_practices (1.23.1) activesupport code_analyzer (~> 0.5.5) @@ -1013,16 +1051,16 @@ GEM redcarpet (3.6.0) redic (1.5.3) hiredis - redis (4.6.0) - redis-namespace (1.10.0) + redis (4.8.1) + redis-namespace (1.11.0) redis (>= 4) - redlock (1.3.0) + redlock (1.3.2) redis (>= 3.0.0, < 6.0) reform (2.5.0) disposable (>= 0.4.2, < 0.5.0) representable (>= 2.4.0, < 3.1.0) uber (< 0.2.0) - reform-rails (0.2.3) + reform-rails (0.2.5) activemodel (>= 5.0) reform (>= 2.3.1, < 3.0.0) regexp_parser (2.5.0) @@ -1091,7 +1129,7 @@ GEM json multipart-post oauth2 - ruby-progressbar (1.11.0) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) ruby_dep (1.5.0) ruby_parser (3.19.1) @@ -1161,7 +1199,7 @@ GEM faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simple_form (5.1.0) + simple_form (5.2.0) actionpack (>= 5.2) activemodel (>= 5.2) simplecov (0.16.1) @@ -1169,11 +1207,11 @@ GEM json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.2) - slop (4.9.2) + slop (4.10.1) smart_properties (1.17.0) - snaky_hash (2.0.0) + snaky_hash (2.0.1) hashie - version_gem (~> 1.1) + version_gem (~> 1.1, >= 1.1.1) solr_wrapper (2.2.0) faraday retriable @@ -1206,11 +1244,11 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - ssrf_filter (1.1.1) + ssrf_filter (1.0.8) sxp (1.1.0) rdf (~> 3.1) sync (0.5.0) - temple (0.8.2) + temple (0.10.2) term-ansicolor (1.7.1) tins (~> 1.0) terminal-table (3.0.2) @@ -1219,13 +1257,14 @@ GEM execjs (>= 0.3.0, < 3) tether-rails (1.4.0) rails (>= 3.1) - thor (1.2.1) + thor (1.2.2) thread (0.2.2) thread_safe (0.3.6) - tilt (2.0.11) + tilt (2.2.0) + timeout (0.4.0) tins (1.31.1) sync - tinymce-rails (5.10.5) + tinymce-rails (5.10.7.1) railties (>= 3.1.1) travis-release (0.0.4) bundler @@ -1239,11 +1278,11 @@ GEM railties (>= 3.1) typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.10) + tzinfo (1.2.11) thread_safe (~> 0.1) uber (0.1.0) unicode-display_width (1.8.0) - unicode-types (1.7.0) + unicode-types (1.8.0) unicode_utils (1.4.0) validatable (1.6.7) valkyrie (2.2.0) @@ -1261,7 +1300,7 @@ GEM rdf-vocab reform (~> 2.2) reform-rails - version_gem (1.1.0) + version_gem (1.1.3) warden (1.2.9) rack (>= 2.0.9) web-console (3.7.0) @@ -1283,6 +1322,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) + zeitwerk (2.6.8) PLATFORMS aarch64-linux-musl @@ -1293,6 +1333,7 @@ DEPENDENCIES active_elastic_job activejob-scheduler! activerecord-nulldb-adapter + addressable (= 2.8.1) apartment aws-sdk-sqs blacklight (~> 6.7) @@ -1322,7 +1363,7 @@ DEPENDENCIES fcrepo_wrapper (~> 0.4) flipflop (~> 2.3) flutie - hyrax (~> 3.5.0) + hyrax! hyrax-doi! hyrax-iiif_av! i18n-debug diff --git a/app/models/concerns/account_settings.rb b/app/models/concerns/account_settings.rb index f64e0f8a7..511b38c01 100644 --- a/app/models/concerns/account_settings.rb +++ b/app/models/concerns/account_settings.rb @@ -17,28 +17,28 @@ module AccountSettings setting :allow_signup, type: 'boolean', default: true setting :allow_downloads, type: 'boolean', default: true setting :auth_provider, type: 'string' + setting :analytics_provider, type: 'string' setting :bulkrax_validations, type: 'boolean', disabled: true setting :cache_api, type: 'boolean', default: false setting :contact_email, type: 'string', default: 'consortial-ir@palci.org' setting :contact_email_to, type: 'string', default: 'consortial-ir@palci.org' setting :doi_reader, type: 'boolean', default: false setting :doi_writer, type: 'boolean', default: false - setting :file_acl, type: 'boolean', default: true, private: true setting :email_format, type: 'array' setting :email_subject_prefix, type: 'string' setting :enable_oai_metadata, type: 'string', disabled: true + setting :file_acl, type: 'boolean', default: true, private: true setting :file_size_limit, type: 'string', default: 5.gigabytes.to_s - setting :google_analytics_id, type: 'string' - setting :google_scholarly_work_types, type: 'array', disabled: true setting :geonames_username, type: 'string', default: '' - setting :gtm_id, type: 'string' setting :google_analytics_id, type: 'string' setting :google_oauth_app_name, type: 'string' setting :google_oauth_app_version, type: 'string' - setting :google_oauth_private_key_value, type: 'string' + setting :google_oauth_client_email, type: 'string' setting :google_oauth_private_key_path, type: 'string' setting :google_oauth_private_key_secret, type: 'string' - setting :google_oauth_client_email, type: 'string' + setting :google_oauth_private_key_value, type: 'string' + setting :google_scholarly_work_types, type: 'array', disabled: true + setting :gtm_id, type: 'string' setting :locale_name, type: 'string', disabled: true setting :monthly_email_list, type: 'array', disabled: true setting :oai_admin_email, type: 'string', default: 'changeme@example.com' @@ -169,6 +169,7 @@ def reload_library_config config.google_analytics_id = google_analytics_id if google_analytics_id.present? config.geonames_username = geonames_username config.uploader[:maxFileSize] = file_size_limit + config.analytics_provider = analytics_provider if analytics_provider.present? end reload_analytics diff --git a/app/models/generic_work.rb b/app/models/generic_work.rb index 760268136..b76dae487 100644 --- a/app/models/generic_work.rb +++ b/app/models/generic_work.rb @@ -42,4 +42,5 @@ class GenericWork < ActiveFedora::Base class_attribute :controlled_properties self.controlled_properties = [:based_near] accepts_nested_attributes_for :based_near, reject_if: id_blank, allow_destroy: true + self.indexer = GenericWorkIndexer end diff --git a/app/services/hyrax/solr_query_service_decorator.rb b/app/services/hyrax/solr_query_service_decorator.rb index e7e5d5adc..32bfc6c33 100644 --- a/app/services/hyrax/solr_query_service_decorator.rb +++ b/app/services/hyrax/solr_query_service_decorator.rb @@ -1,11 +1,11 @@ -# OVERRIDE: Hyrax 3.4.1 changes GET request to POST to allow for larger query size +# OVERRIDE: Hyrax 3.6.0 changes GET request to POST to allow for larger query size # frozen_string_literal: true module Hyrax module SolrQueryServiceDecorator - def get - solr_service.post(build) + def get(*args) + solr_service.post(build, *args) end end end diff --git a/app/services/hyrax/workflow/permission_query.rb b/app/services/hyrax/workflow/permission_query.rb index 8ac3f2ecd..d04b4b135 100644 --- a/app/services/hyrax/workflow/permission_query.rb +++ b/app/services/hyrax/workflow/permission_query.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# OVERRIDE Hyrax v3.4.2 Expand functionality for Groups with Roles Feature +# OVERRIDE Hyrax v3.6.0 Expand functionality for Groups with Roles Feature # @see https://github.com/samvera/hyku/wiki/Groups-with-Roles-Feature # rubocop:disable Metrics/ModuleLength module Hyrax @@ -73,7 +73,8 @@ def scope_permitted_workflow_actions_available_for_current_state(user:, entity:) # @param role [Object] that can be converted into a Sipity::Role # @return [ActiveRecord::Relation] augmented with # - def scope_agents_associated_with_entity_and_role(entity:, role:) # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/MethodLength + def scope_agents_associated_with_entity_and_role(entity:, role:) entity = Sipity::Entity(entity) role = Sipity::Role(role) @@ -196,7 +197,8 @@ def scope_processing_agents_for(user:) # # @return [ActiveRecord::Relation] # - def scope_entities_for_the_user(user:) # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/AbcSize, Metrics/MethodLength + def scope_entities_for_the_user(user:, page: 1, per_page: nil, workflow_state_filter: nil) entities = Sipity::Entity.arel_table workflow_state_actions = Sipity::WorkflowStateAction.arel_table workflow_states = Sipity::WorkflowState.arel_table @@ -229,13 +231,34 @@ def scope_entities_for_the_user(user:) # rubocop:disable Metrics/AbcSize entity_specific_where = where_builder.call(entity_responsibilities).and( entities[:id].eq(entity_responsibilities[:entity_id]) ) + entity_specific_where = filter_by_workflow_state(entity_specific_where, workflow_states, workflow_state_filter) if workflow_state_filter workflow_specific_where = where_builder.call(workflow_responsibilities) + workflow_specific_where = filter_by_workflow_state(workflow_specific_where, workflow_states, workflow_state_filter) if workflow_state_filter - Sipity::Entity.where( + result = Sipity::Entity.where( entities[:id].in(entity_specific_joins.where(entity_specific_where)) .or(entities[:id].in(workflow_specific_joins.where(workflow_specific_where))) ) + # Apply paging if provided + if per_page.nil? + result + else + result.page(page).per(per_page) + end end + + # @api private + # + # Append a filter by workflow state name to the provided where builder. + # If the filter begins with a !, it will filter to states not equal to the filter. + def filter_by_workflow_state(where_builder, workflow_states, filter) + if filter.start_with?('!') + where_builder.and(workflow_states[:name].not_eq(filter[1..-1])) + else + where_builder.and(workflow_states[:name].eq(filter)) + end + end + # rubocop:enable Metrics/AbcSize, Metrics/MethodLength # @api public @@ -251,7 +274,8 @@ def scope_entities_for_the_user(user:) # rubocop:disable Metrics/AbcSize # @param entity an object that can be converted into a Sipity::Entity # @return [ActiveRecord::Relation] # - def scope_users_for_entity_and_roles(entity:, roles:) # rubocop:disable Metrics/AbcSize + # rubocop:disable Metrics/AbcSize, Metrics/MethodLength + def scope_users_for_entity_and_roles(entity:, roles:) entity = Sipity::Entity(entity) role_ids = Array.wrap(roles).map { |role| Sipity::Role(role).id } user_polymorphic_type = ::User.base_class @@ -347,7 +371,7 @@ def scope_processing_workflow_roles_for_user_and_workflow(user:, workflow:) # @param user [User] # @param entity an object that can be converted into a Sipity::Entity # @return [ActiveRecord::Relation] - def scope_processing_workflow_roles_for_user_and_entity_specific(user:, entity:) + def scope_processing_workflow_roles_for_user_and_entity_specific(user:, entity:) # rubocop:disable Metrics/MethodLength entity = Sipity::Entity(entity) agent_scope = scope_processing_agents_for(user: user) @@ -386,7 +410,7 @@ def scope_processing_workflow_roles_for_user_and_entity_specific(user:, entity:) # @param entity an object that can be converted into a Sipity::Entity # @return [ActiveRecord::Relation] # - def scope_permitted_entity_workflow_state_actions(user:, entity:) + def scope_permitted_entity_workflow_state_actions(user:, entity:) # rubocop:disable Metrics/MethodLength entity = Sipity::Entity(entity) workflow_state_actions = Sipity::WorkflowStateAction permissions = Sipity::WorkflowStateActionPermission diff --git a/app/views/hyrax/admin/workflows/index.html.erb b/app/views/hyrax/admin/workflows/index.html.erb index 7a163562b..d13cc4cc5 100644 --- a/app/views/hyrax/admin/workflows/index.html.erb +++ b/app/views/hyrax/admin/workflows/index.html.erb @@ -1,6 +1,7 @@ -<%# OVERRIDE: Hyrax v3.5.0 to show the user/depositor's display_name if available %> +<%# OVERRIDE: Hyrax v3.6.0 to show the user/depositor's display_name if available %> + <% provide :page_header do %> -

<%= t('.header') %>

+

<%= t('.header') %>

<% end %>
@@ -90,6 +91,38 @@
+

<%= t('.works_listing') %>

+ + + + + + + + + + + <% @response.docs.each do |document| %> + + + + + + + <% end %> + +
<%= t(".heading.work") %><%= t(".heading.depositor") %><%= t(".heading.submission_date") %><%= t(".heading.status") %>
+ <%= link_to document, [main_app, document] %> + + <%# OVERRIDE: show the user/depositor's display_name if available %> + <% user = User.find_by(email: document.depositor) %> + <%= user&.display_name.presence %> + + <%= document.date_modified %> + + <%= document.workflow_state %> +
+ <%= render 'hyrax/my/results_pagination' %> diff --git a/config/analytics.yml b/config/analytics.yml index 8cbef1c9b..b530a30da 100644 --- a/config/analytics.yml +++ b/config/analytics.yml @@ -2,8 +2,8 @@ # To integrate your app with Google Analytics, uncomment the lines below and add your API key information. # analytics: - google: - analytics_id: <%= ENV.fetch('GOOGLE_ANALYTICS_ID', '') %> + ga4: + analytics_id: <%= ENV['GOOGLE_ANALYTICS_ID'] %> app_name: <%= ENV.fetch('GOOGLE_OAUTH_APP_NAME', '') %> app_version: <%= ENV.fetch('GOOGLE_OAUTH_APP_VERSION', '') %> privkey_value: <%= ENV.fetch('GOOGLE_OAUTH_PRIVATE_KEY_VALUE', '') %> diff --git a/config/initializers/hyrax.rb b/config/initializers/hyrax.rb index c7e0a7af3..6a2fc4740 100644 --- a/config/initializers/hyrax.rb +++ b/config/initializers/hyrax.rb @@ -29,10 +29,7 @@ # Requires a Google Analytics id and OAuth2 keyfile. See README for more info # This is set by account settings # config.analytics = false - - # Specify a Google Analytics tracking ID to gather usage statistics - # This is set by account settings - # config.google_analytics_id = 'UA-99999999-1' + config.analytics_provider = ENV.fetch('HYRAX_ANALYTICS_PROVIDER', 'ga4') # Specify a date you wish to start collecting Google Analytic statistics for. config.analytic_start_date = DateTime.new(2021,9,13) diff --git a/ops/demo-deploy.tmpl.yaml b/ops/demo-deploy.tmpl.yaml index 859302b00..e2bc38cfc 100644 --- a/ops/demo-deploy.tmpl.yaml +++ b/ops/demo-deploy.tmpl.yaml @@ -106,6 +106,8 @@ extraEnvVars: &envVars value: commons-archive.org - name: HYRAX_ACTIVE_JOB_QUEUE value: sidekiq + - name: HYRAX_ANALYTICS_PROVIDER + value: ga4 - name: HYRAX_FITS_PATH value: /app/fits/fits.sh - name: INITIAL_ADMIN_EMAIL diff --git a/ops/staging-deploy.tmpl.yaml b/ops/staging-deploy.tmpl.yaml index aad152149..c6abf8eb5 100644 --- a/ops/staging-deploy.tmpl.yaml +++ b/ops/staging-deploy.tmpl.yaml @@ -108,6 +108,8 @@ extraEnvVars: &envVars value: palni-palci-staging.notch8.cloud - name: HYRAX_ACTIVE_JOB_QUEUE value: sidekiq + - name: HYRAX_ANALYTICS_PROVIDER + value: ga4 - name: HYRAX_FITS_PATH value: /app/fits/fits.sh - name: INITIAL_ADMIN_EMAIL @@ -215,4 +217,4 @@ externalPostgresql: externalSolrHost: solr.staging-solr.svc.cluster.local externalSolrUser: admin externalSolrCollection: "palni-palci-staging" -externalSolrPassword: $SOLR_ADMIN_PASSWORD \ No newline at end of file +externalSolrPassword: $SOLR_ADMIN_PASSWORD