From 6011411dc4a83a416618d2dc12c17cbfc8703a2d Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 22 Apr 2013 20:49:24 +0200 Subject: [PATCH] google analytics support --- .../backend/model/ApplicationSettings.java | 21 +++++++++++++++++ .../commafeed/frontend/pages/BasePage.java | 23 +++++++++++++++++++ .../commafeed/frontend/pages/HomePage.java | 6 ----- .../com/commafeed/frontend/pages/analytics.js | 13 +++++++++++ src/main/webapp/templates/admin.settings.html | 16 +++++++++++++ 5 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/commafeed/frontend/pages/analytics.js diff --git a/src/main/java/com/commafeed/backend/model/ApplicationSettings.java b/src/main/java/com/commafeed/backend/model/ApplicationSettings.java index a819f897..ba45c489 100644 --- a/src/main/java/com/commafeed/backend/model/ApplicationSettings.java +++ b/src/main/java/com/commafeed/backend/model/ApplicationSettings.java @@ -19,6 +19,10 @@ public class ApplicationSettings extends AbstractModel { * Wether registrations are open */ private boolean allowRegistrations = false; + + private String googleAnalyticsTrackingCode; + private String googleAnalyticsDomainName; + private String googleClientId; private String googleClientSecret; private int backgroundThreads = 3; @@ -109,4 +113,21 @@ public class ApplicationSettings extends AbstractModel { this.smtpPassword = smtpPassword; } + public String getGoogleAnalyticsTrackingCode() { + return googleAnalyticsTrackingCode; + } + + public void setGoogleAnalyticsTrackingCode( + String googleAnalyticsTrackingCode) { + this.googleAnalyticsTrackingCode = googleAnalyticsTrackingCode; + } + + public String getGoogleAnalyticsDomainName() { + return googleAnalyticsDomainName; + } + + public void setGoogleAnalyticsDomainName(String googleAnalyticsDomainName) { + this.googleAnalyticsDomainName = googleAnalyticsDomainName; + } + } diff --git a/src/main/java/com/commafeed/frontend/pages/BasePage.java b/src/main/java/com/commafeed/frontend/pages/BasePage.java index 7c1923e8..5adaef25 100644 --- a/src/main/java/com/commafeed/frontend/pages/BasePage.java +++ b/src/main/java/com/commafeed/frontend/pages/BasePage.java @@ -1,10 +1,16 @@ package com.commafeed.frontend.pages; +import java.util.Map; + import javax.inject.Inject; +import org.apache.commons.lang.StringUtils; import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.head.filter.HeaderResponseContainer; import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.model.Model; +import org.apache.wicket.resource.TextTemplateResourceReference; import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedDAO; @@ -14,7 +20,10 @@ import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserRoleDAO; import com.commafeed.backend.dao.UserSettingsDAO; +import com.commafeed.backend.model.ApplicationSettings; +import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.frontend.references.bootstrap.BootstrapReference; +import com.google.api.client.util.Maps; @SuppressWarnings("serial") public abstract class BasePage extends WebPage { @@ -43,6 +52,9 @@ public abstract class BasePage extends WebPage { @Inject protected UserRoleDAO userRoleDAO; + @Inject + ApplicationSettingsService applicationSettingsService; + public BasePage() { add(new HeaderResponseContainer("footer-container", "footer-container")); } @@ -51,5 +63,16 @@ public abstract class BasePage extends WebPage { public void renderHead(IHeaderResponse response) { super.renderHead(response); BootstrapReference.renderHead(response); + + final ApplicationSettings settings = applicationSettingsService.get(); + if (StringUtils.isNotBlank(settings.getGoogleAnalyticsTrackingCode())) { + Map vars = Maps.newHashMap(); + vars.put("trackingCode", settings.getGoogleAnalyticsTrackingCode()); + vars.put("domainName", settings.getGoogleAnalyticsDomainName()); + response.render(JavaScriptHeaderItem + .forReference(new TextTemplateResourceReference( + BasePage.class, "analytics.js", Model.ofMap(vars)))); + + } } } diff --git a/src/main/java/com/commafeed/frontend/pages/HomePage.java b/src/main/java/com/commafeed/frontend/pages/HomePage.java index ed5f28a7..6b43b9b3 100644 --- a/src/main/java/com/commafeed/frontend/pages/HomePage.java +++ b/src/main/java/com/commafeed/frontend/pages/HomePage.java @@ -1,13 +1,10 @@ package com.commafeed.frontend.pages; -import javax.inject.Inject; - import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.request.mapper.parameter.PageParameters; -import com.commafeed.backend.dao.UserSettingsDAO; import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.model.UserSettings; import com.commafeed.frontend.CommaFeedSession; @@ -30,9 +27,6 @@ import com.commafeed.frontend.references.spinjs.SpinJSReference; @SecurityCheck(Role.USER) public class HomePage extends BasePage { - @Inject - UserSettingsDAO userSettingsDAO; - @Override public void renderHead(IHeaderResponse response) { super.renderHead(response); diff --git a/src/main/java/com/commafeed/frontend/pages/analytics.js b/src/main/java/com/commafeed/frontend/pages/analytics.js new file mode 100644 index 00000000..dd1e65f5 --- /dev/null +++ b/src/main/java/com/commafeed/frontend/pages/analytics.js @@ -0,0 +1,13 @@ +(function(i, s, o, g, r, a, m) { + i['GoogleAnalyticsObject'] = r; + i[r] = i[r] || function() { + (i[r].q = i[r].q || []).push(arguments) + }, i[r].l = 1 * new Date(); + a = s.createElement(o), m = s.getElementsByTagName(o)[0]; + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m) +})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); + +ga('create', '${trackingCode}', '${domainName}'); +ga('send', 'pageview'); diff --git a/src/main/webapp/templates/admin.settings.html b/src/main/webapp/templates/admin.settings.html index 8de10610..a7c107c4 100644 --- a/src/main/webapp/templates/admin.settings.html +++ b/src/main/webapp/templates/admin.settings.html @@ -41,6 +41,22 @@ ng-model="settings.googleClientSecret" /> +
+ +
+ +
+
+
+ +
+ +
+