* [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 }}">← 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 →</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 }}">← 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 →</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