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 |