. Added ability to change the users Name and Email to the User Options page.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3493 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2006-08-14 13:28:08 +00:00
parent 8511a27038
commit f3c54dc42f
6 changed files with 258 additions and 12 deletions

View File

@@ -890,6 +890,7 @@ dashlet_gettingstarted_desc=Displays helpful information for getting started wit
# User Console and Settings messages
title_user_console=User Options
title_edit_user_details=Edit User Details
user_console=User Options
user_console_info=User Options
user_console_description=Use this page to change your options and settings
@@ -899,6 +900,8 @@ change_my_password_description=Use this view to change your password
change_my_password_instructions=Enter your new password.
old_password=Old Password
new_password=New Password
edit_user_details=Edit User Details
edit_user_details_description=Use this view to change your user details and email address
# Workflow messages
start_workflow=Start Workflow

View File

@@ -64,6 +64,16 @@ public final class User
this.person = person;
}
/**
* Forces a clear of any cached or calcluated values
*/
public void reset()
{
this.fullName = null;
this.administrator = null;
this.preferences = null;
}
/**
* @return The user name
*/
@@ -115,7 +125,6 @@ public final class User
return this.ticket;
}
/**
* @return Returns the person NodeRef
*/

View File

@@ -16,6 +16,7 @@
*/
package org.alfresco.web.bean.users;
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
@@ -35,6 +36,7 @@ import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.ISO9075;
import org.alfresco.web.app.Application;
import org.alfresco.web.app.context.IContextListener;
@@ -389,6 +391,38 @@ public class UsersBean implements IContextListener
return outcome;
}
/**
* Action handler called for the OK button press
*/
public String changeUserDetails()
{
String outcome = DIALOG_CLOSE;
FacesContext context = FacesContext.getCurrentInstance();
try
{
Map<QName, Serializable> props = this.nodeService.getProperties(getPerson().getNodeRef());
props.put(ContentModel.PROP_FIRSTNAME,
(String)getPerson().getProperties().get(ContentModel.PROP_FIRSTNAME));
props.put(ContentModel.PROP_LASTNAME,
(String)getPerson().getProperties().get(ContentModel.PROP_LASTNAME));
props.put(ContentModel.PROP_EMAIL,
(String)getPerson().getProperties().get(ContentModel.PROP_EMAIL));
// persist changes
this.nodeService.setProperties(getPerson().getNodeRef(), props);
// if the above call was successful, then reset Person Node in the session
Application.getCurrentUser(context).reset();
}
catch (Throwable err)
{
Utils.addErrorMessage(MessageFormat.format(Application.getMessage(
context, Repository.ERROR_GENERIC), err.getMessage()), err );
}
return outcome;
}
/**
* Event handler called when the user wishes to search for a user

View File

@@ -603,6 +603,10 @@
<from-outcome>changePassword</from-outcome>
<to-view-id>/jsp/users/change-my-password.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>editUserDetails</from-outcome>
<to-view-id>/jsp/users/edit-user-details.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<!-- navigation rules for the New User wizard -->

View File

@@ -0,0 +1,196 @@
<%--
Copyright (C) 2005 Alfresco, Inc.
Licensed under the Mozilla Public License version 1.1
with a permitted attribution clause. You may obtain a
copy of the License at
http://www.alfresco.org/legal/license.txt
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.
--%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
<%@ page buffer="32kb" contentType="text/html;charset=UTF-8" %>
<%@ page isELIgnored="false" %>
<%@ page import="org.alfresco.web.ui.common.PanelGenerator" %>
<r:page titleId="title_edit_user_details">
<script language="JavaScript1.2">
window.onload = pageLoaded;
function pageLoaded()
{
document.getElementById("edit-user:first-name").focus();
updateButtonState();
}
function updateButtonState()
{
if (document.getElementById("edit-user:first-name").value.length == 0 ||
document.getElementById("edit-user:last-name").value.length == 0 ||
document.getElementById("edit-user:email").value.length == 0)
{
document.getElementById("edit-user:ok-button").disabled = true;
}
else
{
document.getElementById("edit-user:ok-button").disabled = false;
}
}
</script>
<f:view>
<%-- load a bundle of properties with I18N strings --%>
<f:loadBundle basename="alfresco.messages.webclient" var="msg"/>
<%-- set the form name here --%>
<h:form acceptCharset="UTF-8" id="edit-user">
<%-- Main outer table --%>
<table cellspacing="0" cellpadding="2">
<%-- Title bar --%>
<tr>
<td colspan="2">
<%@ include file="../parts/titlebar.jsp" %>
</td>
</tr>
<%-- Main area --%>
<tr valign="top">
<%-- Shelf --%>
<td>
<%@ include file="../parts/shelf.jsp" %>
</td>
<%-- Work Area --%>
<td width="100%">
<table cellspacing="0" cellpadding="0" width="100%">
<%-- Breadcrumb --%>
<%@ include file="../parts/breadcrumb.jsp" %>
<%-- Status and Actions --%>
<tr>
<td style="background-image: url(<%=request.getContextPath()%>/images/parts/statuspanel_4.gif)" width="4"></td>
<td bgcolor="#EEEEEE">
<%-- Status and Actions inner contents table --%>
<%-- Generally this consists of an icon, textual summary and actions for the current object --%>
<table cellspacing="4" cellpadding="0" width="100%">
<tr>
<td width="32">
<h:graphicImage id="wizard-logo" url="/images/icons/edituser_large.gif" />
</td>
<td>
<div class="mainTitle"><h:outputText value="#{msg.edit_user_details}" /></div>
<div class="mainSubText"><h:outputText value="#{msg.edit_user_details_description}" /></div>
</td>
</tr>
</table>
</td>
<td style="background-image: url(<%=request.getContextPath()%>/images/parts/statuspanel_6.gif)" width="4"></td>
</tr>
<%-- separator row with gradient shadow --%>
<tr>
<td><img src="<%=request.getContextPath()%>/images/parts/statuspanel_7.gif" width="4" height="9"></td>
<td style="background-image: url(<%=request.getContextPath()%>/images/parts/statuspanel_8.gif)"></td>
<td><img src="<%=request.getContextPath()%>/images/parts/statuspanel_9.gif" width="4" height="9"></td>
</tr>
<%-- Details --%>
<tr valign=top>
<td style="background-image: url(<%=request.getContextPath()%>/images/parts/whitepanel_4.gif)" width="4"></td>
<td>
<table cellspacing="0" cellpadding="3" border="0" width="100%">
<tr>
<td width="100%" valign="top">
<a:errors message="#{msg.error_wizard}" styleClass="errorMessage" />
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "white", "white"); %>
<table cellpadding="2" cellspacing="2" border="0" width="100%">
<tr>
<td colspan="2"><h:outputText value="#{msg.person_properties}" /></td>
</tr>
<tr><td colspan="2" class="paddingRow"></td></tr>
<tr>
<td><h:outputText value="#{msg.first_name}"/>:</td>
<td>
<h:inputText id="first-name" value="#{UsersBean.person.properties.firstName}" size="35" maxlength="1024" onkeyup="updateButtonState();" onchange="updateButtonState();" />&nbsp;*
</td>
</tr>
<tr>
<td><h:outputText value="#{msg.last_name}"/>:</td>
<td>
<h:inputText id="last-name" value="#{UsersBean.person.properties.lastName}" size="35" maxlength="1024" onkeyup="updateButtonState();" onchange="updateButtonState();" />&nbsp;*
</td>
</tr>
<tr>
<td><h:outputText value="#{msg.email}"/>:</td>
<td>
<h:inputText id="email" value="#{UsersBean.person.properties.email}" size="35" maxlength="1024" onkeyup="updateButtonState();" onchange="updateButtonState();" />&nbsp;*
</td>
</tr>
</table>
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "white"); %>
</td>
<td valign="top">
<% PanelGenerator.generatePanelStart(out, request.getContextPath(), "blue", "#D3E6FE"); %>
<table cellpadding="1" cellspacing="1" border="0">
<tr>
<td align="center">
<h:commandButton value="#{msg.finish_button}" id="ok-button" action="#{UsersBean.changeUserDetails}" styleClass="wizardButton" disabled="true" />
</td>
</tr>
<tr><td class="wizardButtonSpacing"></td></tr>
<tr>
<td align="center">
<h:commandButton value="#{msg.cancel_button}" action="dialog:close" styleClass="wizardButton" immediate="true" />
</td>
</tr>
</table>
<% PanelGenerator.generatePanelEnd(out, request.getContextPath(), "blue"); %>
</td>
</tr>
</table>
</td>
<td style="background-image: url(<%=request.getContextPath()%>/images/parts/whitepanel_6.gif)" width="4"></td>
</tr>
<%-- separator row with bottom panel graphics --%>
<tr>
<td><img src="<%=request.getContextPath()%>/images/parts/whitepanel_7.gif" width="4" height="4"></td>
<td width="100%" align="center" style="background-image: url(<%=request.getContextPath()%>/images/parts/whitepanel_8.gif)"></td>
<td><img src="<%=request.getContextPath()%>/images/parts/whitepanel_9.gif" width="4" height="4"></td>
</tr>
</table>
</td>
</tr>
</table>
</h:form>
</f:view>
<script>
updateButtonState();
</script>
</r:page>

View File

@@ -97,12 +97,12 @@
<%-- wrapper comment used by the panel to add additional component facets --%>
<h:panelGroup id="mydetails-panel-facets">
<f:facet name="title">
<%--<r:permissionEvaluator value="#{DocumentDetailsBean.document}" allow="Write" id="evalChange">--%>
<a:actionLink id="actModify1" value="#{msg.modify}" action="" showLink="false" image="/images/icons/Change_details.gif" />
<%--</r:permissionEvaluator>--%>
<a:booleanEvaluator value="#{NavigationBean.isGuest == false}">
<a:actionLink value="#{msg.modify}" action="dialog:editUserDetails" showLink="false" image="/images/icons/Change_details.gif" />
</a:booleanEvaluator>
</f:facet>
</h:panelGroup>
<a:panel label="#{msg.my_details}" id="mydetails-panel" progressive="true" facetsId="mydetails-panel-facets"
<a:panel label="#{msg.my_details}" id="mydetails-panel" facetsId="mydetails-panel-facets"
border="white" bgcolor="white" titleBorder="blue" titleBgcolor="#D3E6FE">
<table cellspacing=2 cellpadding=2 border=0>
<tr>
@@ -138,12 +138,12 @@
<h:panelGroup id="pref-panel-facets">
<f:facet name="title">
<%--<r:permissionEvaluator value="#{DocumentDetailsBean.document}" allow="Write" id="evalChange">--%>
<a:actionLink id="actModify2" value="#{msg.modify}" action="" showLink="false" image="/images/icons/Change_details.gif" />
<%--</r:permissionEvaluator>--%>
<a:booleanEvaluator value="#{NavigationBean.isGuest == false}">
<a:actionLink value="#{msg.modify}" action="" showLink="false" image="/images/icons/Change_details.gif" />
</a:booleanEvaluator>
</f:facet>
</h:panelGroup>
<a:panel label="#{msg.general_pref}" id="pref-panel" progressive="true" facetsId="pref-panel-facets"
<a:panel label="#{msg.general_pref}" id="pref-panel" facetsId="pref-panel-facets"
border="white" bgcolor="white" titleBorder="blue" titleBgcolor="#D3E6FE">
<table width=100% cellspacing=2 cellpadding=2 border=0>
</table>