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.
736 lines
23 KiB
736 lines
23 KiB
<% '==================================================
|
|
' Microsoft Server Appliance
|
|
'
|
|
' Serves task wizard/propsheet
|
|
'
|
|
' Copyright (c) Microsoft Corporation. All rights reserved.
|
|
'================================================== %>
|
|
|
|
<!-- #include file="sh_page.asp" -->
|
|
<!-- #include file="tabs.asp" -->
|
|
<!-- #include file="sh_statusbar.asp" -->
|
|
|
|
<% ' Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
'Task module-level variables
|
|
Dim mstrPageName ' used as page identifier, e.g., "Intro"
|
|
Dim mstrTaskTitle ' e.g., "Add User"
|
|
Dim mstrWizPageTitle ' e.g., "Add User"
|
|
Dim mstrPageTitle ' e.g., "Username and Password"
|
|
Dim mstrTaskType ' "wizard", "prop"
|
|
Dim mstrWizardPageType ' "intro", "standard", "finish"
|
|
Dim mstrMethod ' "BACK", "NEXT", "FINISH", etc
|
|
Dim mstrReturnURL ' URL to return to after ending task
|
|
Dim mstrFrmwrkFormStrings ' framework form values, list of strings to exclude
|
|
Dim mstrIconPath ' image for upper right header
|
|
Dim mstrPanelPath ' image for left panel of intro and finish pg
|
|
' Dim mintElementIndex ' index of embedded wizard page (0 - n, -1 = no extensions)
|
|
' Dim mintElementCount ' number of embedded pages in wizard
|
|
Dim mstrErrMsg ' used by SetErrMsg and GetErrMsg
|
|
Dim mstrAsyncTaskName ' Task EXE name - empty if task is synchronous
|
|
Dim mstrTabPropSheetTabs()
|
|
Dim mintTabSelected
|
|
Dim intCaptionIDTask
|
|
|
|
Dim gm_sPageTitle ' SAK 2.0 Page Title variable
|
|
Dim gm_sBannerText ' SAK 2.0 Banner Text
|
|
|
|
|
|
mintTabSelected = CInt(Request.Form("TabSelected"))
|
|
Set objLocMgr = Server.CreateObject("ServerAppliance.LocalizationManager")
|
|
strSourceName = "sakitmsg.dll"
|
|
|
|
If Err.number <> 0 Then
|
|
If ( Err.number = &H800401F3 ) Then
|
|
Response.Write("<H1>Problem:<H1>")
|
|
Response.Write("Unable to locate a software component on the Server Appliance.<BR>")
|
|
Response.Write("The Server Appliance core software components do not appear to be installed correctly.")
|
|
|
|
Else
|
|
Response.Write("<H1>Problem:<H1>")
|
|
Response.Write("Server.CreateObject(ServerAppliance.LocalizationManager) failed with error code: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
End If
|
|
Call SA_TraceOut("SH_TASK", "Server.CreateObject(ServerAppliance.LocalizationManager) failed with error code: " + CStr(Hex(Err.Number)) )
|
|
Response.End
|
|
End If
|
|
|
|
'-----------------------------------------------------
|
|
'START of localization content
|
|
|
|
Dim L_BACK_BUTTON
|
|
Dim L_BACKIE_BUTTON
|
|
Dim L_NEXT_BUTTON
|
|
Dim L_NEXTIE_BUTTON
|
|
Dim L_FINISH_BUTTON
|
|
Dim L_OK_BUTTON
|
|
Dim L_CANCEL_BUTTON
|
|
Dim L_BACK_ACCESSKEY
|
|
Dim L_NEXT_ACCESSKEY
|
|
Dim L_FINISH_ACCESSKEY
|
|
|
|
L_BACK_BUTTON = objLocMgr.GetString(strSourceName, "&H4001001C",varReplacementStrings)
|
|
L_BACKIE_BUTTON = objLocMgr.GetString(strSourceName, "&H4001001D",varReplacementStrings)
|
|
L_NEXT_BUTTON = objLocMgr.GetString(strSourceName, "&H4001001E",varReplacementStrings)
|
|
L_NEXTIE_BUTTON = objLocMgr.GetString(strSourceName, "&H4001001F",varReplacementStrings)
|
|
L_FINISH_BUTTON = objLocMgr.GetString(strSourceName, "&H40010020",varReplacementStrings)
|
|
L_OK_BUTTON = objLocMgr.GetString(strSourceName, "&H40010021",varReplacementStrings)
|
|
L_CANCEL_BUTTON = objLocMgr.GetString(strSourceName, "&H40010022",varReplacementStrings)
|
|
L_BACK_ACCESSKEY = objLocMgr.GetString(strSourceName, "&H40010039",varReplacementStrings)
|
|
L_NEXT_ACCESSKEY = objLocMgr.GetString(strSourceName, "&H4001003A",varReplacementStrings)
|
|
L_FINISH_ACCESSKEY = objLocMgr.GetString(strSourceName, "&H4001003B",varReplacementStrings)
|
|
|
|
'End of localization content
|
|
'-----------------------------------------------------
|
|
|
|
|
|
|
|
'Task Constants
|
|
Const PROPERTY_TASK_NICE_NAME = "TaskNiceName"
|
|
Const PROPERTY_TASK_URL = "TaskURL"
|
|
Const WBEM_E_PROVIDER_NOT_CAPABLE = "&H80041024"
|
|
Const WIZARD_TASK = "wizard"
|
|
Const PROPSHEET_TASK = "prop"
|
|
Const TAB_PROPSHEET = "TabPropSheet"
|
|
Const BODY_PAGE = "standard"
|
|
Const INTRO_PAGE = "intro"
|
|
Const FINISH_PAGE = "finish"
|
|
Const BACK_METHOD = "BACK"
|
|
Const NEXT_METHOD = "NEXT"
|
|
Const FINISH_METHOD = "FINISH"
|
|
Const CANCEL_METHOD = "CANCEL"
|
|
|
|
|
|
'Get standard task values and initialize
|
|
mstrMethod = Request.Form("Method")
|
|
mstrPageName = Request("PageName")
|
|
mstrReturnURL = Request("ReturnURL")
|
|
|
|
If mstrReturnURL = "" Then
|
|
mstrReturnURL = GetCurrentPrimaryTabURL()
|
|
End If
|
|
|
|
' mintElementIndex = -1 ' set later in ServeWizardEmbeds()
|
|
' mintElementCount = Request.Form("EmbedPageCount") ' get previous value, if any
|
|
' If mintElementCount="" Then
|
|
' mintElementCount=0
|
|
' End If
|
|
mstrFrmwrkFormStrings = "!method!pagename!pagetype!tasktype!returnurl!embedpageindex!embedpagecount!commonvalues!embedvalues0!embedvalues1!embedvalues2!embedvalues3!embedvalues4!"
|
|
|
|
Set objLocMgr = Server.CreateObject("ServerAppliance.LocalizationManager")
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : SA_IsAsyncTaskBusy
|
|
'
|
|
' Synopsis : Determine if the async task is currently being executed
|
|
'
|
|
' Arguments: TaskName(IN) - async task name
|
|
'
|
|
' Returns : true/false
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
Public Function SA_IsAsyncTaskBusy(ByVal TaskName)
|
|
SA_IsAsyncTaskBusy = AsyncTaskBusy(TaskName)
|
|
End Function
|
|
|
|
Private Function AsyncTaskBusy(ByVal TaskName)
|
|
|
|
Dim objTask
|
|
|
|
|
|
Set objTask = GetObject("WINMGMTS:" & SA_GetWMIConnectionAttributes() &"!\\" & GetServerName & "\root\cimv2:Microsoft_SA_Task.TaskName=" & Chr(34) & TaskName & Chr(34) )
|
|
If ( Err.Number <> 0 ) Then
|
|
Call SA_TraceOut(SA_GetScriptFileName(), "Get Microsoft_SA_Task failed: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
Exit Function
|
|
End If
|
|
|
|
If Not objTask.IsAvailable Then
|
|
AsyncTaskBusy = True
|
|
Else
|
|
AsyncTaskBusy = False
|
|
End If
|
|
Set objTask = Nothing
|
|
|
|
End Function
|
|
|
|
|
|
Public Function SAI_GetBannerText()
|
|
If ( SA_GetVersion() < gc_V2 ) Then
|
|
SAI_GetBannerText = mstrTaskTitle
|
|
Else
|
|
SAI_GetBannerText = gm_sBannerText
|
|
End If
|
|
End Function
|
|
|
|
Public Function SAI_GetPageTitle()
|
|
If ( SA_GetVersion() < gc_V2 ) Then
|
|
SAI_GetPageTitle = mstrTaskTitle
|
|
Else
|
|
SAI_GetPageTitle = gm_sPageTitle
|
|
End If
|
|
End Function
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : SA_SetErrMsg
|
|
'
|
|
' Synopsis : Sets framework error message string
|
|
'
|
|
' Arguments: Message(IN) - error message text
|
|
'
|
|
' Returns : Nothing
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
Public Function SA_SetErrMsg(ByVal Message)
|
|
mstrErrMsg = Message
|
|
End Function
|
|
|
|
Private Function SetErrMsg(ByVal Message)
|
|
mstrErrMsg = Message
|
|
End Function
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : GetErrMsg
|
|
'
|
|
' Synopsis : Gets the current framework error message string
|
|
'
|
|
' Arguments: None
|
|
'
|
|
' Returns : None
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
Private Function GetErrMsg()
|
|
GetErrMsg = mstrErrMsg
|
|
End Function
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : ServeTaskHeader
|
|
'
|
|
' Synopsis : Serve the task header based on page type
|
|
'
|
|
' Arguments: None
|
|
'
|
|
' Returns : None
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
|
|
Function ServeTaskHeader()
|
|
Dim objItem
|
|
Dim i
|
|
Dim intSlack
|
|
|
|
Response.Buffer = True
|
|
%>
|
|
<html>
|
|
<!-- Microsoft(R) Server Appliance Platform
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
-------------------------------------------------
|
|
Web Framework <%=SA_TaskToPageType()%>
|
|
-------------------------------------------------
|
|
-->
|
|
<meta http-equiv="Content-Type" content="text/html; charset=<%=GetCharSet()%>">
|
|
<head>
|
|
<title><%=Server.HTMLEncode(SAI_GetPageTitle())%></title>
|
|
<script language=JavaScript src="<%=m_VirtualRoot%>sh_page.js"></script>
|
|
<script language=JavaScript>
|
|
var VirtualRoot = '<%=m_VirtualRoot%>';
|
|
|
|
function HandleClickEvent()
|
|
{
|
|
if ( IsIE() )
|
|
{
|
|
if (window.event.srcElement.tagName == "INPUT")
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
else return true;
|
|
}
|
|
</script>
|
|
<script language=JavaScript src="<%=m_VirtualRoot%>sh_task.js"></script>
|
|
<%
|
|
If (mstrTaskType = PROPSHEET_TASK) then
|
|
If ( SA_GetVersion() < gc_V2 ) Then
|
|
Call SA_EmitAdditionalStyleSheetReferences("")
|
|
End If
|
|
End If
|
|
%>
|
|
</head>
|
|
<BODY onload="PageInit();" onDragDrop="return false;" xoncontextmenu="return false;">
|
|
<%
|
|
If (mstrTaskType= TAB_PROPSHEET) then
|
|
If ( SA_GetVersion() < gc_V2 ) Then
|
|
Call ServeTabBar()
|
|
End If
|
|
End If
|
|
If( (mstrTaskType="wizard") AND (mstrWizardPageType="intro" OR mstrWizardPageType="finish")) Then
|
|
|
|
%>
|
|
<div class='PageBodyIndent'>
|
|
<%
|
|
Call ServeStandardHeaderBar(SAI_GetBannerText(), mstrIconPath)
|
|
%>
|
|
<br>
|
|
<TABLE width=87% height=65% border=0 cellspacing=0 cellpadding=0 ID=TASKTABLE>
|
|
<TR valign=TOP style="background-color:#FFFFFF">
|
|
<TD height=100% xwidth="10%" align="right" valign=TOP class=PageHeaderBar style="width:130px; xbackground-color: #313163" rowspan="2">
|
|
<%
|
|
If ( Len(Trim(mstrPanelPath)) > 0 ) Then
|
|
%>
|
|
<IMG width=130 border=0 src='<% =m_VirtualRoot + mstrPanelPath %>' >
|
|
<%
|
|
End If
|
|
%>
|
|
</td>
|
|
<td width=10> </td>
|
|
<TD valign=TOP class="TasksBody">
|
|
<div class="PageTitleText"><%=Server.HTMLEncode(mstrWizPageTitle)%></div>
|
|
|
|
<br>
|
|
<%
|
|
Else
|
|
If (mstrTaskType= TAB_PROPSHEET) Then
|
|
%>
|
|
<div class='PageBodyIndent'>
|
|
<%
|
|
Call ServeStandardHeaderBar(SAI_GetBannerText(), mstrIconPath)
|
|
%>
|
|
|
|
<br>
|
|
<div class='PageBodyInnerIndent'>
|
|
<TABLE width=87% border=0 height="65%" cellspacing=0 cellpadding=0 ID=TASKTABLE >
|
|
<TR height="100%" width="100%" valign=TOP>
|
|
<TD>
|
|
<%
|
|
If IsIE() Then
|
|
%>
|
|
<TABLE class="TabPropTabTable" height="100%" width="100%" border=0 cellspacing=0 cellpadding=0>
|
|
<%
|
|
Else
|
|
%>
|
|
<TABLE class="TabPropTabTable" height="500px" width="100%" border=0 cellspacing=0 cellpadding=0>
|
|
<%
|
|
End If
|
|
%>
|
|
<TR valign=TOP>
|
|
<TD width="20%" height=100%>
|
|
<TABLE xheight="100%" width="100%" border=0 cellspacing=0 cellpadding=0>
|
|
<%
|
|
intSlack = UBound(mstrTabPropSheetTabs) - LBound(mstrTabPropSheetTabs)
|
|
intSlack = 100 - (2 * intSlack)
|
|
If intSlack <= 0 Then
|
|
intSlack = 5
|
|
End If
|
|
|
|
|
|
For i = LBound(mstrTabPRopSheetTabs) to UBound(mstrTabPropSheetTabs)-1
|
|
Response.Write("<TR align=left height=20>"+vbCrLf)
|
|
If mintTabSelected=i Then
|
|
Response.Write("<TD nowrap class=TabPropTabSelected>"+vbCrLf)
|
|
Else
|
|
Response.Write("<TD nowrap class=TabPropTab>"+vbCrLf)
|
|
End If
|
|
'Response.Write("<a href=""javascript:if (ValidatePage()) {SetData(); top.main.document.forms['frmTask'].TabSelected.value="+ CStr(i) +"; top.main.document.forms['frmTask'].submit();}"">"+vbCrLf)
|
|
Response.Write("<a onmouseover=""window.status=''; return true;"" href=""javascript:SA_OnClickTab("+ CStr(i) +");"">")
|
|
If mintTabSelected=i Then
|
|
Response.Write("<span id='PropTab_"+CStr(i)+"' style=""overflow:visible;"" class=TabPropTabSelectedNoBorder>")
|
|
Else
|
|
Response.Write("<span id='PropTab_"+CStr(i)+"' style=""overflow:visible;"" class=TabPropTabNoBorder>")
|
|
End If
|
|
Response.Write(Server.HTMLEncode(mstrTabPropSheetTabs(i)))
|
|
Response.Write("</span>")
|
|
Response.Write("</a>"+vbCrLf)
|
|
Response.Write("</TD>"+vbCrLf)
|
|
Response.Write("</TR>"+vbCrLf)
|
|
Next
|
|
%>
|
|
</TABLE>
|
|
<TABLE height="<%=intSlack%>%" width="100%" border=0 cellspacing=0 cellpadding=0>
|
|
<TR xheight="<%=intSlack%>%">
|
|
<TD class="TabPropTab"> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
<TD height="100%">
|
|
<div>
|
|
<%
|
|
If IsIE() Then
|
|
%>
|
|
<TABLE onClick='return HandleClickEvent();' height="100%" width="100%" border=0 cellspacing=0>
|
|
<%
|
|
Else
|
|
%>
|
|
<TABLE onClick='return HandleClickEvent();' height="500px" width="100%" border=0 cellspacing=0>
|
|
<%
|
|
End If
|
|
%>
|
|
<TR height="100%" width="100%"><TD class=TabPropTabTaskCell valign=top>
|
|
|
|
<%
|
|
'
|
|
' Wizard Page Type
|
|
'
|
|
ElseIf (mstrTaskType="wizard") Then
|
|
%>
|
|
<div class='PageBodyIndent'>
|
|
<%
|
|
Call ServeStandardHeaderBar(SAI_GetBannerText(), mstrIconPath)
|
|
%>
|
|
<div class='PageBodyInnerIndent'>
|
|
<TABLE width=100% border=0 height="58%" cellspacing=0 cellpadding=0 ID=TASKTABLE >
|
|
<TR valign=TOP height="10%" style="xbackground-color:#FFFFFF">
|
|
<TD valign=TOP>
|
|
<div class="PageTitleText"><%=Server.HTMLEncode(mstrWizPageTitle)%></div>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR height="80%" valign=TOP>
|
|
<TD valign="top" height="70%">
|
|
<table onClick='return HandleClickEvent();' width=90% class="TasksBody"><tr><td class="TasksBody" width=100% height=100%>
|
|
<%
|
|
'
|
|
' Property page
|
|
'
|
|
Else
|
|
If ( SA_GetVersion() < gc_V2 ) Then
|
|
Call SA_ServeStatusBar()
|
|
Call ServeTabBar()
|
|
End If
|
|
%>
|
|
|
|
<TABLE width=100% border=0 height="58%" cellspacing=0 cellpadding=0 ID=TASKTABLE >
|
|
<TR valign=TOP height="10%" >
|
|
<TD valign=TOP>
|
|
<div class='PageBodyIndent'>
|
|
<%
|
|
Call ServeStandardHeaderBar(SAI_GetBannerText(), mstrIconPath)
|
|
%>
|
|
<div class="PageTitleText"><% =mstrPageTitle %></div>
|
|
</div>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR height="80%" valign=TOP>
|
|
<TD valign="top" height="70%">
|
|
<div class='PageBodyIndent'>
|
|
<table onClick='return HandleClickEvent();' width=90% class="TasksBody"><tr><td class="TasksBody" width=100% height=100%>
|
|
<div class='PageBodyInnerIndent'>
|
|
<%
|
|
End If
|
|
End If
|
|
%>
|
|
<FORM name="frmTask" onSubmit="return Next();" action="<% =GetScriptFileName %>" method="POST">
|
|
<INPUT name="<%=SAI_FLD_PAGEKEY%>" type="hidden" value="<%=SAI_GetPageKey()%>">
|
|
<INPUT name="PageName" type="hidden" value="<% =mstrPageName %>">
|
|
<INPUT name="Method" type="hidden" value="<% =mstrMethod %>">
|
|
<INPUT name="ReturnURL" type="hidden" value="<% =mstrReturnURL %>">
|
|
<INPUT name="TaskType" type="hidden" value="<% =mstrTaskType %>">
|
|
<INPUT name="PageType" type="hidden" value="<% =mstrWizardPageType %>">
|
|
<INPUT name="TabSelected" type="hidden" value="<% =mintTabSelected%>">
|
|
<INPUT name="Tab1" type="hidden" value="<% =GetTab1() %>">
|
|
<INPUT name="Tab2" type="hidden" value="<% =GetTab2() %>">
|
|
<%
|
|
|
|
ServeTaskHeader = True
|
|
|
|
End Function
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : ServeTaskFooter
|
|
'
|
|
' Synopsis : Serve the task footer (navigation buttons & error div)
|
|
' Note: The function relies on the following module-level variables:
|
|
' mstrTaskType - prop wizard
|
|
' mstrWizardPageType - standard intro finish failure
|
|
'
|
|
' Arguments: None
|
|
'
|
|
' Returns : None
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
|
|
Function ServeTaskFooter()
|
|
|
|
dim ErrMessage
|
|
|
|
Response.write("</td></tr>")
|
|
|
|
|
|
If GetErrMsg <> "" Then
|
|
ErrMessage = "<table class='ErrMsg'><tr><td><img src='" & m_VirtualRoot & "images/critical_error.gif' border=0></td><td>" & GetErrMsg & "</td></tr></table>"
|
|
SetErrMsg ""
|
|
else
|
|
ErrMessage =""
|
|
End If
|
|
|
|
If( (mstrWizardPageType<>"intro_xxx") AND (mstrWizardPageType<>"finish_zzzz") ) Then
|
|
If (IsIE()) Then %>
|
|
<tr><td colspan=2>
|
|
<DIV name="divErrMsg" ID="divErrMsg" class="ErrMsg"><%=ErrMessage%></DIV>
|
|
</td></tr>
|
|
<% End If %>
|
|
|
|
<% If (mstrTaskType= TAB_PROPSHEET) then %>
|
|
</table>
|
|
</div>
|
|
</td></tr></table>
|
|
</td></tr></table>
|
|
</div>
|
|
</div>
|
|
|
|
<% Else %>
|
|
</table>
|
|
</td></tr></table>
|
|
</div>
|
|
</div>
|
|
<% End If %>
|
|
<% End If %>
|
|
|
|
|
|
<% If Not IsIE() Then %>
|
|
<layer name="layErrMsg" class="ErrMsg"><%=ErrMessage%></layer>
|
|
<% End If %>
|
|
|
|
<%
|
|
Response.Write "</form></BODY></HTML>"
|
|
|
|
End Function
|
|
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : ServeFailurePage
|
|
'
|
|
' Synopsis : Serve the page which redirects the browser to the err_view.asp
|
|
' failure page
|
|
'
|
|
' Arguments: Message(IN) - message to be displayed by err_view.asp
|
|
' intTab(IN) - Tab to be highlighted by err_view.asp
|
|
'
|
|
' Returns : None
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
|
|
Function ServeFailurePage(Message, intTab)
|
|
Call SA_ServeFailurePage(Message)
|
|
Exit Function
|
|
End Function
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function : ServeClose
|
|
'
|
|
' Synopsis : Redirect user to the page from which the wizard was launched
|
|
'
|
|
' Arguments: None
|
|
'
|
|
' Returns : None
|
|
'
|
|
'----------------------------------------------------------------------------
|
|
|
|
|
|
Sub ServeClose
|
|
%>
|
|
<html>
|
|
<!-- Copyright (c) Microsoft Corporation. All rights reserved.-->
|
|
<head>
|
|
<SCRIPT language=JavaScript>
|
|
function Redirect()
|
|
{
|
|
top.location='<%=EscapeQuotes(mstrReturnURL)%>';
|
|
}
|
|
</SCRIPT>
|
|
</head>
|
|
<BODY onLoad="Redirect();">
|
|
|
|
</BODY>
|
|
</html>
|
|
<%
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
'----------------------------------------------------------------------------
|
|
'
|
|
' Function SA_ExecuteTask
|
|
'
|
|
' Synopsis Executes an Appliance Task backend object. Normally, backend Tasks
|
|
' are executed synchronously. The bExecuteAsync parameter allows overriding
|
|
' the default behavior.
|
|
'
|
|
' If the oTaskContext object has not been created and initialized, this function
|
|
' will create a default oTaskContext and will initialize it by creating task
|
|
' parameters using all input form fields from the current Request object. This
|
|
' makes it easy to pass an HTML form to the appliance task.
|
|
'
|
|
' If an error is encountered the really is no reasonable recovery that a
|
|
' scripting client can make.
|
|
'
|
|
' Arguments [in] TaskName Name of task to execute
|
|
'
|
|
' [in] bExecuteAsync Flag indicating if Task should be executed
|
|
' synchronisly (default, FALSE) or async (TRUE).
|
|
'
|
|
' [in/out] oTaskContext TaskContext object for the appliance task. The TaskContext
|
|
' object can be used to pass input arguments to the Task.
|
|
'
|
|
' Returns:
|
|
' SA_NO_ERROR
|
|
' The call succeeded, no errors occured
|
|
'
|
|
' SA_ERROR_CREATE_OBJECT_FAILED
|
|
' Unable to create one of the required backend objects, this indicates that either the
|
|
' components were not installed correctly or that the Appliance Manager service
|
|
' is not running.
|
|
'
|
|
' SA_ERROR_INITIALIZE_OBJECT_FAILED
|
|
' The Task object encountered an unrecoverable error during it's internal initialization.
|
|
' This is probably not recoverable and likely indicates a problem with either the expected
|
|
' inputs or the current state of the Appliance task.
|
|
'
|
|
' All other cases
|
|
' The HRESULT return value recieved from the Task
|
|
'
|
|
'
|
|
' Example 1 - Create TaskContext and set input parameters:
|
|
' Dim oTaskContext
|
|
' Dim rc
|
|
'
|
|
' Set oTaskContext = CreateObject("Taskctx.TaskContext")
|
|
' If Err.Number <> 0 Then
|
|
' ' Handle the error
|
|
' Exit Function
|
|
' End If
|
|
'
|
|
' Call oTaskContext.SetParameter("Method Name", strMethodName)
|
|
' Call oTaskContext.SetParameter("LanguageID", strLANGID)
|
|
|
|
' Call oTaskContext.SetParameter("AutoConfig", "y")
|
|
'
|
|
' rc = SA_ExecuteTask("ChangeLanguage", FALSE, oTaskContext)
|
|
' If ( rc <> SA_NO_ERROR ) Then
|
|
' ' Handle the error
|
|
' End If
|
|
'
|
|
' Example 2 - Use the current input form (Request object) as input to the task
|
|
' Dim rc
|
|
' Dim oTaskContext
|
|
|
|
' Set oTaskContext = nothing
|
|
' rc = SA_ExecuteTask("MyApplianceTask", FALSE, oTaskContext)
|
|
' If ( rc <> SA_NO_ERROR ) Then
|
|
' ' Handle the error
|
|
' End If
|
|
'----------------------------------------------------------------------------
|
|
|
|
'
|
|
' Following signature has been deprecated in SAK 2.0 - See SA_ExecuteTask
|
|
Private Function ExecuteTask(ByVal TaskName, ByRef oTaskContext)
|
|
ExecuteTask = SA_ExecuteTask(TaskName, FALSE, oTaskContext)
|
|
End Function
|
|
|
|
|
|
Public Function SA_ExecuteTask(ByVal TaskName, ByVal bExecuteAsync, ByRef oTaskContext)
|
|
on error resume next
|
|
Err.Clear
|
|
|
|
Dim objAS
|
|
Dim objValue
|
|
Dim objElementCol
|
|
Dim objElement
|
|
Dim oField
|
|
Dim rc
|
|
|
|
SA_ExecuteTask = SA_NO_ERROR
|
|
|
|
'
|
|
' Create default TaskContext object if necessary
|
|
'
|
|
If (NOT IsObject(oTaskContext)) Then
|
|
Call SA_TraceOut("SH_TASK", "SA_ExecuteTask - Creating default TaskContext")
|
|
Set oTaskContext = Server.CreateObject("Taskctx.TaskContext")
|
|
If (Err.Number <> 0) Then
|
|
Call SA_TraceErrorOut(SA_GetScriptFileName(), "Server.CreateObject(Taskctx.TaskContext) failed: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
SA_ExecuteTask = SA_ERROR_CREATE_OBJECT_FAILED
|
|
Exit Function
|
|
End If
|
|
|
|
'
|
|
' Set default value of parameters
|
|
For Each oField in Request.Form
|
|
oTaskContext.SetParameter oField, CStr(Request.Form(oField))
|
|
Next
|
|
End If
|
|
|
|
|
|
'
|
|
' Get interface to ApplianceServices interface, the object that allows us to invoke tasks
|
|
Set objAS = Server.CreateObject("Appsrvcs.ApplianceServices")
|
|
If (Err.Number <> 0) Then
|
|
Call SA_TraceErrorOut(SA_GetScriptFileName(), "Server.CreateObject(Appsrvcs.ApplianceServices) failed: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
SA_ExecuteTask = SA_ERROR_CREATE_OBJECT_FAILED
|
|
Exit Function
|
|
End If
|
|
|
|
'
|
|
' Initialize ApplianceServices object
|
|
objAS.Initialize()
|
|
If (Err.Number <> 0) Then
|
|
Call SA_TraceErrorOut(SA_GetScriptFileName(), "objAS.Initialize() for object Appsrvcs.ApplianceServices failed: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
SA_ExecuteTask = SA_ERROR_INITIALIZE_OBJECT_FAILED
|
|
Exit Function
|
|
End If
|
|
|
|
'
|
|
' Initialize context parameters
|
|
oTaskContext.SetParameter PROPERTY_TASK_NICE_NAME, mstrTaskTitle
|
|
oTaskContext.SetParameter PROPERTY_TASK_URL, m_VirtualRoot + GetScriptPath()
|
|
|
|
Err.Clear
|
|
|
|
If ( TRUE = bExecuteAsync ) Then
|
|
'Call SA_TraceOut("SH_TASK", "Calling objAS.ExecuteTaskAsync("+TaskName+", oTaskContext)")
|
|
Call objAS.ExecuteTaskAsync(TaskName, oTaskContext)
|
|
Else
|
|
'Call SA_TraceOut("SH_TASK", "Calling objAS.ExecuteTask("+TaskName+", oTaskContext)")
|
|
Call objAS.ExecuteTask(TaskName, oTaskContext)
|
|
End If
|
|
|
|
If ( Err.Number <> 0 ) Then
|
|
SA_ExecuteTask = Err.Number
|
|
Call SA_TraceErrorOut(SA_GetScriptFileName(), "Task execution returned failure code: " + CStr(Hex(Err.Number)) + " " + Err.Description)
|
|
End If
|
|
|
|
objAS.Shutdown()
|
|
Err.Clear
|
|
|
|
Set objAS = Nothing
|
|
|
|
End Function
|
|
|
|
|
|
|
|
Private Function SA_TaskToPageType()
|
|
|
|
If ( mstrTaskType = "prop" ) Then
|
|
SA_TaskToPageType = "Property Page"
|
|
ElseIf ( mstrTaskType = TAB_PROPSHEET) Then
|
|
SA_TaskToPageType = "Tabbed Property Page"
|
|
ElseIf ( mstrTaskType = "wizard") Then
|
|
SA_TaskToPageType = "Wizard Page"
|
|
Else
|
|
SA_TaskToPageType = "Unknown Page Type"
|
|
End If
|
|
|
|
End Function
|
|
|
|
%>
|
|
|