Author: solomax
Date: Mon Jan 27 19:41:07 2014
New Revision: 1561805

URL: http://svn.apache.org/r1561805
Log:
TimeZoneOffsetAjaxBehavior was removed in favor of internal wicket 
AjaxClientInfoBehavior

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

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
 Mon Jan 27 19:41:07 2014
@@ -32,6 +32,7 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
@@ -88,6 +89,7 @@ public class WebSession extends Abstract
        private String SID = null;
        private OmUrlFragment area = null;
        private TimeZone tz;
+       private TimeZone browserTz;
        private SimpleDateFormat ISO8601FORMAT = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        private DateFormat sdf;
        private Dashboard dashboard;
@@ -97,6 +99,8 @@ public class WebSession extends Abstract
        private Long recordingId;
        private String externalType;
        private static Set<Long> STRINGS_WITH_APP = new HashSet<Long>(); 
//FIXME need to be removed
+       public final static List<String> AVAILABLE_TIMEZONES = 
Arrays.asList(TimeZone.getAvailableIDs());
+       public final static Set<String> AVAILABLE_TIMEZONE_SET = new 
LinkedHashSet<String>(AVAILABLE_TIMEZONES);
        static {
                STRINGS_WITH_APP.addAll(Arrays.asList(499L, 500L, 506L, 511L, 
512L, 513L, 517L, 532L, 622L, 804L
                                , 909L, 952L, 978L, 981L, 984L, 989L, 990L, 
999L, 1151L, 1155L, 1157L, 1158L, 1194L));
@@ -116,6 +120,8 @@ public class WebSession extends Abstract
                sdf = null;
                recordingId = null;
                externalType = null;
+               tz = null;
+               browserTz = null;
        }
        
        @Override
@@ -370,23 +376,27 @@ public class WebSession extends Abstract
                return states.get(0);
        }
 
