Lines 2142-2147
sub TransformHtmlToMarc {
Link Here
|
2142 |
my $record = MARC::Record->new(); |
2142 |
my $record = MARC::Record->new(); |
2143 |
my $i = 0; |
2143 |
my $i = 0; |
2144 |
my @fields; |
2144 |
my @fields; |
|
|
2145 |
#FIXME This code assumes that the CGI params will be in the same order as the fields in the template; this is no absolute guarantee! |
2145 |
while ( $params[$i] ) { # browse all CGI params |
2146 |
while ( $params[$i] ) { # browse all CGI params |
2146 |
my $param = $params[$i]; |
2147 |
my $param = $params[$i]; |
2147 |
my $newfield = 0; |
2148 |
my $newfield = 0; |
Lines 2181-2199
sub TransformHtmlToMarc {
Link Here
|
2181 |
|
2182 |
|
2182 |
# > 009, deal with subfields |
2183 |
# > 009, deal with subfields |
2183 |
} else { |
2184 |
} else { |
2184 |
while ( defined $params[$j] && $params[$j] =~ /_code_/ ) { # browse all it's subfield |
2185 |
# browse subfields for this tag (reason for _code_ match) |
2185 |
my $inner_param = $params[$j]; |
2186 |
while(defined $params[$j] && $params[$j] =~ /_code_/) { |
2186 |
if ($newfield) { |
2187 |
last unless defined $params[$j+1]; |
2187 |
if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) { # only if there is a value (code => value) |
2188 |
#if next param ne subfield, then it was probably empty |
2188 |
$newfield->add_subfields( $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ) ); |
2189 |
#try next param by incrementing j |
2189 |
} |
2190 |
if($params[$j+1]!~/_subfield_/) {$j++; next; } |
2190 |
} else { |
2191 |
my $fval= $cgi->param($params[$j+1]); |
2191 |
if ( $cgi->param( $params[ $j + 1 ] ) ne '' ) { # creating only if there is a value (code => value) |
2192 |
#check if subfield value not empty and field exists |
2192 |
$newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($inner_param) => $cgi->param( $params[ $j + 1 ] ), ); |
2193 |
if($fval ne '' && $newfield) { |
2193 |
} |
2194 |
$newfield->add_subfields( $cgi->param($params[$j]) => $fval); |
|
|
2195 |
} |
2196 |
elsif($fval ne '') { |
2197 |
$newfield = MARC::Field->new( $tag, $ind1, $ind2, $cgi->param($params[$j]) => $fval ); |
2194 |
} |
2198 |
} |
2195 |
$j += 2; |
2199 |
$j += 2; |
2196 |
} |
2200 |
} #end-of-while |
|
|
2201 |
$i= $j-1; #update i for outer loop accordingly |
2197 |
} |
2202 |
} |
2198 |
push @fields, $newfield if ($newfield); |
2203 |
push @fields, $newfield if ($newfield); |
2199 |
} |
2204 |
} |
2200 |
- |
|
|