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