1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22/** 23 * @var CView $this 24 */ 25?> 26 27/** 28 * Send media type test data to server and get a response. 29 * 30 * @param {Overlay} overlay 31 */ 32function mediatypeTestSend(overlay) { 33 var $form = overlay.$dialogue.find('form'), 34 $form_fields = $form.find('#sendto, #subject, #message'), 35 data = $form.serialize(), 36 url = new Curl($form.attr('action')); 37 38 $form.trimValues(['#sendto', '#subject', '#message']); 39 $form_fields.prop('disabled', true); 40 $('#mediatypetest_log').addClass('<?= ZBX_STYLE_DISABLED ?>'); 41 42 overlay.setLoading(); 43 overlay.xhr = jQuery.ajax({ 44 url: url.getUrl(), 45 data: data, 46 success: function(ret) { 47 overlay.$dialogue.find('.msg-bad, .msg-good').remove(); 48 49 if (typeof ret.messages !== 'undefined') { 50 jQuery(ret.messages).insertBefore($form); 51 } 52 53 if ('response' in ret) { 54 jQuery('#webhook_response_value', $form).val(ret.response.value); 55 jQuery('#webhook_response_type', $form).text(ret.response.type); 56 } 57 58 if ('debug' in ret) { 59 $('#mediatypetest_log').removeClass('disabled'); 60 sessionStorage.setItem('mediatypetest', JSON.stringify(ret.debug)); 61 } 62 63 overlay.unsetLoading(); 64 $form_fields.prop('disabled', false); 65 }, 66 error: function(request, status, error) { 67 if (request.status == 200) { 68 overlay.unsetLoading(); 69 $form_fields.prop('disabled', false); 70 alert(error); 71 } 72 else if (window.document.forms['mediatypetest_form']) { 73 var request = this, 74 retry = function() { 75 if (window.document.forms['mediatypetest_form']) { 76 overlay.xhr = jQuery.ajax(request); 77 } 78 }; 79 80 // Retry with 2s interval. 81 setTimeout(retry, 2000); 82 } 83 }, 84 dataType: 'json', 85 type: 'post' 86 }); 87} 88 89function openLogPopup(opener) { 90 if ($(opener).hasClass('<?= ZBX_STYLE_DISABLED ?>')) { 91 return; 92 } 93 94 var debug = JSON.parse(sessionStorage.getItem('mediatypetest')||'null'), 95 $content = $('<div>'), 96 $logitems = $('<div>', {class: 'logitems'}), 97 $footer = $('<div>', {class: 'logtotalms'}); 98 99 if (debug) { 100 debug.log.forEach(function (entry) { 101 $('<pre>').text(entry.ms + ' ' + entry.level + ' ' + entry.message).appendTo($logitems); 102 }); 103 $footer.text(<?= json_encode(_('Time elapsed:')) ?> + " " + debug.ms + 'ms'); 104 $content.append($logitems); 105 } 106 107 overlayDialogue({ 108 'title': <?= json_encode(_('Media type test log')) ?>, 109 'content': $content, 110 'class': 'modal-popup modal-popup-generic debug-modal', 111 'footer': $footer, 112 'buttons': [ 113 { 114 'title': <?= json_encode(_('Ok')) ?>, 115 'cancel': true, 116 'focused': true, 117 'action': () => {} 118 } 119 ] 120 }, opener); 121} 122 123sessionStorage.removeItem('mediatypetest'); 124