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