Arthur Bogaart pushed to branch bugfix/CMS-6954 at cms-community / hippo-cms


Commits:
ad8bfd73 by Arthur Bogaart at 2016-07-21T12:35:23+02:00
CMS-6954 Correct order of object creation

 - Set model value (selectedTimeZone) before creating model+wicket component 
simplifies code
 - Renamed isCookieValueSet to useBrowserTimeZoneIfAvailable

- - - - -


1 changed file:

- 
engine/src/main/java/org/hippoecm/frontend/plugins/login/DefaultLoginPlugin.java


Changes:

=====================================
engine/src/main/java/org/hippoecm/frontend/plugins/login/DefaultLoginPlugin.java
=====================================
--- 
a/engine/src/main/java/org/hippoecm/frontend/plugins/login/DefaultLoginPlugin.java
+++ 
b/engine/src/main/java/org/hippoecm/frontend/plugins/login/DefaultLoginPlugin.java
@@ -63,27 +63,27 @@ public class DefaultLoginPlugin extends SimpleLoginPlugin {
 
         private String selectedTimeZone;
         private List<String> availableTimeZones;
-        private boolean isCookieValueSet;
+        private boolean useBrowserTimeZoneIfAvailable;
 
         public LoginForm(final String id, final boolean autoComplete, final 
List<String> locales, final LoginHandler handler) {
             super(id, autoComplete, locales, handler);
 
-            if (getPluginConfig().getBoolean(SHOW_TIMEZONES_CONFIG_PARAM)) {
-                availableTimeZones = 
getSelectableTimezones(getPluginConfig().getStringArray(SELECTABLE_TIMEZONES_CONFIG_PARAM));
-
-                // Add the timezone dropdown
-                final DropDownChoice<String> timeZone = new 
DropDownChoice<>("timezone",
-                        PropertyModel.of(this, "selectedTimeZone"), 
availableTimeZones);
+            final IPluginConfig config = getPluginConfig();
+            if (config.getBoolean(SHOW_TIMEZONES_CONFIG_PARAM)) {
+                availableTimeZones = 
getSelectableTimezones(config.getStringArray(SELECTABLE_TIMEZONES_CONFIG_PARAM));
 
                 // Check if user has previously selected a timezone
                 final String cookieTimeZone = getCookieValue(TIMEZONE_COOKIE);
                 if (isTimeZoneValid(cookieTimeZone)) {
                     selectedTimeZone = cookieTimeZone;
-                    isCookieValueSet = true;
                 } else {
-                    timeZone.setModelObject(timeZone.getChoices().get(0));
+                    selectedTimeZone = availableTimeZones.get(0);
+                    useBrowserTimeZoneIfAvailable = true;
                 }
 
+                // Add the timezone dropdown
+                final PropertyModel<String> selected = PropertyModel.of(this, 
"selectedTimeZone");
+                final DropDownChoice<String> timeZone = new 
DropDownChoice<>("timezone", selected, availableTimeZones);
                 timeZone.setNullValid(false);
 
                 form.add(new Label("timezone-label", new 
ResourceModel("timezone-label", "Time zone:")));
@@ -98,7 +98,7 @@ public class DefaultLoginPlugin extends SimpleLoginPlugin {
         @Override
         public void renderHead(HtmlHeaderContainer container) {
             super.renderHead(container);
-            if (getPluginConfig().getBoolean(SHOW_TIMEZONES_CONFIG_PARAM) && 
!isCookieValueSet) {
+            if (getPluginConfig().getBoolean(SHOW_TIMEZONES_CONFIG_PARAM) && 
useBrowserTimeZoneIfAvailable) {
                 
container.getHeaderResponse().render(JavaScriptReferenceHeaderItem.forReference(JSTZ_JS));
                 
container.getHeaderResponse().render(OnLoadHeaderItem.forScript(INIT_JS.asString()));
             }
@@ -106,7 +106,7 @@ public class DefaultLoginPlugin extends SimpleLoginPlugin {
 
         @Override
         protected void loginSuccess() {
-            if (isSelectedTimeZoneValid()) {
+            if (isTimeZoneValid(selectedTimeZone)) {
                 final TimeZone timeZone = 
TimeZone.getTimeZone(selectedTimeZone);
                 // Store selected timezone in session and cookie
                 
UserSession.get().getClientInfo().getProperties().setTimeZone(timeZone);
@@ -115,10 +115,6 @@ public class DefaultLoginPlugin extends SimpleLoginPlugin {
             super.loginSuccess();
         }
 
-        private boolean isSelectedTimeZoneValid() {
-            return isTimeZoneValid(selectedTimeZone);
-        }
-
         private boolean isTimeZoneValid(String timeZone) {
             return timeZone != null && availableTimeZones != null
                     && availableTimeZones.contains(timeZone);
@@ -128,7 +124,7 @@ public class DefaultLoginPlugin extends SimpleLoginPlugin {
             List<String> selectableTimezones = new ArrayList<>();
 
             if (configuredSelectableTimezones != null) {
-                selectableTimezones = 
Arrays.asList(configuredSelectableTimezones).stream()
+                selectableTimezones = 
Arrays.stream(configuredSelectableTimezones)
                         .filter(StringUtils::isNotBlank)
                         .filter(ALL_JAVA_TIMEZONES::contains)
                         .collect(Collectors.toList());



View it on GitLab: 
https://code.onehippo.org/cms-community/hippo-cms/commit/ad8bfd734959d1f6773d69e535f6b5f90be221d8
_______________________________________________
Hippocms-svn mailing list
Hippocms-svn@lists.onehippo.org
https://lists.onehippo.org/mailman/listinfo/hippocms-svn

Reply via email to