-
Notifications
You must be signed in to change notification settings - Fork 507
Allow input of alternative text for collection and community logos/th… #3389
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Allow input of alternative text for collection and community logos/th… #3389
Conversation
…chema to store thumbnail descriptions of collections and communities
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
…com/DanGastardelli/dspace-angular into UpdatingAlternativeTextInThumbnails
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
|
Hi @DanGastardelli, |
tdonohue
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@DanGastardelli : We talked about this PR as a team in today's Developers Meeting. The overall feedback was positive, but there was a suggestion to avoid creating a new metadata field for this "alt" text. See comment inline below for the suggestion.
| * Corresponds to the metadata field dspace.thumbnail.description | ||
| */ | ||
| get descriptionThumbnail(): string { | ||
| return this.firstMetadataValue('dspace.thumbnail.description'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was suggested in today's meeting that the more appropriate place to store the "alt" text for a Bitstream would be on the Bitstream object itself in the dc.description field. This has two main benefits:
- It would avoid needing to create a new metadata field on the backend.
- It'd also be better to store this information on the Bitstream as the "alt" text is a description of the Bitstream, and not something that belongs to the Collection. That way, if the Bitstream logo changes, then the old "alt" text goes away and new text comes with the new Bitstream.
artlowel
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @DanGastardelli!
| if (this.thumbnail){ | ||
| if ('payload' in this.thumbnail) { | ||
| this.listenThumbnail = this.thumbnail; | ||
| this.customDescription = this.listenThumbnail.payload.metadata['dc.description'][0].value; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will throw an error if there's no description. Better do something like
| this.customDescription = this.listenThumbnail.payload.metadata['dc.description'][0].value; | |
| const bitstream = this.listenThumbnail.payload; | |
| if (bitstream && bitstream.hasMetadata('dc.description')) { | |
| this.customDescription = bitstream.firstMetadataValue('dc.description'); | |
| } |
| } | ||
| <!-- don't use *ngIf="!isLoading" so the thumbnail can load in while the animation is playing --> | ||
| @if (src() !== null) { | ||
| @if (src() && customDescription === undefined) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If customDescription is an empty string, it will not be undefined and this default alt text won't be used
| @if (src() && customDescription !== undefined) { | ||
| <img class="thumbnail-content img-fluid" | ||
| [class.d-none]="isLoading()" | ||
| [src]="src() | dsSafeUrl" | ||
| [alt]="customDescription" | ||
| (error)="errorHandler()" | ||
| (load)="successHandler()"/> | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We're duplicating a lot of code here, simply for the alt property. Perhaps it's a better idea to move the logic to the ts file, and have a this.altText property that's always defined, and contains the customDescription if it exists (and isn't empty), and the i18n message otherwise
|
Hi @artlowel! I made some changes to reduce code repetition and implemented the suggestion given for the thumbnail component condition. Looking forward to your feedback, |
Allow input of alternative text for collection and community logos/thumbnails
References
Fixes #1306
Requires DSpace/DSpace#9875
This change was addressed in #1306, which now allows detailed description of thumbnail images of items, collections, and community logos (also recognized by screen readers).
Description
First, logic was created using OnInit in the thumbnail component to bring the thumbnail description value into the "alt" text contained in the image tag in the HTML. Fields were then created for insertion in the creation and editing of communities and collections that allowed the insertion of details about the logos involved and finally the creation of translation keys for these fields.
Instructions for reviewers
Firstly, you need to use the backend of this PR DSpace/DSpace#9875.
List of changes in this PR:
*In the html of the components of the community page and the collection page, conditionals were inserted and check if there is a custom description and insert the variable with the description in the alternative text.
Include guidance on how to test or review your PR.
To test, simply create a collection and community that contains a logo. In the “Thumbnail description” field, fill in the data for this logo and finally inspect the logo or use a screen reader on the logo to validate the description entered. Now as for the items, just insert a bitstream and create the thumb by running filter-media in the backend. After that, go to item editing and go to the bitstream tab and edit the thumbnail description and then go to the item and hover your screen reader over the image or inspect it to see if the description matches what you entered.