J'ai créé un content-type avec pas mal de propriétés...

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

J'ai créé un content-type avec pas mal de propriétés...

Bonjour,
J'ai créé un content-type avec pas mal de propriétés et je crée le contenu du document à partir des méta-données sur la base d'une règle déclenchant l'exécution d'un javascript.
hélas, dans mon javascript, je suis obligé de nommer dicretement chacune de mes propriétés, de réécrire un label,etc,… ce qui donne un script assez sale, fastidieux et peu maintenable en cas d'extension de la liste des propriétés ou de leur ordre de présentation.
y'a-t-il moyen en javascript de récuperer la liste des méta-données, et pour chacune, leur nom, le titre et la valeur ?
par exemple:

si j'ai:
         <property name="GLDoc:desc-plan">
           <title>Description of Project Planning</title>
           <type>d:text</type>
         </property>

dans mon java script, ça me donne:

  contenu += xmlBuildField("GLDoc:desc-plan","Description of Project Planning",document.properties["GLDoc:desc-plan"]);
où xmlBuildfield est ma fonction me formattant l'output.

et ça pour chacune des propriétés. Donc mon script fait 50 lignes là où écrire un truc du genre:

foreach(i in document.properties)
  contenu += xmlBuildField(document.properties.name,document.properties.title,document.properties.value);

me prendrait 10 lignes.
mais les propriétés  ou méthodes de document.properties ne sont pas documentées.
Quelqu'un peut-il me renseigner?
Merci d'avance.
9 Replies
pdubois
Active Member

Re: J'ai créé un content-type avec pas mal de propriétés...

Bonjour,

Le premier élément de ma réponse est que pour retrouver les champs d’un nœud avec le type associé, il faut accéder au informations données par le « dictionaryService ».

1)   Vos nœuds son probablement de type « cm:content » donc il faut que vous utilisiez le « dictionaryService » pour retrouver dynamiquement la liste des champs avec leur type.
2)   Ensuite pour chaque aspect appliqué au nœud, il faut parcourir ses propriétés avec le « dictionaryService ». 

Malheureusement, le « dictionaryService » n’est pas accessible par défaut à partir du JavaScript.  Mais heureusement si vous allez sur http://wiki.alfresco.com/wiki/JavaScript_API#Adding_Custom_Script_APIs
On vous indique comment éténdre l’API.

Bonne lecture et j’espère que cela vous aide.Smiley Happy



Voici également les méthodes du dictionnaryService :

@PublicService
public interface DictionaryService
{

    /**
     * @return the names of all models that have been registered with the Repository
     */
    @NotAuditable
    public Collection<QName> getAllModels();
   
    /**
     * @param model the model name to retrieve
     * @return the specified model (or null, if it doesn't exist)
     */
    @NotAuditable
    public ModelDefinition getModel(QName model);

    /**
     * @return the names of all data types that have been registered with the Repository
     */
    @NotAuditable
    Collection<QName> getAllDataTypes();

    /**
     * @param model the model to retrieve data types for
     * @return the names of all data types defined within the specified model
     */
    @NotAuditable
    Collection<QName> getDataTypes(QName model);
   
    /**
     * @param name the name of the data type to retrieve
     * @return the data type definition (or null, if it doesn't exist)
     */
    @NotAuditable
    DataTypeDefinition getDataType(QName name);
   
    /**
     * @param javaClass  java class to find datatype for
     * @return  the data type definition (or null, if a mapping does not exist)
     */
    @NotAuditable
    DataTypeDefinition getDataType(Class javaClass);

    /**
     * @return the names of all types that have been registered with the Repository
     */
    @NotAuditable
    Collection<QName> getAllTypes();
   
    /**
     * @param model the model to retrieve types for
     * @return the names of all types defined within the specified model
     */
    @NotAuditable
    Collection<QName> getTypes(QName model);

    /**
     * @param name the name of the type to retrieve
     * @return the type definition (or null, if it doesn't exist)
     */
    @NotAuditable
    TypeDefinition getType(QName name);

    /**
     * Construct an anonymous type that combines the definitions of the specified
     * type and aspects.
     *
     * @param type the type to start with
     * @param aspects the aspects to combine with the type
     * @return the anonymous type definition
     */
    @NotAuditable
    TypeDefinition getAnonymousType(QName type, Collection<QName> aspects);

    /**
     * @return the names of all aspects that have been registered with the Repository
     */
    @NotAuditable
    Collection<QName> getAllAspects();
   
    /**
     * @param model the model to retrieve aspects for
     * @return the names of all aspects defined within the specified model
     */
    @NotAuditable
    Collection<QName> getAspects(QName model);

    /**
     * @param name the name of the aspect to retrieve
     * @return the aspect definition (or null, if it doesn't exist)
     */
    @NotAuditable
    AspectDefinition getAspect(QName name);

    /**
     * @param name the name of the class (type or aspect) to retrieve
     * @return the class definition (or null, if it doesn't exist)
     */
    @NotAuditable
    ClassDefinition getClass(QName name);
   
