Skip to content

Commit 27295af

Browse files
authored
Migrate inline JavaScript event handlers (#418)
- Migrate inline event handlers in the signup, testresults and skylinetoolsstore modules - Add js and css dependencies in the addClientDependencies method - Fixed bug in SignUpAdmin.jsp - group names were not being displayed in the combobox - Removed unused code from trainingdata.jsp - Call SecurityManager.registerAllowedConnectionSource() to get jQueryUI added to security policy set in the header. - Replace document.getElementById("customGctButton").onclick with document.getElementById("customGctButton")['onclick'] as suggested by Adam. This drops the migrated handlers from text searches looking for typical inline handler patterns ("onclick = ")
1 parent c449767 commit 27295af

File tree

16 files changed

+236
-242
lines changed

16 files changed

+236
-242
lines changed

SkylineToolsStore/src/org/labkey/skylinetoolsstore/SkylineToolsStoreModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.labkey.api.data.ContainerManager;
2323
import org.labkey.api.module.DefaultModule;
2424
import org.labkey.api.module.ModuleContext;
25+
import org.labkey.api.security.SecurityManager;
2526
import org.labkey.api.view.BaseWebPartFactory;
2627
import org.labkey.api.view.Portal;
2728
import org.labkey.api.view.ViewContext;
@@ -91,6 +92,7 @@ public void doStartup(ModuleContext moduleContext)
9192
{
9293
// add a container listener so we'll know when our container is deleted:
9394
ContainerManager.addContainerListener(new SkylineToolsStoreContainerListener());
95+
SecurityManager.registerAllowedConnectionSource("jquery-ui", "https://code.jquery.com/ui/1.13.2/jquery-ui.min.js");
9496
}
9597

9698
@Override

SkylineToolsStore/src/org/labkey/skylinetoolsstore/view/SkylineRating.jsp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
<%@ page import="org.springframework.validation.BindingResult" %>
22
<%@ page import="org.labkey.skylinetoolsstore.SkylineToolsStoreController" %>
33
<%@ page import="org.labkey.api.util.PageFlowUtil" %>
4+
<%@ page import="org.labkey.api.view.template.ClientDependencies" %>
45
<%@ page import="org.labkey.api.settings.AppProps" %>
56
<%@ page extends="org.labkey.api.jsp.JspBase" %>
7+
8+
<%!
9+
@Override
10+
public void addClientDependencies(ClientDependencies dependencies)
11+
{
12+
dependencies.add("internal/jQuery");
13+
dependencies.add("skylinetoolsstore/js/functions.js");
14+
}
15+
%>
16+
617
<%
718
Object errorAttribute = request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "form");
819
Object hideForm = request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "hideForm");
@@ -19,7 +30,6 @@
1930
2031
final String contextPath = AppProps.getInstance().getContextPath();
2132
final String imgDir = contextPath + "/skylinetoolsstore/img/";
22-
final String jsDir = contextPath + "/skylinetoolsstore/js/";
2333
%>
2434
<style>
2535
#slider
@@ -71,10 +81,6 @@
7181
<br />
7282
<%= PageFlowUtil.generateBackButton() %>
7383

