1/** 2 * Frontend functionality for the Broadcasts block and shortcode. 3 * 4 * @since 1.9.7.4 5 * 6 * @author ConvertKit 7 */ 8 9/** 10 * Register events 11 */ 12document.addEventListener('DOMContentLoaded', function () { 13 // Listen for click events. 14 document.addEventListener('click', function (e) { 15 // Check the broadcasts pagination was clicked. 16 if (e.target.matches('ul.convertkit-broadcasts-pagination a')) { 17 e.preventDefault(); 18 19 // Get block container and build object of data-* attributes. 20 const blockContainer = e.target.closest( 21 'div.convertkit-broadcasts' 22 ); 23 const atts = { 24 display_date: blockContainer.dataset.displayDate, 25 date_format: blockContainer.dataset.dateFormat, 26 display_image: blockContainer.dataset.displayImage, 27 display_description: blockContainer.dataset.displayDescription, 28 display_read_more: blockContainer.dataset.displayReadMore, 29 read_more_label: blockContainer.dataset.readMoreLabel, 30 limit: blockContainer.dataset.limit, 31 paginate: blockContainer.dataset.paginate, 32 paginate_label_prev: blockContainer.dataset.paginateLabelPrev, 33 paginate_label_next: blockContainer.dataset.paginateLabelNext, 34 link_color: blockContainer.dataset.linkColor, 35 page: e.target.dataset.page, 36 nonce: e.target.dataset.nonce, 37 }; 38 39 convertKitBroadcastsRender(blockContainer, atts); 40 } 41 }); 42}); 43 44/** 45 * Sends an AJAX request to request HTML based on the supplied block attributes, 46 * when pagination is used on a Broadcast block. 47 * 48 * @since 1.9.7.6 49 * 50 * @param {Object} blockContainer DOM object of the block to refresh the HTML in. 51 * @param {Object} atts Block attributes 52 */ 53function convertKitBroadcastsRender(blockContainer, atts) { 54 // Append action. 55 atts.action = convertkit_broadcasts.action; 56 57 if (convertkit_broadcasts.debug) { 58 console.log('convertKitBroadcastsRender()'); 59 console.log(atts); 60 } 61 62 // Show loading indicator. 63 blockContainer.classList.add('convertkit-broadcasts-loading'); 64 65 // Fetch HTML. 66 fetch(convertkit_broadcasts.ajax_url, { 67 method: 'POST', 68 headers: { 69 'Content-Type': 'application/x-www-form-urlencoded', 70 }, 71 body: new URLSearchParams(atts), 72 }) 73 .then(function (response) { 74 if (convertkit_broadcasts.debug) { 75 console.log(response); 76 } 77 78 return response.json(); 79 }) 80 .then(function (result) { 81 if (convertkit_broadcasts.debug) { 82 console.log(result); 83 } 84 85 // Remove loading indicator. 86 blockContainer.classList.remove('convertkit-broadcasts-loading'); 87 88 // Replace block container's HTML with response data. 89 blockContainer.innerHTML = result.data; 90 }) 91 .catch(function (error) { 92 if (convertkit.debug) { 93 console.error(error); 94 } 95 96 // Remove loading indicator. 97 blockContainer.classList.remove('convertkit-broadcasts-loading'); 98 }); 99}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.