Changeset 32076 for main/trunk

Show
Ignore:
Timestamp:
21.11.2017 14:42:25 (23 months ago)
Author:
kjdon
Message:

Bugfix (with debugging left in). The set-archive-metadata would overwrite the very first metadata value for the specified tag if metapos not provided even if prevmetavalue was provided. Changed the logic for handling metapos, prevmetavalue when setting archive metadata to fix this.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cgiactions/modmetadataaction.pm

    r32061 r32076  
    840840 
    841841    my $curr_secnum = $parser->{'parameters'}->{'curr_section_num'}; 
    842 ##    print STDERR "**** checking $opt_doc_secnum <=> $curr_secnum\n"; 
    843 ##    print STDERR "**** metamode = $metamode\n"; 
     842    print STDERR "**** checking $opt_doc_secnum <=> $curr_secnum\n" if (defined $opt_doc_secnum); 
     843   print STDERR "**** metamode = $metamode\n"; 
    844844     
    845845    if ((!defined $opt_doc_secnum) || ($opt_doc_secnum eq $curr_secnum))  
    846846    { 
    847847        my $name_attr = $attrHash->{'name'}; 
    848         # print STDOUT "*** testing: $name_attr eq $metaname ?   and  $metamode eq override ?\n"; 
     848        print STDOUT "*** testing: $name_attr eq $metaname ?   and  $metamode eq override ?\n"; 
    849849        if (($name_attr eq $metaname) && ($metamode eq "override"))  
    850850        { 
     
    858858            }  
    859859             
    860             if ((defined $parser->{'parameters'}->{'metapos'} && $parser->{'parameters'}->{'poscount'} == $parser->{'parameters'}->{'metapos'}) 
    861                 || (!defined $parser->{'parameters'}->{'metapos'} && $parser->{'parameters'}->{'poscount'} == 0)) 
    862                  
    863             { 
    864                 ##print STDERR "#### got match!!\n"; 
     860            if (defined $parser->{'parameters'}->{'metapos'}) { 
     861 
     862                if ($parser->{'parameters'}->{'poscount'} == $parser->{'parameters'}->{'metapos'}) { 
     863                print STDERR "#### got pos match!!\n"; 
    865864                # Get the value and override the current value 
    866865                my $metavalue = $parser->{'parameters'}->{'metavalue'}; 
     
    868867                 
    869868                # Don't want it to wipe out any other pieces of metadata 
    870                 $parser->{'parameters'}->{'metamode'} = "done"; 
     869                $parser->{'parameters'}->{'metamode'} = "done"; 
     870                } 
    871871            } 
    872             elsif (defined $parser->{'parameters'}->{'prevmetavalue'} && $parser->{'parameters'}->{'prevmetavalue'} eq $attrHash->{'_content'}) 
    873             { 
     872            elsif (defined $parser->{'parameters'}->{'prevmetavalue'}) { 
     873                if ($parser->{'parameters'}->{'prevmetavalue'} eq $attrHash->{'_content'}) { 
     874                print STDERR "### prev meta value matches\n"; 
    874875                my $metavalue = $parser->{'parameters'}->{'metavalue'}; 
    875876                $attrHash->{'_content'} = $metavalue; 
    876877                $parser->{'parameters'}->{'metamode'} = "done"; 
     878 
     879                } 
    877880            } 
     881            elsif ($parser->{'parameters'}->{'poscount'} == 0) { # explicit catch all 
     882                print STDERR "#### got pos match!!\n"; 
     883                # Get the value and override the current value 
     884                my $metavalue = $parser->{'parameters'}->{'metavalue'}; 
     885                $attrHash->{'_content'} = $metavalue; 
     886                 
     887                # Don't want it to wipe out any other pieces of metadata 
     888                $parser->{'parameters'}->{'metamode'} = "done"; 
     889 
     890                 
     891            } 
     892 
     893             
     894             
    878895        } 
    879     } 
     896    } 
    880897 
    881898    # RAW is [$tagname => $attrHash] not $tagname => $attrHash!!