Owen Leonard
72364bb34c
This patch fixes automatic tab selection by location.hash in the MARC
subfield editor. This allows links which target a specific subfield to
open the page with the subfield tab selected.
I've put this into a global function since it can be reused in multiple
places: The about page and the checkout page have variations of this
functionality which can be replaced with this function.
The patch also corrects two links in Koha pointing to the About
page which included the wrong location hash (changed in the switch to
Bootstrap tab wrappers).
To test, apply the patch and go to Adminstration -> Bibliographic
frameworks.
- View the MARC structure for any framework.
- In the "Search for tag" input field, submit a tag and subfield which
will be found in that framework, e.g. "245$a"
- When you submit the form you should be sent to the MARC subfield
structure page for that tag with the subfield tab automatically
selected.
- View the MARC subfield structure for any framework.
- In the table of subfields, click the subfield link in the first
column. You should be taken to the edit form with the corresponding
tab selected.
- Go to Circulation and check out to a patron. Append a tab anchor to
the URL, e.g. "#holds_panel" and submit. You may have to shift-reload
the page to see the change. (As far as I know no links in Koha take
advantage of this)
- Perform the same test on the patron detail page
- Go to the About page and perform the same test with a tab anchor like
"#team_panel" or "#sysinfo_panel"
Signed-off-by: Sam Lau <samalau@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit cb6dd4e82b
)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
191 lines
7.3 KiB
JavaScript
191 lines
7.3 KiB
JavaScript
/* global dataTablesDefaults tagsubfield selectBsTabByHash */
|
|
$(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
|
|
}));
|
|
|
|
selectBsTabByHash("subfieldtabs");
|
|
|
|
});
|
|
|
|
/* 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);
|
|
}
|
|
}
|