google analytics support

This commit is contained in:
Athou
2013-04-22 20:49:24 +02:00
parent fbba5dce16
commit 6011411dc4
5 changed files with 73 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -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<String, Object> 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))));
}
}
}

View File

@@ -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);

View File

@@ -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');