%@LANGUAGE="VBSCRIPT"%>
<%
pnumber_records = rsGlobals.Fields.Item("number_records").Value
%>
<%
set rsArticle = Server.CreateObject("ADODB.Recordset")
rsArticle.ActiveConnection = articleConn_STRING
rsArticle.Source = "SELECT * FROM articles ORDER BY idarticle asc"
rsArticle.Open()
rsArticle_numRows = 0
if Err.number <> 0 then
response.redirect "message.asp?message="&Server.UrlEncode("Error in db List All Articles. Error: "&Err.Description)
end If
%>
<%
Dim Repeat1__numRows
Repeat1__numRows = pnumber_records
Dim Repeat1__index
Repeat1__index = 0
rsArticle_numRows = rsArticle_numRows + Repeat1__numRows
%>
<%
rsArticle_total = rsArticle.RecordCount
If (rsArticle_numRows < 0) Then
rsArticle_numRows = rsArticle_total
Elseif (rsArticle_numRows = 0) Then
rsArticle_numRows = 1
End If
rsArticle_first = 1
rsArticle_last = rsArticle_first + rsArticle_numRows - 1
If (rsArticle_total <> -1) Then
If (rsArticle_first > rsArticle_total) Then rsArticle_first = rsArticle_total
If (rsArticle_last > rsArticle_total) Then rsArticle_last = rsArticle_total
If (rsArticle_numRows > rsArticle_total) Then rsArticle_numRows = rsArticle_total
End If
%>
<%
If (rsArticle_total = -1) Then
rsArticle_total=0
While (Not rsArticle.EOF)
rsArticle_total = rsArticle_total + 1
rsArticle.MoveNext
Wend
If (rsArticle.CursorType > 0) Then
rsArticle.MoveFirst
Else
rsArticle.Requery
End If
If (rsArticle_numRows < 0 Or rsArticle_numRows > rsArticle_total) Then
rsArticle_numRows = rsArticle_total
End If
rsArticle_first = 1
rsArticle_last = rsArticle_first + rsArticle_numRows - 1
If (rsArticle_first > rsArticle_total) Then rsArticle_first = rsArticle_total
If (rsArticle_last > rsArticle_total) Then rsArticle_last = rsArticle_total
End If
%>
<%
Set rs = rsArticle
rsCount = rsArticle_total
size = rsArticle_numRows
uniqueCol = ""
paramName = ""
offset = 0
atTotal = false
paramIsDefined = false
If (paramName <> "") Then
paramIsDefined = (Request.QueryString(paramName) <> "")
End If
%>
<%
if (Not paramIsDefined And rsCount <> 0) then
r = Request.QueryString("index")
If r = "" Then r = Request.QueryString("offset")
If r <> "" Then offset = Int(r)
If (rsCount <> -1) Then
If (offset >= rsCount Or offset = -1) Then
If ((rsCount Mod size) > 0) Then
offset = rsCount - (rsCount Mod size)
Else
offset = rsCount - size
End If
End If
End If
i = 0
While ((Not rs.EOF) And (i < offset Or offset = -1))
rs.MoveNext
i = i + 1
Wend
If (rs.EOF) Then offset = i
End If
%>
<%
If (rsCount = -1) Then
i = offset
While (Not rs.EOF And (size < 0 Or i < offset + size))
rs.MoveNext
i = i + 1
Wend
If (rs.EOF) Then
rsCount = i
If (size < 0 Or size > rsCount) Then size = rsCount
End If
If (rs.EOF And Not paramIsDefined) Then
If (offset > rsCount - size Or offset = -1) Then
If ((rsCount Mod size) > 0) Then
offset = rsCount - (rsCount Mod size)
Else
offset = rsCount - size
End If
End If
End If
If (rs.CursorType > 0) Then
rs.MoveFirst
Else
rs.Requery
End If
i = 0
While (Not rs.EOF And i < offset)
rs.MoveNext
i = i + 1
Wend
End If
%>
<%
rsArticle_first = offset + 1
rsArticle_last = offset + size
If (rsCount <> -1) Then
If (rsArticle_first > rsCount) Then rsArticle_first = rsCount
If (rsArticle_last > rsCount) Then rsArticle_last = rsCount
End If
atTotal = (rsCount <> -1 And offset + size >= rsCount)
%>
<%
removeList = "&index="
If (paramName <> "") Then removeList = removeList & "&" & paramName & "="
keepURL="":keepForm="":keepBoth="":keepNone=""
For Each Item In Request.QueryString
NextItem = "&" & Item & "="
If (InStr(1,removeList,NextItem,1) = 0) Then
keepURL = keepURL & NextItem & Server.URLencode(Request.QueryString(Item))
End If
Next
For Each Item In Request.Form
NextItem = "&" & Item & "="
If (InStr(1,removeList,NextItem,1) = 0) Then
keepForm = keepForm & NextItem & Server.URLencode(Request.Form(Item))
End If
Next
keepBoth = keepURL & keepForm
if (keepBoth <> "") Then keepBoth = Right(keepBoth, Len(keepBoth) - 1)
if (keepURL <> "") Then keepURL = Right(keepURL, Len(keepURL) - 1)
if (keepForm <> "") Then keepForm = Right(keepForm, Len(keepForm) - 1)
Function joinChar(firstItem)
If (firstItem <> "") Then
joinChar = "&"
Else
joinChar = ""
End If
End Function
%>
<%
keepMove = keepBoth
moveParam = "index"
If (size > 0) Then
moveParam = "offset"
If (keepMove <> "") Then
params = Split(keepMove, "&")
keepMove = ""
For i = 0 To UBound(params)
nextItem = Left(params(i), InStr(params(i),"=") - 1)
If (StrComp(nextItem,moveParam,1) <> 0) Then
keepMove = keepMove & "&" & params(i)
End If
Next
If (keepMove <> "") Then
keepMove = Right(keepMove, Len(keepMove) - 1)
End If
End If
End If
If (keepMove <> "") Then keepMove = keepMove & "&"
urlStr = Request.ServerVariables("URL") & "?" & keepMove & moveParam & "="
moveFirst = urlStr & "0"
moveLast = urlStr & "-1"
moveNext = urlStr & Cstr(offset + size)
prev = offset - size
If (prev < 0) Then prev = 0
movePrev = urlStr & Cstr(prev)
%>
<%
Dim rsArticle_currentPage
Dim rsArticle_totalPages
If size > 0 Then
rsArticle_currentPage = Round(rsArticle_last/size + .4999)
rsArticle_totalPages = Round(rsArticle_total/size + .4999)
End If
%>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsArticle.MoveNext()
Wend
%>
<%
If offset > size * 10 Or offset/size - int(10/2) > 0 Then
Previous = offset - 10 * size
If Previous < 0 then Previous = 0
Response.Write("...")
Response.Write("[Previous " & "10" & " pages] ...")
End If
%>
<%
MiddlePages = 10
startLink = offset/size - int(middlePages/2)
endLink = offset/size + int(middlePages/2)
If MiddlePages/2 <> int(MiddlePages/2) Then endLink = endLink + 1
If startLink < 0 then
startLink = 0
endLink = middlePages
End If
LimitCounter = 0
For i = 1 to rsArticle_total Step size
LimitCounter = LimitCounter + 1
LimitPageEndCount = i + size - 1
if LimitPageEndCount > rsArticle_total Then LimitPageEndCount = rsArticle_total
If LimitCounter > startLink AND LimitCounter <= endLink Then
if i <> offset + 1 then
Response.Write("")
Response.Write(LimitCounter & "")
else
Response.Write("" & LimitCounter & "")
End if
if(LimitPageEndCount <> rsArticle_total AND endLink <> LimitCounter) then Response.Write(" | ")
end if
next
%>
<%
If offset < rsArticle_total - size * 10 Then
Response.Write("...")
Response.Write("[Next " & "10" & " of " & rsArticle_totalPages & " pages]...")
End If
%>