74-
<script type="text/javascript" src="<%= h(jsDir) %>functions.js"></script>
75-
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
76-
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
77-
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
7884
<script type="text/javascript" nonce="<%=getScriptNonce()%>">
7985
$(function() {
8086
initRatingSlider($("#slider"), $("#sliderover"), $("#ratingvalue"));

SkylineToolsStore/src/org/labkey/skylinetoolsstore/view/SkylineToolDetails.jsp

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,35 @@
2323
<%@ page import="java.util.Map" %>
2424
<%@ page import="java.util.Arrays" %>
2525
<%@ page import="org.labkey.api.portal.ProjectUrls" %>
26+
<%@ page import="org.labkey.api.view.template.ClientDependencies" %>
27+
<%@ page import="org.labkey.api.settings.AppProps" %>
28+
<%@ page import="org.labkey.api.util.DOM" %>
29+
<%@ page import="static org.labkey.api.util.DOM.IMG" %>
30+
<%@ page import="static org.labkey.api.util.DOM.Attribute.src" %>
31+
<%@ page import="static org.labkey.api.util.DOM.Attribute.alt" %>
32+
<%@ page import="org.labkey.api.util.PageFlowUtil" %>
2633
<%@ page extends="org.labkey.api.jsp.JspBase" %>
34+
35+
<%!
36+
@Override
37+
public void addClientDependencies(ClientDependencies dependencies)
38+
{
39+
dependencies.add("internal/jQuery");
40+
dependencies.add("skylinetoolsstore/js/functions.js");
41+
}
42+
43+
public final HtmlString editIconImgHtml = DOM.createHtml(IMG(DOM.at(src, getWebappURL("skylinetoolsstore/img/pencil.png")).at(alt, "Pencil")));
44+
%>
45+
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" nonce="<%=getScriptNonce()%>"></script>
46+
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.min.css">
47+
2748
<%
2849
JspView<?> me = (JspView<?>) HttpView.currentView();
2950
final SkylineTool tool = (SkylineTool)me.getModelBean();
3051
final boolean admin = getUser().hasSiteAdminPermission();
3152
3253
final String contextPath = AppProps.getInstance().getContextPath();
33-
final String cssDir = contextPath + "/skylinetoolsstore/css/";
3454
final String imgDir = contextPath + "/skylinetoolsstore/img/";
35-
final String jsDir = contextPath + "/skylinetoolsstore/js/";
3655
3756
final SafeToRender autocompleteUsers = admin ? SkylineToolsStoreController.getUsersForAutocomplete() : HtmlString.unsafe("\"\"");
3857
@@ -385,16 +404,14 @@ a { text-decoration: none; }
385404
<div style="float:left; width:351px;">
386405
<img id="toolIcon" src="<%= h(tool.getIconUrl()) %>" class="logoWrap" alt="<%= h(tool.getName()) %>">
387406
<% if (toolEditor) { %>
388-
<a id="editIcon" class="toolProperty" title="Icon" onclick="editTool($(this), 'Icon')">
389-
<img src="<%= h(imgDir) %>pencil.png" />
390-
</a>
407+
<%=link(editIconImgHtml).clearClasses().addClass("toolProperty").id("editIcon").title("Icon").onClick("editTool($(this), 'Icon')")%>
391408
<% } %>
392409
<div class="block">
393410
<h2><%= h(tool.getName()) %></h2>
394411
<p>
395412
Version <%= h(tool.getVersion()) %>
396413
<% if (allVersions.length > 1) { %>
397-
[<a onclick="$('#allVersionsPop').dialog('open')">View All</a>]
414+
[<%=link("View All").clearClasses().onClick("$('#allVersionsPop').dialog('open')")%>]
398415
</p>
399416
<% } %>
400417
</p>
@@ -407,20 +424,21 @@ a { text-decoration: none; }
407424
<% } %>
408425
</div>
409426

410-
<button class="banner-button-small" onclick="window.open('<%=h(urlProvider(ProjectUrls.class).getBeginURL(getContainer().getChild("Support").getChild(tool.getName())))%>', '_blank')">Support Board</button>
427+
<button id="tool-support-board-btn" class="banner-button-small">Support Board</button>
428+
<% addHandler("tool-support-board-btn", "click", "window.open(" + q(urlProvider(ProjectUrls.class).getBeginURL(getContainer().getChild("Support").getChild(tool.getName()))) + ", '_blank', 'noopener,noreferrer')"); %>
411429
</div>
412430
<% if (toolEditor) { %>
413431
<div class="menuMouseArea sprocket">
414432
<img src="<%= h(imgDir) %>gear.png" title="Settings" alt="Sprocket" />
415433
<ul class="dropMenu">
416-
<li><a onclick="$('#uploadPop').dialog('open')">Upload new version</a></li>
417-
<li><a onclick="$('#uploadSuppPop').dialog('open')">Upload supplementary file</a></li>
434+
<li><%=link("Upload new version").clearClasses().onClick("$('#uploadPop').dialog('open')")%></li>
435+
<li><%=link("Upload supplementary file").clearClasses().onClick("$('#uploadSuppPop').dialog('open')")%></li>
418436
<% if (multipleVersions) { %>
419-
<li><a onclick="$('#delToolLatestDlg').dialog('open')">Delete latest version</a></li>
437+
<li><%=link("Delete latest version").clearClasses().onClick("$('#delToolLatestDlg').dialog('open')")%></li>
420438
<% } %>
421439
<% if (admin) { %>
422-
<li><a onclick="$('#delToolAllDlg').dialog('open')">Delete</a></li>
423-
<li><a onclick="popToolOwners()">Manage tool owners</a></li>
440+
<li><%=link("Delete").clearClasses().onClick("$('#delToolAllDlg').dialog('open')")%></li>
441+
<li><%=link("Manage tool owners").clearClasses().onClick("popToolOwners()")%></li>
424442
<% } %>
425443
</ul>
426444
</div>
@@ -429,11 +447,12 @@ a { text-decoration: none; }
429447
<p id="toolDescription" class="toolProperty" title="Description">
430448
<span class="toolPropertyValue"><%= h(tool.getDescription(), true) %></span>
431449
<% if (toolEditor) { %>
432-
<a onclick="editTool($(this))"><img src="<%= h(imgDir) %>pencil.png" alt="Pencil" title="Edit" /></a>
450+
<%=link(editIconImgHtml).clearClasses().onClick("editTool($(this))")%>
433451
<% } %>
434452
</p>
435453
<div id="downloadArea">
436-
<button class="banner-button" onclick="downloadTool(<%= h(tool.getRowId()) %>);">Download <%=h(tool.getName())%></button>
454+
<button id="download-tool-btn" class="banner-button">Download <%=h(tool.getName())%></button>
455+
<% addHandler("download-tool-btn", "click", "downloadTool(" + tool.getRowId() + ")"); %>
437456
<br>
438457
<strong>Downloaded: <span id="downloadcounter"><%= numDownloads %></span></strong>
439458
</div>
@@ -463,7 +482,7 @@ a { text-decoration: none; }
463482
<span class="boldfont">Organization:</span>
464483
<span class="toolPropertyValue"><%= h(tool.getOrganization()) %></span>
465484
<% if (toolEditor) { %>
466-
<a onclick="editTool($(this))"><img src="<%= h(imgDir) %>pencil.png" alt="Pencil" title="Edit" /></a>
485+
<%=link(editIconImgHtml).clearClasses().onClick("editTool($(this))")%>
467486
<% } %>
468487
</div>
469488
<% } %>
@@ -473,7 +492,7 @@ a { text-decoration: none; }
473492
<span class="boldfont">Authors:</span>
474493
<span class="toolPropertyValue"><%= h(tool.getAuthors()) %></span>
475494
<% if (toolEditor) { %>
476-
<a onclick="editTool($(this), 'author')"><img src="<%= h(imgDir) %>pencil.png" alt="Pencil" title="Edit" /></a>
495+
<%=link(editIconImgHtml).clearClasses().onClick("editTool($(this), 'author')")%>
477496
<% } %>
478497
</div>
479498
<% } %>
@@ -483,17 +502,17 @@ a { text-decoration: none; }
483502
<span class="boldfont">Languages:</span>
484503
<span class="toolPropertyValue"><%= h(tool.getLanguages()) %></span>
485504
<% if (toolEditor) { %>
486-
<a onclick="editTool($(this))"><img src="<%= h(imgDir) %>pencil.png" alt="Pencil" title="Edit" /></a>
505+
<%=link(editIconImgHtml).clearClasses().onClick("editTool($(this))")%>
487506
<% } %>
488507
</div>
489508
<% } %>
490509
<% if (tool.getProvider() != null || toolEditor) { %>
491510
<div class="barItem toolProperty" title="Provider's Website">
492511
<!--<img src="<%= h(imgDir) %>link.png" alt="Provider" />-->
493512
<span class="boldfont">More Information:</span>
494-
<a href="<%= h(tool.getProvider()) %>" target="_blank"><span class="toolPropertyValue"><%= h(tool.getProvider()) %></span></a>
513+
<a href="<%= h(tool.getProvider()) %>" target="_blank" rel="noopener noreferrer"><span class="toolPropertyValue"><%= h(tool.getProvider()) %></span></a>
495514
<% if (toolEditor) { %>
496-
<a onclick="editTool($(this), 'provider')"><img src="<%= h(imgDir) %>pencil.png" alt="Pencil" title="Edit" /></a>
515+
<%=link(editIconImgHtml).clearClasses().onClick("editTool($(this), 'provider')")%>
497516
<% } %>
498517
</div>
499518

@@ -582,17 +601,8 @@ a { text-decoration: none; }
582601
<%
583602
}
584603
%>
585-
<%--<% if (!getUser().isGuest() && isLatestVersion && !leftReview) { %>--%>
586-
<%--<p style="text-align: center;">--%>
587-
<%--<a onclick="$('#reviewPop').dialog('open')">Leave a review</a>--%>
588-
<%--</p>--%>
589-
<%--<% } %>--%>
590-
</div>
591604

