diff --git a/acqui.simple/addbiblio.pl b/acqui.simple/addbiblio.pl
index 261bfd4374..e1769dcf0a 100755
--- a/acqui.simple/addbiblio.pl
+++ b/acqui.simple/addbiblio.pl
@@ -46,11 +46,10 @@ sub find_value {
}
sub MARCfindbreeding {
- my ($dbh,$isbn) = @_;
- my $sth = $dbh->prepare("select file,marc from marc_breeding where isbn=?");
- $sth->execute($isbn);
+ my ($dbh,$id) = @_;
+ my $sth = $dbh->prepare("select file,marc from marc_breeding where id=?");
+ $sth->execute($id);
my ($file,$marc) = $sth->fetchrow;
-# $marc = char_decode($marc);
if ($marc) {
my $record = MARC::File::USMARC::decode($marc);
if (ref($record) eq undef) {
@@ -62,101 +61,11 @@ sub MARCfindbreeding {
return -1;
}
-# some special chars in ISO 2709 (ISO 6630 and ISO 646 set)
-
-my $IS3 = '\x1d' ; # IS3 : record end
-my $IS2 = '\x1e' ; # IS2 : field end
-my $IS1 = '\x1f' ; # IS1 : begin subfield
-my $NSB = '\x88' ; # NSB : begin Non Sorting Block
-my $NSE = '\x89' ; # NSE : Non Sorting Block end
-
-sub char_decode {
- # converts ISO 5426 coded string to ISO 8859-1
- # sloppy code : should be improved in next issue
- my ($string) = @_ ;
- $_ = $string ;
- if(/[\xc1-\xff]/) {
- s/\xe1/Æ/gm ;
- s/\xe2/Ð/gm ;
- s/\xe9/Ø/gm ;
- s/\xec/þ/gm ;
- s/\xf1/æ/gm ;
- s/\xf3/ð/gm ;
- s/\xf9/ø/gm ;
- s/\xfb/ß/gm ;
- s/\xc1\x61/à/gm ;
- s/\xc1\x65/è/gm ;
- s/\xc1\x69/ì/gm ;
- s/\xc1\x6f/ò/gm ;
- s/\xc1\x75/ù/gm ;
- s/\xc1\x41/À/gm ;
- s/\xc1\x45/È/gm ;
- s/\xc1\x49/Ì/gm ;
- s/\xc1\x4f/Ò/gm ;
- s/\xc1\x55/Ù/gm ;
- s/\xc2\x41/Á/gm ;
- s/\xc2\x45/É/gm ;
- s/\xc2\x49/Í/gm ;
- s/\xc2\x4f/Ó/gm ;
- s/\xc2\x55/Ú/gm ;
- s/\xc2\x59/Ý/gm ;
- s/\xc2\x61/á/gm ;
- s/\xc2\x65/é/gm ;
- s/\xc2\x69/í/gm ;
- s/\xc2\x6f/ó/gm ;
- s/\xc2\x75/ú/gm ;
- s/\xc2\x79/ý/gm ;
- s/\xc3\x41/Â/gm ;
- s/\xc3\x45/Ê/gm ;
- s/\xc3\x49/Î/gm ;
- s/\xc3\x4f/Ô/gm ;
- s/\xc3\x55/Û/gm ;
- s/\xc3\x61/â/gm ;
- s/\xc3\x65/ê/gm ;
- s/\xc3\x69/î/gm ;
- s/\xc3\x6f/ô/gm ;
- s/\xc3\x75/û/gm ;
- s/\xc4\x41/Ã/gm ;
- s/\xc4\x4e/Ñ/gm ;
- s/\xc4\x4f/Õ/gm ;
- s/\xc4\x61/ã/gm ;
- s/\xc4\x6e/ñ/gm ;
- s/\xc4\x6f/õ/gm ;
- s/\xc8\x45/Ë/gm ;
- s/\xc8\x49/Ï/gm ;
- s/\xc8\x65/ë/gm ;
- s/\xc8\x69/ï/gm ;
- s/\xc8\x76/ÿ/gm ;
- s/\xc9\x41/Ä/gm ;
- s/\xc9\x4f/Ö/gm ;
- s/\xc9\x55/Ü/gm ;
- s/\xc9\x61/ä/gm ;
- s/\xc9\x6f/ö/gm ;
- s/\xc9\x75/ü/gm ;
- s/\xca\x41/Å/gm ;
- s/\xca\x61/å/gm ;
- s/\xd0\x43/Ç/gm ;
- s/\xd0\x63/ç/gm ;
- }
- # this handles non-sorting blocks (if implementation requires this)
- $string = nsb_clean($_) ;
- return($string) ;
-}
-
-sub nsb_clean {
- # handles non sorting blocks
- my ($string) = @_ ;
- $_ = $string ;
- s/$NSB/(/gm ;
- s/[ ]{0,1}$NSE/) /gm ;
- $string = $_ ;
- return($string) ;
-}
my $input = new CGI;
my $error = $input->param('error');
my $oldbiblionumber=$input->param('oldbiblionumber'); # if bib exists, it's a modif, not a new biblio.
-my $isbn = $input->param('isbn');
+my $breedingid = $input->param('breedingid');
my $op = $input->param('op');
my $dbh = C4::Context->dbh;
my $bibid;
@@ -178,7 +87,7 @@ my $tagslib = &MARCgettagslib($dbh,1);
my $record=-1;
$record = MARCgetbiblio($dbh,$bibid) if ($bibid);
#warn "1= ".$record->as_formatted;
-$record = MARCfindbreeding($dbh,$isbn) if ($isbn);
+$record = MARCfindbreeding($dbh,$breedingid) if ($breedingid);
my $is_a_modif=0;
my ($oldbiblionumtagfield,$oldbiblionumtagsubfield);
my ($oldbiblioitemnumtagfield,$oldbiblioitemnumtagsubfield,$bibitem,$oldbiblioitemnumber);
@@ -248,7 +157,7 @@ if ($op eq "addbiblio") {
# if breeding is not empty
if ($record ne -1) {
my ($x,$value) = find_value($tag,$subfield,$record);
- $value=char_decode($value);
+ $value=char_decode($value) unless ($is_a_modif);
$indicator = $x if $x;
if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
my @authorised_values;
@@ -303,7 +212,7 @@ if ($op eq "addbiblio") {
} else {
my ($x,$value);
($x,$value) = find_value($tag,$subfield,$record) if ($record ne -1);
- $value=char_decode($value);
+ $value=char_decode($value) unless ($is_a_modif);
if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
my @authorised_values;
my %authorised_lib;
diff --git a/acqui.simple/isbnsearch.pl b/acqui.simple/isbnsearch.pl
index 20c7d94cd4..790f9bdc44 100755
--- a/acqui.simple/isbnsearch.pl
+++ b/acqui.simple/isbnsearch.pl
@@ -30,6 +30,7 @@ use HTML::Template;
my $input = new CGI;
my $isbn = $input->param('isbn');
+my $title = $input->param('title');
my $offset = $input->param('offset');
my $num = $input->param('num');
my $showoffset = $offset + 1;
@@ -44,9 +45,10 @@ my ($template, $loggedinuser, $cookie)
flagsrequired => {catalogue => 1},
debug => 1,
});
-if (! $isbn) {
+if (! $isbn && !$title) {
print $input->redirect('addbooks.pl');
} else {
+ # fill with books in ACTIVE DB (biblio)
if (! $offset) {
$offset = 0;
$showoffset = 1;
@@ -84,11 +86,24 @@ if (! $isbn) {
$row_data{num} = $num;
push (@loop_links,\%row_data);
} # for
+ # fill with books in breeding farm
+ ($count, @results) = breedingsearch($title,$isbn);
+ my @breeding_loop = ();
+ for (my $i=0; $i <= $#results; $i++) {
+ my %row_data;
+ $row_data{id} = $results[$i]->{'id'};
+ $row_data{isbn} = $results[$i]->{'isbn'};
+ $row_data{file} = $results[$i]->{'file'};
+ $row_data{title} = $results[$i]->{'title'};
+ $row_data{author} = $results[$i]->{'author'};
+ push (@breeding_loop, \%row_data);
+ }
$template->param(isbn => $isbn,
showoffset => $showoffset,
total => $total,
offset => $offset,
loop => \@loop_data,
+ breeding_loop => \@breeding_loop,
loop_links => \@loop_links);
print $input->header(
diff --git a/acqui.simple/marcimport.pl b/acqui.simple/marcimport.pl
index 0570cfe23b..afaaf7e500 100755
--- a/acqui.simple/marcimport.pl
+++ b/acqui.simple/marcimport.pl
@@ -86,8 +86,9 @@ if ($uploadmarc && length($uploadmarc)>0) {
my $dbh = C4::Context->dbh;
my $searchisbn = $dbh->prepare("select biblioitemnumber from biblioitems where isbn=?");
my $searchissn = $dbh->prepare("select biblioitemnumber from biblioitems where issn=?");
- my $searchbreeding = $dbh->prepare("select isbn from marc_breeding where isbn=?");
- my $insertsql = $dbh->prepare("replace into marc_breeding (file,isbn,title,marc) values(?,?,?,?)");
+ my $searchbreeding = $dbh->prepare("select id from marc_breeding where isbn=?");
+ my $insertsql = $dbh->prepare("insert into marc_breeding (file,isbn,title,author,marc) values(?,?,?,?,?)");
+ my $replacesql = $dbh->prepare("update marc_breeding set file=?,isbn=?,title=?,author=?,marc=? where id=?");
# fields used for import results
my $imported=0;
my $alreadyindb = 0;
@@ -99,42 +100,44 @@ if ($uploadmarc && length($uploadmarc)>0) {
$notmarcrecord++;
} else {
my $oldbiblio = MARCmarc2koha($dbh,$marcrecord);
+ $oldbiblio->{title} = char_decode($oldbiblio->{title});
+ $oldbiblio->{author} = char_decode($oldbiblio->{author});
# if isbn found and biblio does not exist, add it. If isbn found and biblio exists, overwrite or ignore depending on user choice
- if ($oldbiblio->{isbn} || $oldbiblio->{issn}) {
- # drop every "special" char : spaces, - ...
- $oldbiblio->{isbn} =~ s/ |-|\.//g,
- # search if biblio exists
- my $biblioitemnumber;
- if ($oldbiblio->{isbn}) {
- $searchisbn->execute($oldbiblio->{isbn});
- ($biblioitemnumber) = $searchisbn->fetchrow;
- } else {
- $searchissn->execute($oldbiblio->{issn});
- ($biblioitemnumber) = $searchissn->fetchrow;
- }
- if ($biblioitemnumber) {
- $alreadyindb++;
- } else {
- # search in breeding farm
- my $breedingresult;
- if ($oldbiblio->{isbn}) {
- $searchbreeding->execute($oldbiblio->{isbn});
- ($breedingresult) = $searchbreeding->fetchrow;
- } else {
- $searchbreeding->execute($oldbiblio->{issn});
- ($breedingresult) = $searchbreeding->fetchrow;
- }
- if (!$breedingresult || $overwrite_biblio) {
- my $recoded;
- $recoded = $marcrecord->as_usmarc();
- $insertsql ->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$recoded);
- $imported++;
- } else {
- $alreadyinfarm++;
- }
- }
+ # drop every "special" char : spaces, - ...
+ $oldbiblio->{isbn} =~ s/ |-|\.//g,
+ # search if biblio exists
+ my $biblioitemnumber;
+ if ($oldbiblio->{isbn}) {
+ $searchisbn->execute($oldbiblio->{isbn});
+ ($biblioitemnumber) = $searchisbn->fetchrow;
} else {
- $notmarcrecord++;
+ $searchissn->execute($oldbiblio->{issn});
+ ($biblioitemnumber) = $searchissn->fetchrow;
+ }
+ if ($biblioitemnumber) {
+ $alreadyindb++;
+ } else {
+ # search in breeding farm
+ my $breedingid;
+ if ($oldbiblio->{isbn}) {
+ $searchbreeding->execute($oldbiblio->{isbn});
+ ($breedingid) = $searchbreeding->fetchrow;
+ } else {
+ $searchbreeding->execute($oldbiblio->{issn});
+ ($breedingid) = $searchbreeding->fetchrow;
+ }
+ if (!$breedingid || $overwrite_biblio) {
+ my $recoded;
+ $recoded = $marcrecord->as_usmarc();
+ if ($breedingid) {
+ $replacesql ->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$oldbiblio->{author},$recoded,$breedingid);
+ } else {
+ $insertsql ->execute($filename,$oldbiblio->{isbn}.$oldbiblio->{issn},$oldbiblio->{title},$oldbiblio->{author},$recoded);
+ }
+ $imported++;
+ } else {
+ $alreadyinfarm++;
+ }
}
}
}
@@ -803,6 +806,9 @@ sub FormatMarcText {
#---------------
# log cleared, as marcimport is (almost) rewritten from scratch.
# $Log$
+# Revision 1.26 2003/01/23 12:26:41 tipaul
+# upgrading import in breeding farm (you can now search on ISBN or on title) AND character encoding.
+#
# Revision 1.25 2003/01/21 08:13:50 tipaul
# character encoding ISO646 => 8859-1, first draft
#
diff --git a/koha-tmpl/intranet-tmpl/default/en/acqui.simple/addbooks.tmpl b/koha-tmpl/intranet-tmpl/default/en/acqui.simple/addbooks.tmpl
index acb15a2a94..903464f534 100644
--- a/koha-tmpl/intranet-tmpl/default/en/acqui.simple/addbooks.tmpl
+++ b/koha-tmpl/intranet-tmpl/default/en/acqui.simple/addbooks.tmpl
@@ -22,20 +22,23 @@
To add a new biblio/item, scan or type the ISBN/ISSN number: |
-
+
@@ -83,22 +86,5 @@
-
-
-
-Koha stores data in three sections
-
-Biblio
-The first section records bibliographic data such as title, author and copyright for a particular work.
-
-Group
-The second records bibliographic data for a particular publication of that work, such as ISBN number, physical description, publisher information, etc
-
-Item
-The third section holds specific item information, such as the bar code number
diff --git a/koha-tmpl/intranet-tmpl/default/en/acqui.simple/isbnsearch.tmpl b/koha-tmpl/intranet-tmpl/default/en/acqui.simple/isbnsearch.tmpl
index ee5a9858ac..4a23ce61b6 100644
--- a/koha-tmpl/intranet-tmpl/default/en/acqui.simple/isbnsearch.tmpl
+++ b/koha-tmpl/intranet-tmpl/default/en/acqui.simple/isbnsearch.tmpl
@@ -2,30 +2,64 @@
Biblio Search Results
-You searched on ISBN , results found
+You searched on ISBN title
+ results found
Results to displayed
-
-
-
-| TITLE |
-AUTHOR |
-© |
-Items |
-
-
-
- ">
-
- |
- |
- ">Edit... |
+
+
+
+ | Title |
+ Author |
+ © |
+ |
+
+
+ ">
+
+ |
+ |
+ ">Edit... |
+ |
+
+
+
+
+
+ | Biblios in breeding farm |
+
+
+
+
&offset=&num=">
|