Author: nico
Date: 2009-05-03 14:24:33 +0200 (Sun, 03 May 2009)
New Revision: 34911
Modified:
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
Log:
CMSC-1390 Google Analytics in Internet explorer.does not work for two letter
domains
Modified:
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
===================================================================
---
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
2009-05-03 12:24:29 UTC (rev 34910)
+++
CMSContainer/branches/b1_5/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
2009-05-03 12:24:33 UTC (rev 34911)
@@ -34,6 +34,8 @@
.getLoggerInstance(GoogleAnalyticsTag.class.getName());
private final static String TYPE_BASIC = "basic"; // init and page counter
code (default)
+ private final static String TYPE_SCRIPT = "script"; // init script
+ private final static String TYPE_PAGE_COUNTER = "pagecounter"; // page
counter code
private final static String TYPE_EVENT = "event"; // event code, category
and action are required
private String accountParameter;
@@ -81,21 +83,20 @@
if (StringUtils.isNotBlank(account)) {
StringBuilder javascript = new StringBuilder();
- javascript.append("<script type=\"text/javascript\">");
if (typeParameter.equals(TYPE_BASIC)) {
- javascript.append("\r\nvar gaJsHost = ((\"https:\" ==
document.location.protocol) ? \"https://ssl.\" : \"http://www.\");\r\n");
- javascript.append("document.write(unescape(\"%3Cscript src='\" +
gaJsHost + \"google-analytics.com/ga.js'
type='text/javascript'%3E%3C/script%3E\"));\r\n");
- javascript.append("</script>\r\n");
- javascript.append("<script type=\"text/javascript\">\r\n");
- javascript.append("try{\r\n");
- javascript.append("var pageTracker = _gat._getTracker(\"");
- javascript.append(account);
- javascript.append("\");\r\n");
- javascript.append("pageTracker._trackPageview();\r\n");
- javascript.append("} catch(err) {}\r\n");
+ appendGAScript(javascript);
+ appendPageCounter(javascript, account);
}
+ if (typeParameter.equals(TYPE_SCRIPT)) {
+ appendGAScript(javascript);
+ }
+ if (typeParameter.equals(TYPE_PAGE_COUNTER)) {
+ appendPageCounter(javascript, account);
+ }
+
if (typeParameter.equals(TYPE_EVENT)) {
+ javascript.append("<script type=\"text/javascript\">");
if (StringUtils.isNotBlank(nodeNumberParameter)) {
actionParameter = getActionFromNodeNumber(nodeNumberParameter);
}
@@ -119,15 +120,36 @@
}
}
javascript.append("');\r\n");
+ javascript.append("</script>\r\n");
}
- javascript.append("</script>\r\n");
-
PageContext ctx = (PageContext) getJspContext();
ctx.getOut().write(javascript.toString());
}
}
+ private void appendGAScript(StringBuilder javascript) {
+ javascript.append("<script type=\"text/javascript\">\r\n");
+ javascript.append("var gaJsHost = ((\"https:\" ==
document.location.protocol) ? \"https://ssl.\" : \"http://www.\");\r\n");
+ javascript.append("document.write(unescape(\"%3Cscript src='\" +
gaJsHost + \"google-analytics.com/ga.js'
type='text/javascript'%3E%3C/script%3E\"));\r\n");
+ javascript.append("</script>\r\n");
+ }
+
+ private void appendPageCounter(StringBuilder javascript, String account) {
+ PageContext ctx = (PageContext) getJspContext();
+ String domain = ctx.getRequest().getServerName();
+
+ javascript.append("<script type=\"text/javascript\">\r\n");
+ javascript.append("try{\r\n");
+ javascript.append("var pageTracker =
_gat._getTracker(\"").append(account).append("\");\r\n");
+ // Workaround for http://support.microsoft.com/kb/310676
+ // Internet Explorer does not set a cookie for two-letter domains like
12.nl
+
javascript.append("pageTracker._setDomainName(\"").append(domain).append("\");\r\n");
+ javascript.append("pageTracker._trackPageview();\r\n");
+ javascript.append("} catch(err) {}\r\n");
+ javascript.append("</script>\r\n");
+ }
+
private String escapeParameter(String parameter) {
return parameter.replace("'", "\\'");
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs