Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<%
'=====================================================
'                               Package Action Buttons
'=====================================================
%>

<%
'--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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "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", "btnArchivedVersionHistory", "btnRemovePackage", "width=20", "btnMakePending", "btnApprovePackage", "btnApproveMerge", "btnMakeRelease", "btnRejectPackage", "btnMakeUnrelease", "width=20", _
                                                        "btnMoveToView", "btnReversionPackage", "width=20", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation")
                        Else
                                ' For Packages in Release
                                aTabBtnsDef = Array("btnNewVersion", "btnVersionHistory", "btnArchivedVersionHistory", "btnRemovePackage", "width=20", "btnMakePending", "btnApprovePackage", "btnApproveMerge", "btnMakeRelease", "btnRejectPackage", "width=20", _
                                                        "btnMoveToView", "btnReversionPackage", "width=20", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation")
                        End If
                Else
                        ' Non-Editable Packages in Release
                        If AssocMASSREF Then
                                aTabBtnsDef = Array( "btnNewVersion-MASSREF", "btnVersionHistory", "btnArchivedVersionHistory", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation")
                        Else
                                aTabBtnsDef = Array( "btnVersionHistory", "btnArchivedVersionHistory", "btnStickyNotes", "btnDeprecation", "btnUnDeprecation")
                        End If
                End If

        Else
                ' For standalone Packages (Not view in project release)
                aTabBtnsDef = Array("btnVersionHistory", "btnArchivedVersionHistory", "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 )



'--- 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 ( "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" )



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
                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_CCB_MODE ) Or (ReleaseMode = enumDB_RELEASE_IN_RESTRICTIVE_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 ( "btnMakeUnrelease", "N" )
                        Call objBtnControl.Visible ( "btnRejectPackage", "Y" )


                        Call objBtnControl.Visible ( "btnRemovePackage", "N" )

                Else
                        'Call objBtnControl.Active ( "btnMakeRelease", "Y" )
                End If

        End If
End If



'-- Change button setting on conditions ---
If pkgInfoHash.Item ("dlocked") = "Y" Then

        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" )
        End If

ElseIf pkgInfoHash.Item ("dlocked") = "P" Then

        Call objBtnControl.Active ( "btnMakePending", "N" )
        Call objBtnControl.Active ( "btnApprovePackage", "Y" )
        Call objBtnControl.Active ( "btnRejectPackage", "Y" )

ElseIf pkgInfoHash.Item ("dlocked") = "A" Then
        Call objBtnControl.Active ( "btnMakePending", "N" )
        Call objBtnControl.Active ( "btnApprovePackage", "N" )
        Call objBtnControl.Visible ( "btnRejectPackage", "N" )

        Call objBtnControl.Visible ( "btnMakeUnrelease", "Y" )
        Call objBtnControl.Active ( "btnMakeUnrelease", "N" )
        If pkgInfoHash.Item("can_unofficial") = "true" OR objAccessControl.IsActive("EditCriticalInfoForLockedPackage") Then
                Call objBtnControl.Active ( "btnMakeUnrelease", "Y" )
        End If

Else
        ' Unlocked or rejected packages
        Call objBtnControl.Active ( "btnReversionPackage", "Y" )
        Call objBtnControl.Active ( "btnMakePending", "Y" )

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 ---
If ( ReleaseMode = enumDB_RELEASE_IN_OPEN_MODE ) AND pkgInfoHash.Item("build_type") = "A" Then
        Call objBtnControl.Visible ( "btnApprovePackage", "Y" )
Else
        Call objBtnControl.SetRelationship ( "btnApprovePackage", "ApproveForAutoBuild" )
End If

' 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.Active ( "btnRejectPackage", "Y" )
        Call objBtnControl.Visible ( "btnRejectPackage", "Y" )

        ' disable the other two types of MakeRelease button
        Call objBtnControl.Visible ( "btnApprovePackage", "N" )
        Call objBtnControl.Active ( "btnApprovePackage", "N" )
        Call objBtnControl.Visible ( "btnMakeRelease", "N" )
        Call objBtnControl.Active ( "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" )
        Else
                Call objBtnControl.Active ( "btnApproveMerge", "N" )
        End If
End If


'--- Other Access Control Action Relationships ---
'Call objBtnControl.SetRelationship ( "btnRejectPackage", "ApproveForAutoBuild" )
If ( ReleaseMode = enumDB_RELEASE_IN_CCB_MODE )  Then Call objBtnControl.SetRelationship ( "btnMakeRelease", "ApprovePackageReleaseForRestrictiveMode" )
Call objBtnControl.SetRelationship ( "btnRejectPackage", "RejectPackageFromPending" )


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" )



' -- Render Buttons
Call objBtnControl.Render  ( aTabBtnsDef, objAccessControl )
%>