INTEGROMAT_SENDWEBHOOK::send_test_js()

Anonymous JS function invoked as callback when clicking the custom button “Send test”. The JS function requires the JS module “markdown”. Make sure it’s included in the “modules” array


Return Return

(string) The JS code


Source Source

File: src/integrations/integromat/actions/integromat-sendwebhook.php

	public function send_test_js() {
		// Start output
		ob_start();

		// It's option to add the <script> tags
		// This must have only one anonymous function
		?>

        <script>

            // Do when the user clicks on send test
            function ($button, data, modules) {
                // Add loading animation to the button
                $button.addClass('uap-btn--loading uap-btn--disabled');

                // Get the data we're going to send to the AJAX request
                let dataToBeSent = {
                    action: 'sendtest_integ_webhook',
                    nonce: UncannyAutomator.nonce,

                    integration_id: data.item.integrationCode,
                    item_id: data.item.id,
                    values: data.values
                }

                // Do AJAX
                $.ajax({
                    method: 'POST',
                    dataType: 'json',
                    url: ajaxurl,
                    data: dataToBeSent,

                    success: function (response) {
                        // Remove loading animation from the button
                        $button.removeClass('uap-btn--loading uap-btn--disabled');

                        // Create notice
                        // But first check if the message is defined
                        if (typeof response.message !== 'undefined') {
                            // Get notice type
                            let noticeType = typeof response.type !== 'undefined' ? response.type : 'gray';

                            // Parse message using markdown
                            let markdown = new modules.Markdown(response.message);

                            // Create notice
                            let $notice = $('<div/>', {
                                'class': 'item-options__notice item-options__notice--' + noticeType
                            });

                            // Get markdown HTML
                            let $message = markdown.getHTML();

                            // Add message to the notice container
                            $notice.html($message);

                            // Get the notices container
                            let $noticesContainer = $('.item[data-id="' + data.item.id + '"] .item-options__notices');

                            // Add notice
                            $noticesContainer.html($notice);
                        }
                    },

                    statusCode: {
                        403: function () {
                            location.reload();
                        }
                    },

                    fail: function (response) {
                    }
                });
            }

        </script>

		<?php

		// Get output
		$output = ob_get_clean();

		// Return output
		return $output;
	}