PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.1.1
Jetpack – WP Security, Backup, Speed, & Growth v14.1.1
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / comments / subscription-modal-on-comment / subscription-modal.js
jetpack / modules / comments / subscription-modal-on-comment Last commit date
class-jetpack-subscription-modal-on-comment.php 1 year ago subscription-modal.css 2 years ago subscription-modal.js 1 year ago
subscription-modal.js
146 lines
1 /* global subscriptionData */
2 document.addEventListener( 'DOMContentLoaded', function () {
3 const modal = document.getElementsByClassName( 'jetpack-subscription-modal' )[ 0 ];
4
5 if ( ! modal ) {
6 return;
7 }
8
9 const close = document.getElementsByClassName( 'jetpack-subscription-modal__close' )[ 0 ];
10
11 let redirectUrl = '';
12 let hasLoaded = false;
13
14 function reloadOnCloseSubscriptionModal( customUrl ) {
15 const destinationUrl = customUrl ? new URL( customUrl ) : new URL( redirectUrl );
16
17 // Prevent redirect to external sites.
18 if ( destinationUrl.hostname !== window.location.hostname ) {
19 return;
20 }
21
22 try {
23 localStorage.setItem(
24 'jetpack-subscription-modal-on-comment-scroll-to',
25 destinationUrl.hash
26 );
27 // eslint-disable-next-line no-empty
28 } catch ( e ) {}
29
30 // Add cache-busting parameter
31 destinationUrl.searchParams.set( '_ctn', Date.now() );
32 window.location.href = destinationUrl.toString();
33 }
34
35 function JetpackSubscriptionModalOnCommentMessageListener( event ) {
36 let message = event && event.data;
37 if ( typeof message === 'string' ) {
38 try {
39 message = JSON.parse( message );
40 } catch ( err ) {
41 return;
42 }
43 }
44
45 const type = message && message.type;
46 const data = message && message.data;
47
48 if ( type !== 'subscriptionModalShow' || typeof data.url === 'undefined' ) {
49 return;
50 }
51
52 if ( subscriptionData.homeUrl !== event.origin ) {
53 return;
54 }
55
56 if ( data.email ) {
57 const emailInput = document.querySelector(
58 '.jetpack-subscription-modal__modal-content input[type=email]'
59 );
60 if ( ! emailInput ) {
61 reloadOnCloseSubscriptionModal( data.url );
62 return;
63 }
64
65 const appSource = document.querySelector(
66 '.jetpack-subscription-modal__modal-content input[name=app_source]'
67 );
68 if ( ! appSource ) {
69 reloadOnCloseSubscriptionModal( data.url );
70 return;
71 }
72
73 emailInput.value = data.email;
74 if ( data.is_logged_in ) {
75 emailInput.setAttribute( 'readonly', 'readonly' );
76 appSource.value = 'atomic-subscription-modal-li';
77 }
78 }
79
80 if ( ! hasLoaded ) {
81 try {
82 const storedCount = parseInt(
83 sessionStorage.getItem( 'jetpack-subscription-modal-shown-count' )
84 );
85 const showCount = ( isNaN( storedCount ) ? 0 : storedCount ) + 1;
86 sessionStorage.setItem( 'jetpack-subscription-modal-shown-count', showCount );
87
88 if ( showCount > 5 ) {
89 new Image().src =
90 document.location.protocol +
91 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=hidden_views_limit&r=' +
92 Math.random();
93
94 reloadOnCloseSubscriptionModal( data.url );
95 return;
96 }
97 // eslint-disable-next-line no-empty
98 } catch ( e ) {}
99
100 new Image().src =
101 document.location.protocol +
102 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=showed&r=' +
103 Math.random();
104
105 modal.classList.toggle( 'open' );
106 hasLoaded = true;
107 redirectUrl = data.url;
108 return;
109 }
110 }
111
112 window.addEventListener( 'message', JetpackSubscriptionModalOnCommentMessageListener );
113
114 if ( close ) {
115 close.onclick = function ( event ) {
116 event.preventDefault();
117 modal.classList.toggle( 'open' );
118 reloadOnCloseSubscriptionModal();
119 };
120 }
121
122 window.onclick = function ( event ) {
123 if ( event.target === modal ) {
124 modal.style.display = 'none';
125 reloadOnCloseSubscriptionModal();
126 }
127 };
128
129 window.addEventListener( 'load', () => {
130 // Scroll to the last comment.
131 const subscriptionScroll = localStorage.getItem(
132 'jetpack-subscription-modal-on-comment-scroll-to'
133 );
134
135 if ( subscriptionScroll ) {
136 window.location.hash = subscriptionScroll;
137 localStorage.removeItem( 'jetpack-subscription-modal-on-comment-scroll-to' );
138
139 const comment = document.querySelector( subscriptionScroll );
140 if ( comment ) {
141 comment.scrollIntoView( { block: 'center', behavior: 'smooth' } );
142 }
143 }
144 } );
145 } );
146