PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 2.0.3
JetBackup – Backup, Restore & Migrate v2.0.3
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
bootstrap-switch.min.js 3 years ago bootstrap.bundle.min.js 3 years ago bootstrap.bundle.min.js.map 3 years ago chart.umd.min.js 3 years ago jquery.fileupload.js 3 years ago jquery.iframe-transport.js 3 years ago jquery.rateyo.js 3 years ago jquery.validate.min.js 3 years ago jstree.checkbox.js 3 years ago jstree.min.js 3 years ago jstree.types.js 3 years ago jstree.wholerow.js 3 years ago less.min.js 3 years ago main.js 3 years ago popup.js 3 years ago sgbackup.js 3 years ago sgcloud.js 3 years ago sglogin.js 3 years ago sgrequesthandler.js 3 years ago sgrequesthandler.wordpress.js 3 years ago sgschedule.js 3 years ago sgsettings.js 3 years ago
sgcloud.js
329 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' || storage == 'P_CLOUD' || storage == 'BOX') {
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') && jQuery(this).attr('name') == 'sg-key-file') {
212 return true;
213 }
214
215 if(jQuery('#sg-connect-with-key-file').is(':checked') && jQuery(this).attr('name') == 'ftpPass') {
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 var alertValid = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidDestinationFolderName, 'alert-danger');
283 var valid = /^[A-Za-z0-9_\/]*$/.test(cloudFolderName);
284 if (valid === false) {
285 jQuery('.sg-cloud-container').before(alertValid);
286 return;
287 }
288 saveBtn.attr('disabled','disabled');
289 saveBtn.html('Saving...');
290 cloundFolderRequest.callback = function(response){
291 if(typeof response.success !== 'undefined'){
292 var successAlert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.successMessage,'alert-success');
293 jQuery('.sg-cloud-container').before(successAlert);
294 saveBtn.fadeOut();
295 }
296 else{
297 jQuery('.sg-cloud-container').before(alert);
298 }
299 saveBtn.removeAttr('disabled');
300 saveBtn.html('Save');
301 };
302
303 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: 'SUBDIRECTORIES'});
304 isFeatureAvailable.callback = function(response) {
305 if (typeof response.success !== 'undefined') {
306 cloundFolderRequest.run();
307 }
308 else {
309 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
310 jQuery('.sg-cloud-container').before(alert);
311 saveBtn.fadeOut();
312 }
313 };
314
315 isFeatureAvailable.run();
316 });
317 };
318
319 sgBackup.addUserInfo = function(info){
320 jQuery('.sg-user-info .sg-helper-block').remove();
321 jQuery('.sg-user-info br').remove();
322 jQuery('.sg-user-info').append('<br/><span class="text-muted sg-user-email sg-helper-block">'+info+'</span>');
323 };
324
325 sgBackup.hideConnectionMessages = function ()
326 {
327 jQuery('.sgbg-connection-message').addClass('hide');
328 };
329