PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / trunk
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages vtrunk
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 trunk, at resources/frontend/js/broadcasts.js

94 lines 2.6 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 };
37
38 convertKitBroadcastsRender(blockContainer, atts);
39 }
40 });
41 });
42
43 /**
44 * Sends an AJAX request to request HTML based on the supplied block attributes,
45 * when pagination is used on a Broadcast block.
46 *
47 * @since 1.9.7.6
48 *
49 * @param {Object} blockContainer DOM object of the block to refresh the HTML in.
50 * @param {Object} atts Block attributes
51 */
52 function convertKitBroadcastsRender(blockContainer, atts) {
53 if (convertkit_broadcasts.debug) {
54 console.log('convertKitBroadcastsRender()');
55 console.log(atts);
56 }
57
58 // Show loading indicator.
59 blockContainer.classList.add('convertkit-broadcasts-loading');
60
61 // Build URL with query string parameters.
62 const params = new URLSearchParams(atts);
63 const url = `${convertkit_broadcasts.ajax_url}?${params.toString()}`;
64
65 // Fetch HTML.
66 fetch(url)
67 .then(function (response) {
68 if (convertkit_broadcasts.debug) {
69 console.log(response);
70 }
71
72 return response.json();
73 })
74 .then(function (result) {
75 if (convertkit_broadcasts.debug) {
76 console.log(result);
77 }
78
79 // Remove loading indicator.
80 blockContainer.classList.remove('convertkit-broadcasts-loading');
81
82 // Replace block container's HTML with response data.
83 blockContainer.innerHTML = result;
84 })
85 .catch(function (error) {
86 if (convertkit.debug) {
87 console.error(error);
88 }
89
90 // Remove loading indicator.
91 blockContainer.classList.remove('convertkit-broadcasts-loading');
92 });
93 }
94