Subversion Repositories DevTools

Rev

Rev 5506 | Rev 5983 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5357 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'|                                                   |
5
'|                        RTREE                      |
6
'|                                                   |
7
'=====================================================
8
%>
9
<%
10
Option explicit
11
' Good idea to set when using redirect
12
Response.Expires = 0   ' always load the page, dont store
13
%>
14
<!--#include file="common/conf.asp"-->
15
<!--#include file="common/globals.asp"-->
16
<!--#include file="common/formating.asp"-->
17
<!--#include file="common/qstr.asp"-->
18
<!--#include file="common/common_subs.asp"-->
19
<!--#include file="common/_rtree_common.asp"-->
20
<!--#include file="common/daemon_status.asp"-->
21
<%
22
'------------ ACCESS CONTROL ------------------
23
%>
24
<!--#include file="_access_control_general.asp"-->
25
<%
26
'------------ Variable Definition -------------
27
Dim ViewType
28
Dim bIsaTreeView
29
Dim rsQryStr
30
Dim rsQry
31
Dim parProjId
32
Dim parShowFilter
33
Dim objBtnControl
34
Dim currLevel, lastLevel
35
Dim dListFilter
36
Dim objDmSts
37
Dim hoverTitle, createdBy, comment
38
Dim bCanMove
39
Dim bCanDestroy
40
Dim bCanClone
41
Dim bCanUnarchive
42
Dim bCanCloseArchive
43
 
44
Dim bCanOpenToClose
45
Dim bCanRestrictiveToClose
46
Dim bCanCloseToClose
47
Dim bCanPreserveToClose
48
Dim bCanArchiveToClose
49
 
50
Dim bCanOpenToPreserve
51
Dim bCanRestrictiveToPreserve
52
Dim bCanCloseToPreserve
53
Dim bCanPreserveToPreserve
54
Dim bCanArchiveToPreserve
55
 
56
Dim bCanOpenToArchive
57
Dim bCanRestrictiveToArchive
58
Dim bCanCloseToArchive
59
Dim bCanPreserveToArchive
60
Dim bCanArchiveToArchive
61
 
62
 
63
'------------ Constants Declaration -----------
64
Const LIMG_TREE_I_HALF = "<img src='images/spacer.gif' width='20' height='1'>"
65
Const LIMG_TREE_I_NONE = "<img src='images/spacer.gif' width='30' height='15'>"
66
Const LIMG_TREE_I_FULL = "<img src='images/dot1h.gif' width='30' height='15'>"
67
Const LIMG_TREE_T      = "<img src='images/dot1.gif' width='30' height='15'>"
68
Const LIMG_LIST_VIEW   = "<img src='images/abtn_list_view.gif' border='0' align=absmiddle' name='imgviewtype' usemap='#mapviewtype' id='imgviewtype'>"
69
Const LIMG_TREE_VIEW   = "<img src='images/abtn_tree_view.gif' border='0' align=absmiddle' name='imgviewtype' usemap='#mapviewtype' id='imgviewtype'>"
70
 
71
Const LCONST_LIST_VIEW = 1
72
Const LCONST_TREE_VIEW = 2
73
 
74
Const DEFAULT_SHOW_FILTER = "'N','R','C','O'"
75
 
76
'------------ Variable Init -------------------
77
'   Need either proj_id or rtag_id, for which we will calculate a project id
78
parProjId = Request("proj_id")
79
If parProjId = "" Then parProjId = DB_PROJ_ID
80
If parProjId = ""  OR parProjId < 0 Then
5957 dpurdie 81
   Call Destroy_All_Objects
5357 dpurdie 82
   Response.Redirect("index.asp")
83
End If
84
Call objPMod.StoreParameter("proj_id", parProjId)
85
 
86
 
87
' Get show_filter from query string or failing that, from the cookie.
88
' Make sure that if neither supplies it, use the default
89
parShowFilter = Request("show_filter")
90
If NOT IsNull(parShowFilter) AND parShowFilter <> "" Then
91
   Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = parShowFilter
92
Else
93
   parShowFilter = Request.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter")
94
   If IsNull(parShowFilter) OR parShowFilter = "" Then
95
      parShowFilter = DEFAULT_SHOW_FILTER
96
      Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = parShowFilter
97
   End If
98
End If
99
 
100
Set dListFilter = CreateObject("Scripting.Dictionary")
101
 
102
Set objBtnControl = New ActionButtonControl
103
 
104
' Init access control
105
bCanMove =  canActionControlInProject("ConfigureRelease") 
106
bCanDestroy = canActionControlInProject("DestroyRelease")
107
bCanClone =  canActionControlInProject("CreateNewRelease")
108
 
109
bCanOpenToClose             =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_OPEN_MODE,enumDB_RELEASE_IN_CLOSED_MODE)
110
bCanRestrictiveToClose      =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_RESTRICTIVE_MODE,enumDB_RELEASE_IN_CLOSED_MODE)
111
bCanCloseToClose            =  FALSE
112
bCanPreserveToClose         =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_PRESERVE_MODE,enumDB_RELEASE_IN_CLOSED_MODE)
113
bCanArchiveToClose          =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_ARCHIVE_MODE,enumDB_RELEASE_IN_CLOSED_MODE)
114
 
115
bCanOpenToPreserve          =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_OPEN_MODE,enumDB_RELEASE_IN_PRESERVE_MODE)
116
bCanRestrictiveToPreserve   =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_RESTRICTIVE_MODE,enumDB_RELEASE_IN_PRESERVE_MODE)
117
bCanCloseToPreserve         =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_CLOSED_MODE,enumDB_RELEASE_IN_PRESERVE_MODE)
118
bCanPreserveToPreserve      =  FALSE
119
bCanArchiveToPreserve       =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_ARCHIVE_MODE,enumDB_RELEASE_IN_PRESERVE_MODE)
120
 
