Working new pin form

This commit is contained in:
Isaac Bythewood
2013-02-26 01:54:02 +00:00
parent d462bfb83b
commit 9f5cc2de57
6 changed files with 96 additions and 9 deletions

View File

@@ -84,3 +84,4 @@ class PinResource(ModelResource):
resource_name = 'pin' resource_name = 'pin'
include_resource_uri = False include_resource_uri = False
authorization = DjangoAuthorization() authorization = DjangoAuthorization()
ordering = '-published'

View File

@@ -37,7 +37,14 @@ $(document).ready(function() {
'cursor': 'pointer' 'cursor': 'pointer'
}); });
wrapper.click(function() { 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(); $('.pinry-images').remove();
}); });
return wrapper; return wrapper;

View File

@@ -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('<img src="'+$(this).val()+'"/>');
});
$('#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();
});
});

View File

@@ -67,10 +67,10 @@ $(window).load(function() {
$('.spinner').css('display', 'block'); $('.spinner').css('display', 'block');
// Fetch our pins from the api using our current offset // 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 // Set which items are editable by the current user
for (var i=0; i < pins.objects.length; i++) 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 // Use the fetched pins as our context for our pins template
var template = Handlebars.compile($('#pins-template').html()); var template = Handlebars.compile($('#pins-template').html());

View File

@@ -24,7 +24,7 @@
<ul class="nav pull-right"> <ul class="nav pull-right">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li><a href="#" class="bookmarklet-link">Bookmarklet</a></li> <li><a href="#" class="bookmarklet-link">Bookmarklet</a></li>
<li><a href="#new-pin" data-toggle="modal">New Pin</a></li> <li><a href="#call-pin-form" id="call-pin-form">New Pin</a></li>
<li><a href="{% url 'core:logout' %}">Logout</a></li> <li><a href="{% url 'core:logout' %}">Logout</a></li>
{% else %} {% else %}
<li><a href="{% url 'core:login' %}">Login</a></li> <li><a href="{% url 'core:login' %}">Login</a></li>
@@ -44,14 +44,12 @@
{% block yield %}{% endblock %} {% block yield %}{% endblock %}
{% new_pin request %}
{% block templates %}{% endblock %} {% block templates %}{% endblock %}
{% compress js inline %} {% compress js inline %}
<script> <script>
var apiLimitPerPage = {{ API_LIMIT_PER_PAGE }}, var apiLimitPerPage = {{ API_LIMIT_PER_PAGE }},
currentUser = "{{ user.username }}"; currentUser = "{{ user.id }}";
</script> </script>
{% endcompress %} {% endcompress %}
@@ -62,6 +60,7 @@
<script src="{{ STATIC_URL }}js/messages.js"></script> <script src="{{ STATIC_URL }}js/messages.js"></script>
<script src="{{ STATIC_URL }}js/lightbox.js"></script> <script src="{{ STATIC_URL }}js/lightbox.js"></script>
<script src="{{ STATIC_URL }}js/pinry.js"></script> <script src="{{ STATIC_URL }}js/pinry.js"></script>
<script src="{{ STATIC_URL }}js/pin-form.js"></script>
{% endcompress %} {% endcompress %}
</body> </body>
</html> </html>

View File

@@ -47,8 +47,8 @@
</div> </div>
</div> </div>
{{/if}} {{/if}}
<a href="{{images.standard.url}}" class="lightbox" data-username="{{submitter.username}}" data-tags="{{tags}}" data-gravatar="{{submitter.gravatar}}"> <a href="{{image.standard.image}}" class="lightbox" data-username="{{submitter.username}}" data-tags="{{tags}}" data-gravatar="{{submitter.gravatar}}">
<img src="{{images.thumbnail.url}}" /> <img src="{{image.thumbnail.image}}" />
</a> </a>
{{#if description}} {{#if description}}
<p>{{description}}</p> <p>{{description}}</p>
@@ -70,5 +70,42 @@
</div> </div>
{{/each}} {{/each}}
</script> </script>
<script id="pin-form-template" type="text/x-handlebars-template">
<div class="modal" id="pin-form">
<div class="modal-header">
<h3>New Pin</h3>
</div>
<div class="modal-body">
<div class="span3" id="pin-form-image-preview">
Image Preview
</div>
<div class="span3">
<div class="control-group">
<label class="control-label" for="pin-form-image-url">Image URL</label>
<div class="controls">
<input type="text" name="pin-form-image-url" id="pin-form-image-url"/>
</div>
</div>
<div class="control-group">
<label class="control-label" for="pin-form-description">Description</label>
<div class="controls">
<textarea name="pin-form-description" id="pin-form-description"></textarea>
</div>
</div>
<div class="control-group">
<label class="control-label" for="pin-form-tags">Tags</label>
<div class="controls">
<input type="text" name="pin-form-tags" id="pin-form-tags"/>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="pin-form-submit">Post</button>
<button class="btn" id="pin-form-close">Cancel</a>
</div>
</div>
</script>
{% endverbatim %} {% endverbatim %}
{% endblock %} {% endblock %}