#!/usr/bin/perl
-# $Id$
# Copyright 2000-2002 Katipo Communications
#
use MARC::Record;
use C4::Log;
use C4::Koha; # XXX subfield_is_koha_internal_p
+use C4::Branch; # XXX subfield_is_koha_internal_p
+use C4::ClassSource;
+use C4::ImportBatch;
+
use Date::Calc qw(Today);
use MARC::File::USMARC;
use MARC::File::XML;
=item MARCfindbreeding
- $record = MARCfindbreeding($dbh, $breedingid);
+ $record = MARCfindbreeding($breedingid);
-Look up the breeding farm with database handle $dbh, for the
+Look up the import record repository for the record with
record with id $breedingid. If found, returns the decoded
MARC::Record; otherwise, -1 is returned (FIXME).
Returns as second parameter the character encoding.
=cut
sub MARCfindbreeding {
- my ( $dbh, $id ) = @_;
- my $sth =
- $dbh->prepare("select file,marc,encoding from marc_breeding where id=?");
- $sth->execute($id);
- my ( $file, $marc, $encoding ) = $sth->fetchrow;
+ my ( $id ) = @_;
+ my ($marc, $encoding) = GetImportRecordMarc($id);
+ # remove the - in isbn, koha store isbn without any -
if ($marc) {
my $record = MARC::Record->new_from_usmarc($marc);
- if ( $record->field('010') ) {
- foreach my $field ( $record->field('010') ) {
- foreach my $subfield ( $field->subfield('a') ) {
- my $newisbn = $field->subfield('a');
+ my ($isbnfield,$isbnsubfield) = GetMarcFromKohaField('biblioitems.isbn','');
+ if ( $record->field($isbnfield) ) {
+ foreach my $field ( $record->field($isbnfield) ) {
+ foreach my $subfield ( $field->subfield($isbnsubfield) ) {
+ my $newisbn = $field->subfield($isbnsubfield);
$newisbn =~ s/-//g;
- $field->update( 'a' => $newisbn );
+ $field->update( $isbnsubfield => $newisbn );
}
- # record->insert_fields_ordered($record->field('010'));
}
}
-
- if ($record->subfield(100,'a')) {
+ # fix the unimarc 100 coded field (with unicode information)
+ if (C4::Context->preference('marcflavour') eq 'UNIMARC' && $record->subfield(100,'a')) {
my $f100a=$record->subfield(100,'a');
my $f100 = $record->field(100);
my $f100temp = $f100->as_string;
return -1;
}
else {
+ # normalize author : probably UNIMARC specific...
if ( C4::Context->preference("z3950NormalizeAuthor")
and C4::Context->preference("z3950AuthorAuthFields") )
{
#---- branch
if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
- my $sth =
- $dbh->prepare(
- "select branchcode,branchname from branches order by branchname");
- $sth->execute;
- push @authorised_values, ""
- unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
-
- while ( my ( $branchcode, $branchname ) = $sth->fetchrow_array ) {
- push @authorised_values, $branchcode;
- $authorised_lib{$branchcode} = $branchname;
+ #Use GetBranches($onlymine)
+ my $onlymine=C4::Context->preference('IndependantBranches') &&
+ C4::Context->userenv &&
+ C4::Context->userenv->{flags}!=1 &&
+ C4::Context->userenv->{branch};
+ my $branches = GetBranches($onlymine);
+ my @branchloop;
+ foreach my $thisbranch ( sort keys %$branches ) {
+ push @authorised_values, $thisbranch;
+ $authorised_lib{$thisbranch} = $branches->{$thisbranch}->{'branchname'};
}
#----- itemtypes
}
$value = $itemtype unless ($value);
+ #---- class_sources
+ }
+ elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) {
+ push @authorised_values, ""
+ unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
+
+ my $class_sources = GetClassSources();
+
+ my $default_source = C4::Context->preference("DefaultClassificationSource");
+
+ foreach my $class_source (sort keys %$class_sources) {
+ next unless $class_sources->{$class_source}->{'used'} or
+ ($value and $class_source eq $value) or
+ ($class_source eq $default_source);
+ push @authorised_values, $class_source;
+ $authorised_lib{$class_source} = $class_sources->{$class_source}->{'description'};
+ $value = $class_source unless ($value);
+ $value = $default_source unless ($value);
+ }
#---- "true" authorised value
}
else {
index => $index_tag,
id => "tag_".$tag."_subfield_".$subfield."_".$index_tag."_".$index_subfield,
value => $value,
+ random => CreateKey(),
);
+ # deal with a <010 tag
if($subfield eq '@'){
$subfield_data{id} = "tag_".$tag."_subfield_00_".$index_tag."_".$index_subfield;
} else {
if(exists $mandatory_z3950->{$tag.$subfield}){
$subfield_data{z3950_mandatory} = $mandatory_z3950->{$tag.$subfield};
}
-
+ # decide if the subfield must be expanded (visible) by default or not
+ # if it is mandatory, then expand. If it is hidden explicitly by the hidden flag, hidden anyway
$subfield_data{visibility} = "display:none;"
if ( ($tagslib->{$tag}->{$subfield}->{hidden} % 2 == 1) and $value ne ''
or ($value eq '' and !$tagslib->{$tag}->{$subfield}->{mandatory})
);
-
+ # always expand all subfields of a mandatory field
+ $subfield_data{visibility} = "" if $tagslib->{$tag}->{mandatory};
# it's an authorised field
if ( $tagslib->{$tag}->{$subfield}->{authorised_value} ) {
$subfield_data{marc_value} =
}
elsif ( $tagslib->{$tag}->{$subfield}->{authtypecode} ) {
$subfield_data{marc_value} =
- "<input type=\"text\"
- id=\"".$subfield_data{id}."\"
- name=\"".$subfield_data{id}."\"
- value=\"$value\"
- class=\"input_marceditor\"
- tabindex=\"1\"
- disabled=\"disabled\" readonly=\"readonly\" \/>
- <span class=\"buttonDot\"
- onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}')\">...</span>
+ "<input type=\"text\"
+ id=\"".$subfield_data{id}."\"
+ name=\"".$subfield_data{id}."\"
+ value=\"$value\"
+ class=\"input_marceditor\"
+ tabindex=\"1\"
+ size=\"67\"
+ maxlength=\"255\"
+ \/>
+ <a href=\"#\" class=\"buttonDot\"
+ onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
";
# it's a plugin field
}
my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
unless ( opendir( DIR, "$cgidir" ) ) {
$cgidir = C4::Context->intranetdir . "/cataloguing/value_builder";
+ closedir( DIR );
}
my $plugin = $cgidir . "/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
- do $plugin || die "Plugin Failed: ".$plugin;
- my $extended_param = plugin_parameters( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
- my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
-# my ( $function_name, $javascript,$extended_param );
+ if (do $plugin) {
+ my $extended_param = plugin_parameters( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
+ my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
- $subfield_data{marc_value} =
- "<input tabindex=\"1\"
- type=\"text\"
+ $subfield_data{marc_value} =
+ "<input tabindex=\"1\"
+ type=\"text\"
+ id=\"".$subfield_data{id}."\"
+ name=\"".$subfield_data{id}."\"
+ value=\"$value\"
+ class=\"input_marceditor\"
+ onfocus=\"Focus$function_name($index_tag)\"
+ size=\"67\"
+ maxlength=\"255\"
+ onblur=\"Blur$function_name($index_tag); \" \/>
+ <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id})'; return false;)\" title=\"Tag Editor\">...</a>
+ $javascript";
+ } else {
+ warn "Plugin Failed: $plugin";
+ # supply default input form
+ $subfield_data{marc_value} =
+ "<input type=\"text\"
id=\"".$subfield_data{id}."\"
- name=\"".$subfield_data{id}."\"
- value=\"$value\"
+ name=\"".$subfield_data{id}."\"
+ value=\"$value\"
+ tabindex=\"1\"
+ size=\"67\"
+ maxlength=\"255\"
class=\"input_marceditor\"
- onfocus=\"Focus$function_name($index_tag)\"
- onblur=\"Blur$function_name($index_tag); \" \/>
- <span class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}')\">...</a>
- $javascript";
+ \/>
+ ";
+ }
# it's an hidden field
}
elsif ( $tag eq '' ) {
type=\"hidden\"
id=\"".$subfield_data{id}."\"
name=\"".$subfield_data{id}."\"
+ size=\"67\"
+ maxlength=\"255\"
value=\"$value\" \/>
";
}
name=\"".$subfield_data{id}."\"
class=\"input_marceditor\"
tabindex=\"1\"
+ size=\"67\"
+ maxlength=\"255\"
value=\"$value\"
\/>";
name=\"".$subfield_data{id}."\"
class=\"input_marceditor\"
tabindex=\"1\"
+ size=\"67\"
+ maxlength=\"255\"
>$value</textarea>
";
}
name=\"".$subfield_data{id}."\"
value=\"$value\"
tabindex=\"1\"
+ size=\"67\"
+ maxlength=\"255\"
class=\"input_marceditor\"
\/>
";
tag_lib => $tagslib->{$tag}->{lib},
repeatable => $tagslib->{$tag}->{repeatable},
subfield_loop => \@subfields_data,
- fixedfield => ($tag < 10)?(1):(0),
+ fixedfield => $tag < 10?1:0,
random => CreateKey,
);
if ($tag >= 010){ # no indicator for theses tag
indicator => $indicator,
subfield_loop => \@subfields_data,
tagfirstsubfield => $subfields_data[0],
- fixedfield => ($tag < 10)?(1):(0)
+ fixedfield => $tag < 10?1:0,
);
push @loop_data, \%tag_data ;
$record = GetMarcBiblio($biblionumber);
}
if ($breedingid) {
- ( $record, $encoding ) = MARCfindbreeding( $dbh, $breedingid ) ;
+ ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ;
}
$is_a_modif = 0;