Koha/koha-tmpl/intranet-tmpl/prog/js/cataloging_additem.js
Jonathan Druart d3f3a55e0b Bug 26234: Teach our KohaTable constructor the specific th classes
We have different classes we can use to set specific behaviours on
table columns: title-string, string-sort, anti-the and NoSort.
We should not need to pass them to the DataTable constructor, we could
teach it that we always want to apply them.

It will avoid bug like bug 26233

The goal is to define them in a centralised place
(columns_settings.inc) then only use the class on the th

Test plan:
Different behaviour and tables must be tested to confirm it works
correctly. Focus must be put on table when aoColumnsDefs is passed from
the template and confirm that this will add more info to aoColumnsDefs
and not remove the existing ones.

Note that this only work when KohaTable is used.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2020-08-19 08:24:04 +02:00

132 lines
5.2 KiB
JavaScript

/* global KOHA searchid biblionumber frameworkcode popup op LABEL_EDIT_ITEM LABEL_DELETE_ITEM MSG_FORM_NOT_SUBMITTED MSG_MANDATORY_FIELDS_EMPTY MSG_ADD_MULTIPLE_ITEMS MSG_ENTER_NUM_ITEMS MSG_CONFIRM_DELETE_ITEM MSG_CONFIRM_ADD_ITEM columns_settings CheckMandatorySubfields CheckMultipleAdd */
var browser = KOHA.browser(searchid, parseInt(biblionumber, 10));
browser.show();
$(document).ready(function(){
// Remove the onclick event defined in browser.js,
// otherwise the deletion confirmation will not work correctly
$('a[href*="biblionumber="]').off('click');
if( popup && op != 'saveitem' ){
window.close();
}
$("fieldset.rows input, fieldset.rows select").addClass("noEnterSubmit");
/* Inline edit/delete links */
var biblionumber = $("input[name='biblionumber']").attr("value");
$("tr.editable").each(function(){
$(this).find("td:not(:first)").on('click', function(){
var rowid = $(this).parent().attr("id");
var num_rowid = rowid.replace("row","");
$(".linktools").remove();
var edit_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '#edititem"></a>');
$(edit_link).text( LABEL_EDIT_ITEM );
var delete_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '"></a>');
$(delete_link).text( LABEL_DELETE_ITEM );
$(delete_link).on('click', function() {
return confirm_deletion();
});
var tools_node = $('<span class="linktools"></span>');
$(tools_node).append(edit_link);
$(tools_node).append(delete_link);
$(this).append(tools_node);
});
});
$("#addnewitem").click(function(){
if ( confirm( MSG_CONFIRM_ADD_ITEM ) ){
window.location.href = "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=" + biblionumber;
}
});
// Skip the first column
columns_settings.unshift( { cannot_be_toggled: "1" } );
var itemst = KohaTable("itemst", {
'bPaginate': false,
'bInfo': false,
"bAutoWidth": false,
"bKohaColumnsUseNames": true
}, columns_settings);
var multiCopyControl = $("#add_multiple_copies_span");
var addMultipleBlock = $("#addmultiple");
var addSingleBlock = $("#addsingle");
multiCopyControl.hide();
$("#add_multiple_copies").on("click",function(e){
e.preventDefault;
addMultipleBlock.toggle();
addSingleBlock.toggle();
multiCopyControl.toggle();
$('body,html').animate({ scrollTop: $('body').height() }, 100);
});
$("#cancel_add_multiple").on("click",function(e){
e.preventDefault();
addMultipleBlock.toggle();
addSingleBlock.toggle();
multiCopyControl.toggle();
});
$('.subfield_line select').select2();
});
function Check(f) {
var total_mandatory = CheckMandatorySubfields(f);
var total_important = CheckImportantSubfields(f);
var alertString2;
if (total_mandatory==0) {
// Explanation about this line:
// In case of limited edition permission, we have to prevent user from modifying some fields.
// But there is no such thing as readonly attribute for select elements.
// So we use disabled instead. But disabled prevent values from being passed through the form at submit.
// So we "un-disable" the elements just before submitting.
// That's a bit clumsy, and if someone comes up with a better solution, feel free to improve that.
$("select[name=field_value]").prop('disabled', false);
} else {
alertString2 = MSG_FORM_NOT_SUBMITTED;
alertString2 += "\n------------------------------------------------------------------------------------\n";
alertString2 += "\n- " + "%s " + MSG_MANDATORY_FIELDS_EMPTY.format(total_mandatory);
}
if(total_important > 0){
if( !alertString2 ){
alertString2 = "";
}
alertString2 += "\n\n " + MSG_IMPORTANT_FIELDS_EMPTY.format(total_important);
alertString2 += "\n\n " + MSG_CONFIRM_SAVE;
}
if(alertString2){
if(total_mandatory){
alert(alertString2);
}else{
var a = confirm(alertString2);
if( a ){
return true;
}
}
return false;
}
return true;
}
function CheckMultipleAdd(f) {
if (!f || isNaN(f) || !parseInt(f) == f || f <= 0) {
alert( MSG_ENTER_NUM_ITEMS );
return false;
}
// Add a soft-limit of 99 with a reminder about potential data entry error
if (f>99) {
return confirm( MSG_ADD_MULTIPLE_ITEMS.format(f));
}
}
function Dopop(link,i) {
var defaultvalue=document.forms[0].field_value[i].value;
var newin=window.open(link+"&result=" + defaultvalue,"valuebuilder",'width=500,height=400,toolbar=false,scrollbars=yes');
}
function confirm_deletion() {
return confirm( MSG_CONFIRM_DELETE_ITEM );
}