Constants.PROP_USER_MIDDLENAME

cancel
Showing results for 
Search instead for 
Did you mean: 
jaime_martin
Member II

Constants.PROP_USER_MIDDLENAME

Hola:
Estoy creando usuarios desde Java y veo que en constantes hay una propiedad que parece que no se muestra:
org.alfresco.webservice.util.Constants.PROP_USER_MIDDLENAME.
En la pantalla de system users en la columna name se muestran los valores de
Constants.PROP_USER_FIRSTNAME y Constants.PROP_USER_LASTNAME
pero si desde Java asigno un valor también a Constants.PROP_USER_MIDDLENAME de esta manera:

new NamedValue(Constants.PROP_USER_MIDDLENAME, false,
                    middleName, null),
no se muestra nunca.

En la API no hay explicación de la misma:
http://kickjava.com/src/org/alfresco/webservice/util/Constants.java.htm

Sé bien que los de los dos apellidos tan típicos en España no se usan en otros muchos sitios, no obstante ya que veo que existe esa propiedad en Constants me gustaría saber si hay forma de mostrarla en la columna Name. De lo malo siempre se puede asignar los dos apellidos separados por un espacio a LastName, pero si es fácil quedaría más elegante usar esta propiedad.
gracias!
2 Replies
ajv
Member II

Re: Constants.PROP_USER_MIDDLENAME

Hola Jaime,

El modelo de contenido de Alfresco viene preparado para mantener las diferentes propiedades de las personas:
<type name="cm:person">
         <title>Person</title>
         <parent>sys:base</parent>
         <properties>
</property>
             …
             <property name="cm:firstName">
               <type>d:text</type>
               <mandatory>true</mandatory>
            </property>
            <property name="cm:lastName">
               <type>d:text</type>
               <mandatory>true</mandatory>
            </property>
            <property name="cm:middleName">
               <type>d:text</type>
            </property>
            <property name="cm:email">
               <type>d:text</type>
            </property>
             …
Por tanto, a priori no hay problema para introducir de forma separada (estructurada) los apellidos de las personas.
El problema está en que, como lo habitual es contar con First y Last name (un apellido) pues las ventanas de la aplicación están enfocadas a mostrar únicamente first y lastname.
Por ejemplo, si te fijas en el jsp de la consola de usuario (user-console.jsp):
<tr>
<td class="propertiesLabel">
<h:outputText value="#{msg.first_name}" />:
</td>
<td>
<h:outputText value="#{UsersBean.person.properties.firstName}" />
</td>
</tr>
<tr>
<td class="propertiesLabel">
<h:outputText value="#{msg.last_name}" />:
</td>
<td>
<h:outputText value="#{UsersBean.person.properties.lastName}" />
</td>
</tr>
Pasa del nombre al último apellido…por lo que tendrías que modificar los jsp donde apareciese únicamente el lastname.

Y no sólo eso: Hay sitios donde muestra el nombre "completo" (por ejemplo, en el jsp users.jsp, que es la ventana que se muestra en la Gestión de usuarios del panel de admin). El nombre completo está formado únicamente por la concatenación de First + LastName:
<a:richList id="users-list" binding="#{UsersBean.usersRichList}" viewMode="details" pageSize="10"
styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow" altRowStyleClass="recordSetRowAlt" width="100%"
value="#{UsersBean.users}" var="r" initialSortColumn="userName" initialSortDescending="true">

<%– Primary column with full name –%>
<a:column primary="true" width="200" style="padding:2px;text-align:left">
<f:facet name="header">
<a:sortLink label="#{msg.name}" value="fullName" mode="case-insensitive" styleClass="header"/>
</f:facet>
<f:facet name="small-icon">
<h:graphicImage url="/images/icons/person.gif" />
</f:facet>
<h:outputText value="#{r.fullName}" />
</a:column>

<%– Username column –%>
Si nos fijamos en la propiedad value del elemento a:richList, vemos que llama al método getUsers() del UsersBean…mirando el código fuente (org.alfresco.web.bean.users.UsersBean) encontramos las siguientes líneas:


Map<String, Object> props = node.getProperties();
props.put("fullName", ((String)props.get("firstName")) + ' ' + ((String)props.get("lastName")));


Por tanto, no sólo habría que modificar la capa de presentación (los jsp's)…sino también el "controlador" o el bean.
No supone mucho esfuerzo (podrías crearte un bean propio que heredase del UsersBean y sobreescribiese el método en cuestión)…pero hay que tocar cosas.

Otra opción, que no sé si en tu caso es posible, es tirar por los web scripts: Definirte una URL, que un javascript te consulte las personas que cumplan los criterios que te interesen, y una plantilla se encarge de mostrar las propiedades (First, Middle y Last).

Y si no, pues en Lastname pones los 2 apellidos concatenados  :lol:

Bueno, espero que más o menos ta haya aclarado tus dudas Smiley Very Happy

Hasta pronto!!
jaime_martin
Member II

Re: Constants.PROP_USER_MIDDLENAME

Muchas gracias Adrián, tomo buena nota de tu explicación. De momento creo que no voy a tocar tanto que ahora mismo no me merece la pena por otras prioridades, pero si llega el caso ya sé por donde tirar.  :wink:
Gracias!