You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/01/22 06:29:17 UTC

svn commit: r1726143 - in /openmeetings/application: branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ branches/3.1.x/openmeetings-server/src/site/xdoc/ branches/3.1.x/openmeetings-util/src/main/java/org/apache/ope...

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);
+    });
+}