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


Reply via email to