From 9f5cc2de572ce751b1968fe4f8d2fdc35074ee61 Mon Sep 17 00:00:00 2001 From: Isaac Bythewood Date: Tue, 26 Feb 2013 01:54:02 +0000 Subject: [PATCH] Working new pin form --- pinry/api/api.py | 1 + pinry/static/js/bookmarklet.js | 9 +++++++- pinry/static/js/pin-form.js | 43 +++++++++++++++++++++++++++++++++++ pinry/static/js/pinry.js | 4 ++-- pinry/templates/core/base.html | 7 +++--- pinry/templates/pins/recent_pins.html | 41 +++++++++++++++++++++++++++++++-- 6 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 pinry/static/js/pin-form.js diff --git a/pinry/api/api.py b/pinry/api/api.py index 5fb9f92..dc4ce98 100644 --- a/pinry/api/api.py +++ b/pinry/api/api.py @@ -84,3 +84,4 @@ class PinResource(ModelResource): resource_name = 'pin' include_resource_uri = False authorization = DjangoAuthorization() + ordering = '-published' diff --git a/pinry/static/js/bookmarklet.js b/pinry/static/js/bookmarklet.js index 12e91a0..fadece9 100644 --- a/pinry/static/js/bookmarklet.js +++ b/pinry/static/js/bookmarklet.js @@ -37,7 +37,14 @@ $(document).ready(function() { 'cursor': 'pointer' }); wrapper.click(function() { - alert('Added'); + $.ajax({ + type: "post", + url: "http://nebula.bythewood.me/api/v1/pin/", + contentType: 'application/json', + data: JSON.stringify({ + url: imageUrl + }) + }); $('.pinry-images').remove(); }); return wrapper; diff --git a/pinry/static/js/pin-form.js b/pinry/static/js/pin-form.js new file mode 100644 index 0000000..c21c9bb --- /dev/null +++ b/pinry/static/js/pin-form.js @@ -0,0 +1,43 @@ +$(window).load(function() { + function createPinForm() { + var template = Handlebars.compile($('#pin-form-template').html()); + var html = template(); + $('body').append(html); + $('#pin-form-image-url').bind('propertychange keyup input paste', function() { + $('#pin-form-image-preview').html(''); + }); + $('#pin-form-submit').click(function(e) { + var tags = $('#pin-form-tags').val() + tags = tags.split(',') + for (var tag in tags) tags[tag] = tags[tag].trim(); + $.ajax({ + type: "post", + url: "/api/v1/pin/", + contentType: 'application/json', + data: JSON.stringify({ + submitter: '/api/v1/user/'+currentUser+'/', + url: $('#pin-form-image-url').val(), + description: $('#pin-form-description').val(), + tags: tags + }) + }); + + $('#pin-form-close').click(function() { + $('#pin-form').remove(); + }); + + $('#pin-form').remove(); + + e.preventDefault(); + }); + + $('#pin-form-close').click(function() { + $('#pin-form').remove(); + }); + e.preventDefault(); + } + + $('#call-pin-form').click(function() { + createPinForm(); + }); +}); diff --git a/pinry/static/js/pinry.js b/pinry/static/js/pinry.js index ab660ff..e25beb6 100644 --- a/pinry/static/js/pinry.js +++ b/pinry/static/js/pinry.js @@ -67,10 +67,10 @@ $(window).load(function() { $('.spinner').css('display', 'block'); // Fetch our pins from the api using our current offset - $.get('/api/v1/pin/?format=json&offset='+String(offset), function(pins) { + $.get('/api/v1/pin/?format=json&ordering=-id&offset='+String(offset), function(pins) { // Set which items are editable by the current user for (var i=0; i < pins.objects.length; i++) - pins.objects[i].editable = (pins.objects[i].submitter.username == currentUser); + pins.objects[i].editable = (pins.objects[i].submitter.id == currentUser); // Use the fetched pins as our context for our pins template var template = Handlebars.compile($('#pins-template').html()); diff --git a/pinry/templates/core/base.html b/pinry/templates/core/base.html index a10c4ad..34eab0a 100644 --- a/pinry/templates/core/base.html +++ b/pinry/templates/core/base.html @@ -24,7 +24,7 @@