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/07/31 12:07:50 UTC
svn commit: r1508800 - in /openmeetings/trunk/singlewebapp:
WebContent/openmeetings/js/ src/org/apache/openmeetings/web/app/
src/org/apache/openmeetings/web/pages/auth/
Author: vdegtyarev
Date: Wed Jul 31 10:07:50 2013
New Revision: 1508800
URL: http://svn.apache.org/r1508800
Log:
OPENMEETINGS-722 is fixed.
Modified:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/js/openmeetings_functions.js
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/js/openmeetings_functions.js
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/js/openmeetings_functions.js?rev=1508800&r1=1508799&r2=1508800&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/js/openmeetings_functions.js (original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/js/openmeetings_functions.js Wed Jul 31 10:07:50 2013
@@ -47,7 +47,7 @@ function loadingComplete() {
lzApp.style.height = '100%';
}
-function getTimeZoneOffset() {
+function getTimeZoneOffsetHours() {
var rightNow = new Date(), std_time_offset = -rightNow.getTimezoneOffset() / 60;
for (var i = 0; i < 12; ++i) {
var d = new Date(rightNow.getFullYear(), i, 1, 0, 0, 0, 0), offset = -d.getTimezoneOffset() / 60;
@@ -56,5 +56,9 @@ function getTimeZoneOffset() {
break;
}
}
- document.getElementById("lzapp").getTimeZoneOffsetCallback(std_time_offset);
+ return std_time_offset;
+}
+
+function getTimeZoneOffset() {
+ document.getElementById("lzapp").getTimeZoneOffsetCallback(getTimeZoneOffsetHours());
}
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=1508800&r1=1508799&r2=1508800&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 Wed Jul 31 10:07:50 2013
@@ -29,6 +29,8 @@ import static org.apache.openmeetings.we
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
import java.util.TimeZone;
import org.apache.openmeetings.data.basic.AuthLevelUtil;
@@ -36,11 +38,15 @@ import org.apache.openmeetings.data.basi
import org.apache.openmeetings.data.basic.FieldManager;
import org.apache.openmeetings.data.basic.SessiondataDao;
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
+import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.data.user.dao.StateDao;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.ldap.LdapLoginManagement;
+import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
import org.apache.openmeetings.persistence.beans.basic.Sessiondata;
import org.apache.openmeetings.persistence.beans.lang.FieldLanguage;
+import org.apache.openmeetings.persistence.beans.user.State;
import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
@@ -71,9 +77,11 @@ public class WebSession extends Abstract
private DateFormat sdf;
private Dashboard dashboard;
private String baseUrl = null;
+ private Locale browserLocale = null;
public WebSession(Request request) {
super(request);
+ browserLocale = getLocale();
}
@Override
@@ -215,6 +223,46 @@ public class WebSession extends Abstract
this.baseUrl = baseUrl;
}
+ public Locale getBrowserLocale(){
+ return browserLocale;
+ }
+
+ public FieldLanguage getLanguageByBrowserLocale() {
+ List<FieldLanguage> languages = getBean(FieldLanguageDao.class).getLanguages();
+ for (FieldLanguage l : languages) {
+ if (getBrowserLocale().getLanguage().equals(new Locale(l.getCode()).getLanguage())){
+ return l;
+ }
+ }
+ return languages.get(0);
+ }
+
+ public State getCountryByBrowserLocale() {
+ List<State> states = getBean(StateDao.class).getStates();
+ String code = getBrowserLocale().getISO3Country().toUpperCase();
+ for (State s : states) {
+ if (s.getShortName().toUpperCase().equals(code)){
+ return s;
+ }
+ }
+ return states.get(0);
+ }
+
+ public OmTimeZone getOmTimeZoneByBrowserLocale(int offset){
+ TimeZone tz = Calendar.getInstance(getBrowserLocale()).getTimeZone();
+ OmTimeZone omTZ = getBean(OmTimeZoneDao.class).getOmTimeZoneByIcal(tz.getID());
+ if (omTZ == null){
+ List<OmTimeZone> omTimeZones = getBean(OmTimeZoneDao.class).getOmTimeZones();
+ for (OmTimeZone timeZone : omTimeZones){
+ long tzOffset = TimeZone.getTimeZone(timeZone.getIcal()).getRawOffset() / 3600000;
+ if (tzOffset == offset){
+ return timeZone;
+ }
+ }
+ }
+ return omTZ != null ? omTZ : getBean(OmTimeZoneDao.class).getOmTimeZones().get(0);
+ }
+
private void initDashboard() {
DashboardContext dashboardContext = getDashboardContext();
//FIXME check title etc.
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1508800&r1=1508799&r2=1508800&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java Wed Jul 31 10:07:50 2013
@@ -40,6 +40,8 @@ import org.apache.openmeetings.web.pages
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.markup.head.CssContentHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
@@ -47,6 +49,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.StatelessForm;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -59,6 +62,11 @@ public class RegisterDialog extends Abst
private DialogButton cancelBtn = new DialogButton(WebSession.getString(122));
private DialogButton registerBtn = new DialogButton(WebSession.getString(121));
private FeedbackPanel feedback = new FeedbackPanel("feedback");
+ private final IModel<OmTimeZone> tzModel = Model.of(WebSession.get().getOmTimeZoneByBrowserLocale(0));
+ private final DropDownChoice<OmTimeZone> tzDropDown = new DropDownChoice<OmTimeZone>("tz"
+ , tzModel
+ , getBean(OmTimeZoneDao.class).getOmTimeZones()
+ , new ChoiceRenderer<OmTimeZone>("frontEndLabel", "jname"));
private Form<String> form;
private SignInDialog s;
private String firstName;
@@ -66,18 +74,32 @@ public class RegisterDialog extends Abst
private String login;
private String password;
private String email;
- private OmTimeZone tz;
private State state;
private FieldLanguage lang;
public RegisterDialog(String id) {
super(id, WebSession.getString(113));
add(form = new RegisterForm("form"));
+ lang = WebSession.get().getLanguageByBrowserLocale();
+ state = WebSession.get().getCountryByBrowserLocale();
+ tzDropDown.setOutputMarkupId(true);
}
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+ //to remove upper-right close button
+ response.render(new CssContentHeaderItem(".no-close .ui-dialog-titlebar-close { display: none; }", "dialog-noclose", ""));
+ }
+
public void setSignInDialog(SignInDialog s) {
this.s = s;
}
+
+ public void setBrowserTZOffset(AjaxRequestTarget target, int browserTZOffset) {
+ tzModel.setObject(WebSession.get().getOmTimeZoneByBrowserLocale(browserTZOffset));
+ target.add(tzDropDown);
+ }
@Override
public int getWidth() {
@@ -114,7 +136,8 @@ public class RegisterDialog extends Abst
getBean(UserManager.class).registerUser(login, password, lastName
, firstName, email, null, ""/*street*/, ""/*additionalname*/, ""/*fax*/, ""/*zip*/
, state.getState_id(), ""/*town*/, lang.getLanguage_id(), ""/*phone*/, false/*sendSMS*/
- , "" + getRequestCycle().urlFor(SwfPage.class, new PageParameters()), false, tz.getJname());
+ , "" + getRequestCycle().urlFor(SwfPage.class, new PageParameters()), false
+ , tzModel.getObject().getJname());
}
class RegisterForm extends StatelessForm<String> {
@@ -150,11 +173,7 @@ public class RegisterDialog extends Abst
, getBean(FieldLanguageDao.class).getLanguages()
, new ChoiceRenderer<FieldLanguage>("name", "language_id"))
.setRequired(true).setLabel(Model.of(WebSession.getString(111))));
- add(new DropDownChoice<OmTimeZone>("tz"
- , new PropertyModel<OmTimeZone>(RegisterDialog.this, "tz")
- , getBean(OmTimeZoneDao.class).getOmTimeZones()
- , new ChoiceRenderer<OmTimeZone>("frontEndLabel", "jname"))
- .setRequired(true).setLabel(Model.of(WebSession.getString(1143))));
+ add(tzDropDown.setRequired(true).setLabel(Model.of(WebSession.getString(1143))));
add(new DropDownChoice<State>("state"
, new PropertyModel<State>(RegisterDialog.this, "state")
, getBean(StateDao.class).getStates()
Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html?rev=1508800&r1=1508799&r2=1508800&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html Wed Jul 31 10:07:50 2013
@@ -19,6 +19,13 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
+<wicket:head>
+ <script type="text/javascript" src="js/openmeetings_functions.js" >
+ $(function(){
+ $('#tzOffset').val(getTimeZoneOffsetHours());
+ });
+ </script>
+</wicket:head>
<wicket:panel>
<form wicket:id="signin">
<table>
@@ -47,5 +54,6 @@
<span wicket:id="feedback"></span>
<input type="submit" wicket:id="submit" class="invisible-form-component"/>
</form>
+ <input type="hidden" wicket:id="tzOffset" id="tzOffset"/>
</wicket:panel>
</html>
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=1508800&r1=1508799&r2=1508800&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 Wed Jul 31 10:07:50 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.page
import static org.apache.openmeetings.web.app.Application.getAuthenticationStrategy;
import static org.apache.openmeetings.web.app.Application.getBean;
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;
@@ -31,17 +32,21 @@ import org.apache.openmeetings.web.app.A
import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.pages.SwfPage;
+import org.apache.wicket.Component;
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.CssContentHeaderItem;
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;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.HiddenField;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.StatelessForm;
@@ -50,6 +55,7 @@ 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;
@@ -69,10 +75,30 @@ public class SignInDialog extends Abstra
private ForgetPasswordDialog f;
private LdapConfig domain;
private String ldapConfigFileName;
+ private HiddenField<Integer> browserTZOffset;
public SignInDialog(String id) {
super(id, WebSession.getString(108));
add(form = new SignInForm("signin"));
+ browserTZOffset = new HiddenField<Integer>("tzOffset", Model.of(new Integer(0)));
+ 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", "getTimeZoneOffsetHours()")), "getTzOffset"));
+ }
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ StringValue offset = getRequestCycle().getRequest().getRequestParameters().getParameterValue("tzOffset");
+ browserTZOffset.setModelObject(offset.toInteger());
+ }
+ });
}
public void setRegisterDialog(RegisterDialog r) {
@@ -126,6 +152,7 @@ public class SignInDialog extends Abstra
@Override
public void onClose(AjaxRequestTarget target, DialogButton button) {
if (registerBtn.equals(button)) {
+ r.setBrowserTZOffset(target, browserTZOffset.getModelObject());
r.open(target);
}
}