Files
SIGE-WEB-snapshot/wp-content/plugins/wp-security-audit-log/js/settings.js

277 lines
9.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Settings Page Script
*
* @since 1.0.0
*/
jQuery( document ).ready( function() {
var RemoveSecToken = function() {
var $this = jQuery( this ).parents( 'span:first' );
$this.addClass( 'sectoken-del' ).fadeOut( 'fast', function() {
$this.remove();
});
};
jQuery( '.js-query-box, #ViewerQueryBox, #EditorQueryBox, #ExRoleQueryBox, #ExUserQueryBox, #ExUserSubjectQueryBox, #CustomQueryBox, #IpAddrQueryBox, #IpAddrSubjectQueryBox, #ExCPTsQueryBox, #ExURLsQueryBox' ).keydown( function( event ) {
if ( 13 === event.keyCode ) {
var type = jQuery( this ).closest( 'fieldset' ).attr( 'data-type' );
if (! type ) {
type = jQuery( this ).attr( 'id' ).substr( 0, 6 );
}
jQuery( '#' + type + 'QueryAdd' ).click();
return false;
}
});
jQuery( '.js-query-add, #ViewerQueryAdd, #EditorQueryAdd, #ExRoleQueryAdd, #ExUserQueryAdd, #CustomQueryAdd, #IpAddrQueryAdd, #ExCPTsQueryAdd, #ExURLsQueryAdd, #StatusQueryAdd' ).click( function() {
var buttonElm = jQuery( this );
var fieldsetElm = buttonElm.closest( 'fieldset' );
var type = fieldsetElm.attr( 'data-type' );
if (! type ) {
type = buttonElm.attr('id').substr(0, 6);
}
var value = jQuery.trim( jQuery( '#' + type + 'QueryBox' ).val() );
var existing = jQuery( '#' + type + 'List input' ).filter( function() {
return this.value === value;
});
if ( ! value || existing.length ) {
return;
} // if value is empty or already used, stop here
jQuery( '#' + type + 'QueryBox, #' + type + 'QueryAdd' ).attr( 'disabled', true );
jQuery.post(
jQuery( '#ajaxurl' ).val(),
{
action: 'AjaxCheckSecurityToken',
token: value,
type: type,
nonce: wsal_data.wp_nonce
},
function( data ) {
data = JSON.parse( data );
jQuery( '#' + type + 'QueryBox, #' + type + 'QueryAdd' ).attr( 'disabled', false );
if ( data.success ) {
if ( 'ExURLs' === type ) {
if ( 'other' === data.tokenType ) {
alert( wsal_data.invalidURL );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
} else if ( 'ExCPTs' === type ) {
if ( 'other' === data.tokenType ) {
alert( wsal_data.invalidCPT );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
} else if ( 'Status' === type ) {
if ( 'other' === data.tokenType ) {
alert( wsal_data.invalidCPT );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
} else if ( 'IpAddr' === type ) {
if ( 'other' === data.tokenType ) {
alert( wsal_data.invalidIP );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
} else if ( 'UserMeta' != type && 'PostMeta' != type && 'IpAddr' != type ) {
if ( 'other' === data.tokenType ) {
alert( wsal_data.invalidUser );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
}
jQuery( '#' + type + 'QueryBox' ).val( '' );
jQuery( '#' + type + 'List' ).append( jQuery( '<span class="sectoken-' + data.tokenType + '"/>' ).text( data.token ).append(
jQuery( '<input type="hidden" name="' + type + 's[]"/>' ).val( data.token ),
jQuery( '<a href="javascript:;" title="' + wsal_data.remove + '">&times;</a>' ).click( RemoveSecToken )
) );
} else {
alert( data.message );
jQuery( '#' + type + 'QueryBox' ).val( '' );
return;
}
}
);
});
jQuery( '.js-list>span>a, #ViewerList>span>a, #EditorList>span>a, #ExRoleList>span>a, #ExUserList>span>a, #CustomList>span>a, #IpAddrList>span>a, #ExCPTsList>span>a, #ExURLsList>span>a, #StatusList>span>a' ).click( RemoveSecToken );
var usersUrl = ajaxurl + '?action=AjaxGetAllUsers&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#ExUserQueryBox' ).autocomplete({
source: usersUrl,
minLength: 1
});
jQuery( '#ExUserSubjectQueryBox' ).autocomplete({
source: usersUrl,
minLength: 1
});
var rolesUrl = ajaxurl + '?action=AjaxGetAllRoles&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#ExRoleQueryBox' ).autocomplete({
source: rolesUrl,
minLength: 1
});
var cptsUrl = ajaxurl + '?action=AjaxGetAllCPT&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#ExCPTsQueryBox' ).autocomplete({
source: cptsUrl,
minLength: 1
});
var statusesUrl = ajaxurl + '?action=AjaxGetAllStatuses&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#StatusQueryBox' ).autocomplete({
source: statusesUrl,
minLength: 1
});
// Enable setting.
function wsal_enable_setting( setting ) {
setting.removeProp( 'disabled' );
}
// Disable setting.
function wsal_disable_setting( setting ) {
setting.prop( 'disabled', 'disabled' );
}
// Reset settings handler.
jQuery( '[data-remodal-id=wsal_reset_settings] button[data-remodal-action=confirm]' ).click( function() {
resetWSAL( 'wsal_reset_settings', jQuery( '#wsal-reset-settings-nonce' ).val(), '.js-settings-reset' );
});
// Purge activity handler.
jQuery( '[data-remodal-id=wsal_purge_activity] button[data-remodal-action=confirm]' ).click( function() {
resetWSAL( 'wsal_purge_activity', jQuery( '#wsal-purge-activity-nonce' ).val(), '.js-purge-reset' );
});
/**
* Reset ajax function.
*
* @param {string} action Ajax action hook.
* @param {string} nonce Nonce for security.
* @param {string} triggerSelector - Selector expression of the event trigger element.
*/
function resetWSAL( action, nonce, triggerSelector ) {
var triggerElm = null;
if ( typeof triggerSelector != 'undefined' && triggerSelector.length != 0 ){
triggerElm = jQuery( triggerSelector );
if ( triggerElm.length == 0) {
triggerElm = null
};
}
if ( triggerElm != null ) {
jQuery( triggerSelector ).attr( 'disabled', 'disabled' );
jQuery( triggerSelector ).after( '<span class="spinner is-active" style="float: none; margin-top: 0;"></span>');
jQuery( triggerSelector ).siblings( '.notice' ).remove();
}
jQuery.ajax({
type: 'POST',
url: ajaxurl,
async: true,
data: {
action: action,
nonce: nonce
},
success: function( data ) {
if ( null != triggerElm ) {
jQuery( triggerSelector ).removeAttr( 'disabled' );
jQuery( triggerSelector ).siblings( '.spinner' ).remove();
if ( 'success' in data ) {
var noticeCssClass = data.success ? 'notice-success' : 'notice-error';
jQuery( triggerSelector ).after( '<span class="notice ' + noticeCssClass + '" style="margin-left: 10px; padding: 6px 10px;">' + data.data + '</span>');
}
} else {
console.log(data);
}
},
error: function( xhr, textStatus, error ) {
console.log( xhr.statusText );
console.log( textStatus );
console.log( error );
}
});
}
if ( 0 < jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).length ) {
jQuery( 'input[name="restrict-plugin-settings"]' ).on( 'change', function() {
if ( 'only_me' == this.value ) {
// re-enable "Only me" option in the log viewer access settings
jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).removeAttr( 'disabled' );
if ( 'yes' == jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).attr( 'data-revert-to-only-me' ) ) {
jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).attr( 'checked', 'checked' );
jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).removeAttr( 'data-revert-to-only-me' );
}
} else {
// disable "Only me" option in the log viewer access settings and change the selection to
// "Super administators and site administrators" if "Only me" was selected
jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).attr( 'disabled', 'disabled' );
if ( 'only_me' == jQuery( 'input[name="restrict-log-viewer"]:checked' ).val() ) {
jQuery( 'input[name="restrict-log-viewer"][value="only_admins"]' ).attr( 'checked', 'checked' );
jQuery( 'input[name="restrict-log-viewer"][value="only_me"]' ).attr( 'data-revert-to-only-me', 'yes' );
}
}
});
}
/**
* Alert user to save settings before switching tabs.
*/
jQuery(function() {
// Get form values as of page load.
var $form = jQuery('form#audit-log-settings');
var initialState = $form.serialize();
jQuery( 'body' ).on( 'click', '.nav-tab:not(.nav-tab-active)', function ( e ) {
// If the form has been modified, alert user.
if (initialState !== $form.serialize()) {
e.preventDefault();
alert( wsal_data.saveSettingsChanges );
}
});
});
// Allow custom login message to be changed without saving/refreshing the page.
jQuery('input[name="login_page_notification"]').on('change', function () {
if ( 'true' == this.value ) {
jQuery( '#login_page_notification_text' ).prop( 'disabled', false );
} else {
jQuery( '#login_page_notification_text' ).prop( 'disabled', true );
}
});
});
jQuery( document ).ready( function() {
var severitiesUrl = ajaxurl + '?action=wsal_ajax_get_all_severities&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#SeveritiesQueryBox' ).autocomplete({
source: severitiesUrl,
minLength: 1
});
var eventTypesUrl = ajaxurl + '?action=wsal_ajax_get_all_event_types&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#EventTypeQueryBox' ).autocomplete({
source: eventTypesUrl,
minLength: 1
});
var objectTypesUrl = ajaxurl + '?action=wsal_ajax_get_all_object_types&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#ObjectTypeQueryBox' ).autocomplete({
source: objectTypesUrl,
minLength: 1
});
var eventIDTypesUrl = ajaxurl + '?action=wsal_ajax_get_all_event_ids&wsal_nonce=' + wsal_data.wp_nonce;
jQuery( '#EventIDQueryBox' ).autocomplete({
source: eventIDTypesUrl,
minLength: 1
});
});