PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0.1
Jetpack – WP Security, Backup, Speed, & Growth v16.0.1
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 7 months ago subscription-modal.css 7 months ago subscription-modal.js 7 months ago
subscription-modal.js
147 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 } catch {
28 // Ok if we can't set it.
29 }
30
31 // Add cache-busting parameter
32 destinationUrl.searchParams.set( '_ctn', Date.now() );
33 window.location.href = destinationUrl.toString();
34 }
35
36 function JetpackSubscriptionModalOnCommentMessageListener( event ) {
37 let message = event && event.data;
38 if ( typeof message === 'string' ) {
39 try {
40 message = JSON.parse( message );
41 } catch {
42 return;
43 }
44 }
45
46 const type = message && message.type;
47 const data = message && message.data;
48
49 if ( type !== 'subscriptionModalShow' || typeof data.url === 'undefined' ) {
50 return;
51 }
52
53 if ( subscriptionData.homeUrl !== event.origin ) {
54 return;
55 }
56
57 if ( data.email ) {
58 const emailInput = document.querySelector(
59 '.jetpack-subscription-modal__modal-content input[type="email"]'
60 );
61 if ( ! emailInput ) {
62 reloadOnCloseSubscriptionModal( data.url );
63 return;
64 }
65
66 const appSource = document.querySelector(
67 '.jetpack-subscription-modal__modal-content input[name="app_source"]'
68 );
69 if ( ! appSource ) {
70 reloadOnCloseSubscriptionModal( data.url );
71 return;
72 }
73
74 emailInput.value = data.email;
75 if ( data.is_logged_in ) {
76 emailInput.setAttribute( 'readonly', 'readonly' );
77 appSource.value = 'atomic-subscription-modal-li';
78 }
79 }
80
81 if ( ! hasLoaded ) {
82 try {
83 const storedCount = parseInt(
84 sessionStorage.getItem( 'jetpack-subscription-modal-shown-count' )
85 );
86 const showCount = ( isNaN( storedCount ) ? 0 : storedCount ) + 1;
87 sessionStorage.setItem( 'jetpack-subscription-modal-shown-count', showCount );
88
89 if ( showCount > 5 ) {
90 new Image().src =
91 document.location.protocol +
92 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=hidden_views_limit&r=' +
93 Math.random();
94
95 reloadOnCloseSubscriptionModal( data.url );
96 return;
97 }
98 } catch {
99 // Ignore any errors.
100 }
101
102 new Image().src =
103 document.location.protocol +
104 '//pixel.wp.com/g.gif?v=wpcom-no-pv&x_jetpack-subscribe-modal-comm=showed&r=' +
105 Math.random();
106
107 modal.classList.toggle( 'open' );
108 hasLoaded = true;
109 redirectUrl = data.url;
110 }
111 }
112
113 window.addEventListener( 'message', JetpackSubscriptionModalOnCommentMessageListener );
114
115 if ( close ) {
116 close.onclick = function ( event ) {
117 event.preventDefault();
118 modal.classList.toggle( 'open' );
119 reloadOnCloseSubscriptionModal();
120 };
121 }
122
123 window.onclick = function ( event ) {
124 if ( event.target === modal ) {
125 modal.style.display = 'none';
126 reloadOnCloseSubscriptionModal();
127 }
128 };
129
130 window.addEventListener( 'load', () => {
131 // Scroll to the last comment.
132 const subscriptionScroll = localStorage.getItem(
133 'jetpack-subscription-modal-on-comment-scroll-to'
134 );
135
136 if ( subscriptionScroll ) {
137 window.location.hash = subscriptionScroll;
138 localStorage.removeItem( 'jetpack-subscription-modal-on-comment-scroll-to' );
139
140 const comment = document.querySelector( subscriptionScroll );
141 if ( comment ) {
142 comment.scrollIntoView( { block: 'center', behavior: 'smooth' } );
143 }
144 }
145 } );
146 } );
147