121
bCanOpenToArchive           =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_OPEN_MODE,enumDB_RELEASE_IN_ARCHIVE_MODE)            
122
bCanRestrictiveToArchive    =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_RESTRICTIVE_MODE,enumDB_RELEASE_IN_ARCHIVE_MODE)     
123
bCanCloseToArchive          =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_CLOSED_MODE,enumDB_RELEASE_IN_ARCHIVE_MODE)          
124
bCanPreserveToArchive       =  ReleaseModeAccessCheck(enumDB_RELEASE_IN_PRESERVE_MODE,enumDB_RELEASE_IN_ARCHIVE_MODE)                                                                                          
125
bCanArchiveToArchive        =  FALSE
126
 
127
'----------------------------------------------
128
%>
129
<%
130
'--------------------------------------------------------------------------------------------------------------------------
131
' Determines if the specified filter is on/off and returns a string to use to check the associated checkbox accordingly
132
Function GetIsListFilterChecked( nFilterId )
133
   GetIsListFilterChecked = ""
134
 
135
  If bIsaTreeView Then
136
       ' Disable the control in Tree View
137
       GetIsListFilterChecked = GetIsListFilterChecked & " checked disabled"
138
  Else
139
       If dListFilter.Exists ( "'" & CStr(nFilterId) & "'"  ) Then
140
          GetIsListFilterChecked = "checked"
141
       End If
142
  End If
143
 
144
End Function
145
'--------------------------------------------------------------------------------------------------------------------------
146
' Reads the cookie for the filter and creats a dictionary element for each item therein. the dictionary
147
' is used by the GetIsListFilterChecked function to determine checkbox state in the filter options
148
Sub GetListFilterValues ( outDepFilter )
149
   Dim FilterVal, aFilterValues
150
 
151
   If parShowFilter <> "" Then
152
      aFilterValues = Split( Replace( parShowFilter, " ", ""), ",")
153
 
154
      For Each FilterVal In aFilterValues
155
         outDepFilter.Item (CStr( FilterVal )) = ""
156
      Next
157
   End If
158
End Sub
159
 
160
'----------------------------------------------------------------------------------------------------------------------------------------------
161
Sub RenderIndent ( nLastLevel, nCurrLevel )
162
   Dim i
163
 
164
   If nCurrLevel <= 1 Then Exit Sub
165
 
166
   '-- Render half lines
167
   If nCurrLevel > 2 Then
168
      For i = 1 To nCurrLevel - 2
169
         Response.write LIMG_TREE_I_NONE
170
      Next
171
   End If
172
 
173
 
174
   '-- Render branch or line
175
   If nLastLevel < nCurrLevel Then
176
      Response.write LIMG_TREE_T
177
   Else
178
      Response.write LIMG_TREE_I_FULL
179
   End If
180
 
181
End Sub
182
'----------------------------------------------------------------------------------------------------------------------------------------------
183
Sub NewRelease ()
184
    Call OpenInWindow ( "new_release.asp?" & objPMod.ComposeURL() )
185
End Sub
186
'----------------------------------------------------------------------------------------------------------------------------------------------
187
Sub MergeManager ()
188
    ' Open Merge Manager without parameters
189
    Call OpenInWindow ( "diff.asp" )
190
End Sub
191
'----------------------------------------------------------------------------------------------------------------------------------------------
192
Sub AdminView()
193
     Dim Query_String
194
     Query_String = _
195
     "   SELECT DISTINCT vi.view_id, vi.view_name"&_
196
     "   FROM VIEWS vi"&_
197
     "   WHERE vi.view_name = 'PROJECT WIDE'"
198
     Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
199
 
200
     Dim viewRecordCount
201
     Dim id
202
     viewRecordCount=0
203
     viewRecordCount = rsQry.RecordCount
204
 
205
     While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
206
        id=rsQry.Fields("view_id")
207
        rsQry.MoveNext
208
     WEnd
209
 
210
      rsQry.Close()
211
     Set rsQry = nothing
212
 
213
     If viewRecordCount = 0 Then
214
        OraDatabase.Parameters.Add "PROJ_ID", parProjId,    ORAPARM_INPUT, ORATYPE_NUMBER
215
        Query_String = _
216
        " SELECT DISTINCT vi.view_id, vi.view_name"&_
217
        " FROM VIEWS vi, RELEASE_CONTENT rc, RELEASE_TAGS rt"&_
218
        " WHERE rc.BASE_VIEW_ID = vi.VIEW_ID AND rt.proj_id = "& parProjId &"AND rc.rtag_id = rt.rtag_id"&_
219
        " ORDER BY ( vi.view_name )"
220
 
221
        Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )
222
 
223
        OraDatabase.Parameters.Remove "PROJ_ID"
224
        viewRecordCount = rsQry.RecordCount
225
 
226
        While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
227
           id=rsQry.Fields("view_id")
228
           rsQry.MoveNext
229
        WEnd
230
 
231
        rsQry.Close()
232
        Set rsQry = nothing
233
     End If
234
 
235
     If viewRecordCount = 0 Then
236
        Call OpenInWindow ( "form_edit_project_view.asp?proj_id="&parProjId)
237
     Else
238
        Call OpenInWindow ( "form_edit_project_view.asp?proj_id="&parProjId&"&FRview_id="&id)
239
     End If
240
End Sub
241
'----------------------------------------------------------------------------------------------------------------------------------------------
242
Function GetViewType ()
243
   Dim CookieViewType
244
 
245
   CookieViewType = Request.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW")
246
 
247
   If CookieViewType <> "" Then
248
      ' Get current view type from cookie
249
      GetViewType = CInt(CookieViewType)
250
   Else
251
      ' Set current view to list view
252
      Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW") = LCONST_LIST_VIEW
