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