382 lines
21 KiB
Plaintext
382 lines
21 KiB
Plaintext
[% USE raw %]
|
|
[% USE Koha %]
|
|
[% USE Asset %]
|
|
[% USE HtmlTags %]
|
|
[% USE Branches %]
|
|
[% PROCESS 'i18n.inc' %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
|
|
[% IF (server.servertype||type) == 'sru' %]
|
|
[% SET servertype = "SRU" %]
|
|
[% ELSIF (server.servertype||type) == 'zed' %]
|
|
[% SET servertype = "Z39.50" %]
|
|
[% END %]
|
|
|
|
<title
|
|
>[% FILTER collapse %]
|
|
[% IF op == 'edit_form' %]
|
|
[% tx("Modify {servertype} server '{servername}'", { servertype = servertype, servername = server.servername }) | html %]
|
|
›
|
|
[% ELSIF op == 'add_form' %]
|
|
[% tx("New {servertype} server", { servertype = servertype }) | html %]
|
|
›
|
|
[% ELSIF searchfield %]
|
|
[% tx("Search results for '{search_keyword}'", { search_keyword = searchfield }) | html %]
|
|
›
|
|
[% END %]
|
|
[% t("Z39.50/SRU servers") | html %]
|
|
› [% t("Administration") | html %] › [% t("Koha") | html %]
|
|
[% END %]</title
|
|
>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
</head>
|
|
|
|
<body id="admin_z3950servers" class="admin">
|
|
[% WRAPPER 'header.inc' %]
|
|
[% INCLUDE 'z3950-admin-search.inc' %]
|
|
[% END %]
|
|
|
|
[% WRAPPER 'sub-header.inc' %]
|
|
[% WRAPPER breadcrumbs %]
|
|
[% WRAPPER breadcrumb_item %]
|
|
<a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
|
|
[% END %]
|
|
|
|
[% IF op == 'edit_form' || op == 'add_form' || searchfield %]
|
|
[% WRAPPER breadcrumb_item %]
|
|
<a href="/cgi-bin/koha/admin/z3950servers.pl">Z39.50/SRU servers</a>
|
|
[% END %]
|
|
[% END %]
|
|
|
|
[% IF op == 'edit_form' %]
|
|
[% WRAPPER breadcrumb_item bc_active= 1 %]
|
|
[% tx("Modify {servertype} server '{servername}'", { servertype = servertype, servername = server.servername }) | html %]
|
|
[% END %]
|
|
[% ELSIF op == 'add_form' %]
|
|
[% WRAPPER breadcrumb_item bc_active= 1 %]
|
|
[% tx("New {servertype} server", { servertype = servertype }) | html %]
|
|
[% END %]
|
|
[% ELSIF searchfield %]
|
|
[% WRAPPER breadcrumb_item bc_active= 1 %]
|
|
[% tx("Search results for '{search_keyword}'", { search_keyword = searchfield }) | html %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% WRAPPER breadcrumb_item bc_active= 1 %]
|
|
<span>Z39.50/SRU servers</span>
|
|
[% END %]
|
|
[% END %]
|
|
[% END #/ WRAPPER breadcrumbs %]
|
|
[% END #/ WRAPPER sub-header.inc %]
|
|
|
|
[% WRAPPER 'main-container.inc' aside='admin-menu' %]
|
|
|
|
[% IF msg_deleted %]
|
|
<div class="alert alert-warning">Z39.50/SRU server deleted ([% msg_add | html %])</div>
|
|
[% ELSIF msg_updated %]
|
|
<div class="alert alert-info">Z39.50/SRU server updated ([% msg_add | html %])</div>
|
|
[% ELSIF msg_added %]
|
|
<div class="alert alert-info">Z39.50/SRU server added ([% msg_add | html %])</div>
|
|
[% ELSIF msg_notfound %]
|
|
<div class="alert alert-warning">Error: Server with ID [% msg_add | html %] not found</div>
|
|
[% END %]
|
|
|
|
[% IF op == 'edit_form' || op == 'add_form' %]
|
|
<form action="/cgi-bin/koha/admin/z3950servers.pl" name="Aform" method="post" id="serverentry">
|
|
[% INCLUDE 'csrf-token.inc' %]
|
|
[% IF op == 'edit_form' %]
|
|
<h1>[% tx("Modify {servertype} server '{servername}'", { servertype = servertype, servername = server.servername }) | html %]</h1>
|
|
<input type="hidden" name="id" value="[% server.id | html %]" />
|
|
[% ELSE %]
|
|
<h1>[% tx("New {servertype} server", { servertype = servertype }) | html %]</h1>
|
|
[% END %]
|
|
|
|
<input type="hidden" name="op" value="cud-add_validated" />
|
|
<input type="hidden" name="servertype" value="[% server.servertype||type||'zed' | html %]" />
|
|
<fieldset class="rows">
|
|
<ol>
|
|
<li
|
|
><label for="name" class="required">Server name: </label>
|
|
[% IF server.servername %]
|
|
<input type="text" name="servername" id="servername" size="65" maxlength="100" value="[% server.servername | html %]" required="required" />
|
|
[% ELSE %]
|
|
<input type="text" name="servername" id="servername" class="focus" size="65" maxlength="100" value="[% server.servername | html %]" required="required" />
|
|
[% END %]
|
|
<span class="required">Required</span>
|
|
</li>
|
|
|
|
<li
|
|
><label for="host" class="required">Hostname: </label> <input type="text" name="host" id="host" size="30" value="[% server.host | html %]" required="required" /> <span class="required">Required</span>
|
|
[% IF (server.servertype||type) == 'sru' %]
|
|
<div class="hint">Includes the domain part, but the path part of the URL should go into Database.</div>
|
|
[% END %]
|
|
</li>
|
|
<li><label for="port" class="required">Port: </label> <input type="text" name="port" id="port" size="5" value="[% server.port | html %]" required="required" /> <span class="required">Required</span> </li>
|
|
<li><label for="db" class="required">Database: </label> <input type="text" name="db" id="db" value="[% server.db | html %]" required="required" /> <span class="required">Required</span> </li>
|
|
<li><label for="userid">Userid: </label> <input type="text" name="userid" id="userid" value="[% server.userid | html %]" /> </li>
|
|
<li><label for="password">Password: </label> <input type="text" name="password" id="password" value="[% server.password | html %]" /> </li>
|
|
<li>
|
|
<label for="checked">Preselected: </label>
|
|
[% IF ( server.checked ) %]
|
|
<input type="checkbox" name="checked" id="checked" value="1" checked="checked" />
|
|
[% ELSE %]
|
|
<input type="checkbox" name="checked" id="checked" value="1" />
|
|
[% END %]
|
|
<span class="hint">Searched by default.</span>
|
|
</li>
|
|
<li>
|
|
<label for="rank">Rank: </label>
|
|
<input type="text" name="rank" id="rank" size="4" value="[% server.rank | html %]" />
|
|
<div class="hint">Display order.</div>
|
|
</li>
|
|
[% IF (server.servertype||type) == 'zed' %]
|
|
<li>
|
|
<label for="attributes">Attributes: </label>
|
|
<input type="text" name="attributes" id="attributes" size="30" value="[% server.attributes | html %]" />
|
|
<div class="hint">Additional PQF attributes added to each query.</div>
|
|
</li>
|
|
[% END %]
|
|
|
|
<li>
|
|
<label for="syntax">Syntax: </label>
|
|
<select name="syntax" id="syntax">
|
|
<option value="UNIMARC">UNIMARC</option>
|
|
<option value="INTERMARC">INTERMARC</option>
|
|
<option value="CCF">CCF</option>
|
|
<option value="USMARC">MARC21/USMARC</option>
|
|
<option value="UKMARC">UKMARC</option>
|
|
<option value="NORMARC">NORMARC</option>
|
|
<option value="LIBRISMARC">LIBRISMARC</option>
|
|
<option value="DANMARC">DANMARC</option>
|
|
<option value="FINMARC">FINMARC</option>
|
|
<option value="CANMARC">CANMARC</option>
|
|
<option value="SBN">SBN</option>
|
|
<option value="PICAMARC">PICAMARC</option>
|
|
<option value="AUSMARC">AUSMARC</option>
|
|
<option value="IBERMARC">IBERMARC</option>
|
|
<option value="CATMARC">CATMARC</option>
|
|
<option value="MALMARC">MALMARC</option>
|
|
</select>
|
|
<div class="hint">Z39.50 can send records in various formats. Choose one.</div>
|
|
</li>
|
|
|
|
<li>
|
|
<label for="encoding">Encoding: </label>
|
|
<select name="encoding" id="encoding">
|
|
[% FOREACH enc IN [ 'utf8' 'EUC-KR' 'ISO_5426' 'ISO_6937' 'ISO_8859-1' 'MARC-8' ] %]
|
|
<option value="[% enc | html %]">[% enc | html %]</option>
|
|
[% END %]
|
|
</select>
|
|
<div class="hint">Z39.50 can send records in various encodings. Choose one.</div>
|
|
</li>
|
|
|
|
<li>
|
|
<label for="timeout">Timeout: </label>
|
|
<input type="text" name="timeout" id="timeout" size="4" value="[% server.timeout | html %]" /> seconds
|
|
<div class="hint">Enter 0 to disable.</div>
|
|
</li>
|
|
<li
|
|
><label for="recordtype">Record type: </label>
|
|
<select name="recordtype" id="recordtype">
|
|
<option value="biblio">Bibliographic</option>
|
|
<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 | html %]" />
|
|
<div class="hint">Separate options by commas. Example: sru=get,sru_version=1.1. See also http://www.indexdata.com/yaz/doc/zoom.html.</div>
|
|
</li>
|
|
<li>
|
|
<label for="sru_fields">SRU Search fields mapping: </label>
|
|
<input type="hidden" name="sru_fields" id="sru_fields" value="[% server.sru_fields | html %]" />
|
|
<input type="text" name="show_sru_fields" id="show_sru_fields" size="100" value="[% server.sru_fields | html %]" disabled="disabled" /> <input type="button" id="modify_sru_fields" value="Modify" />
|
|
</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 | html %]" />
|
|
<div class="hint">Separate multiple filenames by commas.</div>
|
|
</li>
|
|
<li>
|
|
<label for="library_limitation">Library limitation: </label>
|
|
<select id="library_limitation" name="branches" multiple size="10">
|
|
[% PROCESS options_for_libraries libraries => Branches.all( selected => server.get_library_limits, unfiltered => 1, do_not_select_my_library => 1 ) %]
|
|
</select>
|
|
<div class="hint">Limits the use of this server to the selected libraries.</div>
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
|
|
<fieldset class="action"><input type="submit" class="btn btn-primary" value="Save" /> <a class="cancel" href="/cgi-bin/koha/admin/z3950servers.pl">Cancel</a></fieldset>
|
|
</form>
|
|
[% END %]
|
|
|
|
[% IF op == 'list' %]
|
|
<div id="toolbar" class="btn-toolbar">
|
|
<a id="newserver" class="btn btn-default" href="/cgi-bin/koha/admin/z3950servers.pl?op=add_form&type=zed"><i class="fa fa-plus"></i> New Z39.50 server</a>
|
|
<a id="newserver" class="btn btn-default" href="/cgi-bin/koha/admin/z3950servers.pl?op=add_form&type=sru"><i class="fa fa-plus"></i> New SRU server</a>
|
|
</div>
|
|
<h1>Z39.50/SRU servers</h1>
|
|
[% IF searchfield %]
|
|
<h2> [% tx("Searching by target starting with '{search_keyword}'", { search_keyword = searchfield }) | html %] </h2>
|
|
[% END %]
|
|
|
|
<div class="page-section">
|
|
<table id="serverst">
|
|
<thead
|
|
><tr
|
|
><th>Target</th><th>Hostname/Port</th><th>Database</th><th>Userid</th><th>Password</th><th>Preselected</th><th>Rank</th><th>Syntax</th><th>Encoding</th><th>Timeout</th><th>Record type</th><th>Attributes</th
|
|
><th>Library limitations</th><th class="no-export no-sort">Actions</th>
|
|
</tr></thead
|
|
>
|
|
<tbody>
|
|
[% FOREACH loo IN loop %]
|
|
<tr>
|
|
<td><a href="/cgi-bin/koha/admin/z3950servers.pl?op=edit_form&id=[% loo.id | uri %]">[% loo.servername | html %]</a></td
|
|
><td>[% loo.host | html %]:[% loo.port | html %]</td><td>[% loo.db | html %]</td><td>[% loo.userid | html %]</td><td>[% IF loo.password %]########[% END %]</td
|
|
><td>[% IF ( loo.checked ) %]Yes[% ELSE %]No[% END %]</td><td>[% loo.rank | html %]</td> <td>[% loo.syntax | html %]</td><td>[% loo.encoding | html %]</td><td>[% loo.timeout | html %]</td>
|
|
<td
|
|
>[% IF ( loo.recordtype == 'biblio' ) %]
|
|
<span>Bibliographic</span>
|
|
[% ELSIF ( loo.recordtype == 'authority' ) %]
|
|
<span>Authority</span>
|
|
[% END %]
|
|
</td>
|
|
<td>[% loo.attributes | html %]</td>
|
|
<td>
|
|
[% SET library_limits = loo.library_limits %]
|
|
[% IF library_limits && library_limits.count > 0 %]
|
|
[% library_str = "" %]
|
|
[% FOREACH library IN library_limits %]
|
|
[%- IF loop.first -%]
|
|
[% library_str = library.branchname _ " (" _ library.branchcode _ ")" %]
|
|
[% ELSE %]
|
|
[% library_str = library_str _ "\n" _ library.branchname _ " (" _ library.branchcode _ ")" %]
|
|
[% END %]
|
|
[% END %]
|
|
<span class="library_limitation" data-bs-toggle="tooltip" title="[% library_str | html %]">
|
|
[% IF library_limits.count > 1 %]
|
|
<span>[% library_limits.count | html %] library limitations</span>
|
|
[% ELSE %]
|
|
<span>[% library_limits.count | html %] library limitation</span>
|
|
[% END %]
|
|
</span>
|
|
[% ELSE %]
|
|
<span>No limitation</span>
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
<div class="btn-group dropup">
|
|
<a class="btn btn-default btn-xs dropdown-toggle" id="reportactions[% savedreport.id | html %]" role="button" data-bs-toggle="dropdown" href="#"> Actions </a>
|
|
<ul class="dropdown-menu" role="menu" aria-labelledby="reportactions[% savedreport.id | html %]">
|
|
<li
|
|
><a class="dropdown-item" href="/cgi-bin/koha/admin/z3950servers.pl?op=edit_form&id=[% loo.id | uri %]"><i class="fa-solid fa-pencil" aria-hidden="true"></i> Edit</a></li
|
|
>
|
|
<li
|
|
><a class="dropdown-item" href="/cgi-bin/koha/admin/z3950servers.pl?op=add_form&id=[% loo.id | uri %]"><i class="fa fa-copy"></i> Copy</a></li
|
|
>
|
|
<li>
|
|
<a href="#" class="dropdown-item delete" data-formid="server_row_[% loo.id | uri %]" data-servername="[% loo.servername | html %]"><i class="fa fa-trash-can"></i> Delete</a>
|
|
<form id="server_row_[% loo.id | uri %]" action="/cgi-bin/koha/admin/z3950servers.pl" method="post">
|
|
[% INCLUDE 'csrf-token.inc' %]
|
|
<input type="hidden" name="op" value="cud-delete_confirmed" />
|
|
<input type="hidden" name="id" value="[% loo.id | uri %]" />
|
|
</form>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- /.page-section -->
|
|
[% END %]
|
|
[% END %]
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% Asset.js("js/admin-menu.js") | $raw %]
|
|
[% IF op == 'list' %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
[% END %]
|
|
|
|
[% IF server %]
|
|
<script nonce="[% Koha.CSPNonce | $raw %]">
|
|
const server = {
|
|
syntax: "[% server.syntax | html %]",
|
|
encoding: "[% server.encoding | html %]",
|
|
recordtype: "[% server.recordtype | html %]",
|
|
};
|
|
</script>
|
|
[% END %]
|
|
|
|
[% IF op == 'edit_form' || op == 'add_form' %]
|
|
<script nonce="[% Koha.CSPNonce | $raw %]">
|
|
$(document).ready(function () {
|
|
// Update selects for syntax, encoding and recordtype
|
|
if (typeof server !== "undefined") {
|
|
$("#syntax").val(server.syntax);
|
|
$("#encoding").val(server.encoding);
|
|
$("#recordtype").val(server.recordtype);
|
|
}
|
|
$("#serverentry").validate({
|
|
rules: {
|
|
servername: { required: true },
|
|
host: { required: true },
|
|
port: {
|
|
required: true,
|
|
number: true,
|
|
},
|
|
db: { required: true },
|
|
rank: { number: true },
|
|
timeout: { number: true },
|
|
},
|
|
});
|
|
$("#serverentry").submit(function (event) {
|
|
// first test if show_sru_fields exists
|
|
if ($("#show_sru_fields").length && $("#show_sru_fields").val() == "" && !confirm(_("No SRU search field mappings have been defined. This means that all field searches will go through the whole record. Continue?"))) {
|
|
return false;
|
|
}
|
|
// 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);
|
|
});
|
|
$("#servername").on("blur", function () {
|
|
toUC(this);
|
|
});
|
|
$("#modify_sru_fields").on("click", function () {
|
|
ModMapping();
|
|
});
|
|
});
|
|
function ModMapping() {
|
|
var map = $("#show_sru_fields").val();
|
|
var type = $("#recordtype").val();
|
|
window.open("/cgi-bin/koha/admin/sru_modmapping.pl?mapping=" + map + "&type=" + type, "popup", "width=800,height=400,resizable=yes,toolbar=false,scrollbars=yes,top");
|
|
}
|
|
</script>
|
|
[% ELSE %]
|
|
<script nonce="[% Koha.CSPNonce | $raw %]">
|
|
$(document).ready(function () {
|
|
$("#serverst").kohaTable({
|
|
pagingType: "full",
|
|
});
|
|
$("#serverst").on("click", ".delete", function (e) {
|
|
var servername = $(this).data("servername");
|
|
let formid = $(this).data("formid");
|
|
if (confirm(_("Are you sure you want to delete server %s?").format(servername))) {
|
|
$("#" + formid).submit();
|
|
return false;
|
|
} else {
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
[% END %]
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|