summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2010-09-08 00:46:04 -0500
committerDan McGee <dan@archlinux.org>2010-09-08 00:46:08 -0500
commit8117e9b8779eeba45399162be03bc2aab7580ca7 (patch)
tree1911cd809c255202e89b4f9c33685edb3c27c7f5
parentf637a1eb67ed906b936ef70c0c1d8572edfe5bd7 (diff)
downloadarchweb-release_2010-09-08.tar.gz
archweb-release_2010-09-08.zip
Paginate the news list viewrelease_2010-09-08
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 f417e5ee..e662c670 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 37472115..cc169819 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 cadc24a2..258456a5 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 00000000..fbd0546b
--- /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 %}