PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 3.1.0
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v3.1.0
3.4.2 3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 All 195 releases
convertkit / resources / frontend / js / broadcasts.js

broadcasts.js in Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages 3.1.0, at resources/frontend/js/broadcasts.js

100 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 */
12 document.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 */
53 function 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 }
100