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 |