JezK
Edit File: auditlog.js
var WsalData; window['WsalAuditLogRefreshed'] = function () { // fix pagination links causing form params to get lost // jQuery('span.pagination-links a').click(function (ev) { // ev.preventDefault(); // var deparam = function (url) { // var obj = {}; // var pairs = url.split('&'); // for (var i in pairs) { // var split = pairs[i].split('='); // obj[decodeURIComponent(split[0])] = decodeURIComponent(split[1]); // } // return obj; // }; // const viewer = jQuery('#audit-log-viewer'); // const url_params = deparam(this.href); // const param_keys = [ 'paged', 'orderby', 'order' ]; // for ( let index in param_keys ) { // const param_name = param_keys[ index ]; // let param_value = url_params[param_name]; // if (typeof param_value === 'undefined' && param_name === 'paged') { // param_value = 1; // } // const input_elm = viewer.find('input[name="' + param_name + '"]'); // if ( input_elm.length === 0 ) { // viewer.append('<input type="hidden" name="' + param_name + '" value="' + param_value + '"/>'); // } else { // input_elm.val( param_value ); // } // } // viewer.submit(); // }); jQuery('.log-disable').each(function () { // Tooltip Confirm disable alert. jQuery(this).darkTooltip({ animation: 'fadeIn', size: 'small', gravity: 'west', confirm: true, yes: 'Disable', no: '', onYes: function (elem) { WsalDisableByCode(elem.attr('data-alert-id'), elem.data('disable-alert-nonce')); }, }); }); // tooltip severity type jQuery('.tooltip').darkTooltip({ animation: 'fadeIn', gravity: 'west', size: 'medium', }); jQuery('.tooltip').on('click', function(e) { e.preventDefault(); }); // Data inspector tooltip. jQuery('.more-info').darkTooltip({ animation: 'fadeIn', gravity: 'east', size: 'medium' }); }; jQuery(() => { /** * Display helper text when free search input is focused and hide it after a delay when it loses focus. * * @since 5.6.4 */ const searchInput = jQuery('.wsal-search-controls .wsal_search_input'); const searchHelperText = jQuery('.wsal-search-helper-text'); const searchHelperTextHideDelay = 2000; let searchHelperTextHideTimer; if (!searchInput.length || !searchHelperText.length) { return; } searchInput.on('focus', () => { clearTimeout(searchHelperTextHideTimer); searchHelperText.addClass('wsal-search-helper-text-visible'); }); searchInput.on('blur', () => { clearTimeout(searchHelperTextHideTimer); searchHelperTextHideTimer = setTimeout(() => { searchHelperText.removeClass('wsal-search-helper-text-visible'); }, searchHelperTextHideDelay); }); }); function WsalAuditLogInit(_WsalData) { // WsalData = _WsalData; // var WsalTkn = WsalData.autorefresh.token; // // List refresher. // var WsalAjx = null; // /** // * Check & Load New Alerts. // */ // var WsalChk = function () { // if (WsalAjx) WsalAjx.abort(); // WsalAjx = jQuery.post(WsalData.ajaxurl, { // action: 'AjaxRefresh', // logcount: WsalTkn // }, function (data) { // data = data.toString(); // data = data.trim(); // WsalAjx = null; // if (data && data !== 'false') { // WsalTkn = data; // jQuery('#audit-log-viewer').load( // location.href + ' #audit-log-viewer-content', // window['WsalAuditLogRefreshed'] // ); // } // }); // }; // If audit log auto refresh is enabled. // if ( WsalData.autorefresh.enabled ) { // // Check for new alerts every 30 secs. // setInterval( WsalChk, 30000 ); // } // WsalSsasInit(); } var WsalIppsPrev; function WsalIppsFocus(value) { WsalIppsPrev = value; } function WsalSsasInit() { var SsasAjx = null; var SsasInps = jQuery("input.wsal-ssas"); SsasInps.after('<div class="wsal-ssas-dd" style="display: none;"/>'); SsasInps.click(function () { jQuery(this).select(); }); window['WsalAuditLogRefreshed'](); SsasInps.keyup(function () { var SsasInp = jQuery(this); var SsasDiv = SsasInp.next(); var SsasVal = SsasInp.val(); if (SsasAjx) SsasAjx.abort(); SsasInp.removeClass('loading'); // do a new search if (SsasInp.attr('data-oldvalue') !== SsasVal && SsasVal.length > 2) { SsasInp.addClass('loading'); SsasAjx = jQuery.post(WsalData.ajaxurl, { action: 'AjaxSearchSite', search: SsasVal }, function (data) { if (SsasAjx) SsasAjx = null; SsasInp.removeClass('loading'); SsasDiv.hide(); SsasDiv.html(''); if (data && data.length) { var SsasReg = new RegExp(SsasVal.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'), 'gi'); for (var i = 0; i < data.length; i++) { var link = jQuery('<a href="javascript:;" onclick="WsalSsasChange(' + data[i].blog_id + ')"/>') .text(data[i].blogname + ' (' + data[i].domain + ')'); link.html(link.text().replace(SsasReg, '<u>$&</u>')); SsasDiv.append(link); } } else { SsasDiv.append(jQuery('<span/>').text(WsalData.tr8n.searchnone)); } SsasDiv.prepend(jQuery('<a href="javascript:;" onclick="WsalSsasChange(0)" class="allsites"/>').text(WsalData.tr8n.searchback)); SsasDiv.show(); }, 'json'); SsasInp.attr('data-oldvalue', SsasVal); } // handle keys }); SsasInps.blur(function () { setTimeout(function () { var SsasInp = jQuery(this); var SsasDiv = SsasInp.next(); SsasInp.attr('data-oldvalue', ''); SsasDiv.hide(); }, 200); }); } function WsalSsasChange(value) { jQuery('div.wsal-ssas-dd').hide(); jQuery('input.wsal-ssas').attr('disabled', true); jQuery('#wsal-cbid').val(value); jQuery('#audit-log-viewer').submit(); } function WsalDisableCustom(link, meta_key) { const linkElm = jQuery(link); linkElm.hide(); jQuery.ajax({ type: 'POST', url: ajaxurl, dataType: 'json', data: { action: 'AjaxDisableCustomField', notice: meta_key, disable_nonce: linkElm.data('disable-custom-nonce'), object_type: linkElm.data('object-type'), }, success: function (response) { const data = response?.data; if (!data) { linkElm.show(); return; } // Create the notice structure const notice = jQuery('<div class="updated" data-notice-name="notifications-extension"></div>'); // Build message 1 const message1 = jQuery('<p></p>'); message1.append(document.createTextNode(data.p1_parts?.[0] || '')); message1.append(jQuery('<strong></strong>').text(data.notice || '')); message1.append(document.createTextNode(data.p1_parts?.[1] || '')); // Build message 2 const message2 = jQuery('<p></p>'); message2.append(document.createTextNode(data.p2_parts?.[0] || '')); const settingsLink = jQuery('<a></a>') .attr('href', data.settings_url || '#') .text(data.tab_label || ''); message2.append(settingsLink); message2.append(document.createTextNode(data.p2_parts?.[1] || '')); // Append both messages to notice notice.append(message1); notice.append(message2); jQuery('h2:first').after(notice); }, error: function (xhr) { linkElm.show(); const message = xhr?.responseJSON?.data?.message || 'Failed to exclude custom field. Please try again.'; const errorNotice = jQuery('<div class="notice notice-error"><p></p></div>'); errorNotice.find('p').text(message); jQuery('h2:first').after(errorNotice); }, }); } function WsalDBChange(value, nonce) { jQuery.ajax({ type: 'POST', url: ajaxurl, async: true, data: { action: 'AjaxSwitchDB', nonce: nonce, selected_db: value }, success: function () { location.reload(); } }); } function WsalDisableByCode(code, nonce) { jQuery.ajax({ type: 'POST', url: ajaxurl, async: true, data: { action: 'AjaxDisableByCode', code: code, disable_nonce: nonce }, success: function (data) { var notice = jQuery('<div class="updated" data-notice-name="disabled"></div>').html(data); jQuery("h2:first").after(notice); } }); } /** * Create and download a temporary file. * * @param {string} filename - File name. * @param {string} text - File content. */ function download(filename, text) { // Create temporary element. var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); // Set the element to not display. element.style.display = 'none'; document.body.appendChild(element); // Simlate click on the element. element.click(); // Remove temporary element. document.body.removeChild(element); } /** * Onclick event handler to download failed login log file. * * @param {object} element - Current element. */ function download_failed_login_log(element) { var nonce = jQuery(element).data('download-nonce'); // Nonce. alert = jQuery(element).closest( '[id^="Event"]' ).attr('id').substring(5); jQuery.ajax({ type: 'POST', url: ajaxurl, async: true, data: { action: 'wsal_download_failed_login_log', download_nonce: nonce, alert_id: alert }, success: function (data) { data = data.replace(/,/g, '\n'); // Start file download. download('failed_logins.log', data); } }); } /** * Onclick event handler to dismiss the setup modal. * * @since 4.1.4 */ function wsal_dismiss_setup_modal() { jQuery.ajax( { type: 'POST', url: ajaxurl, async: true, dataType: 'json', data: { action: 'wsal_dismiss_setup_modal', nonce: jQuery( '#wsal-dismiss-setup-modal' ).val() } } ); } jQuery( document ).ready( function() { /** * Dismiss addon-available notice. */ jQuery( '.notice-addon-available .notice-dismiss' ).click( function() { var addonToDismiss = jQuery( this ).parent().attr( 'data-addon' ); jQuery.ajax({ type: 'POST', url: ajaxurl, async: true, data: { action: 'wsal_dismiss_notice_addon_available', nonce: jQuery( '#wsal-dismiss-notice-addon-available-' + addonToDismiss ).val(), addon: addonToDismiss }, success: function( data ) { console.log( data ); }, error: function( xhr, textStatus, error ) { console.log( xhr.statusText ); console.log( textStatus ); console.log( error ); } }); }); /** * Trigger to attempt to install a missing addon. */ jQuery( '.wsal-addon-install-trigger' ).click( function() { var button = this; wsal_addon_installer_ajax( button ); // disable this button. jQuery( '.wsal-addon-install-trigger' ).attr( 'disabled', true ); jQuery( '.wsal-addon-install-trigger:not([data-addon-name="' + jQuery( this ).data( 'addon-name' ) + '"])' ).text( wsalAuditLogArgs.installAddonStrings.otherInstalling ); jQuery( button ).text( wsalAuditLogArgs.installAddonStrings.installingText ); var spinner = document.createElement( 'span' ); jQuery( spinner ).addClass( 'spinner is-active' ); jQuery( spinner ).css( { 'float':'none', 'margin': '0', 'margin-left': '5px' } ); jQuery( button ).after( spinner ); } ); }); function wsal_addon_installer_ajax( button ) { jQuery.ajax( { type: 'POST', url: ajaxurl, async: true, data: { action: 'wsal_run_addon_install', _wpnonce: jQuery( button ).data( 'nonce' ), addon_for: jQuery( button ).data( 'addon-name' ) }, success: function( data ) { console.log( data ); jQuery( button ).next( '.spinner' ).remove(); if ( data.success === 'undefined' || data.success === false ) { jQuery( button ).after( wsalAuditLogArgs.installAddonStrings.errorInstalling ); } else { jQuery( '.wsal-addon-install-trigger[data-addon-name="' + jQuery( button ).data( 'addon-name' ) + '"]' ).text( wsalAuditLogArgs.installAddonStrings.addonInstalled ); jQuery( '.wsal-addon-install-trigger:not([data-addon-name="' + jQuery( button ).data( 'addon-name' ) + '"])' ).attr( 'disabled', false ); jQuery( button ).text( wsalAuditLogArgs.installAddonStrings.installedReload ); jQuery( button ).attr( 'disabled', true ); location.reload(); } }, error: function( xhr, textStatus, error ) { jQuery( button ).after( wsalAuditLogArgs.installAddonStrings.errorInstalling ); jQuery( button ).next( '.spinner' ).remove(); console.log( xhr.statusText ); console.log( textStatus ); console.log( error ); } } ); } jQuery( document ).ready( function() { jQuery( document ).on( 'click', '[data-shortened-text]', function(event) { event.preventDefault(); var elm = jQuery( this ); var full_text = elm.data( 'shortened-text' ); elm.parent().find( 'span' ).text( full_text ); elm.remove(); } ); // Data inspector WSAL 4.6+ jQuery( document ).on( 'click', '.data-event-inspector-link:not(.inspector-active)', function(event) { event.preventDefault(); let count = jQuery( '.event-data-panel' ).length; var origText = jQuery( this ).text(); jQuery( this ).attr( 'data-orig-text', origText ); jQuery( this ).attr( 'data-panel-number', count ); let colspan = (jQuery( this ).closest( 'tr' ).children('td').length)+1; jQuery( this ).closest( 'tr' ).after( '<tr class="event-data-panel row-detail-'+ count +'"><td colspan="'+colspan+'" class="panel-'+ count +'"><div class="panel-'+ count +'-fill"></div></td></tr>' ); jQuery( jQuery( '.panel-'+ count ) ).load( jQuery( this ).attr( 'href' ), function() { jQuery( '.panel-'+ count + ' .event-content-wrapper' ).slideDown( 300 ); }); jQuery( this ).attr( 'data-' ); jQuery( this ).addClass( 'inspector-active' ).text( wsalAuditLogArgs.closeInspectorString ); return true; } ); jQuery( document ).on( 'click', '.data-event-inspector-link.inspector-active', function(event) { event.preventDefault(); var targetRow = '.row-detail-' + jQuery( this ).attr( 'data-panel-number'); var targetPanel = '.panel-' + jQuery( this ).attr( 'data-panel-number'); var origText = jQuery( this ).attr( 'data-orig-text' ); jQuery( '.panel-'+ jQuery( this ).attr( 'data-panel-number') + ' .event-content-wrapper' ).slideUp( 200 ); setTimeout(function() { jQuery( targetRow ).remove(); jQuery( targetPanel ).remove(); jQuery( targetPanel + '-fill').remove(); }, 300); jQuery( this ).removeClass( 'inspector-active' ).text( origText ); return true; } ); });