enhance arrows with pictures and and add arrows with fragments.
--- a/src/egonomy/templates/egonomy_annotate_picture.html Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/templates/egonomy_annotate_picture.html Tue Jul 02 16:38:05 2013 +0200
@@ -60,14 +60,16 @@
{% endwith %}
</div>
{% if search %}
- {% if index_search|add:1 > 1 %}{# i know it's weird but "if index_search > 0" doesn't work #}
+ {% if index_search > 0 %}
<div class="arrow-wrap left-arrow">
<a class="arrow" href="{% url 'picture_by_search' %}?search={{ search }}&index_search={{ index_search|add:-1 }}"></a>
</div>
{% endif %}
+ {% if index_search|add:1 < nb_results %}
<div class="arrow-wrap right-arrow">
<a class="arrow" href="{% url 'picture_by_search' %}?search={{ search }}&index_search={{ index_search|add:1 }}"></a>
</div>
+ {% endif %}
{% endif %}
<ul class="share">
<li><a title="Partager sur Twitter" href="#" class="tool twitter"></a></li>
--- a/src/egonomy/templates/egonomy_view_fragment.html Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/templates/egonomy_view_fragment.html Tue Jul 02 16:38:05 2013 +0200
@@ -5,6 +5,10 @@
{% block title %}{% trans "View a fragment" %}{% endblock %}
+{% block css_page %}
+ <link rel="stylesheet" href="{% static 'egonomy/css/slideshow.css' %}" />
+{% endblock %}
+
{% block content %}
<div class="title-page">
<h2>{{ fragment.title }}</h2>
@@ -71,12 +75,18 @@
</div>
{% endif %}
</div>
+ {% if search %}
+ {% if index_search > 0 %}
<div class="arrow-wrap left-arrow">
- <a class="arrow" href="#"></a>
+ <a class="arrow" href="{% url 'fragment_by_search' %}?search={{ search }}&index_search={{ index_search|add:-1 }}"></a>
</div>
+ {% endif %}
+ {% if index_search|add:1 < nb_results %}
<div class="arrow-wrap right-arrow">
- <a class="arrow" href="#"></a>
+ <a class="arrow" href="{% url 'fragment_by_search' %}?search={{ search }}&index_search={{ index_search|add:1 }}"></a>
</div>
+ {% endif %}
+ {% endif %}
<ul class="share">
<li><a title="Partager sur Twitter" href="#" class="tool twitter"></a></li>
<li><a title="Partager sur Facebook" href="#" class="tool facebook"></a></li>
--- a/src/egonomy/templates/partial/fragment_in_list.html Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/templates/partial/fragment_in_list.html Tue Jul 02 16:38:05 2013 +0200
@@ -1,7 +1,7 @@
{% load i18n %}
{# we suppose here that "frg" has been defined #}
{% with fragment=frg.object|default:frg %}{# frg.object in search case, frg otherwise #}
-<a href="{% url 'view_fragment' fragment_pk=frg.pk %}">
+<a href="{% url 'view_fragment' fragment_pk=frg.pk %}{% if search %}?search={{ search }}&index_search={{ offset_search|add:forloop.counter0 }}&nb_results={{ nb_results }}{% endif %}">
<div class="center-image">
<div class="image-and-fragment square-fragment-225">
{% with image=fragment.image.info.image_file %}
--- a/src/egonomy/templates/partial/image_in_list.html Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/templates/partial/image_in_list.html Tue Jul 02 16:38:05 2013 +0200
@@ -2,7 +2,7 @@
{% load i18n %}
{% load thumbnail %}
{# we suppose here that "img" has been defined #}
-<a href="{% url 'annotate_picture' image_id=img.id %}{% if search %}?search={{ search }}&index_search={{ offset_search|add:forloop.counter0 }}{% endif %}">
+<a href="{% url 'annotate_picture' image_id=img.id %}{% if search %}?search={{ search }}&index_search={{ offset_search|add:forloop.counter0 }}&nb_results={{ nb_results }}{% endif %}">
<div class="center-image">
{% with img.info.image_file as image %}
{% if image %}
--- a/src/egonomy/urls.py Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/urls.py Tue Jul 02 16:38:05 2013 +0200
@@ -27,6 +27,7 @@
url(r'^additem/$', 'egonomy.views.add_item_to_collection', name='add_item'),
url(r'^embedslideshow/(?P<collection_pk>.*)/$', 'egonomy.views.embed_slideshow', name='embed_slideshow'),
url(r'^picturebysearch/$', 'egonomy.views.picture_by_search', name='picture_by_search'),
+ url(r'^fragmentbysearch/$', 'egonomy.views.fragment_by_search', name='fragment_by_search'),
# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
--- a/src/egonomy/views.py Tue Jul 02 13:16:00 2013 +0200
+++ b/src/egonomy/views.py Tue Jul 02 16:38:05 2013 +0200
@@ -55,10 +55,15 @@
# If we display the picture after a search, we propose the previous and next picture
search = request.GET.get("search") or None
index_search = request.GET.get("index_search") or None
+ if index_search:
+ index_search = int(index_search)
+ nb_results = request.GET.get("nb_results") or None
+ if nb_results:
+ nb_results = int(nb_results)
return render_to_response("egonomy_annotate_picture.html",
{'img': img, 'fragment_list': frg_list, 'last_frg':last_frg,
- 'search': search, 'index_search': index_search,
+ 'search': search, 'index_search': index_search, 'nb_results': nb_results,
'current_user_collection_list':current_user_collection_list(request)},
context_instance=RequestContext(request))
@@ -70,8 +75,18 @@
fragment_only = {'true': True, 'false': False, "0": False, "1": True}.get((request.GET.get("fragment_only") or "1").lower())
+ # If we display the after after a search, we propose the previous and next fragment
+ search = request.GET.get("search") or None
+ index_search = request.GET.get("index_search") or None
+ if index_search:
+ index_search = int(index_search)
+ nb_results = request.GET.get("nb_results") or None
+ if nb_results:
+ nb_results = int(nb_results)
+
return render_to_response("egonomy_view_fragment.html",
{'fragment': frg, 'fragment_list': frg_list, 'fragment_only':fragment_only,
+ 'search': search, 'index_search': index_search, 'nb_results': nb_results,
'current_user_collection_list':current_user_collection_list(request)},
context_instance=RequestContext(request))
@@ -148,6 +163,7 @@
qp = QueryParser(field)
res = ModelRelatedSearchQuerySet(model=Image).filter(qp.parse(search)).models(ImageMetadata).load_all_queryset(Image, img_list).load_all()
paginator = SearchPaginator(res, nb)
+ nb_results = paginator.count
else:
img_list = img_list.order_by('pk').all()
paginator = Paginator(img_list, nb)
@@ -186,14 +202,16 @@
if "field" in request.GET:
field = request.GET["field"]
- img_list = Image.objects.select_related('info', 'metadata')
if search:
if not field or field == 'all':
field = 'text'
qp = QueryParser(field)
- res = ModelRelatedSearchQuerySet(model=Image).filter(qp.parse(search)).models(ImageMetadata).load_all_queryset(Image, img_list).load_all()
+ # We don't need to do .load_all_queryset(Image, img_list).load_all()
+ # because all we need the image's id/pk
+ res = ModelRelatedSearchQuerySet(model=Image).filter(qp.parse(search)).models(ImageMetadata)
img = res[index_search]
- return redirect(reverse("annotate_picture", args=[img.pk]) + "?search=" + search + "&index_search=" + str(index_search))
+ nb_results = len(res)
+ return redirect(reverse("annotate_picture", args=[img.pk]) + "?search=" + search + "&index_search=" + str(index_search) + "&nb_results=" + str(nb_results))
else:
redirect("home")
@@ -221,6 +239,7 @@
qp = QueryParser(field)
res = RelatedSearchQuerySet().filter(qp.parse(search)).models(Fragment).load_all_queryset(Fragment, frg_list).load_all().highlight()
paginator = Paginator(res, nb)
+ nb_results = paginator.count
else:
frg_list = frg_list.order_by('pk').all()
paginator = Paginator(frg_list, nb)
@@ -231,15 +250,51 @@
results = paginator.page(paginator.num_pages)
url_pagination = reverse("all_fragments") + "?limit=" + str(nb)
+ offset_search = None
if search:
url_pagination = url_pagination + "&search=" + search
+ offset_search = int(nb) * (cur_page_nb-1)
return render_to_response("egonomy_all_fragments.html",
- {"search_fragment":True, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination,
+ {"search_fragment":True, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb,
+ "search":search, "nb_results":nb_results, "url_pagination":url_pagination,
+ "offset_search":offset_search, "offset_search":offset_search,
'current_user_collection_list':current_user_collection_list(request)},
context_instance=RequestContext(request))
+
+def fragment_by_search(request):
+
+ # We get the picture in the context of a search
+ index_search = request.GET.get("index_search") or None
+ if not index_search:
+ redirect("home")
+ else:
+ index_search = int(index_search)
+
+ search = None
+ if "search" in request.GET:
+ search = request.GET["search"]
+ field = "all"
+ if "field" in request.GET:
+ field = request.GET["field"]
+
+ if search:
+ if not field or field == 'all':
+ field = 'text'
+ qp = QueryParser(field)
+ # We don't need to do .load_all_queryset(Fragment, frg_list).load_all().highlight()
+ # because all we need the fragment's pk
+ res = RelatedSearchQuerySet().filter(qp.parse(search)).models(Fragment)
+ frg = res[index_search]
+ nb_results = len(res)
+ return redirect(reverse("view_fragment", args=[frg.pk]) + "?search=" + search + "&index_search=" + str(index_search) + "&nb_results=" + str(nb_results))
+ else:
+ redirect("home")
+
+
+
def user_fragments(request, username):
# Get the cur_page_nb number parameter if possible