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