Subversion Repositories DevTools

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5048 dpurdie 1
<%@LANGUAGE="VBSCRIPT"%>
2
<%
3
'=====================================================
4
'   sdk_opr_json.asp
5
'   Ajax support for SDK operations
6
'       addNew          - New SDK Name
7
'       updateEntry     - Update Sdk Name
8
'       getData         - Get single Sdk Name Entry
9
'=====================================================
10
%>
11
<%
12
Option explicit
5049 dpurdie 13
' Essential to get UTF through all the hoops. ie: VÄSTTRAFIK (VTK)
14
Response.ContentType = "text/html"
15
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
16
Response.CodePage = 65001
17
Response.CharSet = "UTF-8"
5048 dpurdie 18
%>
19
<!--#include file="common/conf.asp"-->
20
<!--#include file="common/globals.asp"-->
21
<!--#include file="common/qstr.asp"-->
22
<!--#include file="common/common_subs.asp"-->
23
<!--#include file="_access_control_general.asp"-->
24
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER SRC="class/classaspJSON.vbs"></SCRIPT> 
25
<%
26
'------------ Variable Definition -------------
27
Dim parOpr
28
Dim result
29
Dim SqlQry
30
Dim rsQry
31
 
32
parOpr = QStrPar("action")
33
result = -1
34
 
35
' Init the output JSON class
36
'   Operations can add data
37
'   Default data will be added at the end
38
Dim oJSON
39
Set oJSON = New aspJSON
40
Dim newitem
41
 
42
Function canModify
43
    canModify = objAccessControl.IsActive("CreateNewProject")
44
    If NOT canModify Then
45
        result = -4
46
        oJSON.data("error") = 1
47
        oJSON.data("emsgSummary") = "Permission denied"
48
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
49
    End If
50
End Function
51
 
52
'   
53
'   Perform the body of the operations within a Sub and use
54
'   On Error Resule Next to catch errors that accur in the code
55
'
56
On Error Resume Next
57
If (parOpr = "addNew") Then
58
    If canModify() Then addNewEntry
59
 
60
ElseIf (parOpr = "getData") Then
61
     getData
62
 
63
ElseIf (parOpr = "updateEntry") Then
64
    If canModify() Then updateEntry
65
 
5049 dpurdie 66
ElseIf (parOpr = "getSdkNames") Then
67
    getSdkNames
68
 
5050 dpurdie 69
ElseIf (parOpr = "getSdkVersions") Then
70
    getSdkVersions
71
 
5049 dpurdie 72
ElseIf (parOpr = "getProjectList") Then
73
    getProjectList
74
 
75
ElseIf (parOpr = "getReleaseList") Then
76
    getReleaseList
77
 
78
ElseIf (parOpr = "addNewSdkVersion") Then
79
    addNewSdkVersion
80
 
5050 dpurdie 81
ElseIf (parOpr = "setSdkContentState") Then
82
    setSdkContentState
83
 
5048 dpurdie 84
Else
85
    oJSON.data("error") = 1
86
    oJSON.data("emsgSummary") = "Unknown JSON Operation"
87
    oJSON.data("emsgDetails") = "The Requested JSON operation is not supported: " & parOpr
88
End If
89
 
90
 
91
' SQL error detection and reporting
92
If objEH.LastOraFailed Then
93
    oJSON.data("error") = 1
94
    result = -1
95
 
96
    oJSON.data("emsgSummary") = objEH.MessageSummary
97
    oJSON.data("emsgDetails") = objEH.MessageDetails
98
    oJSON.data("SqlQry") = SqlQry
99
'
100
'   Detect program errors
101
ElseIf Err.number <> 0 Then
102
    result = -3
103
    oJSON.data("error") = 2
104
    oJSON.data("errnum") = Err.number
105
    oJSON.data("errtxt") = Err.description
106
    oJSON.data("errsrc") = Err.source
107
    oJSON.data("emsgSummary") = "Internal VBScript Error:" & Err.number &  ":" & Err.description
108
End If
109
 
110
'Write single value
111
oJSON.data("result") = result
112
 
113
'function Sleep(seconds)
114
'    dim oshell, cmd
115
'    set oShell = CreateObject("Wscript.Shell")
116
'    cmd = "cmd.exe /c timeout " & seconds & " /nobreak"
117
'    oShell.Run cmd,0,1
118
'End function
119
'
120
'Sleep(2)
121
 
122
 
123
' DEBUG: A Hash of the user provided requests
124
<!--oJSON.data("QueryString") = Request.QueryString       -->
125
<!--                                                      -->
126
<!--Dim requestSet : Set requestSet = oJSON.Collection()  -->
127
<!--Set oJSON.data("Request") = requestSet                -->
128
<!--Dim variableName                                      -->
129
<!--for each variableName in Request.QueryString          -->
130
<!--    requestSet.add variableName, Request(variableName)-->
131
<!--next                                                  -->
132
<!--for each variableName in Request.Form                 -->
133
<!--    requestSet.add variableName, Request(variableName)-->
134
<!--next                                                  -->
135
 
136
 
137
'Return the object
138
Response.Write oJSON.JSONoutput()
139
%>
140
<%
141
'-------------------------------------------------
142
' Function:    addNewEntry
143
' Description: Create a new SDK Name entry
144
Sub addNewEntry
145
 
146
    '   Add a new entry
147
    '
148
    '   Setup for the database access
149
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
150
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2
151
 
152
     '  Test existance - simply to provide a Nice Error message
153
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME"
154
    objEH.ErrorRedirect = FALSE
155
    objEH.TryORA ( OraSession )
156
    On Error Resume Next
157
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
158
    objEH.CatchORA ( OraSession )
159
    On Error GoTo 0
160
 
161
    If rsQry.RecordCount <> 0 Then
162
        result = -3
163
        oJSON.data("error") = -1
164
        oJSON.data("emsgSummary") = "SDK Name already exists"
165
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
166
    Else
167
 
5049 dpurdie 168
        SqlQry = "INSERT INTO SDK_NAMES (SDK_NAME, SDK_COMMENT) VALUES (:SDKNAME, :SDKCOMMENT)"
5048 dpurdie 169
        objEH.ErrorRedirect = FALSE
170
        objEH.TryORA ( OraSession )
171
        On Error Resume Next
172
        OraDatabase.ExecuteSQL SqlQry
173
        objEH.CatchORA ( OraSession )
174
        On Error GoTo 0
175
 
176
        result = 0
177
    End If
178
    OraDatabase.Parameters.Remove "SDKCOMMENT"
179
    OraDatabase.Parameters.Remove "SDKNAME"
180
End Sub
181
 
182
'-------------------------------------------------
183
' Function:    getData
184
' Description: get data for a specified SDK Name
185
Sub getData
186
 
187
    '   Get Data for an existing entry
188
    '   Setup for the database access
189
    OraDatabase.Parameters.Add "SDKID",    QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER
190
 
191
    SqlQry = "SELECT * from SDK_NAMES where SDK_ID=:SDKID"
192
 
193
    objEH.ErrorRedirect = FALSE
194
    objEH.TryORA ( OraSession )
195
    On Error Resume Next
196
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
197
    objEH.CatchORA ( OraSession )
198
    OraDatabase.Parameters.Remove "SDKID"
199
 
200
    Dim resultSet : Set resultSet = oJSON.Collection()
201
    If ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) Then
202
        Dim ii
203
        for ii = 0 to rsQry.Fields.Count - 1
204
            resultSet (rsQry.FieldName(ii)) = rsQry.Fields(ii)
205
        Next
206
        Set oJSON.data("aaData") = resultSet
207
        result = 0
208
    End If
209
    rsQry.Close
210
    Set rsQry = Nothing
211
End Sub
212
 
