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

Répondre à