Code Monkey home page Code Monkey logo

adventist_knapsack's Introduction

Table of Contents generated with DocToc

HykuKnapsack

Hyku Knapsack is a little wrapper around Hyku to make development and deployment easier. Primary goals of this project include making contributing back to the Hyku project easier and making upgrades a snap.

Introduction

Hyku is a Rails application that leverages Rails Engines and other gems to provide functionality. A Hyku Knapsack is also a Rails engine, but it integrates differently than other engines.

Precedence

In a traditional setup, a Rails' application's views, translations, and code supsedes all other gems and engines. However, we have setup Hyku Knapsack to have a higher load precedence than the underlying Hyku application.

The goal being that a Hyku Knapsack should make it easier to maintain, upgrade, and contribute fixes back to Hyku.

See Overrides for more discussion on working with a Hyku Knapsack.

Usage

Creating Your Knapsack

In working on a Hyku Knapsack, you want to be able to track changes in the upstream knapsack as well as make local changes for your application. Start by making a clone. You can do this by:

New Repository

In your Repository host of choice, create a new (and for now empty) repository.

  • $PROJECT_NAME must only contain letters, numbers and underscores due to a bundler limitation.
  • $NEW_REPO_URL is the location of your application's knapsack git project (e.g. https://github.com/my-org/my_org_knapsack)
git clone https://github.com/samvera-labs/hyku_knapsack $PROJECT_NAME_knapsack
cd $PROJECT_NAME_knapsack
git remote rename origin prime
git remote add origin $NEW_REPO_URL
git branch -M main
git push -u origin main

Naming the samvera-labs/hyku_knapsack as prime helps clarify what we mean. In conversations about Hyku instances, invariably we use the language of Prime to reflect what's in Samvera's repositories. By using that language for remotes, we help reinforce the concept that https://github.com/samvera/hyku is Hyku prime and https://github.com/samvera-labs/hyku_knapsack is Knapsack prime.

Fork on Github

If you choose to fork Knapsack, be aware that this will impact how you manage pull requests via Github. Namely as you submit PRs on your Fork, the UI might default to applying that to the fork's origin (e.g. Knapsack upstream).

To ease synchronization of your Knapsack and Knapsack “prime”, consider adding knapsack prime as a remote:

cd $PROJECT_NAME_knapsack
git remote add prime https://github.com/samvera-labs/hyku_knapsack

Hyku and HykuKnapsack

You run your Hyku application by way of the HykuKnapsack. As mentioned, the HykuKnapsack contains your application's relevant information for running an instance of Hyku.

There are two things you need to do:

Reserved Branch

Knapsack turns the assumptions of a Rails engine upside-down; the application overlays traditional engines, but Knapsack overlays the application. As such the Gemfile declared in Hyku does some bundler trickery.

In the $PROJECT_NAME_knapsack directory, you need to run the following:

git fetch prime
git checkout prime/required_for_knapsack_instances
git switch -c required_for_knapsack_instances

For Hyku to build with Knapsack, we need a local branch named required_for_knapsack_instances. Note: As we work more with Knapsack maintenance there may be improvements to this shim.

Hyku Submodule

A newly cloned knapsack will have an empty ./hyrax-webapp directory. That is where the Hyku application will exist. The version of Hyku is managed via a Git submodule.

To bring that application into your knapsack, you will need to initialize the Hyku submodule:

