Blame | Last modification | View Log | RSS feed
<%@LANGUAGE="VBSCRIPT"%><%'====================================================='| |'| wAddDaemonInstruction |'| |'=====================================================%><%Option explicitResponse.Expires = 0%><!--#include file="common/conf.asp"--><!--#include file="common/globals.asp"--><!--#include file="common/formating.asp"--><!--#include file="common/qstr.asp"--><!--#include file="common/common_subs.asp"--><!--#include file="common/_form_window_common.asp"--><!--#include file="common/daemon_instructions.asp"--><%'------------ ACCESS CONTROL ------------------%><!--#include file="_access_control_general.asp"--><!--#include file="_access_control_login.asp"--><%'------------ VARIABLE DEFINITION -------------Dim rsQryDim sMessageDim Query_StringDim parProj_idDim parPv_idDim parOp_codeDim parRepeatDim parInst_idDim parSchDateTimeDim parRfileDim bHideRepeat'------------ CONSTANTS DECLARATION -----------'------------ VARIABLE INIT -------------------sMessage = NULL// collect all parameters from query stringparOp_code = Request("op_code")parProj_id = Request("proj_id")parPv_id = Request("pv_id")parRepeat = Request("repeat")parInst_id = Request("inst_id")parSchDateTime = Request("sdt")parRfile = Request("rfile")Set objFormCollector = CreateObject("Scripting.Dictionary")' assume Repeat radio button is going to be visiblebHideRepeat = False'------------ CONDITIONS ----------------------'----------------------------------------------%><%'------------------------------------------------------------------------------------------------------------------------------------------' For the specified project ID, get a list of all that project's releases that are not closed/archived.' Return True if at least one release was found, else False'------------------------------------------------------------------------------------------------------------------------------------------Function ReleasesAvailable(NNproj_id)Dim rsTemp, Query_StringReleasesAvailable = TrueQuery_String = "SELECT rtag_id, rtag_name "&_" FROM release_tags rt"&_" WHERE rt.proj_id = "& NNproj_id &_" AND ((rt.official = 'N') OR (rt.official = 'C') OR (rt.official = 'R'))"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount = 0 ThenReleasesAvailable = FalseEnd IfrsTemp.CloseSet rsTemp = nothingEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' For the specified Release, get a list of all that release's daemon configurations.' Return True if at least one daemon configuration was found, else False'------------------------------------------------------------------------------------------------------------------------------------------Function DaemonsAvailable(NNrtag_id)Dim rsTemp, Query_StringDaemonsAvailable = TrueQuery_String = "SELECT * "&_" FROM release_config rc"&_" WHERE rc.rtag_id = "& NNrtag_idSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rsTemp.RecordCount = 0 ThenDaemonsAvailable = FalseEnd IfrsTemp.CloseSet rsTemp = nothingEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' Formulate the HTML for a combo box listing all the daemon instruction operations, and select the one that matches' the op-code passed in as a parameter. If the parameter value could not be found, correct it to the first valid op-code' in the list.'------------------------------------------------------------------------------------------------------------------------------------------Function Get_OpCodes ( NNop_code )Dim op_code_arrayDim op_codeDim op_code_idDim selectedFoundDim tempLINKDim sselectedFound = falseop_code_array = array(OP_CODE_0_STR) ' add new strings in here when new instruction constants are defined in conf.asps = "<td width='6%' align='left'>Operation</td>"s = s + "<td align='left'><select name='op_code_list' id='op_code_list' class='form_item' onchange=""MM_jumpMenu('parent',this,0)"">"op_code_id = 0For each op_code in op_code_arraytempLINK = scriptName & "?inst_id="& parInst_id &_"&op_code="& Cstr(op_code_id) &_"&rtag_id=" & parRtag_id &_"&pv_id=" & parPv_id &_"&sdt="& parSchDateTime &_"&repeat="& parRepeat &_"&rfile="& parRfileIf ((NNop_code = cstr(op_code_id)) OR (NNop_code = "0")) AND (selectedFound = False) Thens = s + "<option value='"& tempLINK &"' selected>"& op_code &"</option>"selectedFound = TrueNNop_code = op_code_idElses = s + "<option value='"& tempLINK &"'>"& op_code &"</option>"End Ifop_code_id = op_code_id + 1Next' TODO - what if selectedFound is still FALSE, shouldn't we fixup NNop_code to something ?s = s + "</select></td>"Get_OpCodes = sEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' Formulate the HTML for a combo box listing all the Projects, and select the one that matches' the proj-id passed in as a parameter. If the parameter value could not be found, correct it to the first valid proj-id' in the list.'------------------------------------------------------------------------------------------------------------------------------------------Function Get_Projects ( NNproj_id )Dim rsTemp, Query_String, projName, tempLINK, selectedFound, sselectedFound = FalseQuery_String = "SELECT * FROM projects ORDER BY UPPER( proj_name )"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))s = "<td>Project</td>"s = s + "<td><select id='proj_id_list' name='proj_id_list' class='form_item' onChange=""MM_jumpMenu('parent',this,0)"">"While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))projName = UCase(rsTemp.Fields("proj_name"))tempLINK = scriptName & "?inst_id="& parInst_id &_"&op_code="& parOp_code &_"&proj_id=" & rsTemp.Fields("proj_id") &_"&sdt="& parSchDateTime &_"&repeat="& parRepeat &_"&rfile="& parRfileIf ((NNproj_id = Cstr(rsTemp.Fields("proj_id"))) OR (NNproj_id = "0")) AND (selectedFound = False) Thens = s + "<option value='"& tempLINK &"' selected>"& projName &"</option>"selectedFound = TrueNNproj_id = CStr(rsTemp.Fields("proj_id"))Elses = s + "<option value='"& tempLINK &"'>"& projName &"</option>"End IfrsTemp.MoveNextWEnds = s + "</select>"' Correct for a situation where selectedFound is still FALSE.If NOT selectedFound ThenrsTemp.MoveFirstIf ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenNNproj_id = CStr(rsTemp.Fields("proj_id"))ElseNNproj_id = "0"End IfEnd IfrsTemp.CloseSet rsTemp = nothingIf ReleasesAvailable(NNproj_id) = False Thens = s + "<a style=color:Red>WARNING: Project has no active release(s)</a>"End Ifs = s + "</td>"Get_Projects = sEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' Formulate the HTML for a combo box listing all the Release for a specified project, and select the one that matches' the release-tag passed in as a parameter. If the parameter value could not be found, correct it to the first valid release-tag' in the list.'------------------------------------------------------------------------------------------------------------------------------------------Function Get_Releases ( NNproj_id, NNrtag_id )Dim rsTemp, Query_String, releaseName, tempLINK, selectedFound, sselectedFound = FalseQuery_String = "SELECT rtag_id, rtag_name "&_" FROM release_tags rt"&_" WHERE rt.proj_id = "& NNproj_id &_" AND ((rt.official = 'N') OR (rt.official = 'C') OR (rt.official = 'R'))"&_" ORDER BY UPPER(rtag_name)"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))s = "<td>Release</td>"s = s + "<td><select id='rtag_id_list' name='rtag_id_list' class='form_item' onChange=""MM_jumpMenu('parent',this,0)"">"While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))releaseName = rsTemp.Fields("rtag_name")tempLINK = scriptName & "?inst_id="& parInst_id &_"&op_code="& parOp_code &_"&proj_id="& NNproj_id &_"&rtag_id="& rsTemp.Fields("rtag_id") &_"&sdt="& parSchDateTime &_"&repeat="& parRepeat &_"&rfile="& parRfileIf ((NNrtag_id = CStr(rsTemp.Fields("rtag_id"))) OR (NNrtag_id = "0")) AND (selectedFound = False) Thens = s + "<option value='"& tempLINK &"' selected>"& releaseName &"</option>"selectedFound = TrueNNrtag_id = Cstr(rsTemp.Fields("rtag_id"))Elses = s + "<option value='"& tempLINK &"'>"& releaseName &"</option>"End IfrsTemp.MoveNextWEnds = s + "</select>"' Correct for a situation where selectedFound is still FALSE.If NOT selectedFound ThenrsTemp.MoveFirstIf ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenNNrtag_id = CStr(rsTemp.Fields("rtag_id"))ElseNNrtag_id = "0"End IfEnd IfrsTemp.CloseSet rsTemp = nothingIf DaemonsAvailable(NNrtag_id) = False Thens = s + "<a style=color:Red>WARNING: Release has no build daemon(s)</a>"End Ifs = s + "</td>"Get_Releases = sEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' Formulate the HTML for a combo box listing all the Package Versions in a specified release, and select the one that matches' the pv_id passed in as a parameter. If the parameter value could not be found, correct it to the first valid pv_id' in the list.'------------------------------------------------------------------------------------------------------------------------------------------Function Get_Packages ( NNrtag_id, NNpv_id )Dim rsTemp, Query_String, pkgName, tempLINK, selectedFound, sselectedFound = FalseQuery_String = "SELECT pk.pkg_id, pk.pkg_name, pv.pkg_version, rc.pv_id "&_" FROM release_content rc, release_tags rt, packages pk, package_versions pv "&_" WHERE rc.rtag_id = "& Cstr(NNrtag_id) &_" AND rc.rtag_id = rt.rtag_id"&_" AND ((rt.official = 'N') OR (rt.official = 'C') OR (rt.official = 'R'))"&_" AND rc.pv_id = pv.pv_id"&_" AND pk.pkg_id = pv.pkg_id"&_" ORDER BY UPPER(pkg_name)"Set rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))s = "<td>Package</td>"s = s + "<td><select id='pv_id_list' name='pv_id_list' class='form_item' onChange=""MM_jumpMenu('parent',this,0)"">"While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))pkgName = rsTemp.Fields("pkg_name") & " " & rsTemp.Fields("pkg_version")tempLINK = scriptName & "?inst_id="& parInst_id &_"&op_code="& parOp_code &_"&proj_id="& parProj_id &_"&rtag_id="& NNrtag_id &_"&pv_id="& rsTemp.Fields("pv_id") &_"&sdt="& parSchDateTime &_"&repeat="& parRepeat &_"&rfile="& parRfileIf ((NNpv_id = Cstr(rsTemp.Fields("pv_id"))) OR (NNpv_id = "0")) AND (selectedFound = False) Thens = s + "<option value='"& tempLINK &"' selected>"& pkgName &"</option>"selectedFound = TrueNNpv_id = CStr(rsTemp.Fields("pv_id"))Elses = s + "<option value='"& tempLINK &"'>"& pkgName &"</option>"End IfrsTemp.MoveNextWEnds = s + "</select></td>"' Correct for a situation where selectedFound is still FALSE.If NOT selectedFound ThenrsTemp.MoveFirstIf ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) ThenNNpv_id = Cstr(rsTemp.Fields("pv_id"))ElseNNpv_id = "0"End IfEnd IfrsTemp.CloseSet rsTemp = nothingGet_Packages = sEnd Function'------------------------------------------------------------------------------------------------------------------------------------------' This function will be called if and only if the form is first opened in circumstances where the user is editing an existing record' and all of the form's parameters must be set to the values found in that record. The database record must be obtained using a query' and the relevant parameters assigned from the record fields'------------------------------------------------------------------------------------------------------------------------------------------Sub Get_All_Params_From_Inst_Id(NNInstId)Dim rsTemp, Query_StringQuery_String = "SELECT op_code, rtag_id, pv_id, repeat_secs, "&_" TO_CHAR(scheduled_datetime, 'DD-MM-YYYY HH24:MI:SS') AS schedDate "&_" FROM DAEMON_INSTRUCTIONS "&_" WHERE DAEMON_INSTRUCTIONS_ID = " & NNInstIdSet rsTemp = OraDatabase.DbCreateDynaset( Query_String, cint(0))If rstemp.RecordCount = 0 ThenCall RaiseMsg(enum_MSG_ERROR, "Attempt to Edit a non-existent record")End If' assign record fields to global parametersparOp_code = rsTemp("op_code")parRtag_id = rsTemp("rtag_id")parPv_id = rsTemp("pv_id")parRepeat = rsTemp("repeat_secs")parSchDateTime = rsTemp("schedDate")' derive project id since that is not stored in the tableIf NOT IsNull(parRtag_id) AND parRtag_id <> "" ThenparProj_id = Get_Proj_ID(parRtag_id)ElseparProj_id = "0"End IfrsTemp.CloseSet rsTemp = nothingEnd Sub'------------------------------------------------------------------------------------------------------------------------------------------%><%'------------ RUN BEFORE PAGE RENDER ----------' Are we in edit mode? If so, populate all parameters from the record being editedIf (NOT IsNull(parInst_id)) AND (parInst_id <> "") AND (Request("edit") = "true") ThenIf NOT DaemonInstructionInProgress(Request("inst_id")) ThenCall Get_All_Params_From_Inst_Id(parInst_id)ElseCloseWindow ' close the form we were opening' redirect to an error message in the parent formCall RaiseMsgInParent(enum_MSG_ERROR, "Cannot edit an instruction that is currently being processed by a Daemon")End IfEnd If' Make sure we dont have any null strings or empty strings for our parametersIf IsNull(parOp_code) OR parOp_code = "" ThenparOp_code = "0"End IfIf IsNull(parProj_id) OR parProj_id = "" ThenparProj_id = "0"End IfIf IsNull(parRtag_id) OR parRtag_id = "" ThenparRtag_id = "0"End IfIf IsNull(parPv_id) OR parPv_id = "" ThenparPv_id = "0"End IfIf IsNull(parRepeat) OR parRepeat = "" ThenparRepeat = "0"End IfIf IsNull(parRfile) OR parRfile = "" ThenparRfile = "admin_daemon_instructions.asp"End IfIf IsNull(parSchDateTime) OR parSchDateTime = "" ThenparSchDateTime = EuroDateTimeForCalendarControl(Now())End If' If this form is opened with an OP_CODE, RTAG_ID and PV_ID only, then we need to derive the PROJ_ID before' calling Get_Projects() to generate the project drop down list.If parProj_id = "0" AND NOT IsNull(parRtag_id) AND parRtag_id <> "" AND parRtag_id <> "0" ThenparProj_id = Get_Proj_ID(parRtag_id)End If' Clear pv_id if the Daemon Instruction does not require oneIf parOp_code <> OP_CODE_0_RIPPLE_BUILD_PACKAGE ThenparPv_id = "0"End If' Hide the Repeat buttons if the Daemon Instruction does not require themIf parOp_code = OP_CODE_0_RIPPLE_BUILD_PACKAGE ThenbHideRepeat = TrueEnd If' Call some 'Get' procedures without HTML generation to determine the values of parProj_id, par_Rtag_id, and parPv_id' in case they are not currently present in the query string. This will then allow the use of the ReleasesAvailable() and' DaemonsAvailable() functions further below to hide the form submit button.' It will also support the submit action itself when it takes place during the editing of an existing record where' the user changes (for example) the project without making any changes to release or package and so those items' are nullified and must be reset to something other than their original values that came through the query string' when the edit form was just opened.Call Get_Projects(parProj_id) ' Ensures parProj_id has a good valueCall Get_Releases(parProj_id, parRtag_id) ' Ensures parRtag_id has a good value' PV_IDs are only relevant for certain op-codesIf parOp_code = OP_CODE_0_RIPPLE_BUILD_PACKAGE ThenCall Get_Packages (parRtag_id, parPv_id )End If' Check if form submit is happeningIf CBool(Request("action")) ThenDim RepeatSecondsDim ScheduledDateTimeDim bEditEnabledDim ReleaseMode' determine if insert/update is enabled by permissionsbEditEnabled = TrueReleaseMode = GetReleaseMode(parRtag_id)If NOT objAccessControl.IsDataActive ("PROJECTS", parProj_id, "EditProjects") OR NOT objAccessControl.IsDataVisible ("PROJECTS", parProj_id, "EditProjects") ThenbEditEnabled = FalseElseIf NOT objAccessControl.IsDataActive ("PROJECTS", parProj_id, enumDB_PERMISSION_TYPE_ACTIVE) ThenbEditEnabled = FalseElseIf ( ReleaseMode <> enumDB_RELEASE_IN_OPEN_MODE ) ThenIf NOT objAccessControl.IsActive("ApproveForAutoBuild") ThenbEditEnabled = FalseEnd IfEnd IfIf NOT bEditEnabled Then' redirect to an error messageCall RaiseMsg(enum_MSG_ERROR, "You have been denied permission to add/update daemon instructions for the specified release.")End If' Setup the repeat seconds count according to the radio button valueIf IsNull(Request("repeat_inst")) OR Request("repeat_inst") = "" OR Request("repeat_inst") = "No" ThenRepeatSeconds = 0ElseRepeatSeconds = 86400End If' If user has not entered a scheduled time, set the scheduled date/time to nowScheduledDateTime = Request("scheduled_time")If IsNull(ScheduledDateTime) OR ScheduledDateTime = "" ThenScheduledDateTime = ORA_SYSDATETIMEElseScheduledDateTime = "TO_DATE( '"& ScheduledDateTime &"','DD-MM-YYYY HH24:MI:SS' )"End IfIf parOp_code <> OP_CODE_0_RIPPLE_BUILD_PACKAGE ThenparPv_id = "NULL"End If' if the page has been provided an inst_id, we must be editing an existing record so we do an updateIf (NOT IsNull(parInst_id)) AND (parInst_id <> "") Then' We are updating an existing recordobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL "BEGIN PK_BUILDAPI.update_daemon_inst( "& parInst_id & ", " &_parOp_code & ", " &_parRtag_id & ", " &_parPv_id & ", " &_ScheduledDateTime & ", " &_CStr(RepeatSeconds) & ", " &_ORA_SYSDATETIME & ", " &_objAccessControl.UserId & "); END;"objEH.CatchORA ( OraSession )If objEH.Finally ThenIf parRfile = "admin_daemon_instructions.asp" ThenCall OpenInParentWindow (parRfile)ElseCall OpenInParentWindow (parRfile & "?rtag_id=" & parRtag_id & "&pv_id=" & parPv_id)End IfCall CloseWindow()End IfElse ' We are adding a new recordobjEH.TryORA ( OraSession )On Error Resume NextOraDatabase.ExecuteSQL "BEGIN PK_BUILDAPI.insert_daemon_inst( "& parOp_code & ", " &_parRtag_id & ", " &_parPv_id & ", " &_ScheduledDateTime & ", " &_CStr(RepeatSeconds) & ", " &_ORA_SYSDATETIME & ", " &_objAccessControl.UserId & "); END;"objEH.CatchORA ( OraSession )If objEH.Finally ThenIf parRfile = "admin_daemon_instructions.asp" ThenCall OpenInParentWindow (parRfile)ElseCall OpenInParentWindow (parRfile & "?rtag_id=" & parRtag_id & "&pv_id=" & parPv_id)End IfCall CloseWindow()End IfEnd IfEnd If'----------------------------------------------%><script language="JavaScript" type="text/javascript"><!--// This function is designed to be called when a repeat radio button is pressed. It reloads the page with an updated query string// to reflect the new setting of the radio button setfunction Refresh_Repeat(newRepeat){var s;s = '<%=scriptName%>';s += '?inst_id=' + document.getElementById('inst_id').value;s += '&op_code=' + document.getElementById('op_code').value;s += '&proj_id=' + document.getElementById('proj_id').value;s += '&rtag_id=' + document.getElementById('rtag_id').value;s += '&pv_id=' + document.getElementById('pv_id').value;s += '&sdt=' + document.getElementById('scheduled_time').value;s += '&repeat=' + newRepeat;s += '&rfile=' + document.getElementById('rfile').value;document.location = s;}//--></script><html><head><title>Release Manager</title><meta HTTP-EQUIV="Pragma" CONTENT="no-cache"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link href="images/release_manager_style.css" rel="stylesheet" type="text/css"><script language="JavaScript" src="scripts/common.js"></script><script language="JavaScript" src="images/ts_picker.js"></script></head><body background="images/bg_bage_0.gif" leftmargin="0" topmargin="0" ><table width="100%" border="0" cellspacing="0" cellpadding="10"><tr><td bgcolor="#FFFFFF" class="body_txt"><span class="body_h1"><img src="icons/i_linkarrow_black.gif" width="11" height="11" align="absmiddle"> Add/Update Daemon Instruction</span> <br>Add a new Daemon Instruction or edit an existing Daemon Instruction.</td></tr><%'-- FROM START --------------------------------------------------------------------------------------------------------------objFormComponent.FormName = "DaemonInstruction"objFormComponent.Action = ScriptName &_"?inst_id="& parInst_id &_"&op_code="& parOp_code &_"&proj_id="& parProj_id &_"&rtag_id="& parRtag_id &_"&pv_id="& parPv_id &_"&rfile="& parRfileobjFormComponent.OnSubmit = "ShowProgress();"Call objFormComponent.FormStart()%><tr><td background="images/bg_login.gif"><table width="50%" border="0" cellspacing="0" cellpadding="0"><tr><td><%=ProgressBar()%></td><td align="right"><%If ReleasesAvailable(parProj_id) AND DaemonsAvailable(parRtag_id) Then%><input name="btn" type="submit" class="form_btn" value="Add/Update"><%Else%><input name="btn" type="submit" class="form_btn_disabled" value="Add/Update D" disabled="disabled" ><%End If%><input name="btn" type="reset" class="form_btn" value="Cancel" onClick="self.close();"></td></tr></table></td></tr><tr><td><!-- NEW PRODUCT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --><%Call Messenger ( sMessage , 3, "100%" )%><!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ --><!--#include file="messages/_msg_inline.asp"--><table width="100%" border="0"><tr><td width="1%"><%=Get_OpCodes(parOp_code)%></td></tr><tr><td> </td></tr><tr><td><div id="SelectProject" style="visibility:visible"><%=Get_Projects(parProj_id)%></div></td></tr><tr><td><div id="SelectRelease" style="visibility:visible"><%=Get_Releases(parProj_id, parRtag_id)%></div></td></tr><%If parOp_code = "0" Then%><tr><td><div id="SelectPackageVersion" style="visibility:visible"><%=Get_Packages ( parRtag_id, parPv_id )%></div></td></tr><%End If%><tr><td> </td></tr><tr><td><td nowrap>Scheduled Time</td><td><input type="text" id="scheduled_time" name="scheduled_time" size="20" class="form_ivalue" value="<%=parSchDateTime%>"><a href="javascript:show_calendar('document.DaemonInstruction.scheduled_time', document.DaemonInstruction.scheduled_time.value);"><img src="images/cal.gif" width="16" height="16" border="0" alt="Click Here to select the (future) time at which to carry out the instruction"></a></td></td></tr><%If NOT bHideRepeat Then%><tr><td><td>Repeat</td><td><input type="radio" name="repeat_inst" id="repeat_inst_no" value="No" <%If parRepeat = "0" Then%>checked<%End If%> onchange='Refresh_Repeat(0)' >No<input type="radio" name="repeat_inst" id="repeat_inst_24hrs" value="24Hrs"<%If parRepeat = "86400" Then%>checked<%End If%> onchange='Refresh_Repeat(86400)' >24 Hrs</td></td></tr><%End If%><tr><td><input type="hidden" id="inst_id" name="inst_id" value="<%=parInst_id%>"><input type="hidden" id="op_code" name="op_code" value="<%=parOp_code%>"><input type="hidden" id="proj_id" name="proj_id" value="<%=parProj_id%>"><input type="hidden" id="rtag_id" name="rtag_id" value="<%=parRtag_id%>"><input type="hidden" id="pv_id" name="pv_id" value="<%=parPv_id%>"><input type="hidden" id="repeat_secs" name="repeat_secs" value="<%=parRepeat%>"><input type="hidden" id="rfile" name="rfile" value="<%=parRfile%>"></td></tr></table></td></tr><%=objPMod.ComposeHiddenTags()%><input type="hidden" name="action" value="true"><%Call objFormComponent.FormEnd()'-- FROM END ----------------------------------------------------------------------------------------------------------------%></table></body></html><%'------------ RUN AFTER PAGE RENDER -----------Set objFormCollector = Nothing'----------------------------------------------Call Destroy_All_Objects%>