diff --git a/Gemfile b/Gemfile index 971cd88175..83213c2ca4 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,7 @@ gem 'blacklight_range_limit', '~> 8.5' gem 'bolognese', '>= 1.9.10' gem 'bootstrap', '~> 4.6' gem 'bootstrap-datepicker-rails' -gem 'bulkrax', '~> 9.4' +gem 'bulkrax', github: 'samvera/bulkrax', branch: 'bulkrax-mappings-ui' gem 'byebug', group: %i[development test] gem 'capybara', group: %i[test] gem 'capybara-screenshot', '~> 1.0', group: %i[test] diff --git a/Gemfile.lock b/Gemfile.lock index 3ea0d48bf5..c17e225915 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -38,6 +38,28 @@ GIT iiif_manifest (> 0.5) rails (>= 5.1, < 8.0) +GIT + remote: https://github.com/samvera/bulkrax.git + revision: 2bac6feffd8bcf282a6076c5e60723b8dc18816a + branch: bulkrax-mappings-ui + specs: + bulkrax (9.4.0) + bagit (~> 0.6.0) + coderay + denormalize_fields + iso8601 (~> 0.9.0) + kaminari + language_list (~> 1.2, >= 1.2.1) + libxml-ruby (~> 5.0) + loofah (>= 2.2.3) + marcel + oai (>= 0.4, < 2.x) + rack (>= 2.0.6) + rails (>= 5.1.6, < 8.0.0) + rdf (>= 2.0.2, < 4.0) + rubyzip + simple_form + GIT remote: https://github.com/samvera/hyrax.git revision: 03ec05c112421670b9d8bfd190beab642e736e77 @@ -379,22 +401,6 @@ GEM signet (~> 0.8) typhoeus builder (3.3.0) - bulkrax (9.4.0) - bagit (~> 0.6.0) - coderay - denormalize_fields - iso8601 (~> 0.9.0) - kaminari - language_list (~> 1.2, >= 1.2.1) - libxml-ruby (~> 5.0) - loofah (>= 2.2.3) - marcel - oai (>= 0.4, < 2.x) - rack (>= 2.0.6) - rails (>= 5.1.6, < 8.0.0) - rdf (>= 2.0.2, < 4.0) - rubyzip - simple_form byebug (12.0.0) cancancan (3.6.1) capybara (3.40.0) @@ -1667,7 +1673,7 @@ DEPENDENCIES bolognese (>= 1.9.10) bootstrap (~> 4.6) bootstrap-datepicker-rails - bulkrax (~> 9.4) + bulkrax! byebug capybara capybara-screenshot (~> 1.0) diff --git a/app/controllers/admin/field_mappings_controller.rb b/app/controllers/admin/field_mappings_controller.rb new file mode 100644 index 0000000000..1ecbce3ccd --- /dev/null +++ b/app/controllers/admin/field_mappings_controller.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module Admin + class FieldMappingsController < ::Bulkrax::FieldMappingsController + before_action -> { authorize! :manage, Site } + + helper_method :edit_field_mappings_path, :field_mappings_path + + def edit_field_mappings_path(**opts) + main_app.edit_admin_field_mappings_path(**opts) + end + + def field_mappings_path(**opts) + main_app.admin_field_mappings_path(**opts) + end + + protected + + def load_mappings + Bulkrax.field_mappings.deep_dup + end + + def save_mappings(hash) + account = Site.account + account.bulkrax_field_mappings = hash.to_json + account.save! + end + + def default_mappings + Hyku.default_bulkrax_field_mappings.deep_dup + end + end +end diff --git a/app/views/hyrax/dashboard/sidebar/_configuration.html.erb b/app/views/hyrax/dashboard/sidebar/_configuration.html.erb index 4d5e41d30a..66ed326e15 100644 --- a/app/views/hyrax/dashboard/sidebar/_configuration.html.erb +++ b/app/views/hyrax/dashboard/sidebar/_configuration.html.erb @@ -38,6 +38,9 @@ <%= menu.nav_link('/admin/work_types/edit', class: "nav-link", title: t('hyku.admin.work_types')) do %> <%= t('hyku.admin.work_types') %> <% end %> + <%= menu.nav_link(main_app.edit_admin_field_mappings_path, class: "nav-link", title: t('hyku.admin.field_mappings')) do %> + <%= t('hyku.admin.field_mappings') %> + <% end %> <% end %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index b3ced29e19..64843bec47 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -154,6 +154,7 @@ en: work_depositor: Can deposit Works into any Admin Set in this tenant. Can read, edit, and manage Embargoes / Leases for Works belonging to them work_editor: Can create, read, edit, and approve any Work in this tenant, as well as move Works between Admin Sets and manage Embargoes and Leases title: Administration + field_mappings: Bulkrax Field Mappings work_types: Available Work Types footer: admin_login: Administrator login diff --git a/config/routes.rb b/config/routes.rb index e3f9f6262d..4a258e19c3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -127,6 +127,7 @@ namespace :admin do resource :account, only: %i[edit update] resource :work_types, only: %i[edit update] + resource :field_mappings, only: %i[edit update] resources :users, only: [:index, :destroy] do post 'activate', on: :member delete 'remove_role/:role_id', on: :member, to: 'users#remove_role', as: :remove_role