Mercurial > hg > savane-forge
changeset 320:5891fb49de1f
Simpler implementation for pagination short range + fix some issues when browsing the last pages
author | Sylvain Beucler <beuc@beuc.net> |
---|---|
date | Thu, 19 Aug 2010 00:20:00 +0200 |
parents | 93a8358aca79 |
children | 469bdacd96b0 |
files | savane/svmain/templatetags/range.py |
diffstat | 1 files changed, 20 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/savane/svmain/templatetags/range.py +++ b/savane/svmain/templatetags/range.py @@ -34,18 +34,27 @@ short_page_range = [] orig_last = page_range[-1] - middle_start = max(1, cur_page - ADJACENT) - middle_end = min(middle_start + ADJACENT*2, page_range[-1]) - if middle_start < (1 + FAR + 1): - middle_start = 1 - if middle_end > (orig_last - FAR - 1): - middle_end = orig_last + middle = cur_page + if middle - ADJACENT < 1: + middle = 1 + ADJACENT + if middle + ADJACENT > orig_last: + middle = orig_last - ADJACENT + + middle_start = max(middle - ADJACENT, 1) + middle_end = min(middle + ADJACENT, orig_last) + short_page_range = range(middle_start, middle_end+1) - - if middle_start > 1+FAR: - short_page_range = range(1, FAR+1) + ['...'] + short_page_range - if middle_end < orig_last-FAR: - short_page_range = short_page_range + ['...'] + range(orig_last-FAR+1, orig_last+1) + if middle_start > 1: + if middle_start > 1+FAR: + short_page_range = range(1, FAR+1) + ['...'] + short_page_range + else: + short_page_range = range(1, middle_start) + short_page_range + + if middle_end < orig_last: + if middle_end < orig_last-FAR: + short_page_range = short_page_range + ['...'] + range(orig_last-FAR+1, orig_last+1) + else: + short_page_range = short_page_range + range(middle_end+1, orig_last+1) return short_page_range