Modificar user profile

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

Modificar user profile

Buenas,

necesito añadir algunas propiedades al perfil del usuario, tanto en alfresco como en share (slingshot), alguien sabe como se hace? o alguna wiki o algo?

Gracias
15 Replies
dacedos
Member II

Re: Modificar user profile

a lo mejor tendrias que extender el modelo por defecto.

el modelo lo puedes encontrar en WEB-INF/classes/Alfresco/model/contentModel.xml busca el user.

Luego deberias hacerlas visibles a traves del web-client-config-custom. Hay un buen hilo de como tocar modelos en este mismo foro
fegor
Senior Member

Re: Modificar user profile

Efectivamente tienes que extender el modelo de datos y heredar de "cmSmiley Tongueerson". También lo puedes hacer directamente en el contentModel.xml pero no es nada recomendable.

Este tipo en la versión 3.2 es el siguiente:

      <type name="cm:person">^M
         <title>Person</title>^M
         <parent>cm:authority</parent>^M
         <properties>^M
            <!– The tokenisation set here is ignored - it is fixed for this type –>^M
            <!– This is so you can not break person lookup –>^M
            <property name="cm:userName">^M
               <type>d:text</type>^M
               <mandatory>true</mandatory>^M
               <constraints>^M
                  <constraint ref="cm:userNameConstraint" />^M
               </constraints>^M
            </property>^M
            <property name="cm:homeFolder">^M
               <type>d:noderef</type>^M
               <mandatory>true</mandatory>^M
            </property>^M
             <property name="cm:firstName">^M
               <type>d:text</type>^M
               <mandatory>true</mandatory>^M
            </property>^M
            <property name="cm:lastName">^M
               <type>d:text</type>^M
               <mandatory>true</mandatory>^M
            </property>^M
            <property name="cm:middleName">^M
               <type>d:text</type>^M
            </property>^M
            <property name="cm:email">^M
               <type>d:text</type>^M
            </property>^M
            <property name="cm:organizationId">^M
               <type>d:text</type>^M
            </property>^M
            <property name="cm:homeFolderProvider">^M
               <type>d:text</type>^M
            </property>^M
               <type>d:text</type>^M
            </property>^M
            <property name="cm:defaultHomeFolderPath">^M
               <type>d:text</type>^M
            </property>^M
            <property name="cm:presenceProvider">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:presenceUsername">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:organization">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:jobtitle">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:location">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:persondescription">^M
                <type>d:content</type>^M
            </property>^M
            <property name="cm:telephone">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:mobile">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companyaddress1">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companyaddress2">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companyaddress3">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companypostcode">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companytelephone">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companyfax">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:companyemail">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:skype">^M
                <type>d:text</type>^M
            </property>^M
            <property name="cm:instantmsg">^M
                <type>d:text</type>^M
            </property>^M
            ^M
            <!– system maintained values –>
            <property name="cm:sizeCurrent">
                <type>d:long</type>
                <protected>true</protected>
                <mandatory enforced="true">true</mandatory>
            </property>
            <property name="cm:sizeQuota">
                <type>d:long</type>^M
                <protected>true</protected>
            </property>^M
         </properties>^M
         ^M
         <associations>^M
            <association name="cm:avatar">^M
               <source>^M
                  <role>cm:avatarOf</role>^M
                  <mandatory>false</mandatory>^M
                  <many>false</many>^M
               </source>^M
               <target>^M
                  <class>cm:content</class>^M
                  <role>cm:hasAvatar</role>^M
                  <mandatory>false</mandatory>^M
                  <many>false</many>^M
               </target>^M
            </association>^M
         </associations>^M
      </type>^M

Como se ve, hay más propiedades de las que se visualizan, para visualizar cualquiera solo hay que ponerla en el fichero web-client-config-custom.xml, por ejemplo si queremos que visualize y que se pueda modificar la propiedad "telephone":


   <config evaluator="node-type" condition="cm:person">
      <property-sheet>
         <show-property name="cm:telephone" />
      </property-sheet>
   </config>

Un problema más complicado es el hacer que aparezcan los campos en el asistente de creación/edición del usuario, ya que está dentro de un bean.

Un saludo.
ruben_arjonilla
Member II

Re: Modificar user profile

muchas gracias, lo pruebo enseguida y os comento que tal me ha ido
ruben_arjonilla
Member II

Re: Modificar user profile

A ver, tal como me has dicho fgonzalez, me sale el telefono.

Lo que no me sale es si quiero extender la persona, hay algo que seguramente hago mal.
Cuando quiero extender un tipo, como lo tengo que definir en el customModel.xml?
imagina que quiero añadir la propiedad "email2"

