Feature: Add referer field for Pin

This commit is contained in:
winkidney
2018-08-21 19:08:35 +08:00
parent 89f088cc05
commit b7135b64aa
7 changed files with 43 additions and 7 deletions

View File

@@ -137,7 +137,7 @@ class PinResource(ModelResource):
return super(PinResource, self).save_m2m(bundle) return super(PinResource, self).save_m2m(bundle)
class Meta: class Meta:
fields = ['id', 'url', 'origin', 'description'] fields = ['id', 'url', 'origin', 'description', 'referer']
ordering = ['id'] ordering = ['id']
filtering = { filtering = {
'submitter': ALL_WITH_RELATIONS 'submitter': ALL_WITH_RELATIONS

View File

@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='pin',
name='referer',
field=models.URLField(null=True),
),
]

View File

@@ -42,6 +42,7 @@ class Pin(models.Model):
submitter = models.ForeignKey(User) submitter = models.ForeignKey(User)
url = models.URLField(null=True) url = models.URLField(null=True)
origin = models.URLField(null=True) origin = models.URLField(null=True)
referer = models.URLField(null=True)
description = models.TextField(blank=True, null=True) description = models.TextField(blank=True, null=True)
image = models.ForeignKey(Image, related_name='pin') image = models.ForeignKey(Image, related_name='pin')
published = models.DateTimeField(auto_now_add=True) published = models.DateTimeField(auto_now_add=True)

View File

@@ -93,6 +93,7 @@
}); });
image.onclick = function() { image.onclick = function() {
var popUrl = getFormUrl() + encodeURIComponent(imageUrl); var popUrl = getFormUrl() + encodeURIComponent(imageUrl);
popUrl = popUrl + '&referer=' + encodeURIComponent(window.location);
window.open(popUrl); window.open(popUrl);
closePinry(); closePinry();
}; };

View File

@@ -17,6 +17,7 @@ $(window).load(function() {
return { return {
submitter: currentUser, submitter: currentUser,
url: $('#pin-form-image-url').val(), url: $('#pin-form-image-url').val(),
referer: $('#pin-form-referer').val(),
description: $('#pin-form-description').val(), description: $('#pin-form-description').val(),
tags: cleanTags($('#pin-form-tags').val()) tags: cleanTags($('#pin-form-tags').val())
} }
@@ -26,6 +27,7 @@ $(window).load(function() {
var context = {pins: [{ var context = {pins: [{
submitter: currentUser, submitter: currentUser,
image: {thumbnail: {image: $('#pin-form-image-url').val()}}, image: {thumbnail: {image: $('#pin-form-image-url').val()}},
referer: $('#pin-form-referer').val(),
description: $('#pin-form-description').val(), description: $('#pin-form-description').val(),
tags: cleanTags($('#pin-form-tags').val()) tags: cleanTags($('#pin-form-tags').val())
}]}, }]},
@@ -59,9 +61,14 @@ $(window).load(function() {
function createPinForm(editPinId) { function createPinForm(editPinId) {
$('body').append(renderTemplate('#pin-form-template', '')); $('body').append(renderTemplate('#pin-form-template', ''));
var modal = $('#pin-form'), var modal = $('#pin-form'),
formFields = [$('#pin-form-image-url'), $('#pin-form-description'), formFields = [
$('#pin-form-tags')], $('#pin-form-image-url'),
pinFromUrl = getUrlParameter('pin-image-url'); $('#pin-form-referer'),
$('#pin-form-description'),
$('#pin-form-tags')
],
pinFromUrl = getUrlParameter('pin-image-url'),
pinFromReferer = getUrlParameter('referer');
// If editable grab existing data // If editable grab existing data
if (editPinId) { if (editPinId) {
var promise = getPinData(editPinId); var promise = getPinData(editPinId);
@@ -69,6 +76,7 @@ $(window).load(function() {
editedPin = data; editedPin = data;
$('#pin-form-image-url').val(editedPin.image.thumbnail.image); $('#pin-form-image-url').val(editedPin.image.thumbnail.image);
$('#pin-form-image-url').parent().hide(); $('#pin-form-image-url').parent().hide();
$('#pin-form-referer').parent().hide();
$('#pin-form-image-upload').parent().hide(); $('#pin-form-image-upload').parent().hide();
$('#pin-form-description').val(editedPin.description); $('#pin-form-description').val(editedPin.description);
$('#pin-form-tags').val(editedPin.tags); $('#pin-form-tags').val(editedPin.tags);
@@ -113,6 +121,7 @@ $(window).load(function() {
if (pinFromUrl) { if (pinFromUrl) {
$('#pin-form-image-upload').parent().css('display', 'none'); $('#pin-form-image-upload').parent().css('display', 'none');
$('#pin-form-image-url').val(pinFromUrl); $('#pin-form-image-url').val(pinFromUrl);
$('#pin-form-referer').val(pinFromReferer);
$('.navbar').css('display', 'none'); $('.navbar').css('display', 'none');
modal.css({ modal.css({
'margin-top': -35, 'margin-top': -35,
@@ -155,6 +164,7 @@ $(window).load(function() {
} else { } else {
var data = { var data = {
submitter: '/api/v1/user/'+currentUser.id+'/', submitter: '/api/v1/user/'+currentUser.id+'/',
referer: $('#pin-form-referer').val(),
description: $('#pin-form-description').val(), description: $('#pin-form-description').val(),
tags: cleanTags($('#pin-form-tags').val()) tags: cleanTags($('#pin-form-tags').val())
}; };

View File

@@ -24,8 +24,9 @@
{{/if}} {{/if}}
</div> </div>
<div class="text extra pull-right"> <div class="text extra pull-right">
<a href="{{url}}" class="btn btn-sm btn-default btn-warning">Original URL</a> <a href="{{referer}}" class="btn btn-sm btn-default btn-warning" target="_blank">Referer</a>
<a href="/{{id}}/" class="btn btn-sm btn-default btn-success">Pin URL</a> <a href="{{url}}" class="btn btn-sm btn-default btn-primary" target="_blank">Original URL</a>
<a href="/{{id}}/" class="btn btn-sm btn-default btn-success" target="_blank">Pin URL</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -17,6 +17,10 @@
<label for="pin-form-image-upload">Image Upload</label> <label for="pin-form-image-upload">Image Upload</label>
<form action="/pins/create-image/" id="pin-form-image-upload" class="dropzone"></form> <form action="/pins/create-image/" id="pin-form-image-upload" class="dropzone"></form>
</div> </div>
<div class="form-group">
<label for="pin-form-referer">Referer</label>
<input name="pin-form-referer" id="pin-form-referer" class="form-control" type="text"/>
</div>
<div class="form-group"> <div class="form-group">
<label for="pin-form-description">Description</label> <label for="pin-form-description">Description</label>
<textarea name="pin-form-description" id="pin-form-description" class="form-control"></textarea> <textarea name="pin-form-description" id="pin-form-description" class="form-control"></textarea>