592-
<link rel="stylesheet" type="text/css" href="<%= h(cssDir) %>jquery-ui.css">
593-
<script type="text/javascript" src="<%= h(jsDir) %>functions.js"></script>
594-
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
595-
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
605+
</div>
596606

597607
<script type="text/javascript" nonce="<%=getScriptNonce()%>">
598608
$(function() {
@@ -706,7 +716,7 @@ a { text-decoration: none; }
706716
$("#delRatingDlg").dialog({modal:true, autoOpen:false, create:function(){fixDlg($(this));}, width:'auto', show:DLG_EFFECT_SHOW, hide:DLG_EFFECT_HIDE, dialogClass:"noCloseDlg",
707717
buttons: {
708718
Ok: function() {
709-
window.location = "<%=h(urlFor(SkylineToolsStoreController.DeleteRatingAction.class))%>id=" + $("#delRatingDlg").data("ratingId");
719+
window.location = LABKEY.ActionURL.buildURL("skyts", "deleteRating.view", null, {id: $("#delRatingDlg").data("ratingId")});
710720
},
711721
Cancel: function() {$(this).dialog("close");}
712722
}

SkylineToolsStore/src/org/labkey/skylinetoolsstore/view/SkylineToolsStoreUpload.jsp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,20 @@
44
<%@ page import="org.labkey.api.settings.AppProps" %>
55
<%@ page import="org.labkey.api.util.SafeToRender" %>
66
<%@ page import="org.labkey.api.util.HtmlString" %>
7+
<%@ page import="org.labkey.api.view.template.ClientDependencies" %>
78
<%@ page extends="org.labkey.api.jsp.JspBase" %>
9+
10+
<%!
11+
@Override
12+
public void addClientDependencies(ClientDependencies dependencies)
13+
{
14+
dependencies.add("internal/jQuery");
15+
dependencies.add("skylinetoolsstore/js/functions.js");
16+
}
17+
%>
18+
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" nonce="<%=getScriptNonce()%>"></script>
19+
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.min.css">
20+
821
<%
922
Object errorAttribute = request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "form");
1023
if (errorAttribute != null)
@@ -13,9 +26,7 @@
1326
}
1427
1528
final String contextPath = AppProps.getInstance().getContextPath();
16-
final String cssDir = contextPath + "/skylinetoolsstore/css/";
1729
final String imgDir = contextPath + "/skylinetoolsstore/img/";
18-
final String jsDir = contextPath + "/skylinetoolsstore/js/";
1930
2031
final String sender = (String)request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "sender");
2132
final String updateTarget = (String)request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "updatetarget");
@@ -47,11 +58,6 @@
4758
<br />
4859
<%= PageFlowUtil.generateBackButton() %>
4960

