1 /* 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 */
3 var browser = KOHA.browser(searchid, parseInt(biblionumber, 10));
6 $(document).ready(function(){
8 // Remove the onclick event defined in browser.js,
9 // otherwise the deletion confirmation will not work correctly
10 $('a[href*="biblionumber="]').off('click');
12 if( popup && op != 'saveitem' ){
16 $("fieldset.rows input, fieldset.rows select").addClass("noEnterSubmit");
17 /* Inline edit/delete links */
18 var biblionumber = $("input[name='biblionumber']").val();
19 $("tr.editable").each(function(){
20 $(this).find("td:not(:first)").on('click', function(){
21 var rowid = $(this).parent().attr("id");
22 var num_rowid = rowid.replace("row","");
23 $(".linktools").remove();
24 var edit_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '#edititem"></a>');
25 $(edit_link).text( LABEL_EDIT_ITEM );
26 var delete_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '"></a>');
27 $(delete_link).text( LABEL_DELETE_ITEM );
28 $(delete_link).on('click', function() {
29 return confirm_deletion();
31 var tools_node = $('<span class="linktools"></span>');
32 $(tools_node).append(edit_link);
33 $(tools_node).append(delete_link);
34 $(this).append(tools_node);
38 $("#addnewitem").click(function(){
39 if ( confirm( MSG_CONFIRM_ADD_ITEM ) ){
40 window.location.href = "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=" + biblionumber;
44 // Skip the first column
45 table_settings['columns'].unshift( { cannot_be_toggled: "1" } );
47 var itemst = KohaTable("itemst", {
51 "bKohaColumnsUseNames": true
54 var multiCopyControl = $("#add_multiple_copies_span");
55 var addMultipleBlock = $("#addmultiple");
56 var addSingleBlock = $("#addsingle");
57 var saveAsTemplateControl = $("#save_as_template_span");
58 var saveTemplateBlock = $("#savetemplate");
60 multiCopyControl.hide();
61 $("#add_multiple_copies").on("click",function(e){
63 addMultipleBlock.toggle();
64 saveTemplateBlock.toggle();
65 addSingleBlock.toggle();
66 multiCopyControl.toggle();
67 $('body,html').animate({ scrollTop: $('body').height() }, 100);
69 $("#cancel_add_multiple").on("click",function(e){
71 addMultipleBlock.toggle();
72 saveTemplateBlock.toggle();
73 addSingleBlock.toggle();
74 multiCopyControl.toggle();
77 saveAsTemplateControl.hide();
78 $("#save_as_template").on("click",function(e){
80 saveTemplateBlock.toggle();
81 saveAsTemplateControl.toggle();
82 $('#template_name').focus();
84 $("#cancel_save_as_template").on("click",function(e){
86 saveTemplateBlock.toggle();
87 saveAsTemplateControl.toggle();
90 $("#template_id").on("change", function() {
91 let option = $(this).find(":selected");
93 if ( option.data("editor") ) {
94 $("#delete_template_submit").removeAttr("disabled");
96 $("#delete_template_submit").attr("disabled", "disabled");
99 if ( option.val() != 0 ) {
100 $("#load_template_submit").removeAttr("disabled");
102 $("#load_template_submit").attr("disabled", "disabled");
105 $("#template_id").change(); // Trigger to enable delete button if patron's template is in use
106 $("#replace_template_id").on("change", function() {
107 let selected = $(this).find(":selected");
108 if ( selected.val() > 0 ) {
109 $("#template_name_block").hide();
110 $("#template_is_shared").prop("checked", selected.data("shared"));
112 $("#template_name_block").show();
113 $("#template_is_shared").prop("checked", false);
117 // Add new item to an item group
118 if ( has_item_groups ) {
119 $('#item-group-add-or-create-form-description-block').hide();
120 $('#item-group-add-or-create-form-no-add').attr('selected', 'selected' );
122 $('#item-group-add-or-create-form-select').on('change', function(){
123 if ( $(this).val() == 'create' ) {
124 $('#item-group-add-or-create-form-description')
125 .addClass('required')
126 .attr( 'required', 'required' );
127 $('#item-group-add-or-create-form-description-block').show();
129 $('#item-group-add-or-create-form-description')
130 .removeClass('required')
131 .removeAttr('required');
132 $('#item-group-add-or-create-form-description-block').hide();
137 $('#item-group-add-or-create-form-select').on('change', function() {
138 if ( ! $('input.items-enumchron').val() ) {
139 let item_group_selector = '#item-group-' + $(this).val();
140 let enumchron = $(item_group_selector).val();
141 $('input.items-enumchron').val( enumchron );
146 function CheckTemplateForm(f) {
147 if ( $('#replace_template_id').val() == "0" && $('#template_name').val() == "" ) {
148 alert(__("Template name is required."));
156 var total_mandatory = CheckMandatorySubfields(f);
157 var total_important = CheckImportantSubfields(f);
159 if (total_mandatory==0) {
160 // Explanation about this line:
161 // In case of limited edition permission, we have to prevent user from modifying some fields.
162 // But there is no such thing as readonly attribute for select elements.
163 // So we use disabled instead. But disabled prevent values from being passed through the form at submit.
164 // So we "un-disable" the elements just before submitting.
165 // That's a bit clumsy, and if someone comes up with a better solution, feel free to improve that.
166 $("select.input_marceditor").prop('disabled', false);
168 alertString2 = MSG_FORM_NOT_SUBMITTED;
169 alertString2 += "\n------------------------------------------------------------------------------------\n";
170 alertString2 += "\n- " + MSG_MANDATORY_FIELDS_EMPTY.format(total_mandatory);
172 if(total_important > 0){
176 alertString2 += "\n\n " + MSG_IMPORTANT_FIELDS_EMPTY.format(total_important);
177 alertString2 += "\n\n " + MSG_CONFIRM_SAVE;
183 var a = confirm(alertString2);
193 function CheckMultipleAdd(f) {
195 if (!f || isNaN(f) || !parseInt(f) == f || f <= 0) {
196 alert( MSG_ENTER_NUM_ITEMS );
199 // Add a soft-limit of 99 with a reminder about potential data entry error
201 return confirm( MSG_ADD_MULTIPLE_ITEMS.format(f));
205 function Dopop(link,i) {
206 var defaultvalue=document.forms[0].field_value[i].value;
207 var newin=window.open(link+"&result=" + defaultvalue,"valuebuilder",'width=500,height=400,toolbar=false,scrollbars=yes');
210 function confirm_deletion() {
211 return confirm( MSG_CONFIRM_DELETE_ITEM );