sul-dlss / argo

The administrative discovery interface for Stanford's Digital Object Registry
Other
20 stars 5 forks source link

Add "withdraw" button to previous user version page #4528

Closed andrewjbtw closed 1 month ago

andrewjbtw commented 1 month ago

When an item has multiple user versions, we need to support the ability to withdraw an older version. An older version may be withdrawn for a number of reasons: author's request, third-party takedown, etc. The mechanics of the approval of a withdrawal request is outside the scope of SDR applications. This will not be self-service for depositors and won't be supported in H2. Instead, similar to other takedowns of ETD or H2 items, the request will go through email and be approved that way.

We are supporting this in Argo because there is the potential to add user version creation to Argo in the future. We do not want to implement it only in H2 and then find that we need to implement it again in Argo. This also allows H2 to operate only on latest versions rather than on the whole history of an item.

The withdraw interface

Argo users will be able to handle withdrawal requests through a "Withdraw" button on the Argo interface. (Figma)

Screenshot 2024-07-09 at 5 10 02 PM

The button should only display under the following conditions:

When a user clicks on the "Withdraw" button, pop up a confirmation box. In the box, display this message:

Are your sure you want to withdraw this version? Once you withdraw this version, the Purl will no longer display it.

What happens when you withdraw

When a version is withdrawn,

Argo show page for a withdrawn version

Once a version has been withdrawn, the show page for that version should:

(Figma)

Screenshot 2024-07-09 at 5 23 55 PM

Restoring a version, aka un-withdrawing

We should also support restoring a withdrawn version. Especially while the feature is new, we may find that we need to restore a version that had been withdrawn. Putting this in the Argo UI will make it easier to correct possible mistakes.

Restoring a version will be like withdrawing a version. When the user clicks the restore button, show a dialog box with this message:

Are your sure you want to restore this version? Once you restore this version, it will become visible on the Purl again.

Restoring the version should mean:

Additional context

Withdraw/restore apply only to old user versions. The following cases are different in significant ways:

Full takedown of all versions + a message about the item on the latest version.

In this case, we would withdraw all old versions and create a new latest version with a message. I've been creating tombstones like this for content with DOIs since DataCite requests that we do not take pages down completely. Instead, the DOI resolves to a page that indicates that content has been removed (or moved to a new URL).

Actual file deletion and other exceptional requests

For example, if we need to remove files for privacy reasons. This will likely take some manual work, as it does now in these situations. We also have had one or two takedowns where we went as far as making an effort to de-list items from search engines. We should not even show a tombstone purl under that circumstance.

Takedowns of items that are not using "user" versioning

We will continue to have collections materials (not H2, ETD, etc) where we will take the items down by changing the rights to dark. That operation should continue to remove the Purl and not leave a tombstone behind.

justinlittman commented 1 month ago

Blocked by needing to support withdrawing in purl-fetcher.

astridu commented 1 month ago

Please see these mockups for latest design (updated the yellow banner to conform to the new banner styles we defined) Older version: https://www.figma.com/proto/XjubCohES3rE8xSQpiNghq/Versioning?page-id=0%3A1&node-id=320-782&viewport=-12727%2C-3675%2C1&t=Q8XjDGjx2EhhCXEa-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=320%3A782&show-proto-sidebar=1 Withdrawn version: https://www.figma.com/proto/XjubCohES3rE8xSQpiNghq/Versioning?page-id=0%3A1&node-id=541-1014&viewport=-12727%2C-3675%2C1&t=Q8XjDGjx2EhhCXEa-1&scaling=min-zoom&content-scaling=fixed&starting-point-node-id=541%3A1014&show-proto-sidebar=1

justinlittman commented 1 month ago

The scope of this ticket is to add the Withdraw and Restore buttons and have them update the User Version in DSA by invoking the user version update endpoint. This should follow the logic described above for determining when a user version can be withdrawn / restored. (It might be worth considering if that business logic should be in DSA, rather than Argo.)

justinlittman commented 1 month ago

Blocked by https://github.com/sul-dlss/dor-services-app/issues/5136