Subversion Repositories DevTools

Rev

Rev 1281 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%
'=====================================================
'            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

%>