| Server IP : 104.21.28.229 / Your IP : 216.73.216.142 Web Server : Apache/2 System : Linux hosting8537.lvs 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : mienphi ( 1014) PHP Version : 8.2.14 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/mienphi/public_html/wp-content/plugins/learnpress/assets/src/js/ |
Upload File : |
/**
* Load all you need via AJAX
*
* @since 4.2.5.7
* @version 1.0.4
*/
import { lpAddQueryArgs, lpFetchAPI, listenElementCreated, lpOnElementReady } from './utils.js';
import API from './api.js';
// Handle general parameter in the Frontend and Backend
const apiData = API.admin || API.frontend;
const urlAPI = apiData?.apiAJAX || '';
let lpSettings = {};
if ( 'undefined' !== typeof lpDataAdmin ) {
lpSettings = lpDataAdmin;
} else if ( 'undefined' !== typeof lpData ) {
lpSettings = lpData;
}
// End Handle general parameter in the Frontend and Backend
const lpAJAX = ( () => {
return {
autoLoadAPIs: () => {
console.log( 'autoLoadAPIs' );
},
fetchAPI: ( url, params, callBack ) => {
const option = { headers: {} };
if ( 0 !== parseInt( lpSettings.user_id ) ) {
option.headers[ 'X-WP-Nonce' ] = lpSettings.nonce;
}
if ( 'undefined' !== typeof params.args.method_request ) {
option.method = params.args.method_request;
} else {
option.method = 'POST';
}
//params.args = { ...params.args, ...lpData.urlParams };
if ( 'POST' === option.method ) {
option.body = JSON.stringify( params );
option.headers[ 'Content-Type' ] = 'application/json';
} else {
params.args = JSON.stringify( params.args );
params.callback = JSON.stringify( params.callback );
url = lpAddQueryArgs( url, params );
}
lpFetchAPI( url, option, callBack );
},
fetchAJAX: ( params, callBack, urlAjax = '' ) => {
// Call via ajax.
urlAjax = urlAjax || lpSettings.lpAjaxUrl;
if ( params.args.id_url ) {
urlAjax = lpAddQueryArgs( urlAjax, { id_url: params.args.id_url } );
}
const formData = new FormData();
formData.append( 'nonce', lpSettings.nonce );
formData.append( 'lp-load-ajax', 'load_content_via_ajax' );
formData.append( 'data', JSON.stringify( params ) );
const dataSend = {
method: 'POST',
headers: {},
body: formData,
};
if ( 0 !== parseInt( lpSettings.user_id ) ) {
dataSend.headers[ 'X-WP-Nonce' ] = lpSettings.nonce;
}
lpFetchAPI( urlAjax, dataSend, callBack );
},
getElements: () => {
// Finds all elements with the class '.lp-load-ajax-element'
const elements = document.querySelectorAll( '.lp-load-ajax-element:not(.loaded)' );
//console.log( 'getElements', elements );
if ( elements.length ) {
elements.forEach( ( element ) => {
//console.log( 'Element handing', element );
element.classList.add( 'loaded' );
let url = urlAPI;
if ( lpSettings.urlParams.hasOwnProperty( 'lang' ) ) {
url = lpAddQueryArgs( url, { lang: lpSettings.urlParams.lang } );
}
const elTarget = element.querySelector( '.lp-target' );
if ( ! elTarget ) {
return;
}
const dataObj = JSON.parse( elTarget.dataset.send );
const dataSend = { ...dataObj };
const elLoadingFirst = element.querySelector( '.loading-first' );
const callBack = {
success: ( response ) => {
const { status, message, data } = response;
if ( 'success' === status ) {
elTarget.innerHTML = data.content;
} else if ( 'error' === status ) {
elTarget.innerHTML = message;
}
},
error: ( error ) => {
console.log( error );
},
completed: () => {
//console.log( 'completed' );
if ( elLoadingFirst ) {
elLoadingFirst.remove();
}
},
};
// Call via API
//window.lpAJAXG.fetchAPI( url, dataSend, callBack );
// Call via AJAX
window.lpAJAXG.fetchAJAX( dataSend, callBack );
} );
}
},
};
} );
window.lpAJAXG = lpAJAX();
window.lpAJAXG.getElements();
// Listen element created
listenElementCreated( ( node ) => {
if ( node.classList.contains( 'lp-load-ajax-element' ) ) {
//console.log( 'Element created', node );
window.lpAJAXG.getElements();
}
} );
// Listen element ready
lpOnElementReady( '.lp-load-ajax-element', ( element ) => {
//console.log( 'Element ready', element );
window.lpAJAXG.getElements();
} );
// Case 2: readystatechange, find all elements with the class '.lp-load-ajax-element' not have class 'loaded'
document.addEventListener( 'readystatechange', ( event ) => {
//console.log( 'readystatechange' );
window.lpAJAXG.getElements();
} );
// Case 3: DOMContentLoaded, find all elements with the class '.lp-load-ajax-element' not have class 'loaded'
document.addEventListener( 'DOMContentLoaded', () => {
//console.log( 'DOMContentLoaded' );
window.lpAJAXG.getElements();
} );
export default lpAJAX;