❯ git submodule init
Submodule 'hyrax-webapp' (https://github.com/samvera/hyku.git) registered for path 'hyrax-webapp'

Then update the submodule to clone the remote Hyku repository into ./hyrax-webapp. The KNAPSACK-SPECIFIED-HYKU-REPOSITORY-SHA is managed within the Hyku Knapsack (via Git submodules).

❯ git submodule update
Cloning into '/path/to/$PROJECT_NAME_knapsack/hyrax-webapp'...
Submodule path 'hyrax-webapp': checked out '<KNAPSACK-SPECIFIED-HYKU-REPOSITORY-SHA>'

The configuration of the submodule can be found in the ./.gitmodules file. During development, we've specified the submodule's branch (via git submodule set-branch --branch <NAME> -- ./hyrax-webapp).

Below is an example of our Adventist Knapsack submodule.

❯ cat .gitmodules
[submodule "hyrax-webapp"]
	path = hyrax-webapp
	url = https://github.com/samvera/hyku.git
	branch = adventist_dev

When you want to bring down an updated version of your Hyku submodule, use the following:

> git submodule update --remote

This will checkout the submodule to the HEAD of the specified branch.

Overrides

Before overriding anything, please think hard (or ask the community) about whether what you are working on is a bug or feature that can apply to Hyku itself. If it is, please make a branch in your Hyku checkout (./hyrax-webapp) and do the work there. See here for more information about working with Hyku branches in your Knapsack

Adding decorators to override features is fairly simple. We do recommend some best practices found here

Any file with _decorator.rb in the app or lib directory will automatically be loaded along with any classes in the app directory.

Deployment scripts

Deployment code can be added as needed.

Theme files

Theme files (views, css, etc) can be added in the the Knapsack. We recommend adding an override comment as described here

Gems

It can be useful to add additional gems to the bundle. This can be done w/o editing Hyku by adding them to the [./bundler.d/example.rb](./bundler.d/example.rb]. See the bundler-inject documentation for more details on overriding and adding gems.

NOTE: Do not add gems to the gemspec nor Gemfile. When you add to the knapsack Gemfile/gemspec, when you bundle, you'll update the Hyku Gemfile; which will mean you might be updating Hyku prime with knapsack installation specific dependencies. Instead add gems to ./bundler.d/example.rb.

Converting a Fork of Hyku Prime to a Knapsack

Prior to Hyku Knapsack, organizations would likely clone Hyku and begin changing the code to reflect their specific needs. The result was that the clone would often drift away from Samvera Hyku version. This drift created challenges in reconciling what you had changed locally as well as how you could easily contribute some of your changes upstream to Samvera's Hyku.

With Hyku Knapsack, the goal is three-fold:

  1. To isolate the upstream Samvera Hyku code from your local modifications. This isolation is via the ./hyrax-webapp submodule.
  2. To provide a clear and separate space for extending/overriding Hyku functionality.
  3. To provide a cleaner pathway for upgrading the underlying Hyku application; for things such as security updates, bug fixes, and upstream enhancements.

From those goals, we can begin to see what we want in our Hyku Knapsack:

  1. Files that are not found in Hyku
  2. Or files that are different from what is in Hyku (and thus will be loaded at a higher precedence)

Assuming you're working from a fork of Samvera's Hyku repository, these are some general steps. First clone the Hyku Knapsack (see the Usage section). You'll also want to initialize the git submodule. Point the ./hyrax-webapp to the branch/SHA of Samvera's Hyku that you want to use; Note: that version must include a gem 'hyku_knapsack' declaration (e.g. introduced in 7853fe5d).

You'll also want to have a local copy of your Hyku application.

You can then use bin/knapsacker to generate a list of files that need review. That will give you a list of:

  • Files in your Hyku that are exact duplicates of upstream Hyku file (prefix with =)
  • Files that are in your Hyku but not in upstream Hyku (prefixed with +)
  • Files that are changed in your Hyku relative to upstream Hyku (prefix with Δ)

You can pipe that output into a file and begin working on reviewing and moving files into the Knapsack. This is not an easy to automate task, after all we're paying down considerable tech debt.

Once you've moved over the files, you'll want to boot up your Knapsack and then work through your test plan.

The bin/knapsacker is general purpose. I have used it to compare one non-Knapsack Hyku instance against Samvera's Hyku. I have also used it to compare a Knapsack's file against it's submodule Hyku instance.

Converting a Fork of Hyku to a Knapsack

Prior to Hyku Knapsack, organizations would likely clone Hyku and begin changing the code to reflect their specific needs. The result was that the clone would often drift away from Samvera Hyku version. This drift created challenges in reconciling what you had changed locally as well as how you could easily contribute some of your changes upstream to Samvera's Hyku.

With Hyku Knapsack, the goal is three-fold:

  1. To isolate the upstream Samvera Hyku code from your local modifications. This isolation is via the ./hyrax-webapp submodule.
  2. To provide a clear and separate space for extending/overriding Hyku functionality.
  3. To provide a cleaner pathway for upgrading the underlying Hyku application; for things such as security updates, bug fixes, and upstream enhancements.

From those goals, we can begin to see what we want in our Hyku Knapsack:

  1. Files that are not found in Hyku
  2. Or files that are different from what is in Hyku (and thus will be loaded at a higher precedence)

Assuming you're working from a fork of Samvera's Hyku repository, these are some general steps. First clone the Hyku Knapsack (see the Usage section). You'll also want to initialize the git submodule. Point the ./hyrax-webapp to the branch/SHA of Samvera's Hyku that you want to use; Note: that version must include a gem 'hyku_knapsack' declaration (e.g. introduced in 7853fe5d).

You'll also want to have a local copy of your Hyku application.

You can then use bin/knapsacker to generate a list of files that need review. That will give you a list of:

  • Files in your Hyku that are exact duplicates of upstream Hyku file (prefix with =)
  • Files that are in your Hyku but not in upstream Hyku (prefixed with +)
  • Files that are changed in your Hyku relative to upstream Hyku (prefix with Δ)

You can pipe that output into a file and begin working on reviewing and moving files into the Knapsack. This is not an easy to automate task, after all we're paying down considerable tech debt.

Once you've moved over the files, you'll want to boot up your Knapsack and then work through your test plan.

The bin/knapsacker is general purpose. I have used it to compare one non-Knapsack Hyku instance against Samvera's Hyku. I have also used it to compare a Knapsack's file against it's submodule Hyku instance.

Installation

If not using a current version, add this line to Hyku's Gemfile:

gem "hyku_knapsack", github: 'samvera-labs/hyku_knapsack', branch: 'main'

And then execute:

$ bundle

Contributing

Contribution directions go here.

License

The gem is available as open source under the terms of the Apache 2.0.

adventist_knapsack's People

Contributors

shanalmoore avatar jeremyf avatar laritakr avatar orangewolf avatar kirkkwang avatar sjproctor avatar aprilrieger avatar k8sewell avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

adventist_knapsack's Issues

BUG: Edit work (from show page) has results in error

The custom URL work created a find method in the model. When you create a new work, you are redirected to the show page that uses the custom URL (slug).

When you click the 'Edit' button, you get a Blacklight error that the file cannot be found. ActiveFedora::Base.find(slug) returns and cannot find error

Still getting an error after updated slug work
Screen_Shot_2021-08-05_at_12.08.26_PM

Update home page text per tenant

Summary

I cannot find where to customize the circled message below. Each tenant will need to be able to set this to a custom value.

If this must be manually changed in the back end, we need SDAPI.B2 to read:

"Search the Seventh-day Adventist Periodical and Obituary Indexes"
image

Acceptance Criteria

  • On SDAPI.B2 text in photo should read: "Search the Seventh-day Adventist Periodical and Obituary Indexes"
  • details on how to change this in the future should be included in the ticket.

PDF Support - Server access for Eric

Support for Eric self-implementing PDFTron for PDF viewing is part of our contract (up to 5 hours).

  • Share with Eric the usernames and passwords to the servers so that he can explore the backend of the system and know how best to build the viewer into it.
  • Keep an eye for questions/communications from Eric so he can move this work forward

Script to pull from solr

Summary

Create a chron job that runs daily pulling the following fields from solr:

  • hyku identifier
  • ark_ID
  • Time stamp field on solr

Run job once and then confirm that it would work to run daily and not slow down the system.

Tasks

  • Create script for initial query (see scientist-softserv/adventist-dl#140)
  • Determine what to do with output of script
  • Implement decision regarding output of script
  • Run script on production; review utilization details for when the script was running
  • Add script to crontab

Clean Up Hyrax Overrides

Low priority:

Several hyrax files have been copied over in the push to complete this work.

Clean up would include only copying over the methods we override from Hyrax.

Migration Assistance

Summary

Notch8 will assist Andrews staff in migrating content using the Bulkrax import/export gem including works and associated metadata. Andrews will use out-of-the-box worktypes to limit the amount of customization required, but acknowledges that the diversity of the collections will require expert assistance. This block of time gives both Notch8 and Andrews the flexibility to use this effort as required and to be determined later.

Phase Two is scoped initially at one 40-hour block of hours priced at $6,000.

map aark id to identifier field for outgoing oai feed

Email from Eric:

"Would it be an easy configuration to add the identifier(s) element to our outgoing OAI feed? Ideally all fields on our spreadsheet would be represented eventually. But right now, if you can include our aark_id in ListRecords, I would be able to create a process by which our OAI server only sends new, updated and deleted records to Bulkrax. This would allow us to easily create small, incremental imports that could be managed and restarted more easily than a large single import that trys to ingest all records at once.

Given time constraints, and the fact that SDAPI is pretty straightforward, I am for now, mainly wanting this feature for the ADL tenant, where imports will be processing many large files with potentially long ingest times per item.

If an aark_id does not exist for a work, of course it is fine if that field is missing or blank. This will allow our system to mint new aark_ids."

TODO:

Due to the limitations of the blacklight oai provider gem, aark_id will get mapped to the identifier key. If a resource has an aark_id, it will get displayed in the outgoing feed as "resource identifier"

Screen_Shot_2021-11-24_at_11.01.42_AM

Add metadata to the Collections model so that it is consistent with the Journal Article worktype

Summary

While checking the exporter we realized that the collection model did not have all the metadata that the works have. Though collections typically have less metadata, we decided to import with a collection/work relationship instead of a parent/child relationship to allow for a better user experience on future work. This has resulted in collections in hyku not having all the metadata that is available in the Adventist system.

Acceptance Criteria

Sites or down

Both sites are down. If this is expected, just let us know. Thanks.

image

Importer failing on invalid remote files

Original from Katherine

We've been testing the OAI importer on production with daily attempts to upload 100 works. Consistently for the past few days we've gotten results that say 83 of the works failed due to "NoMethodError - undefined method `keys' for nil:NilClass." Can you please advise if this error falls under what this ticket will fix?

moved from #594

BUG: Works are being created twice with both the ID and Slug

In the custom URL work, we are saving the work using the slug as the id. However, somewhere (probably in the actor stack), the file is being saved and it bypasses the before_save method that creates the slug.

Works are being created generated id for the id. They are then being saved with the slug as the ID. One of these works has attachments and one does not.

I tried to override the save method in the model and call the slug method there, but that did not solve the issue.

Importer says imported, but no work created

Original from Katherine

Within the same OAI daily book importer, 13 works say they are completed, but they do not actually import. A green check mark shows in the importer log, but the work isn't in the repository and below you can see the error message that populates instead of the item link.
Again, I'm adding this issue as a comment here because I'm hoping it's part of what Ticket 90 will fix. If I'm wrong, I'll pull it out and make a new ticket. What do you think? Thanks!

Succeeded At: 2022-03-01 21:41:49 UTC

Importer: oai.adl.book.daily

Item Link: Item has not yet been imported successfully

Testing on Advanced Search

Summary

With the addition of the new work types we need to go back and re-test advanced search. This spreadsheet has all of the fields showing on advanced search, and all of the work types. Create or modify a work with all fields for each work type and add a different string/date for each that is recorded in the spreadsheet. Then check that they each pull up in advanced search.

https://docs.google.com/spreadsheets/d/1EL2u_nT5R0JuPwmzRuKoTXntFzNoWHKDhZBf7BhwrsU/edit#gid=0

Create a new ticket if anything fails.

Changes to SDAPI works show page

Summary

Here is an example of what the item view should look like on SDAPI

image__10_

Acceptance Criteria

(All Tenants) - this has been moved to a separate ticket.

  • "Journal Article" (or worktype indicator) should not show next to the article
  • Remove 'Public' badge and other tags from showing on the public display
  • Remove 'owner', and 'date_created (sort date)' on screen visibility. Should still be available on Advanced Search and sort, etc. We can refine this more as we use the system. Don't make dramatic changes here unless they seem warranted.
  • First three items after Title are Author, Periodical , Issue Date, Subject. Last fields are Bibliographic Citation and Source. All other fields should be in between. (Journal Article Worktype)
  • metadata rows should have a class name that corresponds to the field so that css can be customized based on the field.
  • copyright should not have a comma in it. Should not be bold. Should be a narrow row and not a wide row.
  • background on the metadata fields should all be white (no alternating bars) with a simple faint line separating them.

(SDAPI Only)

  • remove social media icons
  • The bottom ADL logo should be small and in a relatively narrow row as shown in photo

Updates to search index page and Item summary view - SDapi tenant

Summary

We need to remove "Resource type" and "Owner" from both facets and the item summary in the list as well as the full page item view.

We need to add "Source" and "Description" to all metadata views

"Source" should be on on facets and advanced search.

We need to relabel "Part Of" to read "Periodical"

Follow up

Here is the layout for the search display. Only minor changes here. Do note that we need to show author first if it is available. I did not include "author" in the item mockup, but it should be the first field in the list there as well.

We need to show the description field after the subject on this both screens. It can be limited to a certain width with "...." if it is longer (using the CSS trick you already use for our metadata). For obituary entries, the description is where we have the birth and death dates.

image__10_

image

Acceptance Criteria

(All Tenants) - this section has been split onto a separate ticket: #587

  • Source should be added to item view page
  • metadata order should be - Title, Author, Periodical, Issue date, Subject, Description.
  • Periodical and Source should be shown on the search index facets
  • Only in Journal article work type: On the facet list, the label "Part of" should read 'Periodical'

(Only SDAPI tenant)

  • Resource Type does not appear in the facets
  • Resource type and owner do not appear in the metadata on the search index page
  • Resource Type and Owner should be removed from the item view page.
  • Remove thumbnail
  • Move metadata to the left

Change " Part Of" label to read "Publisher" on Journal arictle worktype

Summary

Earlier I submitted a request to change the "Part Of" label to read "Publisher" on SDAPI. Since this has not been done, I am wondering. Did your team discover that changing the label in SDAPI would also change it for ADL, and perhaps that explains why it is not done yet? I have looked at the two sites, and I think that if we can limit this rename to the Journal Article work type we should be safe, even if the change bleeds into all tenants on the box. If there are other concerns, let's talk.

This is medium priority. As it stands it is comprehensible. My objective is to bring the new site into relative alignment with what users see today on the legacy site, in terms of metadata labels.

image__2_

Issue with Solr...

Summary

Something is not right in how solr is set up on teh app. It is blocking the creation of new tenants. There is also an issue with creating users, as well as search. And it is blocking Lea Ann from spinning up the app.

If any of these issues are not related to one problem split this into smaller tickets.

Acceptance Criteria

When this ticket is completed the following things should be possible:

  • Add new tenant
  • Add a user to a tenant
  • Add a new work/collection
  • search
  • Spin up project

Hide contents of masked collections

Summary

Adventist would like the ability to hide contents of collections the end user doesn't want or need to see.

Example: We have a collection called "genre:book" that the end user doesn't want or need to see

Acceptance Criteria

  • Ability to hide contents of collections

Notes

Confused how to fill this out? Check out the playbook

Fix Rubocop Offenses (Linting Errors) on Main

Currently there are 24 Rubocop Offenses (linting) failures on Main:

Offenses:
app/controllers/catalog_controller.rb:412:60: C: Layout/SpaceInsideHashLiteralBraces: Space inside } missing.
          { label: 'abstract', solr_field: 'abstract_tesim'},
                                                           ^
app/controllers/catalog_controller.rb:413:57: C: Layout/SpaceInsideHashLiteralBraces: Space inside } missing.
          { label: 'ark_id', solr_field: 'aark_id_tesim'},
                                                        ^
