(function ( $ ) {
'use strict';
$( window ).load(function() {
// Encrypt message on submit.
$( '#sform' ).submit( async function ( event ) {
// This return prevents the submit event to refresh the page.
event.preventDefault();
// Reset validation helpers.
$( '.form-group' ).removeClass( 'has-error' );
$( '.help-block' ).remove();
// Disable form
$( '.secure-form :input' ).prop( 'disabled', true );
$( '.secure-form' ).append( '
' );
// Read public key
let publicKey;
try {
publicKey = await openpgp.readKey( { armoredKey: data.publicKeyArmored } );
} catch (error) {
// Give failed feedback to user
$( '.secure-form' ).append(
'' + data.errorOnKey + '
'
);
$( '.spinner-wrapper' ).remove();
return;
}
let message = $( '#message' ).val();
const encrypted = await openpgp.encrypt({
message: await openpgp.createMessage( { text: message } ),
encryptionKeys: publicKey,
//signingKeys: privateKey
});
let formData = {
action: 'send_secure_form',
name: $( '#name' ).val(),
email: $( '#email' ).val(),
subject: $( '#subject' ).val(),
messageLen: message.length,
message: JSON.stringify( encrypted ),
security: data.nonce,
};
$.ajax({
url: data.ajaxUrl,
type: 'post',
dataType: 'json',
data: formData,
success: function ( response ) {
if ( ! response.success ) {
if ( response.errors.name ) {
$( '#name-group' ).addClass( 'has-error' );
$( '#name-group' ).append(
'' + response.errors.name + '
'
);
}
if ( response.errors.email ) {
$( '#email-group' ).addClass( 'has-error' );
$( '#email-group' ).append(
'' + response.errors.email + '
'
);
}
if ( response.errors.subject ) {
$( '#subject-group' ).addClass( 'has-error' );
$( '#subject-group' ).append(
'' + response.errors.subject + '
'
);
}
if (response.errors.message) {
$( '#message-group' ).addClass( 'has-error' );
$( '#message-group' ).append(
'' + response.errors.message + '
'
);
}
// Give failed feedback to user
$( '.secure-form' ).append(
'' + response.message + '
'
);
// Delete alert message
setTimeout(function() {
$( '.secure-form .alert' ).remove();
}, 10000);
// Enable form
$( '.secure-form :input' ).prop( 'disabled', false );
$( '.spinner-wrapper' ).remove();
} else {
$( '.secure-form' ).append(
'' + response.message + '
'
);
// Reset form inputs
$( '#message' ).val('');
$( '#name' ).val('');
$( '#email' ).val('');
$( '#subject' ).val('');
// Enable form
$( '.secure-form :input' ).prop( 'disabled', false );
$( '.spinner-wrapper' ).remove();
// Delete alert message
setTimeout(function() {
$( '.secure-form .alert' ).remove();
}, 10000);
}
},
error: function ( response ) {
$( '.secure-form' ).append(
'' + response.message + '
'
);
// Enable form
$( '.secure-form :input' ).prop( 'disabled', false );
$( '.spinner-wrapper' ).remove();
// Delete alert message
setTimeout(function() {
$( '.secure-form .alert' ).remove();
}, 10000);
}
});
});
});
})(jQuery);