From 983d35df93b4a2a630f7dfdc2f65e2cd371b91d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Farka?= <stepanfarka11@gmail.com>
Date: Fri, 25 Mar 2022 14:37:05 +0100
Subject: [PATCH] [FIX] pagination range

---
 .../styleguide/2.3.x/pagination.html          | 10 +++++-----
 shared/templatetags/shared_tags.py            | 20 +++++++++++++++++++
 2 files changed, 25 insertions(+), 5 deletions(-)
 create mode 100644 shared/templatetags/shared_tags.py

diff --git a/shared/templates/styleguide/2.3.x/pagination.html b/shared/templates/styleguide/2.3.x/pagination.html
index c6da34ae..38393953 100644
--- a/shared/templates/styleguide/2.3.x/pagination.html
+++ b/shared/templates/styleguide/2.3.x/pagination.html
@@ -1,4 +1,4 @@
-{% load wagtailcore_tags %}
+{% load wagtailcore_tags shared_tags %}
 
 <div class="pagination-container">
   <nav class="pagination space-x-1">
@@ -6,15 +6,15 @@
     {% if paginator.has_previous %}
     <a href="{% pageurl page %}?page={{ paginator.previous_page_number }}{{ extra_query }}" class="btn btn--icon btn--grey-125 btn--hoveractive btn--to-black btn--condensed btn--inverted-icon">
       <div class="btn__body-wrap">
-        <div class="btn__body ">předchozí</div>
+        <div class="btn__body ">Předchozí</div>
         <div class="btn__icon ">
           <i class="ico--chevron-left"></i>
         </div>
       </div>
     </a>
     {% endif %}
-
-    {% for i in paginator.paginator.page_range %}
+    {% get_pagination_range paginator.number paginator.paginator.page_range as pagination_range %}
+    {% for i in pagination_range %}
       {% if i == paginator.number %}
       <a href="{% pageurl page %}?page={{ i }}{{ extra_query }}" class="btn btn--grey-500 btn--condensed hidden md:inline-block">
       {% else %}
@@ -27,7 +27,7 @@
     {% if paginator.has_next %}
     <a href="{% pageurl page %}?page={{ paginator.next_page_number }}{{ extra_query }}" class="btn btn--icon btn--grey-125 btn--hoveractive btn--to-black btn--condensed">
       <div class="btn__body-wrap">
-        <div class="btn__body ">další</div>
+        <div class="btn__body ">Další</div>
         <div class="btn__icon ">
           <i class="ico--chevron-right"></i>
         </div>
diff --git a/shared/templatetags/shared_tags.py b/shared/templatetags/shared_tags.py
new file mode 100644
index 00000000..a96e7f1b
--- /dev/null
+++ b/shared/templatetags/shared_tags.py
@@ -0,0 +1,20 @@
+from django import template
+
+register = template.Library()
+
+
+@register.simple_tag
+def get_pagination_range(current_page: int, all_page_range: range):
+    surrounding_count = 2
+    if current_page > surrounding_count:
+        if current_page + surrounding_count <= all_page_range[-1]:
+            return range(
+                current_page - surrounding_count, current_page + surrounding_count + 1
+            )
+        else:
+            return range(current_page - surrounding_count, all_page_range[-1] + 1)
+    else:
+        if current_page + surrounding_count <= all_page_range[-1]:
+            return range(all_page_range[0], current_page + surrounding_count + 1)
+        else:
+            return range(all_page_range[0], all_page_range[-1] + 1)
-- 
GitLab