<% '===================================================== ' Package Action Buttons '===================================================== %> <% Sub ActivateButtonAccordingToReleaseModeAndPermissions( NNbutton, NNpermission) If objAccessControl.IsDataActive ("PROJECTS", DB_PROJ_ID, "EditProjects") Then If ( ReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE) OR ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE ) Then If objAccessControl.IsActive(NNpermission) Then Call objBtnControl.Active ( NNbutton, "Y" ) Else Call objBtnControl.Active ( NNbutton, "N" ) End If ElseIf ( ReleaseMode = enumDB_RELEASE_IN_OPEN_MODE ) Then Call objBtnControl.Active ( NNbutton, "Y" ) Else Call objBtnControl.Active ( NNbutton, "N" ) End If Else Call objBtnControl.Active ( NNbutton, "N" ) End If End Sub Sub RenderActionButtons '--Determine whether the release has an associated MASS_REF Dim rsAssoc, AssocMASSREF, AssocMASSREFValue, StatesUsed If Request("rtag_id") <> "" Then Set rsAssoc = OraDatabase.DbCreateDynaset( "SELECT ASSOC_MASS_REF, PRODUCT_STATE_USED FROM RELEASE_TAGS WHERE RTAG_ID="&Request("rtag_id"), cint(0)) AssocMASSREFValue = rsAssoc("ASSOC_MASS_REF") StatesUsed = rsAssoc("PRODUCT_STATE_USED") If NOT IsNull(rsAssoc("ASSOC_MASS_REF")) Then AssocMASSREF = True Else AssocMASSREF = False End If rsAssoc.Close() Set rsAssoc = nothing End If '-- Define Action buttons on this tab If IsNull(pkgInfoHash.Item("is_patch")) Then If Request("rtag_id") <> "" Then If (pkgInfoHash.Item("can_edit_in_project") = "1" OR _ objAccessControl.IsVisible("AlterReleaseContentsInRestrictiveMode")) OR (pkgInfoHash.Item("v_ext") = ".mas" AND pkgInfoHash.Item("v_ext") = ".cr" OR NOT AssocMASSREF OR NOT IsNull(pkgInfoHash.Item("v_ext")) ) _ Then If pkgInfoHash.Item("is_deployable") = "Y" AND pkgInfoHash.Item("dlocked") = "Y" AND StatesUsed = "Y" Then If pkgInfoHash.Item("product_state") = 1 Then 'Response.Write("Pressed") ' For Products that have been approved for Pending Integration aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnPendingTest", "btnRejectProduct", "width=20", _ "width=20", "btnMoveToView", "btnStickyNotes") ElseIf pkgInfoHash.Item("product_state") = 2 Then ' For Products that have been approved for Pending Test aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnPendingIntegration", "btnPendingDeployment","btnRejectProduct", "width=20", _ "width=20", "btnMoveToView", "btnStickyNotes") ElseIf pkgInfoHash.Item("product_state") = 3 or pkgInfoHash.Item("product_state") = 4 Then ' 'For Products that have been approved for Pending Deployment aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnRemovePackage", "width=20", "btnRejectPackage", "width=20", _ "btnMoveToView", "btnReversionPackage", "width=20", "btnMoveToView", "btnStickyNotes") ElseIf pkgInfoHash.Item("product_state") = 5 Then ' 'For Products that have been approved for Pending Integration and Deployment aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnPendingDeployment", "width=20", _ "width=20", "btnMoveToView", "btnStickyNotes") ElseIf IsNull(pkgInfoHash.Item("product_state")) Then If objAccessControl.IsVisible("ApprovePendingIntegrateAndDeploy") Then 'For Products that have have not yet been approved for Pending Integration aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnPendingIntegration", "btnPendingIntegrateAndDeploy", "btnRejectProduct", "width=20", "btnRemovePackage", _ "btnMoveToView", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation") Else 'For Products that have have not yet been approved for Pending Integration aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnPendingIntegration","btnRemovePackage", "width=20", "btnRejectProduct", "width=20", _ "width=20", "btnMoveToView", "btnStickyNotes") End If Else ' For Packages Not In Release(Bug Fix From Deployment Manager) aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnRemovePackage", "width=20", "btnMakePending", "btnApprovePackage", "btnMakeRelease", "btnRejectPackage", "width=20", _ "btnMoveToView", "btnReversionPackage", "width=20", "btnMoveToView", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation") End If ElseIf objAccessControl.IsActive("EditCriticalInfoForLockedPackage") Then ' For Packages in Release aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnRemovePackage", "width=20", _ "btnAddDaemonInstTestBuildPackage", "btnMakePending", "btnApprovePackage", "btnApproveMerge", "btnMakeRelease", "btnRejectPackage", "btnRejectAutobuildPackage", "btnMakeUnrelease", "width=20", _ "btnMoveToView", "btnMoveWIPToRelease", "btnReversionPackage","btnLockPackage","btnUnLockPackage", "width=20", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation", "btnAddDaemonInstRipplePackage" ) Else ' For Packages in Release aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnRemovePackage", "width=20", _ "btnAddDaemonInstTestBuildPackage", "btnMakePending", "btnApprovePackage", "btnApproveMerge", "btnMakeRelease", "btnRejectPackage", "btnRejectAutobuildPackage", "width=20", _ "btnMoveToView", "btnMoveWIPToRelease", "btnReversionPackage", "width=20", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation", "btnAddDaemonInstRipplePackage") End If Else ' Non-Editable Packages in Release If AssocMASSREF Then aTabBtnsDef = Array( "btnNewVersion-MASSREF", "btnVersionHistory", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation") Else aTabBtnsDef = Array( "btnVersionHistory", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation") End If End If Else ' For standalone Packages (Not view in project release) aTabBtnsDef = Array("btnVersionHistory", "btnReversionPackage", "width=20", "btnStickyNotes") End If Else ' For Patches 'aTabBtnsDef = Array("btnMakePending", "btnApprovePackage", "btnMakeRelease", "btnMakeUnrelease", "btnRejectPackage", "width=20", _ ' "btnReversionPackage", "width=20", "btnObsoletePatch", "btnUnobsoletePatch", "width=20","btnStickyNotes") aTabBtnsDef = Array("btnMakeRelease", "btnMakeUnrelease", "width=20", _ "btnReversionPackage", "width=20", "btnObsoletePatch", "btnUnobsoletePatch", "width=20","btnStickyNotes") End If ' Load action buttons from database Call objBtnControl.LoadActionButtons ( aTabBtnsDef, OraDatabase ) ' Set spacing to minimum between buttons objBtnControl.ButtonSpacer = 0 objBtnControl.ImageHspace = 2 '--- Set button conditions --- objBtnControl.IsReadonlyAction = Eval( ReleaseMode = enumDB_RELEASE_IN_CLOSED_MODE ) ' NOTE: At this point, all buttons are Active and Visible and must now be configured ' as appropriate by statements that follow. '--- Set default button settings --- Call objBtnControl.Visible ( "btnNewVersion", "N" ) Call objBtnControl.Visible ( "btnNewVersion-MASSREF", "N") Call objBtnControl.Visible ( "btnMakePending", "N" ) Call objBtnControl.Active ( "btnMakePending", "N" ) Call objBtnControl.Visible ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnMakeRelease", "N" ) 'Call objBtnControl.Active ( "btnMakeRelease", "N" ) Call objBtnControl.Active ( "btnRejectPackage", "N" ) Call objBtnControl.Visible ( "btnRejectPackage", "N" ) Call objBtnControl.Active ( "btnRejectAutobuildPackage", "N" ) Call objBtnControl.Visible ( "btnRejectAutobuildPackage", "N" ) Call objBtnControl.Active ( "btnMakeUnrelease", "N" ) Call objBtnControl.Active ( "btnReversionPackage", "N" ) Call objBtnControl.Visible ( "btnObsoletePatch", "N" ) Call objBtnControl.Visible ( "btnUnobsoletePatch", "N" ) Call objBtnControl.Visible ( "btnDeprecation", "N" ) Call objBtnControl.Visible ( "btnUnDeprecation", "N" ) Call objBtnControl.Active ( "btnApproveMerge", "N" ) Call objBtnControl.Visible ( "btnApproveMerge", "N" ) Call objBtnControl.Active ( "btnAddDaemonInstRipplePackage", "N" ) Call objBtnControl.Visible ( "btnAddDaemonInstRipplePackage", "N" ) Call objBtnControl.Active ( "btnAddDaemonInstTestBuildPackage", "N" ) Call objBtnControl.Visible ( "btnAddDaemonInstTestBuildPackage", "N" ) Call objBtnControl.Active ( "btnMoveWIPToRelease", "N" ) Call objBtnControl.Visible ( "btnMoveWIPToRelease", "N" ) If objAccessControl.IsDataActive ("PROJECTS", DB_PROJ_ID, "EditProjects") Then '-- Change button setting on conditions --- If ( pkgInfoHash.Item ("build_type") = "A" ) Then ' For automatic build Call objBtnControl.Visible ( "btnMakePending", "Y" ) Call objBtnControl.Visible ( "btnApprovePackage", "Y" ) Call objBtnControl.Active ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnMakeUnrelease", "N" ) Call objBtnControl.Visible ( "btnRejectPackage", "Y" ) Else ' For Manual Build If ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE ) And Not objAccessControl.IsVisible("ApproveForManualBuild") Then Call objBtnControl.Visible ( "btnMakeRelease", "N" ) Else Call objBtnControl.Visible ( "btnMakeRelease", "Y" ) End If If (pkgInfoHash.Item("is_patch")) <> "" Then If objAccessControl.IsVisible ("ReleasePatch") Then Call objBtnControl.Visible ( "btnMakeRelease", "Y" ) Else Call objBtnControl.Visible ( "btnMakeRelease", "N" ) End If End If If ( ReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_MODE) OR ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE ) Then Call objBtnControl.Visible ( "btnMakePending", "Y" ) If ( ( pkgInfoHash.Item ("dlocked") = "N" ) OR ( pkgInfoHash.Item ("dlocked") = "R" ) ) _ AND ( IsNull(pkgInfoHash.Item("is_patch")) ) Then Call objBtnControl.Active ( "btnMakeRelease", "N" ) Call objBtnControl.Visible ( "btnMakeRelease", "N" ) End If Call objBtnControl.Visible ( "btnRejectPackage", "Y" ) If (ReleaseMode = enumDB_RELEASE_IN_CCB_MODE) OR (NOT objAccessControl.IsVisible("AlterReleaseContentsInRestrictiveMode")) Then Call objBtnControl.Visible ( "btnMakeUnrelease", "N" ) Call objBtnControl.Visible ( "btnRemovePackage", "N" ) End If Else 'Call objBtnControl.Active ( "btnMakeRelease", "Y" ) End If End If End If '-- Change button setting on conditions --- If pkgInfoHash.Item ("dlocked") = "Y" Then ' Package is Released and Locked Call objBtnControl.Visible ( "btnNewVersion", "Y" ) If AssocMASSREF Then Call objBtnControl.Visible ( "btnNewVersion-MASSREF", "Y" ) End If If Request("rtag_id") <> "" AND objAccessControl.IsVisible("DeprecatePackage") Then Dim rsDeprecate If NOT IsNull(pkgInfoHash.Item ("v_ext")) Then Set rsDeprecate = OraDatabase.DbCreateDynaset("SELECT * FROM DEPRECATED_PACKAGES WHERE RTAG_ID ="& Request("rtag_id") &" AND V_EXT ='"& pkgInfoHash.Item ("v_ext") &"' AND PKG_ID = "& pkgInfoHash.Item ("pkg_id") &"", cint(0)) Else Set rsDeprecate = OraDatabase.DbCreateDynaset("SELECT * FROM DEPRECATED_PACKAGES WHERE RTAG_ID ="& Request("rtag_id") &" AND V_EXT IS NULL AND PKG_ID = "& pkgInfoHash.Item ("pkg_id") &"", cint(0)) End If If (rsDeprecate.RecordCount) = 0 Then Call objBtnControl.Visible ( "btnDeprecation", "Y" ) Else Call objBtnControl.Visible ( "btnUnDeprecation", "Y" ) End If rsDeprecate.Close() Set rsDeprecate = nothing End If Call objBtnControl.Active ( "btnApprovePackage", "N" ) Call objBtnControl.Active ( "btnMakeRelease", "N" ) If pkgInfoHash.Item("can_unofficial") = "true" OR objAccessControl.IsActive("EditCriticalInfoForLockedPackage") Then Call objBtnControl.Visible ( "btnMakeUnrelease", "Y" ) Call objBtnControl.Active ( "btnMakeUnrelease", "Y" ) End If ' DEVI-45275 - We can now merge existing (locked) versions to planned (pending) whilst assigning an operation to them ' to either (A)dd or (S)ubtract the version from the release. Such items must be "rejectable" so we need to enable the ' reject package button. If pkgInfoHash.Item("planned_operation") <> " " Then Call objBtnControl.Visible ( "btnRejectPackage", "Y" ) Call objBtnControl.Active ( "btnRejectPackage", "Y" ) Else Call objBtnControl.Visible ( "btnRejectPackage", "N" ) End If Call objBtnControl.Visible ( "btnMakePending", "N" ) Call objBtnControl.Visible ( "btnMakeRelease", "N" ) Call objBtnControl.Visible ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnAddDaemonInstRipplePackage", "Y" ) Call ActivateButtonAccordingToReleaseModeAndPermissions("btnAddDaemonInstRipplePackage", "ApproveForAutoBuild") ElseIf pkgInfoHash.Item ("dlocked") = "P" Then ' In Pending Call objBtnControl.Visible ( "btnMakePending", "N" ) Call ActivateButtonAccordingToReleaseModeAndPermissions("btnApprovePackage", "ApproveForAutoBuild") Call ActivateButtonAccordingToReleaseModeAndPermissions("btnRejectPackage", "RejectPackageFromPending") ElseIf pkgInfoHash.Item ("dlocked") = "A" Then ' In Pending, Approved For Autobuild Call objBtnControl.Visible ( "btnMakePending", "N" ) Call objBtnControl.Active ( "btnMakePending", "N" ) Call objBtnControl.Visible ( "btnApprovePackage", "N" ) Call objBtnControl.Active ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnRejectPackage", "N" ) Call objBtnControl.Active ( "btnRejectPackage", "N" ) Call objBtnControl.Visible ( "btnMakeUnrelease", "Y" ) If pkgInfoHash.Item("can_unofficial") = "true" OR objAccessControl.IsActive("EditCriticalInfoForLockedPackage") Then Call objBtnControl.Active ( "btnMakeUnrelease", "Y" ) Else Call objBtnControl.Active ( "btnMakeUnrelease", "N" ) End If '--- Allow failed auto-builds to be rejected back to WIP, conditions allowing. If pkgInfoHash.Item("build_type") = "A" AND Request("rtag_id") <> "" Then If isInDoNotRippleTable( Request("rtag_id"), pkgInfoHash.Item("pv_id") ) = TRUE Then Call objBtnControl.Visible ( "btnRejectAutobuildPackage", "Y" ) Call ActivateButtonAccordingToReleaseModeAndPermissions("btnRejectAutobuildPackage", "RejectPackageFromPending") End If End If Else ' Unlocked or rejected packages (dlocked = N or R) Call objBtnControl.Active ( "btnReversionPackage", "Y" ) Call objBtnControl.Active ( "btnMakePending", "Y" ) Call objBtnControl.Visible ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnRejectPackage", "N" ) If objAccessControl.IsDataActive ("PROJECTS", DB_PROJ_ID, "EditProjects") Then Call objBtnControl.Active ( "btnAddDaemonInstTestBuildPackage", "Y" ) Call objBtnControl.Visible ( "btnAddDaemonInstTestBuildPackage", "Y" ) Call objBtnControl.Active ( "btnMoveWIPToRelease", "Y" ) Call objBtnControl.Visible ( "btnMoveWIPToRelease", "Y" ) End If End If If IsNull(pkgInfoHash.Item ("is_obsolete")) Then Call objBtnControl.Visible ( "btnObsoletePatch", "Y" ) Else Call objBtnControl.Visible ( "btnUnobsoletePatch", "Y" ) End If If objAccessControl.IsVisible("DestroyPackage") Then Call objBtnControl.Visible ( "btnRecycleBin", "Y" ) End If '--- Access Control Action Relationships --- ' DEVI-45275 - Merges now occur via the Pending tab. Merge candidates are marked with a (planned) operation ' of "A" for add, or "S" for subtract. If the package version is one of these (within the context of the ' release ofcoarse), manipulate the MakeRelease button (of which there are now 3 types) accordingly. If ( pkgInfoHash.Item ("planned_operation") = "A" OR pkgInfoHash.Item ("planned_operation") = "S") Then ' always enable the reject button for pending merge operations Call objBtnControl.Visible ( "btnRejectPackage", "Y" ) ' disable the other two types of MakeRelease button Call objBtnControl.Visible ( "btnApprovePackage", "N" ) Call objBtnControl.Visible ( "btnMakeRelease", "N" ) ' make the approve merge button variant visible Call objBtnControl.Visible ( "btnApproveMerge", "Y" ) ' These conditions match those used in Diff.asp that control whether the Merge button is visible or not. ' Use them to enable or disable the approve merge button If ( ReleaseMode <> enumDB_RELEASE_IN_CLOSED_MODE AND ReleaseMode <> enumDB_RELEASE_IN_CCB_MODE AND objAccessControl.IsActive("MergeRelease") ) _ OR ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE AND objAccessControl.IsActive("MergeReleaseForCCB") ) Then Call objBtnControl.Active ( "btnApproveMerge", "Y" ) Call objBtnControl.Active ( "btnRejectPackage", "Y" ) Else Call objBtnControl.Active ( "btnApproveMerge", "N" ) Call objBtnControl.Active ( "btnRejectPackage", "N" ) End If End If '--- Other Access Control Action Relationships --- If ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE ) Then Call objBtnControl.SetRelationship ( "btnMakeRelease", "ApprovePackageReleaseForRestrictiveMode" ) Call objBtnControl.SetRelationship ( "btnPendingIntegration", "ApproveForPendingIntegration" ) Call objBtnControl.SetRelationship ( "btnPendingTest", "ApproveForPendingTest" ) Call objBtnControl.SetRelationship ( "btnPendingDeployment", "ApproveForPendingDeployment" ) Call objBtnControl.SetRelationship ( "btnRejectProduct", "RejectProduct" ) Call objBtnControl.SetRelationship ( "btnPendingIntegrateAndDeploy", "ApprovePendingIntegrateAndDeploy" ) '--------------------------------------------------------------------------- ' Unlock Package ' Note: Unlocking of a Package or Patch is intended for the administrators Dim bucan_unlock bucan_unlock = pkgInfoHash("is_released") AND objAccessControl.IsActive("EditCriticalInfoForLockedPackage") Call objBtnControl.Visible ( "btnUnLockPackage", "N" ) Call objBtnControl.Visible ( "btnLockPackage", "N" ) Call objBtnControl.Active ( "btnLockPackage", "N" ) Call objBtnControl.Active ( "btnUnLockPackage", "N" ) If bucan_unlock Then If (pkgInfoHash.Item ("dlocked") = "Y") Then ' Unlock patch or package. Call objBtnControl.Visible ( "btnUnLockPackage", "Y" ) Call objBtnControl.Active ( "btnUnLockPackage", "Y" ) ElseIf (pkgInfoHash.Item ("dlocked") = "N") Then ' lock patch or package. Call objBtnControl.Visible ( "btnLockPackage", "Y" ) Call objBtnControl.Active ( "btnLockPackage", "Y" ) End If End if '--------------------------------------------------------------------------- ' -- Render Buttons Call objBtnControl.Render ( aTabBtnsDef, objAccessControl ) End Sub %>