Platform SDK: CDO 1.2.1 |
The ListComposeForms method returns an array of compose form strings.
strArrayFormList = objRendApp.ListComposeForms(bstrLinkPattern, varLanguageDirectory)
The ListComposeForms method can be used to support launching custom forms from Web clients.
The bstrLinkPattern parameter can include any or all of the following substitution tokens:
Substitution token | Attribute substituted for token |
---|---|
%class% | The message class |
%classpath% | The partial URL path for the form |
%formname% | The form's name from FORM.INI |
Each returned string is a copy of the bstrLinkPattern string with any substitution tokens replaced with the values appropriate for the corresponding form.
For example, Microsoft® Outlook™ Web Access might set bstrLinkPattern to
rgForms = objRA.ListComposeForms("<A HREF='JavaScript:openNewWindow (""/Exchange/forms/%classpath%/frmroot.asp?command=new"", ""New message"", 640, 500)'>%formname%</A>")
In order for a form to be reflected in the returned list, there must be a file named FORM.INI in the form directory, as well as frmroot.asp. FORM.INI may have the following contents:
[Description]
DisplayName=<form name>
Hidden=0/1
If FORM.INI files have been added to or deleted from the form directory since you called ListComposeForms, you can refresh the list of designated compose forms by setting the FormsRoot property to its current value.
This script demonstrates the ListComposeForms method as it might be used from Microsoft® Outlook™ Web Access:
<HTML> <!-- This script tests RenderingApplication.ListComposeForms First it writes out a table listing all the %tokens% for each form. Next it writes out a table using an Outlook Web Access link pattern; these links should bring up a form when followed. --> <HEAD> <META NAME="GENERATOR" Content="Microsoft Developer Studio"> <META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1"> <TITLE>Test RenderingApplication.ListComposeForms</TITLE> <script language="Javascript"> function openNewWindow(fileName,windowName,theWidth,theHeight) { if (windowName == "newMessageWindow") { //generate random window ID windowName = new String(Math.round(Math.random() * 100000)); } window.open(fileName,windowName,"toolbar=0,location=0,directories=0, status=1,menubar=1,scrollbars=1,resizable=1,width="+theWidth+", height="+theHeight) } </script> </HEAD> <BODY> <% set objRA = Application("RenderApplication") szCommand = Request.QueryString("command") %> <% if szCommand = "refresh" then %> <% Err.Clear objRA.FormsRoot = Server.MapPath("/Exchange") & "\usa" if err <> 0 then Response.Write err.number & " : " & err.description & "<br>" else Response.Write "Forms list successfully refreshed." & "<br>" end if %> <center> <P>Click <A HREF=f.asp>here</A> to view the forms list. </center> <% else %> <% rgNames = objRA.ListComposeForms("%formname%") rgPaths = objRA.ListComposeForms("%classpath%") rgClasses = objRA.ListComposeForms("%class%") rgForms = objRA.ListComposeForms("<A HREF='JavaScript:openNewWindow (""/Exchange/forms/%classpath%/frmroot.asp?command=new"", ""New message"", 640, 500)'>%formname%</A>") %> <% if isempty(rgnames) then %> <P> <% else %> <P>This table enumerates all the variables accessible through ListComposeForms. <table border=1 columns=3 width=100%> <tr><td><b>Name</b></td><td><b>Path</b></td><td><b>Class</b></td></tr> <% for i = 1 to UBound(rgNames) Response.Write "<tr>" Response.Write "<td>" & rgNames(i) & "</td><td>" & rgPaths(i) & "</td><td>" & rgClasses(i) & "</td>" Response.Write "</tr>" next %> </table> <% end if %> <% if isempty(rgForms) then %> <P>There are no composable forms on this server. <% else %> <P>This table contains working links to forms. <center> <table border=1 width=50%> <% for each szForm in rgForms Response.Write "<tr><td align=center>" Response.Write szForm Response.Write "</td></tr>" next %> </table> </center> <% end if %> <center> <P>Click <A HREF=f.asp?command=refresh>here</A> to refresh the forms list. </center> <% end if %> </BODY> </HTML>