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