Skip to content
This repository was archived by the owner on Apr 17, 2021. It is now read-only.

Commit 1744207

Browse files
committed
Merge pull request #25 from Gagaro/master
Adding a parameter to set url anchor
2 parents 9754a6f + 497801e commit 1744207

File tree

3 files changed

+20
-10
lines changed

3 files changed

+20
-10
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,8 @@ simply provides a Previous and Next link.
194194
and thus it is expected that there is a named "page" argument in the
195195
URL referenced by **url_view_name**. This allows us to use pretty
196196
pagination URLs such as "/page/1"
197-
197+
- **url_anchor** - The anchor to use in URLs. Defaults to None
198+
198199
**Usage**
199200

200201
Usage is basically the same as for bootstrap_paginate. The simplest usage is:

README.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ url_extra_kwargs
203203
there is a named "page" argument in the URL referenced by **url_view_name**. This allows
204204
us to use pretty pagination URLs such as "/page/1"
205205

206+
url_anchor
207+
The anchor to use in URLs. Defaults to None.
206208

207209
**Usage**
208210

bootstrap_pagination/templatetags/bootstrap_pagination.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def strToBool(val):
1717
return val.lower() == "true"
1818

1919

20-
def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params):
20+
def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor):
2121
"""
2222
Helper function to return a valid URL string given the template tag parameters
2323
"""
@@ -44,6 +44,9 @@ def get_page_url(page_num, current_app, url_view_name, url_extra_args, url_extra
4444
if (len(url_get_params) > 0):
4545
url += '?' + url_get_params.urlencode()
4646

47+
if (url_anchor is not None):
48+
url += '#' + url_anchor
49+
4750
return url
4851

4952

@@ -78,14 +81,15 @@ def render(self, context):
7881
url_extra_args = kwargs.get("url_extra_args", [])
7982
url_extra_kwargs = kwargs.get("url_extra_kwargs", {})
8083
url_get_params = kwargs.get("url_get_params", context['request'].GET)
84+
url_anchor = kwargs.get("url_anchor", None)
8185

8286
previous_page_url = None
8387
if page.has_previous():
84-
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
88+
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
8589

8690
next_page_url = None
8791
if page.has_next():
88-
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
92+
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
8993

9094
return get_template("bootstrap_pagination/pager.html").render(
9195
Context({
@@ -146,6 +150,7 @@ def render(self, context):
146150
url_extra_args = kwargs.get("url_extra_args", [])
147151
url_extra_kwargs = kwargs.get("url_extra_kwargs", {})
148152
url_get_params = kwargs.get("url_get_params", context['request'].GET)
153+
url_anchor = kwargs.get("url_anchor", None)
149154

150155
# Generage our viewable page range
151156
page_count = page.paginator.num_pages
@@ -176,24 +181,24 @@ def render(self, context):
176181
# Generate our URLs (page range + special urls for first, previous, next, and last)
177182
page_urls = []
178183
for curpage in page_range:
179-
url = get_page_url(curpage, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
184+
url = get_page_url(curpage, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
180185
page_urls.append((curpage, url))
181186

182187
first_page_url = None
183188
if current_page >= 1:
184-
first_page_url = get_page_url(1, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
189+
first_page_url = get_page_url(1, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
185190

186191
last_page_url = None
187192
if current_page <= page_count:
188-
last_page_url = get_page_url(page_count, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
193+
last_page_url = get_page_url(page_count, context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
189194

190195
previous_page_url = None
191196
if page.has_previous():
192-
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
197+
previous_page_url = get_page_url(page.previous_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
193198

194199
next_page_url = None
195200
if page.has_next():
196-
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params)
201+
next_page_url = get_page_url(page.next_page_number(), context.current_app, url_view_name, url_extra_args, url_extra_kwargs, url_param_name, url_get_params, url_anchor)
197202

198203
return get_template("bootstrap_pagination/pagination.html").render(
199204
Context({
@@ -278,7 +283,7 @@ def bootstrap_paginate(parser, token):
278283
number will be overwritten. Use this to preserve
279284
filters.
280285
281-
286+
url_anchor - The anchor to use in URLs. Defaults to None.
282287
"""
283288
bits = token.split_contents()
284289
if len(bits) < 2:
@@ -345,6 +350,8 @@ def bootstrap_pager(parser, token):
345350
url_get_params - The other get parameters to pass, only the page
346351
number will be overwritten. Use this to preserve
347352
filters.
353+
354+
url_anchor - The anchor to use in URLs. Defaults to None.
348355
"""
349356
bits = token.split_contents()
350357
if len(bits) < 2:

0 commit comments

Comments
 (0)