David Cook
1e0b890b0c
This patch introduces a new Z39.50 interface for searching Z39.50 compliant databases for MARC authority records. These databases aren't as common as their bibliographic equivalents, but they're out there and very useful. I have included info at the bottom of this messsage for sample authority databases you can try. To test this patch: 1) Set up Z39.50 client targets for authority databases. (I've included information at the bottom of this message for LibrariesAustralia's test server for authorities as well as instructions on how to use your Koha's z39.50 authority server as well. The Library of Congress also has authority databases available (unsure if these are test or prod), and you might have access to others through OCLC or RLIN. OCLC provides login credentials for their test databases. 2) Go to the Authorities module 3) Click on the new "Z39.50 search button" 4) Select your authority search targets from the list. 5) Do a search for an authority you would like using either the "Raw" input box or the more specific input boxes for names, subjects, subject sub divisions, or titles. (I like searching Name (personal): Eric on the LibrariesAustralia test DB.) 6) You should see a table listing the server, heading, authority type, and two other columns (MARC and a nameless column). "Authority type" is the type of authority it will become when imported in to Koha. In the Eric example, "PERSO_NAME". 7) Click on "MARC" next to the results of interest to review the MARC authority record. 8) When you're satisfied with a record, click on "Import". 9) The pop-up window will close and your original Koha window will change to the "Adding authority Personal Name" screen (in the Eric example). 10) All the relevant fields should be filled out for the record. Review them and make any changes as necessary. (N.B. The 001 will be cleared when saved, so if you have a use for the imported control number, move it to the 010, 016, or 035 as appropriate. If you have a default value for the 003, this will also likely be overwritten. Move it if necessary. The 005 will also be updated when saved, so do not worry about that.) 11) When you're satisfied, click save. 12) Presto! You've imported your first authority record via Z39.50! -- Here is the info for the LibrariesAustralia test Z39.50 authority database: Z39.50 server: LibrariesAustralia Authorities Hostname: z3950-test.librariesaustralia.nla.gov.au Port: 210 Database: AuthTraining Userid: ANLEZ Password: z39.50 Syntax: MARC21/USMARC Encoding: utf8 - The U.S.A. Library of Congress also provides Z39.50 access to its Name and Subject Authorities (http://www.loc.gov/z3950/lcserver.html). Name Authority: Z39.50 server: Library of Congress Name Authority File Hostname: lx2.loc.gov Port: 210 Database: NAF Syntax: MARC21/USMARC Encoding: utf8 Subject Authority: Z39.50 server: Library of Congress Subject Authority File Hostname: lx2.loc.gov Port: 210 Database: SAF Syntax: MARC21/USMARC Encoding: utf8 (N.B. Both of these databases also include title authorities.) - For testing purposes, you can also set up a Z39.50 client target, which points at your own Koha instance's Z39.50 authority server. To find the hostname, go to /etc/koha-conf.xml and find the value for the <listen id="authorityserver"> element. Depending on your configuration, this could be something like the following: unix:/zebra/koha/var/run/zebradb/authoritysocket (N.B. You might be using a different scheme than unix sockets...) To find the database, scroll down to the bottom of koha-conf.xml until you reach the <config> element. Within this, look for the value of the element <authorityserver>. It should probably be "authorities". To set up this Z39.50 client target in Koha... Z39.50 server: my koha authorities Hostname: unix:/zebra/koha/var/run/zebradb/authoritysocket Port: Database: authorities Userid: Password: Syntax: MARC21/USMARC (or whichever flavour you need) Encoding: utf8 Signed-off-by: Mason James <mtj@kohaaloha.com> Bug 10096 [FOLLOW-UP] - Add a z39.50 interface for authority searching This patch adds the "recordtype" column to the "z3950servers" table. The value in this column (biblio or authority) then controls whether the z3950 server shows up in a bibliographic search (through the Acq and Cataloguing modules) or in an authority search (through the Authorities module). I also edited the z3950 management console to show this value and allow users to edit it. The default value is "biblio", since the vast majority of z3950 targets will be bibliographic. However, there is an option to add/edit a z3950 target as a source of authority records. Test Plan: 1) Apply both patches 2) Run updatedatabase.pl (after setting your KOHA_CONF and PERL5 environmental variables) 3) Use the test plan from the 1st patch N.B. Make sure that your Z39.50 client target has a Record Type of Authority, otherwise it won't display when you're doing a Z3950 search for authorities. Signed-off-by: Mason James <mtj@kohaaloha.com> Bug 10096 [FOLLOW-UP] - fix tabs/whitespace errors to pass QA Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
112 lines
3.6 KiB
Perl
Executable file
112 lines
3.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# This is a completely new Z3950 clients search using async ZOOM -TG 02/11/06
|
|
# Copyright 2000-2002 Katipo Communications
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
use strict;
|
|
use warnings;
|
|
use CGI;
|
|
|
|
use C4::Auth;
|
|
use C4::Output;
|
|
use C4::Context;
|
|
use C4::Breeding;
|
|
use C4::Koha;
|
|
|
|
my $input = new CGI;
|
|
my $dbh = C4::Context->dbh;
|
|
my $error = $input->param('error');
|
|
my $biblionumber = $input->param('biblionumber') || 0;
|
|
my $frameworkcode = $input->param('frameworkcode');
|
|
my $title = $input->param('title');
|
|
my $author = $input->param('author');
|
|
my $isbn = $input->param('isbn');
|
|
my $issn = $input->param('issn');
|
|
my $lccn = $input->param('lccn');
|
|
my $lccall = $input->param('lccall');
|
|
my $subject = $input->param('subject');
|
|
my $dewey = $input->param('dewey');
|
|
my $controlnumber = $input->param('controlnumber');
|
|
my $stdid = $input->param('stdid');
|
|
my $srchany = $input->param('srchany');
|
|
my $op = $input->param('op')||'';
|
|
|
|
my $page = $input->param('current_page') || 1;
|
|
$page = $input->param('goto_page') if $input->param('changepage_goto');
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user({
|
|
template_name => "cataloguing/z3950_search.tmpl",
|
|
query => $input,
|
|
type => "intranet",
|
|
authnotrequired => 1,
|
|
flagsrequired => { catalogue => 1 },
|
|
});
|
|
|
|
$template->param(
|
|
frameworkcode => $frameworkcode,
|
|
isbn => $isbn,
|
|
issn => $issn,
|
|
lccn => $lccn,
|
|
lccall => $lccall,
|
|
title => $title,
|
|
author => $author,
|
|
controlnumber=> $controlnumber,
|
|
stdid => $stdid,
|
|
srchany => $srchany,
|
|
biblionumber => $biblionumber,
|
|
dewey => $dewey,
|
|
subject => $subject,
|
|
);
|
|
|
|
if ( $op ne "do_search" ) {
|
|
my $sth = $dbh->prepare("SELECT id,host,name,checked FROM z3950servers WHERE recordtype <> 'authority' ORDER BY rank, name");
|
|
$sth->execute();
|
|
my $serverloop = $sth->fetchall_arrayref( {} );
|
|
$template->param(
|
|
serverloop => $serverloop,
|
|
opsearch => "search",
|
|
);
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
exit;
|
|
}
|
|
|
|
my @id = $input->param('id');
|
|
if ( @id==0 ) {
|
|
# empty server list -> report and exit
|
|
$template->param( emptyserverlist => 1 );
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|
|
exit;
|
|
}
|
|
|
|
my $pars= {
|
|
biblionumber => $biblionumber,
|
|
page => $page,
|
|
id => \@id,
|
|
isbn => $isbn,
|
|
issn => $issn,
|
|
title => $title,
|
|
author => $author,
|
|
dewey => $dewey,
|
|
subject => $subject,
|
|
lccall => $lccall,
|
|
controlnumber => $controlnumber,
|
|
stdid => $stdid,
|
|
srchany => $srchany,
|
|
};
|
|
Z3950Search($pars, $template);
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|