PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.9.2
Jetpack – WP Security, Backup, Speed, & Growth v13.9.2
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 2 years ago subscription-modal.css 2 years ago subscription-modal.js 2 years ago
subscription-modal.js
143 lines
1 document.addEventListener( 'DOMContentLoaded', function () {
2 const modal = document.getElementsByClassName( 'jetpack-subscription-modal' )[ 0 ];
3
4 if ( ! modal ) {
5 return;
6 }
7
8 const close = document.getElementsByClassName( 'jetpack-subscription-modal__close' )[ 0 ];
9
10 let redirectUrl = '';
11 let hasLoaded = false;
12
13 function reloadOnCloseSubscriptionModal( customUrl ) {
14 const destinationUrl = customUrl ? new URL( customUrl ) : new URL( redirectUrl );
15
16 // Prevent redirect to external sites.
17 if ( destinationUrl.hostname !== window.location.hostname ) {
18 return;
19 }
20
21 try {
22 localStorage.setItem(
23 'jetpack-subscription-modal-on-comment-scroll-to',
24 destinationUrl.hash
25 );
26 // eslint-disable-next-line no-empty
27 } catch ( e ) {}
28
29 window.location = destinationUrl.toString();
30 }
31
32 function JetpackSubscriptionModalOnCommentMessageListener( event ) {
33 let message = event && event.data;
34 if ( typeof message === 'string' ) {
35 try {
36 message = JSON.parse( message );
37 } catch ( err ) {
38 return;
39 }
40 }
41
42 const type = message && message.type;
43 const data = message && message.data;
44
45 if ( type !== 'subscriptionModalShow' || typeof data.url === 'undefined' ) {
46 return;
47 }
48
49 if ( ! event.origin.includes( window.location.host ) ) {
50 return;
51 }
52
53 if ( data.email ) {
54 const emailInput = document.querySelector(
55 '.jetpack-subscription-modal__modal-content input[type=email]'
56 );
57 if ( ! emailInput ) {
58 reloadOnCloseSubscriptionModal( data.url );
59 return;
60 }
61
62 const appSource = document.querySelector(
63 '.jetpack-subscription-modal__modal-content input[name=app_source]'
64 );
65 if ( ! appSource ) {
66 reloadOnCloseSubscriptionModal( data.url );
67 return;
68 }
69
70 emailInput.value = data.email;
71 if ( data.is_logged_in ) {
72 emailInput.setAttribute( 'readonly', 'readonly' );
73 appSource.value = 'atomic-subscription-modal-li';
74 }
75 }
76
77 if ( ! hasLoaded ) {
78 try {
79 const storedCount = parseInt(
80 sessionStorage.getItem( 'jetpack-subscription-modal-shown-count' )
81 );
82 const showCount = ( isNaN( storedCount ) ? 0 : storedCount ) + 1;
83 sessionStorage.setItem( 'jetpack-subscription-modal-shown-count', showCount );
84
85 if ( showCount > 5 ) {
86 new Image().src =
87 document.location.protocol +
88 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=hidden_views_limit&r=' +
89 Math.random();
90
91 reloadOnCloseSubscriptionModal( data.url );
92 return;
93 }
94 // eslint-disable-next-line no-empty
95 } catch ( e ) {}
96
97 new Image().src =
98 document.location.protocol +
99 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=showed&r=' +
100 Math.random();
101
102 modal.classList.toggle( 'open' );
103 hasLoaded = true;
104 redirectUrl = data.url;
105 return;
106 }
107 }
108
109 window.addEventListener( 'message', JetpackSubscriptionModalOnCommentMessageListener );
110
111 if ( close ) {
112 close.onclick = function ( event ) {
113 event.preventDefault();
114 modal.classList.toggle( 'open' );
115 reloadOnCloseSubscriptionModal();
116 };
117 }
118
119 window.onclick = function ( event ) {
120 if ( event.target === modal ) {
121 modal.style.display = 'none';
122 reloadOnCloseSubscriptionModal();
123 }
124 };
125
126 window.addEventListener( 'load', () => {
127 // Scroll to the last comment.
128 const subscriptionScroll = localStorage.getItem(
129 'jetpack-subscription-modal-on-comment-scroll-to'
130 );
131
132 if ( subscriptionScroll ) {
133 window.location.hash = subscriptionScroll;
134 localStorage.removeItem( 'jetpack-subscription-modal-on-comment-scroll-to' );
135
136 const comment = document.querySelector( subscriptionScroll );
137 if ( comment ) {
138 comment.scrollIntoView( { block: 'center', behavior: 'smooth' } );
139 }
140 }
141 } );
142 } );
143