app/controllers/catalog_controller.rb:429:84: C: Layout/SpaceInsideHashLiteralBraces: Space inside } missing.
          { label: 'place_of_publication', solr_field: 'place_of_publication_tesim'},
                                                                                   ^
app/controllers/catalog_controller.rb:443:66: C: Style/TrailingCommaInLiteral: Avoid comma after the last item of an array.
          { label: 'modified', solr_field: 'date_modified_dtsi' },
                                                                 ^
app/models/redis_endpoint.rb:27:5: C: Style/RescueModifier: Avoid using rescue in its modifier form.
    app_url = Site.instance&.account&.cname if sidekiq_namespace rescue nil
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/blacklight/document/hyku_oai.rb:2:1: C: Layout/EmptyLineAfterMagicComment: Add an empty line after magic comments.
require 'builder'
^
app/models/concerns/blacklight/document/hyku_oai.rb:5:8: C: Style/ClassAndModuleChildren: Use nested module/class definitions instead of compact style.
module Blacklight::Document::HykuOai
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/blacklight/document/hyku_oai.rb:23:132: C: Metrics/LineLength: Line is too long. [134/120]
             'xsi:schemaLocation' => %(http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd)) do
                                                                                                                                   ^^^
app/models/concerns/blacklight/document/hyku_oai.rb:33:3: C: Style/Alias: Use alias instead of alias_method in a module body.
  alias_method :export_as_xml, :export_as_oai_hyku_xml
  ^^^^^^^^^^^^
