Beispiel #1
0
        protected string AppendExtendedTracking(SiteTrackerSettings siteSettings, ref bool requiresScriptReference)
        {
            Dictionary <string, object> extendedTracking = this.GetExtendedTracking(siteSettings);

            requiresScriptReference = extendedTracking.Count > 0;
            return(this.SerializeTrackerSettings(extendedTracking, siteSettings.TrackingScriptOption.ToString()));
        }
        public override string BuildTrackingScript(ScriptBuilderContext appenderContext, SiteTrackerSettings siteSettings,
            out bool requiresScriptReference)
        {
            requiresScriptReference = false;
            if (siteSettings == null)
            {
                return null;
            }

            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.AppendLine("/* Begin GA Script */");
            stringBuilder.AppendLine(_gaScript);

            stringBuilder.AppendLine(string.Format("ga('create', '{0}', 'auto');", siteSettings.TrackingId));

            stringBuilder.AppendLine("// Extended Tracking");
            stringBuilder.AppendLine(AppendExtendedTracking(siteSettings, ref requiresScriptReference));

            stringBuilder.AppendLine("// Plugin Script");
            stringBuilder.AppendLine(this.GetPluginScript());

            if (siteSettings.TrackAuthors && !string.IsNullOrEmpty(appenderContext.Author))
            {
                stringBuilder.AppendLine("// Custom Author Tracking");
                stringBuilder.AppendLine(this.GetCustomDimension("Author", CustomVariables.AuthorVariable, appenderContext.Author));
            }

            ContentReference contentReference = new ContentReference(appenderContext.PageId);

            ICollection<AnalyticsInteraction> interactions =  EPiServer.GoogleAnalytics.Helpers.Extensions.GetInteractions(appenderContext.InteractionStore);

            // This is where the interesting stuff happens
            // All custom interactions are added here
            stringBuilder.AppendLine("// Begin Interactions");
            foreach (AnalyticsInteraction interaction in interactions)
            {
                // Skip any interactions that are tied to a specific page
                if (ContentReference.IsNullOrEmpty(interaction.ContentLink) == false &&
                    contentReference.Equals(interaction.ContentLink) == false)
                {
                    continue;
                }
                stringBuilder.AppendLine(interaction.GetUAScript());
            }
            stringBuilder.AppendLine("// End Interactions");

            // Clear any interactions that should not persist
            // across a request
            this.ClearRedundantInteractions(interactions);

            stringBuilder.AppendLine("ga('send', 'pageview');");
            stringBuilder.AppendLine("/* End GA Script */");
            return stringBuilder.ToString();
        }
Beispiel #3
0
        public override string BuildTrackingScript(ScriptBuilderContext appenderContext, SiteTrackerSettings siteSettings,
                                                   out bool requiresScriptReference)
        {
            requiresScriptReference = false;
            if (siteSettings == null)
            {
                return(null);
            }

            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("/* Begin GA Script */");
            stringBuilder.AppendLine(_gaScript);

            stringBuilder.AppendLine(string.Format("ga('create', '{0}', 'auto');", siteSettings.TrackingId));

            stringBuilder.AppendLine("// Extended Tracking");
            stringBuilder.AppendLine(AppendExtendedTracking(siteSettings, ref requiresScriptReference));

            stringBuilder.AppendLine("// Plugin Script");
            stringBuilder.AppendLine(this.GetPluginScript());

            if (siteSettings.TrackAuthors && !string.IsNullOrEmpty(appenderContext.Author))
            {
                stringBuilder.AppendLine("// Custom Author Tracking");
                stringBuilder.AppendLine(this.GetCustomDimension("Author", CustomVariables.AuthorVariable, appenderContext.Author));
            }

            ContentReference contentReference = new ContentReference(appenderContext.PageId);

            ICollection <AnalyticsInteraction> interactions = EPiServer.GoogleAnalytics.Helpers.Extensions.GetInteractions(appenderContext.InteractionStore);

            // This is where the interesting stuff happens
            // All custom interactions are added here
            stringBuilder.AppendLine("// Begin Interactions");
            foreach (AnalyticsInteraction interaction in interactions)
            {
                // Skip any interactions that are tied to a specific page
                if (ContentReference.IsNullOrEmpty(interaction.ContentLink) == false &&
                    contentReference.Equals(interaction.ContentLink) == false)
                {
                    continue;
                }
                stringBuilder.AppendLine(interaction.GetUAScript());
            }
            stringBuilder.AppendLine("// End Interactions");

            // Clear any interactions that should not persist
            // across a request
            this.ClearRedundantInteractions(interactions);

            stringBuilder.AppendLine("ga('send', 'pageview');");
            stringBuilder.AppendLine("/* End GA Script */");
            return(stringBuilder.ToString());
        }
 protected string AppendExtendedTracking(SiteTrackerSettings siteSettings, ref bool requiresScriptReference)
 {
     Dictionary<string, object> extendedTracking = this.GetExtendedTracking(siteSettings);
     requiresScriptReference = extendedTracking.Count > 0;
     return this.SerializeTrackerSettings(extendedTracking, siteSettings.TrackingScriptOption.ToString());
 }