Bug 18680: Add an empty entry by default to sort1/sort2 values in patron account
authorKatrin Fischer <katrin.fischer.83@web.de>
Tue, 14 Apr 2020 16:57:38 +0000 (16:57 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 20 Apr 2020 11:28:04 +0000 (12:28 +0100)
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>

koha-tmpl/intranet-tmpl/prog/en/includes/av-build-dropbox.inc
koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt

index 4385125..f3b5737 100644 (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>
index eec6826..4b5eb35 100644 (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 %]