app/models/concerns/blacklight/document/hyku_oai.rb:34:3: C: Style/Alias: Use alias instead of alias_method in a module body.
  alias_method :export_as_hyku_xml, :export_as_oai_hyku_xml
  ^^^^^^^^^^^^
app/models/concerns/blacklight/document/hyku_oai.rb:35:4: C: Layout/TrailingBlankLines: Final newline missing.
end
   
app/models/concerns/blacklight/document/dcmi_oai.rb:2:1: C: Layout/EmptyLineAfterMagicComment: Add an empty line after magic comments.
require 'builder'
^
app/models/concerns/blacklight/document/dcmi_oai.rb:5:8: C: Style/ClassAndModuleChildren: Use nested module/class definitions instead of compact style.
module Blacklight::Document::DcmiOai
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:18:5: C: Style/SymbolArray: Use %i or %I for an array of symbols.
    [ :abstract, :accessRights, :accrualMethod, :accrualPeriodicity, ...
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:18:6: C: Layout/SpaceInsideArrayLiteralBrackets: Do not use space inside array brackets.
    [ :abstract, :accessRights, :accrualMethod, :accrualPeriodicity,
     ^
app/models/concerns/blacklight/document/dcmi_oai.rb:29:39: C: Layout/SpaceInsideArrayLiteralBrackets: Do not use space inside array brackets.
      :temporal, :title, :type, :valid ]
                                      ^
app/models/concerns/blacklight/document/dcmi_oai.rb:38:132: C: Metrics/LineLength: Line is too long. [134/120]
             'xsi:schemaLocation' => %(http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd)) do
                                                                                                                                   ^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:39:80: C: Layout/ExtraSpacing: Unnecessary spacing detected.
      custom_sets.select { |custom_set| dublin_core_term_name? custom_set.label  }.each do |set|
                                                                               ^
