summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/modules/scan/admin-bar-notice.js')
-rw-r--r--plugins/jetpack/modules/scan/admin-bar-notice.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/scan/admin-bar-notice.js b/plugins/jetpack/modules/scan/admin-bar-notice.js
new file mode 100644
index 00000000..4a226bc4
--- /dev/null
+++ b/plugins/jetpack/modules/scan/admin-bar-notice.js
@@ -0,0 +1,52 @@
+( function ( localized ) {
+ function ready( fn ) {
+ if ( document.readyState != 'loading' ) {
+ fn();
+ } else {
+ document.addEventListener( 'DOMContentLoaded', fn );
+ }
+ }
+
+ function fetch_scan_treats_and_add_link() {
+ var xhrRequest = new XMLHttpRequest();
+ xhrRequest.open( 'GET', localized.scan_endpoint, true );
+ xhrRequest.onload = function () {
+ if ( this.status == 200 ) {
+ // Success!
+ var body = JSON.parse( this.response );
+ if ( body && body.data ) {
+ var apiResponse = JSON.parse( body.data );
+ var numberOfThreats =
+ apiResponse.threats && apiResponse.threats.length ? apiResponse.threats.length : 0;
+ update_threats_link( numberOfThreats );
+ } else {
+ update_threats_link( 0 );
+ }
+ } else {
+ update_threats_link( 0 );
+ }
+ };
+ xhrRequest.setRequestHeader( 'X-WP-Nonce', localized.nonce );
+ xhrRequest.send();
+ }
+
+ ready( function () {
+ fetch_scan_treats_and_add_link();
+ } );
+
+ function update_threats_link( numberOfThreats ) {
+ var element = document.getElementById( 'wp-admin-bar-jetpack-scan-notice' );
+ if ( ! element ) {
+ return;
+ }
+
+ if ( ! numberOfThreats ) {
+ element.parentNode.removeChild( element );
+ return;
+ }
+
+ var textLabel = numberOfThreats == 1 ? localized.singular : localized.multiple;
+ element.innerHTML =
+ '<a href="' + localized.scan_dashboard_url + '" class="ab-item">' + textLabel + '</a>';
+ }
+} )( window.Jetpack_Scan );