<% '============================================================= '// '// Crumbs '// '// version: 0.2 '// last modified: 02-Sep-2004 09:24 by Sasha Vukovic '============================================================= %> <% Class Crumbs Private enumLevelName Private enumURL Private mNumberOfLevels Private mobjLevelMap Private marrLevelDetails() Public mCrumbMaxDepth Public mLinkSpace Public Property Let Spacing( nNumOfSpaces ) Dim i mLinkSpace = "" For i = 1 To nNumOfSpaces mLinkSpace = mLinkSpace & " " Next End Property Public Property Let CrumbMaxDepth( nCrumbMaxDepth ) mCrumbMaxDepth = nCrumbMaxDepth End Property '----------------------------------------------------------------------------------------------------------------- Public Sub AddLevel ( sLevelName, sURL, nLevelNumber ) Dim newArrayDim If (sLevelName = "") OR IsNull(sLevelName) Then Exit Sub ' Exit if level name is empty If NOT mobjLevelMap.Exists ( CStr(nLevelNumber) ) Then newArrayDim = UBound ( marrLevelDetails, 2 ) + 1 ReDim Preserve marrLevelDetails( 2, newArrayDim ) mobjLevelMap.Add CStr(nLevelNumber), CStr( newArrayDim - 1 ) End If marrLevelDetails( enumLevelName, CInt( mobjLevelMap.Item( CStr(nLevelNumber) ) ) ) = sLevelName marrLevelDetails( enumURL, mobjLevelMap.Item( CStr(nLevelNumber) ) ) = sURL Call SetNumberOfLevels ( nLevelNumber ) End Sub '----------------------------------------------------------------------------------------------------------------- Public Sub PrintCrumbs () Dim LevelNum For LevelNum = 0 To mNumberOfLevels Response.Write ""& marrLevelDetails( enumLevelName, LevelNum ) &""& mLinkSpace If (LevelNum <> mCrumbMaxDepth - 1) Then Response.Write "/"& mLinkSpace ' Render slash "/" only for folders, not last item Next End Sub '----------------------------------------------------------------------------------------------------------------- Private Sub SetNumberOfLevels ( nLevelNumber ) If nLevelNumber > mNumberOfLevels Then mNumberOfLevels = nLevelNumber End If End Sub '----------------------------------------------------------------------------------------------------------------- Private Sub Class_Initialize() '// Perform action on creation of object. e.g. Set myObj = New ThisClassName Set mobjLevelMap = CreateObject("Scripting.Dictionary") ReDim marrLevelDetails ( 2, 0 ) mCrumbMaxDepth = 0 ' Max depth crumb is suppose to go mNumberOfLevels = 0 ' Current number of levels (crumbs) mLinkSpace = "  " ' Number of spaces between crumb links enumLevelName = 0 ' Array enum enumURL = 1 ' Array enum End Sub '----------------------------------------------------------------------------------------------------------------- Private Sub Class_Terminate() '// Perform action on object disposal. e.g. Set myObj = Nothing Set mobjLevelMap = Nothing End Sub '----------------------------------------------------------------------------------------------------------------- End Class %>