You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2013/05/10 18:43:32 UTC

svn commit: r1481089 - in /openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web: app/ pages/auth/

Author: solomax
Date: Fri May 10 16:43:31 2013
New Revision: 1481089

URL: http://svn.apache.org/r1481089
Log:
[OPENMEETINGS-620] Forget password dialog is added;

Added:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
Modified:
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.html
    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
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
    openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java?rev=1481089&r1=1481088&r2=1481089&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java Fri May 10 16:43:31 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.app;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.openmeetings.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.web.components.user.dashboard.PrivateRoomsWidgetDescriptor;
 import org.apache.openmeetings.web.components.user.dashboard.RssWidgetDescriptor;
@@ -37,9 +39,12 @@ import org.apache.wicket.markup.MarkupFa
 import org.apache.wicket.markup.MarkupParser;
 import org.apache.wicket.markup.MarkupResourceStream;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.protocol.http.RequestUtils;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Url;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.settings.IPageSettings;
 import org.springframework.context.ApplicationContext;
@@ -109,6 +114,20 @@ public class Application extends Authent
 		});
 	}
 	
+	public final static String toAbsolutePath(final String relativePagePath) {
+	       HttpServletRequest req = (HttpServletRequest)((WebRequest)RequestCycle.get().getRequest()).getContainerRequest();
+	       return RequestUtils.toAbsolutePath(req.getRequestURL().toString(), relativePagePath);
+	}
+	
+	public final static String getBasePath() {
+		return toAbsolutePath("");
+	}
+
+	public final static String getBaseSwfPath() {
+		//TODO add proxy handling
+		return toAbsolutePath("../");
+	}
+
 	@Override
 	public Class<? extends Page> getHomePage() {
 		return MainPage.class;

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html?rev=1481089&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.html Fri May 10 16:43:31 2013
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+    	  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+	<form wicket:id="form">
+		<table>
+			<tr wicket:id="type">
+				<td>
+					<label wicket:for="email"><wicket:ommessage key="313" /></label>&nbsp;<input
+						type="radio" wicket:id="email" />
+				</td>
+				<td>
+					<label wicket:for="login"><wicket:ommessage key="314" /></label>&nbsp;<input
+						type="radio" wicket:id="login" />
+				</td>
+			</tr>
+			<tr>
+				<td><span wicket:id="label"></span></td>
+				<td><input wicket:id="name" type="text" /></td>
+			</tr>
+		</table>
+		<span wicket:id="feedback"></span>
+		<input type="submit" wicket:id="submit"
+			style="position: absolute; top: -9999px; width: 1px; height: 1px;" />
+	</form>
+</wicket:panel>
+</html>
\ No newline at end of file

Added: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java?rev=1481089&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java (added)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java Fri May 10 16:43:31 2013
@@ -0,0 +1,149 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.pages.auth;
+
+import static org.apache.openmeetings.web.app.Application.getBaseSwfPath;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.data.user.UserManager;
+import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.basic.Label;
+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.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+
+public class ForgetPasswordDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 8494008571497363018L;
+	private DialogButton send = new DialogButton(WebSession.getString(317));
+	private DialogButton cancel = new DialogButton(WebSession.getString(122));
+	private FeedbackPanel feedback = new FeedbackPanel("feedback");
+	private RequiredTextField<String> nameField;
+	private Form<String> form;
+	private SignInDialog s;
+	private String name;
+	private Type type = Type.email;
+	
+	enum Type {
+		email
+		, login
+	}
+	
+	public ForgetPasswordDialog(String id) {
+		super(id, WebSession.getString(312));
+		add(form = new Form<String>("form") {
+			private static final long serialVersionUID = 6340692639510268144L;
+			private IModel<String> lblModel = Model.of(WebSession.getString(315));
+			private Label label = new Label("label", lblModel);
+			
+			{
+				add(feedback.setOutputMarkupId(true));
+				add(label.setOutputMarkupId(true));
+				RadioGroup<Type> rg = new RadioGroup<Type>("type", new PropertyModel<Type>(ForgetPasswordDialog.this, "type"));
+				add(rg.add(new Radio<Type>("email", Model.of(Type.email)).setOutputMarkupId(true))
+						.add(new Radio<Type>("login", Model.of(Type.login)).setOutputMarkupId(true))
+						.setOutputMarkupId(true));
+				rg.add(new AjaxFormChoiceComponentUpdatingBehavior() {
+					private static final long serialVersionUID = 5814272716387415523L;
+
+					@Override
+					protected void onUpdate(AjaxRequestTarget target) {
+						lblModel.setObject(WebSession.getString(type == Type.email ? 315 : 316));
+						target.add(label);
+					}
+				});
+				add(nameField = new RequiredTextField<String>("name", new PropertyModel<String>(ForgetPasswordDialog.this, "name")));
+				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+					private static final long serialVersionUID = 5257502637636428620L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+						ForgetPasswordDialog.this.onSubmit(target);
+					}
+					
+					@Override
+					protected void onError(AjaxRequestTarget target, Form<?> form) {
+						// TODO Auto-generated method stub
+						ForgetPasswordDialog.this.onError(target);
+					}
+				});
+			}
+			
+			@Override
+			protected void onValidate() {
+				UsersDao dao = getBean(UsersDao.class);
+				String n = nameField.getConvertedInput();
+				if (type == Type.email && null == dao.getUserByEmail(n)) {
+					error(WebSession.getString(318));
+				}
+				if (type == Type.login && null == dao.getUserByName(n)) {
+					error(WebSession.getString(320));
+				}
+			}
+		});
+	}
+
+	public void onClose(AjaxRequestTarget target, DialogButton button) {
+		s.open(target);
+	}
+
+	public void setSignInDialog(SignInDialog s) {
+		this.s = s;
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(send, cancel);
+	}
+	
+	@Override
+	protected DialogButton getSubmitButton() {
+		return send;
+	}
+
+	@Override
+	public Form<?> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		getBean(UserManager.class).resetUser(
+			type == Type.email ? name : "", type == Type.login ? name : "", getBaseSwfPath());
+	}
+}

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.html?rev=1481089&r1=1481088&r2=1481089&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.html Fri May 10 16:43:31 2013
@@ -23,39 +23,39 @@
 	<form wicket:id="form">
 		<table>
 			<tr>
