kimptoc 02/01/09 04:14:20 Modified: src/java/org/apache/jetspeed/modules/actions JLoginUser.java JetspeedSessionValidator.java UpdateAccount.java src/java/org/apache/jetspeed/modules/localization JetspeedLocalization_en.properties webapp/WEB-INF/conf JetspeedResources.properties TurbineResources.properties webapp/WEB-INF/templates/vm/navigations/html top.vm webapp/WEB-INF/templates/vm/screens/html EditAccount.vm Login.vm xdocs changes.xml Added: src/java/org/apache/jetspeed/modules/actions JLogoutUser.java Log: bug 4191 -automatic logon added Revision Changes Path 1.21 +65 -1 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java Index: JLoginUser.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLoginUser.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- JLoginUser.java 28 Dec 2001 12:14:07 -0000 1.20 +++ JLoginUser.java 9 Jan 2002 12:14:20 -0000 1.21 @@ -62,6 +62,8 @@ import java.util.Locale; import java.io.StringWriter; +import javax.servlet.http.Cookie; + // Turbine Modules import org.apache.velocity.context.Context; import org.apache.turbine.TurbineConstants; @@ -192,7 +194,7 @@ return; } - // we are on the ConfirmRegistration page + // are we on the ConfirmRegistration page? Log.info("Entering JLoginUser action"); boolean newUserApproval = JetspeedResources.getBoolean("newuser.approval.enable", false); @@ -267,6 +269,7 @@ data.setMessage(Localization.getString("JLOGINUSER_KEYNOTVALID")); data.setScreenTemplate("NewUserRejected"); data.getUser().setHasLoggedIn(new Boolean (false) ); + return; } else @@ -277,6 +280,67 @@ return; } } + + // user has logged in successfully at this point + + boolean automaticLogonEnabled = JetspeedResources.getBoolean("automatic.logon.enable", false); + if (automaticLogonEnabled) + { + //Does the user want to use this facility? + boolean userRequestsRememberMe = data.getParameters().getBoolean("rememberme",false); + if (userRequestsRememberMe) + { + //save cookies on the users machine. + int maxage = JetspeedResources.getInt("automatic.logon.cookie.maxage",-1); + String comment = JetspeedResources.getString("automatic.logon.cookie.comment",""); + String domain = JetspeedResources.getString("automatic.logon.cookie.domain"); + String path = JetspeedResources.getString("automatic.logon.cookie.path","/"); + + if (domain == null) + { + String server = data.getServerName(); + domain = "." + server; + } + + String loginCookieValue = null; + + if ( JetspeedResources.getString("automatic.logon.cookie.generation","everylogon").equals("everylogon") ) + { + loginCookieValue = ""+Math.random(); + data.getUser().setPerm("logincookie",loginCookieValue); + JetspeedSecurity.saveUser( data.getUser() ); + } + else + { + loginCookieValue = (String)data.getUser().getPerm("logincookie"); + if (loginCookieValue == null || loginCookieValue.length() == 0) + { + loginCookieValue = ""+Math.random(); + data.getUser().setPerm("logincookie",loginCookieValue); + JetspeedSecurity.saveUser( data.getUser() ); + } + } + + Cookie userName = new Cookie("username",data.getUser().getUserName()); + Cookie loginCookie = new Cookie("logincookie",loginCookieValue); + + userName.setMaxAge(maxage); + userName.setComment(comment); + userName.setDomain(domain); + userName.setPath(path); + + loginCookie.setMaxAge(maxage); + loginCookie.setComment(comment); + loginCookie.setDomain(domain); + loginCookie.setPath(path); + + data.getResponse().addCookie(userName); + data.getResponse().addCookie(loginCookie); + + } + + } + } } } 1.12 +32 -2 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java Index: JetspeedSessionValidator.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JetspeedSessionValidator.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- JetspeedSessionValidator.java 3 Jan 2002 08:46:11 -0000 1.11 +++ JetspeedSessionValidator.java 9 Jan 2002 12:14:20 -0000 1.12 @@ -59,12 +59,15 @@ import org.apache.turbine.util.RunData; import org.apache.turbine.util.Log; +import org.apache.turbine.util.security.UnknownEntityException; import org.apache.turbine.services.security.TurbineSecurity; +import org.apache.turbine.om.security.User; import org.apache.turbine.modules.actions.sessionvalidator.TemplateSessionValidator; import org.apache.turbine.services.resources.TurbineResources; import org.apache.jetspeed.services.rundata.JetspeedRunData; import org.apache.jetspeed.services.Profiler; import org.apache.jetspeed.om.profile.Profile; +import org.apache.jetspeed.services.resources.JetspeedResources; /** Just like org.apache.turbine.modules.actions.sessionvalidator.TemplateSessionValidator except: @@ -79,7 +82,7 @@ @author <a href="mailto:[EMAIL PROTECTED]">Ingo Schuster</a> @author <a href="mailto:[EMAIL PROTECTED]">Raphaël Luta</a> @author <a href="mailto:[EMAIL PROTECTED]">Santiago Gala</a> -@version $Id: JetspeedSessionValidator.java,v 1.11 2002/01/03 08:46:11 kimptoc Exp $ +@version $Id: JetspeedSessionValidator.java,v 1.12 2002/01/09 12:14:20 kimptoc Exp $ */ public class JetspeedSessionValidator extends TemplateSessionValidator { @@ -95,7 +98,34 @@ //first, invoke our superclass action to make sure //we follow Turbine evolutions super.doPerform(data); - + + if ( JetspeedResources.getBoolean("automatic.logon.enable", false) ) { + // need to make sure there are cookies - turbine does not handle this currently + if ( data.getRequest().getCookies() != null ) + { + //check for user in cookie + String userName = data.getCookies().getString("username",""); + String loginCookieValue = data.getCookies().getString("logincookie",""); + + if ( userName.length() > 0 && loginCookieValue.length() >0 ) + { + User user = null; + try { + user = TurbineSecurity.getUser(userName); + if (user.getPerm("logincookie","").equals(loginCookieValue)) { + //cookie is present and correct - log the user in + data.setUser(user); + user.setHasLoggedIn(new Boolean(true)); + user.updateLastLogin(); + data.save(); + } + } catch (UnknownEntityException noSuchUser) { + //user not found - ignore it - they will not be logged in automatically + } + } + } + } + // now, define Jetspeed specific properties, using the customized // RunData properties JetspeedRunData jdata = null; 1.13 +85 -0 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/UpdateAccount.java Index: UpdateAccount.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/UpdateAccount.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- UpdateAccount.java 26 Nov 2001 19:25:25 -0000 1.12 +++ UpdateAccount.java 9 Jan 2002 12:14:20 -0000 1.13 @@ -59,12 +59,15 @@ import java.sql.Connection; import java.util.Hashtable; +import javax.servlet.http.Cookie; + // External Stuff import org.apache.turbine.modules.Action; import org.apache.turbine.modules.ActionLoader; import org.apache.turbine.services.localization.Localization; import org.apache.turbine.services.security.TurbineSecurity; import org.apache.turbine.util.RunData; +import org.apache.turbine.util.Log; import org.apache.turbine.util.GenerateUniqueId; import org.apache.turbine.om.security.User; import org.apache.jetspeed.services.resources.JetspeedResources; @@ -93,6 +96,7 @@ String firstname = data.getParameters().getString( "firstname", "" ); String lastname = data.getParameters().getString( "lastname" , "" ); String email = data.getParameters().getString( "email" , "" ); + boolean userRequestsRememberMe = data.getParameters().getBoolean( "rememberme" , false ); // Save user input in case there is an error and // we have to go back to the EditAccount screen @@ -147,6 +151,87 @@ data.setMessage(Localization.getString("UPDATEACCOUNT_NOLASTNAME")); backToEditAccount( data, screenData ); return; + } + + // if automatic login is enabled, then handle the remember me checkbox + if ( JetspeedResources.getBoolean("automatic.logon.enable", false) ) + { + if ( ! userRequestsRememberMe ) + { + if ( data.getRequest().getCookies() != null && + data.getCookies().getString("username") != null && + data.getCookies().getString("logincookie") != null ) + { + // remove cookies by re-adding them with zero MaxAge, which deletes them + Cookie userName = new Cookie("username",""); + Cookie loginCookie = new Cookie("logincookie",""); + + String comment = JetspeedResources.getString("automatic.logon.cookie.comment",""); + String domain = JetspeedResources.getString("automatic.logon.cookie.domain"); + String path = JetspeedResources.getString("automatic.logon.cookie.path","/"); + + if (domain == null) + { + String server = data.getServerName(); + domain = "." + server; + } + + userName.setMaxAge(0); + userName.setComment(comment); + userName.setDomain(domain); + userName.setPath(path); + + loginCookie.setMaxAge(0); + loginCookie.setComment(comment); + loginCookie.setDomain(domain); + loginCookie.setPath(path); + + data.getResponse().addCookie(userName); + data.getResponse().addCookie(loginCookie); + } + } + else + { + if ( data.getRequest().getCookies() == null || + !data.getCookies().getString("username","").equals(data.getUser().getUserName()) || + !data.getCookies().getString("logincookie").equals(data.getUser().getPerm("logincookie")) ) + { + String loginCookieValue = (String)data.getUser().getPerm("logincookie"); + if (loginCookieValue == null || loginCookieValue.length() == 0) + { + loginCookieValue = ""+Math.random(); + data.getUser().setPerm("logincookie",loginCookieValue); + TurbineSecurity.saveUser( data.getUser() ); + } + + Cookie userName = new Cookie("username",data.getUser().getUserName()); + Cookie loginCookie = new Cookie("logincookie",loginCookieValue); + + int maxage = JetspeedResources.getInt("automatic.logon.cookie.maxage",-1); + String comment = JetspeedResources.getString("automatic.logon.cookie.comment",""); + String domain = JetspeedResources.getString("automatic.logon.cookie.domain"); + String path = JetspeedResources.getString("automatic.logon.cookie.path","/"); + + if (domain == null) + { + String server = data.getServerName(); + domain = "." + server; + } + + userName.setMaxAge(maxage); + userName.setComment(comment); + userName.setDomain(domain); + userName.setPath(path); + + loginCookie.setMaxAge(maxage); + loginCookie.setComment(comment); + loginCookie.setDomain(domain); + loginCookie.setPath(path); + + data.getResponse().addCookie(userName); + data.getResponse().addCookie(loginCookie); + } + } } // EMAIL 1.1 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/actions/JLogoutUser.java Index: JLogoutUser.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2000-2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Jetspeed" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" or * "Apache Jetspeed", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.jetspeed.modules.actions; // Java Core Classes import javax.servlet.http.Cookie; // Turbine Modules import org.apache.turbine.modules.ActionEvent; import org.apache.turbine.modules.ActionLoader; import org.apache.turbine.util.Log; import org.apache.turbine.util.RunData; import org.apache.jetspeed.services.resources.JetspeedResources; /** This class is responsible for logging a user out of the system. */ public class JLogoutUser extends ActionEvent { public void doPerform( RunData data ) throws Exception { Log.info("Entering action JLogoutUser"); // if automatic login is enabled, then remove cookies when user logs out if ( JetspeedResources.getBoolean("automatic.logon.enable", false) ) { // remove cookies by re-adding them with zero MaxAge, which deletes them Cookie userName = new Cookie("username",""); Cookie loginCookie = new Cookie("logincookie",""); String comment = JetspeedResources.getString("automatic.logon.cookie.comment",""); String domain = JetspeedResources.getString("automatic.logon.cookie.domain"); String path = JetspeedResources.getString("automatic.logon.cookie.path","/"); if (domain == null) { String server = data.getServerName(); domain = "." + server; } userName.setMaxAge(0); userName.setComment(comment); userName.setDomain(domain); userName.setPath(path); loginCookie.setMaxAge(0); loginCookie.setComment(comment); loginCookie.setDomain(domain); loginCookie.setPath(path); data.getResponse().addCookie(userName); data.getResponse().addCookie(loginCookie); // also need to remove the cookies from the current request - otherwise the session validator will log user in again if ( data.getRequest().getCookies() != null) { data.getCookies().remove("logincookie"); data.getCookies().remove("username"); } } // use the standard turbine logout facility ActionLoader.getInstance().exec(data, "LogoutUser"); } } 1.11 +7 -0 jakarta-jetspeed/src/java/org/apache/jetspeed/modules/localization/JetspeedLocalization_en.properties Index: JetspeedLocalization_en.properties =================================================================== RCS file: /home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/modules/localization/JetspeedLocalization_en.properties,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- JetspeedLocalization_en.properties 9 Jan 2002 11:36:32 -0000 1.10 +++ JetspeedLocalization_en.properties 9 Jan 2002 12:14:20 -0000 1.11 @@ -5,6 +5,12 @@ LOCALIZATION_MAINTAINER=Jetspeed Development Team +LOGIN_USERNAME=Username: +LOGIN_PASSWORD=Password: +LOGIN_REMEMBERME=Remember me on this computer +LOGIN_LOGIN=Login +LOGIN_NEW_ACCOUNT=Create a new account + JLOGINUSER_PASSWORDREMINDER_INVALIDUSER=Sorry, that username is not valid. JLOGINUSER_PASSWORDREMINDER_SENT=Your password has been emailed to you. JLOGINUSER_PASSWORDREMINDER_ERROR=Error sending password reminder: @@ -72,6 +78,7 @@ USERFORM_USERNAMEMSG=Username: USERFORM_PASSWORDMSG=Password: USERFORM_PASSWORDCONFIRMMSG=Password (confirm): +USERFORM_REMEMBERME=Remember me on this computer USERFORM_FIRSTNAMEMSG=First Name: USERFORM_LASTNAMEMSG=Last Name: USERFORM_EMAILMSG=Email: 1.55 +18 -1 jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedResources.properties Index: JetspeedResources.properties =================================================================== RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/conf/JetspeedResources.properties,v retrieving revision 1.54 retrieving revision 1.55 diff -u -r1.54 -r1.55 --- JetspeedResources.properties 28 Dec 2001 12:14:07 -0000 1.54 +++ JetspeedResources.properties 9 Jan 2002 12:14:20 -0000 1.55 @@ -1,7 +1,7 @@ ################################################################################ # Jetspeed Configuration # Author: Kevin A. Burton ([EMAIL PROTECTED]) -# $Id: JetspeedResources.properties,v 1.54 2001/12/28 12:14:07 kimptoc Exp $ +# $Id: JetspeedResources.properties,v 1.55 2002/01/09 12:14:20 kimptoc Exp $ ################################################################################ # This is the main file you will need to configuration Jetspeed. If there are # any secondary files they will be pointed to from this file. @@ -427,6 +427,23 @@ # Password reminder options password.reminder.enable=false password.reminder.template=password-reminder.vm + +# Remember me/auto-logon facility +automatic.logon.enable=false +# number of seconds until logon expires (2592000 = 1 month, 30*24*60*60) +automatic.logon.cookie.maxage=2592000 +automatic.logon.cookie.comment=Jetspeed automatic logon cookie +# domain, blank means use getServer to derive it. Is of the form .foo.com. +automatic.logon.cookie.domain= +# path, blank means use getContextPath, default to / - all paths +automatic.logon.cookie.path=/ +# specifies when the random portion of the cookie is regenerated- +# - firstlogon, means it is only generated the first time the users +# requests this feature, useful when you want to allow +# them to use the feature across computers +# - everylogon, means it is regenerated upon each successful logon +# useful for getting a little added security (default) +automatic.logon.cookie.generation=everylogon ######################################### 1.41 +2 -2 jakarta-jetspeed/webapp/WEB-INF/conf/TurbineResources.properties Index: TurbineResources.properties =================================================================== RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/conf/TurbineResources.properties,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- TurbineResources.properties 25 Nov 2001 20:53:37 -0000 1.40 +++ TurbineResources.properties 9 Jan 2002 12:14:20 -0000 1.41 @@ -1,5 +1,5 @@ # ------------------------------------------------------------------- -# $Id: TurbineResources.properties,v 1.40 2001/11/25 20:53:37 nacho Exp $ +# $Id: TurbineResources.properties,v 1.41 2002/01/09 12:14:20 kimptoc Exp $ # # This is the configuration file for Turbine. # @@ -286,7 +286,7 @@ # This is the default action to log a user out. -action.logout=LogoutUser +action.logout=JLogoutUser # This is the default action to validate whether or not a session is # valid. For example, if you want to make sure if a user has already 1.12 +12 -3 jakarta-jetspeed/webapp/WEB-INF/templates/vm/navigations/html/top.vm Index: top.vm =================================================================== RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/templates/vm/navigations/html/top.vm,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- top.vm 28 Dec 2001 15:47:07 -0000 1.11 +++ top.vm 9 Jan 2002 12:14:20 -0000 1.12 @@ -55,7 +55,7 @@ </tr> <tr> <td align="right" style="font-size:10"> - <a href="$link.setAction("LogoutUser")" style="font-size:10">$l10n.TOP_LOGOUT</a> + <a href="$link.setAction($config.getString("action.logout"))" style="font-size:10">$l10n.TOP_LOGOUT</a> </td> </tr> ## Leave space between last line and content @@ -102,9 +102,9 @@ <input value="" name="username" maxlength="25" type="text" tabindex="1" style="font-size:10"> </td> <td rowspan="2" align="center"> - <input name="submit" type="submit" value="$l10n.USERFORM_LOGIN" tabindex="3" style="font-size:10" /> + <input name="submit" type="submit" value="$l10n.USERFORM_LOGIN" tabindex="4" style="font-size:10" /> #if ( $config.getBoolean("password.reminder.enable") == true ) - <input name="eventSubmit_doReminder" type="submit" tabindex="4" value="$l10n.USERFORM_PASSWORDSEND" style="font-size:10" > + <input name="eventSubmit_doReminder" type="submit" tabindex="5" value="$l10n.USERFORM_PASSWORDSEND" style="font-size:10" > <br><small>$l10n.USERFORM_PASSWORDREMINDER</small> #end @@ -117,6 +117,15 @@ <input value="" name="password" maxlength="25" type="password" tabindex="2" style="font-size:10"> </td> </tr> + +#if ( $config.getBoolean("automatic.logon.enable") == true ) + <tr> + <td style="font-size:10" colspan="2"> + <input name="rememberme" value="true" type="checkbox" tabindex="3" />$l10n.USERFORM_REMEMBERME + </td> + </tr> +#end + #if( $config.getBoolean("topnav.user_creation.enable") == true) <tr> <td align="center" colspan="3"> 1.7 +11 -0 jakarta-jetspeed/webapp/WEB-INF/templates/vm/screens/html/EditAccount.vm Index: EditAccount.vm =================================================================== RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/templates/vm/screens/html/EditAccount.vm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- EditAccount.vm 18 Dec 2001 06:29:36 -0000 1.6 +++ EditAccount.vm 9 Jan 2002 12:14:20 -0000 1.7 @@ -41,6 +41,17 @@ <input name="password_confirm" type="PASSWORD" value=""> </td> </tr> +#if ( $config.getBoolean("automatic.logon.enable") == true ) + <tr> + <td colspan="3"> + <input name="rememberme" value="true" type="checkbox" +#if ( $data.getCookies().get("logincookie") ) + checked +#end + />$l10n.USERFORM_REMEMBERME + </td> + </tr> +#end <tr> <td>$l10n.USERFORM_FIRSTNAMEMSG</td> <td> </td> 1.4 +11 -4 jakarta-jetspeed/webapp/WEB-INF/templates/vm/screens/html/Login.vm Index: Login.vm =================================================================== RCS file: /home/cvs/jakarta-jetspeed/webapp/WEB-INF/templates/vm/screens/html/Login.vm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Login.vm 27 Dec 2001 14:51:10 -0000 1.3 +++ Login.vm 9 Jan 2002 12:14:20 -0000 1.4 @@ -11,21 +11,28 @@ #end <table border="0" cellspacing="2" cellpadding="1"> <tr> - <td>Username:</td> + <td>$l10n.LOGIN_USERNAME</td> <td><input size="12" value="$!data.Parameters.getString("username")" name="username" maxlength="25" type="text" /></td> </tr> <tr> - <td>Password:</td> + <td>$l10n.LOGIN_PASSWORD</td> <td><input size="12" value="" name="password" maxlength="25" type="password" /></td> </tr> +#if ( $config.getBoolean("automatic.logon.enable") == true ) + <tr> + <td colspan="2"> + <input name="rememberme" value="true" type="checkbox" />$l10n.LOGIN_REMEMBERME + </td> + </tr> +#end <tr> <td colspan="2" align="center"> - <input name="submit" type="submit" value="Login" /> + <input name="submit" type="submit" value="$l10n.LOGIN_LOGIN" /> </td> </tr> <tr> <td colspan="2" align="center"> - <small><a href="$link.setPage("NewAccount")">Create a new account</a></small> + <small><a href="$link.setPage("NewAccount")">$l10n.LOGIN_NEW_ACCOUNT</a></small> </td> </tr> </table> 1.9 +4 -1 jakarta-jetspeed/xdocs/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/jakarta-jetspeed/xdocs/changes.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- changes.xml 3 Jan 2002 09:27:51 -0000 1.8 +++ changes.xml 9 Jan 2002 12:14:20 -0000 1.9 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> <!-- -$Id: changes.xml,v 1.8 2002/01/03 09:27:51 kimptoc Exp $ +$Id: changes.xml,v 1.9 2002/01/09 12:14:20 kimptoc Exp $ --> <document> <properties> @@ -45,6 +45,9 @@ </li> <li> Fix - Bug # 5604 - Maximize now sticks until the user does a Restore or logs out (CK) +</li> +<li> + Add - Bug # 4191 - Automatic Logon/Remember me facility (CK) </li> </ul>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>