public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/templates/, gpackages/apps/generic/templatetags/
@ 2012-06-30 21:02 Slava Bacherikov
  0 siblings, 0 replies; 2+ messages in thread
From: Slava Bacherikov @ 2012-06-30 21:02 UTC (permalink / raw
  To: gentoo-commits

commit:     41e97d54fa8be7927c6daefd0acc5f42d23c7420
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 30 19:24:04 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 30 19:24:04 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=41e97d54

Add set optional prev and next

---
 gpackages/apps/generic/templatetags/paginator.py |    5 +++--
 gpackages/templates/paginator.html               |    4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/gpackages/apps/generic/templatetags/paginator.py b/gpackages/apps/generic/templatetags/paginator.py
index 109154b..c856f9c 100644
--- a/gpackages/apps/generic/templatetags/paginator.py
+++ b/gpackages/apps/generic/templatetags/paginator.py
@@ -58,7 +58,7 @@ def get_r_range(m_end, num_pages, num):
     return r_start, num_pages, r_gap
 
 @register.inclusion_tag('paginator.html')
-def paginator(page, num_middle, num_first, all_num = 0):
+def paginator(page, num_middle, num_first, n_a_p = True, all_num = 0):
     paginator = page.paginator
     num_pages = paginator.num_pages
     if all_num >= num_pages:
@@ -80,4 +80,5 @@ def paginator(page, num_middle, num_first, all_num = 0):
             'first_pages': first,
             'last_pages': last,
             'left_gap': l_gap,
-            'right_gap': r_gap}
+            'right_gap': r_gap,
+            'next_and_prev': bool(n_a_p)}

diff --git a/gpackages/templates/paginator.html b/gpackages/templates/paginator.html
index 8d8e309..74a5956 100644
--- a/gpackages/templates/paginator.html
+++ b/gpackages/templates/paginator.html
@@ -2,7 +2,7 @@
 {% if is_paginated %}
 <div class="pagination pagination-centered" id="paginator">
     <ul>
-        {% if page_obj.has_previous %}
+        {% if page_obj.has_previous and next_and_prev %}
         <li>
             <a href="?page={{ page_obj.previous_page_number }}">&larr; Prev</a>
         </li>
@@ -22,7 +22,7 @@
         {% for page in last_pages %}
         <li class="{{ page.active }}"><a href="{{ page.link }}">{{ page.num }}</a></li>
         {% endfor %}
-        {% if page_obj.has_next %}
+        {% if page_obj.has_next and next_and_prev %}
         <li>
             <a href="?page={{ page_obj.next_page_number }}">Next &rarr;</a>
         </li>



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/templates/, gpackages/apps/generic/templatetags/
@ 2012-06-30 21:02 Slava Bacherikov
  0 siblings, 0 replies; 2+ messages in thread
