Bug 31562: Treat flags as other borrower fields
authorNick Clemens <nick@bywatersolutions.com>
Wed, 14 Sep 2022 11:27:03 +0000 (11:27 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Thu, 22 Sep 2022 12:24:41 +0000 (09:24 -0300)
Rather than generate a custom hash for these fields, we should treat them as other borrower data fields

To test:
 1 - Edit a patron, note the 'Lost card' and 'Gone no address' fields
 2 - Edit syspref BorrowerunwantedField
 3 - Set gonenoaddress and lost as unwanted
 4 - Edit patron, the fields remain
 5 - Apply patch
 6 - Edit a patron, fields are hidden
 7 - Unhide one of the fields
 8 - Edit a patron and confirm it shows and saves correctly
 9 - Unhide the other field
10 - Confirm it can be edited and saved

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt
members/memberentry.pl

index 2235b4c..5c9a6e1 100644 (file)
@@ -1309,38 +1309,64 @@ legend:hover {
                                 [% END # UNLESS nouserid && nopassword && !CanUpdatePasswordExpiration %]
 
                                 <!--this zones are not necessary in modif mode -->
-                                [% UNLESS ( opadd || opduplicate ) %]
+                                [% UNLESS ( opadd || opduplicate || ( nogonenoaddress && nolost ) ) %]
                                     <fieldset class="rows" id="memberentry_account_flags">
                                         <legend id="account_flags_lgd">Patron account flags</legend>
                                         <ol class="radio">
-                                            [% FOREACH flagloo IN flagloop %]
+                                            [% UNLESS nogonenoaddress %]
                                                 <li>
-                                                    <label class="radio" for="yes[% flagloo.name | html %]">
-                                                        [% IF ( flagloo.key == 'gonenoaddress' ) %]Gone no address:[% END %]
-                                                        [% IF ( flagloo.key == 'lost' ) %]Lost card:[% END %]
+                                                    <label class="radio" for="yesgonenoaddress">
+                                                        Gone no address:
                                                     </label>
                                                     [% IF CAN_user_circulate_manage_restrictions %]
-                                                        <label for="yes[% flagloo.name | html %]">
-                                                            [% IF ( flagloo.yes ) %]
-                                                                <input type="radio" id="yes[% flagloo.name | html %]" name="[% flagloo.name | html %]" value="1" checked="checked" />
+                                                        <label for="yesgonenoaddress">
+                                                            [% IF ( borrower_data.gonenoaddress ) %]
+                                                                <input type="radio" id="yesgonenoaddress" name="gonenoaddress" value="1" checked="checked" />
                                                             [% ELSE %]
-                                                                <input type="radio" id="yes[% flagloo.name | html %]" name="[% flagloo.name | html %]" value="1" />
+                                                                <input type="radio" id="yesgonenoaddress" name="gonenoaddress" value="1" />
                                                             [% END %]
                                                                 Yes
                                                         </label>
-                                                        <label for="no[% flagloo.name | html %]">
-                                                            [% IF ( flagloo.no ) %]
-                                                                <input type="radio" id="no[% flagloo.name | html %]" name="[% flagloo.name | html %]" value="0" checked="checked"/>
+                                                        <label for="nogonenoaddress">
+                                                            [% IF ( borrower_data.gonenoaddress ) %]
+                                                                <input type="radio" id="nogonenoaddress" name="gonenoaddress" value="0" />
                                                             [% ELSE %]
-                                                                <input type="radio" id="no[% flagloo.name | html %]" name="[% flagloo.name | html %]" value="0" />
+                                                                <input type="radio" id="nogonenoaddress" name="gonenoaddress" value="0" checked="checked"/>
                                                             [% END %]
                                                                 No
                                                         </label>
                                                     [% ELSE %]
-                                                        [% IF flagloo.yes %]<span>Yes</span>[% ELSE %]<span>No</span>[% END %]
+                                                        [% IF borrower_data.gonenoaddress %]<span>Yes</span>[% ELSE %]<span>No</span>[% END %]
                                                     [% END # /IF CAN_user_circulate_manage_restrictions %]
                                                 </li>
-                                            [% END # /FOREACH flagloo %]
+                                            [% END # /UNLESS nogonenoaddress %]
+                                            [% UNLESS nolost %]
+                                                <li>
+                                                    <label class="radio" for="yeslost">
+                                                        Lost card:
+                                                    </label>
+                                                    [% IF CAN_user_circulate_manage_restrictions %]
+                                                        <label for="yeslost">
+                                                            [% IF ( borrower_data.lost ) %]
+                                                                <input type="radio" id="yeslost" name="lost" value="1" checked="checked" />
+                                                            [% ELSE %]
+                                                                <input type="radio" id="yeslost" name="lost" value="1" />
+                                                            [% END %]
+                                                                Yes
+                                                        </label>
+                                                        <label for="nolost">
+                                                            [% IF ( borrower_data.lost ) %]
+                                                                <input type="radio" id="nolost" name="lost" value="0" />
+                                                            [% ELSE %]
+                                                                <input type="radio" id="nolost" name="lost" value="0" checked="checked"/>
+                                                            [% END %]
+                                                                No
+                                                        </label>
+                                                    [% ELSE %]
+                                                        [% IF borrower_data.lost %]<span>Yes</span>[% ELSE %]<span>No</span>[% END %]
+                                                    [% END # /IF CAN_user_circulate_manage_restrictions %]
+                                                </li>
+                                            [% END # /UNLESS nogonenoaddress %]
                                         </ol>
                                     </fieldset> <!-- /#memberentry_account_flags -->
 
index 1b6aac6..95f6e9d 100755 (executable)
@@ -688,29 +688,6 @@ while (@relationships) {
   push(@relshipdata, \%row);
 }
 
-my %flags = (
-    'gonenoaddress' => ['gonenoaddress'],
-    'lost'          => ['lost']
-);
-
-my @flagdata;
-foreach ( keys(%flags) ) {
-    my $key = $_;
-    my %row = (
-        'key'  => $key,
-        'name' => $flags{$key}[0]
-    );
-    if ( $data{$key} ) {
-        $row{'yes'} = ' checked';
-        $row{'no'}  = '';
-    }
-    else {
-        $row{'yes'} = '';
-        $row{'no'}  = ' checked';
-    }
-    push @flagdata, \%row;
-}
-
 # get Branch Loop
 # in modify mod: userbranch value comes from borrowers table
 # in add    mod: userbranch value comes from branches table (ip correspondence)
@@ -794,7 +771,6 @@ $template->param(
   borrowernumber  => $borrowernumber, #register number
   relshiploop => \@relshipdata,
   btitle=> $default_borrowertitle,
-  flagloop  => \@flagdata,
   modify          => $modify,
   nok     => $nok,#flag to know if an error
   NoUpdateLogin =>  $NoUpdateLogin,