213
'-------------------------------------------------
214
' Function:    updateEntry
215
' Description: Update an exxisting SDK Names entry
216
Sub updateEntry
217
 
218
    '
219
    '
220
    OraDatabase.Parameters.Add "SDKID",      QStrPar("sdkId"), ORAPARM_INPUT, ORATYPE_NUMBER
221
    OraDatabase.Parameters.Add "SDKNAME",    QStrPar("sdkName"), ORAPARM_INPUT, ORATYPE_VARCHAR2
222
    OraDatabase.Parameters.Add "SDKCOMMENT", QStrPar("sdkComment"), ORAPARM_INPUT, ORATYPE_VARCHAR2
223
 
224
    '  Test existance - simply to provide a Nice Error message
225
    SqlQry = "SELECT * FROM SDK_NAMES WHERE SDK_NAME = :SDKNAME AND  SDK_ID != :SDKID"
226
    objEH.ErrorRedirect = FALSE
227
    objEH.TryORA ( OraSession )
228
    On Error Resume Next
229
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
230
    objEH.CatchORA ( OraSession )
231
    On Error GoTo 0
232
 
233
    If rsQry.RecordCount <> 0 Then
234
        result = -3
235
        oJSON.data("error") = -1
236
        oJSON.data("emsgSummary") = "SDK Name already exists"
237
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
238
    Else
239
        '   Update an existing entry
240
        SqlQry = "UPDATE SDK_NAMES SET SDK_NAME = :SDKNAME, SDK_COMMENT = :SDKCOMMENT WHERE SDK_ID = :SDKID"
241
        objEH.ErrorRedirect = FALSE
242
        objEH.TryORA ( OraSession )
243
        On Error Resume Next
244
        OraDatabase.ExecuteSQL SqlQry
245
        objEH.CatchORA ( OraSession )
246
        On Error GoTo 0
247
        result = 0
248
    End If
249
 
250
    OraDatabase.Parameters.Remove "SDKCOMMENT"
251
    OraDatabase.Parameters.Remove "SDKNAME"
252
    OraDatabase.Parameters.Remove "SDKID"
253
End Sub
5049 dpurdie 254
 
255
'-------------------------------------------------
256
' Function:    getSdkNames
257
' Description: Get Project information
258
'              Array of:
259
'               SDK_ID
260
'               SDK_NAME
261
 
262
Sub getSdkNames
263
    '   Get Data for an existing entry
264
    '   Setup for the database access
265
    SqlQry = "SELECT SDK_ID,SDK_NAME from SDK_NAMES order by SDK_NAME ASC"
266
 
267
    objEH.ErrorRedirect = FALSE
268
    objEH.TryORA ( OraSession )
269
    On Error Resume Next
270
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
271
    objEH.CatchORA ( OraSession )
272
 
273
    Set oJSON.data("aaData") = oJSON.Collection()
274
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
275
       Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
276
         Dim ii
277
        for ii = 0 to rsQry.Fields.Count - 1
278
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
279
        Next
280
 
281
       rsQry.MoveNext
282
    Wend
283
    result = 0
284
    rsQry.Close
285
    Set rsQry = Nothing
286
 
287
End Sub
288
 
5050 dpurdie 289
'-------------------------------------------------
290
' Function:    getSdkVersions
291
' Description: Get SDK Versions information for a given family
292
'              Array of:
293
'               sdktag_id
294
'               sdktag_name
295
'               sdktag_state
296
'
297
' Options:      sdk_id  - Get versions for given sdk family
298
'               mode    - true: All Releases, otherwise only non-closed releases
5049 dpurdie 299
 
5050 dpurdie 300
Sub getSdkVersions
301
    '   Get Data for an existing entry
302
    '   Setup for the database access
303
    Dim sdk_id : sdk_id = QStrPar("sdk_id")
304
    OraDatabase.Parameters.Add "SDK_ID",      sdk_id, ORAPARM_INPUT, ORATYPE_NUMBER
