PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.4.0
JetBackup – Backup, Restore & Migrate v1.4.0
3.1.22.4 3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / public / js / sgbackup.js
backup / public / js Last commit date
Chart.bundle.min.js 5 years ago bootstrap-switch.min.js 5 years ago bootstrap.min.js 5 years ago deactivationSurvey.js 5 years ago jquery-ui.js 5 years ago jquery.fileupload.js 5 years ago jquery.iframe-transport.js 5 years ago jquery.rateyo.js 5 years ago jstree.checkbox.js 5 years ago jstree.min.js 5 years ago jstree.types.js 5 years ago jstree.wholerow.js 5 years ago less.min.js 5 years ago main.js 5 years ago popup.js 5 years ago sgNoticeDismiss.js 5 years ago sgbackup.js 5 years ago sgcloud.js 5 years ago sgdiscount.js 5 years ago sglicense.js 5 years ago sglogin.js 5 years ago sgrequesthandler.js 5 years ago sgrequesthandler.wordpress.js 5 years ago sgschedule.js 5 years ago sgsettings.js 5 years ago
sgbackup.js
788 lines
1 SG_DOWNLOAD_PROGRESS = '';
2 SG_ACTIVE_DOWNLOAD_AJAX = '';
3 SG_CHECK_ACTION_STATUS_REQUEST_FREQUENCY = 2500;
4
5 SG_STORAGE_FTP = 1;
6 SG_STORAGE_DROPBOX = 2;
7 SG_STORAGE_GOOGLE_DRIVE = 3;
8 SG_STORAGE_AMAZON = 4;
9 SG_STORAGE_ONE_DRIVE = 5;
10
11 jQuery(document).on('change', '.btn-file :file', function() {
12 var input = jQuery(this),
13 numFiles = input.get(0).files ? input.get(0).files.length : 1,
14 label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
15 input.trigger('fileselect', [numFiles, label]);
16 });
17
18 jQuery(document).ready( function() {
19 sgBackup.initTablePagination();
20 sgBackup.initActiveAction();
21 sgBackup.initBackupDeletion();
22 sgBackup.toggleMultiDeleteButton();
23 sgBackup.closeFreeBaner();
24
25 jQuery('span[data-toggle=tooltip]').tooltip();
26
27 jQuery('#sg-checkbox-select-all').on('change', function(){
28 var checkAll = jQuery('#sg-checkbox-select-all');
29 jQuery('tbody input[type="checkbox"]:not(:disabled):visible').prop('checked', checkAll.prop('checked'));
30 sgBackup.toggleMultiDeleteButton();
31 });
32
33 jQuery('#sg-delete-multi-backups').on('click', function(){
34 if (!confirm(BG_BACKUP_STRINGS.areYouSure)) {
35 return false;
36 }
37 var backups = jQuery('tbody input[type="checkbox"]:checked');
38 var backupNames = [];
39 backups.each(function(i){
40 backupNames[i] = jQuery(this).val();
41 });
42
43 if (backupNames.length) {
44 sgBackup.deleteMultiBackups(backupNames);
45 }
46 });
47
48 jQuery('tbody input[type="checkbox"]').on('change', function(){
49 var numberOfBackups = jQuery('tbody input[type="checkbox"]').length;
50 var numberOfChoosenBackups = sgBackup.getSelectedBackupsNumber();
51 var isCheked = jQuery(this).is(':checked');
52 sgBackup.toggleMultiDeleteButton();
53
54 if(!isCheked) {
55 jQuery('#sg-checkbox-select-all').prop('checked', false);
56 }
57 else {
58 if (numberOfBackups == numberOfChoosenBackups) {
59 jQuery('#sg-checkbox-select-all').prop('checked', true);
60 }
61 }
62 });
63
64
65 jQuery('.bg-verify-user-info-cancel').click(function(e) {
66 e.preventDefault();
67
68 jQuery('.bg-verify-user-info-container').slideUp();
69 jQuery('.bg-verify-user-info-overlay').hide();
70
71 var ajaxHandler = new sgRequestHandler('setUserInfoVerificationPopupState', {token: BG_BACKUP_STRINGS.nonce});
72 ajaxHandler.run();
73 });
74
75 jQuery('#bg-verify-user-prioraty').on('change', function () {
76 if (jQuery(this).val() == "other") {
77 jQuery('#bg-verify-user-priorati-custom').show();
78 }
79 else {
80 jQuery('#bg-verify-user-priorati-custom').hide();
81 }
82 });
83
84 jQuery('.bg-verify-user-info-verify-email').click(function(e) {
85 e.preventDefault();
86
87 var email = jQuery('#bg-verify-user-info-email').val();
88 var fname = jQuery('#bg-verify-user-info-name').val();
89 var lname = jQuery('#bg-verify-user-info-last-name').val();
90 var priority = jQuery('#bg-verify-user-prioraty').val();
91
92 var sendData = true;
93 jQuery('.bg-verify-user-info-error-message').hide();
94
95 if (priority == "other") {
96 priority = jQuery('#bg-verify-user-priorati-custom').val();
97
98 if (!priority) {
99 jQuery('#bg-verify-user-info-priority-custom-error').show()
100 sendData = false;
101 }
102 }
103 else if (!priority) {
104 jQuery('#bg-verify-user-info-priority-error').show()
105 sendData = false;
106 }
107
108 if(fname == '') {
109 jQuery('#bg-verify-user-info-name-error').show();
110 sendData = false;
111 }
112
113 if(lname == '') {
114 jQuery('#bg-verify-user-info-last-name-error').show();
115 sendData = false;
116 }
117
118 if (!sgBackup.isValidEmailAddress(email)) {
119 jQuery('#bg-verify-user-info-email-error').show();
120 sendData = false;
121 }
122
123 if(sendData) {
124 jQuery('.bg-verify-user-info-container').slideUp();
125 jQuery('.bg-verify-user-info-overlay').hide();
126
127 var ajaxHandler = new sgRequestHandler('storeSubscriberInfo', {
128 email: email,
129 fname: fname,
130 lname: lname,
131 priority: priority,
132 token: BG_BACKUP_STRINGS.nonce
133 });
134
135 ajaxHandler.run();
136 }
137 });
138 });
139
140 sgBackup.isValidEmailAddress = function(emailAddress) {
141 var pattern = new RegExp(/^(("[\w-+\s]+")|([\w-+]+(?:\.[\w-+]+)*)|("[\w-+\s]+")([\w-+]+(?:\.[\w-+]+)*))(@((?:[\w-+]+\.)*\w[\w-+]{0,66})\.([a-z]{2,10}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][\d]\.|1[\d]{2}\.|[\d]{1,2}\.))((25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\.){2}(25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\]?$)/i);
142 return pattern.test(emailAddress);
143 };
144
145 sgBackup.getSelectedBackupsNumber = function() {
146 return jQuery('tbody input[type="checkbox"]:checked').length
147 };
148
149 sgBackup.toggleMultiDeleteButton = function() {
150 var numberOfChoosenBackups = sgBackup.getSelectedBackupsNumber();
151 var target = jQuery('#sg-delete-multi-backups');
152
153 if (numberOfChoosenBackups > 0) {
154 target.show();
155 }
156 else {
157 target.hide();
158 }
159 };
160
161 sgBackup.closeFreeBaner = function() {
162 jQuery('.sg-close-free-banner').bind('click', function () {
163 var ajaxHandler = new sgRequestHandler('closeFreeBanner', {
164 token: BG_BACKUP_STRINGS.nonce
165 });
166 ajaxHandler.callback = function(response, error) {
167 jQuery('#sg-banner').remove();
168 };
169 ajaxHandler.run();
170 });
171 };
172
173 sgBackup.deleteMultiBackups = function(backupNames){
174 var ajaxHandler = new sgRequestHandler('deleteBackup', {backupName: backupNames, token: BG_BACKUP_STRINGS.nonce});
175 ajaxHandler.callback = function (response) {
176 location.reload();
177 };
178 ajaxHandler.run();
179 };
180
181 //SGManual Backup AJAX callback
182 sgBackup.manualBackup = function(){
183 var error = [];
184 //Validation
185 jQuery('.alert').remove();
186 if(jQuery('input[type=radio][name=backupType]:checked').val() == 2) {
187 if(jQuery('.sg-custom-option:checked').length <= 0) {
188 error.push(BG_BACKUP_STRINGS.invalidBackupOption);
189 }
190 //Check if any file is selected
191 if(jQuery('input[type=checkbox][name=backupFiles]:checked').length > 0) {
192 if(jQuery('.sg-custom-backup-files input:checkbox:checked').length <= 0) {
193 error.push(BG_BACKUP_STRINGS.invalidDirectorySelected);
194 }
195 }
196 }
197 //Check if any cloud is selected
198 if(jQuery('input[type=checkbox][name=backupCloud]:checked').length > 0) {
199 if (jQuery('.sg-custom-backup-cloud input:checkbox:checked').length <= 0) {
200 error.push(BG_BACKUP_STRINGS.invalidCloud);
201 }
202 }
203 //If any error show it and abort ajax
204 if(error.length){
205 var sgAlert = sgBackup.alertGenerator(error, 'alert-danger');
206 jQuery('#sg-modal .modal-header').prepend(sgAlert);
207 return false;
208 }
209
210 //Before all disable buttons...
211 jQuery('.alert').remove();
212 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
213 jQuery('.modal-footer .btn-primary').html(BG_BACKUP_STRINGS.backupInProgress);
214
215 //Reset Status
216 var backupName = jQuery("#sg-custom-backup-name").val();
217 var resetStatusHandler = new sgRequestHandler('resetStatus', {backupName: backupName, token: BG_BACKUP_STRINGS.nonce });
218 resetStatusHandler.callback = function(response, error){
219 var manualBackupForm = jQuery('#manualBackup');
220 var manualBackupHandler = new sgRequestHandler('manualBackup', manualBackupForm.serialize()+'&token='+BG_BACKUP_STRINGS.nonce);
221 manualBackupHandler.dataIsObject = false;
222 //If error
223 if(typeof response.success === 'undefined') {
224 var sgAlert = sgBackup.alertGenerator(response, 'alert-danger');
225 jQuery('#sg-modal .modal-header').prepend(sgAlert);
226
227 if (response === 0 || response === false || response === '0' || response === 'false') {
228 response = BG_BACKUP_STRINGS.errorMessage;
229 }
230 sgBackup.restManualBackupModal();
231 return false;
232 }
233 manualBackupHandler.run();
234 sgBackup.checkBackupCreation();
235 };
236 resetStatusHandler.run();
237 };
238
239 sgBackup.restManualBackupModal = function() {
240 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
241 jQuery('.modal-footer .btn-primary').html('Backup');
242 };
243
244 sgBackup.cancelDonwload = function(name) {
245 var cancelDonwloadHandler = new sgRequestHandler('cancelDownload', {name: name, token: BG_BACKUP_STRINGS.nonce});
246 cancelDonwloadHandler.callback = function(response){
247 sgBackup.hideAjaxSpinner();
248 location.reload();
249 };
250 cancelDonwloadHandler.run();
251 };
252
253 sgBackup.listStorage = function(importFrom) {
254 var listStorage = new sgRequestHandler('listStorage', {storage: importFrom, token: BG_BACKUP_STRINGS.nonce});
255 sgBackup.showAjaxSpinner('#sg-modal-inport-from');
256 jQuery('#sg-archive-list-table tbody').empty();
257
258 jQuery('#sg-modal').off('hide.bs.modal').on('hide.bs.modal', function(e){
259
260 if (SG_ACTIVE_DOWNLOAD_AJAX) {
261 if (!confirm(BG_BACKUP_STRINGS.confirm)) {
262 e.preventDefault();
263 return false;
264 }
265 var target = jQuery('input[name="select-archive-to-download"]:checked');
266 var name = target.attr('file-name');
267
268 sgBackup.cancelDonwload(name);
269 }
270 });
271
272 listStorage.callback = function(response, error) {
273 var cloudName = '';
274 var cloudId = parseInt(importFrom, 10);
275
276 switch (cloudId) {
277 case SG_STORAGE_AMAZON:
278 cloudName = "S3";
279 break;
280 case SG_STORAGE_DROPBOX:
281 cloudName = "Dropbox";
282 break;
283 case SG_STORAGE_GOOGLE_DRIVE:
284 cloudName = "Google Drive";
285 break;
286 case SG_STORAGE_FTP:
287 cloudName = "FTP";
288 break;
289 case SG_STORAGE_ONE_DRIVE:
290 cloudName = "OneDrive";
291 break;
292 default:
293 cloudName = '';
294 }
295
296 jQuery('.modal-title').html('Import from '+cloudName);
297
298 sgBackup.hideAjaxSpinner();
299 var content = '';
300 if ((typeof response.error != "undefined") || response.length == 0 || response === undefined) {
301 content = '<tr><td colspan="4">'+BG_BACKUP_STRINGS.noBackupsAvailable+'</td></tr>';
302 }
303 else {
304 jQuery.each(response, function( key, value ) {
305 content += '<tr>';
306 content += '<td class="file-select-radio"><input type="radio" file-name="'+value.name+'" name="select-archive-to-download" size="'+value.size+'" storage="'+importFrom+'" value="'+value.path+'"></td>';
307 content += '<td>'+value.name+'</td>';
308 content += '<td>'+sgBackup.convertBytesToMegabytes(value.size)+'</td>';
309 content += '<td>'+value.date+'</td>';
310 content += '</tr>';
311 });
312 }
313
314 jQuery('#sg-archive-list-table tbody').append(content);
315 sgBackup.toggleDownloadFromCloudPage();
316 };
317
318 listStorage.run();
319 };
320
321
322 sgBackup.convertBytesToMegabytes = function ($bytes) {
323 return ($bytes/(1024*1024)).toFixed(2);
324 };
325
326 //Init file upload
327 sgBackup.initFileUpload = function(){
328 sgBackup.downloadFromPC();
329
330 jQuery('#uploadSgbpFile').click(function(){
331 if(jQuery('#modal-import-3').is(":visible")) {
332 var target = jQuery('input[name="select-archive-to-download"]:checked');
333 var path = target.val();
334 var name = target.attr('file-name');
335 var storage = target.attr('storage');
336 var size = target.attr('size');
337 sgBackup.downloadFromCloud(path, name, storage, size);
338 }
339 });
340 };
341
342 sgBackup.nextPage = function(){
343 var importFrom = jQuery('input[name="storage-radio"]:checked').val();
344 jQuery('.alert').remove();
345
346 if (!importFrom) {
347 var alert = sgBackup.alertGenerator(BG_BACKUP_STRINGS.invalidImportOption, 'alert-danger');
348 jQuery('#sg-modal .modal-header').prepend(alert);
349 }
350 else {
351 if (importFrom == 'local-pc') {
352 sgBackup.toggleDownloadFromPCPage();
353 }
354 else {
355 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: "DOWNLOAD_FROM_CLOUD"});
356 isFeatureAvailable.callback = function(response) {
357 if (typeof response.success !== 'undefined') {
358 sgBackup.listStorage(importFrom);
359 }
360 else {
361 var alert = sgBackup.alertGenerator(response.error, 'alert-danger');
362 jQuery('#sg-modal .modal-header').prepend(alert);
363 }
364 };
365
366 isFeatureAvailable.run();
367 }
368 }
369 };
370
371 sgBackup.previousPage = function(){
372 if(jQuery('#modal-import-2').is(":visible")){
373 jQuery('#modal-import-2').hide();
374 }
375 else{
376 jQuery('#modal-import-3').hide();
377 }
378
379 sgBackup.toggleNavigationButtons();
380
381 jQuery('#modal-import-1').show();
382 jQuery('#uploadSgbpFile').hide();
383
384 jQuery('.modal-title').html('Import from');
385 };
386
387 sgBackup.toggleNavigationButtons = function(){
388 jQuery('#switch-modal-import-pages-next').toggle();
389 jQuery('#switch-modal-import-pages-back').toggle();
390 };
391
392 sgBackup.toggleDownloadFromPCPage = function(){
393 sgBackup.toggleNavigationButtons();
394 jQuery('#modal-import-1').toggle();
395 jQuery('#modal-import-2').toggle();
396 jQuery('#uploadSgbpFile').toggle();
397 };
398
399 sgBackup.toggleDownloadFromCloudPage = function(){
400 sgBackup.toggleNavigationButtons();
401 jQuery('#modal-import-1').toggle();
402 jQuery('#modal-import-3').toggle();
403 jQuery('#uploadSgbpFile').toggle();
404 };
405
406 sgBackup.downloadFromCloud = function (path, name, storage, size) {
407 sgBackup.showAjaxSpinner('.modal-dialog');
408 var error = [];
409 if (!path) {
410 error.push(BG_BACKUP_STRINGS.invalidDownloadFile);
411 }
412
413 jQuery('.alert').remove();
414
415 if (error.length) {
416 sgBackup.hideAjaxSpinner();
417 var sgAlert = sgBackup.alertGenerator(error, 'alert-danger');
418 jQuery('#sg-modal .modal-header').prepend(sgAlert);
419 return false;
420 }
421
422 var downloadFromCloudHandler = new sgRequestHandler('downloadFromCloud', {
423 path: path,
424 storage: storage,
425 size: size,
426 token: BG_BACKUP_STRINGS.nonce
427 });
428
429 jQuery('#switch-modal-import-pages-back').hide();
430 jQuery('#uploadSgbpFile').attr('disabled', 'disabled');
431
432 downloadFromCloudHandler.callback = function (response, error){
433 sgBackup.hideAjaxSpinner();
434 jQuery('.alert').remove();
435
436 clearTimeout(SG_DOWNLOAD_PROGRESS);
437
438 if (typeof response.success !== 'undefined') {
439 location.reload();
440 }
441 else {
442 jQuery('#uploadSgbpFile').html(BG_BACKUP_STRINGS.import);
443
444 var sgAlert = sgBackup.alertGenerator(response.error, 'alert-danger');
445
446 jQuery('#uploadSgbpFile').attr('disabled', false);
447 jQuery('#switch-modal-import-pages-back').toggle();
448 jQuery('#sg-modal .modal-header').prepend(sgAlert);
449 SG_ACTIVE_DOWNLOAD_AJAX = false;
450
451 return false;
452 }
453 };
454
455 SG_ACTIVE_DOWNLOAD_AJAX = true;
456 downloadFromCloudHandler.run();
457 sgBackup.fileDownloadProgress(name, size);
458 };
459
460 sgBackup.downloadFromPC = function(){
461 var sgData = null;
462 jQuery('#sg-modal').off('hide.bs.modal').on('hide.bs.modal', function(e){
463 if (SG_ACTIVE_DOWNLOAD_AJAX) {
464 if (!confirm(BG_BACKUP_STRINGS.confirm)) {
465 e.preventDefault();
466 return false;
467 }
468
469 sgData.abort();
470 sgBackup.cancelDonwload(sgData.files[0].name);
471 }
472 });
473
474 jQuery('.sg-backup-upload-input').fileupload({
475 dataType: 'json',
476 maxChunkSize: 2000000,
477 add: function (e, data) {
478 if (data.originalFiles.length) {
479 var fileName = data.originalFiles[0].name;
480 jQuery('#sg-import-file-name').val(fileName);
481 }
482 jQuery('#uploadSgbpFile').click(function(){
483 if(jQuery('#modal-import-2').is(":visible")) {
484 sgData = data;
485 SG_ACTIVE_DOWNLOAD_AJAX = true;
486 jQuery('#uploadSgbpFile').attr('disabled','disabled');
487 jQuery('#switch-modal-import-pages-back').hide();
488 jQuery('#uploadSgbpFile').html(BG_BACKUP_STRINGS.importInProgress);
489 data.submit();
490 }
491 });
492 },
493 done: function (e, data) {
494 location.reload();
495 },
496 progress: function (e, data) {
497 var progress = parseInt(data.loaded / data.total * 100, 10);
498 jQuery('#uploadSgbpFile').html('Importing ('+ Math.round(progress)+'%)');
499 }
500 }).on('fileuploadfail', function (e, data) {
501 var alert = sgBackup.alertGenerator(BG_BACKUP_STRINGS.fileUploadFailed, 'alert-danger');
502 jQuery('#sg-modal .modal-header').prepend(alert);
503 });
504 };
505
506 sgBackup.fileDownloadProgress = function(file, size){
507 var getFileDownloadProgress = new sgRequestHandler('getFileDownloadProgress', {file: file, size: size, token: BG_BACKUP_STRINGS.nonce});
508
509 getFileDownloadProgress.callback = function(response){
510 if (typeof response.progress !== 'undefined') {
511 jQuery('#uploadSgbpFile').html('Importing ('+ Math.round(response.progress)+'%)');
512 SG_DOWNLOAD_PROGRESS = setTimeout(function () {
513 getFileDownloadProgress.run();
514 }, SG_AJAX_REQUEST_FREQUENCY);
515 }
516 };
517
518 getFileDownloadProgress.run();
519 };
520
521 sgBackup.fileUploadProgress = function(e){
522 if(e.lengthComputable){
523 jQuery('#uploadSgbpFile').html('Importing ('+ Math.round((e.loaded*100.0)/ e.total)+'%)');
524 }
525 };
526
527 sgBackup.checkBackupCreation = function(){
528 jQuery('#manualBackup .btn-success').attr('disabled', true);
529 var sgBackupCreationHandler = new sgRequestHandler('checkBackupCreation', {token: BG_BACKUP_STRINGS.nonce});
530 sgBackupCreationHandler.dataType = 'html';
531 sgBackupCreationHandler.callback = function(response) {
532 var result = jQuery.parseJSON(response);
533 if (result && result.status == 'cleaned') {
534 sgBackup.manualBackup();
535 }
536 else {
537 jQuery('#sg-modal').modal('hide');
538 location.reload();
539 }
540 };
541 sgBackupCreationHandler.run();
542 };
543
544 sgBackup.checkRestoreCreation = function(){
545 jQuery('#manualBackup .btn-success').attr('disabled', true);
546 var sgRestoreCreationHandler = new sgRequestHandler('checkRestoreCreation', {token: BG_BACKUP_STRINGS.nonce});
547 sgRestoreCreationHandler.callback = function(response){
548 if (response.status==0 && response.external_enabled==1) {
549 location.href = response.external_url;
550 }
551 else if (response.status == 'cleaned') {
552 jQuery('#manualBackup .btn-success').click();
553 }
554 else {
555 location.reload();
556 }
557 };
558 sgRestoreCreationHandler.run();
559 };
560
561 sgBackup.initManulBackupRadioInputs = function(){
562 jQuery('input[type=radio][name=backupType]').off('change').on('change', function(){
563 jQuery('.sg-custom-backup').fadeToggle();
564 });
565 jQuery('input[type=radio][name=restoreType]').off('change').on('change', function(){
566 if(jQuery('input[type=radio][name=restoreType]:checked').val() == "files"){
567 jQuery('.sg-restore-files-options').fadeIn();
568 }else{
569 jQuery('.sg-restore-files-options').fadeOut();
570 }
571 });
572
573 jQuery('input[type=radio][name=restoreFilesType]').off('change').on('change', function(){
574 jQuery('.sg-file-selective-restore').fadeToggle();
575 });
576
577 jQuery('input[type=checkbox][name=backupFiles], input[type=checkbox][name=backupDatabase], input[type=checkbox][name=backupCloud]').off('change').on('change', function(){
578 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-checkbox');
579 sgCheckBoxWrapper.fadeToggle();
580 if(jQuery(this).attr('name') == 'backupFiles') {
581 sgCheckBoxWrapper.find('input[type=checkbox]').attr('checked', 'checked');
582 }
583 });
584 jQuery('input[type=radio][name=backupDBType]').off('change').on('change',function(){
585 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-custom-backup-tables');
586 if(jQuery('input[type=radio][name=backupDBType]:checked').val() == '2'){
587 sgCheckBoxWrapper.find('input[type=checkbox]').not("[disabled]").prop('checked', true)
588 sgCheckBoxWrapper.fadeIn();
589 }else{
590 sgCheckBoxWrapper.fadeOut();
591 sgCheckBoxWrapper.find('input[type=checkbox][current="true"]').not("[disabled]").prop('checked', true)
592 sgCheckBoxWrapper.find('input[type=checkbox][current="false"]').prop('checked', false)
593 }
594 })
595 };
596
597 sgBackup.initImportTooltips = function () {
598 jQuery('a[data-toggle=tooltip]').tooltip();
599 };
600
601 sgBackup.initManualBackupTooltips = function(){
602 jQuery('[for=cloud-ftp]').tooltip();
603 jQuery('[for=cloud-dropbox]').tooltip();
604 jQuery('[for=cloud-gdrive]').tooltip();
605 jQuery('[for=cloud-one-drive]').tooltip();
606 jQuery('[for=cloud-amazon]').tooltip();
607
608 jQuery('a[data-toggle=tooltip]').tooltip();
609 };
610
611 sgBackup.startRestore = function(bname) {
612
613 jQuery('.alert').remove();
614 var type = jQuery('input[type=radio][name=restoreType]:checked').val();
615 var restoreFilesType = jQuery('input[type=radio][name=restoreFilesType]:checked').val() || "0";
616 var paths = restoreFilesType == "0"? "/" : jQuery("#fileSystemTreeContainer").jstree("get_selected");
617 var checkPHPVersionCompatibility = new sgRequestHandler('checkPHPVersionCompatibility',{bname: bname, token: BG_BACKUP_STRINGS.nonce});
618
619 checkPHPVersionCompatibility.callback = function(response) {
620 if (typeof response.error != 'undefined') {
621 alert(response.error);
622 return false;
623 }
624 else if (typeof response.warning != 'undefined') {
625 if (!confirm(response.warning)) {
626 return false;
627 }
628 }
629
630 sgBackup.showAjaxSpinner('#sg-content-wrapper');
631 var resetStatusHandler = new sgRequestHandler('resetStatus', {token: BG_BACKUP_STRINGS.nonce});
632 resetStatusHandler.callback = function(response) {
633 //If error
634 if(typeof response.success === 'undefined') {
635 alert(response);
636 location.reload();
637 return false;
638 }
639 var restoreHandler = new sgRequestHandler('restore',{bname: bname, type:type, paths:paths});
640 restoreHandler.run();
641 sgBackup.checkRestoreCreation();
642 };
643 resetStatusHandler.run();
644 };
645
646 if (type == "files" && restoreFilesType == 1) {
647 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: "SLECTIVE_RESTORE"});
648 isFeatureAvailable.callback = function (response) {
649 if (typeof response.success != 'undefined') {
650 checkPHPVersionCompatibility.run();
651 }
652 else {
653 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
654 jQuery('#sg-modal .modal-header').prepend(alert);
655 return false;
656 }
657 };
658
659 isFeatureAvailable.run();
660 }
661 else {
662 checkPHPVersionCompatibility.run();
663 }
664 };
665
666 sgBackup.initActiveAction = function(){
667 if(jQuery('.sg-active-action-id').length<=0){
668 return;
669 }
670
671 var activeActionsIds = [];
672 jQuery('.sg-active-action-id').each(function() {
673 activeActionsIds.push(jQuery(this).val());
674 });
675
676 //Cancel Button
677 jQuery('.sg-cancel-backup').click(function(){
678 if (confirm('Are you sure?')) {
679 var actionId = jQuery(this).attr('sg-data-backup-id');
680 var sgCancelHandler = new sgRequestHandler('cancelBackup', {actionId: actionId, token: BG_BACKUP_STRINGS.nonce});
681 sgCancelHandler.run();
682 }
683 });
684
685 for (var i = 0; i < activeActionsIds.length; i++) {
686 //GetProgress
687 sgBackup.getActionProgress(activeActionsIds[i]);
688 }
689 };
690
691 sgBackup.getActionProgress = function(actionId){
692 var progressBar = jQuery('.sg-progress .progress-bar', '#sg-status-tabe-data-'+actionId);
693
694 var sgActionHandler = new sgRequestHandler('getAction', {actionId: actionId, token: BG_BACKUP_STRINGS.nonce});
695 //Init tooltip
696 var statusTooltip = jQuery('#sg-status-tabe-data-'+actionId+'[data-toggle=tooltip]').tooltip();
697
698 sgActionHandler.callback = function(response){
699 if(response){
700 sgBackup.disableUi();
701 var progressInPercents = response.progress+'%';
702 progressBar.width(progressInPercents);
703 sgBackup.statusUpdate(statusTooltip, response, progressInPercents);
704 setTimeout(function () {
705 sgActionHandler.run();
706 }, SG_CHECK_ACTION_STATUS_REQUEST_FREQUENCY);
707 }
708 else{
709 jQuery('[class*=sg-status]').addClass('active');
710 jQuery('.sg-progress').remove();
711 jQuery('.sg-active-action-id').remove();
712 location.reload();
713 }
714 };
715 sgActionHandler.run();
716 };
717
718 sgBackup.statusUpdate = function(tooltip, response, progressInPercents){
719 var tooltipText = '';
720 if(response.type == '1'){
721 var currentAction = 'Backup';
722 if (response.status == '1') {
723 tooltipText = currentAction + ' database - '+progressInPercents;
724 }
725 else if (response.status == '2') {
726 tooltipText = currentAction + ' files - '+progressInPercents;
727 }
728 jQuery('.sg-status-'+response.status).prevAll('[class*=sg-status]').addClass('active');
729 }
730 else if(response.type == '2'){
731 var currentAction = 'Restore';
732 if (response.status == '1') {
733 tooltipText = currentAction + ' database - '+progressInPercents;
734 }
735 else if (response.status == '2') {
736 tooltipText = currentAction + ' files - '+progressInPercents;
737 }
738 jQuery('.sg-status-'+response.type+response.status).prevAll('[class*=sg-status]').addClass('active');
739 }
740 else if(response.type == '3'){
741 var cloudIcon = jQuery('.sg-status-'+response.type+response.subtype);
742 if(response.subtype == '1'){
743 tooltipText = 'Uploading to FTP - '+progressInPercents;
744 }
745 else if(response.subtype == '2'){
746 tooltipText = 'Uploading to Dropbox - '+progressInPercents;
747 }
748 else if(response.subtype == '3'){
749 tooltipText = 'Uploading to Google Drive - '+progressInPercents;
750 }
751 else if(response.subtype == '4') {
752 tooltipText = 'Uploading to Amazon S3 - '+progressInPercents;
753 }
754 cloudIcon.prevAll('[class*=sg-status]').addClass('active');
755 }
756 tooltip.attr('data-original-title',tooltipText);
757 };
758
759 sgBackup.disableUi = function(){
760 jQuery('#sg-manual-backup').attr('disabled','disabled');
761 jQuery('#sg-backup-with-migration').attr('disabled','disabled');
762 jQuery('#sg-import').attr('disabled','disabled');
763 jQuery('.sg-restore').attr('disabled','disabled');
764 jQuery('.sg-restore-button').attr('disabled','disabled');
765 };
766
767 sgBackup.enableUi = function(){
768 jQuery('#sg-manual-backup').removeAttr('disabled');
769 jQuery('#sg-import').removeAttr('disabled');
770 jQuery('.sg-restore').removeAttr('disabled');
771 jQuery('.sg-restore-button').removeAttr('disabled');
772 };
773
774 sgBackup.initBackupDeletion = function(){
775 jQuery('.sg-remove-backup').click(function(){
776 var btn = jQuery(this),
777 url = btn.attr('data-remote'),
778 backupName = [btn.attr('data-sgbackup-name')];
779 if (confirm('Are you sure?')) {
780 var ajaxHandler = new sgRequestHandler(url, {backupName: backupName, token: BG_BACKUP_STRINGS.nonce});
781 ajaxHandler.callback = function (response) {
782 location.reload();
783 };
784 ajaxHandler.run();
785 }
786 });
787 };
788