Bug 13757: (QA followup) Exclude empty attributes from rendering if non-editable
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 22 Mar 2017 19:22:53 +0000 (16:22 -0300)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 24 Mar 2017 18:45:21 +0000 (18:45 +0000)
In self registration opac displayable (and not editable) attributes are
displayed as empty. This an empty value is passed to the template for
creating an empty input and it shouldn't when the attribute is not
editable.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
opac/opac-memberentry.pl

index 2a20d63..670c11d 100755 (executable)
@@ -254,7 +254,7 @@ elsif ( $action eq 'update' ) {
     }
     else {
         my %borrower_changes = DelUnchangedFields( $borrowernumber, %borrower );
-        my $extended_attributes_changes = FilterUnchagedAttributes( $borrowernumber, $attributes );
+        my $extended_attributes_changes = FilterUnchangedAttributes( $borrowernumber, $attributes );
 
         if ( %borrower_changes || scalar @{$extended_attributes_changes} > 0 ) {
             ( $template, $borrowernumber, $cookie ) = get_template_and_user(
@@ -317,6 +317,7 @@ elsif ( $action eq 'edit' ) {    #Display logged in borrower's data
 
     $template->param( patron_attribute_classes => GeneratePatronAttributesForm( $borrowernumber ) );
 } else {
+    # Render self-registration page
     $template->param( patron_attribute_classes => GeneratePatronAttributesForm() );
 }
 
@@ -474,7 +475,7 @@ sub DelEmptyFields {
     return %borrower;
 }
 
-sub FilterUnchagedAttributes {
+sub FilterUnchangedAttributes {
     my ( $borrowernumber, $entered_attributes ) = @_;
 
     my @patron_attributes = grep {$_->opac_editable} Koha::Patron::Attributes->search({ borrowernumber => $borrowernumber })->as_list;
@@ -574,7 +575,9 @@ sub GeneratePatronAttributesForm {
             # If editable, make sure there's at least one empty entry,
             # to make the template's job easier
             values => $attr_values{ $attr_type->code() } || ['']
-        };
+        }
+            unless !defined $attr_values{ $attr_type->code() }
+                    and !$attr_type->opac_editable;
     }
 
     # Finally, build a list of containing classes