127 lines
3.5 KiB
JavaScript
127 lines
3.5 KiB
JavaScript
/* global jQuery, woocommerce_admin_system_status, wcSetClipboard, wcClearClipboard */
|
|
jQuery( function ( $ ) {
|
|
|
|
/**
|
|
* Users country and state fields
|
|
*/
|
|
var wcSystemStatus = {
|
|
init: function() {
|
|
$( document.body )
|
|
.on( 'click', 'a.help_tip, a.woocommerce-help-tip', this.preventTipTipClick )
|
|
.on( 'click', 'a.debug-report', this.generateReport )
|
|
.on( 'click', '#copy-for-support', this.copyReport )
|
|
.on( 'aftercopy', '#copy-for-support', this.copySuccess )
|
|
.on( 'aftercopyfailure', '#copy-for-support', this.copyFail );
|
|
},
|
|
|
|
/**
|
|
* Prevent anchor behavior when click on TipTip.
|
|
*
|
|
* @return {Bool}
|
|
*/
|
|
preventTipTipClick: function() {
|
|
return false;
|
|
},
|
|
|
|
/**
|
|
* Generate system status report.
|
|
*
|
|
* @return {Bool}
|
|
*/
|
|
generateReport: function() {
|
|
var report = '';
|
|
|
|
$( '.wc_status_table thead, .wc_status_table tbody' ).each( function() {
|
|
if ( $( this ).is( 'thead' ) ) {
|
|
var label = $( this ).find( 'th:eq(0)' ).data( 'export-label' ) || $( this ).text();
|
|
report = report + '\n### ' + label.trim() + ' ###\n\n';
|
|
} else {
|
|
$( 'tr', $( this ) ).each( function() {
|
|
var label = $( this ).find( 'td:eq(0)' ).data( 'export-label' ) || $( this ).find( 'td:eq(0)' ).text();
|
|
var the_name = label.trim().replace( /(<([^>]+)>)/ig, '' ); // Remove HTML.
|
|
|
|
// Find value
|
|
var $value_html = $( this ).find( 'td:eq(2)' ).clone();
|
|
$value_html.find( '.private' ).remove();
|
|
$value_html.find( '.dashicons-yes' ).replaceWith( '✔' );
|
|
$value_html.find( '.dashicons-no-alt, .dashicons-warning' ).replaceWith( '❌' );
|
|
|
|
// Format value
|
|
var the_value = $value_html.text().trim();
|
|
var value_array = the_value.split( ', ' );
|
|
|
|
if ( value_array.length > 1 ) {
|
|
// If value have a list of plugins ','.
|
|
// Split to add new line.
|
|
var temp_line ='';
|
|
$.each( value_array, function( key, line ) {
|
|
temp_line = temp_line + line + '\n';
|
|
});
|
|
|
|
the_value = temp_line;
|
|
}
|
|
|
|
report = report + '' + the_name + ': ' + the_value + '\n';
|
|
});
|
|
}
|
|
});
|
|
|
|
try {
|
|
$( '#debug-report' ).slideDown();
|
|
$( '#debug-report' ).find( 'textarea' ).val( '`' + report + '`' ).focus().select();
|
|
$( this ).fadeOut();
|
|
return false;
|
|
} catch ( e ) {
|
|
/* jshint devel: true */
|
|
console.log( e );
|
|
}
|
|
|
|
return false;
|
|
},
|
|
|
|
/**
|
|
* Copy for report.
|
|
*
|
|
* @param {Object} evt Copy event.
|
|
*/
|
|
copyReport: function( evt ) {
|
|
wcClearClipboard();
|
|
wcSetClipboard( $( '#debug-report' ).find( 'textarea' ).val(), $( this ) );
|
|
evt.preventDefault();
|
|
},
|
|
|
|
/**
|
|
* Display a "Copied!" tip when success copying
|
|
*/
|
|
copySuccess: function() {
|
|
$( '#copy-for-support' ).tipTip({
|
|
'attribute': 'data-tip',
|
|
'activation': 'focus',
|
|
'fadeIn': 50,
|
|
'fadeOut': 50,
|
|
'delay': 0
|
|
}).focus();
|
|
},
|
|
|
|
/**
|
|
* Displays the copy error message when failure copying.
|
|
*/
|
|
copyFail: function() {
|
|
$( '.copy-error' ).removeClass( 'hidden' );
|
|
$( '#debug-report' ).find( 'textarea' ).focus().select();
|
|
}
|
|
};
|
|
|
|
wcSystemStatus.init();
|
|
|
|
$( '.wc_status_table' ).on( 'click', '.run-tool .button', function( evt ) {
|
|
evt.stopImmediatePropagation();
|
|
return window.confirm( woocommerce_admin_system_status.run_tool_confirmation );
|
|
});
|
|
|
|
$( '#log-viewer-select' ).on( 'click', 'h2 a.page-title-action', function( evt ) {
|
|
evt.stopImmediatePropagation();
|
|
return window.confirm( woocommerce_admin_system_status.delete_log_confirmation );
|
|
});
|
|
});
|