%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'| |
'| RTREE |
'| |
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0 ' always load the page, dont store
%>
<%
' Make sure rtag_id is always present
If Request("proj_id") = "" Then
Response.Redirect("index.asp")
End If
'------------ ACCESS CONTROL ------------------
%>
<%
'------------ Variable Definition -------------
Dim objSortHelper
Dim ViewType
Dim rsQryStr
Dim rsQry
Dim parProjId
Dim parShowFilter
Dim nProjTreeVersion
Dim objBtnControl
Dim currLevel, lastLevel, lastRow, aVersions, i
Dim dListFilter
'------------ Constants Declaration -----------
'Const LIMG_TREE_I_HALF = ""
'Const LIMG_TREE_I_FULL = ""
'Const LIMG_TREE_T = ""
Const LIMG_TREE_I_HALF = ""
Const LIMG_TREE_I_FULL = ""
Const LIMG_TREE_T = ""
Const LIMG_LIST_VIEW = ""
Const LIMG_TREE_VIEW = ""
Const LCONST_LIST_VIEW = 1
Const LCONST_TREE_VIEW = 2
Const DEFAULT_SHOW_FILTER = "'N','R','C'"
Const LIMG_FILTER_ON = ""
Const LIMG_FILTER_OFF = ""
Const LIMG_DROP_DOWN_ARROW = ""
'------------ Variable Init -------------------
parProjId = Request("proj_id")
' Get show_filter from query string or failing that, from the cookie.
' Make sure that if neither supplies it, use the default
parShowFilter = Request("show_filter")
If NOT IsNull(parShowFilter) AND parShowFilter <> "" Then
Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = parShowFilter
Else
parShowFilter = Request.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter")
If IsNull(parShowFilter) OR parShowFilter = "" Then
parShowFilter = DEFAULT_SHOW_FILTER
Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = parShowFilter
End If
End If
Set dListFilter = CreateObject("Scripting.Dictionary")
nProjTreeVersion = GetProjTreeVersion( parProjId )
Set objBtnControl = New ActionButtonControl
objPMod.PersistInQryString("proj_id")
'----------------------------------------------
%>
<%
'--------------------------------------------------------------------------------------------------------------------------
' Determines icon that precedes the drop down arrow in the filter box
Function GetIsListFilterInUseIcon()
GetIsListFilterInUseIcon = LIMG_FILTER_ON & LIMG_DROP_DOWN_ARROW
If dListFilter.Count > 0 Then
GetIsListFilterInUseIcon = LIMG_FILTER_OFF & LIMG_DROP_DOWN_ARROW
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Determines if the specified filter is on/off and returns a string to use to check the associated checkbox accordingly
Function GetIsListFilterChecked( nFilterId )
GetIsListFilterChecked = ""
If dListFilter.Exists ( "'" & CStr(nFilterId) & "'" ) Then
GetIsListFilterChecked = "checked"
End If
End Function
'--------------------------------------------------------------------------------------------------------------------------
' Reads the cookie for the filter and creats a dictionary element for each item therein. the dictionary
' is used by the GetIsListFilterChecked function to determine checkbox state in the filter options
Sub GetListFilterValues ( outDepFilter )
Dim FilterVal, aFilterValues
If Request.Cookies(COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") <> "" Then
aFilterValues = Split( Replace( Request.Cookies(COOKIE_RELEASE_MANAGER_MEMORY)("show_filter"), " ", ""), ",")
For Each FilterVal In aFilterValues
outDepFilter.Item (CStr( FilterVal )) = ""
Next
End If
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Function GetProjTreeVersion ( nProjId )
Dim rsTemp, QueryString
QueryString = _
" SELECT rt.RTAG_VERSION "&_
" FROM RELEASE_TAGS rt "&_
" WHERE rt.PROJ_ID = :PROJ_ID "&_
" AND rt.RTAG_ID = rt.PARENT_RTAG_ID"
OraDatabase.Parameters.Add "PROJ_ID", nProjId, ORAPARM_INPUT, ORATYPE_NUMBER
Set rsTemp = OraDatabase.DbCreateDynaset( QueryString, cint(0))
OraDatabase.Parameters.Remove "PROJ_ID"
If ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF)) Then
GetProjTreeVersion = rsTemp("rtag_version")
Else
GetProjTreeVersion = NULL
End If
rsTemp.Close
Set rsTemp = nothing
End Function
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub RenderRowConnectors ( nLastLevel, nCurrLevel )
Dim i, LastLine
'-- Initial Draw --
If nLastLevel = 0 Then
nLastLevel = nCurrLevel
Exit Sub
End If
'-- Calculate number of half lines rendered
If nLastLevel < nCurrLevel Then
LastLine = nLastLevel
Else
LastLine = nCurrLevel
End If
'-- Render half lines
For i = 1 To LastLine
Response.write LIMG_TREE_I_HALF
Next
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub RenderIndent ( nLastLevel, nCurrLevel )
Dim i
If nCurrLevel <= 1 Then Exit Sub
'-- Render half lines
If nCurrLevel > 2 Then
For i = 1 To nCurrLevel - 2
Response.write LIMG_TREE_I_FULL
Next
End If
'-- Render branch or line
If nLastLevel < nCurrLevel Then
Response.write LIMG_TREE_T
Else
Response.write LIMG_TREE_I_FULL
End If
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Function GetLevel ( sRtagVersion )
Dim tempArr
If InStr( sRtagVersion, "." ) > 0 Then
'-- Dot separator found --
'-- Split version --
tempArr = Split( sRtagVersion, "." )
GetLevel = UBound( tempArr ) + 1
Else
GetLevel = 1
End If
End Function
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub NewRelease ()
On Error Resume Next
objEH.Try
If NOT IsNumeric(Request("rtag_id_list")) Then
Err.Raise 8, "Please select one release only.", "No further details available."
Else
Call OpenInWindow ( "new_release.asp?rtag_id_list="& Replace( Request("rtag_id_list"), " ","" ) &"&"& objPMod.ComposeURL() )
End If
objEH.Catch
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub DestroyRelease ()
On Error Resume Next
objEH.Try
If NOT IsNumeric(Request("rtag_id_list")) Then
Err.Raise 8, "Please select one release only.", "No further details available."
Else
If Request("rtag_id_list") = "" Then
Err.Raise 8, "Please select one release.", "No further details available."
Else
Call OpenInWindow ( "_destroy_release.asp?rtag_id_list="& Replace( Request("rtag_id_list"), " ","" ) &"&"& objPMod.ComposeURL() )
End If
End If
objEH.Catch
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub EditRelease ()
On Error Resume Next
objEH.Try
If NOT IsNumeric(Request("rtag_id_list")) Then
Err.Raise 8, "Please select one release only.", "No further details available."
Else
If Request("rtag_id_list") = "" Then
Err.Raise 8, "Please select one release.", "No further details available."
Else
Call OpenInWindow ( "form_edit_release.asp?rtag_id_list="& Replace( Request("rtag_id_list"), " ","" ) &"&"& objPMod.ComposeURL() )
End If
End If
objEH.Catch
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub MoveRelease ()
On Error Resume Next
objEH.Try
If NOT IsNumeric(Request("rtag_id_list")) Then
Err.Raise 8, "Please select one release only.", "No further details available."
Else
If Request("rtag_id_list") = "" Then
Err.Raise 8, "Please select one release.", "No further details available."
Else
Call OpenInWindow ( "form_move_release.asp?rtag_id_list="& Replace( Request("rtag_id_list"), " ","" ) &"&"& objPMod.ComposeURL() )
End If
End If
objEH.Catch
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub MergeManager ()
Dim aReleases
On Error Resume Next
objEH.Try
If Request("rtag_id_list") <> "" Then
aReleases = Split ( Replace( Request("rtag_id_list"), " ", ""), "," )
If UBound(aReleases) = 0 Then
' Open Merge Manager
Call OpenInWindow ( "diff.asp?rtagA="& aReleases(0) )
ElseIf UBound(aReleases) = 1 Then
' Open Merge Manager
Call OpenInWindow ( "diff.asp?rtagA="& aReleases(0) &"&rtagB="& aReleases(1) )
Else
Err.Raise 8, "Please select maximum two release.", "No further details available."
End If
Else
' Open Merge Manager without parameters
Call OpenInWindow ( "diff.asp" )
End If
objEH.Catch
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
Function GetViewType ()
Dim CookieViewType
CookieViewType = Request.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW")
If CookieViewType <> "" Then
' Get current view type from cookie
GetViewType = CInt(CookieViewType)
Else
' Set current view to list view
Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW") = LCONST_LIST_VIEW
GetViewType = LCONST_LIST_VIEW
End If
End Function
'----------------------------------------------------------------------------------------------------------------------------------------------
Sub SetViewType ()
If Request("viewtype") = "" Then Exit Sub ' Nothing to do
Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW") = Request("viewtype")
End Sub
'----------------------------------------------------------------------------------------------------------------------------------------------
%>
<%
'------------ RUN BEFORE PAGE RENDER ----------
If (Request("action") <> "") Then
If Request("btn") = "Show" Then
' Store filter in cookie
Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = Request("listFilter")
parShowFilter = Request("listFilter")
Else
'-- Select Action
Select Case Request("action")
Case "btnNewRelease"
Call NewRelease()
Case "btnDestroyRelease"
Call DestroyRelease()
Case "btnEditRelease"
Call EditRelease()
Case "btnMoveRelease"
Call MoveRelease()
Case "btnMergeManager"
Call MergeManager()
Case "btnAdminView"
Dim Query_String
Query_String = _
" SELECT DISTINCT vi.view_id, vi.view_name"&_
" FROM VIEWS vi"&_
" WHERE vi.view_name = 'PROJECT WIDE'"
Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
Dim viewRecordCount
Dim id
viewRecordCount=0
viewRecordCount = rsQry.RecordCount
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
id=rsQry.Fields("view_id")
rsQry.MoveNext
WEnd
rsQry.Close()
Set rsQry = nothing
If viewRecordCount = 0 Then
OraDatabase.Parameters.Add "PROJ_ID", parProjId, ORAPARM_INPUT, ORATYPE_NUMBER
Query_String = _
" SELECT DISTINCT vi.view_id, vi.view_name"&_
" FROM VIEWS vi, RELEASE_CONTENT rc, RELEASE_TAGS rt"&_
" WHERE rc.BASE_VIEW_ID = vi.VIEW_ID AND rt.proj_id = "& parProjId &"AND rc.rtag_id = rt.rtag_id"&_
" ORDER BY ( vi.view_name )"
Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
OraDatabase.Parameters.Remove "PROJ_ID"
viewRecordCount = rsQry.RecordCount
While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
id=rsQry.Fields("view_id")
rsQry.MoveNext
WEnd
rsQry.Close()
Set rsQry = nothing
End If
If viewRecordCount = 0 Then
Call OpenInWindow ( "form_edit_project_view.asp?proj_id="&Request("proj_id"))
Else
Call OpenInWindow ( "form_edit_project_view.asp?proj_id="&Request("proj_id")&"&FRview_id="&id)
End If
End Select
End If
End If
' Set view type if required
Call SetViewType ()
' Get current view type
ViewType = GetViewType()
'----------------------------------------------
%>
<%
Set rsQry = OraDatabase.DbCreateDynaset( "SELECT PROJ_NAME FROM PROJECTS WHERE PROJ_ID="& Request("proj_id"), ORADYN_DEFAULT )
%>
<%=rsQry("proj_name")%>
<%
rsQry.Close
Set rsQry = Nothing
%>
<%
If ViewType = LCONST_TREE_VIEW Then
Response.write LIMG_TREE_VIEW
Else
Response.write LIMG_LIST_VIEW
End If
%>
<%
Dim aBtnsDef
' Define action buttons
aBtnsDef = Array("btnNewRelease", "btnEditRelease", "btnMoveRelease", "width=20", "btnDestroyRelease", "width=20", "btnMergeManager", "width=20", "btnAdminView")
' Load action buttons from database
Call objBtnControl.LoadActionButtons ( aBtnsDef, OraDatabase )
' Set spacing to minimum between buttons
objBtnControl.ButtonSpacer = 0
objBtnControl.ImageHspace = 2
' Access Control
If NOT objAccessControl.IsActive("CreateNewRelease") Then Call objBtnControl.Active ( "btnNewRelease", "N" )
If NOT objAccessControl.IsActive("DestroyRelease") Then Call objBtnControl.Active ( "btnDestroyRelease", "N" )
If NOT objAccessControl.IsActive("CreateNewRelease") Then Call objBtnControl.Active ( "btnMoveRelease", "N" )
' -- Render Buttons
Call objBtnControl.Render ( aBtnsDef, objAccessControl )
%>