PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 1.3.4
JetBackup – Backup, Restore & Migrate v1.3.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 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
sgcloud.js
307 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 jQuery('.alert').remove();
31 if(!isFileSelected){
32 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidImportFile, 'alert-danger');
33 jQuery('#sg-modal .modal-header').prepend(alert);
34 return false;
35 }
36
37 var sguploadFile = new FormData(),
38 url = "importKeyFile",
39 sgAllowedFileSize = jQuery('.sg-backup-upload-input').attr('data-max-file-size'),
40 sgFile = jQuery('input[name=sg-ssh-key-file]')[0].files[0];
41 sguploadFile.append('sg-ssh-key-file', sgFile);
42 if(sgFile.size > sgAllowedFileSize){
43 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidFileSize, 'alert-danger');
44 jQuery('#sg-modal .modal-header').prepend(alert);
45 return false;
46 }
47
48 var ajaxHandler = new sgRequestHandler(url, sguploadFile, {
49 contentType: false,
50 cache: false,
51 xhr: function() { // Custom XMLHttpRequest
52 var myXhr = jQuery.ajaxSettings.xhr();
53 if(myXhr.upload){ // Check if upload property exists
54 myXhr.upload.addEventListener('progress', sgBackup.fileUploadProgress, false); // For handling the progress of the upload
55 }
56 return myXhr;
57 },
58 processData: false
59 });
60
61 ajaxHandler.callback = function(response, error){
62 jQuery('.alert').remove();
63 if(typeof response.success == 'undefined'){
64 //if error
65 var alert = sgBackup.alertGenerator(response, 'alert-danger');
66 jQuery('#sg-modal .modal-header').prepend(alert);
67 }
68 };
69 ajaxHandler.run();
70 }
71
72 sgBackup.initCloudSwitchButtons = function(){
73 jQuery('.sg-switch').bootstrapSwitch();
74 jQuery('.sg-switch').on('switchChange.bootstrapSwitch', function(event, state) {
75 var storage = jQuery(this).attr('data-storage'),
76 url = jQuery(this).attr('data-remote');
77 that = jQuery(this);
78 //If switch is on
79 if(state) {
80 jQuery('.alert').remove();
81 if(storage == 'DROPBOX' || storage == 'GOOGLE_DRIVE' || storage == 'ONE_DRIVE') {
82 var curlRequirementCheck = new sgRequestHandler('curlChecker', {token: BG_BACKUP_STRINGS.nonce});
83 that.bootstrapSwitch('indeterminate',true);
84 curlRequirementCheck.callback = function(response){
85 if(typeof response.success !== 'undefined') {
86 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: storage});
87 isFeatureAvailable.callback = function(response) {
88 if (typeof response.success !== 'undefined') {
89 jQuery(location).attr('href', getAjaxUrl(url));
90 }
91 else {
92 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
93 jQuery('.sg-cloud-container legend').after(alert);
94 that.bootstrapSwitch('state', false);
95 }
96 }
97
98 isFeatureAvailable.run();
99 }
100 else{
101 var alert = sgBackup.alertGenerator(response.error, 'alert-danger');
102 jQuery('.sg-cloud-container legend').after(alert);
103 that.bootstrapSwitch('state',false);
104 }
105 };
106 curlRequirementCheck.run();
107 }
108 else if (storage == 'FTP') {
109 jQuery('input[data-storage=FTP]').bootstrapSwitch('indeterminate',true);
110 sgBackup.isFtpConnected = false;
111 jQuery('#ftp-settings').click();
112 }
113 else if (storage == 'AMAZON') {
114 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('indeterminate',true);
115 sgBackup.isAmazonConnected = false;
116 jQuery('#amazon-settings').click();
117 }
118 }
119 else {
120 var ajaxHandler = new sgRequestHandler(url, {cancel: true});
121 ajaxHandler.callback = function(response){
122 jQuery('.sg-'+storage+'-user').remove();
123 };
124 ajaxHandler.run();
125 }
126 });
127 };
128
129 sgBackup.storeAmazonSettings = function(){
130 var error = [];
131 //Validation
132 jQuery('.alert').remove();
133 var amazonForm = jQuery('form[data-type=storeAmazonSettings]');
134 amazonForm.find('input').each(function(){
135 if(jQuery(this).val()<=0){
136
137 if(jQuery(this)[0].id == "customBucketRegion" && jQuery("#bucketType").val() != "custom"){
138 return;
139 }
140 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
141 error.push(errorTxt+' field is required.');
142 }
143 });
144
145 //If any error show it and abort ajax
146 if(error.length){
147 var alert = sgBackup.alertGenerator(error, 'alert-danger');
148 jQuery('#sg-modal .modal-header').prepend(alert);
149 return false;
150 }
151
152 //Before Ajax call
153 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
154 jQuery('.modal-footer .btn-primary').html(BG_CLOUD_STRINGS.connectionInProgress);
155
156 //Get user credentials
157 var amazonBucket = jQuery('#amazonBucket').val();
158 var amazonAccessKey = jQuery('#amazonAccessKey').val();
159 var amazonSecretAccessKey = jQuery('#amazonSecretAccessKey').val();
160 var region = jQuery('#amazonBucketRegion').val();
161
162 //On Success
163 var ajaxHandler = new sgRequestHandler('cloudAmazon',amazonForm.serialize());
164 ajaxHandler.dataIsObject = false;
165 ajaxHandler.callback = function(response){
166 jQuery('.alert').remove();
167 if(typeof response.success !== 'undefined'){
168 sgBackup.isAmazonConnected = true;
169 jQuery('input[data-storage=AMAZON]').bootstrapSwitch('state',true);
170 jQuery('#sg-modal').modal('hide');
171 }
172 else{
173 //if error
174 var alert = sgBackup.alertGenerator(response, 'alert-danger');
175 jQuery('#sg-modal .modal-header').prepend(alert);
176
177 //Before Ajax call
178 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
179 jQuery('.modal-footer .btn-primary').html('Save');
180 }
181 };
182 ajaxHandler.run();
183 };
184
185 sgBackup.storeFtpSettings = function(){
186 var error = [];
187 //Validation
188 jQuery('.alert').remove();
189 var ftpForm = jQuery('form[data-type=storeFtpSettings]');
190 ftpForm.find('input[type=text]').each(function(){
191 if(jQuery(this).val()<=0){
192 if (jQuery(this).attr('name') != 'sg-key-file') {
193 var errorTxt = jQuery(this).closest('div').parent().find('label').html().slice(0,-2);
194 }
195 else {
196 var errorTxt = jQuery(this).closest('div').parent().parent().find('label').html().slice(0,-2);
197 }
198
199
200 if(!jQuery('#sg-connect-with-key-file').is(':checked') && errorTxt == 'Private key') {
201 return true;
202 }
203
204 if(jQuery('#sg-connect-with-key-file').is(':checked') && errorTxt == 'Password') {
205 return true;
206 }
207
208 error.push(errorTxt+' field is required.');
209 }
210 });
211
212 //If any error show it and abort ajax
213 if(error.length){
214 var alert = sgBackup.alertGenerator(error, 'alert-danger');
215 jQuery('#sg-modal .modal-header').prepend(alert);
216 return false;
217 }
218
219 //Before Ajax call
220 jQuery('.modal-footer .btn-primary').attr('disabled','disabled');
221 jQuery('.modal-footer .btn-primary').html('Connecting...');
222
223 //Get user credentials
224 var ftpHost = jQuery('#ftpHost').val();
225 var ftpUser = jQuery('#ftpUser').val();
226 var ftpPort = jQuery('#ftpPort').val();
227 var ftpString = ftpUser+'@'+ftpHost+':'+ftpPort;
228
229 if (jQuery("#sg-connect-with-key-file").is(":checked")) {
230 sgBackup.importKeyFile(isFileSelected);
231 }
232
233 //On Success
234 var ajaxHandler = new sgRequestHandler('cloudFtp',ftpForm.serialize());
235 ajaxHandler.dataIsObject = false;
236 ajaxHandler.callback = function(response){
237 jQuery('.alert').remove();
238 if(typeof response.success !== 'undefined'){
239 sgBackup.isFtpConnected = true;
240 jQuery('input[data-storage=FTP]').bootstrapSwitch('state',true);
241 jQuery('#sg-modal').modal('hide');
242 sgBackup.addUserInfo(ftpString);
243 }
244 else{
245 //if error
246 var alert = sgBackup.alertGenerator(response, 'alert-danger');
247 jQuery('#sg-modal .modal-header').prepend(alert);
248
249 //Before Ajax call
250 jQuery('.modal-footer .btn-primary').removeAttr('disabled');
251 jQuery('.modal-footer .btn-primary').html('Save');
252 }
253 };
254 ajaxHandler.run();
255 };
256 sgBackup.initCloudFolderSettings = function(){
257 jQuery('#cloudFolder').on('input', function(){
258 jQuery('#sg-save-cloud-folder').fadeIn();
259 });
260 jQuery('#sg-save-cloud-folder').click(function(){
261 jQuery('.alert').remove();
262 var cloudFolderName = jQuery('#cloudFolder').val(),
263 cloundFolderRequest = new sgRequestHandler('saveCloudFolder',{cloudFolder: cloudFolderName, token: BG_BACKUP_STRINGS.nonce}),
264 saveBtn = jQuery(this);
265 var alert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.invalidDestinationFolder,'alert-danger');
266 if(cloudFolderName.length<=0)
267 {
268 jQuery('.sg-cloud-container legend').after(alert);
269 return;
270 }
271 saveBtn.attr('disabled','disabled');
272 saveBtn.html('Saving...');
273 cloundFolderRequest.callback = function(response){
274 if(typeof response.success !== 'undefined'){
275 var successAlert = sgBackup.alertGenerator(BG_CLOUD_STRINGS.successMessage,'alert-success');
276 jQuery('.sg-cloud-container legend').after(successAlert);
277 saveBtn.fadeOut();
278 }
279 else{
280 jQuery('.sg-cloud-container legend').after(alert);
281 }
282 saveBtn.removeAttr('disabled');
283 saveBtn.html('Save');
284 };
285
286 var isFeatureAvailable = new sgRequestHandler('isFeatureAvailable', {sgFeature: 'SUBDIRECTORIES'});
287 isFeatureAvailable.callback = function(response) {
288 if (typeof response.success !== 'undefined') {
289 cloundFolderRequest.run();
290 }
291 else {
292 var alert = sgBackup.alertGenerator(response.error, 'alert-warning');
293 jQuery('.sg-cloud-container legend').after(alert);
294 saveBtn.fadeOut();
295 }
296 }
297
298 isFeatureAvailable.run();
299 });
300 };
301
302 sgBackup.addUserInfo = function(info){
303 jQuery('.sg-user-info .sg-helper-block').remove();
304 jQuery('.sg-user-info br').remove();
305 jQuery('.sg-user-info').append('<br/><span class="text-muted sg-user-email sg-helper-block">'+info+'</span>');
306 };
307