%
'digg style pagination script in asp.. written by Moazam... http://www.moazam.com/2007/03/30/asp-digg-style-pagination-script/
function getPaginationString(page, totalitems, limit, adjacents, targetpage)
'defaults
if not isnumeric(adjacents) then adjacents = 1 end if
if not isnumeric(limit) then limit = 15 end if
if not isnumeric(page) then page = 1 end if
if targetpage = "" then targetpage = "/" end if
margin = ""
padding=""
'other vars
prev = page - 1 'previous page is page - 1
nextPage = page + 1 'nextPage page is page + 1
lastpage = Ceil(totalitems , limit) 'lastpage is = total items / items per page, rounded up.
lpm1 = lastpage - 1 'last page minus 1
' Now we apply our rules and draw the pagination object.
' We're actually saving the code to a variable in case we want to draw it more than once.
pagination = ""
if lastpage > 1 then
pagination = pagination "div class=""pagination"""
if margin > "" OR padding > "" then
pagination = pagination " style="""
if margin > "" then
pagination = pagination "margin: margin"
end if
if padding > "" then
pagination = pagination "padding: padding"
end if
pagination = pagination """"
end if
pagination = pagination ">"
'previous button
if page > 1 then
pagination = pagination "a href="""targetpage"page="prev""">Prev/a>"
else
pagination = pagination "span class=""disabled"">Prev/span>"
end if
'pages
if lastpage 7 + (adjacents * 2) then 'not enough pages to bother breaking it up
for counter = 1 to lastpage
if counter = page then
pagination = pagination "span class=""current"">"counter"/span>"
else
pagination = pagination "a href="""targetpage"""page="counter""">"counter"/a>"
end if
next
elseif lastpage >= 7 + (adjacents * 2) then 'enough pages to hide some
'close to beginning only hide later pages
if page 1 + (adjacents * 3) then
for counter = 1 to (4 + (adjacents * 2))-1
if counter = page then
pagination = pagination "span class=""current"">"counter"/span>"
else
pagination = pagination "a href="""targetpage"page="counter""">"counter"/a>"
end if
next
pagination = pagination "..."
pagination = pagination "a href="""targetpage"""page="lpm1""">"lpm1"/a>"
pagination = pagination "a href="""targetpage"""page="lastpage""">"lastpage"/a>"
'in middle hide some front and some back
elseif lastpage - (adjacents * 2) > page AND page > (adjacents * 2) then
pagination = pagination "a href="""targetpage"page=1"">1/a>"
pagination = pagination "a href="""targetpage"page=2"">2/a>"
pagination = pagination "..."
for counter = (page - adjacents) to (page + adjacents)
if counter = page then
pagination = pagination "span class=""current"">"counter"/span>"
else
pagination = pagination "a href="""targetpage"page="counter""">"counter"/a>"
end if
next
pagination = pagination "..."
pagination = pagination "a href="""targetpage"page="lpm1""">"lpm1"/a>"
pagination = pagination "a href="""targetpage"page="lastpage""">"lastpage"/a>"
'close to end only hide early pages
else
pagination = pagination "a href="""targetpage"page=1"">1/a>"
pagination = pagination "a href="""targetpage"page=2"">2/a>"
pagination = pagination "..."
for counter = (lastpage - (1 + (adjacents * 3))) To lastpage
if counter = page then
pagination = pagination "span class=""current"">"counter"/span>"
else
pagination = pagination "a href="""targetpage"page="counter""">"counter"/a>"
end if
next
end if
end if
'nextPage button
if page counter - 1 then
pagination = pagination "a href="""targetpage"page="nextPage""">Next/a>"
else
pagination = pagination "span class=""disabled"">Next/span>"
end if
pagination = pagination "/div>" vbnewline
end if
getPaginationString = pagination
end function
function Ceil( dividend, divider)
if (dividend mod divider) = 0 Then
Ceil = dividend / divider
ELSE
Ceil = Int(dividend / divider) + 1
End if
End function
'test script code
page = 1
if request("page") > "" then
page=cint(request("page"))
end if
ps = getPaginationString(page, 1500, 15, 2, "pagination.asp?foo=bar")
Response.Write("br />br />br />br />br />br />br />br />"ps)
%>
pageno=cint(currentPage)
if cint(pageno)>1 then
lb=lb"a href=/list/list_"theid"_1.htm title=""首頁(yè)"">首頁(yè)/a>"
else
lb=lb"a href='#'>首頁(yè)/a>"
end if
if cint(pageno)>1 and cint(pageno) then
lb=lb"a href=/list/list_"theid"_"pageno-1".htm title=""上頁(yè)"">上頁(yè)/a>"
else
lb=lb"a href='#'>上頁(yè)/a>"
end if
ps=cint(pageno)-2
if ps1 then
ps=1
end if
pe=clng(pageno)+5
if pe>mpage then pe=mpage
for i=ps to pe
if i=pageno then
lb=lb"strong>"i"/strong>"
else
lb=lb"a href=""/list/list_"theid"_"i".htm"">"i"/a>"
end if
next
if cint(pageno)mpage and mpage>1 then
lb=lb"a href=/list/list_"theid"_"pageno+1".htm title=""下頁(yè)"">下頁(yè)/a>"
else
lb=lb"a href='#'>下頁(yè)/a>"
end if
if cint(pageno) mpage then
lb=lb"a href=/list/list_"theid"_"mpage".htm title=""末頁(yè)"">末頁(yè)/a>"
end if