-       public static List<String> getAvailableTimezones() {
-               return Arrays.asList(TimeZone.getAvailableIDs());
-       }
-       
-       private boolean checkTimezone(TimeZone tz, int offsetByMinutes) {
-               return offsetByMinutes == (tz.getRawOffset() / 
MILLIS_IN_MINUTE);
-       }
-       
-       public String getTimeZoneByBrowserLocale(int offsetByMinutes){
-               TimeZone tz = 
Calendar.getInstance(getBrowserLocale()).getTimeZone();
-               if (!checkTimezone(tz, offsetByMinutes)){
-                       String[] tzIds = 
TimeZone.getAvailableIDs(MILLIS_IN_MINUTE * offsetByMinutes);
-                       if (tzIds != null && tzIds.length > 0) {
-                               return tzIds[0];
+       public String getClientTimeZone() {
+               if (browserTz == null) {
+                       try {
+                               browserTz = 
getClientInfo().getProperties().getTimeZone();
+                               if 
(!AVAILABLE_TIMEZONE_SET.contains(browserTz.getID())) {
+                                       for (String availableID : 
AVAILABLE_TIMEZONES) {
+                                               if 
(availableID.startsWith("Etc")) {
+                                                       continue; //somehow 
these timezones has reverted rules
+                                               }
+                                               TimeZone zone = 
TimeZone.getTimeZone(availableID);
+                                               if 
(zone.hasSameRules(browserTz)) {
+                                                       browserTz = zone;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       } catch (Exception e) {
+                               browserTz = 
Calendar.getInstance(getBrowserLocale()).getTimeZone();
                        }
                }
-               return tz.getID();
+               return browserTz == null ? null : browserTz.getID();
        }
        
        private void initDashboard() {

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/common/GeneralUserForm.java
 Mon Jan 27 19:41:07 2014
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.comm
 
 import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.getLanguage;
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
@@ -93,7 +94,7 @@ public class GeneralUserForm extends For
                add(new TextField<String>("firstname"));
                add(new TextField<String>("lastname"));
                
-               add(new DropDownChoice<String>("timeZoneId", 
WebSession.getAvailableTimezones()));
+               add(new DropDownChoice<String>("timeZoneId", 
AVAILABLE_TIMEZONES));
 
                add(new DropDownChoice<FieldLanguage>("language"
                                , new PropertyModel<FieldLanguage>(this, "lang")

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
 Mon Jan 27 19:41:07 2014
@@ -22,7 +22,7 @@ import static org.apache.openmeetings.db
 import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getAvailableTimezones;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
 import static org.apache.openmeetings.web.app.WebSession.getBaseUrl;
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
@@ -75,38 +75,39 @@ public class RegisterDialog extends Abst
        private String registerLbl = WebSession.getString(121);
        private DialogButton registerBtn = new DialogButton(registerLbl);
        private FeedbackPanel feedback = new FeedbackPanel("feedback");
-       private final IModel<String> tzModel = 
Model.of(WebSession.get().getTimeZoneByBrowserLocale(0));
-       private final DropDownChoice<String> tzDropDown = new 
DropDownChoice<String>("tz", tzModel, getAvailableTimezones());
+       private final IModel<String> tzModel = 
Model.of(WebSession.get().getClientTimeZone());
+       private final DropDownChoice<String> tzDropDown = new 
DropDownChoice<String>("tz", tzModel, AVAILABLE_TIMEZONES);
        private RegisterForm form;
        private SignInDialog s;
-    private String firstName;
-    private String lastName;
-    private String login;
-    private String password;
-    private String email;
-    private State state;
-    private FieldLanguage lang;
-
-    final MessageDialog confirmRegistration;
-    private boolean sendConfirmation = false;
-    private boolean sendEmailAtRegister = false;
-    
+       private String firstName;
+       private String lastName;
+       private String login;
+       private String password;
+       private String email;
+       private State state;
+       private FieldLanguage lang;
+
+       final MessageDialog confirmRegistration;
+       private boolean sendConfirmation = false;
+       private boolean sendEmailAtRegister = false;
+
        public RegisterDialog(String id) {
                super(id, WebSession.getString(113));
                add(form = new RegisterForm("form"));
                form.setOutputMarkupId(true);
                tzDropDown.setOutputMarkupId(true);
-               
-               confirmRegistration = new MessageDialog("confirmRegistration", 
WebSession.getString(235), WebSession.getString(674), DialogButtons.OK, 
DialogIcon.INFO) {
+
+               confirmRegistration = new MessageDialog("confirmRegistration", 
WebSession.getString(235),
+                               WebSession.getString(674), DialogButtons.OK, 
DialogIcon.INFO) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        public void onConfigure(JQueryBehavior behavior) {
                                super.onConfigure(behavior);
-                       behavior.setOption("dialogClass", 
Options.asString("no-close"));
+                               behavior.setOption("dialogClass", 
Options.asString("no-close"));
                                behavior.setOption("closeOnEscape", false);
                        }
-                       
+
                        public void onClose(AjaxRequestTarget target, 
DialogButton button) {
                                s.open(target);
                        }
@@ -118,46 +119,47 @@ public class RegisterDialog extends Abst
        @Override
        public void onConfigure(JQueryBehavior behavior) {
                super.onConfigure(behavior);
-        behavior.setOption("dialogClass", Options.asString("no-close"));
+               behavior.setOption("dialogClass", Options.asString("no-close"));
                behavior.setOption("closeOnEscape", false);
        }
-       
+
        public void setSignInDialog(SignInDialog s) {
                this.s = s;
        }
 
-       public void setBrowserTZOffset(AjaxRequestTarget target, int 
browserTZOffset) {
-               
tzModel.setObject(WebSession.get().getTimeZoneByBrowserLocale(browserTZOffset));
-               target.add(tzDropDown);
+       public void setClientTimeZone() {
+               tzModel.setObject(WebSession.get().getClientTimeZone());
        }
        
        @Override
        public int getWidth() {
                return 400;
        }
-       
+
        @Override
        protected List<DialogButton> getButtons() {
                return Arrays.asList(registerBtn, cancelBtn);
        }
 
        public void reset() {
-           firstName = null;
-           lastName = null;
-           login = null;
-           password = null;
-           form.confirmPassword.setModelObject(null);
-           email = null;
+               firstName = null;
+               lastName = null;
+               login = null;
+               password = null;
+               form.confirmPassword.setModelObject(null);
+               email = null;
                lang = WebSession.get().getLanguageByBrowserLocale();
                state = WebSession.get().getCountryByBrowserLocale();
        }
-       
+
        public void onOpen(AjaxRequestTarget target) {
                String baseURL = getBaseUrl();
-               sendEmailAtRegister = 1 == 
getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", 
Integer.class, "0");
+               sendEmailAtRegister = 1 == 
getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", 
Integer.class,
+                               "0");
                sendConfirmation = baseURL != null
                                && !baseURL.isEmpty()
-                               && 1 == 
getBean(ConfigurationDao.class).getConfValue("sendEmailWithVerficationCode", 
Integer.class, "0");
+                               && 1 == getBean(ConfigurationDao.class)
+                                               
.getConfValue("sendEmailWithVerficationCode", Integer.class, "0");
                long messageCode = 236;
                if (sendConfirmation && sendEmailAtRegister) {
                        messageCode = 674;
@@ -168,9 +170,9 @@ public class RegisterDialog extends Abst
                reset();
                target.add(form);
        }
-       
+
        public void onClose(AjaxRequestTarget target, DialogButton button) {
-               if (registerBtn.equals(button)){
+               if (registerBtn.equals(button)) {
                        confirmRegistration.open(target);
                } else {
                        s.open(target);
@@ -194,33 +196,27 @@ public class RegisterDialog extends Abst
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               String hash = ManageCryptStyle.getInstanceOfCrypt()
-                               .createPassPhrase(login + 
CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
+               String hash = 
ManageCryptStyle.getInstanceOfCrypt().createPassPhrase(
+                               login + 
CalendarPatterns.getDateWithTimeByMiliSeconds(new Date()));
 
-               String redirectPage = 
getRequestCycle().urlFor(ActivatePage.class, new PageParameters().add("u", 
hash)).toString().substring(2);
+               String redirectPage = 
getRequestCycle().urlFor(ActivatePage.class, new PageParameters().add("u", 
hash))
+                               .toString().substring(2);
                String baseURL = getBaseUrl() + redirectPage;
                try {
-                       getBean(IUserManager.class).registerUserInit(3, 1, 0, 1,
-                                       login, password, lastName,
-                                       firstName, email, new Date(), "" 
/*street*/,
-                                       "" /*additionalname*/, "" /*fax*/, "" 
/*zip*/,
-                                       state.getState_id(),
-                                       "" /*town*/, lang.getLanguage_id(), 
true /*sendWelcomeMessage*/,
+                       getBean(IUserManager.class).registerUserInit(3, 1, 0, 
1, login, password, lastName, firstName, email,
+                                       new Date(), "" /* street */, "" /* 
additionalname */, "" /* fax */, "" /* zip */, state.getState_id(),
+                                       "" /* town */, lang.getLanguage_id(), 
true /* sendWelcomeMessage */,
                                        
Arrays.asList(getBean(ConfigurationDao.class).getConfValue("default_domain_id", 
Long.class, null)),
-                                       "" /*phone*/, false, baseURL,
-                                       sendConfirmation,
-                                       
TimeZone.getTimeZone(tzModel.getObject()),
-                                       false /*forceTimeZoneCheck*/,
-                                       "" /*userOffers*/, "" /*userSearchs*/,
-                                       false /*showContactData*/,
-                                       true /*showContactDataToContacts*/, 
hash);
-                       
+                                       "" /* phone */, false, baseURL, 
sendConfirmation, TimeZone.getTimeZone(tzModel.getObject()),
+                                       false /* forceTimeZoneCheck */, "" /* 
userOffers */, "" /* userSearchs */, false /* showContactData */,
+                                       true /* showContactDataToContacts */, 
hash);
+
                } catch (Exception e) {
                        log.error("[registerUser]", e);
                }
 
        }
-       
+
        class RegisterForm extends StatelessForm<Void> {
                private static final long serialVersionUID = 
1701373326213602431L;
                private PasswordTextField confirmPassword;
@@ -236,59 +232,59 @@ public class RegisterDialog extends Abst
                        super(id);
                        add(feedback.setOutputMarkupId(true));
                        ConfigurationDao cfgDao = 
getBean(ConfigurationDao.class);
-                       add(firstNameField = new 
RequiredTextField<String>("firstName", new 
PropertyModel<String>(RegisterDialog.this, "firstName")));
+                       add(firstNameField = new 
RequiredTextField<String>("firstName", new PropertyModel<String>(
+                                       RegisterDialog.this, "firstName")));
                        
firstNameField.setLabel(Model.of(WebSession.getString(117)));
-                       add(lastNameField = new 
RequiredTextField<String>("lastName", new 
PropertyModel<String>(RegisterDialog.this, "lastName")));
+                       add(lastNameField = new 
RequiredTextField<String>("lastName", new PropertyModel<String>(
+                                       RegisterDialog.this, "lastName")));
                        
lastNameField.setLabel(Model.of(WebSession.getString(118)));
-                       add(loginField = new RequiredTextField<String>("login", 
new PropertyModel<String>(RegisterDialog.this, "login")));
+                       add(loginField = new RequiredTextField<String>("login", 
new PropertyModel<String>(RegisterDialog.this,
+                                       "login")));
                        
loginField.setLabel(Model.of(WebSession.getString(114)));
                        
loginField.add(minimumLength(getMinLoginLength(cfgDao)));
-                       add(passwordField = new PasswordTextField("password", 
new PropertyModel<String>(RegisterDialog.this, "password")));
+                       add(passwordField = new PasswordTextField("password", 
new PropertyModel<String>(RegisterDialog.this,
+                                       "password")));
                        
passwordField.setLabel(Model.of(WebSession.getString(115)));
                        
passwordField.setResetPassword(true).add(minimumLength(getMinPasswdLength(cfgDao)));
                        add(confirmPassword = new 
PasswordTextField("confirmPassword", new 
Model<String>()).setResetPassword(true));
                        
confirmPassword.setLabel(Model.of(WebSession.getString(116)));
-                       add(emailField = new RequiredTextField<String>("email", 
new PropertyModel<String>(RegisterDialog.this, "email")));
+                       add(emailField = new RequiredTextField<String>("email", 
new PropertyModel<String>(RegisterDialog.this,
+                                       "email")));
                        
emailField.setLabel(Model.of(WebSession.getString(119)));
                        
emailField.add(RfcCompliantEmailAddressValidator.getInstance());
-                       add(langField = new DropDownChoice<FieldLanguage>("lang"
-                                       , new 
PropertyModel<FieldLanguage>(RegisterDialog.this, "lang")
-                                       , 
getBean(FieldLanguageDao.class).getLanguages()
-                                       , new 
ChoiceRenderer<FieldLanguage>("name", "language_id"))
-                               );
+                       add(langField = new 
DropDownChoice<FieldLanguage>("lang", new PropertyModel<FieldLanguage>(
+                                       RegisterDialog.this, "lang"), 
getBean(FieldLanguageDao.class).getLanguages(),
+                                       new 
ChoiceRenderer<FieldLanguage>("name", "language_id")));
                        
langField.setRequired(true).setLabel(Model.of(WebSession.getString(111)));
                        
add(tzDropDown.setRequired(true).setLabel(Model.of(WebSession.getString(1143))));
-                       add(stateField = new DropDownChoice<State>("state"
-                                       , new 
PropertyModel<State>(RegisterDialog.this, "state")
-                                       , getBean(StateDao.class).getStates()
-                                       , new ChoiceRenderer<State>("name", 
"state_id"))
-                               );
+                       add(stateField = new DropDownChoice<State>("state", new 
PropertyModel<State>(RegisterDialog.this, "state"),
+                                       getBean(StateDao.class).getStates(), 
new ChoiceRenderer<State>("name", "state_id")));
                        
stateField.setRequired(true).setLabel(Model.of(WebSession.getString(120)));
-                       add(new AjaxButton("submit") { //FAKE button so 
"submit-on-enter" works as expected
+                       add(new AjaxButton("submit") { // FAKE button so 
"submit-on-enter" works as expected
                                private static final long serialVersionUID = 
-3612671587183668912L;
 
                                @Override
                                protected void onSubmit(AjaxRequestTarget 
target, Form<?> form) {
                                        RegisterDialog.this.onSubmit(target);
                                }
-                               
+
                                @Override
                                protected void onError(AjaxRequestTarget 
target, Form<?> form) {
                                        RegisterDialog.this.onError(target);
                                }
                        });
                }
-               
+
                @Override
                protected void onValidate() {
                        if (passwordField.getConvertedInput() == null
                                        || 
!passwordField.getConvertedInput().equals(confirmPassword.getConvertedInput())) 
{
                                error(WebSession.getString(232));
                        }
-                       
if(!getBean(AdminUserDao.class).checkUserEMail(emailField.getConvertedInput(), 
null)) {
+                       if 
(!getBean(AdminUserDao.class).checkUserEMail(emailField.getConvertedInput(), 
null)) {
                                error(WebSession.getString(1000));
                        }
-                       
if(!getBean(AdminUserDao.class).checkUserLogin(loginField.getConvertedInput(), 
null)) {
+                       if 
(!getBean(AdminUserDao.class).checkUserLogin(loginField.getConvertedInput(), 
null)) {
                                error(WebSession.getString(105));
                        }
                }

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.html
 Mon Jan 27 19:41:07 2014
@@ -65,6 +65,5 @@
                <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/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Mon Jan 27 19:41:07 2014
@@ -35,9 +35,9 @@ 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.openmeetings.web.util.TimeZoneOffsetAjaxBehavior;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -48,7 +48,6 @@ import org.apache.wicket.markup.html.for
 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;
@@ -82,25 +81,12 @@ 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 TimeZoneOffsetAjaxBehavior() {
-                       private static final long serialVersionUID = 
2954455885345860021L;
-                       
-                       @Override
-                       protected void customFunction(){                
-                               
browserTZOffset.setModelObject(WebSession.get().getBrowserTimeZoneOffset());
-                       }
-                       
-               });
                add(new BaseUrlAjaxBehavior());
+               add(new AjaxClientInfoBehavior());
        }
 
        public void setRegisterDialog(RegisterDialog r) {
@@ -147,7 +133,7 @@ public class SignInDialog extends Abstra
        @Override
        public void onClose(AjaxRequestTarget target, DialogButton button) {
                if (registerBtn.equals(button)) {
-                       r.setBrowserTZOffset(target, 
browserTZOffset.getModelObject());
+                       r.setClientTimeZone();
                        r.open(target);
                }
        }

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 Mon Jan 27 19:41:07 2014
@@ -20,6 +20,8 @@ package org.apache.openmeetings.web.page
 
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
+import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
+import static 
org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONE_SET;
 import static org.apache.wicket.validation.validator.RangeValidator.range;
 import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
@@ -80,16 +82,8 @@ public class InstallWizard extends Wizar
        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;
-                       }
-               }
+       public void initTzDropDown() {
+               paramsStep1.tzDropDown.init();
        }
        
        //onInit, applyState
@@ -428,12 +422,17 @@ public class InstallWizard extends Wizar
        }
        
        private final class TzDropDown extends WizardDropDown<String> {
-               private static final long serialVersionUID = 
6084349711073918837L;
+               private static final long serialVersionUID = 1L;
 
+               public void init() {
+                       List<String> tzList = AVAILABLE_TIMEZONES;
+                       String tzId = WebSession.get().getClientTimeZone();
+                       option = AVAILABLE_TIMEZONE_SET.contains(tzId) ? tzId : 
tzList.get(0);
+               }
+               
                public TzDropDown(String id) throws Exception {
                        super(id);
-            List<String> tzList = WebSession.getAvailableTimezones();
-                       setChoices(tzList);
+                       setChoices(AVAILABLE_TIMEZONES);
                        setChoiceRenderer(new IChoiceRenderer<String>() {
                                private static final long serialVersionUID = 1L;
                                
@@ -444,14 +443,6 @@ public class InstallWizard extends Wizar
                                        return object.toString();
                                }
                        });
-                       option = tzList.get(0);
-                       String tzId = 
WebSession.get().getTimeZoneByBrowserLocale(WebSession.get().getBrowserTimeZoneOffset());
-                       for (String tz : tzList) {
-                               if (tz.equals(tzId)) {
-                                       option = tz;
-                                       break;
-                               }
-                       }
                }
                
                @Override

Modified: 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java?rev=1561805&r1=1561804&r2=1561805&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
 Mon Jan 27 19:41:07 2014
@@ -19,11 +19,12 @@
 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;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
 
 public class InstallWizardPage extends BaseNotInitedPage {
        private static final long serialVersionUID = -438388395397826138L;
@@ -36,14 +37,14 @@ public class InstallWizardPage extends B
                try {
                        add(wizard = new InstallWizard("wizard"));
                        // This code is required to detect time zone offset
-                       add(new TimeZoneOffsetAjaxBehavior() {
-                               private static final long serialVersionUID = 
2558971671370041214L;
-                               
+                       add(new AjaxClientInfoBehavior() {
+                               private static final long serialVersionUID = 1L;
+
                                @Override
-                               protected void customFunction(){
-                                       
wizard.initTzDropDown(WebSession.get().getBrowserTimeZoneOffset());
+                               protected void onClientInfo(AjaxRequestTarget 
target, WebClientInfo clientInfo) {
+                                       super.onClientInfo(target, clientInfo);
+                                       wizard.initTzDropDown();
                                }
-
                        });
                } catch (RestartResponseException re) {
                        throw re;


Reply via email to