AnsweredAssumed Answered

[Résolu] [Débutant] Comment créer un content type ?

Question asked by lil on Jun 12, 2008
Latest reply on Jun 12, 2008 by michaelh
Salut,

J'essaie de créer un content type mais je ne trouve que des marches à suivre différentes.

Dans le bouquin Alfresco - Enterprise Content Management Implementation (qui date tout de même de 2006), voilà ce qui est proposé :
- Ajouter le nouveau <type> dans customModel.xml
- Configurer le web client (web-client-config-custom.xml) pour prendre en compte le content type : ajouter un <type> dans <content-types>

Dans le Developer guide, c'est déjà beaucoup plus compliqué :
- Créer un nouveau modèle
- Ajouter le nouveau type au nouveau modèle
- Enregistrer le nouveau modèle pour qu'il soit pris en compte au démarrage
- Plus plein d'autres trucs qui ne me semblent pas nécessaires

J'ai choisi la première méthode mais qui n'a eu aucun effet :
- Modifier customModel.xml. Dans ce fichier, il y a le commentaire suivant qui semble de bon augure :
<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>

Voilà mon fichier :
<?xml version="1.0" encoding="UTF-8"?>
<!– Custom Model –>
<!– Note: This model is pre-configured to load at startup of the Repository.  So, all custom –>
<!–       types and aspects added here will automatically be registered –>
<model name="custom:customModel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   <!– Optional meta-data about the model –>  
   <description>Custom Model</description>
   <author></author>
   <version>1.0</version>
   <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 –>
   <!– NOTE: The following namespace custom.model should be changed to reflect your own namespace –>
   <namespaces>
      <namespace uri="custom.model" prefix="custom"/>
   </namespaces>

<!– MES MODELES DE DOCUMENTS –>
   <types>
      <type name="Lil:document">
         <title>Document</title>
         <parent>cm:content</parent>
         <properties>
         </properties>
      </type>

      <type name="Lil:actualite">
         <title>Actualité</title>
         <parent>cm:content</parent>
         <properties>
         </properties>
      </type>
   </types>
</model>

- Enregistrer le nouveau content type dans le web client. Voilà mon fichier web-client-config-custom.xml :
<alfresco-config>
   <!– Example of adding languages to the list in the login page –>
   <config evaluator="string-compare" condition="Languages">
      <languages>
         <language locale="ca_ES">Catalan</language>
         <language locale="hr_HR">Croatian</language>
         <language locale="cs_CZ">Czech</language>
         <language locale="da_DK">Danish</language>
         <language locale="de_DE">German</language>
         <language locale="es_ES">Spanish</language>
         <language locale="el_GR">Greek</language>
         <language locale="fi_FI">Finnish</language>
         <language locale="fr_FR">French</language>
         <language locale="it_IT">Italian</language>
         <language locale="ja_JP">Japanese</language>
         <language locale="du_NL">Dutch</language>
         <language locale="pl_PL">Polish</language>
         <language locale="pt_PT">Portuguese</language>
         <language locale="pt_BR">Portuguese (Brazilian)</language>
         <language locale="ru_RU">Russian</language>
         <language locale="sv_SV">Swedish</language>
         <language locale="tr_TR">Turkish</language>
         <language locale="zh_CN">Simplified Chinese</language>
      </languages>
   </config>

   <!– The config below shows how to incorporate the example model–>
   <!– into the web client, for this to work you will need to –>
   <!– rename example-model-context.xml.sample to example-model-context.xml –>
   <config evaluator="string-compare" condition="Content Wizards">
      <content-types>
         <type name="Lil:document" />
      </content-types>
   </config>
</alfresco-config>

Mais quand je redémarre, je n'ai aucune erreur dans les logs et aucun nouveau type de contenu lorsque je fais "Create Content". Pourquoi mes modifications n'ont-elles eues aucun effet ?

A tout hasard, je suis allé voir dans core-services-context.xml et j'ai vu que customModel.xml n'y était pas référencé. Comment les modèles définis dans customModel.xml peuvent-ils être pris en compte si ce fichier n'est pas référencé dans core-services-context.xml ?

J'ai essayé de modifier
    <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/model/defaultCustomModel.xml</value>
            </list>
        </property>
    </bean>

en
    <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
            <list>
                <value>alfresco/extension/customModel.xml</value>
            </list>
        </property>
    </bean>
mais j'ai eu une erreur au redémarrage :
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'extension.dictionaryBootstrap' defined in class path resource [alfresco/core-services-context.xml]: Invocation of init method failed; nested exception is org.alfresco.service.cmr.dictionary.DictionaryException: Could not import bootstrap model alfresco/extension/customModel.xml

Pourtant, le fichier customModel.xml se trouve bien dans tomcat/shared/classes/alfresco/extension…

Que faire ? Tout éclaircissement pour m'aider à comprendre tout ça serait le bienvenu.

Merci d'avance
Lilian

Outcomes