253
      GetViewType = LCONST_LIST_VIEW
254
   End If
255
 
256
End Function
257
'----------------------------------------------------------------------------------------------------------------------------------------------
258
Sub SetViewType ()
259
   If Request("viewtype") = "" Then Exit Sub    ' Nothing to do
260
 
261
   Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("RELEASE_VIEW") = Request("viewtype")
262
End Sub
263
'----------------------------------------------------------------------------------------------------------------------------------------------
264
Sub RenderDaemonStatusConfig(nRtagId) 
265
   %>
266
   <table class="embedded_table">
267
    <tr>
268
     <td>
269
     <%
270
      Response.Write("<img src=""icons/i_edit.gif"" border=0 vspace=0 hspace=0 title='Configure Daemons' onclick='location.href=""release_config.asp?rtag_id="&nRtagId&"""'>")
271
      Response.Write("<img src=""icons/ext_log.gif"" border=0 vspace=0 hspace=0 title='View Build Log'onclick='location.href=""build_release_log.asp?rtag_id="&nRtagId&"""'>")
272
     %>
273
     </td>
274
     <td>
275
   <%
276
    Call objDmSts.RenderDaemonStatus(nRtagId,16)
277
    %>
278
        </td>
279
        </tr>
280
        </table>
281
    <%
282
End Sub
283
 
284
'----------------------------------------------------------------------------------------------------------------------------------------------
285
Sub RenderLxrState()
286
    Response.Write RenderLxrStateString(rsQry("rtag_id"),rsQry("lxr"),rsQry("lxrserver"),rsQry("official"),"")
287
End Sub
288
'----------------------------------------------------------------------------------------------------------------------------------------------
5394 dpurdie 289
Function RenderActions(nRtagId, sOfficial, nCanDelete)
290
    Response.Write "<span title='Select operation from dropdown menu' " &_
291
                       "class='select-operation ui-icon ui-icon-triangle-1-s' " &_
292
                       "data-rtag-id='" & nRtagId &_
293
                       "' data-official='"& sOfficial &_
294
                       "' data-candelete='"& nCanDelete &_
295
                       "' style='display:inline-block'>"&_
296
                   "</span>"
5357 dpurdie 297
End Function
298
'----------------------------------------------------------------------------------------------------------------------------------------------
299
Function GetMassRefComments (nRtagId)
300
   Dim UsedBy
301
   Dim rsQryUse
302
   Dim linkB
303
   Dim joiner : joiner = ""
304
   Dim comment : comment = ""
305
 
306
'   If parProjId <> 2 Then
307
'     assocMASSREF = rsQry("assoc_mass_ref")
308
'     If assocMASSREF <> "" Then
309
'        Set rsQryAssoc = OraDatabase.DbCreateDynaset("SELECT RTAG_NAME, RTAG_ID FROM RELEASE_TAGS WHERE RTAG_ID="&assocMASSREF , ORADYN_DEFAULT)
310
'        assocMASSREFName = rsQryAssoc("RTAG_NAME")
311
'        link = rsQryAssoc("rtag_id")
312
'        rsQryAssoc.Close
313
'        Set rsQryAssoc = Nothing
314
'     Else
315
'        assocMASSREFName = "None."
316
'     End If
317
'   Else
318
      UsedBy = nRtagId
319
      If UsedBy <> "" Then
320
         Set rsQryUse = OraDatabase.DbCreateDynaset("SELECT * FROM RELEASE_TAGS RT, PROJECTS P WHERE RT.ASSOC_MASS_REF=" & nRtagId & " AND RT.PROJ_ID=P.PROJ_ID", ORADYN_DEFAULT)
321
 
322
         While ((NOT rsQryUse.BOF) AND (NOT rsQryUse.EOF))
323
            If rsQryUse("assoc_mass_ref") = UsedBy Then
324
               linkB = "dependencies.asp?rtag_id="&rsQryUse("rtag_id")
325
               comment = joiner & rsQryUse("proj_name") & " -> <a href="&linkB&">"& rsQryUse("rtag_name") &"</a>"
326
               joiner = " <br> "
327
               rsQryUse.MoveNext
328
            End If
329
         WEnd
330
         rsQryUse.Close
331
         Set rsQryUse = Nothing
332
      End If
333
      GetMassRefComments = comment
334
End Function
335
'----------------------------------------------------------------------------------------------------------------------------------------------
336
%>
337
<%
338
'------------ RUN BEFORE PAGE RENDER ----------
339
If (Request("action") <> "") Then
340
 
341
   If Request("btn") = "Update" Then
342
      ' Store filter in cookie
343
      Response.Cookies (COOKIE_RELEASE_MANAGER_MEMORY)("show_filter") = Request("listFilter")
344
      parShowFilter = Request("listFilter")
345
      If IsNull(parShowFilter) OR parShowFilter = "" Then parShowFilter = DEFAULT_SHOW_FILTER
346
   Else
347
      '-- Select Action
348
      Select Case Request("action")
349
          Case "btnNewRelease"
350
             Call NewRelease()
351
 
352
          Case "btnMergeManager"
353
             Call MergeManager()
354
 
355
          Case "btnAdminView"
356
             Call AdminView()
357
      End Select
358
   End If
359
 
360
End If
361
 
362
' Set view type  if required
363
Call SetViewType ()
364
 
365
' Get current view type
366
ViewType = GetViewType()
367
bIsaTreeView = (ViewType = LCONST_TREE_VIEW)
368
 
369
'----------------------------------------------
370
%>
371
<html>
372
<head>
373
<%
374
   Set rsQry = OraDatabase.DbCreateDynaset( "SELECT PROJ_NAME FROM PROJECTS WHERE PROJ_ID="& parProjId, ORADYN_DEFAULT )
375
%>
376
<title><%=rsQry("proj_name")%></title>
377
<link rel="shortcut icon" href="<%=FavIcon%>"/>
378
<%
379
   rsQry.Close
380
   Set rsQry = Nothing
381
%>
382
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
383
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
384
<link rel="stylesheet" href="images/release_manager_style.css" type="text/css">
385
<link rel="stylesheet" href="images/navigation.css" type="text/css">
386
<script language="JavaScript" src="images/common.js"></script>
387
 
388
<!-- DROPDOWN MENUS -->
389
<!--#include file="_menu_def.asp"-->
390
<script language="JavaScript1.2" src="images/popup_menu.js"></script>
391
 
392
<!-- Dropdown action menu scripts -->
393
<style>
394
    .ui-menu { position: absolute; }
395
</style>
396
<!--#include file="_jquery_includes.asp"-->
397
<script>
398
    $(function() {
399
        // Global menu data structure
400
        //  Persist between invocations of the menu
401
        //      Used to mergeLeft rtagid
402
        //      Used to store current menu info
403
        $.acData = {
404
            //  Data
405
            bCanOpenToClose                 : <%=iif(bCanOpenToClose          , "true", "false")%> ,             
406
            bCanRestrictiveToClose          : <%=iif(bCanRestrictiveToClose   , "true", "false")%> ,
407
            bCanCloseToClose                : <%=iif(bCanCloseToClose         , "true", "false")%> ,
408
            bCanPreserveToClose             : <%=iif(bCanPreserveToClose      , "true", "false")%> ,
409
            bCanArchiveToClose              : <%=iif(bCanArchiveToClose       , "true", "false")%> ,
410
 
411
            bCanOpenToPreserve              : <%=iif(bCanOpenToPreserve       , "true", "false")%> ,
412
            bCanRestrictiveToPreserve       : <%=iif(bCanRestrictiveToPreserve, "true", "false")%> ,
413
            bCanCloseToPreserve             : <%=iif(bCanCloseToPreserve      , "true", "false")%> ,
414
            bCanPreserveToPreserve          : <%=iif(bCanPreserveToPreserve   , "true", "false")%> ,
415
            bCanArchiveToPreserve           : <%=iif(bCanArchiveToPreserve    , "true", "false")%> ,
416
 
417
            bCanOpenToArchive               : <%=iif(bCanOpenToArchive        , "true", "false")%> ,
418
            bCanRestrictiveToArchive        : <%=iif(bCanRestrictiveToArchive , "true", "false")%> ,
419
            bCanCloseToArchive              : <%=iif(bCanCloseToArchive       , "true", "false")%> ,
420
            bCanPreserveToArchive           : <%=iif(bCanPreserveToArchive    , "true", "false")%> ,
421
            bCanArchiveToArchive            : <%=iif(bCanArchiveToArchive     , "true", "false")%> ,
422
            };
423
 
424
            // Convert from Release Mode to [canClose, canPreserve, canArchive]
425
        $.mode2access = {
426
 
427
            N: [$.acData.bCanOpenToClose,$.acData.bCanOpenToPreserve,$.acData.bCanOpenToArchive],
428
            R: [$.acData.bCanRestrictiveToClose,$.acData.bCanRestrictiveToPreserve,$.acData.bCanRestrictiveToArchive],
429
            C: [$.acData.bCanRestrictiveToClose,$.acData.bCanRestrictiveToPreserve,$.acData.bCanRestrictiveToArchive],
430
            Y: [$.acData.bCanCloseToClose,$.acData.bCanCloseToPreserve,$.acData.bCanCloseToArchive],
431
            O: [$.acData.bCanCloseToClose,$.acData.bCanCloseToPreserve,$.acData.bCanCloseToArchive],
432
            P: [$.acData.bCanPreserveToClose,$.acData.bCanPreserveToPreserve,$.acData.bCanPreserveToArchive],
433
            A: [$.acData.bCanArchiveToClose,$.acData.bCanArchiveToPreserve,$.acData.bCanArchiveToArchive],
434
 
435
            canAccess : function(state, index) {
436
                if ( this.hasOwnProperty(state)) {
437
                    return this[state][index];
438
                } else {
439
                    return false;
440
                }
441
            },
442
        };
443
 
444
        $.miniMenu = {
445
            //  Data
446
 
447
            //  Menu operations
448
            open : function (data) {
449
                //console.log("Opening:", data.rtagid);
450
                this.gotoUrl("dependencies.asp", {rtag_id : data.rtagid});
451
             },
452
 
453
             edit : function (data) {
454
                 //console.log("Editing:", data.rtagid);
455
                 this.gotoUrl("form_edit_release.asp", {rtag_id : data.rtagid, rfile : "<%=ScriptName%>"});
456
             },
457
 
458
             mergeSelect : function (data) {
459
                 //console.log("Merge from:", data.rtagid );
460
                 $('#releaseTree .body_row_sel2').removeClass('body_row_sel2');
461
                 if (data.mergeLeft != data.rtagid) {
462
                     data.mergeLeft = data.rtagid;
463
                     $.miniMenu.currentRow.addClass('body_row_sel2');
464
                 } else {
465
                     delete(data.mergeLeft);
466
                 }
467
             },
468
 
469
             merge : function (data) {
470
                 //console.log ("Merge:", data.mergeLeft, data.rtagid);
471
                 this.gotoUrl("diff.asp", { rtagA : data.mergeLeft, rtagB : data.rtagid});
472
             },
473
 
474
             close : function (data) {
475
                 //console.log("Closing:", data.rtagid);
476
                 this.gotoUrl("_change_release_mode.asp", {rtag_id : data.rtagid, mode_code : 3 , rfile : "<%=ScriptName%>"});
477
             },
478
 
479
             preserve : function (data) {
480
                 //console.log("Preserving:", data.rtagid);
481
                 this.gotoUrl("_change_release_mode.asp", {rtag_id : data.rtagid, mode_code : 6 , rfile : "<%=ScriptName%>"});
482
             },
483
 
484
             archive : function (data) {
485
                 //console.log("Archiving:", data.rtagid);
486
                 this.gotoUrl("_change_release_mode.asp", {rtag_id : data.rtagid, mode_code : 5 , rfile : "<%=ScriptName%>"});
487
             },
5394 dpurdie 488
<%If objAccessControl.UserLogedIn Then%>
5357 dpurdie 489
             delete : function (data) {
490
                 //console.log("Delete:", data.rtagid);
491
                 $.miniMenu.currentRow.addClass('body_row_sel_outline');
492
                 var that = this;
493
                 var delObject = $.Deferred(that.confirmDelete
494
                 ).done(function(){
495
                     that.gotoUrl("_destroy_release.asp", {rtag_id_list : data.rtagid, proj_id : <%=parProjId%>, rfile : "<%=ScriptName%>"});
496
                 }).fail(function(){
497
                     $('#releaseTree .body_row_sel_outline').removeClass('body_row_sel_outline');
498
                 });
499
             },
500
<%End If%>
501
<%If bCanMove Then%>
502
             move : function (data) {
503
                 //console.log("Move:", data.rtagid);
504
                 this.gotoUrl("form_move_release.asp", { rtag_id_list : data.rtagid, proj_id : <%=parProjId%> });
505
             },
506
<%End If%>
507
<%If bCanClone Then%>
508
             clone : function(data) {
509
                 //console.log("Clone:", data.rtagid);
510
                 this.gotoUrl("new_release.asp", { rtag_id_list : data.rtagid, proj_id : <%=parProjId%>, branch : "Y" });
511
             },
512
<%End If%>
513
 
514
             //
515
             // Internal functions
516
             // Goto url, or open in new tab
517
             gotoUrl: function (url, params)
518
             {
519
                 // Open in new tab - not as simple as it sounds
520
                 // Need to create a form and submit it
521
                 if(this.event.shiftKey){
522
                     var form = $('<form>',{
523
                         action : url,
524
                         target : '_blank',
525
                         //method : 'GET'
526
                         });
527
 
528
                     $.each(params,function(n,v){
529
                         var item = $('<input>',{
530
                             name : n,
531
                             value : v
532
                         });
533
                         form.append(item);
534
                        });
535
 
536
 
537
                     form.appendTo(document.body);
538
                     form.submit();
539
                     form.remove();
540
                 }
541
                 else {
542
                     if (params)
543
                         url += '?' + jQuery.param(params)
544
                     window.location.href = url;
545
                 }
546
             },
547
 
548
             // Confirm action
549
             //     Delegate Object
550
             confirmDelete : function(dbo){
551
                 $( "<div>Are you sure</div>" ).dialog({
552
                    resizable: true,
553
                    height:170,
554
                    width : 300,
555
                    modal: true,
556
                    position: { my: "top", at: "top+100", of: window },
557
                    title:'Destroy Release',
558
                    open: function() {
559
                        $(this).siblings('.ui-dialog-buttonpane').find('button:eq(1)').focus(); 
560
                        var markup = '<p><img src="images/i_critical.gif" style="float:left; margin:0 7px 20px 0;">This Release will be permanently destroyed.<p>Are you sure?';
561
                        $(this).html(markup);
562
                    },
563
                    close : function() {
564
                        $(this).remove();
565
                        dbo.reject();
566
                    },
567
                    buttons: {
568
                        "Destroy Release": function() {
569
                            dbo.resolve();
570
                            $(this).dialog("close");
571
                        },
572
                        Cancel: function() {
573
                            $(this).dialog("close");
574
                        }
575
                    }
576
                 });
577
             },
578
 
579
    };
580
 
581
    // Create and Hide the Menu
582
    $( "#select-menu" ).hide().menu();
583
 
584
    // Register menuselect event handler
585
    $( "#select-menu" ).on( "menuselect", function( event, ui ) {
586
       var opr = ui.item.data('opr');
587
 
588
        // Invoke operation within the menu data structure
589
        if (typeof $.miniMenu[opr] == 'function' ) {
590
            $.miniMenu['event'] = event;
591
            $.miniMenu[opr]($.miniMenu);
592
            return;
593
        }
594
        //console.log ("Menu Operation:", opr, "Not found");
595
    });
596
 
597
 
598
    // Add menu to all require instances
599
   $( ".select-operation" ).click(function(event) {
600
        // When clicked - create and show the menu
601
        // Insert rtag-id
602
 
603
       // In order to have the menu positioing work correctly
604
       //   Create a div that covers the visible screen area
605
       //   Us it within the menu poistioning
606
       //   Then delete it again
607
       var positionDiv = $( "<div></div>" ).css({
608
               position: 'absolute', 
609
               top : $(document).scrollTop(), 
610
               left : $(document).scrollLeft(),
611
               width: '100vw',
612
               height: '100vh',
613
               'z-index' : -1,
614
           });
615
       positionDiv.appendTo(document.body);
616
 
617
        //  Create the menu
618
        var menu = $("#select-menu").show().position({
619
             my: "left top",
620
             at: "center bottom",
621
             of: this,
622
             within : positionDiv,
623
        });
624
 
625
        // Cleanup the poistioning div
626
        positionDiv.remove();
627
 
628
        // Setup global data
629
        $.miniMenu.rtagid = $(this).data('rtag-id');
630
 
631
        // Set initial menu state - merge target
632
        $('#select-menu-merge').toggleClass('ui-state-disabled',!('mergeLeft' in $.miniMenu ));
633
 
634
        // Set initial state close/archive
635
        //
636
        var official = $(this).data('official');
637
        $('#select-menu-close').toggleClass('ui-state-disabled',! $.mode2access.canAccess(official,0));
638
        $('#select-menu-preserve').toggleClass('ui-state-disabled',!$.mode2access.canAccess(official,1));
639
        $('#select-menu-archive').toggleClass('ui-state-disabled',! $.mode2access.canAccess(official,2));
640
 
5394 dpurdie 641
        // Set initial state destroy
642
        var canDestroy = $(this).data('candelete') || <%=iif(bCanDestroy,"1","0")%>
643
        $('#select-menu-destroy').toggleClass('ui-state-disabled',(canDestroy == 0));
644
 
5357 dpurdie 645
        // Highlight the row selected
646
        $('#releaseTree .body_row_sel').removeClass('body_row_sel');
647
        $.miniMenu.currentRow = $(event.target).closest('tr').addClass('body_row_sel');
648
 
649
        // Allow click outside of the menu to close it
650
        $( document ).one( "click", function() {
651
            menu.hide();
652
            $('#releaseTree .body_row_sel').removeClass('body_row_sel');
653
        });
654
 
655
 
656
        // Prevent propagation of event
657
        return false;
658
    });
659
});
660
</script>
661
 
662
</head>
663
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" >
664
<!-- MENU LAYERS -------------------------------------->
665
<div id="popmenu" class="menuskin" onMouseover="clearhidemenu();highlightmenu(event,'on')" onMouseout="highlightmenu(event,'off');dynamichide(event)">
666
</div>
667
<!-- TIPS LAYERS -------------------------------------->
668
<div id="formTipsLayer" style="position: absolute; z-index: 1000; visibility: hidden; left:0; top: 0; width: 10">&nbsp;</div>
669
<!----------------------------------------------------->
670
<!-- HEADER -->
671
<!--#include file="_header.asp"-->
672
<!-- BODY ---->
673
 
674
<%Call GetListFilterValues ( dListFilter )%>
675
 
676
<form name="FormName" method="post" action="<%=ScriptName%>">
677
<table width="100%" border="0" cellspacing="0" cellpadding="0">
678
   <tr>
679
      <td width="1" background="images/bg_home_orange.gif" valign="top">
680
         <!-- ICON STATUS and FILTER -------------------------------------->
681
         <table width="118" border="0" align="left" style="margin-top: 38px;">
682
            <tr>
683
               <td bgcolor="#E4E9EC" width="26"><span class="body_txt">Icon</span></td>
684
               <td bgcolor="#E4E9EC" width="82"><span class="body_txt">Release State </span></td>
685
            </tr>
686
            <tr>
687
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_open_mode.gif" width="15" height="13"></td>
688
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_OPEN_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_OPEN_MODE)%>>Open Mode</span></td>
689
            </tr>
