Author: vdegtyarev
Date: Tue Aug 13 08:07:44 2013
New Revision: 1513385

URL: http://svn.apache.org/r1513385
Log:
OPENMEETINGS-749 is fixed. New time zone UI is implemented to Installer.

Added:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/TimeZoneOffsetAjaxBehavior.java
Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1513385&r1=1513384&r2=1513385&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 Tue Aug 13 08:07:44 2013
@@ -79,6 +79,7 @@ public class WebSession extends Abstract
        private Dashboard dashboard;
        private String baseUrl = null;
        private Locale browserLocale = null;
+       private int browserTZOffset = Integer.MIN_VALUE;
        
        public WebSession(Request request) {
                super(request);
@@ -231,6 +232,14 @@ public class WebSession extends Abstract
                return browserLocale;
        }
 
+       public void setBrowserTimeZoneOffset(int browserTZOffset){
+               this.browserTZOffset = browserTZOffset;
+       }
+       
+       public int getBrowserTimeZoneOffset(){
+               return browserTZOffset;
+       }
+       
        public FieldLanguage getLanguageByBrowserLocale() {
                List<FieldLanguage> languages = 
getBean(FieldLanguageDao.class).getLanguages();
                for (FieldLanguage l : languages) {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1513385&r1=1513384&r2=1513385&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Tue Aug 13 08:07:44 2013
@@ -22,7 +22,6 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static 
org.apache.openmeetings.web.pages.auth.SignInPage.allowOAuthLogin;
 import static org.apache.openmeetings.web.pages.auth.SignInPage.allowRegister;
-import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -36,14 +35,11 @@ import org.apache.openmeetings.web.app.O
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.SwfPage;
 import org.apache.openmeetings.web.util.BaseUrlAjaxBehavior;
-import org.apache.wicket.Component;
+import org.apache.openmeetings.web.util.TimeZoneOffsetAjaxBehavior;
 import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
@@ -58,7 +54,6 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.string.StringValue;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
@@ -90,22 +85,14 @@ public class SignInDialog extends Abstra
                add(browserTZOffset);
 
                // This code is required to detect time zone offset
-               add(new AbstractDefaultAjaxBehavior() {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       public void renderHead(Component component, 
IHeaderResponse response) {
-                               super.renderHead(component, response);
-                               
response.render(JavaScriptHeaderItem.forScript(getCallbackFunctionBody(resolved("tzOffset",
 "getTimeZoneOffsetMinutes()")), "getTzOffset"));
-                       }
+               add(new TimeZoneOffsetAjaxBehavior() {
+                       private static final long serialVersionUID = 
2954455885345860021L;
                        
                        @Override
-                       protected void respond(AjaxRequestTarget target) {
-                               StringValue offset = 
getRequestCycle().getRequest().getRequestParameters().getParameterValue("tzOffset");
-                               try {
-                                       
browserTZOffset.setModelObject(offset.toInteger());
-                               } catch (NumberFormatException ex) { }
+                       protected void customFunction(){                
+                               
browserTZOffset.setModelObject(WebSession.get().getBrowserTimeZoneOffset());
                        }
+                       
                });
                add(new BaseUrlAjaxBehavior());
        }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1513385&r1=1513384&r2=1513385&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
 Tue Aug 13 08:07:44 2013
@@ -31,8 +31,8 @@ import java.util.List;
 
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
-import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ErrorMessagePanel;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
@@ -71,13 +71,25 @@ public class InstallWizard extends Wizar
        private final static List<SelectOption> yesNoList = 
Arrays.asList(SelectOption.NO, SelectOption.YES);
        private final static List<String> allFonts = 
Arrays.asList("TimesNewRoman", "Verdana", "Arial");
        private final IDynamicWizardStep welcomeStep;
-       private final IDynamicWizardStep paramsStep1;
+       private final ParamsStep1 paramsStep1;
        private final IDynamicWizardStep paramsStep2;
        private final IDynamicWizardStep paramsStep3;
        private final IDynamicWizardStep paramsStep4;
        private final InstallStep installStep;
        private Throwable th = null;
        
+       public void initTzDropDown(int browserTZOffset){
+        List<String> tzList = WebSession.getAvailableTimezones();
+        paramsStep1.tzDropDown.option = tzList.get(0); 
+               String tzId = 
WebSession.get().getTimeZoneByBrowserLocale(browserTZOffset);
+               for (String tz : tzList) {
+                       if (tz.equals(tzId)) {
+                               paramsStep1.tzDropDown.option = tz;
+                               break;
+                       }
+               }
+       }
+       
        //onInit, applyState
        public InstallWizard(String id) throws Exception {
                super(id);
@@ -150,6 +162,7 @@ public class InstallWizard extends Wizar
 
        private final class ParamsStep1 extends BaseStep {
                private static final long serialVersionUID = 1L;
+               private final TzDropDown tzDropDown;
 
                public ParamsStep1() throws Exception {
                        super(welcomeStep);
@@ -157,7 +170,7 @@ public class InstallWizard extends Wizar
             add(new 
RequiredTextField<String>("cfg.username").add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
             add(new 
PasswordTextField("cfg.password").add(minimumLength(USER_PASSWORD_MINIMUM_LENGTH)));
             add(new 
RequiredTextField<String>("cfg.email").add(RfcCompliantEmailAddressValidator.getInstance()));
-            add(new TzDropDown("ical_timeZone"));
+            add(tzDropDown = new TzDropDown("ical_timeZone"));
             add(new RequiredTextField<String>("cfg.group"));
                }
 
@@ -410,26 +423,27 @@ public class InstallWizard extends Wizar
                }
        }
        
-       private final class TzDropDown extends WizardDropDown<OmTimeZone> {
+       private final class TzDropDown extends WizardDropDown<String> {
                private static final long serialVersionUID = 
6084349711073918837L;
 
                public TzDropDown(String id) throws Exception {
                        super(id);
-            List<OmTimeZone> tzList = ImportInitvalues.getTimeZones();
+            List<String> tzList = WebSession.getAvailableTimezones();
                        setChoices(tzList);
-                       setChoiceRenderer(new IChoiceRenderer<OmTimeZone>() {
+                       setChoiceRenderer(new IChoiceRenderer<String>() {
                                private static final long serialVersionUID = 1L;
                                
-                               public Object getDisplayValue(OmTimeZone 
object) {
-                               return object.getLabel() + " (" + 
object.getJname() + ")";
-                       }
-                       public String getIdValue(OmTimeZone object, int index) {
-                               return object.getIcal();
+                               public Object getDisplayValue(String object) {
+                               return object.toString();
                        }
+                               public String getIdValue(String object, int 
index) {
+                                       return object.toString();
+                               }
                        });
                        option = tzList.get(0);
-                       for (OmTimeZone tz : tzList) {
-                               if (tz.getIcal().equals(propModel.getObject())) 
{
+                       String tzId = 
WebSession.get().getTimeZoneByBrowserLocale(WebSession.get().getBrowserTimeZoneOffset());
+                       for (String tz : tzList) {
+                               if (tz.equals(tzId)) {
                                        option = tz;
                                        break;
                                }
@@ -439,7 +453,7 @@ public class InstallWizard extends Wizar
                @Override
                protected void onModelChanged() {
                        if (propModel != null && option != null) {
-                               propModel.setObject(option.getIcal());
+                               propModel.setObject(option);
                        }
                }
        }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html?rev=1513385&r1=1513384&r2=1513385&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
 Tue Aug 13 08:07:44 2013
@@ -20,6 +20,8 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:head>
+       <script type="text/javascript" src="js/openmeetings_functions.js" >
+       </script>
        <style type="text/css">
                form,fieldset {
                        margin: 0;

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java?rev=1513385&r1=1513384&r2=1513385&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
 Tue Aug 13 08:07:44 2013
@@ -19,19 +19,32 @@
 package org.apache.openmeetings.web.pages.install;
 
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ErrorMessagePanel;
 import org.apache.openmeetings.web.pages.BaseNotInitedPage;
+import org.apache.openmeetings.web.util.TimeZoneOffsetAjaxBehavior;
 import org.apache.wicket.RestartResponseException;
 
 public class InstallWizardPage extends BaseNotInitedPage {
        private static final long serialVersionUID = -438388395397826138L;
+       private InstallWizard wizard = null;
 
        public InstallWizardPage() {
                if (Application.isInstalled()) {
                        throw new 
RestartResponseException(Application.get().getHomePage());
                }
                try {
-                       add(new InstallWizard("wizard"));
+                       add(wizard = new InstallWizard("wizard"));
+                       // This code is required to detect time zone offset
+                       add(new TimeZoneOffsetAjaxBehavior() {
+                               private static final long serialVersionUID = 
2558971671370041214L;
+                               
+                               @Override
+                               protected void customFunction(){
+                                       
wizard.initTzDropDown(WebSession.get().getBrowserTimeZoneOffset());
+                               }
+
+                       });
                } catch (RestartResponseException re) {
                        throw re;
                } catch (Exception e) {

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/TimeZoneOffsetAjaxBehavior.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/TimeZoneOffsetAjaxBehavior.java?rev=1513385&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/TimeZoneOffsetAjaxBehavior.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/TimeZoneOffsetAjaxBehavior.java
 Tue Aug 13 08:07:44 2013
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+package org.apache.openmeetings.web.util;
+
+import static org.apache.wicket.ajax.attributes.CallbackParameter.resolved;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.util.string.StringValue;
+
+public class TimeZoneOffsetAjaxBehavior extends AbstractDefaultAjaxBehavior {
+       private static final long serialVersionUID = 5857580283353735353L;
+
+       @Override
+       public void renderHead(Component component, IHeaderResponse response) {
+               super.renderHead(component, response);
+               if (WebSession.get().getBrowserTimeZoneOffset() == 
Integer.MIN_VALUE) {
+                       
response.render(JavaScriptHeaderItem.forScript(getCallbackFunctionBody(resolved("tzOffset",
 "getTimeZoneOffsetMinutes()")), "getTzOffset"));
+               }
+       }
+       
+       @Override
+       protected void respond(AjaxRequestTarget target) {
+               StringValue offset = 
getComponent().getRequestCycle().getRequest().getRequestParameters().getParameterValue("tzOffset");
+               try {
+                       
WebSession.get().setBrowserTimeZoneOffset(offset.toInteger());
+                       customFunction();
+               } catch (NumberFormatException ex) { }
+       }
+       
+       protected void customFunction(){                
+       }
+
+}


Reply via email to