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