PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 7.3.1.1
Jetpack – WP Security, Backup, Speed, & Growth v7.3.1.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 / jetpack-jitm.js
jetpack / _inc Last commit date
blocks 7 years ago build 7 years ago fonts 8 years ago genericons 10 years ago images 11 years ago img 11 years ago jetpack-icons 11 years ago lib 7 years ago scss 11 years ago social-logos 7 years ago accessible-focus.js 8 years ago class.jetpack-provision.php 7 years ago facebook-embed.js 7 years ago footer.php 7 years ago gallery-settings.js 7 years ago genericons.php 11 years ago header.php 7 years ago idc-notice.js 7 years ago jetpack-admin.js 7 years ago jetpack-connection-banner.js 7 years ago jetpack-jitm.js 7 years ago jetpack-modules.js 7 years ago jetpack-modules.models.js 7 years ago jetpack-modules.views.js 7 years ago jetpack-server-sandbox.php 7 years ago jetpack-strings.php 7 years ago jquery.jetpack-resize.js 7 years ago jquery.spin.js 8 years ago postmessage.js 8 years ago social-logos.php 9 years ago spin.js 8 years ago twitter-timeline.js 7 years ago
jetpack-jitm.js
230 lines
1 jQuery( document ).ready( function( $ ) {
2 var templates = {
3 default: function( envelope ) {
4 var html =
5 '<div class="jitm-card jitm-banner ' +
6 ( envelope.CTA.message ? 'has-call-to-action' : '' ) +
7 ' is-upgrade-premium ' +
8 envelope.content.classes +
9 '" data-stats_url="' +
10 envelope.jitm_stats_url +
11 '">';
12 html += '<div class="jitm-banner__icon-plan">' + envelope.content.icon + '</div>';
13 html += '<div class="jitm-banner__content">';
14 html += '<div class="jitm-banner__info">';
15 html += '<div class="jitm-banner__title">' + envelope.content.message + '</div>';
16 if ( envelope.content.description && envelope.content.description !== '' ) {
17 html += '<div class="jitm-banner__description">' + envelope.content.description;
18 if ( envelope.content.list.length > 0 ) {
19 html += '<ul class="banner__list">';
20 for ( var i = 0; i < envelope.content.list.length; i++ ) {
21 var text = envelope.content.list[ i ].item;
22
23 if ( envelope.content.list[ i ].url ) {
24 text =
25 '<a href="' +
26 envelope.content.list[ i ].url +
27 '" target="_blank" rel="noopener noreferrer" data-module="' +
28 envelope.feature_class +
29 '" data-jptracks-name="nudge_item_click" data-jptracks-prop="jitm-' +
30 envelope.id +
31 '">' +
32 text +
33 '</a>';
34 }
35
36 html +=
37 '<li>' +
38 '<svg class="gridicon gridicons-checkmark" height="16" width="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g>' +
39 '<path d="M9 19.414l-6.707-6.707 1.414-1.414L9 16.586 20.293 5.293l1.414 1.414" /></g></svg>' +
40 text +
41 '</li>';
42 }
43 }
44 html += '</div>';
45 }
46 html += '</div>';
47 if ( envelope.activate_module ) {
48 html += '<div class="jitm-banner__action" id="jitm-banner__activate">';
49 html +=
50 '<a href="#" data-module="' +
51 envelope.activate_module +
52 '" type="button" class="jitm-button is-compact is-primary jptracks" data-jptracks-name="nudge_click" data-jptracks-prop="jitm-' +
53 envelope.id +
54 '-activate_module">' +
55 window.jitm_config.activate_module_text +
56 '</a>';
57 html += '</div>';
58 }
59 if ( envelope.CTA.message ) {
60 var ctaClasses = 'jitm-button is-compact jptracks';
61 if ( envelope.CTA.primary && null === envelope.activate_module ) {
62 ctaClasses += ' is-primary';
63 }
64
65 html += '<div class="jitm-banner__action">';
66 html +=
67 '<a href="' +
68 envelope.url +
69 '" target="' +
70 ( envelope.CTA.newWindow === false ? '_self' : '_blank' ) +
71 '" rel="noopener noreferrer" title="' +
72 envelope.CTA.message +
73 '" data-module="' +
74 envelope.feature_class +
75 '" type="button" class="' +
76 ctaClasses +
77 '" data-jptracks-name="nudge_click" data-jptracks-prop="jitm-' +
78 envelope.id +
79 '">' +
80 envelope.CTA.message +
81 '</a>';
82 html += '</div>';
83 }
84 html +=
85 '<a href="#" data-module="' +
86 envelope.feature_class +
87 '" class="jitm-banner__dismiss"></a>';
88 html += '</div>';
89 html += '</div>';
90
91 return $( html );
92 },
93 };
94
95 var setJITMContent = function( $el, response, redirect ) {
96 var template;
97
98 var render = function( $my_template ) {
99 return function( e ) {
100 e.preventDefault();
101
102 $my_template.hide();
103
104 $.ajax( {
105 url: window.jitm_config.api_root + 'jetpack/v4/jitm',
106 method: 'POST', // using DELETE without permalinks is broken in default nginx configuration
107 data: {
108 id: response.id,
109 feature_class: response.feature_class,
110 },
111 } );
112 };
113 };
114
115 template = response.template;
116
117 // if we don't have a template for this version, just use the default template
118 if ( ! template || ! templates[ template ] ) {
119 template = 'default';
120 }
121
122 response.url = response.url + '&redirect=' + redirect;
123
124 var $template = templates[ template ]( response );
125 $template.find( '.jitm-banner__dismiss' ).click( render( $template ) );
126
127 if ( $( '#jp-admin-notices' ).length > 0 ) {
128 // Add to Jetpack notices within the Jetpack settings app.
129 $el.innerHTML = $template;
130
131 // If we already have a message, replace it.
132 if ( $( '#jp-admin-notices' ).find( '.jitm-card' ) ) {
133 $( '.jitm-card' ).replaceWith( $template );
134 }
135
136 // No existing JITM? Add ours to the top of the Jetpack admin notices.
137 $template.prependTo( $( '#jp-admin-notices' ) );
138 } else {
139 // Replace placeholder div on other pages.
140 $el.replaceWith( $template );
141 }
142
143 // Handle Module activation button if it exists.
144 $template.find( '#jitm-banner__activate a' ).click( function() {
145 var $activate_button = $( this );
146
147 // Do not allow any requests if the button is disabled.
148 if ( $activate_button.attr( 'disabled' ) ) {
149 return false;
150 }
151
152 // Make request to activate module.
153 $.ajax( {
154 url:
155 window.jitm_config.api_root +
156 'jetpack/v4/module/' +
157 $activate_button.data( 'module' ) +
158 '/active',
159 method: 'POST',
160 beforeSend: function( xhr ) {
161 xhr.setRequestHeader( 'X-WP-Nonce', $el.data( 'nonce' ) );
162
163 // Change the button status to disabled as the change is in progress.
164 $( '#jitm-banner__activate a' ).text( window.jitm_config.activating_module_text );
165 $( '#jitm-banner__activate a' ).attr( 'disabled', true );
166 },
167 } ).done( function() {
168 $( '#jitm-banner__activate a' ).text( window.jitm_config.activated_module_text );
169 $( '#jitm-banner__activate a' ).attr( 'disabled', true );
170
171 // Hide the JITM after 2 seconds.
172 setTimeout( function() {
173 $template.fadeOut( 'slow' );
174 }, 2000 );
175 } );
176 } );
177 };
178
179 var reFetch = function() {
180 $( '.jetpack-jitm-message' ).each( function() {
181 var $el = $( this );
182
183 var message_path = $el.data( 'message-path' );
184 var query = $el.data( 'query' );
185 var redirect = $el.data( 'redirect' );
186 var hash = location.hash;
187
188 hash = hash.replace( /#\//, '_' );
189 if ( '_dashboard' !== hash ) {
190 message_path = message_path.replace(
191 'toplevel_page_jetpack',
192 'toplevel_page_jetpack' + hash
193 );
194 }
195
196 $.get( window.jitm_config.api_root + 'jetpack/v4/jitm', {
197 message_path: message_path,
198 query: query,
199 _wpnonce: $el.data( 'nonce' ),
200 } ).then( function( response ) {
201 if ( 'object' === typeof response && response[ '1' ] ) {
202 response = [ response[ '1' ] ];
203 }
204
205 // properly handle the case of an empty array or no content set
206 if ( 0 === response.length || ! response[ 0 ].content ) {
207 return;
208 }
209
210 // for now, always take the first response
211 setJITMContent( $el, response[ 0 ], redirect );
212 } );
213 } );
214 };
215
216 reFetch();
217
218 $( window ).bind( 'hashchange', function( e ) {
219 var newURL = e.originalEvent.newURL;
220
221 if ( newURL.indexOf( 'jetpack#/' ) >= 0 ) {
222 var jitm_card = document.querySelector( '.jitm-card' );
223 if ( jitm_card ) {
224 jitm_card.remove();
225 }
226 reFetch();
227 }
228 } );
229 } );
230