690
            <tr>
691
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_restrictive_mode.gif" width="15" height="15"></td>
692
               <td nowrap bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_RESTRICTIVE_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_RESTRICTIVE_MODE)%>>Restrictive Mode</span></td>
693
            </tr>
694
            <tr>
695
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_ccb_mode.gif" width="15" height="15"></td>
696
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_CCB_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_CCB_MODE)%>>CCB Mode</span></td>
697
            </tr>
698
            <tr>
699
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_closed_mode.gif" width="15" height="14"></td>
700
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_CLOSED_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_CLOSED_MODE)%>>Closed Mode</span></td>
701
            </tr>
702
            <tr>
703
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_closed_mode_warn.gif" width="15" height="14"></td>
704
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_CLOSED_WARN%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_CLOSED_WARN)%>>Closed Aged</span></td>
705
            </tr>
706
            <tr>
707
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_preserve_mode.gif" width="15" height="14"></td>
708
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_PRESERVE_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_PRESERVE_MODE)%>>Preserve Mode</span></td>
709
            </tr>
710
            <tr>
711
               <td bgcolor="#F5F5F5"><img src="images/i_rtag_archive_mode.gif" width="15" height="14"></td>
712
               <td bgcolor="#F5F5F5"><span class="body_txt"><input name="listFilter" type="checkbox" value="'<%=enumDB_RELEASE_IN_ARCHIVE_MODE%>'" <%=GetIsListFilterChecked(enumDB_RELEASE_IN_ARCHIVE_MODE)%>>Archive Mode</span></td>