305
 
306
    '
307
    '   Limit Selection to non-closed releases
308
    '
309
    Dim limit
310
    If NOT QStrPar("mode") Then
311
        limit = " AND SDK_STATE NOT IN ('R')"
312
    End If
313
 
314
    SqlQry = "SELECT SDKTAG_ID,SDKTAG_NAME,SDK_STATE as SDKTAG_STATE from SDK_TAGS" &_
315
             " WHERE SDK_ID = :SDK_ID" & limit &_
316
             " ORDER BY UPPER(SDKTAG_NAME) ASC"
317
 
318
    ' Perform Query
319
    objEH.ErrorRedirect = FALSE
320
    objEH.TryORA ( OraSession )
321
    On Error Resume Next
322
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
323
    objEH.CatchORA ( OraSession )
324
 
325
    ' Process Results
326
    Set oJSON.data("aaData") = oJSON.Collection()
327
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
328
        Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
329
        Dim ii
330
        for ii = 0 to rsQry.Fields.Count - 1
331
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
332
        Next
333
       rsQry.MoveNext
334
    Wend
335
 
336
    result = 0
337
    rsQry.Close
338
    Set rsQry = Nothing
339
 
340
    OraDatabase.Parameters.Remove "SDK_ID"
341
End Sub
342
 
5049 dpurdie 343
'-------------------------------------------------
344
' Function:    getProjectList
345
' Description: Get Project information
346
'              Array of:
347
'               proj_id
348
'               proj_name
349
Sub getProjectList
350
    '   Get Data for an existing entry
351
    '   Setup for the database access
352
    SqlQry = "SELECT PROJ_ID,PROJ_NAME from PROJECTS order by PROJ_NAME ASC"
353
 
354
    objEH.ErrorRedirect = FALSE
355
    objEH.TryORA ( OraSession )
356
    On Error Resume Next
357
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
358
    objEH.CatchORA ( OraSession )
359
 
360
    Set oJSON.data("aaData") = oJSON.Collection()
361
   While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
362
       Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
363
         Dim ii
364
        for ii = 0 to rsQry.Fields.Count - 1
365
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
366
        Next
367
 
368
       rsQry.MoveNext
369
    Wend
370
    result = 0
371
    rsQry.Close
372
    Set rsQry = Nothing
373
 
374
End Sub
375
 
376
'-------------------------------------------------
377
' Function:    getReleaseList
378
' Description: Get Release information for a project
379
'              Array of:
380
'               rtag_id
381
'               rtag_name
382
'               official
383
'              Also
384
'               proj_id
385
'
386
' Options:      proj_id - Get Releases for given project
387
'               rtag_id - Get Releases for project of this release
388
'               mode    - true: All Releases, otherwise only non-closed releases
389
 
390
Sub getReleaseList
391
    '   Get Data for an existing entry
392
    '   Setup for the database access
393
    Dim rtag_id : rtag_id = QStrPar("rtag_id")
394
    Dim proj_id : proj_id = QStrPar("proj_id")
395
    OraDatabase.Parameters.Add "PROJ_ID",      proj_id, ORAPARM_INPUT, ORATYPE_NUMBER
396
    OraDatabase.Parameters.Add "RTAG_ID",      rtag_id, ORAPARM_INPUT, ORATYPE_NUMBER
397
 
398
    '
399
    '   Limit Selection to non-closed releases
400
    '
401
    Dim limit
402
    If NOT QStrPar("mode") Then
403
        limit = " AND OFFICIAL NOT IN ('Y', 'A')"
404
    End If
405
 
406
    Dim where
407
    If rtag_id <> "" Then
408
        where = " WHERE proj_id = (SELECT PROJ_ID from RELEASE_TAGS where RTAG_ID=:RTAG_ID)" 
409
    Else
410
        where = " WHERE PROJ_ID=:PROJ_ID"
411
    End If
412
 
