summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2010-09-08 07:46:04 +0200
committerDan McGee <dan@archlinux.org>2010-09-08 07:46:08 +0200
commit8117e9b8779eeba45399162be03bc2aab7580ca7 (patch)
tree1911cd809c255202e89b4f9c33685edb3c27c7f5
parentf637a1eb67ed906b936ef70c0c1d8572edfe5bd7 (diff)
downloadarchweb-8117e9b8779eeba45399162be03bc2aab7580ca7.tar.gz
archweb-8117e9b8779eeba45399162be03bc2aab7580ca7.tar.xz
Paginate the news list view
This view was getting huge with ~500 items on it, and most people are not really interested in seeing every single news item. Use the drop in pagination and add some controls that still allow browsing to any page of the list. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--media/archweb.css4
-rw-r--r--news/views.py1
-rw-r--r--templates/news/list.html4
-rw-r--r--templates/news/paginator.html22
4 files changed, 31 insertions, 0 deletions
diff --git a/media/archweb.css b/media/archweb.css
index f417e5e..e662c67 100644
--- a/media/archweb.css
+++ b/media/archweb.css
@@ -142,6 +142,10 @@ div.widget { margin-bottom: 1.5em; }
#artwork img.inverted { background: #333; padding: 0; }
#artwork div.imagelist img { display: inline; margin: 0.75em; }
+/* news: article list */
+.news-nav { float: right; margin-top: -2.2em; }
+.news-nav .prev, .news-nav .next { margin-left: 1em; margin-right: 1em; }
+
/* news: article pages */
div.news-article .article-info { margin: 0; color: #999; }
diff --git a/news/views.py b/news/views.py
index 3747211..cc16981 100644
--- a/news/views.py
+++ b/news/views.py
@@ -19,6 +19,7 @@ def view(request, newsid):
def list(request):
return list_detail.object_list(request,
News.objects.all().select_related('author').defer('content'),
+ paginate_by=50,
template_name="news/list.html",
template_object_name="news")
diff --git a/templates/news/list.html b/templates/news/list.html
index cadc24a..258456a 100644
--- a/templates/news/list.html
+++ b/templates/news/list.html
@@ -12,6 +12,8 @@
</ul>
{% endif %}
+ {% include "news/paginator.html" %}
+
<table id="article-list" class="results">
<thead>
<tr>
@@ -45,5 +47,7 @@
</tbody>
</table>
+ {% include "news/paginator.html" %}
+
</div>
{% endblock %}
diff --git a/templates/news/paginator.html b/templates/news/paginator.html
new file mode 100644
index 0000000..fbd0546
--- /dev/null
+++ b/templates/news/paginator.html
@@ -0,0 +1,22 @@
+{% if is_paginated %}
+<div class="pagination">
+ <p>{{paginator.count}} news items, viewing page {{page_obj.number}} of {{paginator.num_pages}}.</p>
+ <p class="news-nav">
+ {% if page_obj.has_previous %}
+ <a class="prev" href="?page={{page_obj.previous_page_number}}"
+ title="Go to previous page">&lt; Prev</a>
+ {% endif %}
+ {% for num in paginator.page_range %}
+ {% ifequal num page_obj.number %}
+ <span>{{num}}</span>
+ {% else %}
+ <a href="?page={{num}}" title="Go to page {{num}}">{{num}}</a>
+ {% endifequal %}
+ {% endfor %}
+ {% if page_obj.has_next %}
+ <a class="next" href="?page={{page_obj.next_page_number}}"
+ title="Go to next page">Next &gt;</a>
+ {% endif %}
+ </p>
+</div>
+{% endif %}