From 852cb0b89df02e32f06395f21f2b8afecc55400e Mon Sep 17 00:00:00 2001 From: winkidney Date: Thu, 21 Feb 2019 13:22:28 +0800 Subject: [PATCH] Feature: Replace image upload by DRF-api --- pinry/static/js/helpers.js | 35 +++++++++++++++++++++++++++++++++++ pinry/static/js/pin-form.js | 23 ++++++++++++----------- 2 files changed, 47 insertions(+), 11 deletions(-) diff --git a/pinry/static/js/helpers.js b/pinry/static/js/helpers.js index 9f22a4e..74f3d41 100644 --- a/pinry/static/js/helpers.js +++ b/pinry/static/js/helpers.js @@ -7,6 +7,41 @@ */ +function _getCookie(name) { + var cookieValue = null; + if (document.cookie && document.cookie !== '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; +} + + +function getCSRFToken() { + return _getCookie('csrftoken'); +} + + +function csrfSafeMethod(method) { + // these HTTP methods do not require CSRF protection + return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); +} +$.ajaxSetup({ + beforeSend: function(xhr, settings) { + if (!csrfSafeMethod(settings.type) && !this.crossDomain) { + xhr.setRequestHeader("X-CSRFToken", getCSRFToken()); + } + } +}); + + function renderTemplate(templateId, context) { var template = Handlebars.compile($(templateId).html()); return template(context); diff --git a/pinry/static/js/pin-form.js b/pinry/static/js/pin-form.js index a189a82..406868b 100644 --- a/pinry/static/js/pin-form.js +++ b/pinry/static/js/pin-form.js @@ -107,18 +107,19 @@ $(window).load(function() { uploadMultiple: false, maxFiles: 1, acceptedFiles: 'image/*', + headers: { + 'X-CSRFToken': getCSRFToken(), + }, success: function(file, resp) { - $('#pin-form-image-url').parent().fadeOut(300); - var promise = getImageData(resp.success.id); - uploadedImage = resp.success.id; - promise.success(function(image) { - $('#pin-form-image-url').val(image.thumbnail.image); - createPinPreviewFromForm(); - }); - promise.error(function() { - message('Problem uploading image.', 'alert alert-error'); - }); - } + var image_url = $('#pin-form-image-url'); + image_url.parent().fadeOut(300); + uploadedImage = resp.id; + image_url.val(resp.thumbnail.image); + createPinPreviewFromForm(); + }, + error: function (error) { + message('Problem uploading image.', 'alert alert-error'); + }, }); // If bookmarklet submit if (pinFromUrl) {