use wish list apparatus to set keywords

pull/1/head
eric 2014-12-10 23:27:49 -05:00
parent 7ddaa7174d
commit 44f3fadb49
6 changed files with 60 additions and 13 deletions

View File

@ -213,7 +213,17 @@
</div>
{% comment %}same logic as above{% endcomment %}
{% if show_pledge %}
{% if setkw %}
{% if setkw in work.subjects.all %}
<div class="listview panelfront side1 remove-wishlist">
<span class="kw_id" id="l{{ workid }}" data-kw="{{setkw}}">Unset <i>{{setkw}}</i></span>
</div>
{% else %}
<div class="listview panelfront side1 add-wishlist">
<span class="kw_id" id="l{{ workid }}" data-kw="{{setkw}}">Set <i>{{setkw}}</i></span>
</div>
{% endif %}
{% else %}{% if show_pledge %}
<div class="listview panelfront side1 add-wishlist">
<span class="booklist_pledge"><a href="{% url pledge work_id=workid %}" class="fakeinput">Pledge</a></span>
</div>
@ -252,7 +262,7 @@
<span class="work_id" id="l{{ workid }}">Fave</span>
{% endif %}
</div>
{% endif %}{% endif %}{% endif %}{% endif %}
{% endif %}{% endif %}{% endif %}{% endif %}{% endif %}
<div class="listview panelfront side1 booklist-status">
{% ifequal status "ACTIVE" %}

View File

@ -54,9 +54,9 @@
</ul>
<ul class="book-list-view">
<li>Sort by:</li>
<li class="view-list"><a {% if order_by = 'popular' %}class="chosen" {% endif %}href="{% url faceted_list path %}?order_by=popular">popular</a></li>
<li class="view-list"><a {% if order_by = 'newest' %}class="chosen" {% endif %}href="{% url faceted_list path %}?order_by=newest">newest</a></li>
<li class="view-list"><a {% if order_by = 'title' %}class="chosen" {% endif %}href="{% url faceted_list path %}?order_by=title">title</a></li>
<li class="view-list"><a {% if order_by = 'popular' %}class="chosen" {% endif %}href="{% url faceted_list path %}?{% if setkw %}setkw={{setkw}}&amp;{% endif %}order_by=popular">popular</a></li>
<li class="view-list"><a {% if order_by = 'newest' %}class="chosen" {% endif %}href="{% url faceted_list path %}?{% if setkw %}setkw={{setkw}}&amp;{% endif %}order_by=newest">newest</a></li>
<li class="view-list"><a {% if order_by = 'title' %}class="chosen" {% endif %}href="{% url faceted_list path %}?{% if setkw %}setkw={{setkw}}&amp;{% endif %}order_by=title">title</a></li>
</ul>
</div>
<div id="content-block-content">

View File

@ -10,7 +10,7 @@
<ul class="menu level2">
<li class="first"><span>{{ group.title }} is ...</span></li>
{% for facet in group.get_facets %}
<li><a href="{% url faceted_list path %}{{facet.facet_name}}/" title="{{ facet.title }}"><span>{{ facet.label }}</span></a></li>
<li><a href="{% url faceted_list path %}{{facet.facet_name}}/?{% if setkw %}setkw={{setkw}}&amp;{% endif %}order_by={{order_by}}" title="{{ facet.title }}"><span>{{ facet.label }}</span></a></li>
{% endfor %}
</ul>
{% endfor %}

View File

@ -18,7 +18,7 @@
<ul>
{% for subject in subjects %}
<li><a href="{% url free %}kw.{{ subject.name }}/">{{ subject.name }}</a> ({{ subject.works__count }})</li>
<li><a href="{% url free %}kw.{{ subject.name }}/">{{ subject.name }}</a> ({{ subject.works__count }}). {% if request.user.is_staff %} <a href="{% url free %}?setkw={{ subject.name }}">set keywords</a>{% endif %}</li>
{% endfor %}
</ul>
</p>

View File

@ -865,6 +865,12 @@ class FacetedView(FilterableListView):
context = super(FacetedView, self).get_context_data(**kwargs)
facet = self.kwargs.get('facet','all')
qs=self.get_queryset()
if self.request.GET.has_key('setkw') and self.request.user.is_staff:
setkw = self.request.GET['setkw']
try:
context['setkw'] = models.Subject.objects.get(name=setkw)
except models.Subject.DoesNotExist:
pass
context['activetab'] = "#1"
context['tab_override'] = 'tabs-1'
context['path'] = self.vertex.get_facet_path().replace('//','/').strip('/')
@ -2106,7 +2112,21 @@ def wishlist(request):
googlebooks_id = request.POST.get('googlebooks_id', None)
remove_work_id = request.POST.get('remove_work_id', None)
add_work_id = request.POST.get('add_work_id', None)
setkw = request.POST.get('setkw', None)
if setkw and request.user.is_staff:
try:
subject = models.Subject.objects.get(name=setkw)
except models.Subject.DoesNotExist:
return HttpResponse('invalid subject')
if remove_work_id:
work = safe_get_work(int(remove_work_id))
work.subjects.remove(subject)
return HttpResponse('removed work from '+setkw)
elif add_work_id:
work =safe_get_work(add_work_id)
work.subjects.add(subject)
return HttpResponse('added work to '+setkw)
if googlebooks_id:
try:
edition = bookloader.add_by_googlebooks_id(googlebooks_id)

View File

@ -8,6 +8,7 @@ $j().ready(function() {
var span = $j(this).find("span");
var id_val = span.attr('id').substring(1);
var id_type = span.attr('class');
if (!id_val) {span.html('<i>an error occurred.</i>'); return;}
// give immediate feedback that action is in progress
@ -22,13 +23,19 @@ $j().ready(function() {
jQuery.post('/wishlist/', { 'googlebooks_id': id_val}, function(data) {
span.html('Faved!').addClass('on-wishlist');
});}
else if (id_type=='kw_id'){
var setkw = span.attr('data-kw');
jQuery.post('/wishlist/', { 'add_work_id': id_val, 'setkw' : setkw}, function(data) {
span.html(setkw + ' set!');
span.parent().removeClass("add-wishlist").addClass('remove-wishlist');
});}
else {
span.html('a type error occurred');
}
// prevent perversities on download page
if ($j(this).is("a")) {
$j(this).removeClass("add-wishlist").addClass("success");
if ($j(this).is('a')) {
$j(this).removeClass('add-wishlist').addClass('success');
}
});
@ -36,10 +43,20 @@ $j().ready(function() {
var span = $j(this).find("span");
var book = $j(this).closest('.thewholebook');
var work_id = span.attr('id').substring(1)
var id_type = span.attr('class');
span.html('Removing...');
jQuery.post('/wishlist/', {'remove_work_id': work_id}, function(data) {
book.fadeOut();
});
if (id_type=='kw_id'){
var setkw = span.attr('data-kw');
jQuery.post('/wishlist/', {'remove_work_id': work_id, 'setkw' : setkw}, function(data) {
span.html(setkw + ' unset');
span.parent().addClass('add-wishlist').removeClass('remove-wishlist')
})
}
else {
jQuery.post('/wishlist/', {'remove_work_id': work_id}, function(data) {
book.fadeOut();
});
}
});
contentblock.on("click", "div.create-account", function () {