|
Class StateManager
Private objDictionary ' ##################################################
' ### Methods
' ###
' ### Initialize
Private Sub Class_Initialize() Set objDictionary = Server.CreateObject("Scripting.Dictionary") Prefix = "" End Sub ' ### Terminate
Private Sub Class_Terminate() Set objDictionary = Nothing End Sub ' ### Add
Public Sub Add(ByVal strKey, ByVal strItem) objDictionary.Add strKey, strItem End Sub ' ### Remove
Public Sub Remove(ByVal strKey) objDictionary.Remove strKey End Sub ' ### GetQueryString
Public Function GetQueryString(ByVal strBaseUrl) Dim aKeys Dim aItems Dim intLB Dim intUB Dim i Dim strQueryString strQueryString = strBaseUrl aKeys = objDictionary.Keys aItems = objDictionary.Items intLB = LBound(aKeys) intUB = UBound(aKeys) For i = intLB To intUB strQueryString = AddToQueryString(strQueryString, Prefix & aKeys(i), aItems(i)) Next GetQueryString = strQueryString End Function ' ### GetHiddenField
Public Function GetHiddenField() Dim aKeys Dim aItems Dim intLB Dim intUB Dim i Dim strHidden strHidden = "" aKeys = objDictionary.Keys aItems = objDictionary.Items intLB = LBound(aKeys) intUB = UBound(aKeys) For i = intLB To intUB strHidden = strHidden & HTML_CreateHiddenField(Prefix & aKeys(i), aItems(i)) Next GetHiddenField = strHidden End Function
' ### AppendFromQueryString
Public Sub AppendFromQueryString(ByVal varQueryString) Dim item, i Dim aItems, aKeyItemPair Dim intLB Dim intUB If IsObject(varQueryString) Then For Each item In varQueryString If IsPersistKey(item) Then objDictionary.Add StripPrefix(item), varQueryString(item) Next Else aItems = Split(varQueryString, "&") intLB = LBound(aItems) intUB = UBound(aItems) If Left(aItems(intLB), 1) = "?" Then aItems(intLB) = Mid(aItems(intLB), 2) For i = intLB To intUB aKeyItemPair = Split(aItems(i), "=") If IsPersistKey(aKeyItemPair(0)) Then objDictionary.Add StripPrefix(aKeyItemPair(0)), aKeyItemPair(1) Next End If End Sub
' ### CreateFromQueryString
Public Sub CreateFromQueryString(ByVal varQueryString) Dim item, i Dim aItems, aKeyItemPair Dim intLB Dim intUB objDictionary.RemoveAll AppendFromQueryString(varQueryString) End Sub ' ##################################################
' ### Properties
' ###
' ### Count
Public Property Get Count() Count = objDictionary.Count End Property ' ### Item
Public Default Property Get Item(ByVal strKey) Item = objDictionary.Item(strKey) End Property Public Property Let Item(ByVal strKey, ByVal strItem) objDictionary.Item(strKey) = strItem End Property ' ### Prefix
Public Prefix ' ##################################################
' ### Private
' ###
' AddToQueryString
Private Function AddToQueryString(ByVal strURL, ByVal strKey, ByVal strValue) Dim strConChar Dim strTemp Dim intPos intPos = CInt(InStr(strURL, "?")) If intPos > 0 Then strConChar = "&" Else strConChar = "?" End If strTemp = strURL & strConChar & strKey & "=" & Server.URLEncode(strValue) AddToQueryString = strTemp End Function ' ### IsPersistKey
Private Function IsPersistKey(ByVal strKey) Dim bTemp If Left(strKey, Len(Prefix)) = Prefix Then bTemp = True Else bTemp = False End If IsPersistKey = bTemp End Function ' ### StripPrefix
Private Function StripPrefix(ByVal strKey) StripPrefix = Mid(strKey, 1 + Len(Prefix)) End Function
' ### CreateHiddenField
Private Function HTML_CreateHiddenField(ByVal strName, ByVal strValue) HTML_CreateHiddenField = "<input type=""hidden"" name=""" & strName & """ value = """ & Server.HTMLEncode(strValue) & """/>" End Function End Class
|