You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/10/03 17:22:44 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2472] ga.js is partially migrated to gtag

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new fa86d55  [OPENMEETINGS-2472] ga.js is partially migrated to gtag
fa86d55 is described below

commit fa86d553f22dc09f9a48a01d98e7ef1e6f50a5e3
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Oct 4 00:22:25 2020 +0700

    [OPENMEETINGS-2472] ga.js is partially migrated to gtag
---
 .../db/dao/basic/ConfigurationDao.java             |  4 ++--
 .../apache/openmeetings/web/pages/BasePage.java    | 11 ++++++++++-
 .../org/apache/openmeetings/web/pages/om-ga.js     | 22 ++++++++++------------
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
index b81a447..bc5fc77 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -631,8 +631,8 @@ public class ConfigurationDao implements IDataProviderDao<Configuration> {
 			addCspRule(cspConfig, CSPDirective.CONNECT_SRC, app.getWsUrl(), false); // special code for Safari browser
 			if (!Strings.isEmpty(getGaCode())) {
 				// https://developers.google.com/tag-manager/web/csp#universal_analytics_google_analytics
-				addCspRule(cspConfig, CSPDirective.IMG_SRC, "https://www.google-analytics.com");
-				addCspRule(cspConfig, CSPDirective.SCRIPT_SRC, "https://www.google-analytics.com, https://ssl.google-analytics.com");
+				//addCspRule(cspConfig, CSPDirective.IMG_SRC, "https://www.google-analytics.com");
+				addCspRule(cspConfig, CSPDirective.SCRIPT_SRC, "https://www.googletagmanager.com");
 			}
 			oauthDao.getActive().forEach(oauth -> {
 				if (!Strings.isEmpty(oauth.getIconUrl())) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index f3d47e1..97f6879 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.web.app.Application.isInstalled;
 import static org.apache.wicket.RuntimeConfigurationType.DEVELOPMENT;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.openmeetings.web.app.Application;
@@ -35,6 +36,7 @@ import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
@@ -130,7 +132,14 @@ public abstract class BasePage extends AsyncUrlFragmentAwarePage {
 		response.render(CssHeaderItem.forUrl(String.format("css/theme_om/jquery-ui%s.css", suffix)));
 		response.render(CssHeaderItem.forUrl("css/theme.css"));
 		if (!Strings.isEmpty(getGaCode())) {
-			response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "om-ga.js"))));
+			response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "om-ga.js") {
+				private static final long serialVersionUID = 1L;
+
+				@Override
+				public List<HeaderItem> getDependencies() {
+					return List.of(JavaScriptHeaderItem.forUrl("https://www.googletagmanager.com/gtag/js?id=" + getGaCode()).setAsync(true));
+				}
+			})));
 			StringBuilder script = new StringBuilder("initGA('");
 			script.append(getGaCode()).append("');").append(isMainPage() ? "initHash()" : "init()").append(';');
 			response.render(OnDomReadyHeaderItem.forScript(script));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js
index e7e73f4..0752f69 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js
@@ -1,22 +1,20 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
-(function(i,s,o,g,r,a,m){
-	i['GoogleAnalyticsObject']=r;
-	i[r]=i[r]||function(){
-		(i[r].q=i[r].q||[]).push(arguments)
-	},i[r].l=1*new Date();
-	a=s.createElement(o),m=s.getElementsByTagName(o)[0];
-	a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 function initGA(code) {
-	ga('create', code, 'auto');
+	window.dataLayer = window.dataLayer || [];
+	function gtag() {
+		dataLayer.push(arguments);
+	}
+	gtag('js', new Date());
+
+	gtag('config', code);
 }
 function init() {
-	ga('send', 'pageview');
+	gtag('event', 'pageview');
 }
 function initHash() {
-	ga('send', 'pageview', window.location.hash);
+	gtag('event', 'pageview', window.location.hash);
 
 	$(window).bind('hashchange', function() {
-		ga('send', 'pageview', window.location.hash);
+		gtag('event', 'pageview', window.location.hash);
 	});
 }