PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.5.4
JetBackup – Backup, Restore & Migrate v1.5.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 / sgcloud.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 jquery.validate.min.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 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
sgcloud.js
519 lines
1 jQuery(document).ready( function() {
2 sgBackup.initCloudSwitchButtons();
3 sgBackup.initCloudFolderSettings();
4 });
5
6 jQuery(document).on('change', '.btn-file :file', function() {
7 var input = jQuery(this),
8 numFiles = input.get(0).files ? input.get(0).files.length : 1,
9 label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
10 input.trigger('fileselect', [numFiles, label]);
11 });
12
13 sgBackup.initSFTPKeyFileSelection = function() {
14 isFileSelected = false;
15 jQuery('.btn-file :file').off('fileselect').on('fileselect', function(event, numFiles, label){
16 var input = jQuery(this).parents('.input-group').find(':text'),
17 log = numFiles > 1 ? numFiles + ' files selected' : label;
18
19 if (input.length) {
20 input.val(log);
21 isFileSelected = true;
22 }
23 else {
24 if(log) alert(log);
25 }
26 });
27 }
28
29 sgBackup.importKeyFile = function(isFileSelected){
30
31 jQuery('.alert').remove();
32 if(!isFileSelected){
33 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidImportFile, 'alert-danger');
34 jQuery('#sg-modal .modal-header').prepend(alert);
35 return false;
36 }
37
38 var sguploadFile = new FormData(),
39 url = "importKeyFile",
40 sgAllowedFileSize = jQuery('.sg-backup-upload-input').attr('data-max-file-size'),
41 sgFile = jQuery('input[name=sg-ssh-key-file]')[0].files[0];
42 sguploadFile.append('sg-ssh-key-file', sgFile);
43 if(sgFile.size > sgAllowedFileSize){
44 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidFileSize, 'alert-danger');
45 jQuery('#sg-modal .modal-header').prepend(alert);
46 return false;
47 }
48
49 var ajaxHandler = new sgRequestHandler(url, sguploadFile, {
50 contentType: false,
51 token: BG_BACKUP_STRINGS.nonce,
52 cache: false,
53 xhr: function() { /* Custom XMLHttpRequest */
54 var myXhr = jQuery.ajaxSettings.xhr();
55 if(myXhr.upload){ /* Check if upload property exists */
56 myXhr.upload.addEventListener('progress', sgBackup.fileUploadProgress, false); /* For handling the progress of the upload */
57 }
58 return myXhr;
59 },
60 processData: false
61 });
62
63 ajaxHandler.callback = function(response, error){
64 jQuery('.alert').remove();
65 if(typeof response.success == 'undefined'){
66 /* if error */
67 var alert = sgBackup.alertGenerator(response, 'alert-danger');
68 jQuery('#sg-modal .modal-header').prepend(alert);
69 }
70 };
71 ajaxHandler.run();
72 }
73
74 sgBackup.initCloudSwitchButtons = function(){
75 jQuery.fn.bootstrapSwitch.defaults.size = 'small';
76 jQuery('.sg-switch').bootstrapSwitch();
77 jQuery('.sg-switch').on('switchChange.bootstrapSwitch', function(event, state) {
78 var storage = jQuery(this).attr('data-storage'),
79 url = jQuery(this).attr('data-remote');
80 var that = jQuery(this);
81 /* If switch is on */
82 if(state) {
83 jQuery('.alert').remove();
84 if(storage == 'DROPBOX' || storage == 'GOOGLE_DRIVE' || storage == 'ONE_DRIVE') {
85 var curlRequirementCheck = new sgRequestHandler('curlChecker', {token: BG_BACKUP_STRINGS.nonce});
86 that.bootstrapSwitch('indeterminate',true);
87 curlRequirementCheck.callback = function(response){
88 if(typeof response.success !== 'undefined') {
89 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: storage});
90 isFeatureAvailable.callback = function(response) {
91 if (typeof response.success !== 'undefined') {
92 jQuery(location).attr('href', getAjaxUrl(url));
93 }
94 else {
95 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
96 jQuery('.sg-cloud-container').before(alert);
97 that.bootstrapSwitch('state', false);
98 }
99 }
100
101 isFeatureAvailable.run();
102 }
103 else{
104 var alert = sgBackup.alertGenerator(response.error, 'alert-danger');
105 jQuery('.sg-cloud-container').before(alert);
106 that.bootstrapSwitch('state',false);
107 }
108 };
109 curlRequirementCheck.run();
110 }
111 else if (storage == 'FTP') {
112 jQuery('input[data-storage=FTP]').bootstrapSwitch('indeterminate',true);
113 sgBackup.isFtpConnected = false;
114 jQuery('#ftp-settings').click();
115 }
116 else if (storage == 'AMAZON') {
117 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('indeterminate',true);
118 sgBackup.isAmazonConnected = false;
119 jQuery('#amazon-settings').click();
120 }
121 else if (storage == 'BACKUP_GUARD') {
122 jQuery('input[data-storage=BACKUP_GUARD]').bootstrapSwitch('indeterminate',true);
123 sgBackup.isBackupGuardConnected = false;
124 jQuery('#backup-guard-details').click();
125 }
126 }
127 else {
128 var ajaxHandler = new sgRequestHandler(url, {cancel: true,token: BG_BACKUP_STRINGS.nonce });
129 ajaxHandler.callback = function(response){
130 jQuery('.sg-'+storage+'-user').remove();
131 if (typeof storage == 'string') {
132 location.reload();
133 }
134 };
135 ajaxHandler.run();
136 }
137 });
138 };
139
140 sgBackup.storeAmazonSettings = function(){
141 var error = [];
142 /* Validation */
143 jQuery('.alert').remove();
144 var amazonForm = jQuery('form[data-type=storeAmazonSettings]');
145 amazonForm.find('input').each(function(){
146 if(jQuery(this).val()<=0){
147
148 if(jQuery(this)[0].id == "customBucketRegion" && jQuery("#bucketType").val() != "custom"){
149 return;
150 }
151 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
152 error.push(errorTxt+' field is required.');
153 }
154 });
155
156 /* If any error show it and abort ajax */
157 if(error.length){
158 var alert = sgBackup.alertGenerator(error, 'alert-danger');
159 jQuery('#sg-modal .modal-header').prepend(alert);
160 return false;
161 }
162
163 /* Before Ajax call */
164 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
165 jQuery('.modal-footer .btn-primary').html(BG_CLOUD_STRINGS.connectionInProgress);
166
167 /* Get user credentials */
168 var amazonBucket = jQuery('#amazonBucket').val();
169 var amazonAccessKey = jQuery('#amazonAccessKey').val();
170 var amazonSecretAccessKey = jQuery('#amazonSecretAccessKey').val();
171 var region = jQuery('#amazonBucketRegion').val();
172
173 /* On Success */
174 var ajaxHandler = new sgRequestHandler('cloudAmazon',amazonForm.serialize());
175 ajaxHandler.dataIsObject = false;
176 ajaxHandler.callback = function(response){
177 jQuery('.alert').remove();
178 if(typeof response.success !== 'undefined'){
179 sgBackup.isAmazonConnected = true;
180 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('state',true);
181 jQuery('#sg-modal').modal('hide');
182 }
183 else{
184 /* if error */
185 var alert = sgBackup.alertGenerator(response, 'alert-danger');
186 jQuery('#sg-modal .modal-header').prepend(alert);
187
188 /* Before Ajax call */
189 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
190 jQuery('.modal-footer .btn-primary').html('Save');
191 }
192 };
193 ajaxHandler.run();
194 };
195
196 sgBackup.storeFtpSettings = function(){
197 var error = [];
198 /* Validation */
199 jQuery('.alert').remove();
200 var ftpForm = jQuery('form[data-type=storeFtpSettings]');
201 ftpForm.find('input[type=text]').each(function(){
202 if(jQuery(this).val()<=0){
203 if (jQuery(this).attr('name') != 'sg-key-file') {
204 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
205 }
206 else {
207 var errorTxt = jQuery(this).closest('div').parent().parent().find('label').html().slice(0,-2);
208 }
209
210
211 if(!jQuery('#sg-connect-with-key-file').is(':checked') && errorTxt == 'Private key') {
212 return true;
213 }
214
215 if(jQuery('#sg-connect-with-key-file').is(':checked') && errorTxt == 'Password') {
216 return true;
217 }
218
219 error.push(errorTxt+' field is required.');
220 }
221 });
222
223 /* If any error show it and abort ajax */
224 if(error.length){
225 var alert = sgBackup.alertGenerator(error, 'alert-danger');
226 jQuery('#sg-modal .modal-header').prepend(alert);
227 return false;
228 }
229
230 /* Before Ajax call */
231 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
232 jQuery('.modal-footer .btn-primary').html('Connecting...');
233
234 /* Get user credentials */
235 var ftpHost = jQuery('#ftpHost').val();
236 var ftpUser = jQuery('#ftpUser').val();
237 var ftpPort = jQuery('#ftpPort').val();
238 var ftpString = ftpUser+'@'+ftpHost+':'+ftpPort;
239
240 if (jQuery("#sg-connect-with-key-file").is(":checked")) {
241 sgBackup.importKeyFile(isFileSelected);
242 }
243
244 /* On Success */
245 var ajaxHandler = new sgRequestHandler('cloudFtp',ftpForm.serialize());
246 ajaxHandler.dataIsObject = false;
247 ajaxHandler.callback = function(response){
248 jQuery('.alert').remove();
249 if(typeof response.success !== 'undefined'){
250 sgBackup.isFtpConnected = true;
251 jQuery('input[data-storage=FTP]').bootstrapSwitch('state',true);
252 jQuery('#sg-modal').modal('hide');
253 sgBackup.addUserInfo(ftpString);
254 }
255 else{
256 /* if error */
257 var alert = sgBackup.alertGenerator(response, 'alert-danger');
258 jQuery('#sg-modal .modal-header').prepend(alert);
259
260 /* Before Ajax call */
261 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
262 jQuery('.modal-footer .btn-primary').html('Save');
263 }
264 };
265 ajaxHandler.run();
266 };
267 sgBackup.initCloudFolderSettings = function(){
268 jQuery('#cloudFolder').on('input', function(){
269 jQuery('#sg-save-cloud-folder').fadeIn();
270 });
271 jQuery('#sg-save-cloud-folder').click(function(){
272 jQuery('.alert').remove();
273 var cloudFolderName = jQuery('#cloudFolder').val(),
274 cloundFolderRequest = new sgRequestHandler('saveCloudFolder',{cloudFolder: cloudFolderName, token: BG_BACKUP_STRINGS.nonce}),
275 saveBtn = jQuery(this);
276 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidDestinationFolder,'alert-danger');
277 if(cloudFolderName.length<=0)
278 {
279 jQuery('.sg-cloud-container').before(alert);
280 return;
281 }
282 saveBtn.attr('disabled','disabled');
283 saveBtn.html('Saving...');
284 cloundFolderRequest.callback = function(response){
285 if(typeof response.success !== 'undefined'){
286 var successAlert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.successMessage,'alert-success');
287 jQuery('.sg-cloud-container').before(successAlert);
288 saveBtn.fadeOut();
289 }
290 else{
291 jQuery('.sg-cloud-container').before(alert);
292 }
293 saveBtn.removeAttr('disabled');
294 saveBtn.html('Save');
295 };
296
297 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: 'SUBDIRECTORIES'});
298 isFeatureAvailable.callback = function(response) {
299 if (typeof response.success !== 'undefined') {
300 cloundFolderRequest.run();
301 }
302 else {
303 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
304 jQuery('.sg-cloud-container').before(alert);
305 saveBtn.fadeOut();
306 }
307 };
308
309 isFeatureAvailable.run();
310 });
311 };
312
313 sgBackup.addUserInfo = function(info){
314 jQuery('.sg-user-info .sg-helper-block').remove();
315 jQuery('.sg-user-info br').remove();
316 jQuery('.sg-user-info').append('<br/><span class="text-muted sg-user-email sg-helper-block">'+info+'</span>');
317 };
318
319 sgBackup.backupCloudConnectCallback;
320
321 sgBackup.validateForm = function () {
322 var validateObj = {
323 rules: {
324 email: {
325 required: true,
326 email: true
327 },
328 password: {
329 required: true,
330 },
331 firstname: {
332 required: true,
333 },
334 lastname: {
335 required: true,
336 },
337 }
338 };
339 validateObj.submitHandler = function () {
340 var callBack = sgBackup.backupCloudConnectCallback;
341 callBack();
342 };
343 var form = jQuery('#backupGuardDetailsModal');
344 form.validate(validateObj);
345 form.submit();
346 };
347
348 sgBackup.bgCloudLoginForm = function (mode) {
349 var selectors = ['#bg-password-container', '#bg-login'];
350 for (var i in selectors) {
351 var selector = selectors[i];
352 if (mode == 'show') {
353 jQuery(selector).removeClass('hidden');
354 }
355 else {
356 jQuery(selector).addClass('hidden');
357 }
358 }
359
360 jQuery('#bg-connect-account').addClass('hidden');
361 };
362
363 sgBackup.bgCloudRegisterForm = function (mode) {
364 var selectors = ['#bg-firstname-container', '#bg-lastname-container', '#bg-create-account'];
365 for (var i in selectors) {
366 var selector = selectors[i];
367 if (mode == 'show') {
368 jQuery(selector).removeClass('hidden');
369 }
370 else {
371 jQuery(selector).addClass('hidden');
372 }
373 }
374
375 jQuery('#bg-connect-account').addClass('hidden');
376 };
377
378 sgBackup.backupGuardConnectRequest = function () {
379 sgBackup.showAjaxSpinner('.sg-modal-body');
380 var email = jQuery("#email").val();
381 var isUserExistsHandler = new sgRequestHandler('isBgUserExists', {email: email, token: BG_BACKUP_STRINGS.nonce});
382 isUserExistsHandler.callback = function(response) {
383 sgBackup.hideAjaxSpinner();
384
385 sgBackup.hideConnectionMessages();
386
387 if (response.validationError == 'error') {
388 jQuery('.bg-invalid-login').removeClass('hide');
389 return true;
390 }
391 else {
392 jQuery('.sg-backup-input-email').prop('readonly', true);
393 }
394 if (typeof response.success != 'undefined') {
395 jQuery('.bg-loggin-form-message').removeClass('hide');
396 sgBackup.bgCloudLoginForm('show');
397 }
398 else if (response.user == 'notFound') {
399 jQuery('.bg-register-form-message').removeClass('hide');
400 sgBackup.bgCloudRegisterForm('show')
401 }
402 };
403 isUserExistsHandler.run();
404 };
405
406 sgBackup.backupGuardConnect = function() {
407
408 sgBackup.backupCloudConnectCallback = sgBackup.backupGuardConnectRequest;
409 sgBackup.validateForm();
410 };
411
412 sgBackup.hideConnectionMessages = function ()
413 {
414 jQuery('.sgbg-connection-message').addClass('hide');
415 };
416
417 sgBackup.backupGuardLoginRequest = function ()
418 {
419 sgBackup.showAjaxSpinner('.sg-modal-body');
420 sgBackup.backupCloudConnectCallback = this;
421
422 var email = jQuery("#email").val();
423 var password = jQuery("#password").val();
424
425 var loginHandler = new sgRequestHandler('bgLogin', {email: email, password: password, token: BG_BACKUP_STRINGS.nonce});
426 loginHandler.callback = function(response) {
427 sgBackup.hideAjaxSpinner();
428 if (typeof response.profiles != 'undefined') {
429 jQuery('#bg-email-container').hide();
430 jQuery('#bg-password-container').hide();
431 jQuery('#bg-close-button').hide();
432 jQuery('#bg-login').hide();
433 sgBackup.hideConnectionMessages();
434 jQuery('.bg-create-form-message').removeClass('hide');
435
436 jQuery('#bg-choose-profile').removeClass('hidden');
437 jQuery('#bg-profiles-container').removeClass('hidden');
438
439 if (response.profiles.length) {
440 jQuery('.bg-select-profile').removeClass('hidden');
441 }
442 jQuery.each(response.profiles, function(key, value) {
443 jQuery('#bg-profiles').append('<option value="'+value['id']+'">'+value['name']+'</option>');
444 });
445
446 jQuery('#bg-profiles').on("change", function () {
447 var profileId = jQuery(this).val();
448 if (profileId === "0") {
449 jQuery('#bg-profile-name-container').show();
450 }
451 else {
452 jQuery('#bg-profile-name-container').hide();
453 }
454 });
455 }
456 else {
457 jQuery('.bg-invalid-login').removeClass('hide');
458 }
459 };
460 loginHandler.run();
461 };
462
463 sgBackup.backupGuardLogin = function() {
464 sgBackup.backupCloudConnectCallback = sgBackup.backupGuardLoginRequest;
465 sgBackup.validateForm();
466 };
467
468 sgBackup.chooseProfileRequest = function () {
469 sgBackup.showAjaxSpinner('.sg-modal-body');
470 var profileId = jQuery("#bg-profiles").val();
471 // var profileName = "";
472
473 if (profileId === "0") {
474 var profileName = jQuery("#bg-profile-name").val();
475 }
476 else {
477 var profileName = jQuery("#bg-profiles option:selected").text();
478 }
479
480 var chooseProfile = new sgRequestHandler('chooseProfile', {profileId: profileId, profileName: profileName, token: BG_BACKUP_STRINGS.nonce});
481 chooseProfile.callback = function(response) {
482 sgBackup.hideAjaxSpinner();
483 if (typeof response.success != 'undefined') {
484 location.reload();
485 }
486 };
487 chooseProfile.run();
488 };
489
490 sgBackup.chooseProfile = function() {
491 sgBackup.backupCloudConnectCallback = sgBackup.chooseProfileRequest;
492 sgBackup.validateForm();
493 };
494
495 sgBackup.createCloudUserRequest = function () {
496 sgBackup.showAjaxSpinner('.sg-modal-body');
497 var lastname = jQuery("#lastname").val();
498 var email = jQuery("#email").val();
499 var firstname = jQuery("#firstname").val();
500
501 var createCloudUserHandler = new sgRequestHandler('createCloudUser', {email: email, lastname: lastname, firstname: firstname, token: BG_BACKUP_STRINGS.nonce});
502 createCloudUserHandler.callback = function(response) {
503 sgBackup.hideAjaxSpinner();
504 if (typeof response.success != 'undefined') {
505 sgBackup.bgCloudLoginForm('show');
506 sgBackup.bgCloudRegisterForm();
507 sgBackup.hideConnectionMessages();
508
509 jQuery('.bg-email-confirmation').removeClass('hide');
510 }
511 };
512 createCloudUserHandler.run();
513 };
514
515 sgBackup.createCloudUser = function() {
516 sgBackup.backupCloudConnectCallback = sgBackup.createCloudUserRequest;
517 sgBackup.validateForm();
518 };
519