diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-06-06 17:38:12 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-06-06 17:38:12 +0200 |
commit | c0047ae6ec63a5ed745f733efca51ce332a296da (patch) | |
tree | a4440b5f40b23ce7ab8d9ae83c826f7fa1a917ae | |
parent | 421bf9d5b3087afb185d776a53bc90f973955df3 (diff) | |
download | hyperkitty-c0047ae6ec63a5ed745f733efca51ce332a296da.tar.gz hyperkitty-c0047ae6ec63a5ed745f733efca51ce332a296da.tar.xz hyperkitty-c0047ae6ec63a5ed745f733efca51ce332a296da.zip |
Improve pagination
-rw-r--r-- | hyperkitty/static/js/hyperkitty.js | 2 | ||||
-rw-r--r-- | hyperkitty/templates/paginator.html | 16 | ||||
-rw-r--r-- | hyperkitty/templates/search_results.html | 2 | ||||
-rw-r--r-- | hyperkitty/templatetags/hk_generic.py | 9 | ||||
-rw-r--r-- | hyperkitty/views/accounts.py | 1 | ||||
-rw-r--r-- | hyperkitty/views/list.py | 1 | ||||
-rw-r--r-- | hyperkitty/views/search.py | 4 |
7 files changed, 26 insertions, 9 deletions
diff --git a/hyperkitty/static/js/hyperkitty.js b/hyperkitty/static/js/hyperkitty.js index 90d94c8..5545cb9 100644 --- a/hyperkitty/static/js/hyperkitty.js +++ b/hyperkitty/static/js/hyperkitty.js @@ -462,7 +462,7 @@ function update_last_views(base_url) { url: url, success: function(data) { container.html(data); - container.find(".pager a").click(function(e) { + container.find(".pagination a").click(function(e) { e.preventDefault(); _update(base_url + $(this).attr("href")); }); diff --git a/hyperkitty/templates/paginator.html b/hyperkitty/templates/paginator.html index 358ae5d..0b4e0d7 100644 --- a/hyperkitty/templates/paginator.html +++ b/hyperkitty/templates/paginator.html @@ -1,8 +1,11 @@ {% load i18n %} -<ul class="pager"> +{% load hk_generic %} + +<div class="pagination pagination-centered"> +<ul> {% if pager.has_previous %} <li> - <a href="?{{ page_key|default:'page' }}={{ pager.previous_page_number }}"> + <a href="?{% add_to_query_string page_key|default:'page' pager.previous_page_number %}"> {% else %} <li class="disabled"> <a href="#"> @@ -10,9 +13,15 @@ ← Newer</a> </li> + {% for pagenum in pager.page_range %} + <li{% if pagenum == pager.number %} class="active"{% endif %}> + <a href="?{% add_to_query_string page_key|default:'page' pagenum %}">{{ pagenum }}</a> + </li> + {% endfor %} + {% if pager.has_next %} <li> - <a href="?{{ page_key|default:'page' }}={{ pager.next_page_number }}"> + <a href="?{% add_to_query_string page_key|default:'page' pager.next_page_number %}"> {% else %} <li class="disabled"> <a href="#"> @@ -20,5 +29,6 @@ Older →</a> </li> </ul> +</div> {# vim: set noet: #} diff --git a/hyperkitty/templates/search_results.html b/hyperkitty/templates/search_results.html index 41b97ba..c9cc754 100644 --- a/hyperkitty/templates/search_results.html +++ b/hyperkitty/templates/search_results.html @@ -56,7 +56,7 @@ Search results for "{{ query }}"{% if mlist %} - {{ mlist.display_name|default:m ← Previous</a> </li> - {% for pagenum in page_range %} + {% for pagenum in messages.page_range %} <li{% if pagenum == messages.number %} class="active"{% endif %}> <a href="?{% add_to_query_string page=pagenum %}">{{ pagenum }}</a> </li> diff --git a/hyperkitty/templatetags/hk_generic.py b/hyperkitty/templatetags/hk_generic.py index d233309..25b240c 100644 --- a/hyperkitty/templatetags/hk_generic.py +++ b/hyperkitty/templatetags/hk_generic.py @@ -194,7 +194,12 @@ def is_message_new(context, refdate): @register.simple_tag(takes_context=True) -def add_to_query_string(context, **kwargs): +def add_to_query_string(context, *args, **kwargs): qs = context["request"].GET.copy() - qs.update(kwargs) + # create a dict from every args couple + new_qs_elements = dict(zip(args[::2], args[1::2])) + new_qs_elements.update(kwargs) + # don't use the .update() method, it appends instead of overwriting + for key, value in new_qs_elements.iteritems(): + qs[key] = value return qs.urlencode() diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py index 5901a17..946f965 100644 --- a/hyperkitty/views/accounts.py +++ b/hyperkitty/views/accounts.py @@ -190,6 +190,7 @@ def last_views(request): last_views = last_views_paginator.page(1) except EmptyPage: last_views = last_views_paginator.page(last_views_paginator.num_pages) + last_views.page_range = [ p+1 for p in range(last_views_paginator.num_pages) ] for last_view in last_views: thread = store.get_thread(last_view.list_address, last_view.threadid) if thread.date_active.replace(tzinfo=utc) > last_view.view_date: diff --git a/hyperkitty/views/list.py b/hyperkitty/views/list.py index 523aff4..610b148 100644 --- a/hyperkitty/views/list.py +++ b/hyperkitty/views/list.py @@ -152,6 +152,7 @@ def _thread_list(request, mlist, threads, template_name='thread_list.html', extr except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. threads = paginator.page(paginator.num_pages) + threads.page_range = [ p+1 for p in range(paginator.num_pages) ] flash_messages = [] flash_msg = request.GET.get("msg") diff --git a/hyperkitty/views/search.py b/hyperkitty/views/search.py index 1d2f3bf..199a836 100644 --- a/hyperkitty/views/search.py +++ b/hyperkitty/views/search.py @@ -74,7 +74,7 @@ def search(request, page=1): query = request.GET.get("query") mlist_fqdn = request.GET.get("list") try: - page_num = int(request.GET.get('page')) + page_num = int(request.GET.get('page', "1")) except ValueError: page_num = 1 results_per_page = 10 @@ -99,6 +99,7 @@ def search(request, page=1): except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. messages = paginator.page(paginator.num_pages) + messages.page_range = [ p+1 for p in range(paginator.num_pages) ] context = { 'mlist' : mlist, @@ -106,7 +107,6 @@ def search(request, page=1): 'current_page': page_num, 'messages': messages, 'total': total, - 'page_range': [ p+1 for p in range(paginator.num_pages) ], } return render(request, "search_results.html", context) |