Bug 13757: (QA followup) Make opac-memberentry.pl handle attrs deletion
The original code on this bug skipped empty-valued attributes. But emptying attributes is the only way to tell the controller script that the user wants to delete them. This patch makes opac-memberentry.pl check the existence of attributes sharing the code of the empty for the given patron, and it stores the deletion on the Koha::Patron::Modification as needed. Otherwise deletions got skipped. To test: - Verify setting/deleting attributes that are opac-editable and verify the results are sound. https://bugs.koha-community.org/show_bug.cgi?id=13737 Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
b6797fdc87
commit
c44a377d9c
1 changed files with 12 additions and 5 deletions
|
@ -89,7 +89,7 @@ $template->param(
|
||||||
OPACPatronDetails => C4::Context->preference('OPACPatronDetails'),
|
OPACPatronDetails => C4::Context->preference('OPACPatronDetails'),
|
||||||
);
|
);
|
||||||
|
|
||||||
my $attributes = ParsePatronAttributes($cgi);
|
my $attributes = ParsePatronAttributes($borrowernumber,$cgi);
|
||||||
my $conflicting_attribute = 0;
|
my $conflicting_attribute = 0;
|
||||||
|
|
||||||
foreach my $attr (@$attributes) {
|
foreach my $attr (@$attributes) {
|
||||||
|
@ -560,17 +560,22 @@ sub GeneratePatronAttributesForm {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ParsePatronAttributes {
|
sub ParsePatronAttributes {
|
||||||
my ( $cgi ) = @_;
|
my ($borrowernumber,$cgi) = @_;
|
||||||
|
|
||||||
my @codes = $cgi->multi_param('patron_attribute_code');
|
my @codes = $cgi->multi_param('patron_attribute_code');
|
||||||
my @values = $cgi->multi_param('patron_attribute_value');
|
my @values = $cgi->multi_param('patron_attribute_value');
|
||||||
|
|
||||||
my $ea = each_array( @codes, @values );
|
my $ea = each_array( @codes, @values );
|
||||||
my @attributes;
|
my @attributes;
|
||||||
my %dups = ();
|
my %dups = ();
|
||||||
|
|
||||||
while ( my ( $code, $value, $password ) = $ea->() ) {
|
while ( my ( $code, $value ) = $ea->() ) {
|
||||||
next unless defined($value) and $value ne '';
|
# Don't skip if the patron already has attributes with $code, because
|
||||||
|
# it means we are being requested to remove the attributes.
|
||||||
|
next
|
||||||
|
unless defined($value) and $value ne ''
|
||||||
|
or Koha::Patron::Attributes->search(
|
||||||
|
{ borrowernumber => $borrowernumber, code => $code } )->count > 0;
|
||||||
next if exists $dups{$code}->{$value};
|
next if exists $dups{$code}->{$value};
|
||||||
$dups{$code}->{$value} = 1;
|
$dups{$code}->{$value} = 1;
|
||||||
|
|
||||||
|
@ -579,3 +584,5 @@ sub ParsePatronAttributes {
|
||||||
|
|
||||||
return \@attributes;
|
return \@attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
Loading…
Reference in a new issue