Repository: openmeetings Updated Branches: refs/heads/3.3.x bc6f857d2 -> f8c0d0333
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/f8c0d033 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/f8c0d033 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/f8c0d033 Branch: refs/heads/3.3.x Commit: f8c0d0333dec6ccff8a36416a7c45bd32f846aad Parents: bc6f857 Author: Maxim Solodovnik <[email protected]> Authored: Thu Jun 15 11:04:51 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Thu Jun 15 11:05:14 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/f8c0d033/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/f8c0d033/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/f8c0d033/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); }
