PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.1.7.3
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.1.7.3
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 4.2.0 All 139 releases
learnpress / assets / src / apps / js / admin / pages / tools / database / upgrade.js

upgrade.js in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.1.7.3, at assets/src/apps/js/admin/pages/tools/database/upgrade.js

295 lines 8.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import lpModalOverlay from '../../../../utils/lp-modal-overlay';
2 import handleAjax from '../../../../utils/handle-ajax-api';
3
4 const $ = jQuery;
5
6 const elToolUpgradeDB = $( '#lp-tool-upgrade-db' );
7
8 const upgradeDB = () => {
9 let isUpgrading = 0;
10 const elWrapperTermsUpgrade = elToolUpgradeDB.find( '.wrapper-terms-upgrade' );
11 const elStatusUpgrade = elToolUpgradeDB.find( '.wrapper-lp-status-upgrade' );
12 const elWrapperUpgradeMessage = elToolUpgradeDB.find( '.wrapper-lp-upgrade-message' );
13 let checkValidBeforeUpgrade = null;
14
15 if ( elWrapperTermsUpgrade.length ) { // Show Terms Upgrade.
16 lpModalOverlay.setContentModal( elWrapperTermsUpgrade.html() );
17
18 const elTermUpdate = lpModalOverlay.elLPOverlay.find( '.terms-upgrade' );
19 const elLPAgreeTerm = elTermUpdate.find( 'input[name=lp-agree-term]' );
20 const elTermMessage = elTermUpdate.find( '.error' );
21 const elMessageUpgrading = $( 'input[name=message-when-upgrading]' ).val();
22
23 checkValidBeforeUpgrade = function() {
24 elTermMessage.hide();
25 elTermMessage.removeClass( 'learn-press-message' );
26
27 if ( elLPAgreeTerm.is( ':checked' ) ) {
28 handleAjax( '/lp/v1/database/agree_terms', { agree_terms: 1 }, {} );
29
30 lpModalOverlay.elFooter.find( '.learn-press-notice' ).remove();
31 lpModalOverlay.elFooter.prepend( '<span class="learn-press-notice">' + elMessageUpgrading + '</span>' );
32 lpModalOverlay.setContentModal( elStatusUpgrade.html() );
33
34 return true;
35 }
36
37 elTermMessage.show();
38 elTermMessage.addClass( 'learn-press-message' );
39 lpModalOverlay.elMainContent.animate( {
40 scrollTop: elTermMessage.offset().top,
41 } );
42
43 return false;
44 };
45 } else { // Show Steps Upgrade.
46 lpModalOverlay.setContentModal( elStatusUpgrade.html() );
47 checkValidBeforeUpgrade = function() {
48 return true;
49 };
50 }
51
52 lpModalOverlay.setTitleModal( elToolUpgradeDB.find( 'h2' ).html() );
53 lpModalOverlay.elBtnYes.text( 'Upgrade' );
54 lpModalOverlay.elBtnYes.show();
55 lpModalOverlay.elBtnNo.text( 'close' );
56 lpModalOverlay.callBackYes = function() {
57 if ( ! checkValidBeforeUpgrade() ) {
58 return;
59 }
60
61 isUpgrading = 1;
62
63 lpModalOverlay.elBtnYes.hide();
64 lpModalOverlay.elBtnNo.hide();
65
66 const urlHandle = '/lp/v1/database/upgrade';
67 const elGroupStep = lpModalOverlay.elLPOverlay.find( '.lp-group-step' );
68 const elItemSteps = elToolUpgradeDB.find( '.lp-item-step' );
69
70 // Get params.
71 const steps = [];
72
73 $.each( elItemSteps, function( i, el ) {
74 const elItemStepsTmp = $( el );
75
76 if ( ! elItemStepsTmp.hasClass( 'completed' ) ) {
77 const step = elItemStepsTmp.find( 'input' ).val();
78 steps.push( step );
79 }
80 } );
81
82 const params = {
83 steps,
84 step: steps[ 0 ],
85 };
86
87 let elItemStepCurrent = null;
88
89 // Show progress when upgrading.
90 const showProgress = ( stepCurrent, percent ) => {
91 elItemStepCurrent = elGroupStep.find( 'input[value=' + stepCurrent + ']' ).closest( '.lp-item-step' );
92 elItemStepCurrent.addClass( 'running' );
93
94 if ( 100 === percent ) {
95 elItemStepCurrent.removeClass( 'running' ).addClass( 'completed' );
96 }
97
98 elItemStepCurrent.find( '.progress-bar' ).css( 'width', percent + '%' );
99 elItemStepCurrent.find( '.percent' ).text( percent + '%' );
100 };
101
102 // Scroll to step current.
103 const scrollToStepCurrent = ( stepCurrent ) => {
104 elItemStepCurrent = elGroupStep.find( 'input[value=' + stepCurrent + ']' ).closest( '.lp-item-step' );
105
106 if ( ! elItemStepCurrent.length ) {
107 return;
108 }
109
110 const offset = elItemStepCurrent.offset().top - lpModalOverlay.elMainContent.offset().top +
111 lpModalOverlay.elMainContent.scrollTop();
112
113 lpModalOverlay.elMainContent.stop().animate( {
114 scrollTop: offset,
115 }, 600 );
116 };
117
118 showProgress( steps[ 0 ], 0.1 );
119
120 const funcCallBack = {
121 success: ( res ) => {
122 showProgress( params.step, res.percent );
123
124 if ( params.step !== res.name ) {
125 showProgress( res.name, 0.1 );
126 }
127
128 scrollToStepCurrent( params.step );
129
130 if ( 'success' === res.status ) {
131 params.step = res.name;
132 params.data = res.data;
133
134 setTimeout( () => {
135 handleAjax( urlHandle, params, funcCallBack );
136 }, 800 );
137 } else if ( 'finished' === res.status ) {
138 isUpgrading = 0;
139 elItemStepCurrent.removeClass( 'running' ).addClass( 'completed' );
140 setTimeout( () => {
141 lpModalOverlay.setContentModal( elWrapperUpgradeMessage.html() );
142 }, 1000 );
143 lpModalOverlay.elFooter.find( '.learn-press-notice' ).remove();
144 lpModalOverlay.elBtnNo.show();
145 lpModalOverlay.elBtnNo.on( 'click', () => {
146 window.location.reload();
147 } );
148 } else {
149 isUpgrading = 0;
150 lpModalOverlay.elFooter.find( '.learn-press-notice' ).remove();
151 elItemStepCurrent.removeClass( 'running' ).addClass( 'error' );
152 lpModalOverlay.setContentModal( elWrapperUpgradeMessage.html(), function() {
153 lpModalOverlay.elBtnYes.text( 'Retry' ).show();
154 lpModalOverlay.callBackYes = () => {
155 window.location.href = lpGlobalSettings.siteurl + '/wp-admin/admin.php?page=learn-press-tools&tab=database&action=upgrade-db';
156 };
157 lpModalOverlay.elBtnNo.show();
158
159 if ( ! res.message ) {
160 res.message = 'Upgrade not success! Please clear cache, restart sever then retry or contact to LP to help';
161 }
162
163 lpModalOverlay.elMainContent.find( '.learn-press-message' ).addClass( 'error' ).html( res.message );
164 } );
165 }
166 },
167 error: ( err ) => {
168 isUpgrading = 0;
169 lpModalOverlay.setContentModal( elWrapperUpgradeMessage.html(), function() {
170 lpModalOverlay.elBtnYes.text( 'Retry' ).show();
171 lpModalOverlay.callBackYes = () => {
172 window.location.location = 'wp-admin/admin.php?page=learn-press-tools&tab=database&action=upgrade-db';
173 };
174 lpModalOverlay.elBtnNo.show();
175
176 if ( ! err.message ) {
177 err.message = 'Upgrade not success! Something wrong. Please clear cache, restart sever then retry or contact to LP to help';
178 }
179
180 lpModalOverlay.elMainContent.find( '.learn-press-message' ).addClass( 'error' ).html( err.message );
181 } );
182 },
183 completed: () => {
184
185 },
186 };
187
188 handleAjax( urlHandle, params, funcCallBack );
189 };
190
191 // Show confirm if, within upgrading, the user reload the page.
192 window.onbeforeunload = function() {
193 if ( isUpgrading ) {
194 return 'LP is upgrading Database. Are you want to reload page?';
195 }
196 };
197
198 // Show confirm if, within upgrading, the user close the page.
199 window.onclose = function() {
200 if ( isUpgrading ) {
201 return 'LP is upgrading Database. Are you want to close page?';
202 }
203 };
204 };
205
206 const getStepsUpgradeStatus = () => {
207 if ( ! elToolUpgradeDB.length ) {
208 return;
209 }
210
211 // initial LP Modal Overlay
212 if ( ! lpModalOverlay.init() ) {
213 return;
214 }
215
216 const elWrapperStatusUpgrade = $( '.wrapper-lp-status-upgrade' );
217 const urlHandle = '/lp/v1/database/get_steps';
218
219 // Show dialog upgrade database.
220 const queryString = window.location.search;
221 const urlParams = new URLSearchParams( queryString );
222 const action = urlParams.get( 'action' );
223
224 if ( 'upgrade-db' === action ) {
225 lpModalOverlay.elLPOverlay.show();
226 lpModalOverlay.setTitleModal( elToolUpgradeDB.find( 'h2' ).html() );
227 lpModalOverlay.setContentModal( $( '.wrapper-lp-loading' ).html() );
228 }
229
230 const funcCallBack = {
231 success: ( res ) => {
232 const { steps_completed, steps_default } = res;
233
234 if ( undefined === steps_completed || undefined === steps_default ) {
235 console.log( 'invalid steps_completed and steps_default' );
236 return false;
237 }
238
239 // Render show Steps.
240 let htmlStep = '';
241 for ( const k_gr_steps in steps_default ) {
242 const step_group = steps_default[ k_gr_steps ];
243 const steps = step_group.steps;
244
245 htmlStep = '<div class="lp-group-step">';
246 htmlStep += '<h3>' + step_group.label + '</h3>';
247
248 for ( const k_step in steps ) {
249 const step = steps[ k_step ];
250 let completed = '';
251
252 if ( undefined !== steps_completed[ k_step ] ) {
253 completed = 'completed';
254 }
255
256 htmlStep += '<div class="lp-item-step ' + completed + '">';
257 htmlStep += '<div class="lp-item-step-left"><input type="hidden" name="lp_steps_upgrade_db[]" value="' + step.name + '" /></div>';
258 htmlStep += '<div class="lp-item-step-right">';
259 htmlStep += '<label for=""><strong></strong>' + step.label + '</label>';
260 htmlStep += '<div class="description">' + step.description + '</div>';
261 htmlStep += '<div class="percent"></div>';
262 htmlStep += '<span class="progress-bar"></span>';
263 htmlStep += '</div>';
264 htmlStep += '</div>';
265 }
266
267 htmlStep += '</div>';
268
269 elWrapperStatusUpgrade.append( htmlStep );
270
271 const elBtnUpgradeDB = $( '.lp-btn-upgrade-db' );
272
273 if ( 'upgrade-db' === action ) {
274 upgradeDB();
275 }
276
277 elBtnUpgradeDB.on( 'click', function() {
278 lpModalOverlay.elLPOverlay.show();
279 upgradeDB();
280 } );
281 }
282 },
283 error: ( err ) => {
284
285 },
286 completed: () => {
287
288 },
289 };
290
291 handleAjax( urlHandle, {}, funcCallBack );
292 };
293
294 export default getStepsUpgradeStatus;
295