/// <summary> /// Builds the Google Analytics JavaScript block. /// </summary> /// <returns>Google Analytics JavaScript block.</returns> private string GetGoogleAnalyticsJavaScript() { if (_googleAnalyticsJavaScript.Length == 0) { ValidatePropertySettings(); StringBuilder bldr = new StringBuilder(); bldr.AppendLine(@"<script type=" + Quote + "text/javascript" + Quote + ">"); bldr.AppendLine(@" var _gaq = _gaq || [];"); bldr.AppendLine(@" _gaq.push(['_setAccount', '" + AccountId + "']);"); if (DomainOption.Equals(DomainOptions.SingleDomainMultipleSubDomains)) { bldr.AppendLine(@" _gaq.push(['_setDomainName', '" + DomainName + "']);"); } else if (DomainOption.Equals(DomainOptions.MultipleTopLevelDomains)) { bldr.AppendLine(@" _gaq.push(['_setDomainName', 'none']);"); bldr.AppendLine(@" _gaq.push(['_setAllowLinker', true]);"); } bldr.AppendLine(@" _gaq.push(['_trackPageview']);"); bldr.AppendLine(@" (function() {"); bldr.AppendLine(@" var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;"); bldr.AppendLine(@" ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';"); bldr.AppendLine(@" var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);"); bldr.AppendLine(@" })();"); bldr.AppendLine(@"</script>"); lock (_lockObject) { _googleAnalyticsJavaScript = bldr.ToString(); } } return(_googleAnalyticsJavaScript); }
/// <summary> /// Validates control's property settings to ensure proper configuration. /// </summary> private void ValidatePropertySettings() { if (AccountId.Length == 0) { throw new ArgumentException(Exceptions.GoogleAnalytics_AccountIdNullOrEmpty); } if (!DomainOptions.ValidOptions.Contains(DomainOption)) { throw new ArgumentException(Exceptions.GoogleAnalytics_DomainOptionInvalid); } if (DomainOption.Equals(DomainOptions.SingleDomainMultipleSubDomains)) { if (DomainName.Length == 0) { throw new ArgumentException(Exceptions.GoogleAnalytics_DomainNameMissing); } } }