app/models/concerns/blacklight/document/dcmi_oai.rb:48:3: C: Style/Alias: Use alias instead of alias_method in a module body.
  alias_method :export_as_xml, :export_as_oai_dcmi_xml
  ^^^^^^^^^^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:49:3: C: Style/Alias: Use alias instead of alias_method in a module body.
  alias_method :export_as_dcmi_xml, :export_as_oai_dcmi_xml
  ^^^^^^^^^^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:53:3: C: Layout/IndentationWidth: Use 2 (not 0) spaces for rails indentation.
  def dublin_core_term_name? field
  
app/models/concerns/blacklight/document/dcmi_oai.rb:53:30: C: Style/MethodDefParentheses: Use def with parentheses when there are parameters.
  def dublin_core_term_name? field
                             ^^^^^
app/models/concerns/blacklight/document/dcmi_oai.rb:56:4: C: Layout/TrailingBlankLines: Final newline missing.
end
   
app/models/site.rb:32:5: C: Style/RescueStandardError: Avoid rescuing without specifying an error class.
    rescue
    ^^^^^^
409 files inspected, 24 offenses detected

UI updates for display

We do not wish to see the "user collection" (and other related badges) on the site. They only add meaningless clutter to the site (since every collection we load ends up being a "user collection"). Plus, this is not actionable data for our users.