713
            </tr>
714
            <%If NOT bIsaTreeView Then%>
715
             <tr>
716
                <td>&nbsp;</td>
717
                <td><input name="btn" type="submit" class="form_btn" value="Update"></td>
718
             </tr>
719
             <%End If%>
720
         </table>
721
      </td>
722
      <td rowspan="2" valign="top" width="100%">
723
         <!-- ACTION BUTTONS ---------------------------------------------->
724
         <table width="100%"  border="0" cellspacing="0" cellpadding="7" style="background-color:#DAD7C8">
725
            <tr>
726
               <td width="1">
727
                  <%
728
                  If bIsaTreeView Then
729
                     Response.write LIMG_TREE_VIEW
730
                  Else
731
                     Response.write LIMG_LIST_VIEW
732
                  End If
733
                  %>
734
               </td>
735
               <td width="100%">
736
                  <%
737
                  Dim aBtnsDef
738
                  ' Define action buttons
739
                  aBtnsDef = Array("btnNewRelease", "width=5", "btnMergeManager", "width=5", "btnAdminView")
740
 
741
                  ' Load action buttons from database
742
                  Call objBtnControl.LoadActionButtons ( aBtnsDef, OraDatabase )
743
 
744
                  ' Set spacing to minimum between buttons
745
                  objBtnControl.ButtonSpacer = 0