-				<td><wicket:ommessage key="117" /></td>
+				<td class="desc"><wicket:ommessage key="117" /></td>
 				<td><input wicket:id="firstName" type="text" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="118" /></td>
+				<td class="desc"><wicket:ommessage key="118" /></td>
 				<td><input wicket:id="lastName" type="text" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="114" /></td>
+				<td class="desc"><wicket:ommessage key="114" /></td>
 				<td><input wicket:id="login" type="text" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="115" /></td>
+				<td class="desc"><wicket:ommessage key="115" /></td>
 				<td><input wicket:id="password" type="password" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="116" /></td>
+				<td class="desc"><wicket:ommessage key="116" /></td>
 				<td><input wicket:id="confirmPassword" type="password" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="119" /></td>
+				<td class="desc"><wicket:ommessage key="119" /></td>
 				<td><input wicket:id="email" type="text" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="1143" /></td>
+				<td class="desc"><wicket:ommessage key="1143" /></td>
 				<td><select wicket:id="tz"></select></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="120" /></td>
+				<td class="desc"><wicket:ommessage key="120" /></td>
 				<td><select wicket:id="state"></select></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="111" /></td>
+				<td class="desc"><wicket:ommessage key="111" /></td>
 				<td><select wicket:id="lang"></select></td>
 			</tr>
 		</table>

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=1481089&r1=1481088&r2=1481089&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 Fri May 10 16:43:31 2013
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.page
 
 import static org.apache.openmeetings.utils.UserHelper.getMinLoginLength;
 import static org.apache.openmeetings.utils.UserHelper.getMinPasswdLength;
+import static org.apache.openmeetings.web.app.Application.getBaseSwfPath;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
 import java.util.Arrays;
