portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject svn commit: r725991 [8/32] - in /portals/jetspeed-2/applications/j2-admin/trunk: src/main/java/ src/main/java/org/apache/jetspeed/portlets/ src/main/java/org/apache/jetspeed/portlets/admin/ src/main/java/org/apache/jetspeed/portlets/custom/ src/main/ja...
Date Fri, 12 Dec 2008 13:05:40 GMT
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/ForgottenPasswordPortlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/ForgottenPasswordPortlet.java?rev=725991&r1=725990&r2=725991&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/ForgottenPasswordPortlet.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/ForgottenPasswordPortlet.java Fri Dec 12 05:05:25 2008
@@ -1,402 +1,402 @@
-/*
+/*
  * 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.jetspeed.portlets.registration;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-import javax.portlet.ActionRequest;
-import javax.portlet.ActionResponse;
-import javax.portlet.PortletConfig;
-import javax.portlet.PortletException;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletResponse;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-
-import org.apache.jetspeed.CommonPortletServices;
-import org.apache.jetspeed.PortalReservedParameters;
-import org.apache.jetspeed.administration.AdministrationEmailException;
-import org.apache.jetspeed.administration.PortalAdministration;
-import org.apache.jetspeed.locator.JetspeedTemplateLocator;
-import org.apache.jetspeed.locator.LocatorDescriptor;
-import org.apache.jetspeed.locator.TemplateDescriptor;
-import org.apache.jetspeed.locator.TemplateLocatorException;
-import org.apache.jetspeed.request.RequestContext;
-import org.apache.jetspeed.security.PasswordCredential;
-import org.apache.jetspeed.security.SecurityException;
-import org.apache.jetspeed.security.User;
-import org.apache.jetspeed.security.UserManager;
-import org.apache.portals.bridges.velocity.AbstractVelocityMessagingPortlet;
-import org.apache.portals.gems.util.ValidationHelper;
-import org.apache.velocity.context.Context;
-
-/**
- * This portlet allows a logged on user to change its password.
- *
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
- * @version $Id$
- */
-public class ForgottenPasswordPortlet extends AbstractVelocityMessagingPortlet
-{
-    private PortalAdministration admin;
-
-    private UserManager userManager;
-
-    // Request Params 
-    private static final String RP_EMAIL_ADDRESS = "email";
-
-    // Messages 
-    private static final String MSG_MESSAGE = "MSG";
-    private static final String MSG_CHANGEDPW_MSG = "CH_PWD_MSD";
-
-    // Context Variables
-    private static final String CTX_EMAIL_ADDRESS = "email";
-
-    private static final String CTX_RETURN_URL = "returnURL";
-
-    private static final String CTX_NEW_PASSWORD = "password";
-
-    private static final String CTX_USER_NAME = "username";
-
-    private static final String CTX_MESSAGE = "MSG";
-
-    private static final String CTX_CHANGEDPW_MSG = "updatedPWMsg";
-
-    // Init Parameter Constants
-    private static final String IP_REDIRECT_PATH = "redirectPath";
-
-    private static final String IP_RETURN_URL = "returnURL";
-
-    private static final String IP_TEMPLATE_LOCATION = "emailTemplateLocation";
-
-    private static final String IP_TEMPLATE_NAME = "emailTemplateName";
-
-    // Resource Bundle
-    private static final String RB_EMAIL_SUBJECT = "email.subject.forgotten.password";
-
-    private static final String PATH_SEPARATOR = "/";
-
-    /** email template to use for merging */
-    private String templateLocation;
-
-    private String templateName;
-
-    private JetspeedTemplateLocator templateLocator;
-
-    /** servlet path of the return url to be printed and href'd in email template */
-    private String returnUrlPath;
-
-    /** path where to redirect to after pressing submit on the form */
-    private String redirectPath;
-
-    /** localized emailSubject */
-    private String emailSubject = null;
-    
-    public void init(PortletConfig config) throws PortletException
-    {
-        super.init(config);
-        admin = (PortalAdministration) getPortletContext().getAttribute(
-                CommonPortletServices.CPS_PORTAL_ADMINISTRATION);
-        if (null == admin) { throw new PortletException(
-                "Failed to find the Portal Administration on portlet initialization"); }
-        userManager = (UserManager) getPortletContext().getAttribute(
-                CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
-        if (null == userManager) { throw new PortletException(
-                "Failed to find the User Manager on portlet initialization"); }
-
-        this.returnUrlPath = config.getInitParameter(IP_RETURN_URL);
-        this.redirectPath = config.getInitParameter(IP_REDIRECT_PATH);
-        this.templateLocation = config.getInitParameter(IP_TEMPLATE_LOCATION);
-        if (templateLocation == null)
-        {
-            templateLocation = "/WEB-INF/view/userreg/";
-        }
-        templateLocation = getPortletContext().getRealPath(templateLocation);
-        this.templateName = config.getInitParameter(IP_TEMPLATE_NAME);
-        if (templateName == null)
-        {
-            templateName = "forgottenPasswdEmail.vm";
-        }
-        
-        ArrayList roots = new ArrayList(1);
-        roots.add(templateLocation);
-
-        try
-        {
-            templateLocator = new JetspeedTemplateLocator(roots, "email", getPortletContext().getRealPath("/"));
-            templateLocator.start();
-        }
-        catch (FileNotFoundException e)
-        {
-            throw new PortletException("Could not start the template locator.", e);
-        }
-
-        
-    }
-
-    private boolean isValidGUID(String guid)
-    {
-        Map map = admin.getNewLoginInfo(guid);
-        
-        if (map != null) { return true; }
-        return false;
-    }
-
-    private boolean updatePasswordFromGUID(String guid)
-    {
-        Map map = admin.getNewLoginInfo(guid);
-        
-        String userName = (String) map.get("user.name");
-        String newPassword = (String) map.get("password");
-
-        // Here's where a break should be.   The following code should be put into the RETURN portlet
-        try
-        {
-            User user = userManager.getUser(userName);
-            PasswordCredential pwc = userManager.getPasswordCredential(user);
-            pwc.setPassword(null, newPassword);
-            pwc.setUpdateRequired(true);
-            userManager.storePasswordCredential(pwc);
-            
-            // if we got here stuff is changed... removed the key from the map
-            admin.removeNewLoginInfo(guid);
-        } catch (SecurityException e)
-        {
-            return false;
-        }
-        return true;
-    }
-
-    public void doView(RenderRequest request, RenderResponse response)
-            throws PortletException, IOException
-    {
-        response.setContentType("text/html");
-        Context context = getContext(request);
-        String email = request.getParameter(RP_EMAIL_ADDRESS);
-        String guid = request.getParameter("guid");
-
-        ResourceBundle resource = getPortletConfig().getResourceBundle(request.getLocale());
-
-        if (guid != null) 
-        {
-            if(isValidGUID(guid)) 
-            {
-                try
-                {
-                    updatePasswordFromGUID(guid);
-                    context
-                            .put(CTX_CHANGEDPW_MSG, resource.getString("forgotten.successful_pw_update"));
-                } catch (Exception e)
-                {
-                    context.put(CTX_MESSAGE,resource.getString("forgotten.unable_to_update_pw"));
-                }
-            } else {
-                // invalid GUID
-                context
-                .put(CTX_CHANGEDPW_MSG,resource.getString("forgotten.password_update_link_invalid"));
-            }
-        } else {
-            // might be returning from initial request
-            context.put(CTX_CHANGEDPW_MSG,consumeRenderMessage(request, MSG_CHANGEDPW_MSG));
-        }
-        context.put(CTX_EMAIL_ADDRESS, email);
-        context.put(CTX_MESSAGE, consumeRenderMessage(request, MSG_MESSAGE));
-        super.doView(request, response);
-    }
-
-    public static String makeGUID(String user, String newpw)
-    {
-        // This is a quicky version
-        long num = (long) user.hashCode() + (long) newpw.hashCode(); //  Possible collisions here...
-        long d = new Date().getTime();
-        long val = num * d;
-        String retval = Long.toHexString(val);
-        return retval;
-    }
-
-    public void processAction(ActionRequest request, ActionResponse response)
-            throws PortletException, IOException
-    {
-        List errors = new LinkedList();
-
-        String email = request.getParameter(RP_EMAIL_ADDRESS);
-        Locale locale = request.getLocale();
-
-        ResourceBundle resource = getPortletConfig().getResourceBundle(locale);
-
-        // validation
-        if (!ValidationHelper.isEmailAddress(email, true, 80))
-        {
-            errors.add(resource.getString("forgotten.invalid_email_format_entered"));
-        }
-
-        if (errors.size() > 0)
-        {
-            publishRenderMessage(request, MSG_MESSAGE, errors);
-            return;
-        }
-
-        User user = null;
-        try
-        {
-            user = admin.lookupUserFromEmail(email);
-        } catch (Exception e)
-        {
-            publishRenderMessage(
-                    request,
-                    MSG_MESSAGE,
-                    makeMessage(resource.getString("forgotten.email_address_not_found")));
-            return;
-        }
-
-        try
-        {
-            String userName = user.getName();
-
-            String newPassword = admin.generatePassword();
-
-            String urlGUID = makeGUID(userName, newPassword);
-
-            Map<String, String> userAttributes = new HashMap<String, String>();
-            Map<String, String> userInfoMap = user.getInfoMap();
-            
-            for (Map.Entry<String, String> entry : userInfoMap.entrySet())
-            {
-                userAttributes.put(entry.getKey(), entry.getValue());
-            }
-
-            // special attributes
-            userAttributes.put(CTX_RETURN_URL, generateReturnURL(request,
-                    response, urlGUID));
-            userAttributes.put(CTX_NEW_PASSWORD, newPassword);
-            userAttributes.put(CTX_USER_NAME, userName);
-
-            String templ = getTemplatePath(request, response);
-            
-            if (templ == null) 
-            { 
-                throw new Exception("email template not available"); 
-            }
-            admin.sendEmail(this.getPortletConfig(), email,
-                    getEmailSubject(request),templ, userAttributes);
-
-            //TODO this is currently hacked with a hashmap... needs to move to either a DB table
-            // or to some sort of credential
-            Map<String, String> map = new HashMap<String, String>();
-            map.put("user.name",userName);
-            map.put("password",newPassword);
-            admin.putNewLoginInfo(urlGUID, map);
-
-            publishRenderMessage(
-                    request,
-                    MSG_CHANGEDPW_MSG,
-                    makeMessage(resource.getString("an_email_has_been_sent")));
-            
-            response.sendRedirect(generateRedirectURL(request, response));
-        } 
-        catch (AdministrationEmailException e)
-        {
-            publishRenderMessage(request, CTX_MESSAGE, makeMessage(e
-                    .getMessage()));
-        } 
-        catch (Exception e)
-        {
-            publishRenderMessage(request, CTX_MESSAGE,
-                    makeMessage(resource.getString("failed_to_send") + e.toString()));
-        }
-
-    }
-
-    protected String getEmailSubject(PortletRequest request)
-    {
-        ResourceBundle resource = getPortletConfig().getResourceBundle(
-                request.getLocale());
-        try
-        {
-            this.emailSubject = resource.getString(RB_EMAIL_SUBJECT);
-        } catch (Exception e)
-        {
-            //TODO  report missing resource somehow
-        }
-        if (this.emailSubject == null)
-                this.emailSubject = "Password Notification";
-        return this.emailSubject;
-    }
-
-    protected String generateReturnURL(PortletRequest request,
-                                       PortletResponse response,
-                                       String urlGUID)
-    {
-        String fullPath = this.returnUrlPath + "?guid=" + urlGUID; 
-        // NOTE: getPortalURL will encode the fullPath for us
-        String url = admin.getPortalURL(request, response, fullPath);
-        return url;
-    }
-
-    protected String generateRedirectURL(PortletRequest request,
-                                         PortletResponse response)
-                                         
-    {
-        return admin.getPortalURL(request, response, this.redirectPath);
-    }
-    
-    protected List makeMessage(String msg)
-    {
-        List errors = new LinkedList();
-        errors.add(msg);
-        return errors;
-    }
-    
-    protected String getTemplatePath(ActionRequest request, ActionResponse response)
-    {
-        if (templateLocator == null)
-        {
-            return templateLocation + PATH_SEPARATOR + templateName;
-        }
-
-        RequestContext requestContext = (RequestContext) request
-                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
-        Locale locale = request.getLocale();
-
-        try
-        {
-            LocatorDescriptor locator = templateLocator.createLocatorDescriptor("email");
-            locator.setName(templateName);
-            locator.setMediaType(requestContext.getMediaType());
-            locator.setLanguage(locale.getLanguage());
-            locator.setCountry(locale.getCountry());
-            TemplateDescriptor template = templateLocator.locateTemplate(locator);
-
-            return template.getAppRelativePath();
-        }
-        catch (TemplateLocatorException e)
-        {
-            return templateLocation + PATH_SEPARATOR + templateName;
-        }
-    }
-
-}
+ * 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.jetspeed.portlets.registration;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.administration.AdministrationEmailException;
+import org.apache.jetspeed.administration.PortalAdministration;
+import org.apache.jetspeed.locator.JetspeedTemplateLocator;
+import org.apache.jetspeed.locator.LocatorDescriptor;
+import org.apache.jetspeed.locator.TemplateDescriptor;
+import org.apache.jetspeed.locator.TemplateLocatorException;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.PasswordCredential;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.User;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.portals.bridges.velocity.AbstractVelocityMessagingPortlet;
+import org.apache.portals.gems.util.ValidationHelper;
+import org.apache.velocity.context.Context;
+
+/**
+ * This portlet allows a logged on user to change its password.
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:chris@bluesunrise.com">Chris Schaefer</a>
+ * @version $Id$
+ */
+public class ForgottenPasswordPortlet extends AbstractVelocityMessagingPortlet
+{
+    private PortalAdministration admin;
+
+    private UserManager userManager;
+
+    // Request Params 
+    private static final String RP_EMAIL_ADDRESS = "email";
+
+    // Messages 
+    private static final String MSG_MESSAGE = "MSG";
+    private static final String MSG_CHANGEDPW_MSG = "CH_PWD_MSD";
+
+    // Context Variables
+    private static final String CTX_EMAIL_ADDRESS = "email";
+
+    private static final String CTX_RETURN_URL = "returnURL";
+
+    private static final String CTX_NEW_PASSWORD = "password";
+
+    private static final String CTX_USER_NAME = "username";
+
+    private static final String CTX_MESSAGE = "MSG";
+
+    private static final String CTX_CHANGEDPW_MSG = "updatedPWMsg";
+
+    // Init Parameter Constants
+    private static final String IP_REDIRECT_PATH = "redirectPath";
+
+    private static final String IP_RETURN_URL = "returnURL";
+
+    private static final String IP_TEMPLATE_LOCATION = "emailTemplateLocation";
+
+    private static final String IP_TEMPLATE_NAME = "emailTemplateName";
+
+    // Resource Bundle
+    private static final String RB_EMAIL_SUBJECT = "email.subject.forgotten.password";
+
+    private static final String PATH_SEPARATOR = "/";
+
+    /** email template to use for merging */
+    private String templateLocation;
+
+    private String templateName;
+
+    private JetspeedTemplateLocator templateLocator;
+
+    /** servlet path of the return url to be printed and href'd in email template */
+    private String returnUrlPath;
+
+    /** path where to redirect to after pressing submit on the form */
+    private String redirectPath;
+
+    /** localized emailSubject */
+    private String emailSubject = null;
+    
+    public void init(PortletConfig config) throws PortletException
+    {
+        super.init(config);
+        admin = (PortalAdministration) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_PORTAL_ADMINISTRATION);
+        if (null == admin) { throw new PortletException(
+                "Failed to find the Portal Administration on portlet initialization"); }
+        userManager = (UserManager) getPortletContext().getAttribute(
+                CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+        if (null == userManager) { throw new PortletException(
+                "Failed to find the User Manager on portlet initialization"); }
+
+        this.returnUrlPath = config.getInitParameter(IP_RETURN_URL);
+        this.redirectPath = config.getInitParameter(IP_REDIRECT_PATH);
+        this.templateLocation = config.getInitParameter(IP_TEMPLATE_LOCATION);
+        if (templateLocation == null)
+        {
+            templateLocation = "/WEB-INF/view/userreg/";
+        }
+        templateLocation = getPortletContext().getRealPath(templateLocation);
+        this.templateName = config.getInitParameter(IP_TEMPLATE_NAME);
+        if (templateName == null)
+        {
+            templateName = "forgottenPasswdEmail.vm";
+        }
+        
+        ArrayList roots = new ArrayList(1);
+        roots.add(templateLocation);
+
+        try
+        {
+            templateLocator = new JetspeedTemplateLocator(roots, "email", getPortletContext().getRealPath("/"));
+            templateLocator.start();
+        }
+        catch (FileNotFoundException e)
+        {
+            throw new PortletException("Could not start the template locator.", e);
+        }
+
+        
+    }
+
+    private boolean isValidGUID(String guid)
+    {
+        Map map = admin.getNewLoginInfo(guid);
+        
+        if (map != null) { return true; }
+        return false;
+    }
+
+    private boolean updatePasswordFromGUID(String guid)
+    {
+        Map map = admin.getNewLoginInfo(guid);
+        
+        String userName = (String) map.get("user.name");
+        String newPassword = (String) map.get("password");
+
+        // Here's where a break should be.   The following code should be put into the RETURN portlet
+        try
+        {
+            User user = userManager.getUser(userName);
+            PasswordCredential pwc = userManager.getPasswordCredential(user);
+            pwc.setPassword(null, newPassword);
+            pwc.setUpdateRequired(true);
+            userManager.storePasswordCredential(pwc);
+            
+            // if we got here stuff is changed... removed the key from the map
+            admin.removeNewLoginInfo(guid);
+        } catch (SecurityException e)
+        {
+            return false;
+        }
+        return true;
+    }
+
+    public void doView(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException
+    {
+        response.setContentType("text/html");
+        Context context = getContext(request);
+        String email = request.getParameter(RP_EMAIL_ADDRESS);
+        String guid = request.getParameter("guid");
+
+        ResourceBundle resource = getPortletConfig().getResourceBundle(request.getLocale());
+
+        if (guid != null) 
+        {
+            if(isValidGUID(guid)) 
+            {
+                try
+                {
+                    updatePasswordFromGUID(guid);
+                    context
+                            .put(CTX_CHANGEDPW_MSG, resource.getString("forgotten.successful_pw_update"));
+                } catch (Exception e)
+                {
+                    context.put(CTX_MESSAGE,resource.getString("forgotten.unable_to_update_pw"));
+                }
+            } else {
+                // invalid GUID
+                context
+                .put(CTX_CHANGEDPW_MSG,resource.getString("forgotten.password_update_link_invalid"));
+            }
+        } else {
+            // might be returning from initial request
+            context.put(CTX_CHANGEDPW_MSG,consumeRenderMessage(request, MSG_CHANGEDPW_MSG));
+        }
+        context.put(CTX_EMAIL_ADDRESS, email);
+        context.put(CTX_MESSAGE, consumeRenderMessage(request, MSG_MESSAGE));
+        super.doView(request, response);
+    }
+
+    public static String makeGUID(String user, String newpw)
+    {
+        // This is a quicky version
+        long num = (long) user.hashCode() + (long) newpw.hashCode(); //  Possible collisions here...
+        long d = new Date().getTime();
+        long val = num * d;
+        String retval = Long.toHexString(val);
+        return retval;
+    }
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws PortletException, IOException
+    {
+        List errors = new LinkedList();
+
+        String email = request.getParameter(RP_EMAIL_ADDRESS);
+        Locale locale = request.getLocale();
+
+        ResourceBundle resource = getPortletConfig().getResourceBundle(locale);
+
+        // validation
+        if (!ValidationHelper.isEmailAddress(email, true, 80))
+        {
+            errors.add(resource.getString("forgotten.invalid_email_format_entered"));
+        }
+
+        if (errors.size() > 0)
+        {
+            publishRenderMessage(request, MSG_MESSAGE, errors);
+            return;
+        }
+
+        User user = null;
+        try
+        {
+            user = admin.lookupUserFromEmail(email);
+        } catch (Exception e)
+        {
+            publishRenderMessage(
+                    request,
+                    MSG_MESSAGE,
+                    makeMessage(resource.getString("forgotten.email_address_not_found")));
+            return;
+        }
+
+        try
+        {
+            String userName = user.getName();
+
+            String newPassword = admin.generatePassword();
+
+            String urlGUID = makeGUID(userName, newPassword);
+
+            Map<String, String> userAttributes = new HashMap<String, String>();
+            Map<String, String> userInfoMap = user.getInfoMap();
+            
+            for (Map.Entry<String, String> entry : userInfoMap.entrySet())
+            {
+                userAttributes.put(entry.getKey(), entry.getValue());
+            }
+
+            // special attributes
+            userAttributes.put(CTX_RETURN_URL, generateReturnURL(request,
+                    response, urlGUID));
+            userAttributes.put(CTX_NEW_PASSWORD, newPassword);
+            userAttributes.put(CTX_USER_NAME, userName);
+
+            String templ = getTemplatePath(request, response);
+            
+            if (templ == null) 
+            { 
+                throw new Exception("email template not available"); 
+            }
+            admin.sendEmail(this.getPortletConfig(), email,
+                    getEmailSubject(request),templ, userAttributes);
+
+            //TODO this is currently hacked with a hashmap... needs to move to either a DB table
+            // or to some sort of credential
+            Map<String, String> map = new HashMap<String, String>();
+            map.put("user.name",userName);
+            map.put("password",newPassword);
+            admin.putNewLoginInfo(urlGUID, map);
+
+            publishRenderMessage(
+                    request,
+                    MSG_CHANGEDPW_MSG,
+                    makeMessage(resource.getString("an_email_has_been_sent")));
+            
+            response.sendRedirect(generateRedirectURL(request, response));
+        } 
+        catch (AdministrationEmailException e)
+        {
+            publishRenderMessage(request, CTX_MESSAGE, makeMessage(e
+                    .getMessage()));
+        } 
+        catch (Exception e)
+        {
+            publishRenderMessage(request, CTX_MESSAGE,
+                    makeMessage(resource.getString("failed_to_send") + e.toString()));
+        }
+
+    }
+
+    protected String getEmailSubject(PortletRequest request)
+    {
+        ResourceBundle resource = getPortletConfig().getResourceBundle(
+                request.getLocale());
+        try
+        {
+            this.emailSubject = resource.getString(RB_EMAIL_SUBJECT);
+        } catch (Exception e)
+        {
+            //TODO  report missing resource somehow
+        }
+        if (this.emailSubject == null)
+                this.emailSubject = "Password Notification";
+        return this.emailSubject;
+    }
+
+    protected String generateReturnURL(PortletRequest request,
+                                       PortletResponse response,
+                                       String urlGUID)
+    {
+        String fullPath = this.returnUrlPath + "?guid=" + urlGUID; 
+        // NOTE: getPortalURL will encode the fullPath for us
+        String url = admin.getPortalURL(request, response, fullPath);
+        return url;
+    }
+
+    protected String generateRedirectURL(PortletRequest request,
+                                         PortletResponse response)
+                                         
+    {
+        return admin.getPortalURL(request, response, this.redirectPath);
+    }
+    
+    protected List makeMessage(String msg)
+    {
+        List errors = new LinkedList();
+        errors.add(msg);
+        return errors;
+    }
+    
+    protected String getTemplatePath(ActionRequest request, ActionResponse response)
+    {
+        if (templateLocator == null)
+        {
+            return templateLocation + PATH_SEPARATOR + templateName;
+        }
+
+        RequestContext requestContext = (RequestContext) request
+                .getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        Locale locale = request.getLocale();
+
+        try
+        {
+            LocatorDescriptor locator = templateLocator.createLocatorDescriptor("email");
+            locator.setName(templateName);
+            locator.setMediaType(requestContext.getMediaType());
+            locator.setLanguage(locale.getLanguage());
+            locator.setCountry(locale.getCountry());
+            TemplateDescriptor template = templateLocator.locateTemplate(locator);
+
+            return template.getAppRelativePath();
+        }
+        catch (TemplateLocatorException e)
+        {
+            return templateLocation + PATH_SEPARATOR + templateName;
+        }
+    }
+
+}

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/ForgottenPasswordPortlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/UserRegistrationPortlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_de.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_de.properties?rev=725991&r1=725990&r2=725991&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_de.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_de.properties Fri Dec 12 05:05:25 2008
@@ -3,27 +3,27 @@
 # 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.
-#
-# LOCALIZATION MAINTAINER:
-#   Thorsten Berger <jetspeed@thorsten-berger.net>
-
-forgotten.successful_pw_update = Ihr Passwort wurde aktualisiert. Bitte loggen Sie sich mit Ihrem neuen Passwort ein.
-forgotten.unable_to_update_pw=Ihr Passwort konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut.
-forgotten.password_update_link_invalid=Dieser Aktivierungslink ist ung\u00fcltig.
-forgotten.invalid_email_format_entered=Bitte geben Sie eine korrekte eMail-Adresse ein.
-forgotten.email_address_not_found=Ihre eMail-Adresse wurde nicht gefunden. Bitte \u00fcberpr\u00fcfen Sie Ihre Eingabe.
-an_email_has_been_sent=Es wurde ein eMail an Ihre Adresse gesendet. Bitte benutzen Sie den darin enthaltenen Aktivierungslink.
-email.subject.forgotten.password=Passwort-Benachrichtigung
-failed_to_send=Passwort konnte nicht gesendet werden:
-page.message=Falls Sie Ihr Passwort vergessen haben, kann Ihnen ein neues erstellt und an Ihre eMail-Adresse gesendet werden. Sie m\u00fcssen die Adresse eingeben, mit der Sie sich hier registriert haben. 
-page.email=eMail-Adresse:				
-page.button=Neues Passwort anfordern
+# 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.
+#
+# LOCALIZATION MAINTAINER:
+#   Thorsten Berger <jetspeed@thorsten-berger.net>
+
+forgotten.successful_pw_update = Ihr Passwort wurde aktualisiert. Bitte loggen Sie sich mit Ihrem neuen Passwort ein.
+forgotten.unable_to_update_pw=Ihr Passwort konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut.
+forgotten.password_update_link_invalid=Dieser Aktivierungslink ist ung\u00fcltig.
+forgotten.invalid_email_format_entered=Bitte geben Sie eine korrekte eMail-Adresse ein.
+forgotten.email_address_not_found=Ihre eMail-Adresse wurde nicht gefunden. Bitte \u00fcberpr\u00fcfen Sie Ihre Eingabe.
+an_email_has_been_sent=Es wurde ein eMail an Ihre Adresse gesendet. Bitte benutzen Sie den darin enthaltenen Aktivierungslink.
+email.subject.forgotten.password=Passwort-Benachrichtigung
+failed_to_send=Passwort konnte nicht gesendet werden:
+page.message=Falls Sie Ihr Passwort vergessen haben, kann Ihnen ein neues erstellt und an Ihre eMail-Adresse gesendet werden. Sie m\u00fcssen die Adresse eingeben, mit der Sie sich hier registriert haben. 
+page.email=eMail-Adresse:				
+page.button=Neues Passwort anfordern

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_de.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_el.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_el.properties?rev=725991&r1=725990&r2=725991&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_el.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_el.properties Fri Dec 12 05:05:25 2008
@@ -3,28 +3,28 @@
 # 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.
-# native2ascii ForgottenPasswordResources_el.properties.orig ForgottenPasswordResources_el.properties
-# LOCALIZATION MAINTAINER:
-
-javax.portlet.title=\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
-forgotten.successful_pw_update = Your password has been updated!  Please login using it!
-forgotten.unable_to_update_pw=unable to update your password, try again please
-forgotten.password_update_link_invalid=I'm sorry that change password link is invalid
-forgotten.invalid_email_format_entered=Please enter a valid Email address.
-forgotten.email_address_not_found=Sorry but we could not find this email address on file. Are you sure you typed it in correctly?
-an_email_has_been_sent=An email has been sent to you.  Please follow the link in the email
-email.subject.forgotten.password=Password Notification
-failed_to_send=Failed to send password:
-page.message=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c3\u03b1\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c6\u03cc\u03c1\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b1\u03af\u03c4\u03b7\u03c3\u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2 \u03c4\u03bf\u03c5 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2
-page.email=\u0395-mail:				
-page.button=\u0391\u03af\u03c4\u03b7\u03c3\u03b7
-
+# 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.
+# native2ascii ForgottenPasswordResources_el.properties.orig ForgottenPasswordResources_el.properties
+# LOCALIZATION MAINTAINER:
+
+javax.portlet.title=\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2
+forgotten.successful_pw_update = Your password has been updated!  Please login using it!
+forgotten.unable_to_update_pw=unable to update your password, try again please
+forgotten.password_update_link_invalid=I'm sorry that change password link is invalid
+forgotten.invalid_email_format_entered=Please enter a valid Email address.
+forgotten.email_address_not_found=Sorry but we could not find this email address on file. Are you sure you typed it in correctly?
+an_email_has_been_sent=An email has been sent to you.  Please follow the link in the email
+email.subject.forgotten.password=Password Notification
+failed_to_send=Failed to send password:
+page.message=\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b7\u03bb\u03b5\u03ba\u03c4\u03c1\u03bf\u03bd\u03b9\u03ba\u03ae \u03c3\u03b1\u03c2 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9 \u03c6\u03cc\u03c1\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b1\u03af\u03c4\u03b7\u03c3\u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2 \u03c4\u03bf\u03c5 \u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b1\u03c2
+page.email=\u0395-mail:				
+page.button=\u0391\u03af\u03c4\u03b7\u03c3\u03b7
+

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_el.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_en.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_en.properties?rev=725991&r1=725990&r2=725991&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_en.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_en.properties Fri Dec 12 05:05:25 2008
@@ -3,27 +3,27 @@
 # 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.
-#
-# LOCALIZATION MAINTAINER:
-
-forgotten.successful_pw_update = Your password has been updated!  Please login using it!
-forgotten.unable_to_update_pw=unable to update your password, try again please
-forgotten.password_update_link_invalid=I'm sorry that change password link is invalid
-forgotten.invalid_email_format_entered=Please enter a valid Email address.
-forgotten.email_address_not_found=Sorry but we could not find this email address on file. Are you sure you typed it in correctly?
-an_email_has_been_sent=An email has been sent to you.  Please follow the link in the email
-email.subject.forgotten.password=Password Notification
-failed_to_send=Failed to send password:
-page.message=If you have forgotten your password, we can create a new one and send it to you via your email address. You must enter the exact same email address with which you originally registered. 
-page.email=email address:				
-page.button=Request New Password
-
+# 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.
+#
+# LOCALIZATION MAINTAINER:
+
+forgotten.successful_pw_update = Your password has been updated!  Please login using it!
+forgotten.unable_to_update_pw=unable to update your password, try again please
+forgotten.password_update_link_invalid=I'm sorry that change password link is invalid
+forgotten.invalid_email_format_entered=Please enter a valid Email address.
+forgotten.email_address_not_found=Sorry but we could not find this email address on file. Are you sure you typed it in correctly?
+an_email_has_been_sent=An email has been sent to you.  Please follow the link in the email
+email.subject.forgotten.password=Password Notification
+failed_to_send=Failed to send password:
+page.message=If you have forgotten your password, we can create a new one and send it to you via your email address. You must enter the exact same email address with which you originally registered. 
+page.email=email address:				
+page.button=Request New Password
+

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_en.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ko.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ua.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ua.properties?rev=725991&r1=725990&r2=725991&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ua.properties (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ua.properties Fri Dec 12 05:05:25 2008
@@ -3,27 +3,27 @@
 # 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.
-#
-# LOCALIZATION MAINTAINER:
-
-forgotten.successful_pw_update = \u0412\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439!  \u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0447\u0438 \u0439\u043e\u0433\u043e!
-forgotten.unable_to_update_pw=\u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0449\u0435 \u0440\u0430\u0437
-forgotten.password_update_link_invalid=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u0437\u043c\u0456\u043d\u0438 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435\u0434\u0456\u0439\u0441\u043d\u0435
-forgotten.invalid_email_format_entered=\u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u0434\u0456\u0439\u0441\u043d\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443.
-forgotten.email_address_not_found=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0437\u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b \u0437 \u0446\u0456\u0454\u044e email \u0430\u0434\u0440\u0435\u0441\u043e\u044e. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0457\u0457 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e?
-an_email_has_been_sent=Email \u0432\u0430\u043c \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u043d\u043e.  \u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u0435\u0440\u0435\u0439\u0434\u0456\u0442\u044c \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c \u0443 \u043b\u0438\u0441\u0442\u0456
-email.subject.forgotten.password=\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f \u043f\u0440\u043e \u043f\u0430\u0440\u043e\u043b\u044c
-failed_to_send=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c:
-page.message=\u042f\u043a\u0449\u043e \u0432\u0438 \u0437\u0430\u0431\u0443\u043b\u0438 \u0441\u0432\u0456\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043c\u0438 \u043c\u043e\u0436\u0435\u043c\u043e \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0456 \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u043d\u0430 \u0432\u0430\u0448\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443. \u0412\u0438 \u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u0432\u043a\u0430\u0437\u0430\u0442\u0438 \u0442\u0443 \u0441\u0430\u043c\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443, \u044f\u043a\u0443 \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u043b\u0438 \u043f\u0456\u0434 \u0447\u0430\u0441 \u0440\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u0457. 
-page.email=email \u0430\u0434\u0440\u0435\u0441\u0430:				
-page.button=\u041f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c
-
+# 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.
+#
+# LOCALIZATION MAINTAINER:
+
+forgotten.successful_pw_update = \u0412\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439!  \u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u0443\u0432\u0456\u0439\u0434\u0456\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0447\u0438 \u0439\u043e\u0433\u043e!
+forgotten.unable_to_update_pw=\u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u043e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0449\u0435 \u0440\u0430\u0437
+forgotten.password_update_link_invalid=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u0437\u043c\u0456\u043d\u0438 \u043f\u0430\u0440\u043e\u043b\u044f \u043d\u0435\u0434\u0456\u0439\u0441\u043d\u0435
+forgotten.invalid_email_format_entered=\u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0432\u0435\u0434\u0456\u0442\u044c \u0434\u0456\u0439\u0441\u043d\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443.
+forgotten.email_address_not_found=\u0412\u0438\u0431\u0430\u0447\u0442\u0435, \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0437\u043d\u0430\u0439\u0442\u0438 \u0444\u0430\u0439\u043b \u0437 \u0446\u0456\u0454\u044e email \u0430\u0434\u0440\u0435\u0441\u043e\u044e. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0457\u0457 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e?
+an_email_has_been_sent=Email \u0432\u0430\u043c \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u043d\u043e.  \u0411\u0443\u043b\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u0435\u0440\u0435\u0439\u0434\u0456\u0442\u044c \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c \u0443 \u043b\u0438\u0441\u0442\u0456
+email.subject.forgotten.password=\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f \u043f\u0440\u043e \u043f\u0430\u0440\u043e\u043b\u044c
+failed_to_send=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c:
+page.message=\u042f\u043a\u0449\u043e \u0432\u0438 \u0437\u0430\u0431\u0443\u043b\u0438 \u0441\u0432\u0456\u0439 \u043f\u0430\u0440\u043e\u043b\u044c, \u043c\u0438 \u043c\u043e\u0436\u0435\u043c\u043e \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0456 \u0432\u0456\u0434\u0456\u0441\u043b\u0430\u0442\u0438 \u0439\u043e\u0433\u043e \u043d\u0430 \u0432\u0430\u0448\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443. \u0412\u0438 \u043e\u0431\u043e\u0432'\u044f\u0437\u043a\u043e\u0432\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u0432\u043a\u0430\u0437\u0430\u0442\u0438 \u0442\u0443 \u0441\u0430\u043c\u0443 email \u0430\u0434\u0440\u0435\u0441\u0443, \u044f\u043a\u0443 \u0432\u043a\u0430\u0437\u0443\u0432\u0430\u043b\u0438 \u043f\u0456\u0434 \u0447\u0430\u0441 \u0440\u0435\u0454\u0441\u0442\u0440\u0430\u0446\u0456\u0457. 
+page.email=email \u0430\u0434\u0440\u0435\u0441\u0430:				
+page.button=\u041f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c
+

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/registration/resources/ForgottenPasswordResources_ua.properties
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message