image

We need to remove "Resource type" and "Owner" from both facets and the item summary in the list as well as the full page item view.

We need to add "Source" to all metadata views

We need to relabel "Part Of" to read "Periodical"

image

Add custom URLs to new worktypes

For each worktype: ConferenceItem, Daataset, ExamPaper, JournalArticle, PublishedWork and Thesis:

  • Add AARK_ID to form
  • Add to_param, set_slug and find methods to models
  • Find method in model does not find work in Fedora
  • Remove slug from Dogbiscuits forms
  • Hide aark_id and slug from Dogbiscuits show pages
  • Works are being created twice with both the ID and Slug
  • Make sure facet fields are correct

Images uploaded in Appearance are not working

Summary

I can login and change the various images. However only the logo actually "sticks". The other images accept and upload (if the file is too large, I am notified). But then all I see is a broken image link, both in the public application and on the dashboard. I am unable to revert to the default state or upload a different image.

image

Acceptance Criteria

  • banner image should work when uploaded
  • Directory Image should work when updated
  • Default Images should work when uploaded

Notes

  • talk with Summer about how the initial theming was done to confirm that the banner and other images are still available to the display.
  • Rob has fixed issues with images on several projects. Ask in our samvera channel about what common problems we have faced or ask Rob directly.

OAI identifier fields

