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