f4a5dc13836b2c8e07d4f5a72ebbe1291bc94376
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / cataloging_additem.js
1 /* global KOHA searchid biblionumber frameworkcode popup opisadd 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 */
2
3 var browser = KOHA.browser(searchid, parseInt(biblionumber, 10));
4 browser.show();
5
6 $(document).ready(function(){
7
8     // Remove the onclick event defined in browser.js,
9     // otherwise the deletion confirmation will not work correctly
10     $('a[href*="biblionumber="]').off('click');
11
12     if( popup ){
13         if( opisadd ){
14             window.close();
15         }
16     }
17
18     $("fieldset.rows input, fieldset.rows select").addClass("noEnterSubmit");
19     /* Inline edit/delete links */
20     var biblionumber = $("input[name='biblionumber']").attr("value");
21     $("tr.editable").each(function(){
22         $(this).find("td:not(:first)").on('click', function(){
23             var rowid = $(this).parent().attr("id");
24             var num_rowid = rowid.replace("row","");
25             $(".linktools").remove();
26             var edit_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '#edititem"></a>');
27             $(edit_link).text( LABEL_EDIT_ITEM );
28             var delete_link = $('<a href="/cgi-bin/koha/cataloguing/additem.pl?op=delitem&frameworkcode=' + frameworkcode + '&biblionumber=' + biblionumber + '&itemnumber=' + num_rowid + '&searchid=' + searchid + '"></a>');
29             $(delete_link).text( LABEL_DELETE_ITEM );
30             $(delete_link).on('click', function() {
31                 return confirm_deletion();
32             });
33             var tools_node = $('<span class="linktools"></span>');
34             $(tools_node).append(edit_link);
35             $(tools_node).append(delete_link);
36             $(this).append(tools_node);
37         });
38     });
39
40     $("#addnewitem").click(function(){
41         if ( confirm( MSG_CONFIRM_ADD_ITEM ) ){
42             window.location.href = "/cgi-bin/koha/cataloguing/additem.pl?biblionumber=" + biblionumber;
43         }
44     });
45
46     // Skip the first column
47     columns_settings.unshift( { cannot_be_toggled: "1" } );
48
49     var itemst = KohaTable("itemst", {
50         "aoColumnDefs": [
51             { "aTargets": [ 0 ], "bSortable": false, "bSearchable": false },
52         ],
53         'bPaginate': false,
54         'bInfo': false,
55         "bAutoWidth": false,
56         "bKohaColumnsUseNames": true
57     }, columns_settings);
58
59     var multiCopyControl = $("#add_multiple_copies_span");
60     var addMultipleBlock = $("#addmultiple");
61     var addSingleBlock = $("#addsingle");
62     multiCopyControl.hide();
63     $("#add_multiple_copies").on("click",function(e){
64         e.preventDefault;
65         addMultipleBlock.toggle();
66         addSingleBlock.toggle();
67         multiCopyControl.toggle();
68         $('body,html').animate({ scrollTop: $('body').height() }, 100);
69     });
70     $("#cancel_add_multiple").on("click",function(e){
71         e.preventDefault();
72         addMultipleBlock.toggle();
73         addSingleBlock.toggle();
74         multiCopyControl.toggle();
75     });
76
77     $('.subfield_line select').select2();
78 });
79
80 function Check(f) {
81     var total_errors = CheckMandatorySubfields(f);
82     if (total_errors==0) {
83         // Explanation about this line:
84         // In case of limited edition permission, we have to prevent user from modifying some fields.
85         // But there is no such thing as readonly attribute for select elements.
86         // So we use disabled instead. But disabled prevent values from being passed through the form at submit.
87         // So we "un-disable" the elements just before submitting.
88         // That's a bit clumsy, and if someone comes up with a better solution, feel free to improve that.
89         $("select[name=field_value]").prop('disabled', false);
90         return true;
91     } else {
92         var alertString2 = MSG_FORM_NOT_SUBMITTED;
93         alertString2 += "\n------------------------------------------------------------------------------------\n";
94         alertString2 += "\n- " + "%s " + MSG_MANDATORY_FIELDS_EMPTY.format(total_errors);
95         alert(alertString2);
96         return false;
97     }
98 }
99
100 function CheckMultipleAdd(f) {
101
102     if (!f || isNaN(f) || !parseInt(f) == f || f <= 0) {
103         alert( MSG_ENTER_NUM_ITEMS );
104         return false;
105     }
106     // Add a soft-limit of 99 with a reminder about potential data entry error
107     if (f>99) {
108         return confirm( MSG_ADD_MULTIPLE_ITEMS.format(f));
109     }
110 }
111
112 function Dopop(link,i) {
113     var defaultvalue=document.forms[0].field_value[i].value;
114     var newin=window.open(link+"&result=" + defaultvalue,"valuebuilder",'width=500,height=400,toolbar=false,scrollbars=yes');
115 }
116
117 function confirm_deletion() {
118     return confirm( MSG_CONFIRM_DELETE_ITEM );
119 }