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