Bug 18680: Add an empty entry by default to sort1/sort2 values in patron account

When using sort1/sort2 with authorised values to create a pull down
list, there will be no empty entry unless one is manually added to
the authorised values list.

This is not a good default behaviour, as it can easily
cause errors on patron creation. Without the empty entry, the first
alphabetic value is pre-selected and will be saved if not explicitly
changed. It also doesn't allow to mark sort1/sort2 as mandatory,
as the value is always 'set', the required message won't be triggered.

This adds an empty parameter to av-build-dropbox.inc to allow selectively
adding this empty entry without causing side-effects in other places
this include is used.

To test:
- Create authorised values for either Bsort1 or Bsort2 authorised
  value category
- Create a new patron:
  - you should see a pull down list on one and an input field for the other
  - for the pull down list, there will be no empty entry and the first
    alphabetic value will be preselected
- Make your sort1 and sort2 mandatory using BorrowerMandatoryField
- Verify there is still on empty entry
- Apply patch
- Repeat tests and verify that the behaviour is as expected
  - There should now be an empty entry
  - When the field is marked mandatory and empty is left, the required
    warning will be shown.

Signed-off-by: David Roberts <david@koha-ptfs.co.uk>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Katrin Fischer 2020-04-14 16:57:38 +00:00 committed by Martin Renvoize
parent 563120a004
commit 8218653df7
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F
2 changed files with 6 additions and 4 deletions

View file

@ -4,8 +4,9 @@
[%# category: the authorised value category %]
[%# default: the default authorised value to select %]
[%# class: the CSS class of the select element %]
[%# size: the size to use for the input (generated if the authorised value category does not exist). %]
[%# all: add a "All" entry %]
[%# size: the size to use for the input (generated if the authorised value category does not exist). %]
[%# all: add a "All" entry. All and empty should not be used at the same time. %]
[%# empty: add an empty entry. All and empty should not be used at the same time. %]
[% SET avs = AuthorisedValues.GetAuthValueDropbox( category ) %]
[% DEFAULT class = '' size = 20 %]
@ -13,6 +14,7 @@
[% IF avs %]
<select id="[% name | html %]" name="[% name | html %]" class="[% class | html %]" >
[% IF all %]<option value="">All</option>[% END %]
[% IF empty %]<option value=""></option>[% END %]
[% FOR av IN avs %]
[% IF av.authorised_value == default %]
<option value="[% av.authorised_value | html %]" selected="selected">[% av.lib | html_entity %]</option>

View file

@ -847,7 +847,7 @@ legend:hover {
[% END %]
Sort 1:
</label>
[% PROCESS 'av-build-dropbox.inc' name="sort1", category="Bsort1", default=sort1, size = 20 %]
[% PROCESS 'av-build-dropbox.inc' name="sort1", category="Bsort1", default=sort1, empty=1, size = 20 %]
[% IF ( mandatorysort1 ) %]
<span class="required">Required</span>
[% END %]
@ -863,7 +863,7 @@ legend:hover {
[% END %]
Sort 2:
</label>
[% PROCESS 'av-build-dropbox.inc' name="sort2", category="Bsort2", default=sort2, size = 20 %]
[% PROCESS 'av-build-dropbox.inc' name="sort2", category="Bsort2", default=sort2, empty=1, size = 20 %]
[% IF ( mandatorysort2 ) %]
<span class="required">Required</span>
[% END %]