You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2013/08/13 10:07:45 UTC

svn commit: r1513385 - in /openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web: app/ pages/auth/ pages/install/ util/

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(){		
+	}
+
+}