746
                  objBtnControl.ImageHspace = 2
747
 
748
                  ' Access Control
749
                  If NOT canActionControlInProject("CreateNewRelease") Then Call objBtnControl.Active ( "btnNewRelease", "N" )
750
                  If NOT canActionControlInProject("ConfigureRelease") Then Call objBtnControl.Active ( "btnMoveRelease", "N" )
751
 
752
                  ' -- Render Buttons
753
                  Call objBtnControl.Render  ( aBtnsDef, objAccessControl )
754
                  %>
755
               </td>
756
            </tr>
757
         </table>
758
         <!-- ACTION BUTTONS END  ------------------------------------------>
759
         <!-- RELEASE INFORMATION  ----------------------------------------->
760
         <table id=releaseTree width="100%"  border="0" cellspacing="10" cellpadding="0">
761
               <tr>
762
                  <td>
763
                     <!-- TREE VIEW ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
764
                     <%If bIsaTreeView Then%>
765
                        <table width="100%"  border="0" cellspacing="1" cellpadding="1">
766
                           <tr class='form_field_bg' style="height:21px">
767
                              <td width="25%" class="body_txt">Release Name </td>
768
 
769
                              <%If parProjId <> 2 Then %>
770
                                 <td width="15%" class="body_txt">Created</td>
