Owen Leonard
e5b206b3dd
This patch updates the MARC and authority subfield edit interface to replace jQueryUI tabs with Bootstrap. The code for handling drag-to-reorder tabs is updated to accommodate the new markup. To test, apply the patch and restart_all. - Go to Administration -> MARC bibliographic framework -> Default framework and choose "MARC structure" from the Actions menu. - In the row for 000 LEADER, click Actions -> View subfields. - Click "Edit." On the edit page the tabs should look correct and work correctly. - Return to the list of tags and click "View subfields" for the 245 tag. - Click one of the "Edit" buttons for any but the first subfield, e.g. "a". - On the "Tag 245 Subfield constraints" page the "a" tab should be pre-selected. - Click any of the subfield tabs and drag it to re-order it in the sequence of tags. - It should stay in the correct slot when you release it. - Save and confirm that the new sequence of subfields has been saved. Perform all the same tests under Administration -> Authority types. Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
188 lines
7.3 KiB
JavaScript
188 lines
7.3 KiB
JavaScript
/* global dataTablesDefaults tagsubfield */
|
|
$(document).ready(function() {
|
|
if( tagsubfield && tagsubfield == "@"){
|
|
$("#subfieldtabs a[href='#subATfield']").tab("show");
|
|
} else if ( tagsubfield && tagsubfield != "@"){
|
|
$("#subfieldtabs a[href='#sub" + tagsubfield + "field'").tab("show");
|
|
} else {
|
|
$("#subfieldtabs a:first").tab("show");
|
|
}
|
|
|
|
var current_index;
|
|
$("#subfieldtabs > ul").sortable({
|
|
axis: "x",
|
|
start: function (e, ui) {
|
|
current_index = $(ui.item[0]).index();
|
|
},
|
|
stop: function (e, ui) {
|
|
var new_index = $(ui.item[0]).index();
|
|
if (current_index < new_index) new_index++;
|
|
var subfield_code = $(ui.item[0]).attr('id').replace( /^tab_subfield_/, '');
|
|
var content = $('#sub' + subfield_code + 'field');
|
|
var panels = $("#subfieldtabs .tab-pane");
|
|
if ( new_index < $(panels).size() ){
|
|
$(content).insertBefore( panels[new_index]);
|
|
} else {
|
|
$(content).insertAfter( panels[new_index-1]);
|
|
}
|
|
}
|
|
});
|
|
|
|
$("input[id^='hidden_']").click(setHiddenValue);
|
|
$("input[id^='hidden-']").each(function() {
|
|
populateHiddenCheckboxes($(this).attr('id').split('-')[1]);
|
|
});
|
|
$("#table_marcsubfieldstructure").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"columnDefs": [
|
|
{ 'sortable': false, 'targets': [ 'NoSort' ] }
|
|
],
|
|
aaSorting: [],
|
|
paginate: false
|
|
}));
|
|
});
|
|
|
|
/* Function to enable/disable hidden values checkboxes when Flag is (de)selected */
|
|
function enable_cb(tab) {
|
|
if ($("#hidden_flagged_" + tab).is(':checked')) {
|
|
$('.inclusive_' + tab).prop('disabled', true).prop('checked', false);
|
|
}
|
|
else {
|
|
$('.inclusive_' + tab).prop('disabled', false);
|
|
}
|
|
}
|
|
|
|
/* Function to serialize and set the 'hidden' field */
|
|
function setHiddenValue() {
|
|
|
|
var tab = $(this).attr('id').split('_')[2];
|
|
var flagged_checked = $("#hidden_flagged_" + tab).is(':checked');
|
|
var opac_checked = $("#hidden_opac_" + tab).is(':checked');
|
|
var intranet_checked = $("#hidden_intranet_" + tab).is(':checked');
|
|
var editor_checked = $("#hidden_editor_" + tab).is(':checked');
|
|
var collapsed_checked = $("#hidden_collapsed_" + tab).is(':checked');
|
|
var hidden_value = "";
|
|
|
|
if ( flagged_checked ) {
|
|
hidden_value='-8';
|
|
} else if ( opac_checked && ! intranet_checked && ! editor_checked && collapsed_checked ) {
|
|
hidden_value='-7';
|
|
} else if ( opac_checked && intranet_checked && ! editor_checked && ! collapsed_checked) {
|
|
hidden_value='-6';
|
|
} else if ( opac_checked && intranet_checked && ! editor_checked && collapsed_checked) {
|
|
hidden_value='-5';
|
|
} else if ( opac_checked && ! intranet_checked && ! editor_checked && ! collapsed_checked) {
|
|
hidden_value='-4';
|
|
} else if ( opac_checked && ! intranet_checked && editor_checked && collapsed_checked) {
|
|
hidden_value='-3';
|
|
} else if ( opac_checked && ! intranet_checked && editor_checked && ! collapsed_checked) {
|
|
hidden_value='-2';
|
|
} else if ( opac_checked && intranet_checked && editor_checked && collapsed_checked) {
|
|
hidden_value='-1';
|
|
} else if ( opac_checked && intranet_checked && editor_checked && ! collapsed_checked) {
|
|
hidden_value='0';
|
|
} else if ( ! opac_checked && intranet_checked && editor_checked && collapsed_checked) {
|
|
hidden_value='1';
|
|
} else if ( ! opac_checked && ! intranet_checked && editor_checked && ! collapsed_checked) {
|
|
hidden_value='2';
|
|
} else if ( ! opac_checked && ! intranet_checked && editor_checked && collapsed_checked) {
|
|
hidden_value='3';
|
|
} else if ( ! opac_checked && intranet_checked && editor_checked && ! collapsed_checked) {
|
|
hidden_value='4';
|
|
} else if ( ! opac_checked && ! intranet_checked && ! editor_checked && collapsed_checked) {
|
|
hidden_value='5';
|
|
} else if ( ! opac_checked && intranet_checked && ! editor_checked && ! collapsed_checked) {
|
|
hidden_value='6';
|
|
} else if ( ! opac_checked && intranet_checked && ! editor_checked && collapsed_checked) {
|
|
hidden_value='7';
|
|
} else if ( ! opac_checked && ! intranet_checked && ! editor_checked && ! collapsed_checked) {
|
|
hidden_value='8';
|
|
}
|
|
|
|
var hidden_protected = $('#hidden-'+ tab).attr('data-koha-protected');
|
|
if ( hidden_protected != 1 ) {
|
|
enable_cb(tab);
|
|
}
|
|
|
|
$('#hidden-' + tab).val(hidden_value);
|
|
|
|
}
|
|
|
|
function populateHiddenCheckboxes(tab) {
|
|
// read the serialized value
|
|
var hidden_value = $('#hidden-' + tab).val();
|
|
var hidden_protected = $('#hidden-'+ tab).attr('data-koha-protected');
|
|
// deafult to false
|
|
var opac_checked = false;
|
|
var intranet_checked = false;
|
|
var editor_checked = false;
|
|
var collapsed_checked = false;
|
|
var flagged_checked = false;
|
|
|
|
if ( hidden_value == '-8' ) {
|
|
flagged_checked = true;
|
|
} else if ( hidden_value == '-7') {
|
|
opac_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '-6' ) {
|
|
opac_checked = true;
|
|
intranet_checked = true;
|
|
} else if ( hidden_value == '-5') {
|
|
opac_checked = true;
|
|
intranet_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '-4' ) {
|
|
opac_checked = true;
|
|
} else if ( hidden_value == '-3') {
|
|
opac_checked = true;
|
|
editor_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '-2' ) {
|
|
opac_checked = true;
|
|
editor_checked = true;
|
|
} else if ( hidden_value == '-1' ) {
|
|
opac_checked = true;
|
|
intranet_checked = true;
|
|
editor_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '0' ) {
|
|
opac_checked = true;
|
|
intranet_checked = true;
|
|
editor_checked = true;
|
|
} else if ( hidden_value == '1' ) {
|
|
intranet_checked = true;
|
|
editor_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '2' ) {
|
|
editor_checked = true;
|
|
} else if ( hidden_value == '3' ) {
|
|
editor_checked = true;
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '4' ) {
|
|
intranet_checked = true;
|
|
editor_checked = true;
|
|
} else if ( hidden_value == '5' ) {
|
|
collapsed_checked = true;
|
|
} else if ( hidden_value == '6' ) {
|
|
intranet_checked = true;
|
|
} else if ( hidden_value == '7' ) {
|
|
intranet_checked = true;
|
|
collapsed_checked = true;
|
|
} // else if ( hidden_value == '8') { skip }
|
|
|
|
$("#hidden_opac_" + tab).prop('checked',opac_checked);
|
|
$("#hidden_intranet_" + tab).prop('checked',intranet_checked);
|
|
$("#hidden_editor_" + tab).prop('checked',editor_checked);
|
|
$("#hidden_collapsed_" + tab).prop('checked',collapsed_checked);
|
|
$("#hidden_flagged_" + tab).prop('checked',flagged_checked);
|
|
|
|
if ( hidden_protected == 1 ) {
|
|
$("#hidden_opac_" + tab).prop('disabled','disabled');
|
|
$("#hidden_intranet_" + tab).prop('disabled','disabled');
|
|
$("#hidden_editor_" + tab).prop('disabled','disabled');
|
|
$("#hidden_collapsed_" + tab).prop('disabled','disabled');
|
|
$("#hidden_flagged_" + tab).prop('disabled','disabled');
|
|
}
|
|
else {
|
|
enable_cb(tab);
|
|
}
|
|
}
|