50-
<link rel="stylesheet" type="text/css" href="<%= h(cssDir) %>jquery-ui.css">
51-
<script type="text/javascript" src="<%= h(jsDir) %>functions.js"></script>
52-
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
53-
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
54-
5561
<script type="text/javascript" nonce="<%=getScriptNonce()%>">
5662
autocomplete($("#toolOwners"), <%=users%>);
5763
initJqueryUiImages("<%= h(imgDir + "jquery-ui") %>");

SkylineToolsStore/src/org/labkey/skylinetoolsstore/view/SkylineToolsStoreWebPart.jsp

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,20 @@
1919
<%@ page import="java.util.Map" %>
2020
<%@ page import="org.labkey.api.util.SafeToRender" %>
2121
<%@ page import="java.util.Arrays" %>
22+
<%@ page import="org.labkey.api.view.template.ClientDependencies" %>
2223
<%@ page extends="org.labkey.api.jsp.JspBase" %>
24+
25+
<%!
26+
@Override
27+
public void addClientDependencies(ClientDependencies dependencies)
28+
{
29+
dependencies.add("internal/jQuery");
30+
dependencies.add("skylinetoolsstore/js/functions.js");
31+
}
32+
%>
33+
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" nonce="<%=getScriptNonce()%>"></script>
34+
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.min.css">
35+
2336
<%
2437
JspView<?> me = (JspView<?>)HttpView.currentView();
2538
List<SkylineTool> tools = (List<SkylineTool>)me.getModelBean();
@@ -28,9 +41,7 @@
2841
final boolean loggedIn = !getUser().isGuest();
2942
3043
final String contextPath = AppProps.getInstance().getContextPath();
31-
final String cssDir = contextPath + "/skylinetoolsstore/css/";
3244
final String imgDir = contextPath + "/skylinetoolsstore/img/";
33-
final String jsDir = contextPath + "/skylinetoolsstore/js/";
3445
3546
HashMap<Integer, Integer> toolRatings = new HashMap();
3647
HashMap<Integer, Integer[]> toolRatingSplit = new HashMap();
@@ -153,7 +164,8 @@
153164

