Bonjour,

Si vous utilisez Jahia 5, n'est-il pas plus 
simple pour créer des objets de contenu de passer par le moteur d'import XML?

Le contenu Jahia peut être représenté sous forme 
de fichier XML, utilisé par le module 
d'import/export. Le format utilisé n'a pas de DTD 
prédefinie ou de schéma XML – il est basé sur la 
vue « document view » définie par le Java Content 
Repository (JCR), et dépend du modèle de données 
tel qu'il est défini dans les templates.

On distingue quatre types d'objets de contenu 
dans Jahia. Les « pages », les « liste de 
containeurs », les « containeurs » et les « 
champs ». Chaque type d'objet sera représenté par un noeud XML dans la vue.
Les pages sont représentées par des noeuds de 
type <jahia:page>. Ces noeuds ont 2 attributs 
obligatoire, « jahia:template », la template 
utilisée et « jahia:title », le titre de la page. 
L'attribut « jahia:pageKey » représente la clé de 
page lorsqu'elle est définie. Chaque page 
contient des noeuds representant soit les champs 
(<mySite:image>), soit les container list 
(<mySite:siteSettingsList>). Les noms de ces 
noeuds refletent les noms utilisés dans les 
définitions. Les noeuds représentant les 
containerlist sont suffixés par « List ». Les 
container list ont un noeud enfant par container, 
du nom utilisé dans la définition 
(<mySite:siteSettings>).  Les noeuds représentant 
les champs ont un attribut « jahia:value » 
contenant la valeur du champ. Enfin, les noeuds 
representant des champs de type page ont un 
enfant unique de type <jahia:page>. Tous les 
noeuds possedent un identifiant « jahia :uuid » , 
utilisé dans le cas de référence ou de liens. Cet 
attribut doit être unique, mais n'est pas 
obligatoire. Les droits associés à un objet sont 
exportés dans l'attribut « jahia:acl ». Le moyen 
le plus simple pour obtenir la structure XML d'un 
container ou d'une page est de créer un contenu à 
la main, puis de l'exporter via l'interface Jahia.

Il existe plusieurs methodes pour importer du contenu dans Jahia.

La première methode, manuelle, consiste a passer 
par l'interface de Jahia.  Lors de l'ajout d'un 
container, aller sur l'onglet « outils » puis 
import. Pour automatiser les imports, Jahia 
prévoit un mecanisme via le dépôt de fichier 
d'import via webdav. Il suffit de mettre le 
fichier XML ou ZIP en webdav n'importe où dans 
l'arborescence du site (par exemple, dans le 
répertoire « private » d'un utilisateur), sous le 
nom de « importInto_ContentContainerList_2 » où 
ContentContainerList_2 est la clé du container 
list dans lequel on souhaite faire l'import. 
L'identifiant peut être trouvé dans l'interface 
de Jahia, dans l'engine d'ajout de container, en haut à droite.

Stéphane

At 11:00 04.07.2007, you wrote:

>Bonjour,
>
>J'essaye de créer une page à la volée : j'ai une 
>page mère qui contient une containerList dont 
>les containers ont un champ de type Page. Sur 
>l'événement d'ajout d'un de ces containers, je 
>veux créer la page fille du champ de type 
>Page  et la remplir avec des informations du container parent.
>Dans mon eventListener, j'ai le code suivant :
>
>        ContentPage fichePresentationContent = null;
>         JahiaContainer theContainer = (JahiaContainer)event.getObject();
>         ContentContainer containerContent = 
> theContainer.getContentContainer();
>         int siteId = jData.getProcessingContext().getSiteID
>         JahiaPageField parentField = 
> (JahiaPageField) theContainer.getField("fiche");
>         int acl = parentField.getAclID();
>        String title = theContainer.getFieldValue("titre");
>        String contributeur = 
> jData.getProcessingContext().getUser().getUserKey();
>
>
>
>         JahiaPageDefinition pageDef 
> = 
> ServicesRegistry.getInstance().getJahiaPageTemplateService().lookupPageTemplateByName("nomDeMaTemplate",
>  
> siteId);
>
>
>       JahiaPage fichePresentation = 
> ServicesRegistry.getInstance().getJahiaPageService().createPage(
>                         siteId,
>                         jData.getProcessingContext().getPageID(),
>                         PageInfoInterface.TYPE_DIRECT,
>                         title,
>                         pageDef.getID(),
>                         "http://";,
>                         -1,
>                         contributeur,
>                         acl,
>                         jData.getProcessingContext());
>
>
>
>        if (fichePresentation != null) {
>         fichePresentationContent 
> = 
> ServicesRegistry.getInstance().getJahiaPageService().lookupContentPage(fichePresentation.getID(),
>  
> false
>          }
>
>
>         if 
> (ServicesRegistry.getInstance().getWorkflowService().getWorkflowMode(
> 
>fichePresentationContent) != WorkflowService.INACTIVE)
> 
>ServicesRegistry.getInstance().getWorkflowService().setWorkflowMode(
>                         fichePresentationContent, WorkflowService.INACTIVE,
>                     null, null,
>                     jData.getProcessingContext());
>
>
> 
>containerContent.setMetadataValue(metadata_fichePresentation, 
>fichePresentation.getURL(jData.getProcessingContext()), 
>jData.getProcessingContext());
>
>   //le champ "fichetitreField" n'est pas inclus 
> dans une liste, il est directement dans la page
>         int titreId 
> = 
> ServicesRegistry.getInstance().getJahiaFieldService().getFieldID("fichetitreField",
>  
> fichePresentation.getID());
>         ContentSmallTextField titre = 
> (ContentSmallTextField) ContentField.getField(titreId);
>
>
>         String elementTitre = (String) 
> theContainer.getFieldValue("listeGeneriquetitreField", 
> false,    jData.getProcessingContext());
>
>
>      String lang = theContainer.getLanguageCode();
>
>      titre.setText(elementTitre, new 
> EntrySaveRequest(jData.getProcessingContext().getUser(), 
> lang));
>
>        Malheureusement, le titreId est égal à 
> -1 et donc "titre" est null...Cependant, la 
> page est bien créée car je peux la voir dans 
> l'interface d'admin. J'ai également essayé 
> d'inclure le champ "fichetitreField" dans une 
> containerList, mais le résultat est le même, on 
> dirait que le contenu de la nouvelle page n'a 
> pas été instancié. Y'a-t-il une astuce qui m'échappe?
>Merci de votre aide.
>
>Daphné
>
>_______________________________________________
>french_list mailing list
>[email protected]
>http://lists.jahia.org/cgi-bin/mailman/listinfo/french_list
>
>
>
>--
>Internal Virus Database is out-of-date.
>Checked by AVG Free Edition.
>Version: 7.5.472 / Virus Database: 269.9.6/865 - 
>Release Date: 24.06.2007 08:33

- -- --- -----=[ scroisier at jahia dot com ]=---- --- -- -
Head of Products - Jahia Ltd, Route des Jeunes 9, 1227 Carouge (Switzerland)
Jahia : The Professional Open Source Unified ECM
www.jahia.com - The Product Web Site
www.jahia.net - The Community Web Site 


-- 
Internal Virus Database is out-of-date.
Checked by AVG Free Edition. 
Version: 7.5.472 / Virus Database: 269.9.6/865 - Release Date: 24.06.2007 08:33


_______________________________________________
french_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/french_list

Répondre à