t_user.html
This code sample describes how to design the Web page that is displayed when the creator of a workflow map edits a custom display step in the Workflow Designer. You edit a custom display step on the Custom Display Step Definition page, which is accessed by double-clicking the task's icon or by right-clicking the task's icon, and then clicking Edit.
;;webscript t_user( Assoc data )
<!-- File: custmod/t_user.html -->
;;oscript{
Integer i
List durationInfo
String checked
String dueDuration
Dynamic taskInfo = data.TaskInfo
//Set up the URLs that define the links on the Step Definition
//page (for example, the Map Editor link which jumps back to
//the Workflow Designer).
String nextURL = Str.Format( \
"%1?func=wfp.TaskEdit&MapID=%2&TaskID=%3&NextURL=%4", \
.URL(), \
data.MapID, \
data.TaskID, \
Web.Escape( data.NextURL ) )
String chooseUserURL = .url() + Str.Format( \
"?func=wfp.TaskUserSet&MapID=%1&TaskID=%2&PerformerID=%3" + \
"&nextURL=%4", \
data.MapID, \
data.TaskID, \
taskInfo.PerformerID, \
Web.Escape( nextURL ) );
//Set up the contents of the Group Options list.
List flags = { $WFMain.WFConst.kWFGroupStandard, \
$WFMain.WFConst.kWFGroupExpand, \
$WFMain.WFConst.kWFGroupExpandFull }
List flagLabels = { [WebWFP_HTMLLabel.MemberAccept], \
[WebWFP_HTMLLabel.OneLevelExpand], \
[WebWFP_HTMLLabel.FullExpand] }
;;}
//Set up the information that is displayed on the General tab of
//the Custom Display Step Definition page. This includes the
//title, the performer, the group options, the step instructions,
//the name of the callback script to run, the workflow event that
//triggers the callback script, the template to use, the
//duration, and the start date.
<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="1">
//Set up the Step Name field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><FONT
FACE="'[WebDsp_Font.SansSerif]'"
size="2"> '[WebWFP_HTMLLabel.StepName_]' </FONT></TD>
<TD>
<IMG SRC="`.ModImg( 'custmod' )``data.Gif`" WIDTH="16"
HEIGHT="16" ALIGN="BOTTOM" BORDER="0" VALIGN="TOP"
HALIGN="RIGHT">
<INPUT TYPE="TEXT" NAME="Title" SIZE="33"
VALUE="`taskInfo.Title`" MAXLENGTH="255"
ONCHANGE="markTaskEditDirty();">
<INPUT TYPE="HIDDEN" NAME="PerformerID"
VALUE="`taskInfo.PerformerID`">
</TD>
</TR>
//Set up the Assigned To field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><FONT
FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebWFP_HTMLLabel.AssignedTo_]` </FONT></TD>
<TD>
<A HREF="`chooseUserURL`"
ONCLICK="if ( leaveTaskEdit() )taskEditGo( '`%LchooseUserURL`' ); else return false;">
<B>`[WebWFP_HTMLLabel.UserOrGroupColon]`</B>
</A>
<IMG SRC="`.Img()``data.PerformerInfo.Gif`" WIDTH="16"
HEIGHT="16" ALIGN="BOTTOM" BORDER="0" VALIGN="TOP" HALIGN="RIGHT">
;if ( data.PerformerInfo.KnownUser )
;;call <.HTMLPrefix() + 'douserdialog.html'>(
data.PerformerInfo.ID, data.PerformerInfo.Name )
;else
`%Ldata.PerformerInfo.Name`
;end
</TD>
</TR>
//Set up the Group Options field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><
FONT FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebWFP_HTMLLabel.GroupOptions_]` </FONT></TD>
<TD>
<SELECT NAME="GroupFlags" ONCHANGE="markTaskEditDirty();">
;for i = 1 to Length( flags )
;if ( taskInfo.EXATTS.GroupFlags == flags[ i ] )
<OPTION VALUE="`flags[ i ]`"
SELECTED>`flagLabels[ i ]`
;else
<OPTION VALUE="`flags[ i ]`">`flagLabels[ i ]`
;end
;end
</SELECT>
</TD>
</TR>
//Set up the Instructions field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP valign="TOP"><FONT
FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebWFP_HTMLLabel.Instructions_]` </FONT></TD>
<TD>
<TEXTAREA NAME="Instructions" ROWS="6" COLS="45"
WRAP="SOFT"
ONCHANGE="markTaskEditDirty();">`taskInfo.Instructions`</TEXTAREA>
</TD>
</TR>
//Set up the Script to run field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP valign="TOP"><
FONT face="Arial, Helvetica, sans-serif"
size="2"> Script to run: </FONT></TD>
<TD>
<SELECT NAME="CustTaskScript"
ONCHANGE="markTaskEditDirty();">
;String scriptName
;List scriptsList =
$Custmod.UtilityPkg.ListScripts()
<OPTION><None>
;for scriptName in scriptsList
<OPTION `( taskInfo.ExAtts.CustTaskScript ==
scriptName ) ? 'selected':''`>`scriptName`
;end
</SELECT>
<BR>
//Set up the Step Becomes Ready and Step Is Done radio
//buttons.
<TABLE BORDER="0" CELLPADDING="2" CELLSPACING="1">
<TR>
<TD>Script runs when:</TD>
<TD>
;checked = ( taskInfo.ExAtts.RunScript ==
'ReadyCB' ) ? "CHECKED" : ""
<INPUT TYPE="RADIO" NAME="RunScript" `checked`
VALUE="ReadyCB ONCLICK="markTaskEditDirty();">Step Becomes Ready
<BR>
;checked = ( taskInfo.ExAtts.RunScript ==
'DoneCB' ) ? "CHECKED" : ""
<INPUT TYPE="RADIO" NAME="RunScript" `checked`
VALUE="DoneCB" ONCLICK="markTaskEditDirty();">Step Is Done
</TD>
</TR>
</TABLE>
</TD>
</TR>
//Set up the Template to use field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP valign="TOP"><FONT face="Arial,
Helvetica, sans-serif" size="2"> Template to
use: </FONT></TD>
<TD>
<SELECT NAME="CustTaskTemplate"
ONCHANGE="markTaskEditDirty();">
;String templateName
;List templatesList =
$Custmod.UtilityPkg.ListTemplates()
<OPTION><None>
;for templateName in templatesList
<OPTION `( taskInfo.customData.CustTaskTemplate ==
templateName ) ? 'selected':''`>`templateName`
;end
</SELECT>
</TD>
</TR>
//Set up the Duration field.
;;oscript{
if IsDefined( taskInfo.DueDuration )
durationInfo = $LLIAPI.FormatPkg.ConvertFromSeconds( \
taskInfo.DueDuration )
dueDuration = $LLIAPI.FormatPkg.ValToString( \
durationInfo[2] )
else
durationInfo = { TRUE, 0 }
end
;;}
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><FONT
FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebWFP_HTMLLabel.Duration_]` </FONT></TD>
<TD>
<INPUT TYPE="TEXT" NAME="Duration" VALUE="`dueDuration`"
SIZE="5" ONCHANGE="markTaskEditDirty();">
;checked = ( durationInfo[ 1 ] ) ? "" : ""
<INPUT TYPE="RADIO" NAME="DurationUnits" `checked`
VALUE="Days" ONCLICK="markTaskEditDirty();">`[WebWFP_HTMLLabel.Days]`
;checked = ( !durationInfo[ 1 ] ) ? "CHECKED" : ""
<INPUT TYPE="RADIO" NAME="DurationUnits" `checked`
VALUE="Hours"
ONCLICK="markTaskEditDirty();">`[WebWFP_HTMLLabel.Hours]`
</TD>
</TR>
//Set up the Start Date field.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><FONT
FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebWFP_HTMLLabel.StartDate_]` </FONT></TD>
<TD NOWRAP>
;;call <.htmlPrefix() + 'datefield.html'>( 'StartDate',
taskInfo.StartDate, TRUE, TRUE )
</TD>
</TR>
//Set up the Action field, which contains the Add to Workflow
//Definition button.
<TR>
<TD bgcolor="#CCCCCC" NOWRAP><FONT
FACE="`[WebDsp_Font.SansSerif]`"
size="2"> `[WebDoc_HTMLLabel.Action_]` </FONT></TD>
<TD>
<INPUT TYPE="Submit"
VALUE="`[WebWFP_HTMLLabel.AddToWorkflowDefinitionButtonLabel]`">
</TD>
</TR>
</TABLE>
;;end