413
    SqlQry = "SELECT PROJ_ID,RTAG_ID,RTAG_NAME,OFFICIAL  from RELEASE_TAGS" &_
414
             where & limit &_
415
             " ORDER BY RTAG_NAME ASC"
416
 
417
    ' Perform Query
418
    objEH.ErrorRedirect = FALSE
419
    objEH.TryORA ( OraSession )
420
    On Error Resume Next
421
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
422
    objEH.CatchORA ( OraSession )
423
 
424
    ' Process Results
425
    Set oJSON.data("aaData") = oJSON.Collection()
426
    While (NOT rsQry.BOF) AND (NOT rsQry.EOF)
427
        Set newitem = oJSON.AddToCollection(oJSON.data("aaData"))
428
        Dim ii
429
        for ii = 1 to rsQry.Fields.Count - 1
430
            newitem (rsQry.FieldName(ii)) = rsQry.Fields(ii)
431
        Next
432
        proj_id = rsQry.Fields(0) 
433
 
434
       rsQry.MoveNext
435
    Wend
436
 
437
    oJSON.data("proj_id") = proj_id
438
 
439
    result = 0
440
    rsQry.Close
441
    Set rsQry = Nothing
442
 
443
    OraDatabase.Parameters.Remove "RTAG_ID"
444
    OraDatabase.Parameters.Remove "PROJ_ID"
445
End Sub
446
 
447
'-------------------------------------------------
448
' Function:     addNewSdkVersion
449
' Description:  Add a New Sdk Version
5050 dpurdie 450
'               Returns the SDKTAG_ID if the created entry
5049 dpurdie 451
Sub addNewSdkVersion
452
    Dim userId : userId = objAccessControl.UserId()
5050 dpurdie 453
    Dim sdkTagId
5049 dpurdie 454
    '   Add a new entry
455
    '
456
    '   Setup for the database access
457
    '
458
    OraDatabase.Parameters.Add "SDKTAG_NAME",   QStrPar("sdkName"),     ORAPARM_INPUT, ORATYPE_VARCHAR2
459
    OraDatabase.Parameters.Add "DESCRIPTION",   QStrPar("sdkComment"),  ORAPARM_INPUT, ORATYPE_VARCHAR2
460
    OraDatabase.Parameters.Add "SDK_ID",        QStrPar("sdk_id"),      ORAPARM_INPUT, ORATYPE_NUMBER
461
    OraDatabase.Parameters.Add "RTAG_ID",       QStrPar("rtag_id"),     ORAPARM_INPUT, ORATYPE_NUMBER
462
    OraDatabase.Parameters.Add "CREATOR_ID",    userId,                 ORAPARM_INPUT, ORATYPE_NUMBER
463
    OraDatabase.Parameters.Add "STATE_ID",      userId,                 ORAPARM_INPUT, ORATYPE_NUMBER
5050 dpurdie 464
    OraDatabase.Parameters.Add "SDKTAG_ID",     NULL,                   ORAPARM_BOTH, ORATYPE_NUMBER
5049 dpurdie 465
 
466
     '  Test existance - simply to provide a Nice Error message
467
    SqlQry = "SELECT * FROM SDK_TAGS WHERE SDKTAG_NAME = :SDKTAG_NAME AND SDK_ID = :SDK_ID"
468
    objEH.ErrorRedirect = FALSE
469
    objEH.TryORA ( OraSession )
470
    On Error Resume Next
471
    Set rsQry = OraDatabase.DbCreateDynaset( SqlQry, ORADYN_DEFAULT )
472
    objEH.CatchORA ( OraSession )
473
    On Error GoTo 0
474
 
475
    If rsQry.RecordCount <> 0 Then
476
        result = -3
477
        oJSON.data("error") = -1
478
        oJSON.data("emsgSummary") = "SDK Verion Name already exists in this SDK family"
479
        oJSON.data("emsgDetails") = oJSON.data("emsgSummary")
