PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 All 140 releases
← All changes | assets/src/js/loadAJAX.js +87 -39 4.4.7 → 4.4.9 View file →
@@ -1,19 +1,12 @@
1 1 /**
2 2 * Load all you need via AJAX
3 3 *
4 4 * @since 4.2.5.7
5 - * @version 1.1.0
5 + * @version 1.1.1
6 6 */
7 7
8 -import {
9 - lpAddQueryArgs,
10 - lpFetchAPI,
11 - listenElementCreated,
12 - lpOnElementReady,
13 - lpGetCurrentURLNoParam,
14 - lpShowHideEl,
15 -} from './utils.js';
8 +import * as lpUtils from 'lpAssetsJsPath/utils.js';
16 9
17 10 // Handle general parameter in the Frontend and Backend
18 11 let lpSettings = {};
19 12 if ( 'undefined' !== typeof lpDataAdmin ) {
@@ -24,9 +17,9 @@
24 17 // End Handle general parameter in the Frontend and Backend
25 18
26 19 const lpAJAX = () => {
27 20 const classLPTarget = '.lp-target';
28 - const urlCurrent = lpGetCurrentURLNoParam();
21 + const urlCurrent = lpUtils.lpGetCurrentURLNoParam();
29 22
30 23 return {
31 24 autoLoadAPIs: () => {
32 25 console.log( 'autoLoadAPIs' );
@@ -50,52 +43,90 @@
50 43 option.headers[ 'Content-Type' ] = 'application/json';
51 44 } else {
52 45 params.args = JSON.stringify( params.args );
53 46 params.callback = JSON.stringify( params.callback );
54 - url = lpAddQueryArgs( url, params );
47 + url = lpUtils.lpAddQueryArgs( url, params );
55 48 }
56 49
57 - lpFetchAPI( url, option, callBack );
50 + lpUtils.lpFetchAPI( url, option, callBack );
58 51 },
59 52 fetchAJAX: ( params, callBack ) => {
60 53 let urlAjax = lpSettings.lpAjaxUrl;
61 54
62 55 // Set param id_url for identify.
63 - if ( params.hasOwnProperty( 'args' ) && params.args.hasOwnProperty( 'id_url' ) ) {
64 - urlAjax = lpAddQueryArgs( urlAjax, { id_url: params.args.id_url } );
56 + if (
57 + params.hasOwnProperty( 'args' ) &&
58 + params.args.hasOwnProperty( 'id_url' )
59 + ) {
60 + urlAjax = lpUtils.lpAddQueryArgs( urlAjax, {
61 + id_url: params.args.id_url,
62 + } );
65 63 } else if ( params.hasOwnProperty( 'id_url' ) ) {
66 - urlAjax = lpAddQueryArgs( urlAjax, { id_url: params.id_url } );
64 + urlAjax = lpUtils.lpAddQueryArgs( urlAjax, {
65 + id_url: params.id_url,
66 + } );
67 67 }
68 68 // Set param lang here if exits, for detect translate
69 69 if ( lpSettings.urlParams.hasOwnProperty( 'lang' ) ) {
70 - urlAjax = lpAddQueryArgs( urlAjax, { lang: lpSettings.urlParams.lang } );
70 + urlAjax = lpUtils.lpAddQueryArgs( urlAjax, {
71 + lang: lpSettings.urlParams.lang,
72 + } );
71 73 }
72 74
73 - const formData = new FormData();
74 - const action = params.hasOwnProperty( 'action' ) ? params.action : 'load_content_via_ajax';
75 - formData.append( 'nonce', lpSettings.nonce );
76 - formData.append( 'lp-load-ajax', action );
77 - formData.append( 'data', JSON.stringify( params ) );
78 - const dataSend = {
79 - method: 'POST',
80 - headers: {},
81 - body: formData,
82 - };
75 + const action = params.hasOwnProperty( 'action' )
76 + ? params.action
77 + : 'load_content_via_ajax';
78 + const isGet =
79 + params.hasOwnProperty( 'method_request' ) &&
80 + 'GET' === String( params.method_request ).toUpperCase();
81 + let dataSend;
83 82
83 + if ( isGet ) {
84 + // Don't send method_request back to server; keep URL shorter.
85 + const paramsForSend = { ...params };
86 + delete paramsForSend.method_request;
87 +
88 + urlAjax = lpUtils.lpAddQueryArgs( urlAjax, {
89 + nonce: lpSettings.nonce,
90 + 'lp-load-ajax': action,
91 + data: JSON.stringify( paramsForSend ),
92 + } );
93 +
94 + dataSend = {
95 + method: 'GET',
96 + headers: {},
97 + };
98 + } else {
99 + const formData = new FormData();
100 + formData.append( 'nonce', lpSettings.nonce );
101 + formData.append( 'lp-load-ajax', action );
102 + formData.append( 'data', JSON.stringify( params ) );
103 +
104 + dataSend = {
105 + method: 'POST',
106 + headers: {},
107 + body: formData,
108 + };
109 + }
110 +
84 111 if ( 0 !== parseInt( lpSettings.user_id ) ) {
85 112 dataSend.headers[ 'X-WP-Nonce' ] = lpSettings.nonce;
86 113 }
87 114
88 - lpFetchAPI( urlAjax, dataSend, callBack );
115 + lpUtils.lpFetchAPI( urlAjax, dataSend, callBack );
89 116 },
90 117 getElements: () => {
91 118 // Finds all elements with the class '.lp-load-ajax-element'
92 - const elements = document.querySelectorAll( '.lp-load-ajax-element:not(.loaded)' );
119 + const elements = document.querySelectorAll(
120 + '.lp-load-ajax-element:not(.loaded)'
121 + );
93 122 //console.log( 'getElements', elements );
94 123 if ( elements.length ) {
95 124 elements.forEach( ( element ) => {
96 125 //console.log( 'Element handing', element );
97 - const elTarget = element.querySelector( `${ classLPTarget }` );
126 + const elTarget = element.querySelector(
127 + `${ classLPTarget }`
128 + );
98 129 if ( ! elTarget ) {
99 130 return;
100 131 }
101 132
@@ -100,9 +131,10 @@
100 131 }
101 132
102 133 const dataObj = JSON.parse( elTarget.dataset.send );
103 134 const dataSend = { ...dataObj };
104 - const elLoadingFirst = element.querySelector( '.loading-first' );
135 + const elLoadingFirst =
136 + element.querySelector( '.loading-first' );
105 137
106 138 const callBack = {
107 139 success: ( response ) => {
108 140 const { status, message, data } = response;
@@ -117,9 +149,13 @@
117 149 console.log( error );
118 150 },
119 151 completed: () => {
120 152 if ( typeof wp !== 'undefined' && wp.hooks ) {
121 - wp.hooks.doAction( 'lp-ajax-completed', element, dataSend );
153 + wp.hooks.doAction(
154 + 'lp-ajax-completed',
155 + element,
156 + dataSend
157 + );
122 158 }
123 159
124 160 window.lpAJAXG.getElements();
125 161 //console.log( 'completed' );
@@ -174,12 +210,18 @@
174 210
175 211 elLPTarget.dataset.send = JSON.stringify( dataSend );
176 212
177 213 // Set url params to reload page.
178 - if ( ! dataSend.args.hasOwnProperty( 'enableUpdateParamsUrl' ) ||
179 - dataSend.args.enableUpdateParamsUrl ) {
214 + if (
215 + ! dataSend.args.hasOwnProperty( 'enableUpdateParamsUrl' ) ||
216 + dataSend.args.enableUpdateParamsUrl
217 + ) {
180 218 lpSettings.urlParams.paged = dataSend.args.paged;
181 - window.history.pushState( {}, '', lpAddQueryArgs( urlCurrent, lpSettings.urlParams ) );
219 + window.history.pushState(
220 + {},
221 + '',
222 + lpUtils.lpAddQueryArgs( urlCurrent, lpSettings.urlParams )
223 + );
182 224 }
183 225 // End.
184 226
185 227 // Show loading
@@ -190,9 +232,12 @@
190 232 if (
191 233 ! dataSend.args.hasOwnProperty( 'enableScrollToView' ) ||
192 234 dataSend.args.enableScrollToView
193 235 ) {
194 - const elLPTargetY = elLPTarget.getBoundingClientRect().top + window.scrollY - 100;
236 + const elLPTargetY =
237 + elLPTarget.getBoundingClientRect().top +
238 + window.scrollY -
239 + 100;
195 240 window.scrollTo( { top: elLPTargetY } );
196 241 }
197 242
198 243 const callBack = {
@@ -218,11 +263,14 @@
218 263 setDataSetCurrent: ( elLPTarget, dataSend ) => {
219 264 return ( elLPTarget.dataset.send = JSON.stringify( dataSend ) );
220 265 },
221 266 showHideLoading: ( elLPTarget, status ) => {
222 - const elLoading = elLPTarget.nextElementSibling?.querySelector( '.lp-loading-change' );
267 + const elLoading =
268 + elLPTarget.nextElementSibling?.querySelector(
269 + '.lp-loading-change'
270 + );
223 271 if ( elLoading ) {
224 - lpShowHideEl( elLoading, status );
272 + lpUtils.lpShowHideEl( elLoading, status );
225 273 }
226 274 },
227 275 };
228 276 };
@@ -237,9 +285,9 @@
237 285 window.lpAJAXG.clickNumberPage( e, target );
238 286 } );
239 287
240 288 // Listen element created
241 -listenElementCreated( ( node ) => {
289 +lpUtils.listenElementCreated( ( node ) => {
242 290 if ( node.classList.contains( 'lp-load-ajax-element' ) ) {
243 291 //console.log( 'Element created', node );
244 292 window.lpAJAXG.getElements();
245 293 }
@@ -245,9 +293,9 @@
245 293 }
246 294 } );
247 295
248 296 // Listen element ready
249 -lpOnElementReady( '.lp-load-ajax-element', ( element ) => {
297 +lpUtils.lpOnElementReady( '.lp-load-ajax-element', ( element ) => {
250 298 //console.log( 'Element ready', element );
251 299 window.lpAJAXG.getElements();
252 300 } );
253 301