Subversion Repositories DevTools

Rev

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

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'|                                                   |
'|                                      EDIT                                         |
'|                                        DEPENDENCIES                               |
'|                                                               |
'=====================================================
%>
<%
Option explicit
' Good idea to set when using redirect
Response.Expires = 0    ' always load the page, dont store
%>
<!--#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"-->
<%
' Make sure rtag_id is always present
If Request("pv_id") = "" Then
        Response.Redirect("index.asp")
End If
%>
<%
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_login.asp"-->
<!--#include file="_access_control_general.asp"-->
<!--#include file="_access_control_project.asp"-->
<%
'------------ Variable Definition -------------
Dim parPv_id
Dim rsPkgs
Dim HTML_pkg_list
Dim JSrequirementsSTR
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parPv_id = Request("pv_id")
Set pkgInfoHash = CreateObject("Scripting.Dictionary")

Sub Generate_Dependencies_List ( NNpv_id, nRtag_id, SShtml_pkg_list, SSJSreq )
        Dim rsDeps, Query_String, LatestVisible, disabled

        Query_String = ReadFile( rootPath & "queries\edit_dependencies.sql" )

        OraDatabase.Parameters.Add "RTAG_ID", nRtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
        OraDatabase.Parameters.Add "PV_ID", NNpv_id, ORAPARM_INPUT, ORATYPE_NUMBER

        Set rsDeps = OraDatabase.DbCreateDynaset( Query_String, cint(0))
        While ((NOT rsDeps.BOF) AND (NOT rsDeps.EOF))
        Dim PVID : PVID=rsDeps("pv_id")
        Dim PKGID: PKGID=rsDeps("pkg_id")

                disabled = FALSE
                'If IsNull(rsDeps("lpv_id")) Then
                '       disabled = TRUE
                'End If

                If NOT disabled Then
                        SShtml_pkg_list = SShtml_pkg_list &"<tr> "
                        SShtml_pkg_list = SShtml_pkg_list &"  <td background='images/bg_form_lightgray.gif' nowrap class='form_item'>"& rsDeps("pkg_name") &"<input name='bt"& PVID &"' type='hidden' value='"& rsDeps("build_type") &"'></td>"
                        SShtml_pkg_list = SShtml_pkg_list &"  <td background='images/bg_form_lightgray.gif'>" &_
                                "<select style='width:10em;display:none' id='edpkgn"& PVID &"' class='form_item' > " &_
                                "<input type='text' readonly ondblclick='editVerNum("& PKGID &","& PVID&");' id='pkgn"& PVID &"' name='pkgn"& PVID &"' class='form_item' size='12' value='"& rsDeps("pkg_version") &"' onBlur='Compare_Version ( """& PVID &""" );' onFocus='Compare_Version ( """& PVID &""" );'> "
                        SShtml_pkg_list = SShtml_pkg_list &"    <a href='javascript:;' onClick='editVerNum("& PKGID &","& PVID & ")'><img src='images/i_edit.gif' width='12' height='12' align='absmiddle' border='0' alt='Edit Version' title='Select Version from a list'></a> "
                        SShtml_pkg_list = SShtml_pkg_list &"  </td>"
                Else
                        SShtml_pkg_list = SShtml_pkg_list &"<tr> "
                        SShtml_pkg_list = SShtml_pkg_list &"  <td background='images/bg_form_lightgray.gif' nowrap class='form_item'>"& rsDeps("pkg_name") &"<input name='bt"& PVID &"' type='hidden' value='"& rsDeps("build_type") &"'></td>"
                        SShtml_pkg_list = SShtml_pkg_list &"  <td background='images/bg_form_lightgray.gif'><input disabled type='text' class='form_item' size='12' value='"& rsDeps("pkg_version") &"'>"
                        SShtml_pkg_list = SShtml_pkg_list &"  </td>"
                End If

                ' Latest Versions
                LatestVisible = "style='display:none;'"
                If ( PVID <> rsDeps("lpv_id") ) AND ( NOT disabled ) Then
                        LatestVisible = ""
                End If
                SShtml_pkg_list = SShtml_pkg_list &"  <td background='images/bg_form_lightgray.gif' class='sublbox_hitem'><DIV id='divLPV"& PVID &"' name='divLPV"& PVID &"' "& LatestVisible &">"&_
                                                                                      "<a href='javascript:;' onClick='Merge_Version ( """& PVID &""", """& rsDeps("lpkg_version") &""" );'>"&_
                                                                                          "<img src='images/bt_move_left.gif' border='0' alt='Bring over this latest version' hspace='2' align='absmiddle'>"&_
                                                                                          "</a>"& rsDeps("lpkg_version") &"<input name='lp"& PVID &"' type='hidden' value='"& rsDeps("lpkg_version") &"'></DIV></td> "

                SShtml_pkg_list = SShtml_pkg_list &"</tr>"

                If disabled Then
                        ' Store not found dependency as hidden field.
                        ' NOTE: This is not safe as the client can temper with hidden value but it will do for now.
                        SShtml_pkg_list = SShtml_pkg_list &"<input type='hidden' name='pkgn"& PVID &"' value='"& rsDeps("pkg_version") &"'>"
                Else
                        SSJSreq = SSJSreq & ",'pkgn"& PVID &"','"& rsDeps("pkg_name") &" Version','RisVersionStr'"
                End If

                rsDeps.MoveNext
        WEnd
        If SSJSreq <> "" Then SSJSreq = Right( SSJSreq, Len(SSJSreq)-1 )                ' Remove first comma

        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "PV_ID"
End Sub
%>
<%
If parPv_id <> "" Then
        Call Get_Pkg_Info ( parPv_id, NULL )
End If
%>

<%
'=================== MAIN LINE =====================
Call Generate_Dependencies_List ( parPv_id, parRtag_id, HTML_pkg_list, JSrequirementsSTR )

If JSrequirementsSTR = "" Then
        'Edit button clicked on empty dependency list. Redirect user to Add Dependencies
        Response.Redirect ("form_search_pkgs.asp?pv_id="& parPv_id &"&rtag_id="& parRtag_id &"&add_type="& enum_ADD_DEPENDENCIES)
End If
%>
<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 rel="stylesheet" href="images/release_manager_style.css" type="text/css">
<link rel="stylesheet" href="images/navigation.css" type="text/css">
<script language="JavaScript" src="images/common.js"></script>
<!-- DROPDOWN MENUS -->
<!--#include file="_menu_def.asp"-->
<script language="JavaScript1.2" src="images/popup_menu.js"></script>
<!-- JSON Support -------------------------->
<script language="JavaScript" src="scripts/remote_scripting.js"></script>
<script type="text/javascript" src="scripts/json2.js"></script>
<script language="JavaScript" type="text/JavaScript">
<!--

// Restore original value
function Merge_Version (pv_id, lpkg_version) {
    endEditVerNum(pv_id);
    var ediv = MM_findObj("divLPV"+ pv_id );
    var epkg = MM_findObj("pkgn"+ pv_id );

    if(epkg) epkg.value = lpkg_version;
    if(ediv) ediv.style.display = "none";
}

// Highlight diff between release and user selection
function Compare_Version ( pv_id ) {
        var cv, lv, el;

    el = MM_findObj( "pkgn" + pv_id );
        cv = (el) ? el.value : 0;

        lv = MM_findObj( "lp" + pv_id ).value;
    var ediv = MM_findObj("divLPV"+ pv_id );
    ediv.style.display = (cv == lv) ? 'none' : 'block';
}

// Edit the version number
var editData = new Object();
function editVerNum(NNpkg_id, NN_pv_id)
{
    // Only initiate the edit once
    if (editData[NN_pv_id])
    {
        endEditVerNum(NN_pv_id);
        return;
    }

    // Get the base element in the document
    var elem = document.getElementById('pkgn' + NN_pv_id );
    var elemed = document.getElementById('edpkgn' + NN_pv_id );
    if ( ! (elem && elemed) )
        return;

    // Show edit element and hide the fixed text
    elem.style.display = 'none';
    elemed.style.display = '';

    // Populate essential fields
    elemed.onchange = function(){editUpdate(NN_pv_id);}
    elemed.onblur = elemed.onchange;

    // Create a dummy selection to indicate loading
    var el = document.createElement("option");
    var vname = "Loading";
    el.textContent = vname;
    el.value = vname;
    elemed.appendChild(el);

    // Save refs to the two elements
    var np = editData[NN_pv_id] = new Object();
    
    np.edit = elemed;
    np.elem = elem;
    np.Value = elem.value;

    // Load version data into this new element
    getVersions(NNpkg_id, NN_pv_id);
}

function editUpdate(NN_pv_id)
{
    var sd = editData[NN_pv_id];
    sd.elem.value = sd.edit.value;
    Compare_Version(NN_pv_id);
}

// Globals are used to save state information
function endEditVerNum(NN_pv_id)
{
    var sd = editData[NN_pv_id];
    if (sd) {
        sd.elem.value = sd.edit.value;
        sd.edit.style.display = 'none';
        sd.elem.style.display = '';

        delete editData[NN_pv_id];
    }
}

// Allow the user to populate the version selector box
// Enables the selector once its been populated
// Uses AJAX to populate the item on demand
function getVersions(NNpkg_id, NN_pv_id)
{
    xmlHttp=GetXmlHttpObject(getVersionsDone);
    if (xmlHttp==null)
    {
        alert ("Your browser does not support AJAX!");
        return;
    }

    var url = "_json_checkPackage.asp?"
            + "pkg_id=" + NNpkg_id
            + "&ref=" + NN_pv_id
            + "&Opr=getVerList";
    MM_showProgressBar();
    xmlHttp.open("GET",url,true);  // `false` makes the request synchronous
    xmlHttp.send(null);
}

// Call back for getVersions
function getVersionsDone()
{
    //readyState of 4 or 'complete' represents that data has been returned
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
        MM_hideProgressBar();

        //Gather the results from the callback
        var str = xmlHttp.responseText;
//alert("JSON:" + str);
        if ( !str ) {
            alert("Empty responce from Release Manager. May have been logged ");
            return;
        }
        var myJson = JSON.parse(str);
        if(myJson.error)
        {
            alert("Invalid responce from Release Manager");
            return;
        }

        var ref = myJson.VersionRef;
        var sd = editData[ref];
        var select = sd.edit;
        var sv = (sd) ? sd.Value  : 0;

        select.innerHTML = '';
        select.disabled = false;
        for( var ii=0; ii< myJson.Versions.length; ii++)
        {
            var el = document.createElement("option");
            var vname = myJson.Versions[ii].vname;

            el.selected = ( vname == sv );
            var p1 = el.selected ? '>' : ' ';
            var p2 = (myJson.Versions[ii].dlocked == "Y") ? 'R ' : '    ';

            el.textContent = p1 + p2 + vname;
            el.value = vname;
            select.appendChild(el);
        }
    }
}

// -->
</script>

</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
<!-- MENU LAYERS -------------------------------------->
<div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
</div>
<!-- TIPS LAYERS -------------------------------------->
<div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
<!----------------------------------------------------->
<!-- HEADER -->
<!--#include file="_header.asp"-->
<!-- BODY ---->
<table width="100%" height="80%" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td align="center" valign="top" background="images/bg_lght_gray.gif">
      <!-- MIDDLE ---------------------------------------->
      <table width="650" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="1%"></td>
                <td align="right"><img src="images/h_trsp_dot.gif" width="30" height="30"></td>
                <td width="1%"></td>
              </tr>
              <tr>
                <td width="1%"></td>
                <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td nowrap class="form_ttl">EDIT dependencies</td>
                      <td align="right" valign="bottom"></td>
                    </tr>
                  </table></td>
                <td width="1%"></td>
              </tr>
              <tr>
                <td align="left" valign="top" width="1%" background="images/lbox_bg_blue.gif"><img src="images/lbox_tl_cnr_b.gif" width="13" height="13"></td>
                <td background="images/lbox_bg_blue.gif" align="right">
                  <!-- Heading -->
                  <img src="images/h_trsp_dot.gif" width="1" height="20">
                  <!-- END Heading -->
                </td>
                <td align="right" valign="top" width="1%" background="images/lbox_bg_blue.gif"><img src="images/lbox_tr_cnr_b.gif" width="13" height="13"></td>
              </tr>
              <tr>
                <td width="1%" bgcolor="#FFFFFF"><img src="images/h_trsp_dot.gif" width="10" height="100"></td>
                <td bgcolor="#FFFFFF" valign="top">
                  <!-- Body -->
                  <table width="100%" border="0" cellspacing="1" cellpadding="2">
                                    <form name="editdep" method="post" action="_update_dependencies.asp" onSubmit="MM_validateForm(<%=JSrequirementsSTR%>);return document.MM_returnValue">
                                      <tr>
                        <td colspan="2" width="1%" nowrap class="form_field"><%=pkgInfoHash.Item ("pkg_name")%>&nbsp;<%=pkgInfoHash.Item ("pkg_version")%></td>
                      </tr>
                      <tr>
                        <td colspan="2" width="1%" nowrap class="form_field">
                          <table width="100%" border="0" cellspacing="1" cellpadding="2">
                            <tr>
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="1%" class="form_field">Package Name<img src="images/h_trsp_dot.gif" width="1" height="20" align="absmiddle"></td>
                              <td background="images/bg_form_lightbluedark.gif" nowrap width="50%" class="form_field">Version</td>
                                                          <td background="images/bg_form_lightbluedark.gif" nowrap width="50%" class="form_field">Released</td>
                            </tr>
                                <%=HTML_pkg_list%>
                            <tr>
                              <td nowrap><img src="images/h_trsp_dot.gif" width="120" height="1"></td>
                              <td></td>
                                                          <td></td>
                            </tr>
                          </table></td>
                      </tr>
                      <tr>
                        <td colspan="2" nowrap>
                          <input type="submit" name="btn" value="Update" class="form_btn">
                                                  <input type="reset" name="btn" value="Cancel" class="form_btn" onClick="history.back();">
                          <SPAN id="ProgressBar" name="ProgressBar" style="visibility:hidden;" class="body_scol"><img src="images/i_processing.gif" width="11" height="17" align="absmiddle" hspace="3">Processing...</SPAN>
                          <br> <br> </td>
                      </tr>
                                          <input type="hidden" name="update_type" value="edit_custom">
                                          <input type="hidden" name="pv_id" value="<%=parPv_id%>">
                      <input type="hidden" name="rtag_id" value="<%=parRtag_id%>">
                    </form>
                  </table>
                  <!-- END Body-->
                </td>
                <td width="1%" background="images/lbox_bgside_white.gif">&nbsp;</td>
              </tr>
              <tr>
                <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom"><img src="images/lbox_bl_cnr_b.gif" width="13" height="13"></td>
                <td background="images/lbox_bg_blue.gif"></td>
                <td width="1%" background="images/lbox_bg_blue.gif" valign="bottom" align="right"><img src="images/lbox_br_cnr_b.gif" width="13" height="13"></td>
              </tr>
            </table></td>
        </tr>
      </table>
      <!-------------------------------------------------->
    </td>
  </tr>
  <tr>
    <td valign="bottom" background="images/bg_lght_gray.gif">
        <!-- FOOTER -->
        <!--#include file="_footer.asp"-->
        </td>
  </tr>
</table>
</body>
</html>
<%
Call Destroy_All_Objects
%>