Browse Source

Fix topic pages not being displayed on forum index

sh4nks 8 years ago
parent
commit
9a0b4fc2e7
2 changed files with 14 additions and 7 deletions
  1. 1 1
      flaskbb/templates/forum/forum.html
  2. 13 6
      flaskbb/templates/macros.html

+ 1 - 1
flaskbb/templates/forum/forum.html

@@ -78,7 +78,7 @@
                             <div class="topic-name">
                                 <a href="{{ topic.url }}">{{ topic.title }}</a>
                                 <!-- Topic Pagination -->
-                                <span class="topic-pages">{{ topic_pages(topic, flaskbb_config["POSTS_PER_PAGE"]) }}</span>
+                                <span class="topic-pages">[{{ topic_pages(topic, flaskbb_config["POSTS_PER_PAGE"]) }}]</span>
                             </div>
 
                             <div class="topic-author">

+ 13 - 6
flaskbb/templates/macros.html

@@ -385,13 +385,20 @@
 
 {# Generates a some kind of pagination for the posts in topic in the forum view. #}
 {%- macro topic_pages(topic_obj, per_page=10) -%}
-{% set topic_pages = (topic_obj.post_count / per_page)|round|int %}
-{%- if topic_pages >  1 -%}
-[
-    {%- for page in range(0, topic_pages) -%}
-            <a href="{{ url_for('forum.view_topic', topic_id=topic_obj.id) }}?page={{ page+1 }}">{{ page+1 }}</a>{% if not loop.last %} {% endif %}
+{% set pages = (topic_obj.post_count / per_page)|round(method='ceil')|int %}
+{% set max_pages = 4 %}
+{% set page_count = pages if pages <= max_pages else max_pages %}
+
+{%- if pages > 0 -%}
+    {%- for page in range(1, page_count+1) -%}
+        {% if pages > max_pages and page == max_pages-1 %}
+            <a href="{{ url_for('forum.view_topic', topic_id=topic_obj.id) }}?page={{ page }}">{{ page }}</a> ...
+        {% elif pages > max_pages and loop.last %}
+            <a href="{{ url_for('forum.view_topic', topic_id=topic_obj.id) }}?page={{ pages }}">{{ pages }}</a>
+        {% else %}
+            <a href="{{ url_for('forum.view_topic', topic_id=topic_obj.id) }}?page={{ page }}">{{ page }}</a>
+        {% endif %}
     {%- endfor -%}
-]
 {%- endif -%}
 {%- endmacro -%}