771
                                 <td width="47%" class="body_txt">Comments</td>
772
                              <%Else%>
773
                                 <td width="15%" class="body_txt">Created</td>
774
                                 <td width="25%" class="body_txt">Used By </td>
775
                                 <td width="22%" class="body_txt">Comments</td>
776
                              <%End If%>
777
                           <td width="1%" nowrap class="body_txt">Lxr</td>
778
                           <td width="3%" nowrap class="body_txt">Daemon&nbsp;Status</td>
779
                           </tr>
780
                           <%
781
                           OraDatabase.Parameters.Add "PROJ_ID",  parProjId,  ORAPARM_INPUT, ORATYPE_NUMBER
5394 dpurdie 782
                           OraDatabase.Parameters.Add "USER_ID",  objAccessControl.UserId,  ORAPARM_INPUT, ORATYPE_NUMBER
5357 dpurdie 783
 
784
                           Set rsQry = OraDatabase.DbCreateDynaset( GetQuery ("ReleaseVersionTree.sql") , ORADYN_DEFAULT )
785
                           lastLevel = 0
786
 
5394 dpurdie 787
                           OraDatabase.Parameters.Remove "USER_ID"
5357 dpurdie 788
                           OraDatabase.Parameters.Remove "PROJ_ID"
789
 
790
                           Dim lastRtagId, parentRtag_id
791
 
792
                           If rsQry.RecordCount > 0 Then
793
 
794
                              Set objDmSts = New DaemonStatus
795
                              Call objDmSts.GetDaemonStatus(parProjId)
796
 
797
                              While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
798
                                 currLevel = CInt(rsQry("hierarchy"))
799
                                 hoverTitle = "Last change: "& rsQry("OFFICIAL_STAMP") & " by " & rsQry("modifier")
800
                                 createdBy = rsQry("created_stamp") & " by " & rsQry("creator") 
5394 dpurdie 801
                                 If rsQry("userCanDelete") = 1 Then
802
                                     createdBy = createdBy & "<br>Creator can delete"
803
                                 End If
5357 dpurdie 804
 
805
                                 %>
806
                                 <tr class="body_rowg2">
807
                                    <td nowrap>
808
                                       <%Call RenderIndent( lastLevel, currLevel )%>
5394 dpurdie 809
                                       <%Call RenderActions(rsQry("rtag_id"),rsQry("official"),rsQry("userCanDelete"))%>
5357 dpurdie 810
                                       <a href="dependencies.asp?rtag_id=<%=rsQry("rtag_id")%>" class="body_link" title="<%=hoverTitle%>" >
811
                                       <%=ReleaseIcon( rsQry("official") )%>&nbsp;<%=rsQry("rtag_name")%></a>
812
                                    </td>
813
                                    <td nowrap valign=top"><%=createdBy%></td>
814
                                    <%
815
                                    If parProjId = 2 Then
816
                                       comment = GetMassRefComments(rsQry("rtag_id"))
817
                                       If comment = "" Then comment = "None."
818
                                       %>
819
                                       <td><%=comment%></td>
820
                                    <%End If%>
821
 
822
                                    <td><%=NewLine_To_BR(rsQry("description"))%></td>
823
                                    <td nowrap valign="top"><%Call RenderLxrState() %></td>
824
                                    <td valign="top"><%Call RenderDaemonStatusConfig(rsQry("rtag_id"))%></td>
825
                                 </tr>
826
                                 <%
827
                                 lastLevel = currLevel
828
                                 rsQry.MoveNext
829
                              WEnd
830
                              Set objDmSts = Nothing
831
                           End If
832
                           rsQry.Close
833
                           Set rsQry = Nothing
834
                           %>
835
                        </table>
836
                     <!-- LIST VIEW ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
837
                     <%Else%>
838
                        <table width="100%"  border="0" cellspacing="1" cellpadding="1">
839
                           <tr class='form_field_bg'>
840
                              <td width="1%">&nbsp;</td>
841
                              <td width="20%" class="body_txt">Release Name </td>
842
                              <td width="10%" class="body_txt">Created</td>
843
                              <%If parProjId <> 2 Then %>
844
                                 <td width="47%" class="body_txt">Comments</td>
845
                              <%Else%>
846
                                 <td width="24%" class="body_txt">Used By </td>
847
                                 <td width="22%" class="body_txt">Comments</td>
848
                              <%End If%>
849
                              <td width="1%" class="body_txt" title="LXR Support enabled">Lxr</td>
850
                              <td width="3%" class="body_txt">Daemon Status</td>
851
                           </tr>
852
                           <%
5394 dpurdie 853
                              OraDatabase.Parameters.Add "PROJ_ID",  parProjId,                ORAPARM_INPUT, ORATYPE_NUMBER