154165
<% if (admin) { %>
155166
<div style="float: left;">
156-
<button type="button" onclick="$('#uploadPopOwners').show(); $('#updatetarget').val(''); $('#uploadPop').dialog('open')" class="styled-button">Add New Tool</button>
167+
<button type="button" id="add-new-tool-btn" class="styled-button">Add New Tool</button>
168+
<% addHandler("add-new-tool-btn", "click", "$('#uploadPopOwners').show(); $('#updatetarget').val(''); $('#uploadPop').dialog('open')"); %>
157169
</div>
158170
<% } %>
159171
<!--Submit Rating Form-->
@@ -261,14 +273,14 @@
261273
<div class="menuMouseArea sprocket" alt="<%= h(tool.getName()) %>">
262274
<img src="<%= h(imgDir) %>gear.png" title="Settings" />
263275
<ul class="dropMenu">
264-
<li><a onclick="$('#uploadPopOwners').hide(); $('#updatetarget').val(<%= h(tool.getRowId()) %>); $('#uploadPop').dialog('open')">Upload new version</a></li>
265-
<li><a onclick="$('#supptarget').val(<%= h(tool.getRowId()) %>); $('#uploadSuppPop').dialog('open')">Upload supplementary file</a></li>
276+
<li><%=link("Upload new version").clearClasses().onClick("$('#uploadPopOwners').hide(); $('#updatetarget').val(" + tool.getRowId() + "); $('#uploadPop').dialog('open')")%></li>
277+
<li><%=link("Upload supplementary file").clearClasses().onClick("$('#supptarget').val(" + tool.getRowId() + "); $('#uploadSuppPop').dialog('open')")%></li>
266278
<% if (multipleVersions) { %>
267-
<li><a onclick="delToolLatest($(this))">Delete latest version</a></li>
279+
<li><%=link("Delete latest version").clearClasses().onClick("delToolLatest($(this))")%></li>
268280
<% } %>
269281
<% if (admin) { %>
270-
<li><a onclick="delToolAll($(this))">Delete</a></li>
271-
<li><a onclick="popToolOwners(<%= h(tool.getRowId()) %>)">Manage tool owners</a></li>
282+
<li><%=link("Delete").clearClasses().onClick("delToolAll($(this))")%></li>
283+
<li><%=link("Manage tool owners").clearClasses().onClick("popToolOwners(" + tool.getRowId() + ")")%></li>
272284
<% } %>
273285
</ul>
274286
</div>
@@ -337,7 +349,7 @@
337349
<p>
338350
<a href="<%= h(detailsUrl) %>">See all <%= totalReviews %> reviews</a>
339351
<% if (loggedIn && !leftReview) { %>
340-
/ <a onclick="$('#ratingToolId').val(<%= h(tool.getRowId()) %>); $('#reviewPop').dialog('open')">Leave review</a>
352+
<%=link("Leave review").clearClasses().onClick("$('#ratingToolId').val(" + tool.getRowId() + "); $('#reviewPop').dialog('open')")%>
341353
<% } %>
342354
</p>
343355
</div>
@@ -348,7 +360,8 @@
348360

349361
<div class="toolButtons">
350362

351-
<button type="button" onclick="window.location.href = '<%=h(urlFor(SkylineToolsStoreController.DownloadToolAction.class).addParameter("id", tool.getRowId()))%>'" class="styled-button">Download</button>
363+
<button type="button" id="download-tool-btn-<%=tool.getRowId()%>" class="styled-button">Download</button>
364+
<% addHandler("download-tool-btn-" + tool.getRowId(), "click", "window.location.href = " + q(urlFor(SkylineToolsStoreController.DownloadToolAction.class).addParameter("id", tool.getRowId()))); %>
352365
<% if ((ratingsCurVer == null || ratingsCurVer.length == 0) && loggedIn) { %>
353366
<%--<button type="button" onclick="$('#ratingToolId').val(<%= h(tool.getRowId()) %>); $('#reviewPop').dialog('open')" class="styled-button">Leave the first Review!</button>--%>
354367
<%
@@ -378,12 +391,6 @@
378391
<% } %>
379392
</div>
380393

381-
<link rel="stylesheet" type="text/css" href="<%= h(cssDir) %>jquery-ui.css">
382-
<script type="text/javascript" src="<%= h(jsDir) %>functions.js"></script>
383-
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
384-
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
385-
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
386-
387394
<script type="text/javascript" nonce="<%=getScriptNonce()%>">
388395
var READ_MORE_TEXT = "Read more";
389396
var READ_LESS_TEXT = "Close";

lincs/resources/views/CustomGCT.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
}
1010
LABKEY.Utils.onReady(function()
1111
{
12-
document.getElementById("customGctButton").onclick = function() { showCustomGCTForm(); };
12+
document.getElementById("customGctButton")['onclick'] = showCustomGCTForm;
1313
});
1414

1515
</script>

0 commit comments

Comments
 (0)