Bug 35144: Update style of 'Required' label for OPAC patron attributes

This patch makes some changes to style and markup of the part of the
OPAC patron entry form which displays patron attribute entry fields.

To test, apply the patch and rebuild the OPAC CSS.

- Create at least two patron attributes which have both "Display in
  OPAC" and "Editable in OPAC" checked: One which is linked to an
  authorized value, one which isn't. At least one attribute should be
  mandatory. At least one attribute should be repeatable.
- Test the form using either patron self-registration or by logging in
  to the OPAC and clicking the "Personal details" link in the sidebar.
- Check the appearance of required fields in the form, including the
  mandatory patron attributes.
- Confirm that the "Clear" and "New" controls look good and work
  correctly, including fields cloned with the "New" button.

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit dd70e43b66)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Owen Leonard 2023-11-07 19:06:13 +00:00 committed by Fridolin Somers
parent fa1cabde11
commit e1dc14bb68
2 changed files with 31 additions and 19 deletions

View file

@ -774,19 +774,28 @@ th {
padding: 3px 4px;
}
div {
&.required_label {
display: none;
.required_label {
display: none;
&.required {
color: #C00;
display: block;
font-size: 95%;
margin-left: 10rem;
margin-top: 3px;
}
&.required {
color: #C00;
display: block;
font-size: 95%;
margin-left: 10rem;
margin-top: 3px;
}
}
.attr-control {
margin-left: 9.5rem;
.required {
display: inline-block;
margin-left: 0;
}
}
div {
&.rows {
clear: left;
float: left;

View file

@ -980,13 +980,15 @@
[% ELSE %]
<textarea rows="2" cols="30" id="[% form_id | html %]" name="patron_attribute_value">[% pa_value | html %]</textarea>
[% END %]
[% IF pa.type.mandatory %]
<div class="required">Required</div>
[% END %]
<a href="#" class="clear-attribute">Clear</a>
[% IF ( pa.type.repeatable ) %]
<a href="#" class="clone-attribute">New</a>
[% END %]
<div class="attr-control">
<a href="#" class="btn btn-sm btn-link clear-attribute"><i class="fa fa-remove" aria-hidden="true"></i> Clear</a>
[% IF ( pa.type.repeatable ) %]
<a href="#" class="btn btn-sm btn-link clone-attribute"><i class="fa fa-plus" aria-hidden="true"></i> New</a>
[% END %]
[% IF pa.type.mandatory %]
<span class="required_label required">Required</span>
[% END %]
</div>
[% ELSE %]
[% IF ( pa.type.authorised_value_category ) %]
[% AuthorisedValues.GetByCode( pa.type.authorised_value_category, pa_value, 1 ) | html_line_break %]
@ -1205,13 +1207,14 @@
$(".patron-attributes").on( 'click', '.clear-attribute', function(e) {
e.preventDefault();
$(this).parent()
$(this).closest("li")
.find('textarea').val("").end()
.find('select').val("").end();
} );
$(".patron-attributes").on( 'click', '.clone-attribute', function() {
var clone = $(this).parent().clone().insertAfter( $(this).parent() );
let li = $(this).closest("li");
var clone = li.clone().insertAfter( li );
var newId = 50 + parseInt(Math.random() * 100000);
$('input[type!="hidden"],select,textarea', clone).attr('id', 'patron-attr-' + newId).attr('value', '');