854
                              OraDatabase.Parameters.Add "USER_ID",  objAccessControl.UserId,  ORAPARM_INPUT, ORATYPE_NUMBER
5357 dpurdie 855
 
856
                              rsQryStr = GetQuery ("ReleaseVersionList.sql")
857
                              rsQryStr = Replace(rsQryStr, "/*SHOW_FILTER*/", parShowFilter)
858
 
859
                              Set rsQry = OraDatabase.DbCreateDynaset( rsQryStr, ORADYN_DEFAULT )
860
 
5394 dpurdie 861
                              OraDatabase.Parameters.Remove "USER_ID"
5357 dpurdie 862
                              OraDatabase.Parameters.Remove "PROJ_ID"
863
 
864
                              If rsQry.RecordCount > 0 Then
865
 
866
                                 Set objDmSts = New DaemonStatus
867
                                 Call objDmSts.GetDaemonStatus(parProjId)
868
 
869
                                 While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
870
                                    hoverTitle = "Last change: "& rsQry("OFFICIAL_STAMP") & " by " & rsQry("modifier") & ". " & rsQry("OFFICIAL_STAMP_DAYS")& " Days ago"
871
                                    createdBy = rsQry("created_stamp") & " by " & rsQry("creator")
5394 dpurdie 872
                                    If rsQry("userCanDelete") = 1 Then
873
                                        createdBy = createdBy & "<br>Creator can delete"
874
                                    End If
5357 dpurdie 875
 
876
                                    %>
877
                                    <tr class="body_rowg2">
878
                                       <td valign="top">
5394 dpurdie 879
                                          <%Call RenderActions(rsQry("rtag_id"),rsQry("official"),rsQry("userCanDelete"))%>
5357 dpurdie 880
                                       </td>
881
                                       <td nowrap valign="top">
882
                                          <a href="dependencies.asp?rtag_id=<%=rsQry("rtag_id")%>" class="body_link" title="<%=hoverTitle%>">
883
                                          <%=ReleaseIcon( rsQry("official"))%>&nbsp;<%=rsQry("rtag_name")%></a>
884
                                       </td>
885
                                       <td nowrap  valign=top><%=createdBy%></td>
886
                                       <%
887
                                       If parProjId = 2 Then
888
                                          comment = GetMassRefComments(rsQry("rtag_id"))
889
                                          If comment = "" Then comment = "None."
890
                                          %>
891
                                            <td><%=comment%></td>
892
                                       <%End If%>
893
                                       <td><%=NewLine_To_BR(  rsQry("description")   )%></td>
894
                                       <td nowrap valign="top"><%Call RenderLxrState() %></td>
895
                                       <td valign="top"><%Call RenderDaemonStatusConfig(rsQry("rtag_id"))%>
896
                                       </td>
897
                                    </tr>
898
                                    <%
899
                                    rsQry.MoveNext
900
                                 WEnd
901
                                 Set objDmSts = Nothing
902
                              End If
903
                              rsQry.Close
904
                              Set rsQry = Nothing
905
                              %>
906
                        </table>
907
                     <%End If%>
908
                     <!-- LIST VIEW END ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
909
                     <%=objPMod.ComposeHiddenTags()%>
910
                     <input type="hidden" name="action" value="true">
911
                     </form>
912
                     <!-- MESSAGE +++++++++++++++++++++++++++++++++++++++++++++++++++ -->
913
                     <!--#include file="messages/_msg_inline.asp"-->
914
                     <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
915
                  </td>
916
               </tr>
917
         </table>
918
      </td>
919
      <td width="1" valign="top"><img src="images/h_trsp_dot.gif" width="1" height="1"></td>
920
   </tr>
921
   <tr>
922
      <td valign="bottom" align="center" background="images/bg_home_orange.gif">
923
      </td>
924
   </tr>
925
</table>
926
<!-- Dropdown Menu -->
927
<div id=testdiv></div>
928
<div >
929
  <ul id="select-menu" style="display:none;">
930
   <li data-opr="open" title="Goto this Release">Open ...</li>
931
    <li data-opr="edit" title="Edit the properties of the Release">Edit Properties</li>
932
    <li <%=iif(bCanMove,"data-opr=move","class=ui-state-disabled")%> title="Change the order in which releases are displayed">Change display order</li>
933
    <li>-</li>
934
    <li data-opr="mergeSelect" title="Select as the source (left side) of a merge or comparison">Select for Merge/Diff</li>
935
    <li id="select-menu-merge" data-opr="merge" title="Merge or Compare from selected release to this release">Merge/Diff from selected</li>
936
    <li>-</li>
937
    <li id="select-menu-close" data-opr="close">Close Release</li>
938
    <li id="select-menu-preserve" data-opr="preserve" >Preserve Release</li>
939
    <li id="select-menu-archive" data-opr="archive" >Archive Release</li>
940
    <li>-</li>
941
    <li <%=iif(bCanClone,"data-opr=clone","class=ui-state-disabled")%> title="Create a new Release based on selected Release">Clone Release</li>
942
    <li>-</li>
5394 dpurdie 943
    <li id="select-menu-destroy" data-opr="delete", title="Delete the selected Release">Destroy Release</li>
5357 dpurdie 944
    <li>-</li>
945
    <li>Close Menu</li>
946
  </ul>
947
</div>
948
<map name="mapviewtype">
949
  <area shape="rect" coords="2,2,69,23" href="<%=ScriptName%>?viewtype=1&<%=objPMod.ComposeURL()%>" title="Switch to List View">
950
  <area shape="rect" coords="73,2,143,23" href="<%=ScriptName%>?viewtype=2&<%=objPMod.ComposeURL()%>" title="Switch to Tree View">
951
</map>
5957 dpurdie 952
<!-- FOOTER -->
953
<!--#include file="_footer.asp"-->
5357 dpurdie 954
</body>
955
</html>