Bug 26958: Move Elasticsearch mapping template JS to the footer
This patch moves inclusion of JavaScript to the footer of the Elasticsearch mapping template. It also moves the JS into a separate file. To test you should have SearchEngine system preference set to "Elasticsearch." - 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. Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
e2f5ecc069
commit
3cfa9b1e99
2 changed files with 65 additions and 59 deletions
|
@ -1,74 +1,17 @@
|
|||
[% USE raw %]
|
||||
[% USE Asset %]
|
||||
[% SET footerjs = 1 %]
|
||||
[% PROCESS 'i18n.inc' %]
|
||||
[% INCLUDE 'doc-head-open.inc' %]
|
||||
<title>Koha › Administration › Search engine configuration (Elasticsearch)</title>
|
||||
[% INCLUDE 'doc-head-close.inc' %]
|
||||
[% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %]
|
||||
<script>
|
||||
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",
|
||||
} );
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
a.add, a.delete {
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="admin_searchengine_mappings" class="admin">
|
||||
[% INCLUDE 'header.inc' %]
|
||||
[% INCLUDE 'prefs-admin-search.inc' %]
|
||||
|
@ -521,4 +464,9 @@ a.add, a.delete {
|
|||
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
|
||||
</div> <!-- /.row -->
|
||||
|
||||
[% MACRO jsinclude BLOCK %]
|
||||
[% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %]
|
||||
[% Asset.js("js/elasticsearch-mappings.js") | $raw %]
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE 'intranet-bottom.inc' %]
|
||||
|
|
58
koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js
Normal file
58
koha-tmpl/intranet-tmpl/prog/js/elasticsearch-mappings.js
Normal file
|
@ -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",
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue