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

Reply via email to