- my @record_subs=XML_readline_withtags($record,"","",$auth_type->{auth_tag_to_report});
- ##Put the result in a hash
- my %filled_subfield;
- foreach my $subfield (@record_subs) {
- $filled_subfield{$subfield->[0]}=$subfield->[1];
- }
- my @subfields_data;
-
- # loop through each subfield
- foreach my $subfield ('a'..'z') {
- my %subfield_data;
- $subfield_data{marc_value}=$filled_subfield{$subfield} ;
- $subfield_data{marc_subfield}=$subfield;
- $subfield_data{marc_tag}=$auth_type->{auth_tag_to_report};
- push(@subfields_data, \%subfield_data);
- }
- if ($#subfields_data>=0) {
- my %tag_data;
- $tag_data{tag}=$auth_type->{auth_tag_to_report}.' -'. $tagslib->{$auth_type->{auth_tag_to_report}}->{lib};
- $tag_data{subfield} = \@subfields_data;
- push (@loop_data, \%tag_data);
- }
-
-} else {
-# authid is empty => the user want to empty the entry.
- my @subfields_data;
- foreach my $subfield ('a'..'z') {
- my %subfield_data;
- $subfield_data{marc_value}='';
- $subfield_data{marc_subfield}=$subfield;
- push(@subfields_data, \%subfield_data);
- }
- foreach my $subfield ('0'..'9') {
- my %subfield_data;
- $subfield_data{marc_value}='';
- $subfield_data{marc_subfield}=$subfield;
- push(@subfields_data, \%subfield_data);
- }
- my %tag_data;
- $tag_data{subfield} = \@subfields_data;
- push (@loop_data, \%tag_data);
+ my @fields = $record->field( $auth_type->{auth_tag_to_report} );
+ my $repet = ($query->param('repet') || 1) - 1;
+ my $field = $fields[$repet];
+
+ # Get all values for each distinct subfield
+ my %subfields;
+ for ( $field->subfields ) {
+ my $letter = $_->[0];
+ next if defined $subfields{$letter};
+ my @values = $field->subfield($letter);
+ $subfields{$letter} = \@values;
+ }
+
+ # Add all subfields to the subfield_loop
+ for( keys %subfields ) {
+ my $letter = $_ || '@';
+ push( @subfield_loop, {marc_subfield => $letter, marc_values => $subfields{$_}} );
+ }
+}
+else {
+ # authid is empty => the user want to empty the entry.
+ $template->param( "clear" => 1 );