    /**
     * Determines whether a class is a sub-class of another class
     *
     * @param className the sub-class to test
     * @param ofClassName the class to test against
     * @return true => the class is a sub-class (or itself)
     */
    @NotAuditable
    boolean isSubClass(QName className, QName ofClassName);

    /**
     * Gets the definition of the property as defined by the specified Class.
     *
     * Note: A sub-class may override the definition of a property that's
     *       defined in a super-class.
     *
     * @param className the class name
     * @param propertyName the property name
     * @return the property definition (or null, if it doesn't exist)
     */
    @NotAuditable
    PropertyDefinition getProperty(QName className, QName propertyName);

    /**
     * Gets the definition of the property as defined by its owning Class.
     *
     * @param propertyName the property name
     * @return the property definition (or null, if it doesn't exist)
     */
    @NotAuditable
    PropertyDefinition getProperty(QName propertyName);

    /**
     * Get all properties defined across all models with the given data type.
     *
     * Note that DataTypeDefinition.ANY will only match this type and can not be used as get all properties.
     *
     * If dataType is null then this method will return *ALL* properties regardless of data type.
     *
     * @param dataType
     * @return
     */
    @NotAuditable
    Collection<QName> getAllProperties(QName dataType);
   
    /**
     * Get all properties defined for the given model with the given data type.
     *
     * Note that DataTypeDefinition.ANY will only match this type and can not be used as get all properties.
     *
     * If dataType is null then this method will return *ALL* properties regardless of data type.
     *
     * @param dataType
     * @return
     */
    @NotAuditable
    Collection<QName> getProperties(QName model, QName dataType);
   
    /**
     * Get all poroperties for the specified model
     *
     * @param model
     * @return
     */
    Collection<QName> getProperties(QName model);
   
    /**
     * Gets the definition of the association as defined by its owning Class.
     *
     * @param associationName the property name
     * @return the association definition (or null, if it doesn't exist)
     */
    @NotAuditable
    AssociationDefinition getAssociation(QName associationName);
   
    // TODO: Behaviour definitions
   
}
michaelh
Active Member

Re: J'ai créé un content-type avec pas mal de propriétés...

Et c'est Denis qui gagne le prix de la première réponse de Philippe sur le forum.
Il n'y avait rien à gagner (on a pas trop de goodies), mais il fallait le noter (la postérité, tout ça) Smiley Very Happy
denisr
Member II

Re: J'ai créé un content-type avec pas mal de propriétés...

MichaelH,
Merci beaucoup pour ce très beau cadeau! (et surtout merci à Philippe pour cette réponse que je n'ai pas encore testée)
Mais j'ai cependant une requête : j'ai reçu un email aujourd'hui qui me dit que je ne pourrai pas assister à la conférence Alfresco au Sofitel le 15/11/2007 car je suis en liste d'attente…la goodie pourrait-elle être d'avoir une place à la conférence !?
Smiley Happy
michaelh
Active Member

Re: J'ai créé un content-type avec pas mal de propriétés...

On a un problème avec cette conférence … on a légèrement sous-estimé le nombre d'inscrits (plusieurs centaines, et ce n'est pas fini). On a vu pire comme problème cela dit Smiley Happy

Le Sofitel ne peut pas agrandir les murs malheureusement (et trouver un autre endroit, c'est trop tard), et on n'a pas le droit de faire rentrer trop de monde dans la pièce Smiley Happy

On regarde comment faire …
denisr
Member II

Re: J'ai créé un content-type avec pas mal de propriétés...

Tant pis! J'en profite pour te signaler que je ne reçois plus de mail quand quelqu'un répond à mes posts. Est-ce normal? ai-je fait une fausse manip?
michaelh
Active Member

Re: J'ai créé un content-type avec pas mal de propriétés...

Ahh, je signale ça à notre cher administrateur …
As-tu bien vérifié qu'un antispam ne traîne pas de ton coté ?
denisr
Member II

Re: J'ai créé un content-type avec pas mal de propriétés...

Merci Michael.
De mon côté il y a un anti spam mais ça va être un peu compliqué pour moi d'aller voir les règles. Je voulais déjà savoir si de votre côté il y avait eu des changements puisqu'avant je les recevais. Faut-il, même si on est créateur du post, cliquer sur "s'abonner à ce sujet" en bas de page? En tous cas je le fais et je verrai bien si je suis prévenu de ta réponse.
Cordialement,
Denis.
michaelh
Active Member

Re: J'ai créé un content-type avec pas mal de propriétés...

Je reçois bien les notifications de mon coté … donc rien n'a changé de ce coté a priori.
Voyons si tu reçois celle-ci (oui, il faut souscrire explicitement).
denisr
Member II

Re: J'ai créé un content-type avec pas mal de propriétés...

Miracle de l'informatique! après m'être abonné au sujet je reçois bien le mail Smiley Happy
Merci pour le test