Repository: openmeetings
Updated Branches:
  refs/heads/master a415a24a4 -> 18639721e


no jira: NPE in captcha is fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/18639721
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/18639721
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/18639721

Branch: refs/heads/master
Commit: 18639721e211b6921df3a3f8238b87ba973878ac
Parents: a415a24
Author: Maxim Solodovnik <[email protected]>
Authored: Thu Jun 15 11:04:51 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Thu Jun 15 11:04:51 2017 +0700

----------------------------------------------------------------------
 .../apache/openmeetings/web/common/Captcha.java |  8 ++-
 .../web/pages/auth/ForgetPasswordDialog.java    | 54 ++++++++++++--------
 .../web/pages/auth/RegisterDialog.java          |  8 +--
 3 files changed, 42 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/18639721/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
index 8e2ae78..19027e7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/Captcha.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.common;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.markup.html.captcha.CaptchaImageResource;
 import org.apache.wicket.markup.html.form.RequiredTextField;
 import org.apache.wicket.markup.html.image.Image;
@@ -67,7 +68,7 @@ public class Captcha extends Panel {
                                        validatable.error(new 
ValidationError(getString("bad.captcha.text")));
                                }
                        }
-               }));
+               }).setOutputMarkupId(true));
                add(new AjaxLink<String>("refresh") {
                        private static final long serialVersionUID = 1L;
 
@@ -98,9 +99,12 @@ public class Captcha extends Panel {
                return new String(b);
        }
 
-       public Image refresh() {
+       public Image refresh(IPartialPageRequestHandler handler) {
                captchaImageResource.invalidate();
                captchaText.setModelObject("");
+               if (handler != null) {
+                       handler.add(captchaText, captcha);
+               }
                return captcha;
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/18639721/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index 888f798..3e0b29a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -47,9 +47,7 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.Radio;
 import org.apache.wicket.markup.html.form.RadioGroup;
 import org.apache.wicket.markup.html.form.RequiredTextField;
-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;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
@@ -70,11 +68,12 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
        private final DialogButton cancel = new DialogButton("cancel", 
Application.getString(122));
        private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        private final IValidator<String> emailValidator = 
RfcCompliantEmailAddressValidator.getInstance();
-       private RequiredTextField<String> nameField;
+       private final RequiredTextField<String> name = new 
RequiredTextField<>("name", Model.of((String)null));
+       private final RadioGroup<Type> rg = new RadioGroup<>("type", 
Model.of(Type.email));
+       private final Label label = new Label("label", 
Model.of(Application.getString(315)));
+       private final Captcha captcha = new Captcha("captcha");
        private Form<String> form;
        private SignInDialog s;
-       private String name;
-       private Type type = Type.email;
        final MessageDialog confirmDialog;
 
        enum Type {
@@ -86,16 +85,12 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
                super(id, Application.getString(312));
                add(form = new Form<String>("form") {
                        private static final long serialVersionUID = 1L;
-                       private IModel<String> lblModel = 
Model.of(Application.getString(315));
-                       private Label label = new Label("label", lblModel);
 
                        {
                                add(feedback.setOutputMarkupId(true));
                                add(label.setOutputMarkupId(true));
-                               add(nameField = new RequiredTextField<>("name", 
new PropertyModel<String>(ForgetPasswordDialog.this, "name")));
-                               
nameField.setLabel(Model.of(Application.getString(type == Type.email ? 315 : 
316)));
-                               add(new Captcha("captcha"));
-                               RadioGroup<Type> rg = new RadioGroup<>("type", 
new PropertyModel<Type>(ForgetPasswordDialog.this, "type"));
+                               add(name.setOutputMarkupId(true));
+                               add(captcha);
                                add(rg.add(new Radio<>("email", 
Model.of(Type.email)).setOutputMarkupId(true))
                                                .add(new Radio<>("login", 
Model.of(Type.login)).setOutputMarkupId(true))
                                                .setOutputMarkupId(true));
@@ -104,9 +99,7 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
 
                                        @Override
                                        protected void 
onUpdate(AjaxRequestTarget target) {
-                                               
lblModel.setObject(Application.getString(type == Type.email ? 315 : 316));
-                                               
nameField.setLabel(Model.of(Application.getString(type == Type.email ? 315 : 
316)));
-                                               target.add(label);
+                                               updateLabel(target);
                                        }
                                });
                                add(new AjaxButton("submit") { //FAKE button so 
"submit-on-enter" works as expected
@@ -122,13 +115,15 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
                                                
ForgetPasswordDialog.this.onError(target);
                                        }
                                });
+                               updateLabel(null);
                        }
 
                        @Override
                        protected void onValidate() {
-                               String n = nameField.getConvertedInput();
+                               String n = name.getConvertedInput();
                                if (n != null) {
                                        IValidatable<String> val = new 
Validatable<>(n);
+                                       Type type = rg.getModelObject();
                                        if (type == Type.email) {
                                                emailValidator.validate(val);
                                                if (!val.isValid()) {
@@ -140,12 +135,6 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
                                        }
                                }
                        }
-
-                       @Override
-                       protected void onDetach() {
-                               lblModel.detach();
-                               super.onDetach();
-                       }
                });
                confirmDialog = new NonClosableMessageDialog("confirmDialog", 
Application.getString(312), Application.getString(321)){
                        private static final long serialVersionUID = 1L;
@@ -158,6 +147,25 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
                add(confirmDialog);
        }
 
+       private void updateLabel(IPartialPageRequestHandler handler) {
+               String lbl = Application.getString(rg.getModelObject() == 
Type.email ? 315 : 316);
+               name.setLabel(Model.of(lbl));
+               label.setDefaultModelObject(lbl);
+               if (handler != null) {
+                       handler.add(name, label);
+               }
+       }
+
+       @Override
+       protected void onOpen(IPartialPageRequestHandler handler) {
+               super.onOpen(handler);
+               name.setModelObject(null);
+               rg.setModelObject(Type.email);
+               captcha.refresh(handler);
+               handler.add(rg);
+               updateLabel(handler);
+       }
+
        @Override
        public boolean isDefaultCloseEventEnabled()     {
                return true;
@@ -198,7 +206,9 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               resetUser(type == Type.email ? name : "", type == Type.login ? 
name : ""
+               String nm = name.getModelObject();
+               Type type = rg.getModelObject();
+               resetUser(type == Type.email ? nm : "", type == Type.login ? nm 
: ""
                        , getBean(ConfigurationDao.class).getBaseUrl() + 
getRequestCycle().urlFor(ResetPage.class, new 
PageParameters()).toString().substring(2));
        }
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/18639721/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
index 80b2d60..98ed964 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
@@ -102,7 +102,7 @@ public class RegisterDialog extends 
NonClosableDialog<String> {
                        }
                };
                add(confirmRegistration);
-               reset();
+               reset(null);
        }
 
        public void setSignInDialog(SignInDialog s) {
@@ -123,7 +123,7 @@ public class RegisterDialog extends 
NonClosableDialog<String> {
                return Arrays.asList(registerBtn, cancelBtn);
        }
 
-       public void reset() {
+       public void reset(IPartialPageRequestHandler handler) {
                firstName = null;
                lastName = null;
                login = null;
@@ -132,7 +132,7 @@ public class RegisterDialog extends 
NonClosableDialog<String> {
                email = null;
                lang = WebSession.get().getLanguageByBrowserLocale();
                country = WebSession.get().getBrowserLocale().getCountry();
-               captcha.refresh();
+               captcha.refresh(handler);
        }
 
        @Override
@@ -149,7 +149,7 @@ public class RegisterDialog extends 
NonClosableDialog<String> {
                        messageCode = 1591;
                }
                confirmRegistration.setModelObject(getString("" + messageCode));
-               reset();
+               reset(handler);
                handler.add(form);
        }
 

Reply via email to