Changeset 27167
- Timestamp:
- 2013-04-10T17:37:04+12:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm
r27162 r27167 717 717 my $prevmetavalue = $self->{'prevmetavalue'}; 718 718 719 my $metapos = $self->{'metapos'}; 720 $metapos = 0 if (!defined $metapos); 719 my $metapos = $self->{'metapos'}; # Don't append "|| undef", since if metapos=0 it will then be set to undef 720 721 # Don't set metapos=0 if it's undefined, as doing so will interfere when overriding all values for a metaname 722 # (all values for a metaname should get overridden if metamode=override combined with no user-defined metapos) 721 723 722 724 my $metamode = $self->{'metamode'}; … … 725 727 # delete any existing values) 726 728 $metamode = "accumulate"; 727 } 729 } 728 730 729 731 my $status = $self->set_archives_metadata_entry($gsdl_cgi,$archive_dir, $collect_dir,$collect, $infodbtype,$docid, … … 1312 1314 my $archives_dir = &util::filename_cat($collect_dir,$collect,"archives"); 1313 1315 my $doc_xml_filename = &util::filename_cat($archives_dir,$doc_xml_file); 1316 1317 # If we're overriding everything, then $metamode=override combined with $metapos=undefined 1318 # in which case, we need to remove all metavalues for the metaname at the given (sub)section 1319 # Thereafter, we will finally be setting the overriding metavalue for this metaname 1320 if(!defined $metapos && $metamode eq "override") { 1321 $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $doc_xml_file), $metaname, $metapos, undef, $docid_secnum, $metamode); 1322 } 1314 1323 1315 1324 # Edit the doc.xml file with the specified metadata name, value and position. … … 1466 1475 $metapos = 0; 1467 1476 } 1477 1478 my $metamode = $self->{'metamode'} || undef; 1468 1479 1469 1480 my $arcinfo_doc_filename = &dbutil::get_infodb_file_path($infodbtype, "archiveinf-doc", $archive_dir); … … 1473 1484 my $doc_filename = $doc_rec->{'doc-file'}->[0]; 1474 1485 1475 my $status = $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $doc_filename), $metaname, $metapos, $metavalue, $docid_secnum );1486 my $status = $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $doc_filename), $metaname, $metapos, $metavalue, $docid_secnum, $metamode); 1476 1487 # my $status = $self->remove_from_doc_xml($gsdl_cgi, &util::filename_cat($archive_dir, $doc_filename), $metaname, $metapos, undef, $docid_secnum); 1477 1488 … … 1523 1534 { 1524 1535 my $self = shift @_; 1525 my ($gsdl_cgi, $doc_xml_filename, $metaname, $metapos, $metavalue, $secid ) = @_;1536 my ($gsdl_cgi, $doc_xml_filename, $metaname, $metapos, $metavalue, $secid, $metamode) = @_; 1526 1537 1527 1538 my @start_rules = ('Section' => \&dxml_start_section); … … 1568 1579 else { 1569 1580 binmode($MOUT,":utf8"); 1570 $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, metavalue => $metavalue, secid => $secid });1581 $parser->filter($xml_in, $MOUT, {metaname => $metaname, metapos => $metapos, metavalue => $metavalue, secid => $secid, metamode => $metamode}); 1571 1582 close($MOUT); 1572 1583 } … … 1594 1605 { 1595 1606 $parser->{'parameters'}->{'poscount'}++; 1607 } 1608 1609 # if overriding but no metapos, then clear all the meta for this metaname 1610 if ((defined $parser->{'parameters'}->{'metamode'}) && ($parser->{'parameters'}->{'metamode'} eq "override") && (!defined $parser->{'parameters'}->{'metapos'})) { 1611 return []; 1596 1612 } 1597 1613 }
Note:
See TracChangeset
for help on using the changeset viewer.