Summary

Having the aark_id show in is required and am happy you have that working. We also need the other identifiers to be exposed the same way. In an ideal world, I would like to see the aark_id exposed in a separate field. You can see why when you realize that part of what my system will need to do is to mind (create) new aark_ids for items that do not have one assigned. I need the item's contributor assigned identifier to accomplish this. So I might expect to see "221234356" in the aark_id field and ".b1234578" in the resource identifier field. At this point, if you can just output them all in a concatenated manner into the "resource identifier" field, I guess I can sort them out based on the format of the number. But down the road, what if we had contributors that had 8 digit numerical ids like we do? Then we would want a dedicated aark_id field.

Acceptance Criteria

  • OAI identifier field should concat both the aark_id field and any other identifiers.
  • If these fields can be separated as easily as they can be concatenated please separate the fields now and update the acceptance criteria

Update outgoing OAI feed

Email from Eric:

"...the OAI service needs to be fully built out. It needs to be able to return the same metadata fields that we map from in the metadata spreadsheet. This basically means it needs to be able to, in addition to the basic dublic core model, respond with the same "oai_adl" record format that Bulkrax imports. Every field needs to be included, with the delimiters set to match the incoming specification.

Please make a task for this and let me know the resources that will be required."

Standardize display of subjects/keywords

Summary

Adventist would like their subjects or keywords to show in alphabetical order or in the order they were entered (whichever is the easier lift)

If the lift is too substantial, disregard

Acceptance Criteria

  • subjects or keywords show in a standardized way

Notes

Confused how to fill this out? Check out the playbook

Fix failed specs on Main

Currently there are 6 failed specs on main

