mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 16:45:41 +01:00
Allow basic sorting by tag.
This commit is contained in:
@@ -27,6 +27,7 @@ class PinResource(ModelResource): # pylint: disable-msg=R0904
|
|||||||
|
|
||||||
if 'tag' in filters:
|
if 'tag' in filters:
|
||||||
orm_filters['tags__name__in'] = filters['tag'].split(',')
|
orm_filters['tags__name__in'] = filters['tag'].split(',')
|
||||||
|
|
||||||
return orm_filters
|
return orm_filters
|
||||||
|
|
||||||
def dehydrate_tags(self, bundle):
|
def dehydrate_tags(self, bundle):
|
||||||
|
|||||||
@@ -59,6 +59,15 @@ body {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tags {
|
||||||
|
padding: 13px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
#pins {
|
#pins {
|
||||||
top: 70px;
|
top: 70px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/**
|
/**
|
||||||
* Based on Wookmark's endless scroll.
|
* Based on Wookmark's endless scroll.
|
||||||
*/
|
*/
|
||||||
$(window).ready(function () {
|
|
||||||
var apiURL = '/api/pin/?format=json&offset='
|
var apiURL = '/api/pin/?format=json&offset='
|
||||||
var page = 0;
|
var page = 0;
|
||||||
var handler = null;
|
var handler = null;
|
||||||
|
var globalTag = null;
|
||||||
var isLoading = false;
|
var isLoading = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,12 +35,26 @@ $(window).ready(function () {
|
|||||||
/**
|
/**
|
||||||
* Loads data from the API.
|
* Loads data from the API.
|
||||||
*/
|
*/
|
||||||
function loadData() {
|
function loadData(tag) {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
$('#loader').show();
|
$('#loader').show();
|
||||||
|
|
||||||
|
if (tag !== undefined) {
|
||||||
|
globalTag = tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tag !== undefined && page != 0) {
|
||||||
|
$('#pins').html('');
|
||||||
|
page = 0;
|
||||||
|
if (tag != null) $('.tags').html('<span class="label tag" onclick="loadData(null)">' + tag + ' x</span>');
|
||||||
|
else $('.tags').html('');
|
||||||
|
}
|
||||||
|
|
||||||
|
var loadURL = apiURL+(page*20);
|
||||||
|
if (globalTag !== null) loadURL += "&tag=" + tag;
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: apiURL+(page*20),
|
url: loadURL,
|
||||||
success: onLoadData
|
success: onLoadData
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -72,7 +86,7 @@ $(window).ready(function () {
|
|||||||
if (image.tags) {
|
if (image.tags) {
|
||||||
html += '<p>';
|
html += '<p>';
|
||||||
for (tag in image.tags) {
|
for (tag in image.tags) {
|
||||||
html += image.tags[tag] + ', ';
|
html += '<span class="label tag" onclick="loadData(\'' + image.tags[tag] + '\')">' + image.tags[tag] + '</span> ';
|
||||||
}
|
}
|
||||||
html += '</p>';
|
html += '</p>';
|
||||||
}
|
}
|
||||||
@@ -96,4 +110,3 @@ $(window).ready(function () {
|
|||||||
openEffect: 'none',
|
openEffect: 'none',
|
||||||
closeEffect: 'none'
|
closeEffect: 'none'
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|||||||
@@ -18,7 +18,9 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="navbar navbar-fixed-top">
|
<div class="navbar navbar-fixed-top">
|
||||||
<div class="navbar-inner">
|
<div class="navbar-inner">
|
||||||
<a href="{% url core:home %}" class="brand">{{ site_name }}</a>
|
<a href="{% url core:home %}" class="brand pull-left">{{ site_name }}</a>
|
||||||
|
|
||||||
|
<div class="tags pull-left"></div>
|
||||||
|
|
||||||
<ul class="nav pull-right">
|
<ul class="nav pull-right">
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
|
|||||||
Reference in New Issue
Block a user