Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

267 lines
7.3 KiB

<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<!-- #include file="directives.inc" -->
<!--#include file="iicache.str"-->
<!--#include file="iiaspstr.inc"-->
<%
' Copyright (c) 1998 Microsoft Corporation
'
' Module Name:
' iicache2.asp
' Abstract:
' Loads new nodes into the cached tree list.
' Author:
' Taylor Weiss (taylorw) 8-Oct-1998
' Revision History:
' 8-Oct-1998 taylorw created
'
' Query String:
'
' sname - ADsPath of the node in the tree being expanded. This may
' be a site node, in which case is does not contain the
' immediate parent of the nodes we want to cache.
'
' fspath - The file system path of the object. Since the folder may
' not exist in the metabase, we need this to enumerate
' physical directories.
'
On Error Resume Next
Const MD_PATH_NOT_FOUND = &H80070003
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Global Variables
'
Dim strRootADsPath, strRootFsPath
Dim objRoot, bRootExists
Dim bIsWeb
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Script setup
strRootADsPath = Request.QueryString("sname")
strRootFsPath = Request.QueryString("fspath")
' Get the ads container object that will be the parent of the new nodes.
set objRoot = GetObject( strRootADsPath )
if InStr( objRoot.Class, "Server" ) <> 0 then
strRootADsPath = strRootADsPath & "/ROOT"
set objRoot = GetObject( strRootADsPath )
end if
if err.Number = MD_PATH_NOT_FOUND then
bRootExists = False
err.Clear
else
' If we got some other error, or we get errors here then something
' really odd happened.
bRootExists = True
if strRootFsPath = "" then
strRootFsPath = objRoot.Path
end if
end if
if InStr( UCase(strRootADsPath), "W3SVC" ) <> 0 then
bIsWeb = True
else
bIsWeb = False
end if
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
var theList = top.title.nodeList;
var gVars = top.title.Global;
var intNewId = theList.length;
var intRootId = gVars.selId;
var intCurrentId = intNewId; // changes as we add items
<%
if err.Number = 0 then
' Mark the parent item as cached. Note: if we fail farther down stream
' we won't have any way to recache this node until the user refreshes.
%>
theList[intRootId].isCached = true;
theList[intRootId].open = true;
<%
if bRootExists then
addVirtualChildren()
end if
if bIsWeb then
addPhysicalChildren()
end if
' We are finished adding the new nodes, now we need to reorder the list.
%>
// intNewId = The index of the first item we added.
// intRootId = The index of the parent item
// intCurrentId = One past the index of the last item
// Reset the id's of old list items past the parent item to reflect
// their new positions once the list is sorted.
var intNumNewItems = intCurrentId - intNewId;
if( intNumNewItems > 0 )
{
for( var i = intRootId + 1; i < intNewId; i++ )
{
theList[i].id += intNumNewItems;
if( theList[i].parent > intRootId )
{
theList[i].parent += intNumNewItems;
}
}
}
theList[0].sortList();
theList[0].markTerms();
top.body.list.location.href="iisrvls.asp";
top.body.iisstatus.location="iistat.asp";
<%
end if
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Helper Functions
sub addVirtualChildren()
On Error Resume Next
dim objChildNode, strChildName, bIsApplication
for each objChildNode in objRoot
if InStr(UCase(objChildNode.Class), "VIRTUALDIR") <> 0 then
%>
theList[intCurrentId] = theList[intRootId].addNode(
new top.title.listObj( (intCurrentId - intNewId) + intRootId + 1,
"<%= sJSLiteral(objChildNode.Name) %>",
"<%= sJSLiteral(objChildNode.ADsPath) %>",
"vdir",
2 // state
)
);
theList[intCurrentId].fspath = "<%= sJSLiteral(objChildNode.Path) %>";
<%
if bIsWeb then
if isApplication(objChildNode) then
%>
theList[intCurrentId].icon = top.title.Global.imagedir + "app";
theList[intCurrentId].isApp = true;
<%
end if
end if
%>
intCurrentId++;
<%
end if
next
end sub
function isApplication( objWebNode )
' On Error Resume Next
dim bReturn, strAppRoot, strADsPath
bReturn = False
strAppRoot = UCase(objWebNode.AppRoot)
if strAppRoot <> "" then
' The AppRoot is inherited, if there is really an application
' defined at this node, the paths will point to the same node.
strADsPath = UCase(objWebNode.ADsPath)
strAppRoot = Mid(strAppRoot,Instr(strAppRoot,"W3SVC/")+1)
strADsPath = Mid(strADsPath,Instr(strADsPath,"W3SVC/")+1)
if strADsPath = strAppRoot then
bReturn = True
end if
end if
isApplication = bReturn
end function
sub addPhysicalChildren()
On Error Resume Next 'Needed if GetObject(objChildFolder) fails
dim objFileSystem, objChildFolder, objRootFolder, objChildNode
set objFileSystem = CreateObject("Scripting.FileSystemObject")
if objFileSystem.FolderExists( strRootFsPath ) then
set objRootFolder = objFileSystem.GetFolder( strRootFsPath )
for each objChildFolder in objRootFolder.SubFolders
'Check for existence of objChildFolder in metabase
Set objChildNode = GetObject(objRoot.ADsPath & "/" & objChildFolder.Name)
If err.Number <> 0 Then 'Is not a virtual dir in metabase
err.Clear
%>
theList[intCurrentId] = theList[intRootId].addNode(
new top.title.listObj( (intCurrentId - intNewId) + intRootId + 1,
"<%= sJSLiteral(objChildFolder.Name) %>",
"<%= sJSLiteral(strRootADsPath & "/" & objChildFolder.Name) %>",
"dir",
2 // state
)
);
theList[intCurrentId].fspath = "<%= sJSLiteral(objChildFolder.Path) %>";
intCurrentId++;
<%
Else
If InStr(UCase(objChildNode.Class), "WEBDIR") <> 0 Then 'Is a dir in metabase
%>
theList[intCurrentId] = theList[intRootId].addNode(
new top.title.listObj( (intCurrentId - intNewId) + intRootId + 1,
"<%= sJSLiteral(objChildFolder.Name) %>",
"<%= sJSLiteral(strRootADsPath & "/" & objChildFolder.Name) %>",
"dir",
2 // state
)
);
theList[intCurrentId].fspath = "<%= sJSLiteral(objChildFolder.Path) %>";
intCurrentId++;
<%
End If
End If
next
end if
end sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Report Errors
if err.Number <> 0 then
%>
// Dump some debugging information
alert("<%= L_CNCTERR_TEXT %> (<%= Hex(err.Number) %>): <%= err.Description%>");
document.write( "Client Variables for the selected node <P>");
document.write( "id = " + theList[intRootId].id + "<BR>");
document.write( "title = " + theList[intRootId].title + "<BR>");
document.write( "path = " + theList[intRootId].path + "<BR>");
document.write( "keytype = " + theList[intRootId].keytype + "<BR>");
document.write( "fspath = " + theList[intRootId].fspath + "<BR>");
document.write( "stype = " + theList[intRootId].stype + "<BR>");
document.write( "Server Variables<P>");
document.write( "strRootADsPath = " + "<%= strRootADsPath %>" + "<BR>");
//document.write( "strRootFsPath = " + "<%= strRootFsPath %>" + "<BR>");
document.write( "objRoot.Name = " + "<%= objRoot.Name %>" + "<BR>");
document.write( "objRoot.ADsPath = " + "<%= objRoot.ADsPath %>" + "<BR>");
document.write( "bRootExists = " + "<%= bRootExists %>" + "<BR>");
<%
end if
%>
</SCRIPT>
</BODY>
</HTML>