¿Como añadir propiedades a un tipo de contenido?

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

¿Como añadir propiedades a un tipo de contenido?

Hola buenos días,

Soy bastante novato en esto de Alfresco y estoy haciendo pruebas.  Os cuento un poco que es lo que me gustaría hacer y haber si alguien me podría echar una mano.

La cuestión es que tengo montado una regla en la que le dijo que cualquier tipo de contenido que introduzca en un directorio me los transforme a un contenido especial al cual que llamado: contenido1.
El contenido1 no es mas que añadirle una propiedad, a la cual la he llamado propiedad1 (todo un derroche de imaginación el mio, jejeje).

Lo que me gustaría es saber como puedo añadirle texto a la propiedad1 sin tener que escribirse la yo, es decir que lo pille de un txt o algo así.

Muchas gracias de antemano!
6 Replies
baskeyfield
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Buenas,

Supongo que para contenido1 habrás creado un nuevo custom type. Tu problema viene a la hora de asociarselo y darle un valor.

En lugar de crear una regla que especialice el tipo de contenido que supongo que es lo que has hecho, tienes que crear un script (javascript), que realice esa tarea y además le de un valor a tu propiedad.

Para ello tendrás que crear un .js en Data Dictionary/Scripts, y en la regla especificar "ejecutar un script".

El contenido del script dejo que lo investigues, pero las dos cosas que pides se pueden hacer fácilmente de esa forma. Te dejo los enlaces al api de javascript y unos ejemplos varios (para la versión 3.2):

http://wiki.alfresco.com/wiki/3.2_JavaScript_API

http://wiki.alfresco.com/wiki/JavaScript_API_Cookbook

Saludos.
dreamcifra
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Hola compañero.

Efectivamente, para contenido1 le hice como un tipo de contenido.
Todo lo que meto en un directorio lo transformo al tipo contenido1. Esto lo hago con una regla que viene por defecto en Alfresco y no me preocupo de la transformación.

Según lo que he entendido es que me tengo que crear una regla en java utilizando AccionExecuter y AccionHandler, ¿y dentro de ellos lanzar un JavaScript?

Muchas gracias por la ayuda!!
baskeyfield
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Buenas,

Es más sencillo de lo que dices.

Hay otra regla por defecto que es "ejecuta un script" (échale un vistazo a las reglas). Verás que te sale un desplegable con varios .js. Esos js están en Company Home/Data Dictionary/Scripts.

Lo que tienes que hacer es crearte tu .js en ese espacio y que transforme el tipo de contenido y le asocie valores a tus propiedades. No necesitas para nada un .java.

Utilizando los dos enlaces anteriores encontrarás el método para realizar la transformación.

Ejemplos:

usando esta función lo transformas a tu tipo:

boolean specializeType(string type)
Specialise the type of a node. Return true on success, false otherwise. The type name supplied must be a sub-type of the current type as defined in the Data Dictionary.

usando esta le das valor a tu propiedad:

document.properties["miSmiley Tongueropiedad"] = valorAMiPropiedad;
// save the property modifications
document.save();


Saludos.
dreamcifra
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Gracias compañero!!!

Ya he encontrado lo lanzar un Script con una regla aqui estará la solución.

Por lo que me has comentado, me has dicho que utilice la función:  boolean specializeType(String type). ¿Pero como debo utilizar esta función? ¿Es decir Como sabe a que tipo de contenido tiene que realizar la transformación?

El tipo de contenido que yo he definido es este:

contenidoPrueba.xml

<?xml version="1.0" encoding="UTF-8"?>

<!– Definition of the Model –>
<model name="prueba:model" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   
   <!– Optional meta-data about the model –>  
   <description>Modelo de Contenidos Prueba</description>
   <author>German</author>
      <version>1.0</version>   
   <!– Imports are required to allow references to definitions in other models –>
   <imports>
      <!– Import Alfresco Dictionary Definitions –>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <!– Import Alfresco Content Domain Model Definitions –>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>
   <!– Introduction of new namespaces defined by this model –>
   <namespaces>
      <namespace uri="prueba.model" prefix="prueba"/>
   </namespaces>
   <types>
      <!– Definition of new Content Type: newsItem –>
      <type name="prueba:contenido1">
         <title>contenido1</title>
         <parent>cm:content</parent>         
         <mandatory-aspects>
            <aspect>prueba:aspecto1</aspect>
         </mandatory-aspects>
      </type>   
   </types>
   <aspects>
      <!– rightsInfo: Expression of rights to be applied to content –>
      <aspect name="prueba:aspecto1">
         <title>aspecto1</title>
         <properties>
            <property name="pruebaSmiley Tongueropiedad1">
               <type>d:text</type>
            </property>
         </properties>
      </aspect>
   </aspects>
</model>

Muchas gracias por la ayuda prestada compañero!!
dreamcifra
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Solucionado.

Tengo dos reglas–> La primera me hace la transformación a un tipo de contenido y la segunda me rellena los datos de la transformación que he realizado.

Muchas gracia por la ayuda!!!

Un cordial saludo!!
baskeyfield
Member II

Re: ¿Como añadir propiedades a un tipo de contenido?

Perfecto!

Tu tipo de contenido se llama prueba:contenido1

Te pongo un ejemplo de codigo pero no te fies mucho de la sintaxis, lo pongo de "cabeza":

document.specializeType("prueba:contenido1");
document.properties["miSmiley Tongueropiedad"] = valorAMiPropiedad;
document.save();

"miSmiley Tongueropiedad" seria una propiedad que le hubieses definido a tu custom type, pero veo que no le has puesto ninguna, solamente aspectos, para ello tendrias además que añadirle el aspecto (desde javascript) y a la nueva propiedad del aspecto asignarle el valor. Se le puede sacar mucho partido al api de javascript.

Un saludo!