PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.2.5
JetBackup – Backup, Restore & Migrate v1.2.5
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
761 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 var sgBackupCreationHandler = new sgRequestHandler('checkBackupCreation', {token: BG_BACKUP_STRINGS.nonce});
513 sgBackupCreationHandler.dataType = 'html';
514 sgBackupCreationHandler.callback = function(response){
515 jQuery('#sg-modal').modal('hide');
516 location.reload();
517 };
518 sgBackupCreationHandler.run();
519 };
520
521 sgBackup.checkRestoreCreation = function(){
522 var sgRestoreCreationHandler = new sgRequestHandler('checkRestoreCreation', {token: BG_BACKUP_STRINGS.nonce});
523 sgRestoreCreationHandler.callback = function(response){
524 if (response.status==0 && response.external_enabled==1) {
525 location.href = response.external_url;
526 }
527 else {
528 location.reload();
529 }
530 };
531 sgRestoreCreationHandler.run();
532 };
533
534 sgBackup.initManulBackupRadioInputs = function(){
535 jQuery('input[type=radio][name=backupType]').off('change').on('change', function(){
536 jQuery('.sg-custom-backup').fadeToggle();
537 });
538 jQuery('input[type=radio][name=restoreType]').off('change').on('change', function(){
539 if(jQuery('input[type=radio][name=restoreType]:checked').val() == "files"){
540 jQuery('.sg-restore-files-options').fadeIn();
541 }else{
542 jQuery('.sg-restore-files-options').fadeOut();
543 }
544 });
545
546 jQuery('input[type=radio][name=restoreFilesType]').off('change').on('change', function(){
547 jQuery('.sg-file-selective-restore').fadeToggle();
548 });
549
550 jQuery('input[type=checkbox][name=backupFiles], input[type=checkbox][name=backupDatabase], input[type=checkbox][name=backupCloud]').off('change').on('change', function(){
551 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-checkbox');
552 sgCheckBoxWrapper.fadeToggle();
553 if(jQuery(this).attr('name') == 'backupFiles') {
554 sgCheckBoxWrapper.find('input[type=checkbox]').attr('checked', 'checked');
555 }
556 });
557 jQuery('input[type=radio][name=backupDBType]').off('change').on('change',function(){
558 var sgCheckBoxWrapper = jQuery(this).closest('.checkbox').find('.sg-custom-backup-tables');
559 if(jQuery('input[type=radio][name=backupDBType]:checked').val() == '2'){
560 sgCheckBoxWrapper.find('input[type=checkbox]').not("[disabled]").prop('checked', true)
561 sgCheckBoxWrapper.fadeIn();
562 }else{
563 sgCheckBoxWrapper.fadeOut();
564 sgCheckBoxWrapper.find('input[type=checkbox][current="true"]').not("[disabled]").prop('checked', true)
565 sgCheckBoxWrapper.find('input[type=checkbox][current="false"]').prop('checked', false)
566 }
567 })
568 };
569
570 sgBackup.initImportTooltips = function () {
571 jQuery('a[data-toggle=tooltip]').tooltip();
572 };
573
574 sgBackup.initManualBackupTooltips = function(){
575 jQuery('[for=cloud-ftp]').tooltip();
576 jQuery('[for=cloud-dropbox]').tooltip();
577 jQuery('[for=cloud-gdrive]').tooltip();
578 jQuery('[for=cloud-one-drive]').tooltip();
579 jQuery('[for=cloud-amazon]').tooltip();
580
581 jQuery('a[data-toggle=tooltip]').tooltip();
582 };
583
584 sgBackup.startRestore = function(bname) {
585
586 jQuery('.alert').remove();
587 var type = jQuery('input[type=radio][name=restoreType]:checked').val();
588 var restoreFilesType = jQuery('input[type=radio][name=restoreFilesType]:checked').val() || "0";
589 var paths = restoreFilesType == "0"? "/" : jQuery("#fileSystemTreeContainer").jstree("get_selected");
590 var checkPHPVersionCompatibility = new sgRequestHandler('checkPHPVersionCompatibility',{bname: bname, token: BG_BACKUP_STRINGS.nonce});
591
592 checkPHPVersionCompatibility.callback = function(response) {
593 if (typeof response.error != 'undefined') {
594 alert(response.error);
595 return false;
596 }
597 else if (typeof response.warning != 'undefined') {
598 if (!confirm(response.warning)) {
599 return false;
600 }
601 }
602
603 sgBackup.showAjaxSpinner('#sg-content-wrapper');
604 var resetStatusHandler = new sgRequestHandler('resetStatus', {token: BG_BACKUP_STRINGS.nonce});
605 resetStatusHandler.callback = function(response) {
606 //If error
607 if(typeof response.success === 'undefined') {
608 alert(response);
609 location.reload();
610 return false;
611 }
612 var restoreHandler = new sgRequestHandler('restore',{bname: bname, type:type, paths:paths});
613 restoreHandler.run();
614 sgBackup.checkRestoreCreation();
615 };
616 resetStatusHandler.run();
617 };
618
619 if (type == "files" && restoreFilesType == 1) {
620 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: "SLECTIVE_RESTORE"});
621 isFeatureAvailable.callback = function (response) {
622 if (typeof response.success != 'undefined') {
623 checkPHPVersionCompatibility.run();
624 }
625 else {
626 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
627 jQuery('#sg-modal .modal-header').prepend(alert);
628 return false;
629 }
630 }
631
632 isFeatureAvailable.run();
633 }
634 else {
635 checkPHPVersionCompatibility.run();
636 }
637 };
638
639 sgBackup.initActiveAction = function(){
640 if(jQuery('.sg-active-action-id').length<=0){
641 return;
642 }
643
644 var activeActionsIds = [];
645 jQuery('.sg-active-action-id').each(function() {
646 activeActionsIds.push(jQuery(this).val());
647 });
648
649 //Cancel Button
650 jQuery('.sg-cancel-backup').click(function(){
651 if (confirm('Are you sure?')) {
652 var actionId = jQuery(this).attr('sg-data-backup-id');
653 var sgCancelHandler = new sgRequestHandler('cancelBackup', {actionId: actionId, token: BG_BACKUP_STRINGS.nonce});
654 sgCancelHandler.run();
655 }
656 });
657
658 for (var i = 0; i < activeActionsIds.length; i++) {
659 //GetProgress
660 sgBackup.getActionProgress(activeActionsIds[i]);
661 }
662 };
663
664 sgBackup.getActionProgress = function(actionId){
665 var progressBar = jQuery('.sg-progress .progress-bar', '#sg-status-tabe-data-'+actionId);
666
667 var sgActionHandler = new sgRequestHandler('getAction', {actionId: actionId, token: BG_BACKUP_STRINGS.nonce});
668 //Init tooltip
669 var statusTooltip = jQuery('#sg-status-tabe-data-'+actionId+'[data-toggle=tooltip]').tooltip();
670
671 sgActionHandler.callback = function(response){
672 if(response){
673 sgBackup.disableUi();
674 var progressInPercents = response.progress+'%';
675 progressBar.width(progressInPercents);
676 sgBackup.statusUpdate(statusTooltip, response, progressInPercents);
677 setTimeout(function () {
678 sgActionHandler.run();
679 }, SG_CHECK_ACTION_STATUS_REQUEST_FREQUENCY);
680 }
681 else{
682 jQuery('[class*=sg-status]').addClass('active');
683 jQuery('.sg-progress').remove();
684 jQuery('.sg-active-action-id').remove();
685 location.reload();
686 }
687 };
688 sgActionHandler.run();
689 };
690
691 sgBackup.statusUpdate = function(tooltip, response, progressInPercents){
692 var tooltipText = '';
693 if(response.type == '1'){
694 var currentAction = 'Backup';
695 if (response.status == '1') {
696 tooltipText = currentAction + ' database - '+progressInPercents;
697 }
698 else if (response.status == '2') {
699 tooltipText = currentAction + ' files - '+progressInPercents;
700 }
701 jQuery('.sg-status-'+response.status).prevAll('[class*=sg-status]').addClass('active');
702 }
703 else if(response.type == '2'){
704 var currentAction = 'Restore';
705 if (response.status == '1') {
706 tooltipText = currentAction + ' database - '+progressInPercents;
707 }
708 else if (response.status == '2') {
709 tooltipText = currentAction + ' files - '+progressInPercents;
710 }
711 jQuery('.sg-status-'+response.type+response.status).prevAll('[class*=sg-status]').addClass('active');
712 }
713 else if(response.type == '3'){
714 var cloudIcon = jQuery('.sg-status-'+response.type+response.subtype);
715 if(response.subtype == '1'){
716 tooltipText = 'Uploading to FTP - '+progressInPercents;
717 }
718 else if(response.subtype == '2'){
719 tooltipText = 'Uploading to Dropbox - '+progressInPercents;
720 }
721 else if(response.subtype == '3'){
722 tooltipText = 'Uploading to Google Drive - '+progressInPercents;
723 }
724 else if(response.subtype == '4') {
725 tooltipText = 'Uploading to Amazon S3 - '+progressInPercents;
726 }
727 cloudIcon.prevAll('[class*=sg-status]').addClass('active');
728 }
729 tooltip.attr('data-original-title',tooltipText);
730 };
731
732 sgBackup.disableUi = function(){
733 jQuery('#sg-manual-backup').attr('disabled','disabled');
734 jQuery('#sg-backup-with-migration').attr('disabled','disabled');
735 jQuery('#sg-import').attr('disabled','disabled');
736 jQuery('.sg-restore').attr('disabled','disabled');
737 jQuery('.sg-restore-button').attr('disabled','disabled');
738 };
739
740 sgBackup.enableUi = function(){
741 jQuery('#sg-manual-backup').removeAttr('disabled');
742 jQuery('#sg-import').removeAttr('disabled');
743 jQuery('.sg-restore').removeAttr('disabled');
744 jQuery('.sg-restore-button').removeAttr('disabled');
745 };
746
747 sgBackup.initBackupDeletion = function(){
748 jQuery('.sg-remove-backup').click(function(){
749 var btn = jQuery(this),
750 url = btn.attr('data-remote'),
751 backupName = [btn.attr('data-sgbackup-name')];
752 if (confirm('Are you sure?')) {
753 var ajaxHandler = new sgRequestHandler(url, {backupName: backupName, token: BG_BACKUP_STRINGS.nonce});
754 ajaxHandler.callback = function (response) {
755 location.reload();
756 };
757 ajaxHandler.run();
758 }
759 });
760 };
761