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)
class Meta:
fields = ['id', 'url', 'origin', 'description']
fields = ['id', 'url', 'origin', 'description', 'referer']
ordering = ['id']
filtering = {
'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)
url = models.URLField(null=True)
origin = models.URLField(null=True)
referer = models.URLField(null=True)
description = models.TextField(blank=True, null=True)
image = models.ForeignKey(Image, related_name='pin')
published = models.DateTimeField(auto_now_add=True)

View File

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

View File

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

View File

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

View File

@@ -17,6 +17,10 @@
<label for="pin-form-image-upload">Image Upload</label>
<form action="/pins/create-image/" id="pin-form-image-upload" class="dropzone"></form>
</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">
<label for="pin-form-description">Description</label>
<textarea name="pin-form-description" id="pin-form-description" class="form-control"></textarea>