Upload Background Image:
').addClass('image-uploader-progress-bar')var $uploadForm = $('
').append([$uploadInput, $submitButton, $progressBar]);var $thisUploadElement = $('.ylopo-ss-image-upload:not(.initialized)').first().addClass('initialized').append($uploadForm)$uploadForm.on('submit', sendFile);var imageUploadFilename = "";function sendFile(e) {e.preventDefault();var theFormFile = $uploadInput.get()[0].files[0];if (!theFormFile) {alert("Please choose a file before uploading.")return}$thisUploadElement.removeClass('upload-error');$thisUploadElement.addClass('upload-in-progress');var uploadFileName = imageUploadFilename = theFormFile.name;var formData = new FormData();var callbackFunction = window[''];formData.append("process", 'true');formData.append("contentType", 'image');formData.append("isWordpressXmlFile", 'false');formData.append("recordType", 2);formData.append("imageDestination", 'image-block');formData.append("fileName", uploadFileName);formData.append("fileSize", theFormFile.size);formData.append("file",theFormFile, uploadFileName);$thisUploadElement.find('.image-uploader-progress-bar').show();$.ajax({type: 'POST',url: '/api/uploads/images?crumb='+encodeURIComponent(top.Static.SQUARESPACE_CONTEXT.csrfToken),contentType: false,processData: false,data: formData,xhr: function() {var xhr = new window.XMLHttpRequest();xhr.upload.addEventListener("progress", function(evt) {if (evt.lengthComputable) {var percentComplete = (evt.loaded / evt.total) * 100;$progressBar.find('div').css({width: percentComplete+'%'});$thisUploadElement.parent().trigger('image-upload-progress', percentComplete);}}, false);return xhr;},success: function(data, statusText, xhr){$thisUploadElement.removeClass('upload-in-progress');$thisUploadElement.find('.image-uploader-progress-bar div').html('Processing...');if (data && data.job && data.job.id){$thisUploadElement.addClass('processing-image');pollMediaJob(data.job.id, function(err,jobData){$thisUploadElement.find('.image-uploader-progress-bar').hide();$thisUploadElement.find('.image-uploader-progress-bar div').html('');if (err){$thisUploadElement.addClass('upload-error');return}$thisUploadElement.removeClass('processing-image');$thisUploadElement.parent().trigger('image-uploaded', jobData.data)if (callbackFunction){callbackFunction(jobData.data)}});} else {$thisUploadElement.addClass('upload-error');console.log("no job id?", data, statusText, xhr);}},error: function(err){$thisUploadElement.removeClass('upload-in-progress');$thisUploadElement.addClass('upload-error');$thisUploadElement.find('.image-uploader-progress-bar').hide();}});function pollMediaJob(id, callback, retryCount){retryCount === undefined ? 0 : retryCount + 1;if (retryCount > 30) {console.log("Media polling timeout")return}$.ajax({type: 'GET',url: '/api/rest/jobs/?id='+id,success: function(data, statusText, xhr){if (data && data[0] && (data[0].timeCompleted !== undefined || data[0].assetUrl !== undefined || data[0].cleared === true) ){callback(null, data[0])} else {setTimeout(function(){$thisUploadElement.parent().trigger('image-processing');pollMediaJob(id, callback, retryCount);}, 1000);}},error: function(err){console.log("upload error",err)callback(err);}});}return false;}})();