@@ -113,7 +114,7 @@ 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*/
-				, ""/*baseURL FIXME*/, false, tz.getJname());
+				, getBaseSwfPath(), false, tz.getJname());
 	}
 	
 	class RegisterForm extends StatelessForm<String> {

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=1481089&r1=1481088&r2=1481089&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 Fri May 10 16:43:31 2013
@@ -23,16 +23,21 @@
 	<form wicket:id="signin">
 		<table>
 			<tr>
-				<td><wicket:ommessage key="109" /></td>
+				<td class="desc"><wicket:ommessage key="109" /></td>
 				<td><input wicket:id="login" type="text" value="" /></td>
 			</tr>
 			<tr>
-				<td><wicket:ommessage key="110" /></td>
+				<td class="desc"><wicket:ommessage key="110" /></td>
 				<td><input wicket:id="pass" type="password" value="" /></td>
 			</tr>
 			<tr>
 				<td></td>
-				<td><input wicket:id="rememberMe" type="checkbox" /><label wicket:for="rememberMe"><wicket:ommessage key="288" /></label></td>
+				<td style="white-space: nowrap;"><input wicket:id="rememberMe" 
+					type="checkbox" /><label wicket:for="rememberMe"><wicket:ommessage key="288" /></label></td>
+			</tr>
+			<tr>
+				<td><a wicket:id="forget"><wicket:ommessage key="311"/></a></td>
+				<td></td>
 			</tr>
 		</table>
 		<span wicket:id="feedback"></span>

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=1481089&r1=1481088&r2=1481089&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 Fri May 10 16:43:31 2013
@@ -27,6 +27,7 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.RestartResponseException;
 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.authentication.IAuthenticationStrategy;
 import org.apache.wicket.markup.html.form.CheckBox;
@@ -53,6 +54,7 @@ public class SignInDialog extends Abstra
     private String area = "";
     private boolean rememberMe = false;
     private RegisterDialog r;
+    private ForgetPasswordDialog f;
 	
 	public SignInDialog(String id) {
 		super(id, WebSession.getString(108));
@@ -62,6 +64,10 @@ public class SignInDialog extends Abstra
 	public void setRegisterDialog(RegisterDialog r) {
 		this.r = r;
 	}
+
+	public void setForgetPasswordDialog(ForgetPasswordDialog f) {
+		this.f = f;
+	}
 	
 	//TODO need to be removed
 	@Override
@@ -86,7 +92,7 @@ public class SignInDialog extends Abstra
 	
 	@Override
 	public void onClose(AjaxRequestTarget target, DialogButton button) {
-		if (button.equals(registerBtn)) {
+		if (registerBtn.equals(button)) {
 			r.open(target);
 		}
 	}
@@ -192,6 +198,15 @@ public class SignInDialog extends Abstra
 					SignInDialog.this.onError(target);
 				}
 			});
+			add(new AjaxLink<Void>("forget") {
+				private static final long serialVersionUID = -7497568829491287604L;
+
+				@Override
+				public void onClick(AjaxRequestTarget target) {
+					SignInDialog.this.close(target, null);
+					f.open(target);
+				}
+			});
 		}
 
 		private void alreadyLoggedIn() {

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html?rev=1481089&r1=1481088&r2=1481089&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html Fri May 10 16:43:31 2013
@@ -23,9 +23,12 @@
 		<link media="screen" type="text/css" rel="stylesheet" href="css/theme.css"/>
 		<link media="screen" type="text/css" rel="stylesheet" href="css/jquery-ui-1.10.2.custom.min.css"/>
 		<style>
-			input:not([type='checkbox']), select {
+			input:not([type='checkbox']):not([type='radio']), select {
 				width: 170px;
 			}
+			td.desc {
+				width: 200px;
+			}
 		</style>
 	</wicket:head>
 	<wicket:extend>
@@ -36,5 +39,6 @@
 		</script>
 		<div wicket:id="signin"></div>
 		<div wicket:id="register"></div>
+		<div wicket:id="forget"></div>
 	</wicket:extend>
 </html>

Modified: openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java?rev=1481089&r1=1481088&r2=1481089&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java (original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java Fri May 10 16:43:31 2013
@@ -41,10 +41,13 @@ public class SignInPage extends BasePage
 	
 	public SignInPage() {
 		RegisterDialog r = new RegisterDialog("register");
+		ForgetPasswordDialog f = new ForgetPasswordDialog("forget");
 		d = new SignInDialog("signin");
 		d.setRegisterDialog(r);
+		d.setForgetPasswordDialog(f);
 		r.setSignInDialog(d);
-		add(d, r.setVisible(allowRegister()));
+		f.setSignInDialog(d);
+		add(d, r.setVisible(allowRegister()), f);
 	}
 	
 	@Override