From 41f6f199d7abb753a3d180aabde6a0c482825ff8 Mon Sep 17 00:00:00 2001 From: David R Newman Date: Fri, 10 Sep 2021 12:05:48 +0100 Subject: [PATCH] Fixes bugs with #144. --- perl_lib/EPrints/MetaField/Subject.pm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/perl_lib/EPrints/MetaField/Subject.pm b/perl_lib/EPrints/MetaField/Subject.pm index ea4f0190..8f5d0bef 100644 --- a/perl_lib/EPrints/MetaField/Subject.pm +++ b/perl_lib/EPrints/MetaField/Subject.pm @@ -125,13 +125,31 @@ sub render_set_input $self->{showtop}, 0, ($self->{input_style} eq "short"?1:0) ); - foreach my $value ( @{$obj->get_value( $self->{name} )} ) + my ( $depospairs ) = $topsubj->get_subjects( + 1, + $self->{showtop}, + 0, + ($self->{input_style} eq "short"?1:0) ); + + my $values = $obj->get_value( $self->{name} ); + $values ||= []; + $values = [ $values ] unless ref $values eq 'ARRAY'; + foreach my $value ( @{$values} ) { foreach my $pair ( @{$allpairs} ) { if ( $pair->[0] eq $value ) { - unshift @{$pairs}, $pair; + my $depositable = 0; + foreach my $dpair ( @{$depospairs} ) + { + if ( $dpair->[0] eq $value ) + { + $depositable = 1; + last; + } + } + unshift @{$pairs}, $pair unless $depositable; last; } }