esto es como lo tengo yo

      <type name="custom:person">
         <title>Person</title>
         <parent>cm:authority</parent>
         <properties>

            <!– The tokenisation set here is ignored - it is fixed for this type –>
            <!– This is so you can not break person lookup –>

            <property name="custom:userName">
               <type>d:text</type>
               <mandatory>true</mandatory>
               <constraints>
                  <constraint ref="cm:userNameConstraint" />
               </constraints>
            </property>

            <property name="custom:homeFolder">
               <type>d:noderef</type>
               <mandatory>true</mandatory>
            </property>
             <property name="custom:firstName">
               <type>d:text</type>
               <mandatory>true</mandatory>
            </property>
            <property name="custom:lastName">
               <type>d:text</type>
               <mandatory>true</mandatory>
            </property>
            <property name="custom:middleName">
               <type>d:text</type>
            </property>
            <property name="custom:email">
               <type>d:text</type>
            </property>
            <property name="custom:organizationId">
               <type>d:text</type>
            </property>
            <property name="custom:homeFolderProvider">
               <type>d:text</type>
            </property>
            <property name="custom:defaultHomeFolderPath">
               <type>d:text</type>
            </property>
            <property name="custom:presenceProvider">
               <type>d:text</type>
            </property>
            <property name="custom:presenceUsername">
               <type>d:text</type>
            </property>
            <property name="custom:organization">
               <type>d:text</type>
            </property>
            <property name="custom:jobtitle">
               <type>d:text</type>
            </property>
            <property name="custom:location">
               <type>d:text</type>
            </property>
            <property name="custom:persondescription">
               <type>d:content</type>
            </property>
            <property name="custom:telephone">
               <type>d:text</type>
            </property>
            <property name="custom:mobile">
               <type>d:text</type>
            </property>
            <property name="custom:companyaddress1">
               <type>d:text</type>
            </property>
            <property name="custom:companyaddress2">
               <type>d:text</type>
            </property>
            <property name="custom:companyaddress3">
               <type>d:text</type>
            </property>
            <property name="custom:companypostcode">
               <type>d:text</type>
            </property>
            <property name="custom:companytelephone">
               <type>d:text</type>
            </property>
            <property name="custom:companyfax">
               <type>d:text</type>
            </property>
            <property name="custom:companyemail">
               <type>d:text</type>
            </property>
            <property name="custom:skype">
               <type>d:text</type>
            </property>
            <property name="custom:instantmsg">
               <type>d:text</type>
            </property>
            <property name="custom:googleusername">
      <type>d:text</type>
            </property>
            <property name="custom:sizeCurrent">
                <type>d:long</type>
                <protected>true</protected>
                <mandatory enforced="true">true</mandatory>
            </property>
            <property name="custom:sizeQuota">
                <type>d:long</type>
                <protected>true</protected>
            </property>

[b]       <!– añado mi propiedad –>
            <property name="custom:email2">
                <type>d:long</type>
                <protected>true</protected>
            </property>[/b]
         </properties>

         <associations>
            <association name="custom:avatar">
               <source>
                  <role>custom:avatarOf</role>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </source>
               <target>
                  <class>cm:content</class>
                  <role>custom:hasAvatar</role>
                  <mandatory>false</mandatory>
                  <many>false</many>
               </target>
            </association>
         </associations>

      </type>

y luego, en el web-client-config-custom.xml, añado esto:


<config evaluator="node-type" condition="custom:person">
      <property-sheet>
         <show-property name="custom:email2" display-label-id="Email2" />
      </property-sheet>
   </config>

tambien tengo un fichero con los textos

De esta manera no me sale nada al modificar el usuario, sin embargo, si no modifico el tipo, y solo añado el telefono como me has dicho, si que me sale, asi que entiendo que, o no extiendo bien el tipo persona, o no le digo que me muestre bien los tipos.
fegor
Senior Member

Re: Modificar user profile

Hombre, así de memoria (lo pongo directamente modificado de lo tuyo así que está sin probar) lo que haría sería extender el modelo y heredar de cmSmiley Tongueerson como:


<type name="custom:person">
         <title>Person personalizado</title>
         <parent>cm:person</parent>
         <properties>
           <property name="custom:email2">
               <type>d:text</type>
            </property>
         </properties>
</type>

Y luego ya puedes ponerlo en el web-client-config-custom.xml como lo has hecho. De todas formas así no te servirá ya que lo que te visualiza siempre es cmSmiley Tongueerson en esa hoja de propiedades.

Mejor añade al mismo cmSmiley Tongueerson el email2 como:


         …
         <properties>
           <property name="cm:email2">
               <type>d:text</type>
            </property>
         </properties>
         …

Espero que te sirva, un saludo.
ruben_arjonilla
Member II

Re: Modificar user profile

si que me sirve,

es precisamente lo que me temia, que por mucho que lo extendiera, siempre me acababa dando un "objeto" diferente a el que se usa en el usuario.

Porque supongo que no hay ninguna manera de decirle a alfresco que en vez de ir a buscar cmSmiley Tongueerson, vaya a buscar a mi customSmiley Tongueerson?
entiendo que debe haber alguna manera, aunque tambien entiendo que si la hay, sería muy complicado…

Bueno, muchisimas gracias por tu ayuda Smiley Happy
fegor
Senior Member

Re: Modificar user profile

Si, hay algunos problemas con las extensiones del modelo sobre todo para los usos estándar, ya que en muchas ocasiones para usarlos necesitas de clases de apoyo y claro… ;-)

De todas formas con la solución de no extender pero si modificar el contentModel.xml creo que si que te sirve.

Un saludo.
ruben_arjonilla
Member II

Re: Modificar user profile

si, he echo la prueba y funciona bien modificando directamente el contentModel.xml

habrá que vigilar cuando actualice alfresco
ruben_arjonilla
Member II

Re: Modificar user profile

Una pregunta más, si yo ahora quisiera añadir los campos estos del usuario en el share, o sea, que aparezcan en el formulario de modificación del "user profile", habria que tocar el codigo de share, o simplemente añadiendo un fichero tipo "web-client-config-custom.xml", el que ponemos en TOMCAT_HOME/shared/classes/alfresco/extension.

de ser así alguien me puede decir como iria dicho fichero para share?

gracias