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


Reply via email to