480
    Else
5050 dpurdie 481
        SqlQry = "BEGIN "&_
482
                 " INSERT INTO SDK_TAGS (SDKTAG_NAME, DESCRIPTION, SDK_ID, RTAG_ID, CREATOR_ID, STATE_ID)" &_
483
                 " VALUES (:SDKTAG_NAME, :DESCRIPTION, :SDK_ID, :RTAG_ID, :CREATOR_ID, :STATE_ID)"&_
484
                 " RETURNING SDKTAG_ID INTO :SDKTAG_ID;" &_
485
                 " END;"
5049 dpurdie 486
        objEH.ErrorRedirect = FALSE
487
        objEH.TryORA ( OraSession )
488
        On Error Resume Next
489
        OraDatabase.ExecuteSQL SqlQry
5050 dpurdie 490
        sdkTagId = OraDatabase.Parameters("SDKTAG_ID").Value
491
 
492
        '
493
        '   Create the initial SDK_CONTENT
494
        '
495
        If Err.Number = 0 Then
496
            SqlQry = "INSERT INTO SDK_CONTENT ( SDKTAG_ID, PV_ID) SELECT :SDKTAG_ID, pv_id FROM RELEASE_CONTENT WHERE RTAG_ID = :RTAG_ID"
497
            OraDatabase.ExecuteSQL SqlQry
498
        End If
499
 
5049 dpurdie 500
        objEH.CatchORA ( OraSession )
501
        On Error GoTo 0
502
 
5050 dpurdie 503
        oJSON.data("SDKTAG_ID") = sdkTagId
5049 dpurdie 504
        result = 0
505
    End If
506
 
507
    OraDatabase.Parameters.Remove "SDKTAG_NAME"
508
    OraDatabase.Parameters.Remove "DESCRIPTION"
509
    OraDatabase.Parameters.Remove "SDK_ID"
510
    OraDatabase.Parameters.Remove "RTAG_ID"    
511
    OraDatabase.Parameters.Remove "CREATOR_ID" 
512
    OraDatabase.Parameters.Remove "STATE_ID"   
5050 dpurdie 513
    OraDatabase.Parameters.Remove "SDKTAG_ID"   
5049 dpurdie 514
 
515
End Sub
5050 dpurdie 516
 
517
'-------------------------------------------------
518
' Function:     setSdkContentState
519
' Description:  Update the state of a SDK conent item
520
'               Request Parameters
521
'                   sdktag_id
522
'                   pv_id
523
'                   sdkpkg_state
524
Sub setSdkContentState
525
    '
526
    '
527
    OraDatabase.Parameters.Add "SDKTAG_ID",     QStrPar("sdktagId"), ORAPARM_INPUT, ORATYPE_NUMBER
528
    OraDatabase.Parameters.Add "PV_ID",         QStrPar("pv_id"), ORAPARM_INPUT, ORATYPE_VARCHAR2
529
    OraDatabase.Parameters.Add "SDKPKG_STATE",  QStrPar("sdkpkg_state"), ORAPARM_INPUT, ORATYPE_CHAR
530
 
531
        '   Update an existing entry
532
        SqlQry = "UPDATE SDK_CONTENT SET SDKPKG_STATE = :SDKPKG_STATE WHERE SDKTAG_ID = :SDKTAG_ID AND PV_ID = :PV_ID"
533
        objEH.ErrorRedirect = FALSE
534
        objEH.TryORA ( OraSession )
535
        On Error Resume Next
536
        OraDatabase.ExecuteSQL SqlQry
537
        objEH.CatchORA ( OraSession )
538
        On Error GoTo 0
539
        result = 0
540
 
541
    OraDatabase.Parameters.Remove "SDKPKG_STATE"
542
    OraDatabase.Parameters.Remove "PV_ID"
543
    OraDatabase.Parameters.Remove "SDKTAG_ID"
544
 
545
End Sub
5048 dpurdie 546
%>