Argh!
There was a bug in the PopulateLabels method in ChangePassword.aspx.cs, if you enable Access keys in web.config it was working fine but the else branch of the code was wrong in the way it was getting a reference to the buttons. The complete corrected method looks like this:
private void PopulateLabels()
{
Button changePasswordButton = (Button)ChangePassword1.ChangePasswordTemplateContainer.FindControl("ChangePasswordPushButton");
Button cancelButton = (Button)ChangePassword1.ChangePasswordTemplateContainer.FindControl("CancelPushButton");
if (ConfigurationManager.AppSettings["UseShortcutKeys"].ToLower() == "true")
{
if (changePasswordButton != null)
{
changePasswordButton.AccessKey = GetGlobalResourceObject("Resource", "ChangePasswordButtonAccessKey").ToString();
changePasswordButton.Text = GetGlobalResourceObject("Resource", "UserChangePasswordLabel").ToString()
+ " ["
+ GetGlobalResourceObject("Resource", SiteUtils.GetBrowserAccessKeyResourceKey())
+ "+" + changePasswordButton.AccessKey + "]";
}
if (cancelButton != null)
{
cancelButton.AccessKey = GetGlobalResourceObject("Resource", "ChangePasswordCancelButtonAccessKey").ToString();
cancelButton.Text = GetGlobalResourceObject("Resource", "RegisterCancelButton").ToString()
+ " ["
+ GetGlobalResourceObject("Resource", SiteUtils.GetBrowserAccessKeyResourceKey())
+ "+" + cancelButton.AccessKey + "]";
}
}
else
{
if (changePasswordButton != null)
{
changePasswordButton.Text = GetGlobalResourceObject("Resource", "UserChangePasswordLabel").ToString();
}
if (cancelButton != null)
{
cancelButton.Text = GetGlobalResourceObject("Resource", "RegisterCancelButton").ToString();
}
}
this.ChangePassword1.CancelDestinationPageUrl = SiteUtils.GetSiteRoot() + "/Secure/UserProfile.aspx";
this.ChangePassword1.ChangePasswordFailureText
= GetGlobalResourceObject("Resource", "UserChangePasswordFailureText").ToString();
this.ChangePassword1.ConfirmPasswordCompareErrorMessage
= GetGlobalResourceObject("Resource", "RegisterPasswordMustMatchConfirmMessage").ToString();
this.ChangePassword1.ConfirmPasswordRequiredErrorMessage
= GetGlobalResourceObject("Resource", "RegisterConfirmPasswordRequiredMessage").ToString();
this.ChangePassword1.ContinueDestinationPageUrl = SiteUtils.GetSiteRoot();
this.ChangePassword1.NewPasswordRequiredErrorMessage
= GetGlobalResourceObject("Resource", "UserNewPasswordRequired").ToString();
this.ChangePassword1.PasswordRequiredErrorMessage
= GetGlobalResourceObject("Resource", "UserProfilePasswordRequired").ToString();
this.ChangePassword1.SuccessTitleText = String.Empty;
this.ChangePassword1.SuccessText = GetGlobalResourceObject("Resource", "UserChangePasswordSuccessText").ToString();
}
I'm going to make another incremental release sometime this week for a few bug fixes and some other little enhancements to the initial data setup that I've been working on.
Joe