The Org Chart Sample Application


To show you another example of how to use your ADSI skills against the Active Directory, I created a simple Web-based application that draws an organizational chart. Figure 13-8 shows the application's logon page, where the user can type the name of a person and execute an ASP page that sets the correct credentials for the directory and then calls the organizational chart ASP program.

click to expand
Figure 13-8: The logon page for the ADSI Org Chart application

ADSI makes working with Active Directory and Exchange Server information easy. The code for the query follows .

 <% 'Get information from Active Directory      Set oIADs = GetObject("LDAP:") bstr1 = "LDAP://" + Session("Server") + "/cn=" + strUser + ",cn=" + _         Session("cn") + ",dc=" + Session("Domain") + ",dc=" + _         Session("DC") + ",dc=" + Session("OU") + ",dc=" + Session("o")           bstr2 = Session("bstr2") bstr3 = Session("bstr3")           Set objIADs = oIADs.OpenDSObject(bstr1, bstr2, bstr3, 0) 'Response.Write objIADs.Get("manager") 'Get the current person's information strDisplayName = objIADs.Get("displayName") strOffice = objIADs.Get("physicalDeliveryOfficeName") strTelephone = objIADs.Get("telephoneNumber") strTitle = objIADs.Get("title") strcn = objIADs.Get("cn") 'Try to retrieve the Mail property strmail = "" strmail = objIADs.Get("mail") If strmail = "" Then     'Try getting mailNickname     strmail = objIADs.Get("mailNickname") End If 'Response.Write "strcn= " & strcn strManager = objIADs.Get("manager") 'Response.Write strManager strManagerPath = "LDAP://" & Session("Server") & "/" & strManager 'Response.Write strManagerPath set oIADsManager = oIADS.OpenDSObject(strManagerPath,bstr2,bstr3,0) strManagercn = oIADsManager.Get("cn") 'Try to retrieve the Mail property strManagerMail = "" strManagerMail = oIADsManager.Get("mail") If strManagerMail = "" Then     strManagerMail = oIADsManager.Get("mailNickname") End If 'Response.Write "mcn=" & strManagercn strManagerOffice = oIADsManager.Get("physicalDeliveryOfficeName") strManagerTelephone = oIADsManager.Get("telephoneNumber") strManagerTitle = oIADsManager.Get("title") strManagerDisplayName = oIADsManager.Get("displayName") strReports = objIADs.GetEx("directReports") %>      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN"> <HTML> <HEAD> <Title>Web Org-Chart (java version)</Title> </HEAD> <center><font face=Verdana size=6><B>From Active      Directory</B></center></font> <p align="CENTER">      <applet    codebase="java"    code=JOrgChart.class    id=JOrgChart    width=480    <% if UBound(strReports) = LBound(strReports) then          iHeight = 0       else          iHeight = UBound(strReports)       end if    %>    height=<%=(Int(iHeight/2)+3)*65%>>    <param name=HostName value="<% =ROOTURL %>?Alias=">    <param name=Root value="<%=strManagerDisplayName%>?             <%=strManagerMail%>?             <%=EmptyToNA(strManagerTitle)%>?             <%=EmptyToNA(strManagerOffice)%>?             <%=EmptyToNA(strManagerTelephone)%>">    <param name=L1Node      value="<%=strDisplayName%>?<%=strMail%>?<%=EmptyToNA(strTitle)%>?<%=Empty      ToNA(strOffice)%>?<%=EmptyToNA(strTelephone)%>"> <%    For i = LBound(strReports) To UBound(strReports)            strLogonName = left(strReports(i),(instr(1,strReports(i),",")-1))               'Get each DS object to return the friendly name          strDirectPath = "LDAP://" & Session("Server") &                          "/" & strReports(i)          set oIADsReports = oIADs.OpenDSObject(strDirectPath, bstr2,bstr3,0)          strReportscn = oIADsReports.Get("cn")          'Try to get the mail address          strReportsMail = ""          strReportsMail = oIADsReports.Get("mail")          If strReportsMail = "" Then             strReportsMail = oIADsReports.Get("mailNickname")          End If          strReportsOffice = oIADsReports.Get("physicalDeliveryOfficeName")          strReportsTelephone = oIADsReports.Get("telephoneNumber")          strReportsTitle = oIADsReports.Get("title")          strReportsDisplayName = oIADsReports.Get("displayName") %>    <param name=L2Node<%=i%> value="<%=strReportsDisplayName%>?                <%=strReportsMail%>?                <%=EmptyToNA(strReportsTitle)%>?                <%=EmptyToNA(strReportsOffice)%>?           <%=EmptyToNA(strReportsTelephone)%>"> <%    Next %>      </applet> </p> <P> <B>Select a different alias by clicking <a href="logon.asp">here.</B> </BODY> 



Programming Microsoft Outlook and Microsoft Exchange 2003
Programming MicrosoftВ® OutlookВ® and Microsoft Exchange 2003, Third Edition (Pro-Developer)
ISBN: 0735614644
EAN: 2147483647
Year: 2003
Pages: 227
Authors: Thomas Rizzo

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net