From: Slava Bacherikov @ 2012-06-30 21:02 UTC (permalink / raw
  To: gentoo-commits

commit:     df8d133bba12d578af64c5e3f97d39f972d11424
Author:     Slava Bacherikov <slava <AT> bacher09 <DOT> org>
AuthorDate: Sat Jun 30 13:42:25 2012 +0000
Commit:     Slava Bacherikov <slava <AT> bacherikov <DOT> org <DOT> ua>
CommitDate: Sat Jun 30 13:42:25 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-packages.git;a=commit;h=df8d133b

Add more cool paginator

---
 gpackages/apps/generic/templatetags/paginator.py |   83 ++++++++++++++++++++++
 gpackages/templates/ebuilds.html                 |    3 +-
 gpackages/templates/maintainers.html             |    5 +-
 gpackages/templates/packages.html                |    3 +-
 gpackages/templates/paginator.html               |   18 ++++-
 5 files changed, 106 insertions(+), 6 deletions(-)

diff --git a/gpackages/apps/generic/templatetags/paginator.py b/gpackages/apps/generic/templatetags/paginator.py
new file mode 100644
index 0000000..109154b
--- /dev/null
+++ b/gpackages/apps/generic/templatetags/paginator.py
@@ -0,0 +1,83 @@
+from django import template
+register = template.Library()
+
+
+class MyPage(object):
+    __slots__ = ('num', 'is_active')
+
+    def __init__(self, num, current):
+        self.num = num
+        if num == current:
+            self.is_active = True
+        else:
+            self.is_active = False
+
+    def active(self):
+        return 'active' if self.is_active else ''
+
+    def link(self):
+        return '?page=%s' % self.num
+
+def get_middle_range(current, page_num, num):
+    start = (current - num) if current > num else 1
+    end = (current + num) 
+    if end > page_num:
+        end = page_num
+
+    return start, end
+
+def get_pages_in_range(start, end, current):
+    return (MyPage(n, current) for n in range(start, end+1))
+
+def get_l_ragne(m_start, num):
+    if m_start <= 1:
+        return 1, 0, False
+
+    l_end = num
+    l_gap = True
+    if l_end >= m_start:
+        l_end = m_start - 1
+
+    if l_end + 1 >= m_start:
+        l_gap = False
+
+    return 1, l_end, l_gap
+
+def get_r_range(m_end, num_pages, num):
+    if m_end >= num_pages:
+        return num_pages, 0, False
+
+    r_start = num_pages - num + 1
+    r_gap = True
+    if r_start <= m_end:
+        r_start = m_end + 1
+
+    if r_start -1 <= m_end:
+        r_gap = False
+
+    return r_start, num_pages, r_gap
+
+@register.inclusion_tag('paginator.html')
+def paginator(page, num_middle, num_first, all_num = 0):
+    paginator = page.paginator
+    num_pages = paginator.num_pages
+    if all_num >= num_pages:
+        m_start, m_end = 1, num_pages
+        first, last = (), ()
+        l_gap, r_gap = False, False
+    else:
+        m_start, m_end = get_middle_range(page.number, num_pages, num_middle)
+        l_start, l_end, l_gap = get_l_ragne(m_start, num_first)
+        r_start, r_end, r_gap = get_r_range(m_end, num_pages, num_first)
+        first = get_pages_in_range(l_start, l_end, page.number)
+        last = get_pages_in_range(r_start, r_end, page.number)
+    middle = get_pages_in_range(m_start, m_end, page.number)
+
+    return {'page_obj': page,
+            'is_paginated': bool(page),
+            'paginator': paginator,
+            'middle_pages': middle,
+            'first_pages': first,
+            'last_pages': last,
+            'left_gap': l_gap,
+            'right_gap': r_gap}

diff --git a/gpackages/templates/ebuilds.html b/gpackages/templates/ebuilds.html
index aa28c09..3995554 100644
--- a/gpackages/templates/ebuilds.html
+++ b/gpackages/templates/ebuilds.html
@@ -1,9 +1,10 @@
 {% extends "base.html" %}
 {% load packages %}
+{% load paginator %}
 
 {% block content %}
 {% for ebuild in ebuilds %}
     {% include 'ebuild_object.html' %}
 {% endfor %}
-{% include 'paginator.html' %}
+{% paginator page_obj 3 2 %}
 {% endblock content %}

diff --git a/gpackages/templates/maintainers.html b/gpackages/templates/maintainers.html
index 9c01184..6e77b76 100644
--- a/gpackages/templates/maintainers.html
+++ b/gpackages/templates/maintainers.html
@@ -1,6 +1,7 @@
 {% extends "base.html" %}
-{% load packages %}
 {% load url from future %}
+{% load packages %}
+{% load paginator %}
 
 {% block content %}
 
@@ -25,5 +26,5 @@
         {% endfor %}
     </tbody>
 </table>
-{% include 'paginator.html' %}
+{% paginator page_obj 3 2 %}
 {% endblock content %}

diff --git a/gpackages/templates/packages.html b/gpackages/templates/packages.html
index f7ac01a..f66dca5 100644
--- a/gpackages/templates/packages.html
+++ b/gpackages/templates/packages.html
@@ -1,10 +1,11 @@
 {% extends "base.html" %}
 {% load url from future %}
 {% load packages %}
+{% load paginator %}
 
 {% block content %}
 {% for package in packages %}
     {% include 'package_object.html' %}
 {% endfor %}
-{% include 'paginator.html' %}
+{% paginator page_obj 3 2 %}
 {% endblock content %}

diff --git a/gpackages/templates/paginator.html b/gpackages/templates/paginator.html
index b957cf9..61aa0c3 100644
--- a/gpackages/templates/paginator.html
+++ b/gpackages/templates/paginator.html
@@ -1,12 +1,26 @@
 {% if is_paginated %}
-<div class="pagination pagination-centered">
+<div class="pagination pagination-centered" id="paginator">
     <ul>
         {% if page_obj.has_previous %}
         <li>
             <a href="?page={{ page_obj.previous_page_number }}">&larr; Prev</a>
         </li>
         {% endif %}
-        <li class="active"> <a href="#">{{ page_obj.number }}</a></li>
+        {% for page in first_pages %}
+        <li class="{{ page.active }}"><a href="{{ page.link }}">{{ page.num }}</a></li>
+        {% endfor %}
+        {% if left_gap %}
+        <li class="disabled"><a href="#paginator">...</a></li>
+        {% endif %}
+        {% for page in middle_pages %}
+        <li class="{{ page.active }}"><a href="{{ page.link }}">{{ page.num }}</a></li>
+        {% endfor %}
+        {% if right_gap %}
+        <li class="disabled"><a href="#paginator">...</a></li>
+        {% endif %}
+        {% for page in last_pages %}
+        <li class="{{ page.active }}"><a href="{{ page.link }}">{{ page.num }}</a></li>
+        {% endfor %}
         {% if page_obj.has_next %}
         <li>
             <a href="?page={{ page_obj.next_page_number }}">Next &rarr;</a>



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-06-30 21:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-30 21:02 [gentoo-commits] proj/gentoo-packages:master commit in: gpackages/templates/, gpackages/apps/generic/templatetags/ Slava Bacherikov
  -- strict thread matches above, loose matches on Subject: below --
2012-06-30 21:02 Slava Bacherikov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox