Browse Source

#399 Paginator tag

Rafał Pitoń 10 years ago
parent
commit
cb337dc5b7

+ 20 - 0
misago/core/templatetags/misago_pagination.py

@@ -0,0 +1,20 @@
+from django import template
+from django.template import Context
+from django.template.loader import get_template
+
+
+register = template.Library()
+
+
+@register.simple_tag
+def pagination(page, template, link_name, **kwargs):
+    template = get_template(template)
+
+    context = kwargs
+    context.update({
+        'paginator': page.paginator,
+        'page': page,
+        'link_name': link_name,
+    })
+
+    return template.render(Context(context))

+ 28 - 0
misago/core/tests/test_templatetags.py

@@ -2,6 +2,7 @@ from django.template import Context, Template, TemplateSyntaxError
 from django.test import TestCase
 from django.test import TestCase
 
 
 from misago.core import forms
 from misago.core import forms
+from misago.core.shortcuts import paginate
 from misago.core.templatetags import misago_batch
 from misago.core.templatetags import misago_batch
 
 
 
 
@@ -153,3 +154,30 @@ class FormRowTests(TestCase):
 
 
         with self.assertRaises(TemplateSyntaxError):
         with self.assertRaises(TemplateSyntaxError):
             Template(tpl_content)
             Template(tpl_content)
+
+
+class MockUser(object):
+    id = 12
+    pk = 12
+    username = "Bob"
+    slug = "bob"
+
+
+class PaginationTests(TestCase):
+    def setUp(self):
+        self.page = paginate(range(500), 11, 20, 5)
+        self.context = Context({
+            'page': self.page,
+            'user': MockUser()
+        })
+
+    def test_pagination(self):
+        """capture content to variable"""
+        tpl_content = """
+{% load misago_pagination %}
+
+{% pagination page "misago/profile/pagination.html" 'misago:user_warnings' user_slug=user.slug user_id=user.pk %}
+"""
+
+        tpl = Template(tpl_content)
+        render = tpl.render(self.context).strip()

+ 1 - 41
misago/templates/misago/profile/name_history.html

@@ -45,47 +45,7 @@
     {% endfor%}
     {% endfor%}
   </div>
   </div>
 
 
-  {% if name_changes.paginator.num_pages > 1 %}
-  <ul class="pager pager-wide">
-    {% if name_changes.has_previous %}
-      <li class="pull-left">
-        <a href="{% url 'misago:user_name_history' user_slug=profile.slug user_id=profile.pk %}" class="tooltip-top" title="{% trans "Go to first page" %}">
-          {% trans "Latest" %}
-        </a>
-      </li>
-      {% if name_changes.number > 2 %}
-      <li class="pull-left">
-        <a href="{% url 'misago:user_name_history' user_slug=profile.slug user_id=profile.pk page=name_changes.previous_page_number %}" class="tooltip-top" title="{% trans "Go to previous page" %}">
-          {% trans "Later" %}
-        </a>
-      </li>
-      {% endif %}
-    {% endif %}
-    {% if name_changes.has_next %}
-      <li class="pull-right">
-        <a href="{% url 'misago:user_name_history' user_slug=profile.slug user_id=profile.pk page=name_changes.paginator.num_pages %}" class="tooltip-top" title="{% trans "Go to last page" %}">
-          {% trans "Oldest" %}
-        </a>
-      </li>
-      {% if name_changes.next_page_number < name_changes.paginator.num_pages %}
-      <li class="pull-right">
-        <a href="{% url 'misago:user_name_history' user_slug=profile.slug user_id=profile.pk page=name_changes.next_page_number %}" class="tooltip-top" title="{% trans "Go to next page" %}">
-          {% trans "Older" %}
-        </a>
-      </li>
-      {% endif %}
-    {% endif %}
-    {% if name_changes.has_next %}
-    <li class="page text-muted">
-      {% blocktrans trimmed count left=items_left %}
-      There is {{ left }} more changes
-      {% plural %}
-      There are {{ left }} more changes
-      {% endblocktrans %}
-    </li>
-    {% endif %}
-  </ul>
-  {% endif %}
+  {% pagination name_changes "misago/profile/pagination.html" 'misago:user_name_history' user_slug=profile.slug user_id=profile.pk %}
 {% else %}
 {% else %}
 <p class="lead">
 <p class="lead">
   {% if is_authenticated_user %}
   {% if is_authenticated_user %}

+ 33 - 0
misago/templates/misago/profile/pagination.html

@@ -0,0 +1,33 @@
+{% load i18n %}
+{% if paginator.num_pages > 1 %}
+<ul class="pager pager-wide">
+  {% if page.has_previous %}
+    <li class="pull-left">
+      <a href="{% url link_name user_slug=user_slug user_id=user_id %}" class="tooltip-top" title="{% trans "Go to first page" %}">
+        {% trans "Start" %}
+      </a>
+    </li>
+    {% if page.number > 2 %}
+    <li class="pull-left">
+      <a href="{% url link_name user_slug=user_slug user_id=user_id page=page.previous_page_number %}" class="tooltip-top" title="{% trans "Go to previous page" %}">
+        {% trans "Previous" %}
+      </a>
+    </li>
+    {% endif %}
+  {% endif %}
+  {% if page.has_next %}
+    <li class="pull-right">
+      <a href="{% url link_name user_slug=user_slug user_id=user_id page=page.paginator.num_pages %}" class="tooltip-top" title="{% trans "Go to last page" %}">
+        {% trans "Last" %}
+      </a>
+    </li>
+    {% if page.next_page_number < page.paginator.num_pages %}
+    <li class="pull-right">
+      <a href="{% url link_name user_slug=user_slug user_id=user_id page=page.next_page_number %}" class="tooltip-top" title="{% trans "Go to next page" %}">
+        {% trans "Next" %}
+      </a>
+    </li>
+    {% endif %}
+  {% endif %}
+</ul>
+{% endif %}

+ 2 - 43
misago/templates/misago/profile/warnings.html

@@ -1,5 +1,5 @@
 {% extends "misago/profile/base.html" %}
 {% extends "misago/profile/base.html" %}
-{% load i18n misago_avatars misago_capture %}
+{% load i18n misago_avatars misago_capture misago_pagination %}
 
 
 
 
 {% block page %}
 {% block page %}
@@ -151,48 +151,7 @@
     </div>
     </div>
     {% endfor %}
     {% endfor %}
   </div>
   </div>
-
-  {% if warnings.paginator.num_pages > 1 %}
-  <ul class="pager pager-wide">
-    {% if warnings.has_previous %}
-      <li class="pull-left">
-        <a href="{% url 'misago:user_warnings' user_slug=profile.slug user_id=profile.pk %}" class="tooltip-top" title="{% trans "Go to first page" %}">
-          {% trans "Latest" %}
-        </a>
-      </li>
-      {% if warnings.number > 2 %}
-      <li class="pull-left">
-        <a href="{% url 'misago:user_warnings' user_slug=profile.slug user_id=profile.pk page=warnings.previous_page_number %}" class="tooltip-top" title="{% trans "Go to previous page" %}">
-          {% trans "Later" %}
-        </a>
-      </li>
-      {% endif %}
-    {% endif %}
-    {% if warnings.has_next %}
-      <li class="pull-right">
-        <a href="{% url 'misago:user_warnings' user_slug=profile.slug user_id=profile.pk page=warnings.paginator.num_pages %}" class="tooltip-top" title="{% trans "Go to last page" %}">
-          {% trans "Oldest" %}
-        </a>
-      </li>
-      {% if warnings.next_page_number < warnings.paginator.num_pages %}
-      <li class="pull-right">
-        <a href="{% url 'misago:user_warnings' user_slug=profile.slug user_id=profile.pk page=warnings.next_page_number %}" class="tooltip-top" title="{% trans "Go to next page" %}">
-          {% trans "Older" %}
-        </a>
-      </li>
-      {% endif %}
-    {% endif %}
-    {% if warnings.has_next %}
-    <li class="page text-muted">
-      {% blocktrans trimmed count left=items_left %}
-      There is {{ left }} more warning
-      {% plural %}
-      There are {{ left }} more warnings
-      {% endblocktrans %}
-    </li>
-    {% endif %}
-  </ul>
-  {% endif %}
+  {% pagination warnings "misago/profile/pagination.html" 'misago:user_warnings' user_slug=profile.slug user_id=profile.pk %}
 {% else %}
 {% else %}
 <p class="lead">
 <p class="lead">
   {% if is_authenticated_user %}
   {% if is_authenticated_user %}