@@ -, +, @@
footer
- Apply the patch and go to Administration -> Search engine
configuration (Elasticsearch).
- Confirm that JavaScript dependent interactions work correctly:
- Tabs
- Under the bibliographic records and authorities tabs, table row
drag-and-drop
- Under the bibliographic records and authorities tabs, test the
"Add" line at the bottom of the table.
- Under the bibliographic records and authorities tabs, test the
"Delete" button.
---
.../admin/searchengine/elasticsearch/mappings.tt | 66 +++-------------------
.../prog/js/elasticsearch-mappings.js | 58 +++++++++++++++++++
2 files changed, 65 insertions(+), 59 deletions(-)
create mode 100644 koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt
@@ -1,74 +1,17 @@
[% USE raw %]
[% USE Asset %]
+[% SET footerjs = 1 %]
[% PROCESS 'i18n.inc' %]
[% INCLUDE 'doc-head-open.inc' %]
Koha › Administration › Search engine configuration (Elasticsearch)
[% INCLUDE 'doc-head-close.inc' %]
-[% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %]
-
+
[% INCLUDE 'header.inc' %]
[% INCLUDE 'prefs-admin-search.inc' %]
@@ -517,4 +460,9 @@ a.add, a.delete {
+[% MACRO jsinclude BLOCK %]
+ [% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %]
+ [% Asset.js("js/elasticsearch-mappings.js") | $raw %]
+[% END %]
+
[% INCLUDE 'intranet-bottom.inc' %]
--- a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js
@@ -0,0 +1,58 @@
+/* global __ */
+
+function clean_line(line) {
+ $(line).find('input[type="text"]').val("");
+ $(line).find('select').find('option:first').attr("selected", "selected");
+}
+
+function clone_line(line) {
+ var new_line = $(line).clone();
+ $(new_line).removeClass("nodrag nodrop");
+ $(new_line).find('td:last-child>a').removeClass("add").addClass("delete").html( __("Delete") );
+ $(new_line).find('[data-id]').each(function () {
+ $(this).attr({ name: $(this).attr('data-id') }).removeAttr('data-id');
+ });
+ $(new_line).find("select").each(function () {
+ var attr = $(this).attr('name');
+ var val = $(line).find('[data-id="' + attr + '"]').val();
+ $(this).find('option[value="' + val + '"]').attr("selected", "selected");
+ });
+ return new_line;
+}
+
+$(document).ready(function () {
+ $("#tabs").tabs();
+ $('.delete').click(function () {
+ if ($(this).hasClass('mandatory') && $(".mandatory[data-field_name=" + $(this).attr('data-field_name') + "]").length < 2) {
+ alert( __("This field is mandatory and must have at least one mapping") );
+ return;
+ } else {
+ $(this).parents('tr').remove();
+ }
+ });
+
+ $("table.mappings").tableDnD({
+ onDragClass: "dragClass",
+ });
+ $('.add').click(function () {
+ var table = $(this).closest('table');
+ var index_name = $(table).attr('data-index_name');
+ var line = $(this).closest("tr");
+ var marc_field = $(line).find('input[data-id="mapping_marc_field"]').val();
+ if (marc_field.length > 0) {
+ var new_line = clone_line(line);
+ new_line.appendTo($('table[data-index_name="' + index_name + '"]>tbody'));
+ $('.delete').click(function () {
+ $(this).parents('tr').remove();
+ });
+ clean_line(line);
+
+ $(table).tableDnD({
+ onDragClass: "dragClass",
+ });
+ }
+ });
+ $("#facet_biblios > table").tableDnD({
+ onDragClass: "dragClass",
+ });
+});
--