PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 8.9.1
Jetpack – WP Security, Backup, Speed, & Growth v8.9.1
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 / _inc / connect-button.js
jetpack / _inc Last commit date
blocks 5 years ago build 5 years ago fonts 8 years ago genericons 6 years ago lib 5 years ago social-logos 5 years ago accessible-focus.js 5 years ago class.jetpack-provision.php 6 years ago connect-button.js 5 years ago crowdsignal-shortcode.js 5 years ago crowdsignal-survey.js 5 years ago facebook-embed.js 5 years ago footer.php 7 years ago gallery-settings.js 5 years ago genericons.php 11 years ago header.php 7 years ago idc-notice.js 5 years ago jetpack-admin.js 5 years ago jetpack-connection-banner.js 5 years ago jetpack-deactivate-dialog.js 5 years ago jetpack-jitm.js 5 years ago jetpack-modules.js 5 years ago jetpack-modules.models.js 6 years ago jetpack-modules.views.js 5 years ago jetpack-server-sandbox.php 6 years ago jetpack-wizard-banner.js 5 years ago jquery.jetpack-resize.js 5 years ago polldaddy-shortcode.js 5 years ago postmessage.js 8 years ago social-logos.php 6 years ago twitter-timeline.js 5 years ago
connect-button.js
172 lines
1 /* global jpConnect */
2
3 jQuery( document ).ready( function ( $ ) {
4 var connectButton = $( '.jp-connect-button, .jp-banner__alt-connect-button' ).eq( 0 );
5 var tosText = $( '.jp-connect-full__tos-blurb' );
6 var jetpackConnectIframe = $( '<iframe class="jp-jetpack-connect__iframe" />' );
7 var connectionHelpSections = $(
8 '#jetpack-connection-cards, .jp-connect-full__dismiss-paragraph, .jp-connect-full__testimonial'
9 );
10 var connectButtonFrom = '';
11
12 connectButton.on( 'click', function ( event ) {
13 event.preventDefault();
14
15 if ( 'undefined' === typeof URLSearchParams ) {
16 connectButtonFrom = '';
17 } else {
18 var searchParams = new URLSearchParams( $( this ).prop( 'search' ) );
19 connectButtonFrom = searchParams && searchParams.get( 'from' );
20 }
21
22 if ( connectionHelpSections.length ) {
23 connectionHelpSections.fadeOut( 600 );
24 }
25
26 jetpackConnectButton.selectAndStartConnectionFlow();
27 } );
28
29 var jetpackConnectButton = {
30 isRegistering: false,
31 isPaidPlan: false,
32 selectAndStartConnectionFlow: function () {
33 var connectionHelpSections = $( '#jetpack-connection-cards, .jp-connect-full__testimonial' );
34 if ( connectionHelpSections.length ) {
35 connectionHelpSections.fadeOut( 600 );
36 }
37
38 if ( ! jetpackConnectButton.isRegistering ) {
39 if ( 'original' === jpConnect.forceVariation ) {
40 // Forcing original connection flow, `JETPACK_SHOULD_NOT_USE_CONNECTION_IFRAME = true`
41 // or we're dealing with Safari which has issues with handling 3rd party cookies.
42 jetpackConnectButton.handleOriginalFlow();
43 } else {
44 // Default in-place connection flow.
45 jetpackConnectButton.handleConnectInPlaceFlow();
46 }
47 }
48 },
49 handleOriginalFlow: function () {
50 window.location = connectButton.attr( 'href' );
51 },
52 handleConnectInPlaceFlow: function () {
53 // Alternative connection buttons should redirect to the main one for the "connect in place" flow.
54 if ( connectButton.hasClass( 'jp-banner__alt-connect-button' ) ) {
55 window.location = jpConnect.connectInPlaceUrl;
56 return;
57 }
58
59 jetpackConnectButton.isRegistering = true;
60 tosText.hide();
61 connectButton.hide();
62 jetpackConnectButton.triggerLoadingState();
63
64 var registerUrl = jpConnect.apiBaseUrl + '/connection/register';
65
66 // detect Calypso Env and add to API URL
67 if ( window.Initial_State && window.Initial_State.calypsoEnv ) {
68 registerUrl =
69 registerUrl + '?' + $.param( { calypso_env: window.Initial_State.calypsoEnv } );
70 }
71
72 $.ajax( {
73 url: registerUrl,
74 type: 'POST',
75 data: {
76 registration_nonce: jpConnect.registrationNonce,
77 _wpnonce: jpConnect.apiNonce,
78 },
79 error: jetpackConnectButton.handleConnectionError,
80 success: jetpackConnectButton.handleConnectionSuccess,
81 } );
82 },
83 triggerLoadingState: function () {
84 var loadingText = $( '<span>' )
85 .addClass( 'jp-connect-full__button-container-loading' )
86 .text( jpConnect.buttonTextRegistering )
87 .appendTo( '.jp-connect-full__button-container' );
88
89 var spinner = $( '<div>' ).addClass( 'jp-spinner' );
90 var spinnerOuter = $( '<div>' ).addClass( 'jp-spinner__outer' ).appendTo( spinner );
91 $( '<div>' ).addClass( 'jp-spinner__inner' ).appendTo( spinnerOuter );
92 loadingText.after( spinner );
93 },
94 handleConnectionSuccess: function ( data ) {
95 jetpackConnectButton.fetchPlanType();
96 window.addEventListener( 'message', jetpackConnectButton.receiveData );
97 jetpackConnectIframe.attr( 'src', data.authorizeUrl + '&from=' + connectButtonFrom );
98 jetpackConnectIframe.on( 'load', function () {
99 jetpackConnectIframe.show();
100 $( '.jp-connect-full__button-container' ).hide();
101 } );
102 jetpackConnectIframe.hide();
103 $( '.jp-connect-full__button-container' ).after( jetpackConnectIframe );
104
105 // At this point we are pretty sure if things work out that we will be loading the admin script
106 var link = document.createElement( 'link' );
107 link.rel = 'preload';
108 link.as = 'script';
109 link.href = jpConnect.preFetchScript;
110 document.head.appendChild( link );
111 },
112 fetchPlanType: function () {
113 $.ajax( {
114 url: jpConnect.apiBaseUrl + '/site',
115 type: 'GET',
116 data: {
117 _wpnonce: jpConnect.apiSiteDataNonce,
118 },
119 success: function ( data ) {
120 var siteData = JSON.parse( data.data );
121 jetpackConnectButton.isPaidPlan =
122 siteData.options.is_pending_plan || ! siteData.plan.is_free;
123 },
124 } );
125 },
126 receiveData: function ( event ) {
127 if (
128 event.origin !== jpConnect.jetpackApiDomain ||
129 event.source !== jetpackConnectIframe.get( 0 ).contentWindow
130 ) {
131 return;
132 }
133
134 switch ( event.data ) {
135 case 'close':
136 window.removeEventListener( 'message', this.receiveData );
137 jetpackConnectButton.handleAuthorizationComplete();
138 break;
139 case 'wpcom_nocookie':
140 jetpackConnectIframe.hide();
141 jetpackConnectButton.handleConnectionError();
142 break;
143 }
144 },
145 handleAuthorizationComplete: function () {
146 jetpackConnectButton.isRegistering = false;
147
148 if ( jetpackConnectButton.isPaidPlan ) {
149 window.location.assign( jpConnect.dashboardUrl );
150 // The Jetpack admin page has hashes in the URLs, so we need to reload the page after .assign()
151 window.location.reload( true );
152 } else {
153 window.location.assign( jpConnect.plansPromptUrl );
154 }
155 },
156 handleConnectionError: function ( error ) {
157 jetpackConnectButton.isRegistering = false;
158 jetpackConnectButton.handleOriginalFlow();
159 },
160 };
161
162 // When we visit /wp-admin/admin.php?page=jetpack#/setup, immediately start the connection flow.
163 var hash = location.hash.replace( /#\//, '' );
164 if ( 'setup' === hash ) {
165 if ( connectionHelpSections.length ) {
166 connectionHelpSections.hide();
167 }
168
169 jetpackConnectButton.selectAndStartConnectionFlow();
170 }
171 } );
172