function initSignature(id, isEditable) { let container = $(id); let canvas = container.find('.signature-pad')[0]; function resizeCanvas() { let ratio = Math.max(window.devicePixelRatio || 1, 1); canvas.width = canvas.offsetWidth * ratio; canvas.height = canvas.offsetHeight * ratio; canvas.getContext("2d").scale(ratio, ratio); } window.onresize = resizeCanvas; resizeCanvas(); let signaturePad = new SignaturePad(canvas, { backgroundColor: 'rgb(255, 255, 255)' }); signaturePad.off(); if (isEditable) { signaturePad.on(); container.find('.clear').click(function () { signaturePad.clear(); }); container.find('.save').click(function () { let button = $(this); let container = button.parents('.signature-container')[0]; let index = $(container).data('index'); let data = { controller: 'plugin', action: 'replace', ticket: $('input[name="csrf_'+index+'"]').val(), page: $('input[name="page_'+index+'"]').val(), message: tr('Signature added'), type: 'signature', content: signaturePad.toDataURL(), index: index, params: [] }; // Disable container buttons button.parents('.buttons').find('button').each(function(i, e){ $(e).attr('disabled', 'disabled'); }); button.html(tr('Saving')); $.ajax({ type: 'POST', url: 'tiki-ajax_services.php', dataType: 'json', data: data, success: function() { window.location.reload(); }, error: function(xhr, status, message) { button.html(tr('Save')); button.parents('.buttons').find('button').each(function(i, e){ $(e).removeAttr('disabled'); }); } }); }); } } $('.add-signature').on('click', function () { let index = $(this).data('index'); let editPerm = $(this).data('editable'); $(this).hide(); $('#signature_' + index).show(); initSignature("#signature_" + index, editPerm); }); $('.cancel-signature').on('click', function () { let container = $(this).parents('.signature-container')[0]; let index = $(container).data('index'); $(container).hide(); $('#add-signature-' + index).show(); });