Author: nico
Date: 2009-05-03 14:24:36 +0200 (Sun, 03 May 2009)
New Revision: 34912
Modified:
CMSContainer/branches/b1_4/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_4/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
===================================================================
---
CMSContainer/branches/b1_4/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
2009-05-03 12:24:33 UTC (rev 34911)
+++
CMSContainer/branches/b1_4/CMSContainer/cmsc/taglib/src/java/com/finalist/cmsc/taglib/stats/GoogleAnalyticsTag.java
2009-05-03 12:24:36 UTC (rev 34912)
@@ -11,9 +11,7 @@
import java.io.IOException;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
+import javax.naming.*;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
@@ -36,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;
@@ -70,8 +70,7 @@
* production)
*/
String account = null;
- boolean isLiveProduction = (ServerUtil.isLive() && ServerUtil
- .isProduction());
+ boolean isLiveProduction = (ServerUtil.isLive() &&
ServerUtil.isProduction());
if (StringUtils.isNotBlank(accountParameter) &&
isLiveProduction) {
account = accountParameter;
} else if (contextAccount != null) {
@@ -84,21 +83,19 @@
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");
- }
+ if (typeParameter.equals(TYPE_BASIC)) {
+ 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);
}
@@ -122,13 +119,34 @@
}
}
javascript.append("');\r\n");
+ javascript.append("</script>\r\n");
}
- javascript.append("</script>\r\n");
+ PageContext ctx = (PageContext) getJspContext();
+ ctx.getOut().write(javascript.toString());
+ }
+ }
- 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) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs