/**
* Settings UI JavaScript
*
* @summary Settings JavaScript / jQuery.
*
* @since 0.4.0
* @package APL_Admin
* @requires jQuery
* @requires jQuery UI
*/
( function($) {
var exportNonce = apl_settings_local.export_nonce;
var importNonce = apl_settings_local.import_nonce;
var restoreDefaultsNonce = apl_settings_local.restoreDefaultsNonce;
var trans = apl_settings_local.trans;
/**
* Save Settings Event
*
* @since 0.4.0
*/
$( '#apl_save_settings' ).click( function( event ) {
console.log('Saving Settings');
});
/**
* Export AJAX Event
*
* @since 0.4.0
*/
$('#apl_export').click( function( event ) {
console.log( 'Initializing Export...' );
var fileName = $( '#apl_export_filename' ).val();
// Check Filename for errors
if ( '' === fileName ) {
apl_alert( trans.fileName_empty_alert_message, trans.fileName_empty_alert_title );
return false;
} else {
var iChars = "<>:\"/\\|,?*";
for ( var i = 0; i < fileName.length; i++ ) {
if ( iChars.indexOf( fileName.charAt(i) ) != -1 ) {
// Cannot use (< > : " / \\ | , ? *).
apl_alert('
' + trans.fileName_char_alert_message1 + '
' + trans.fileName_char_alert_message2 + '
', trans.fileName_char_alert_title );
return false;
}
}
}
var formData = new FormData();
formData.append( 'action', 'apl_settings_export' );
formData.append( '_ajax_nonce', exportNonce );
formData.append( 'export_type', 'database' );
formData.append( 'filename', $.trim( $('#apl_export_filename').val() ) );
jQuery.ajax({
url: ajaxurl,
type: 'POST',
cache: false,
contentType: false,
processData: false,
data: formData,
dataFilter: function( data, type ){
return JSON.parse( data );
},
success: function( data, textStatus, jqXHR ){
var paramStr = '';
paramStr += '?_ajax_nonce=' + data._ajax_nonce;
paramStr += '&action=' + data.action;
paramStr += '&filename=' + data.filename;
var elemIF = document.createElement("iframe");
elemIF.id = 'apl_exportIF'
elemIF.style.display = "none";
elemIF.src = ajaxurl + paramStr;
document.body.appendChild(elemIF);
}
});
});
/**
* Import Event (AJAX)
*
* @since 0.4.0
*/
$('#form_settings_import').submit( function( event ) {
event.stopPropagation(); // Stop stuff happening
event.preventDefault(); // Totally stop stuff happening
var importFiles = $('#apl_file_import')[0].files;
var formData = new FormData();
if ( 1 > importFiles.length ) {
apl_alert( trans.import_no_file_message, trans.import_no_file_title );
return false;
}
var invalid = false;
jQuery.each( importFiles, function( index, value ) {
if ( '' === value.name ) {
apl_alert( trans.import_no_file_message, trans.import_no_file_title );
invalid = true;
return false;
} else {
var ext = value.name.split('.').pop().toLowerCase();
if($.inArray(ext, ['json']) === -1) {
apl_alert( trans.import_invalid_file_message, trans.import_invalid_file_title );
invalid = true;
return false;
}
}
var name = 'file_' + index;
formData.append( name, value )
});
if ( invalid ) {
return false;
}
formData.append('action', 'apl_settings_import');
formData.append('_ajax_nonce', importNonce);
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: formData,
cache: false,
dataType: 'json',
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
beforeSend: function( jqXHR, settings ){
var element = document.getElementById('apl_export_if');
if ( element !== null ){
element.parentNode.removeChild( element );
}
},
success: function( data, textStatus, jqXHR ) {
console.log( 'Return from Server-side.' );
if ( $.isEmptyObject( data.overwrite_post_list ) && $.isEmptyObject( data.overwrite_design ) ) {
// No Data to confirm overwrite.
apl_alert( trans.import_success_message, trans.import_success_title );
} else {
var output = '';
//output += '';
//output += '(All / ';
//output += 'None) Presets
';
output += 'Post Lists
';
output += '';
for ( var pl_i in data.overwrite_post_list ) {
output += '';
output += '';
output += '
';
}
output += '
';
// output += 'Designs
';
// output += '';
// for ( var d_i in data.overwrite_design ) {
// output += '';
// output += '';
// output += '
';
// }
// output += '
';
$('').html( output ).dialog({
stack: false,
title: trans.import_overwrite_dialog_title,
resizable: true,
height: 270,
minWidth: 360,
maxWidth: 540,
maxHeight: 639,
modal: true,
buttons: {
Next: function() {
var post_list_overwrite = [];
var design_overwrite = [];
for ( var pl_i in data.overwrite_post_list ) {
if ( $( '#chkGroup_overwrite_preset_' + data.overwrite_post_list[ pl_i ] ).is( ':checked' ) ) {
post_list_overwrite.push( data.overwrite_post_list[ pl_i ] );
}
}
for ( var d_i in data.overwrite_post_list ) {
if ( $( '#chkGroup_overwrite_preset_' + data.overwrite_design[ d_i ] ).is( ':checked' ) ) {
design_overwrite.push( data.overwrite_design[ d_i ] );
}
}
var paramStr = '';
paramStr += '?_ajax_nonce=' + data._ajax_nonce;
paramStr += '&action=' + data.action;
paramStr += '&post_list_overwrite=' + post_list_overwrite;
paramStr += '&design_overwrite=' + design_overwrite;
var elemIF = document.createElement("iframe");
elemIF.id = 'apl_exportIF';
elemIF.style.display = "none";
elemIF.src = ajaxurl + paramStr;
document.body.appendChild(elemIF);
apl_alert( trans.import_success_message, trans.import_success_title );
$( this ).dialog( "close" );
var element = document.getElementById( 'apl_confirm_overwrite' );
element.parentNode.removeChild(element);
},
Cancel: function() {
$( this ).dialog( "close" );
var element = document.getElementById( 'apl_confirm_overwrite' );
element.parentNode.removeChild(element);
}
},
open: function(){
$('#overwrite_select_group_all').click( function( event ){
for ( var preset_key in data.overwrite_preset_db ) {
$('#chkGroup_overwrite_preset_' + preset_key).attr( 'checked', true );
}
});
$('#overwrite_select_group_none').click( function( event ){
for (var preset_key in data.overwrite_preset_db) {
$('#chkGroup_overwrite_preset_' + preset_key).attr( 'checked', false );
}
});
}
});// End .dialog().
}
}
});// End AJAX.
});// End .submit().
/**
* restore Defaults (AJAX)
*
* @since 0.5
*/
$('#apl_restore_defaults').click( function( event ) {
console.log( 'Restoring defaults...' );
if ( ! confirm( 'Restoring defaults will only restore \'Excerpt Divided\', \'Page Content Divided\', and \'Footer List\'. Continuing will overwrite these.\nPress Ok to proceed.' ) ) {
return false;
}
var formData = new FormData();
formData.append( 'action', 'apl_settings_restore_defaults' );
formData.append( '_ajax_nonce', restoreDefaultsNonce );
jQuery.ajax({
url: ajaxurl,
type: 'POST',
data: formData,
cache: false,
dataType: 'json',
processData: false, // Don't process the files
contentType: false, // Set content type to false as jQuery will tell the server its a query string request
success: function( data, textStatus, jqXHR ){
console.log( 'Defaults restored successfully.' );
}
});// End AJAX.
});
/**
* APL Alert Dialog
*
* @since 0.4.0
*
* @param {type} output_msg
* @param {type} title_msg
* @param {type} id
* @returns {undefined}
*/
function apl_alert( output_msg, title_msg, id ) {
if ( !id )
id = '';
else
id = ' id="apl-dialog-' + id + '" ';
if ( !title_msg )
title_msg = trans.default_alert_title;
if ( !output_msg )
output_msg = trans.default_alert_message;
var elem = '';
$('').html( output_msg ).dialog({
title: title_msg,
//resizable: true,
modal: true,
buttons: {
"Ok": function() {
$( this ).dialog( 'close' );
}
}
});
}
})(jQuery);