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