Author: solomax Date: Fri Jan 22 05:29:16 2016 New Revision: 1726143 URL: http://svn.apache.org/viewvc?rev=1726143&view=rev Log: [OPENMEETINGS-1313] support for google analytics is added
Added: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js Modified: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java Modified: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Fri Jan 22 05:29:16 2016 @@ -32,6 +32,7 @@ import static org.apache.openmeetings.ut import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY; +import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_GOOGLE_ANALYTICS_CODE; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY; @@ -410,6 +411,7 @@ public class ImportInitvalues { cfgDao.add(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, "", null, "Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost"); cfgDao.add(CONFIG_CALENDAR_FIRST_DAY, "0", null, "The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc."); + cfgDao.add(CONFIG_GOOGLE_ANALYTICS_CODE, null, null, "Code for Google Analytics"); log.debug("Configurations ADDED"); } Modified: openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml (original) +++ openmeetings/application/branches/3.1.x/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml Fri Jan 22 05:29:16 2016 @@ -296,6 +296,12 @@ <td> The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc. </td> <td> 3.0.4 </td> </tr> + <tr> + <td> google.analytics.code </td> + <td> </td> + <td> Code for Google Analytics. </td> + <td> 3.1.0 </td> + </tr> </table> </section> Modified: openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java Fri Jan 22 05:29:16 2016 @@ -44,6 +44,7 @@ public class OpenmeetingsVariables { public static final String CONFIG_SCREENSHARING_ALLOW_REMOTE = "screensharing.allow.remote"; public static final String CONFIG_CALENDAR_FIRST_DAY = "calendar.firstday"; public static final String CONFIG_DEFAULT_GROUP_ID = "default_group_id"; + public static final String CONFIG_GOOGLE_ANALYTICS_CODE = "google.analytics.code"; public static int DEFAULT_MINUTES_REMINDER_SEND = 15; public static String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/"; Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java Fri Jan 22 05:29:16 2016 @@ -18,6 +18,8 @@ */ package org.apache.openmeetings.web.pages; +import static org.apache.openmeetings.web.app.Application.getBean; + import java.util.Date; import org.apache.openmeetings.db.dao.user.UserDao; @@ -34,14 +36,14 @@ public class ActivatePage extends BaseNo public ActivatePage(PageParameters pp) { String userHash = pp.get(ACTIVATION_PARAM).toString(); if (userHash != null) { - User user = Application.getBean(UserDao.class).getUserByActivationHash(userHash); + User user = getBean(UserDao.class).getUserByActivationHash(userHash); if (user != null && !AuthLevelUtil.hasLoginLevel(user.getRights())) { // activate user.getRights().add(Right.Login); user.setUpdated(new Date()); - Application.getBean(UserDao.class).update(user, null); + getBean(UserDao.class).update(user, null); } } setResponsePage(Application.get().getSignInPageClass()); Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java Fri Jan 22 05:29:16 2016 @@ -38,7 +38,7 @@ public abstract class BaseInitedPage ext } @Override - public boolean isRtl() { + protected boolean isRtl() { return FormatHelper.isRtlLanguage(getLanguageCode()); } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java Fri Jan 22 05:29:16 2016 @@ -40,7 +40,7 @@ public abstract class BaseNotInitedPage } @Override - public boolean isRtl() { + protected boolean isRtl() { boolean rtl = false; if (Application.isInstalled()) { rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString()); Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java Fri Jan 22 05:29:16 2016 @@ -18,9 +18,14 @@ */ package org.apache.openmeetings.web.pages; +import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_GOOGLE_ANALYTICS_CODE; +import static org.apache.openmeetings.web.app.Application.getBean; + import java.util.HashMap; import java.util.Map; +import org.apache.directory.api.util.Strings; +import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.HeaderPanel; import org.apache.openmeetings.web.util.OmUrlFragment; @@ -31,10 +36,12 @@ import org.apache.wicket.markup.head.Css import org.apache.wicket.markup.head.CssReferenceHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.head.PriorityHeaderItem; import org.apache.wicket.markup.html.TransparentWebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.IRequestParameters; +import org.apache.wicket.request.resource.JavaScriptResourceReference; import org.apache.wicket.util.string.StringValue; import org.wicketstuff.urlfragment.AsyncUrlFragmentAwarePage; @@ -43,7 +50,7 @@ public abstract class BasePage extends A private final Map<String, String> options; private final HeaderPanel header; - public abstract boolean isRtl(); + protected abstract boolean isRtl(); protected abstract String getLanguageCode(); protected abstract String getApplicationName(); @@ -80,6 +87,14 @@ public abstract class BasePage extends A protected Map<String, String> getOptions() { return options; } + + protected String getGaCode() { + return getBean(ConfigurationDao.class).getConfValue(CONFIG_GOOGLE_ANALYTICS_CODE, String.class, null); + } + + protected boolean isMainPage() { + return false; + } @Override public void renderHead(IHeaderResponse response) { @@ -91,5 +106,11 @@ public abstract class BasePage extends A response.render(CssHeaderItem.forUrl("css/theme-rtl.css")); response.render(CssHeaderItem.forUrl("css/admin-rtl.css")); } + if (!Strings.isEmpty(getGaCode())) { + response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "om-ga.js")))); + StringBuilder script = new StringBuilder("initGA('"); + script.append(getGaCode()).append("');").append(isMainPage() ? "initHash()" : "init()").append(';'); + response.render(OnDomReadyHeaderItem.forScript(script)); + } } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Fri Jan 22 05:29:16 2016 @@ -324,4 +324,9 @@ public class MainPage extends BaseInited public ChatPanel getChat() { return chat; } + + @Override + protected boolean isMainPage() { + return true; + } } Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java (original) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java Fri Jan 22 05:29:16 2016 @@ -32,4 +32,9 @@ public class NotInitedPage extends BaseN throw new RestartResponseException(Application.get().getHomePage()); } } + + @Override + protected String getGaCode() { + return null; + } } Added: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js?rev=1726143&view=auto ============================================================================== --- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js (added) +++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js Fri Jan 22 05:29:16 2016 @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +(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'); + +function initGA(code) { + ga('create', code, 'auto'); +} + +function init() { + ga('send', 'pageview'); +} + +function initHash() { + ga('send', 'pageview', window.location.hash); + + $(window).bind( 'hashchange', function( e ) { + ga('send', 'pageview', window.location.hash); + }); +} Modified: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original) +++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Fri Jan 22 05:29:16 2016 @@ -32,6 +32,7 @@ import static org.apache.openmeetings.ut import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LDAP_ID; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY; +import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_GOOGLE_ANALYTICS_CODE; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY; import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY; @@ -410,6 +411,7 @@ public class ImportInitvalues { cfgDao.add(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, "", null, "Users entered the room via invitationHash or secureHash will be redirected to this URL on connection lost"); cfgDao.add(CONFIG_CALENDAR_FIRST_DAY, "0", null, "The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc."); + cfgDao.add(CONFIG_GOOGLE_ANALYTICS_CODE, null, null, "Code for Google Analytics"); log.debug("Configurations ADDED"); } Modified: openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml (original) +++ openmeetings/application/trunk/openmeetings-server/src/site/xdoc/GeneralConfiguration.xml Fri Jan 22 05:29:16 2016 @@ -296,6 +296,12 @@ <td> The day that each week begins. The value must be a number that represents the day of the week. Sunday=0, Monday=1, Tuesday=2, etc. </td> <td> 3.0.4 </td> </tr> + <tr> + <td> google.analytics.code </td> + <td> </td> + <td> Code for Google Analytics. </td> + <td> 3.1.0 </td> + </tr> </table> </section> Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java (original) +++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java Fri Jan 22 05:29:16 2016 @@ -44,6 +44,7 @@ public class OpenmeetingsVariables { public static final String CONFIG_SCREENSHARING_ALLOW_REMOTE = "screensharing.allow.remote"; public static final String CONFIG_CALENDAR_FIRST_DAY = "calendar.firstday"; public static final String CONFIG_DEFAULT_GROUP_ID = "default_group_id"; + public static final String CONFIG_GOOGLE_ANALYTICS_CODE = "google.analytics.code"; public static int DEFAULT_MINUTES_REMINDER_SEND = 15; public static String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/"; Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java Fri Jan 22 05:29:16 2016 @@ -18,6 +18,8 @@ */ package org.apache.openmeetings.web.pages; +import static org.apache.openmeetings.web.app.Application.getBean; + import java.util.Date; import org.apache.openmeetings.db.dao.user.UserDao; @@ -34,14 +36,14 @@ public class ActivatePage extends BaseNo public ActivatePage(PageParameters pp) { String userHash = pp.get(ACTIVATION_PARAM).toString(); if (userHash != null) { - User user = Application.getBean(UserDao.class).getUserByActivationHash(userHash); + User user = getBean(UserDao.class).getUserByActivationHash(userHash); if (user != null && !AuthLevelUtil.hasLoginLevel(user.getRights())) { // activate user.getRights().add(Right.Login); user.setUpdated(new Date()); - Application.getBean(UserDao.class).update(user, null); + getBean(UserDao.class).update(user, null); } } setResponsePage(Application.get().getSignInPageClass()); Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseInitedPage.java Fri Jan 22 05:29:16 2016 @@ -38,7 +38,7 @@ public abstract class BaseInitedPage ext } @Override - public boolean isRtl() { + protected boolean isRtl() { return FormatHelper.isRtlLanguage(getLanguageCode()); } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BaseNotInitedPage.java Fri Jan 22 05:29:16 2016 @@ -40,7 +40,7 @@ public abstract class BaseNotInitedPage } @Override - public boolean isRtl() { + protected boolean isRtl() { boolean rtl = false; if (Application.isInstalled()) { rtl = FormatHelper.isRtlLanguage(WebSession.get().getLocale().toString()); Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java Fri Jan 22 05:29:16 2016 @@ -18,9 +18,14 @@ */ package org.apache.openmeetings.web.pages; +import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_GOOGLE_ANALYTICS_CODE; +import static org.apache.openmeetings.web.app.Application.getBean; + import java.util.HashMap; import java.util.Map; +import org.apache.directory.api.util.Strings; +import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.web.app.Application; import org.apache.openmeetings.web.common.HeaderPanel; import org.apache.openmeetings.web.util.OmUrlFragment; @@ -31,10 +36,12 @@ import org.apache.wicket.markup.head.Css import org.apache.wicket.markup.head.CssReferenceHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; +import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.head.PriorityHeaderItem; import org.apache.wicket.markup.html.TransparentWebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.request.IRequestParameters; +import org.apache.wicket.request.resource.JavaScriptResourceReference; import org.apache.wicket.util.string.StringValue; import org.wicketstuff.urlfragment.AsyncUrlFragmentAwarePage; @@ -43,7 +50,7 @@ public abstract class BasePage extends A private final Map<String, String> options; private final HeaderPanel header; - public abstract boolean isRtl(); + protected abstract boolean isRtl(); protected abstract String getLanguageCode(); protected abstract String getApplicationName(); @@ -80,6 +87,14 @@ public abstract class BasePage extends A protected Map<String, String> getOptions() { return options; } + + protected String getGaCode() { + return getBean(ConfigurationDao.class).getConfValue(CONFIG_GOOGLE_ANALYTICS_CODE, String.class, null); + } + + protected boolean isMainPage() { + return false; + } @Override public void renderHead(IHeaderResponse response) { @@ -91,5 +106,11 @@ public abstract class BasePage extends A response.render(CssHeaderItem.forUrl("css/theme-rtl.css")); response.render(CssHeaderItem.forUrl("css/admin-rtl.css")); } + if (!Strings.isEmpty(getGaCode())) { + response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "om-ga.js")))); + StringBuilder script = new StringBuilder("initGA('"); + script.append(getGaCode()).append("');").append(isMainPage() ? "initHash()" : "init()").append(';'); + response.render(OnDomReadyHeaderItem.forScript(script)); + } } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Fri Jan 22 05:29:16 2016 @@ -330,4 +330,9 @@ public class MainPage extends BaseInited public ChatPanel getChat() { return chat; } + + @Override + protected boolean isMainPage() { + return true; + } } Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java?rev=1726143&r1=1726142&r2=1726143&view=diff ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java (original) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/NotInitedPage.java Fri Jan 22 05:29:16 2016 @@ -32,4 +32,9 @@ public class NotInitedPage extends BaseN throw new RestartResponseException(Application.get().getHomePage()); } } + + @Override + protected String getGaCode() { + return null; + } } Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js?rev=1726143&view=auto ============================================================================== --- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js (added) +++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/om-ga.js Fri Jan 22 05:29:16 2016 @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +(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'); + +function initGA(code) { + ga('create', code, 'auto'); +} + +function init() { + ga('send', 'pageview'); +} + +function initHash() { + ga('send', 'pageview', window.location.hash); + + $(window).bind( 'hashchange', function( e ) { + ga('send', 'pageview', window.location.hash); + }); +}