Bug 6536: Add a form for SRU Field mapping

This form allows you to enter the match between the standard names of
the Z3950 search fields and the field names for a specific SRU server.
This patch only adds the form; it will be used in a subsequent patch.

Test plan:
Not needed, but you can call the form by constructing a URL like:
    cgi-bin/koha/admin/sru_modmapping.pl?mapping=title=1,author=2
You should see the form with title and author filled.
Note that you cannot save the information yet.

Signed-off-by: Giuseppe Angilella <giuseppe.angilella@ct.infn.it>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Marcel de Rooy 2014-05-22 15:37:29 +02:00 committed by Tomas Cohen Arazi
parent 4e1aaa4d58
commit 88f26fa907
2 changed files with 137 additions and 0 deletions

46
admin/sru_modmapping.pl Executable file
View File

@ -0,0 +1,46 @@
#!/usr/bin/perl
# Copyright 2014 Rijksmuseum
#
# 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 3 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, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use CGI;
use C4::Auth;
use C4::Output;
# Initialize CGI, template
my $input = new CGI;
my $mapstr = $input->param('mapping')//'';
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( {
template_name => "admin/sru_modmapping.tt",
query => $input,
type => "intranet",
authnotrequired => 0,
});
# Main code: convert mapping string to hash structure and show template
my %map;
foreach my $singlemap ( split ',', $mapstr ) {
my @temp = split '=', $singlemap;
$map{ $temp[0] } = $temp[1] if @temp>1;
}
$template->param( mapping => \%map );
output_html_with_http_headers $input, $cookie, $template->output;
# End of main code

View File

@ -0,0 +1,91 @@
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; SRU Search fields mapping</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$("#form01").submit(function(event) {
if(window.opener) {
var newmap=allInputs();
window.opener.$('#show_sru_fields').val(newmap);
window.close();
} else {
// In this case not called as a popup. Just do nothing.
event.preventDefault();
}
});
});
function allInputs () {
var aInput= new Array();
$("form :input").each(function() {
if( this.id && $(this).val() ) {
aInput.push(this.id+'='+$(this).val());
}
});
return aInput.join(',');
}
//]]>
</script>
</head>
<body id="sru_modmapping">
<div id="custom-doc" class="yui-t7">
<div id="bd">
<h1>Modify SRU Search fields mapping</h1>
<form id="form01" method="post">
<fieldset class="rows">
<legend>Legend </legend>
<ul>
<li>
<label for="Title">Title: </label>
<input id="title" type="text" value="[% mapping.title %]" />
</li>
<li>
<label for="ISBN">ISBN: </label>
<input id="isbn" type="text" value="[% mapping.isbn %]" />
</li>
<li>
<label for="LCCall">LC Call No: </label>
<input id="lccall" type="text" value="[% mapping.lccall %]" />
</li>
<li>
<label for="Control number">Control no: </label>
<input id="controlnumber" type="text" value="[% mapping.controlnumber %]" />
</li>
<li>
<label for="Any">Any: </label>
<input id="srchany" type="text" value="[% mapping.srchany %]" />
</li>
<li>
<label for="Author">Author: </label>
<input id="author" type="text" value="[% mapping.author %]" />
</li>
<li>
<label for="ISSN">ISSN: </label>
<input id="issn" type="text" value="[% mapping.issn %]" />
</li>
<li>
<label for="Subject">Subject: </label>
<input id="subject" type="text" value="[% mapping.subject %]" />
</li>
<li>
<label for="Dewey">Dewey: </label>
<input id="dewey" type="text" value="[% mapping.dewey %]" />
</li>
<li>
<label for="Standard ID">Standard ID: </label>
<input id="stdid" type="text" value="[% mapping.stdid %]" />
</li>
</ul>
</fieldset>
<fieldset class="action">
<input type="submit" value="Save" class="submit" />
<a class="close cancel" href="#">Cancel</a>
</fieldset>
</form>
</div>
[% INCLUDE 'intranet-bottom.inc' %]