oont-contents/plugins/side-cart-woocommerce/includes/xoo-framework/admin/assets/js/xoo-admin-js.js
2025-02-08 15:10:23 +01:00

400 lines
No EOL
9.3 KiB
JavaScript

jQuery(document).ready(function($){
//Form reset
$('.xoo-as-form-reset').click(function(e){
if( !confirm( 'Are you sure?' ) )
e.preventDefault();
})
//Toggle pro
$('.xoo-as-pro-toggle').click(function(e){
$('.xoo-settings-container').toggleClass('xoo-as-disable-pro');
})
$('.xoo-settings-container').addClass('xoo-as-disable-pro');
var sectionScrollPositions = {}
//Setting default position to 0
$('ul.xoo-sc-tabs li').each( function(){
sectionScrollPositions[ $(this).data('tab') ] = $('.xoo-sc-tabs').offset().top;
} );
var firstClick = true;
//Switch Tabs
$('ul.xoo-sc-tabs li').click(function(){
if( !firstClick ){
sectionScrollPositions[$('ul.xoo-sc-tabs li.xoo-sct-active').data('tab')] = $(window).scrollTop();
}
$('ul.xoo-sc-tabs li, .xoo-sc-tab-content').removeClass('xoo-sct-active');
$(this).addClass('xoo-sct-active');
$(this).parents('.xoo-settings-container').attr('active-tab',$(this).data('tab'));
$('.xoo-sc-tab-content[data-tab="'+$(this).data('tab')+'"]').addClass('xoo-sct-active');
if( !firstClick ){
$(window).scrollTop( sectionScrollPositions[ $(this).data('tab') ] );
}
firstClick = false;
})
$('ul.xoo-sc-tabs li:nth-child(1)').trigger('click');
$('.xoo-as-form').on( 'submit', function(e){
e.preventDefault();
$button = $(this).find('.xoo-as-form-save');
$button.text( 'Saving....' );
var data = {
'form': $(this).serialize(),
'action': 'xoo_admin_settings_save',
'xoo_ff_nonce': xoo_admin_params.nonce,
'slug': xoo_admin_params.slug
}
$.ajax({
url: xoo_admin_params.adminurl,
type: 'POST',
data: data,
success: function(response){
$button.text('Settings Saved');
setTimeout(function(){
$button.text( 'Save' )
},5000)
}
});
})
//Media
function renderMediaUploader(upload_btn) {
var file_frame, image_data;
/**
* If an instance of file_frame already exists, then we can open it
* rather than creating a new instance.
*/
if ( undefined !== file_frame ) {
file_frame.open();
return;
}
/**
* If we're this far, then an instance does not exist, so we need to
* create our own.
*
* Here, use the wp.media library to define the settings of the Media
* Uploader. We're opting to use the 'post' frame which is a template
* defined in WordPress core and are initializing the file frame
* with the 'insert' state.
*
* We're also not allowing the user to select more than one image.
*/
file_frame = wp.media.frames.file_frame = wp.media({
frame: 'post',
state: 'insert',
multiple: false
});
/**
* Setup an event handler for what to do when an image has been
* selected.
*
* Since we're using the 'view' state when initializing
* the file_frame, we need to make sure that the handler is attached
* to the insert event.
*/
file_frame.on( 'insert', function() {
// Read the JSON data returned from the Media Uploader
var json = file_frame.state().get( 'selection' ).first().toJSON();
upload_btn.siblings('.xoo-upload-url').val(json.url);
upload_btn.siblings('.xoo-upload-title').html(json.filename);
});
// Now display the actual file_frame
file_frame.open();
}
$( '.xoo-upload-icon' ).on( 'click', function( evt ) {
// Stop the anchor's default behavior
evt.preventDefault();
// Display the media uploader
renderMediaUploader($(this));
});
//Get media uploaded name
$('.xoo-upload-url').each(function(){
var media_url = $(this).val();
if(!media_url) return true; // Skip to next if no value is set
var index = media_url.lastIndexOf('/') + 1;
var media_name = media_url.substr(index);
$(this).siblings('.xoo-upload-title').html(media_name);
})
//Remove uploaded file
$('.xoo-remove-media').on('click',function(){
$(this).siblings('.xoo-upload-url').val('');
$(this).siblings('.xoo-upload-title').html('');
})
//Initialize color picker
$('.xoo-as-color-input').wpColorPicker();
//initialize sortable
$('.xoo-as-sortable-list').each( function( index, sortEl ){
var $sortEl = $(sortEl),
sortData = $sortEl.data('sort');
$sortEl.sortable( sortData );
} );
$( 'select[data-select2box="yes"]' ).each(function(index, el){
var $el = $(el);
$el.select2({
multiple: $el.attr('data-multiple')
});
});
$('.xoo-as-exim').on( 'click', function(){
$(this).toggleClass('xoo-as-active');
} );
//On export settings click
$('.xoo-as-setexport').on( 'click', function(){
var $form = $(this).closest('form.xoo-as-form');
$('.xoo-as-exim').removeClass('xoo-as-active');
$('body').addClass('xoo-as-exmodal-active');
$('.xoo-as-excont textarea').val( JSON.stringify($form.serializeArray()) ).select();
$('.xoo-as-impcont').hide();
$('.xoo-as-excont').show();
} );
//Close import/export modal
$('.xoo-as-exipclose').on( 'click', function(){
$('body').removeClass('xoo-as-exmodal-active');
} );
/*$('button.xoo-as-run-import').on( 'click', function(){
var textarea = $(this).siblings('textarea'),
settings = textarea.val();
if( !settings ) return;
if( !confirm( 'This will override your current settings. Are you sure?' ) ) return;
$(this).addClass('xoo-as-processing');
var data = JSON.parse(settings);
var fields = {};
$.each( data, function( index, field ){
if( fields[ field.name ] ){
if( Array.isArray( fields[ field.name ] ) ){
fields[ field.name ].push( field.value );
}
else{
fields[ field.name ] = [
fields[ field.name ],
field.value
];
}
}
else{
fields[ field.name ] = field.value;
}
} )
console.log(fields);
$.each( fields, function( id, value ){
var $el = $('[name="'+id+'"]');
if( !$el.length ) return;
var $settingCont = $el.closest( '.xoo-as-setting' );
if( !$settingCont.length ) return;
var type = $settingCont.attr('data-setting');
if( type === 'checkbox' ){ //switch gives two values
value = value[1];
}
if( type === 'checkbox_list' || type === 'checkbox' ){
$settingCont.find('input[type="checkbox"]').prop('checked', false);
}
else if( type === 'radio' ){
$settingCont.find( 'input[type="radio"]' ).prop('checked', false);
}
if( Array.isArray( value ) && type !== 'select' ){
$.each( value, function( index, optionValue ){
var $option = $settingCont.find('[value="'+optionValue+'"]');
if( !$option.length ) return;
if( type === 'checkbox_list' ){
$option.prop('checked', true );
}
} );
}
else{
if( type === 'checkbox' || type === 'radio'){
$settingCont.find('input[value="'+value+'"]').prop('checked', true);
}
else{
$el.val( value );
}
}
$el.trigger('change');
} )
$(this).removeClass('xoo-as-processing');
textarea.val('');
$('.xoo-as-imported').addClass('xoo-as-active');
} );*/
//On import settings click
$('.xoo-as-setimport').on( 'click', function(){
$('.xoo-as-exim, .xoo-as-imported').removeClass('xoo-as-active');
$('.xoo-as-impcont').show();
$('.xoo-as-excont').hide();
$('body').addClass('xoo-as-exmodal-active');
} );
$('.xoo-as-run-export').click( function(){
$('.xoo-as-expdone').hide();
var options = [];
$('.xoo-as-expcheck input[type="checkbox"]:checked').each( function( index, el ){
var $el = $(el);
options.push($el.attr('value'));
} )
if( !options.length ) return;
var $button = $('button.xoo-as-run-export ');
$button.addClass('xoo-as-processing');
$button.text( 'Please wait....' );
var data = {
'action': 'xoo_admin_settings_export',
'xoo_ff_nonce': xoo_admin_params.nonce,
'slug': xoo_admin_params.slug,
'options': options
}
$.ajax({
url: xoo_admin_params.adminurl,
type: 'POST',
data: data,
success: function(response){
$button.text('Export Success');
setTimeout(function(){
$button.text( 'Export' )
},5000)
$('.xoo-as-expdone').show();
$('.xoo-as-expdone textarea').val(JSON.stringify(response)).select();
}
});
} );
$('button.xoo-as-run-import').click( function(){
if( !confirm( 'This will override your current settings. Are you sure?' ) ) return;
var textValue = $('.xoo-as-impcont textarea').val(),
$button = $(this);
$button.addClass('xoo-as-processing');
$button.text( 'Please wait....' );
var data = {
'action': 'xoo_admin_settings_import',
'xoo_ff_nonce': xoo_admin_params.nonce,
'slug': xoo_admin_params.slug,
'import': textValue
}
$.ajax({
url: xoo_admin_params.adminurl,
type: 'POST',
data: data,
success: function(response){
$('.xoo-as-imported').addClass('xoo-as-active');
$('.xoo-as-impcont textarea').val('');
$button.text('Import Success');
setTimeout(function(){
$button.text( 'Import' );
location.reload();
},3000)
}
});
})
})