Koha/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt
Wainui Witika-Park 001095eae5 Bug 26703: admin folder
Swapped the order of the page titles to have the unique information
first, i.e. the name of the specific page displays first, and the name of the website (e.g. Koha) displays at the end.

To test:
1) Apply patch
2) Ensure each of the files in the admin folder are swapped around to display the most unique information first, and the website name is at the end
3) Ensure the pages displayed on the Staff Client that correspond to these files also display the changes

Sponsored-by: Catalyst IT
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Henry Bolshaw <bolshawh@parliament.uk>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-21 11:16:33 +02:00

487 lines
25 KiB
Text

[% USE raw %]
[% USE Asset %]
[% SET footerjs = 1 %]
[% PROCESS 'i18n.inc' %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Search engine configuration (Elasticsearch) &rsaquo; Administration &rsaquo; Koha</title>
[% INCLUDE 'doc-head-close.inc' %]
<style>
a.add, a.delete {
cursor: pointer;
}
</style>
</head>
<body id="admin_searchengine_mappings" class="admin">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'prefs-admin-search.inc' %]
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li>
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
</li>
<li>
<a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
</li>
<li>
<a href="#" aria-current="page">
Search engine configuration (Elasticsearch)
</a>
</li>
</ol>
</nav>
[% INCLUDE 'blocking_errors.inc' %]
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% FOR m IN messages %]
<div class="dialog [% m.type | html %]">
[% SWITCH m.code %]
[% CASE 'error_on_update' %]
[% tx("An error occurred when updating mappings: {message}.", { message = m.message }) | html %]
[% CASE 'error_on_delete' %]
[% t("An error occurred when deleting the existing mappings. Nothing has been changed!") | $raw %]
[% tx("(search field {field_name} with mapping {marc_field}.)", { field_name = m.values.field_name, marc_field = m.values.marc_field }) | html %]
[% CASE 'invalid_field_weight' %]
[% tx("Invalid field weight '{weight}', must be a positive decimal number.", { weight = m.weight }) | html %]
[% CASE 'missing_mandatory_fields' %]
[% t("You attempted to delete all mappings for a required index, you must leave at least one mapping") | $raw %]
[% CASE 'error_on_update_es_mappings' %]
[% tx("An error occurred when updating Elasticsearch index mappings: {message}.", { message = m.message }) | html %]
[% CASE 'reindex_required' %]
[% tx("Index '{index}' needs to be reindexed.", { index = m.index }) | html %]
[% CASE 'recreate_required' %]
[% tx("Index '{index}' needs to be recreated.", { index = m.index }) | html %]
[% CASE 'success_on_update' %]
[% t("Mappings updated successfully.") | $raw %]
[% CASE 'success_on_reset' %]
[% t("Mappings have been reset successfully.") | $raw %]
[% CASE 'elasticsearch_disabled' %]
[% t("Elasticsearch is currently disabled.") | $raw %]
[% CASE %]
[% m.code | html %]
[% END %]
</div>
[% END %]
<h1>Search engine configuration (Elasticsearch)</h1>
[% IF errors %]
<div class="dialog alert">
Changes have not been applied. Please check the following values:
<ul>
[% FOREACH e IN errors %]
<li>
[% IF ( e.type == "malformed_mapping" ) %]
<span>The value "[% e.value | html %]" is not supported for mappings</span>
[% ELSIF ( e.type == "no_mapping" ) %]
<span>There is no mapping for the index [% e.value | html %]</span>
[% END %]
</li>
[% END %]
</ul>
</div>
[% END %]
[% IF reset_confirm %]
<div class="dialog alert">
<h3>The current mappings you see on the screen will be erased and replaced by the mappings in the mappings.yaml file.</h3>
<form method="post">
<input type="hidden" name="op" value="reset_confirmed" />
<button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, reset mappings</button>
</form>
<form method="post">
<button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not reset mappings</button>
</form>
</div>
[% END %]
<div class="note">
<i class="fa fa-exclamation"></i>
<strong>Warning:</strong> Any changes to the configuration will only take effect after a full reindex. Until then searching may not work correctly.
<p><strong>Weight:</strong> define weight as a positive number. Higher numbers indicate increased relevancy.
<strong>Note that fields weighting works only for simple search.</strong></p>
<ol>
<li>Only search fields mapped with biblios can be weighted</li>
<li>Search will boost/increase weighted field(s) relevancy</li>
</ol>
</div>
<form method="post">
<div id="tabs" class="toptabs ui-tabs" style="clear:both">
<ul>
<li><a href="#search_fields">Search fields</a></li>
[% FOREACH index IN indexes %]
[% SWITCH index.index_name %]
[% CASE 'biblios' %]<li><a href="#mapping_biblios">Bibliographic records</a></li>
[% CASE 'authorities' %]<li><a href="#mapping_authorities">Authorities</a></li>
[% END %]
[% END %]
</ul>
<div id="search_fields" class="ui-tabs-panel">
<table class="search_fields" id="search_fields_table">
<thead>
<tr>
<th>Name</th>
<th>Aliases</th>
<th>Label</th>
<th>Type</th>
<th>Weight</th>
<th colspan="2">Searchable</th>
</tr>
<tr>
<th colspan="5" class="NoSort">&nbsp;</th>
<th class="NoSort">Staff interface</th>
<th class="NoSort">OPAC</th>
</tr>
</thead>
<tbody>
[% FOREACH search_field IN all_search_fields %]
<tr>
<td data-order="[% search_field.name | html %]">
[% IF search_field.mandatory %]
<input type="text" name="search_field_name" value="[% search_field.name | html %]" readonly />
[% ELSE %]
<input type="text" name="search_field_name" value="[% search_field.name | html %]" />
[% END %]
</td>
<td>
[% search_field.aliases.join(', ') | html %]
</td>
<td data-order="[% search_field.label | html %]">
[% IF search_field.mandatory %]
<input type="text" name="search_field_label" value="[% search_field.label | html %]" readonly />
[% ELSE %]
<input type="text" name="search_field_label" value="[% search_field.label | html %]" />
[% END %]
</td>
<td data-order="[% search_field.type | html %]">
[% IF search_field.mandatory %]
<input type="hidden" name="search_field_type" value="[% search_field.type | html %]" />
<select name="search_field_type" disabled>
[% ELSE %]
<select name="search_field_type">
[% END %]
<option value=""></option>
[% IF search_field.type == "string" %]
<option value="string" selected="selected">String</option>
[% ELSE %]
<option value="string">String</option>
[% END %]
[% IF search_field.type == "date" %]
<option value="date" selected="selected">Date</option>
[% ELSE %]
<option value="date">Date</option>
[% END %]
[% IF search_field.type == "year" %]
<option value="year" selected="selected">Year</option>
[% ELSE %]
<option value="year">Year</option>
[% END %]
[% IF search_field.type == "number" %]
<option value="number" selected="selected">Number</option>
[% ELSE %]
<option value="number">Number</option>
[% END %]
[% IF search_field.type == "boolean" %]
<option value="boolean" selected="selected">Boolean</option>
[% ELSE %]
<option value="boolean">Boolean</option>
[% END %]
[% IF search_field.type == "sum" %]
<option value="sum" selected="selected">Sum</option>
[% ELSE %]
<option value="sum">Sum</option>
[% END %]
[% IF search_field.type == "isbn" %]
<option value="isbn" selected="selected">ISBN</option>
[% ELSE %]
<option value="isbn">ISBN</option>
[% END %]
[% IF search_field.type == "stdno" %]
<option value="stdno" selected="selected">Std. Number</option>
[% ELSE %]
<option value="stdno">Std. Number</option>
[% END %]
</select>
</td>
<td data-order="[% search_field.weight | html %]">
[% IF search_field.mapped_biblios %]
<input type="text" inputmode="numeric" pattern="[0-9]*" name="search_field_weight" value="[% search_field.weight | html %]" />
[% ELSE %]
<input type="text" name="search_field_weight" value="">
[% END %]
</td>
<td>
<select name="search_field_staff_client">
[% IF search_field.staff_client %]
<option value="1" selected="selected">Yes</option>
<option value="0">No</option>
[% ELSE %]
<option value="1">Yes</option>
<option value="0" selected="selected">No</option>
[% END %]
</select>
</td>
<td>
<select name="search_field_opac">
[% IF search_field.opac %]
<option value="1" selected="selected">Yes</option>
<option value="0">No</option>
[% ELSE %]
<option value="1">Yes</option>
<option value="0" selected="selected">No</option>
[% END %]
</select>
</td>
</tr>
[% END %]
</tbody>
</table>
</div>
[% FOREACH index IN indexes %]
<div id="mapping_[% index.index_name | html %]" class="ui-tabs-panel">
<table class="mappings" data-index_name="[% index.index_name | html %]" data-ordering="false" id="mapping_[% index.index_name | html %]_table">
<thead>
<tr class="nodrag nodrop">
<th>Search field</th>
<th>Sortable</th>
<th>Facetable</th>
<th>Suggestible</th>
<th>Searchable</th>
<th>Mapping</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
[% FOREACH mapping IN index.mappings %]
[% IF mapping.search_field_mandatory && mapping.search_field_label != loop.next.search_field_label && mapping.search_field_label != loop.prev.search_field_label %]
<tr>
<td>
<input type="hidden" name="mapping_index_name" value="[% index.index_name | html %]" />
<input type="hidden" name="mapping_search_field_name" value="[% mapping.search_field_name | html %]">
[% mapping.search_field_label | html %]
</td>
<td>
[% IF mapping.sort == 0 %]
<input type="hidden" name="mapping_sort" value="0" readonly />No
[% ELSE %]
<input type="hidden" name="mapping_sort" value="1" readonly />Yes
[% END %]
</td>
<td>
<input type="hidden" name="mapping_facet" value="[% mapping.facet | html %]" readonly />[% IF mapping.facet == 1 %]Yes[% ELSE %]No[% END %]
</td>
<td>
<input type="hidden" name="mapping_suggestible" value="[% mapping.suggestible | html %]" readonly />[% IF mapping.suggestible == 1 %]Yes[% ELSE %]No[% END %]
</td>
<td>
<input type="hidden" name="mapping_search" value="[% mapping.search | html %]" readonly />[% IF mapping.search == 1 %]Yes[% ELSE %]No[% END %]
</td>
<td>
<input name="mapping_marc_field" type="text" value="[% mapping.marc_field | html %]" />
</td>
<td>&nbsp;</td>
</tr>
[% ELSE %]
<tr>
<td>
<input type="hidden" name="mapping_index_name" value="[% index.index_name | html %]" />
<input type="hidden" name="mapping_search_field_name" value="[% mapping.search_field_name | html %]">
[% mapping.search_field_label | html %]
</td>
<td>
<select name="mapping_sort">
[% IF mapping.sort == 0 %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% ELSE %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% END %]
</select>
</td>
<td>
[% IF mapping.is_facetable %]
<select name="mapping_facet">
[% IF mapping.facet %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
[% ELSE %]
<input type="hidden" name="mapping_facet" value="0" />
No
[% END %]
</td>
<td>
<select name="mapping_suggestible">
[% IF mapping.suggestible %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
</td>
<td>
<select name="mapping_search">
[% IF mapping.search %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
</td>
<td>
<input name="mapping_marc_field" type="text" value="[% mapping.marc_field | html %]" />
</td>
[% IF mapping.search_field_mandatory %]
<td><a class="btn btn-default btn-xs delete mandatory" data-field_name="[% mapping.search_field_name | html %]" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a></td>
[% ELSE %]
<td><a class="btn btn-default btn-xs delete" style="cursor: pointer;"><i class="fa fa-trash"></i> Delete</a></td>
[% END %]
</tr>
[% END %]
[% END %]
</tbody>
<tfoot>
<tr class="nodrag nodrop">
<td>
<input data-id="mapping_index_name" type="hidden" value="[% index.index_name | html %]" />
<select data-id="mapping_search_field_name">
[% FOREACH f IN all_search_fields %]
<option value="[% f.name | html %]">[% f.name | html %]</option>
[% END %]
</select>
</td>
<td>
<select data-id="mapping_sort">
<option value="undef">Undef</option>
<option value="0">0</option>
<option value="1">1</option>
</select>
</td>
<td>
<select data-id="mapping_facet">
[% IF mapping.facet %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
</td>
<td>
<select data-id="mapping_suggestible">
[% IF mapping.suggestible %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
</td>
<td>
<select data-id="mapping_search">
[% IF mapping.search %]
<option value="0">No</option>
<option value="1" selected="selected">Yes</option>
[% ELSE %]
<option value="0" selected="selected">No</option>
<option value="1">Yes</option>
[% END %]
</select>
</td>
<td><input data-id="mapping_marc_field" type="text" /></td>
<td><a class="btn btn-default btn-xs add"><i class="fa fa-plus"></i> Add</a></td>
</tr>
</tfoot>
</table>
[% IF index.index_name == 'biblios' %]
<h3>Facet order</h3>
<div id="facet_[% index.index_name | html %]" class="ui-tabs-panel">
<table>
<thead>
<tr>
<th>Search field</th>
<th>Label</th>
<th>Display</th>
</tr>
</thead>
<tbody>
[% FOREACH f IN facetable_fields %]
<tr>
<td>
[% f.name | html %]
</td>
<td>
[% SWITCH f.name %]
[% CASE 'author' %]Authors
[% CASE 'itype' %]Item Types
[% CASE 'location' %]Locations
[% CASE 'su-geo' %]Places
[% CASE 'title-series' %]Series
[% CASE 'subject' %]Topics
[% CASE 'ccode' %]Collections
[% CASE 'holdingbranch' %]Holding libraries
[% CASE 'homebranch' %]Home libraries
[% CASE 'ln' %]Language
[% CASE %][% f | html %]
[% END %]
</td>
<td>
[% IF f.facet_order %]
<input type="checkbox" name="display_facet" value="[% f.name | html %]" checked="checked" />
[% ELSE %]
<input type="checkbox" name="display_facet" value="[% f.name | html %]" />
[% END %]
</td>
</tr>
[% END %]
</tbody>
</table>
</div>
[% END %]
</div>
[% END %]
</div>
<fieldset class="action">
<button class="btn btn-default" type="submit" name="op" value="edit"><i class="fa fa-hdd-o" aria-hidden="true"></i> Save</button>
<button class="btn btn-default" type="submit" name="op" value="reset_confirm"><i class="fa fa-refresh" aria-hidden="true"></i> Reset mappings</button>
</fieldset>
</form>
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'admin-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'datatables.inc' %]
[% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %]
[% Asset.js("js/elasticsearch-mappings.js") | $raw %]
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]