Finished in 11 minutes 1 second (files took 1 minute 3.83 seconds to load)
559 examples, 6 failures, 42 pending
Failed examples:
rspec ./spec/features/create_published_work_spec.rb:43 # Create a PublishedWork a logged in user is expected to have text "Add folder"
rspec ./spec/features/create_dataset_spec.rb:43 # Create a Dataset a logged in user is expected to have text "Add folder"
rspec ./spec/features/create_journal_article_spec.rb:43 # Create a JournalArticle a logged in user is expected to have text "Add folder"
rspec ./spec/features/create_exam_paper_spec.rb:43 # Create a ExamPaper a logged in user is expected to have text "Add folder"
rspec ./spec/features/create_conference_item_spec.rb:43 # Create a ConferenceItem a logged in user is expected to have text "Add folder"
rspec ./spec/features/create_thesis_spec.rb:43 # Create a Thesis a logged in user is expected to have text "Add folder"
Randomized with seed 6845

Multi-Lingual Support Is Inconsistent

Below are a couple places (there may be more) where translation is missing. This issue was raised by one of our executives who overseas our partnerships in Europe.

image

image

image

image

image

What we need is:

  • Ability for the highlighted items above (and similar items if found) to be translated via the language selector.
  • A reasonable timeframe within which this can be achieved.

What we can provide, if needed is:

  • Translations of missing elements into the primary languages we need to support.

Translating the Admin Dashboard is not a priority for us at this time. There are similar issues on it in minor places.

Since I do not see these elements translated in the HykuUP demo site you provided us, I am happy to discuss any concerns you might have about scope and timing. The main thing I need at this point is to be able to say "Yes, this will be addressed, is on the list, and will be part of Phase X of the project." If we can do it during this phase great. But I don't see these issues fixed on HykuUP, so expect we are asking for new work.

Full-text Search

Full text search should work for works that have associated txt files.

These are the initial requirements notes:

All new citation we create WILL have media files (full raw text). What we are doing is going through periodicals and creating a citation with subject headings for each article. We then capture the article’s full text via copy/paste and paste it into a field such as the “abstract” field in Dublin Core. This allows for full-text searching of the article’s contents. Users will actually access the article by linking via the Related URL to the full issue where the article is found.

Testing:

The item shown in the screenshot below (and currently displayed on the Featured Works section) is a good example ("A word to the""Little Flock""reprint"). The word “Brunswick” exists in the TXT file. However searching for this keyword via the website search bar does not return any results.
fulltext

Logo missing

Screen_Shot_2021-07-08_at_9.38.19_AM

Logo is missing in footer. Links to external url. Logo should be added to asset pipeline

Hide 'created by' field on all collections

Summary

From Adventist:

On the Collection page, the author populates the "created by" field under the Collection title. This is technically correct, I guess, because the author created the collection, but the behavior to me implies that the collection creator also created the collection page, which is wild when the person has been dead for decades example

When I add a thumbnail and logo image to a Collection page, the "created by" field disappears and the only data that shows under the title is the "last updated" date. This display behavior is fine, so maybe the easiest solution is to just hide the "created by" on all collections. I'm ok with this, since author metadata shows on the right.
example

Acceptance Criteria

  • 'Created by' field hidden on all collections

Notes

Confused how to fill this out? Check out the playbook

Expose Identifiers

Email from Eric:

"Having the aark_id show in is required and am happy you have that working. We also need the other identifiers to be exposed the same way. In an ideal world, I would like to see the aark_id exposed in a separate field. You can see why when you realize that part of what my system will need to do is to mind (create) new aark_ids for items that do not have one assigned. I need the item's contributor assigned identifier to accomplish this. So I might expect to see "221234356" in the aark_id field and ".b1234578" in the resource identifier field. At this point, if you can just output them all in a concatenated manner into the "resource identifier" field, I guess I can sort them out based on the format of the number. But down the road, what if we had contributors that had 8 digit numerical ids like we do? Then we would want a dedicated aark_id field.

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.