Bug 6536: SRU servers administration
This patch makes adjustments in admin/z3950servers in order to insert, edit and delete SRU server records. Test plan: Add, edit, copy and delete SRU server. Check if adding, editing, copying and deleting Z3950 servers still works. 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:
parent
b124020968
commit
7748facfa5
|
|
@ -36,6 +36,7 @@ use Koha::Database;
|
|||
my $input = new CGI;
|
||||
my $op = $input->param('op') || 'list';
|
||||
my $id = $input->param('id') || 0;
|
||||
my $type = $input->param('type') || '';
|
||||
my $searchfield = '';
|
||||
|
||||
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( {
|
||||
|
|
@ -58,29 +59,28 @@ if( $op eq 'delete_confirmed' && $id ) {
|
|||
my $server = $schema->resultset('Z3950server')->find($id);
|
||||
if ( $server ) {
|
||||
$server->delete;
|
||||
$template->param( msg_deleted => 1, msg_add => $server->name );
|
||||
$template->param( msg_deleted => 1, msg_add => $server->servername );
|
||||
} else {
|
||||
$template->param( msg_notfound => 1, msg_add => $id );
|
||||
}
|
||||
$id = 0;
|
||||
} elsif ( $op eq 'add_validated' ) {
|
||||
my @fields=qw/host port db userid password rank syntax encoding timeout
|
||||
recordtype checked/;
|
||||
recordtype checked servername servertype sru_options sru_fields
|
||||
add_xslt/;
|
||||
my $formdata = _form_data_hashref( $input, \@fields );
|
||||
#add name from servername (an input with name="name" gave problems)
|
||||
$formdata->{name} = $input->param('servername');
|
||||
if( $id ) {
|
||||
my $server = $schema->resultset('Z3950server')->find($id);
|
||||
if ( $server ) {
|
||||
$server->update( $formdata );
|
||||
$template->param( msg_updated => 1, msg_add => $formdata->{name} );
|
||||
$template->param( msg_updated => 1, msg_add => $formdata->{servername} );
|
||||
} else {
|
||||
$template->param( msg_notfound => 1, msg_add => $id );
|
||||
}
|
||||
$id = 0;
|
||||
} else {
|
||||
$schema->resultset('Z3950server')->create( $formdata );
|
||||
$template->param( msg_added => 1, msg_add => $formdata->{name} );
|
||||
$template->param( msg_added => 1, msg_add => $formdata->{servername} );
|
||||
}
|
||||
} else {
|
||||
#use searchfield only in remaining operations
|
||||
|
|
@ -94,7 +94,7 @@ if ( $op eq 'add' || $op eq 'edit' ) {
|
|||
$data = ServerSearch( $schema, $id, $searchfield ) if $searchfield || $id;
|
||||
delete $data->[0]->{id} if @$data && $op eq 'add'; #cloning record
|
||||
$template->param( add_form => 1, server => @$data? $data->[0]: undef,
|
||||
op => $op );
|
||||
op => $op, type => $op eq 'add'? lc $type: '' );
|
||||
} else {
|
||||
$data = ServerSearch( $schema, $id, $searchfield );
|
||||
$template->param( loop => \@$data, searchfield => $searchfield, id => $id,
|
||||
|
|
@ -107,7 +107,7 @@ output_html_with_http_headers $input, $cookie, $template->output;
|
|||
sub ServerSearch { #find server(s) by id or name
|
||||
my ( $schema, $id, $searchstring )= @_;
|
||||
my $rs = $schema->resultset('Z3950server')->search(
|
||||
$id ? { id => $id }: { name => { like => $searchstring.'%' } },
|
||||
$id ? { id => $id }: { servername => { like => $searchstring.'%' } },
|
||||
{ result_class => 'DBIx::Class::ResultClass::HashRefInflator' }
|
||||
);
|
||||
return [ $rs->all ];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,16 @@
|
|||
[% INCLUDE 'doc-head-open.inc' %]
|
||||
|
||||
[% BLOCK ServerType %]
|
||||
[% IF (server.servertype||type) == 'sru' %]
|
||||
SRU
|
||||
[% ELSIF (server.servertype||type) == 'zed' %]
|
||||
Z39.50
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<title>Koha › Administration › Z39.50 servers
|
||||
[% IF op == 'edit' %] › Modify Z39.50 server [% server.name %][% END %]
|
||||
[% IF op == 'add' %] › New Z39.50 server[% END %]
|
||||
[% IF op == 'edit' %] › Modify [% PROCESS ServerType %] server [% server.servername %][% END %]
|
||||
[% IF op == 'add' %] › New [% PROCESS ServerType %] server[% END %]
|
||||
</title>
|
||||
[% INCLUDE 'doc-head-close.inc' %]
|
||||
|
||||
|
|
@ -20,6 +29,10 @@
|
|||
$("#encoding").val('[% server.encoding %]');
|
||||
$("#recordtype").val('[% server.recordtype %]');
|
||||
[% END %]
|
||||
// Disable recordtype (and default to bib) for non-Z3950 servers until auth is supported
|
||||
[% UNLESS (server.servertype||type) == 'zed' %]
|
||||
$("#recordtype").prop('disabled',true);
|
||||
[% END %]
|
||||
$( "#serverentry" ).validate({
|
||||
rules: {
|
||||
servername: { required: true },
|
||||
|
|
@ -33,7 +46,17 @@
|
|||
timeout: { number: true }
|
||||
}
|
||||
});
|
||||
$("#serverentry").submit(function( event ) {
|
||||
// copy show_sru_fields to hidden counterpart
|
||||
$('#sru_fields').val( $('#show_sru_fields').val() );
|
||||
// enable recordtype to include field in post
|
||||
$('#recordtype').prop('disabled',false);
|
||||
});
|
||||
});
|
||||
function ModMapping () {
|
||||
var map= $('#show_sru_fields').val();
|
||||
window.open('/cgi-bin/koha/admin/sru_modmapping.pl?mapping='+map,'popup','width=800,height=400,resizable=no,toolbar=false,scrollbars=no,top');
|
||||
}
|
||||
[% ELSE %]
|
||||
$(document).ready(function() {
|
||||
$("#serverst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
||||
|
|
@ -61,8 +84,8 @@
|
|||
|
||||
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> ›
|
||||
<a href="/cgi-bin/koha/admin/z3950servers.pl">Z39.50 servers</a>
|
||||
[% IF op == 'edit' %]› Modify Z39.50 server [% server.name %][% END %]
|
||||
[% IF op == 'add' %]› New Z39.50 server[% END %]
|
||||
[% IF op == 'edit' %]› Modify [% PROCESS ServerType %] server [% server.servername %][% END %]
|
||||
[% IF op == 'add' %]› New [% PROCESS ServerType %] server[% END %]
|
||||
</div>
|
||||
|
||||
<div id="doc3" class="yui-t2">
|
||||
|
|
@ -83,15 +106,16 @@
|
|||
[% IF ( add_form ) %]
|
||||
<form action="[% script_name %]" name="Aform" method="post" id="serverentry">
|
||||
<input type="hidden" name="op" value="add_validated" />
|
||||
<input type="hidden" name="servertype" value="[% server.servertype||type||'zed' %]"/>
|
||||
[% IF op == 'edit' %]
|
||||
<h1>Modify Z39.50 server</h1>
|
||||
<h1>Modify [% PROCESS ServerType %] server</h1>
|
||||
<input type="hidden" name="id" value="[% server.id %]" />
|
||||
[% ELSE %]
|
||||
<h1>New Z39.50 server</h1>
|
||||
<h1>New [% PROCESS ServerType %] server</h1>
|
||||
[% END %]
|
||||
<fieldset class="rows">
|
||||
<ol>
|
||||
<li><label for="name" class="required">Z39.50 server: </label><input type="text" name="servername" id="servername" size="65" maxlength="100" onblur="toUC(this)" value="[% server.name | html %]" required="required"/> <span class="required">Required</span></li>
|
||||
<li><label for="name">Server name: </label><input type="text" name="servername" id="servername" size="65" maxlength="100" onblur="toUC(this)" value="[% server.servername | html %]"/></li>
|
||||
|
||||
<li><label for="host" class="required">Hostname: </label> <input type="text" name="host" id="host" size="30" value="[% server.host %]" required="required" /> <span class="required">Required</span>
|
||||
</li>
|
||||
|
|
@ -151,6 +175,24 @@
|
|||
<option value="authority">Authority</option>
|
||||
</select>
|
||||
</li>
|
||||
[% IF (server.servertype||type) == 'sru' %]
|
||||
<li>
|
||||
<label for="sru_options">Additional SRU options: </label>
|
||||
<input type="text" name="sru_options" id="sru_options" size="50" value="[% server.sru_options %]"/>
|
||||
<span>( Separate options by commas. Example: sru=get,sru_version=1.1. See also http://www.indexdata.com/yaz/doc/zoom.html.)</span>
|
||||
</li>
|
||||
<li>
|
||||
<label for="sru_fields">SRU Search fields mapping: </label>
|
||||
<input type="hidden" name="sru_fields" id="sru_fields" value="[% server.sru_fields %]" />
|
||||
<input type="text" name="show_sru_fields" id="show_sru_fields" size="100" value="[% server.sru_fields %]" disabled/> <input type="button" value="Modify" onclick="ModMapping()" />
|
||||
</li>
|
||||
[% END %]
|
||||
<li>
|
||||
<label for="add_xslt">XSLT File(s) for transforming results: </label>
|
||||
<input type="text" name="add_xslt" id="add_xslt" size="100" value="[% server.add_xslt %]"/>
|
||||
<span>( Separate files by commas.)</span>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
</fieldset>
|
||||
|
||||
|
|
@ -160,7 +202,8 @@
|
|||
|
||||
[% IF op == 'list' %]
|
||||
<div id="toolbar" class="btn-toolbar">
|
||||
<a id="newserver" class="btn btn-small" href="/cgi-bin/koha/admin/z3950servers.pl?op=add"><i class="icon-plus"></i> New Z39.50 server</a>
|
||||
<a id="newserver" class="btn btn-small" href="/cgi-bin/koha/admin/z3950servers.pl?op=add&type=zed"><i class="icon-plus"></i> New Z39.50 server</a>
|
||||
<a id="newserver" class="btn btn-small" href="/cgi-bin/koha/admin/z3950servers.pl?op=add&type=sru"><i class="icon-plus"></i> New SRU server</a>
|
||||
</div>
|
||||
<h3>Z39.50 servers administration</h3>
|
||||
[% IF id %]
|
||||
|
|
@ -178,15 +221,15 @@
|
|||
[% ELSE %]
|
||||
<tr>
|
||||
[% END %]
|
||||
<td><a href="[% loo.script_name %]?op=edit&id=[% loo.id %]">[% loo.name %]</a></td><td>[% loo.host %]:[% loo.port %]</td><td>[% loo.db %]</td><td>[% loo.userid %]</td><td>[% IF loo.password %]########[% END %]</td><td>[% IF ( loo.checked ) %]Yes[% ELSE %]No[% END %]</td><td>[% loo.rank %]</td>
|
||||
<td>[% loo.syntax %]</td><td>[% loo.encoding %]</td><td>[% loo.timeout %]</td>
|
||||
<td><a href="[% loo.script_name %]?op=edit&id=[% loo.id %]">[% loo.servername %]</a></td><td>[% loo.host %]:[% loo.port %]</td><td>[% loo.db %]</td><td>[% loo.userid %]</td><td>[% IF loo.password %]########[% END %]</td><td>[% IF ( loo.checked ) %]Yes[% ELSE %]No[% END %]</td><td>[% loo.rank %]</td>
|
||||
<td>[% loo.syntax %]</td><td>[% loo.encoding %]</td><td>[% loo.timeout %]</td>
|
||||
<td>[% IF ( loo.recordtype == 'biblio' ) %]
|
||||
<span>Bibliographic</span>
|
||||
[% ELSIF ( loo.recordtype == 'authority' ) %]
|
||||
<span>Authority</span>
|
||||
[% END %]
|
||||
</td>
|
||||
<td><a href="[% loo.script_name %]?op=edit&id=[% loo.id %]">Edit</a> <a href="[% loo.script_name %]?op=add&id=[% loo.id %]">Copy</a> <a href="javascript:void(0);" onclick="ConfirmDelete('[% loo.name | replace("['\"]","") %]','[% loo.id %]');">Delete</a></td>
|
||||
<td><a href="[% loo.script_name %]?op=edit&id=[% loo.id %]">Edit</a> <a href="[% loo.script_name %]?op=add&id=[% loo.id %]">Copy</a> <a href="javascript:void(0);" onclick="ConfirmDelete('[% loo.servername | replace("['\"]","") %]','[% loo.id %]');">Delete</a></td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</tbody>
|
||||
|
|
|
|||
Loading…
Reference in New Issue