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