Forum Ametys

Forum de la communauté Ametys

You are not logged in.

#1 Paramétrage et intégration » Bug : Contenu Verrouillé sans propriétaire du verrou » 08/09/2023 15:37:00

Mathieu
Replies: 1

Salut,

j'ai une page (crée à partir d'une "synchronisation de contenu" pour faire des CV pour les utilisateurs, je précise au cas où même si j'ai l'impression que cela ne change rien) qui est verrouillé et qui plante lorsque je veux la déverrouiller.

Premier message d'erreur :
Erreur déverrouillage :  Le ou les éléments suivants n'ont pas pu être déverrouillés car une erreur est survenue : Prenom Nom   (C'est un prénom composé avec un tiret au milieu, a priori il n'y a pas de raisons que cela soit génant mais je me suis demandé si cela pouvait etre la cause du bug donc je le precise au cas où)

Deuxième message d'erreur (trace java):
Le serveur à échoué (code 500)

An object id must conform to the <protocol>://<protocol-specific-part> syntax:
org.ametys.plugins.repository.AmetysRepositoryException: An object id must conform to the <protocol>://<protocol-specific-part> syntax:
    at org.ametys.plugins.repository.AmetysObjectResolver.resolveById(AmetysObjectResolver.java:306)
    at org.ametys.cms.repository.ContentDAO.getContentsProperties(ContentDAO.java:571)
    at jdk.internal.reflect.GeneratedMethodAccessor264.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.ametys.core.ui.ExecuteClientCallsAction._executeMethod(ExecuteClientCallsAction.java:204)
    at org.ametys.core.ui.ExecuteClientCallsAction.act(ExecuteClientCallsAction.java:182)
    at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
    at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
    at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:68)
    at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.ametys.core.ui.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:153)
    at org.ametys.core.ui.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:95)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
    at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
    at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
    at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:571)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:829)

Je suis allé voir dans le repository pour essayer de le deverouiller et cela ne fonctionne pas non plus :
3e erreur : Le serveur à échoué (code500)

Node not locked by session: b29b4db5-7583-4b6e-9b2f-b6f870bfdc14
javax.jcr.lock.LockException: Node not locked by session: b29b4db5-7583-4b6e-9b2f-b6f870bfdc14
    at org.apache.jackrabbit.core.lock.LockManagerImpl.checkUnlock(LockManagerImpl.java:739)
    at org.apache.jackrabbit.core.lock.LockManagerImpl.checkUnlock(LockManagerImpl.java:716)
    at org.apache.jackrabbit.core.lock.XALockManager.checkUnlock(XALockManager.java:207)
    at org.apache.jackrabbit.core.lock.SessionLockManager.unlock(SessionLockManager.java:202)
    at org.ametys.workspaces.repository.jcr.RepositoryDao.unlockNode(RepositoryDao.java:395)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.ametys.core.ui.ExecuteClientCallsAction._executeMethod(ExecuteClientCallsAction.java:204)
    at org.ametys.core.ui.ExecuteClientCallsAction.act(ExecuteClientCallsAction.java:182)
    at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
    at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
    at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:68)
    at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.ametys.core.ui.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:153)
    at org.ametys.core.ui.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:95)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581)
    at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483)
    at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
    at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:571)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:829)

Si je compare à un autre CV vérouillé j'ai l'impression qu'il y a 2 parametres en plus qui n'existe pas dans la page qui bug :
ametys-internal:lockOwner (String)
ametys-internal:lockToken (String)

Je me suis dit que je pourrai les rajouter et voir si cela permet de retomber dans le cas classique mais le contenu est verrouillé donc je ne peux rien faire u_u

Une idée de ce que je peux essayer de faire pour deverouiller la situation ?

#2 Re: Offre de formation : Ametys ODF » Extraction de données ODF » 23/03/2023 15:50:58

Bon je me suis pas mal pris la tête à voir comment je pourrais gérer l'affichage en fonction des différents type de données (pour rien en fait c'était tout con u_u)

A priori ça sera la dernière version du code :

  function getProperty(courseContentNode , propertyName , type)
  {
    if(courseContentNode == null && type=="values")
    {
      return [];
    }

    if(courseContentNode == null)
    {
      return null;
    }

    if(courseContentNode.hasProperty(propertyName))
    {
      if(type=="string")
      {
        return courseContentNode.getProperty(propertyName).getString();
      }
      else if (type=="values")
      {
        return courseContentNode.getProperty(propertyName).getValues();
      }
    }
    else {
      return null;
    }
  }

  function getPropertyString(courseContentNode , propertyName)
  {
    return getProperty(courseContentNode , propertyName , "string");
  }

  function getPropertyValues(courseContentNode , propertyName)
  {
    return getProperty(courseContentNode , propertyName , "values");
  }

  function getNode(courseContentNode , nodeName)
  {
    if(courseContentNode == null)
    {
      return null;
    }

    if (courseContentNode.hasNode(nodeName))
    {
      return courseContentNode.getNode(nodeName);
    }
    else
    {
      return null;
    }
  }

  function getNodeById(id)
  {
    if(id == null || id == "")
    {
      return null;
    }

    return Repository.resolver.resolveById(id).getNode();
  }

  let count = 0;

  //print('Compteur; Libellé; Code Apogée; Description; Objectifs; Pré requis nécessaires; Contrôle des connaissances; syllabus; compétences visées; Informations complémentaires; Composantes; lieux; Campus; rôle1; contacts1; role2; contacts2; Label; Mots clés; Volume horaire; Effectif; Période de l année; Plage horaire; Méthode d enseignement; Organisation d enseignement; Forme d enseignement; Langues; Date de début des cours ; discipline d enseignement ')
  var report = Report.create("Exctraction ODF");
  report.addHeader("Compteur","Libellé","Code Apogée","Description","Objectifs","Pré requis nécessaires","Contrôle des connaissances","syllabus","compétences visées","Informations complémentaires","Composantes","lieux","Campus","rôle1","contacts1","role2","contacts2","Label","Mots clés","Volume horaire","Effectif","Période de l année","Plage horaire","Méthode d enseignement","Organisation d enseignement","Forme d enseignement","Langues","Date de début des cours","discipline d enseignement");

  Repository.query('//element(*, ametys:courseContent)[ametys:catalog="ue-iibres-2023"]').forEach(function(courseContent) {
    count++;
    let courseContentNode = courseContent.getNode();
    //print(courseContent);
    
    //Haut de page
    let libellé= getPropertyString(courseContentNode, "ametys:title");
    //print("\n"+libellé);

    let codeApogee= getPropertyString(courseContentNode,"ametys:codeApogee");
    //print(codeApogee);


    //Onglet Presentation
    let description = getPropertyString(getNode(courseContentNode,"ametys:description"),"jcr:data");

    //print(description);
    let objectifs = getPropertyString(getNode(courseContentNode,"ametys:objectives"),"jcr:data");
    //print(objectifs);

    let prerequis = getPropertyString(getNode(courseContentNode,"ametys:neededPrerequisite"),"jcr:data");
    //print(prerequis);

    //Onglet +d'infos
    let controleConnaissance = getPropertyString(getNode(courseContentNode,"ametys:formOfAssessment"),"jcr:data");
    //print(controleConnaissance);

    let syllabus = getPropertyString(getNode(courseContentNode,"ametys:syllabus"),"jcr:data");
    //print(syllabus);

    let competencesVisées = getPropertyString(getNode(courseContentNode,"ametys:skills"),"jcr:data");
    //print(competencesVisées);

    let infosComplementaires = getPropertyString(getNode(courseContentNode,"ametys:additionalInformations"),"jcr:data");
    //print(infosComplementaires);

    //Onglet Contacts
    let composantesValues = getPropertyValues(courseContentNode,"ametys:orgUnit");
    let composantes=[];
    for (let i = 0; i < composantesValues.length; i++) {
      composantes.push(getPropertyString(getNodeById(composantesValues[i].getString()),"ametys:title"));
    }
    //print(composantes);

    let lieuxValues = getPropertyValues(courseContentNode,"ametys:teachingLocation");
    let lieux=[];
    for (let i = 0; i < lieuxValues.length; i++) {
      lieux.push(getPropertyString(getNode(getNodeById(lieuxValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(lieux);

    let campusValues = getPropertyValues(courseContentNode,"ametys:campus");
    let campus=[];
    for (let i = 0; i < campusValues.length; i++) {
      campus.push(getPropertyString(getNode(getNodeById(campusValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(campus);

    //contact et role
    let role1=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:role")),"ametys:title"),"ametys:fr");
    //print(role2);
    let contacts1Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:persons");
    let contacts1=[];
    for (let i = 0; i < contacts1Values.length; i++) {
      contacts1.push(getPropertyString(getNodeById(contacts1Values[i].getString()),"ametys:title"));
    }
    //print(contacts2);

    let role2=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:role")),"ametys:title"),"ametys:fr");
    //print(role2);
    let contacts2Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:persons");
    let contacts2=[];
    for (let i = 0; i < contacts2Values.length; i++) {
      contacts2.push(getPropertyString(getNodeById(contacts2Values[i].getString()),"ametys:title"));
    }
    //print(contacts2);

    //Onglet en bref
    let labelValues = getPropertyValues(courseContentNode,"ametys:labellisation");
    let label=[];
    for (let i = 0; i < labelValues.length; i++) {
      label.push(getPropertyString(getNode(getNodeById(labelValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(label);

    let motsClésValues= getPropertyValues(courseContentNode,"ametys:keywords");
    let motsClés=[];
    for (let i = 0; i < motsClésValues.length; i++) {
      motsClés.push(motsClésValues[i].getString());
    }
    //print(motsClés);

    let volumeHoraire = getPropertyString(courseContentNode,"ametys:nbHours");
    //print(volumeHoraire);

    let effectif = getPropertyString(courseContentNode,"ametys:maxNumberOfStudents");
    //print(effectif);

    let periodeAnnée = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingTerm")),"ametys:title"),"ametys:fr");
    //print(periodeAnnée);

    let plageHoraire= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:timeSlot")),"ametys:title"),"ametys:fr");
    //print(plageHoraire);

    let methodeEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:formofteachingMethod")),"ametys:title"),"ametys:fr");
    //print(methodeEnseignement);

    let organisationEnseignementValues = getPropertyValues(courseContentNode,"ametys:formofteachingOrg");
    let organisationEnseignement=[];
    for (let i = 0; i < organisationEnseignementValues.length; i++) {
      organisationEnseignement.push(getPropertyString(getNode(getNodeById(organisationEnseignementValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(organisationEnseignement);

    let formeEnseignement= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingActivity")),"ametys:title"),"ametys:fr");
    //print(formeEnseignement);

    let languesValues = getPropertyValues(courseContentNode,"ametys:teachingLanguage");
    let langues=[];
    for (let i = 0; i < languesValues.length; i++) {
      langues.push(getPropertyString(getNode(getNodeById(languesValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(langues);

    let dateDebutCours = getPropertyString(courseContentNode,"ametys:startDate");
    dateDebutCours = dateDebutCours.substring(0, 10);
    //print(dateDebutCours);

    //Onglet Pilotage
    let disciplineEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:disciplineEnseignement")),"ametys:title"),"ametys:fr");
    //print(disciplineEnseignement);
    
    //print(`"${count}";"${libellé}";"${codeApogee}";"${description}";"${objectifs}";"${prerequis}";"${controleConnaissance}";"${syllabus}";"${competencesVisées}";"${infosComplementaires}";"${composantes}";"${lieux}";"${campus}";"${role1}";"${contacts1}";"${role2}";"${contacts2}";"${label}";"${motsClés}";"${volumeHoraire}";"${effectif}";"${periodeAnnée}";"${plageHoraire}";"${methodeEnseignement}";"${organisationEnseignement}";"${formeEnseignement}";"${langues}";"${dateDebutCours}";"${disciplineEnseignement}"`);
    //report.addRow(count,libellé,codeApogee,description,objectifs,prerequis,controleConnaissance,syllabus,competencesVisées,infosComplementaires,composantes,lieux,campus,role1,contacts1,role2,contacts2,label,motsClés,volumeHoraire,effectif,periodeAnnée,plageHoraire,methodeEnseignement,organisationEnseignement,formeEnseignement,langues,dateDebutCours);
    report.addRow(`${count}`,`${libellé}`,`${codeApogee}`,`${description}`,`${objectifs}`,`${prerequis}`,`${controleConnaissance}`,`${syllabus}`,`${competencesVisées}`,`${infosComplementaires}`,`${composantes}`,`${lieux}`,`${campus}`,`${role1}`,`${contacts1}`,`${role2}`,`${contacts2}`,`${label}`,`${motsClés}`,`${volumeHoraire}`,`${effectif}`,`${periodeAnnée}`,`${plageHoraire}`,`${methodeEnseignement}`,`${organisationEnseignement}`,`${formeEnseignement}`,`${langues}`,`${dateDebutCours}`,`${disciplineEnseignement}`);
  });

  //print(`${count} results(s)`);
  //report.print();
  //report.saveAsCSV();
  //report.saveAsXLS();
  //report.saveAsHTML();
  //report.printLink()
  
  // Get the mail of the currently connected user
  var useridentityConnected = Ametys.serviceManager.lookup(org.ametys.core.user.CurrentUserProvider.ROLE).getUser();
  var userConnected = Ametys.serviceManager.lookup(org.ametys.core.user.UserManager.ROLE).getUser(useridentityConnected);
  var mail = userConnected.getEmail();
  
  let fileXLS = report.saveAsXLS();
  //let fileCSV = report.saveAsCSV();
  //let fileHTML = report.saveAsHTML();
  let date = new Date();
  let YYYYMMDD = date.getFullYear()+"/"+date.getMonth()+"/"+date.getDate();

  //print(date.getDate());
  //print(date.getMonth());
  //print(date.getFullYear());
  //print(file);
  
  Ametys.mail({
    "subject" : "Extraction ODF "+YYYYMMDD,
    "htmlBody" : "Rapport de l'extraction ODF en pièce jointe",
    "toRecipients" : mail,
    "attachments" : fileXLS
    //"attachments" : [fileXLS, fileCSV, fileHTML]
  })

Du coup j'ai une question sur ce passage la (mais je me dit que c'est peut etre pas encore dispo en 4.4.9):

une fois qu'on a fait ce script, on peut l'enregistrer dans le répertoire de requête

Où est ce que je peux trouver ce repertoire ?
Pour le moment j'ai vu qu'à partir du plannificateur de taches je peux faire une nouvelle tache de type "Executer un script" mais je dois y coller mon code dedans, je n'ai pas l'air de pouvoir selectionner des scripts existants (après c'est peut etre une option qui n'apparait qu'une fois que l'on a des scripts sauvegardés existants)

Edit : Petit question de plus :  est ce qu'il y a possibilité de deleguer ça à un utilisateur pour qu'il lance le script (pour lui même) ?

#3 Re: Offre de formation : Ametys ODF » Extraction de données ODF » 21/03/2023 17:26:22

Hop, nouvelle version avec la fonction Report.create , au final c'est relativement simple de passer les 2 prints que j'avais par l'appel à cette fonction :

  function getProperty(courseContentNode , propertyName , type)
  {
    if(courseContentNode == null && type=="values")
    {
      return [];
    }

    if(courseContentNode == null)
    {
      return null;
    }

    if(courseContentNode.hasProperty(propertyName))
    {
      if(type=="string")
      {
        return courseContentNode.getProperty(propertyName).getString();
      }
      else if (type=="values")
      {
        return courseContentNode.getProperty(propertyName).getValues();
      }
    }
    else {
      return null;
    }
  }

  function getPropertyString(courseContentNode , propertyName)
  {
    return getProperty(courseContentNode , propertyName , "string");
  }

  function getPropertyValues(courseContentNode , propertyName)
  {
    return getProperty(courseContentNode , propertyName , "values");
  }

  function getNode(courseContentNode , nodeName)
  {
    if(courseContentNode == null)
    {
      return null;
    }

    if (courseContentNode.hasNode(nodeName))
    {
      return courseContentNode.getNode(nodeName);
    }
    else
    {
      return null;
    }
  }

  function getNodeById(id)
  {
    if(id == null || id == "")
    {
      return null;
    }

    return Repository.resolver.resolveById(id).getNode();
  }

  let count = 0;

  //print('Compteur; Libellé; Code Apogée; Description; Objectifs; Pré requis nécessaires; Contrôle des connaissances; syllabus; compétences visées; Informations complémentaires; Composantes; lieux; Campus; rôle1; contacts1; role2; contacts2; Label; Mots clés; Volume horaire; Effectif; Période de l année; Plage horaire; Méthode d enseignement; Organisation d enseignement; Forme d enseignement; Langues; Date de début des cours')
  var report = Report.create("My report", "This report just display the random data");
  report.addHeader("Compteur","Libellé","Code Apogée","Description","Objectifs","Pré requis nécessaires","Contrôle des connaissances","syllabus","compétences visées","Informations complémentaires","Composantes","lieux","Campus","rôle1","contacts1","role2","contacts2","Label","Mots clés","Volume horaire","Effectif","Période de l année","Plage horaire","Méthode d enseignement","Organisation d enseignement","Forme d enseignement","Langues","Date de début des cours");

  Repository.query('//element(*, ametys:courseContent)[ametys:catalog="ue-iibres-2023"]').forEach(function(courseContent) {
    count++;
    let courseContentNode = courseContent.getNode();

    //Haut de page
    let libellé= getPropertyString(courseContentNode, "ametys:title");
    //print("\n"+libellé);

    let codeApogee= getPropertyString(courseContentNode,"ametys:codeApogee");
    //print(codeApogee);


    //Onglet Presentation
    let description = getPropertyString(getNode(courseContentNode,"ametys:description"),"jcr:data");

    //print(description);
    let objectifs = getPropertyString(getNode(courseContentNode,"ametys:objectives"),"jcr:data");
    //print(objectifs);

    let prerequis = getPropertyString(getNode(courseContentNode,"ametys:neededPrerequisite"),"jcr:data");
    //print(prerequis);

    //Onglet +d'infos
    let controleConnaissance = getPropertyString(getNode(courseContentNode,"ametys:formOfAssessment"),"jcr:data");
    //print(controleConnaissance);

    let syllabus = getPropertyString(getNode(courseContentNode,"ametys:syllabus"),"jcr:data");
    //print(syllabus);

    let competencesVisées = getPropertyString(getNode(courseContentNode,"ametys:skills"),"jcr:data");
    //print(competencesVisées);

    let infosComplementaires = getPropertyString(getNode(courseContentNode,"ametys:additionalInformations"),"jcr:data");
    //print(infosComplementaires);

    //Onglet Contacts
    let composantesValues = getPropertyValues(courseContentNode,"ametys:orgUnit");
    let composantes=[];
    for (let i = 0; i < composantesValues.length; i++) {
      composantes.push(getPropertyString(getNodeById(composantesValues[i].getString()),"ametys:title"));
    }
    //print(composantes);

    let lieuxValues = getPropertyValues(courseContentNode,"ametys:teachingLocation");
    let lieux=[];
    for (let i = 0; i < lieuxValues.length; i++) {
      lieux.push(getPropertyString(getNode(getNodeById(lieuxValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(lieux);

    let campusValues = getPropertyValues(courseContentNode,"ametys:campus");
    let campus=[];
    for (let i = 0; i < campusValues.length; i++) {
      campus.push(getPropertyString(getNode(getNodeById(campusValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(campus);

    //contact et role
    let role1=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:role")),"ametys:title"),"ametys:fr");
    //print(role2);
    let contacts1Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:persons");
    let contacts1=[];
    for (let i = 0; i < contacts1Values.length; i++) {
      contacts1.push(getPropertyString(getNodeById(contacts1Values[i].getString()),"ametys:title"));
    }
    //print(contacts2);

    let role2=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:role")),"ametys:title"),"ametys:fr");
    //print(role2);
    let contacts2Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:persons");
    let contacts2=[];
    for (let i = 0; i < contacts2Values.length; i++) {
      contacts2.push(getPropertyString(getNodeById(contacts2Values[i].getString()),"ametys:title"));
    }
    //print(contacts2);

    //Onglet en bref
    let labelValues = getPropertyValues(courseContentNode,"ametys:labellisation");
    let label=[];
    for (let i = 0; i < labelValues.length; i++) {
      label.push(getPropertyString(getNode(getNodeById(labelValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(label);

    let motsClésValues= getPropertyValues(courseContentNode,"ametys:keywords");
    let motsClés=[];
    for (let i = 0; i < motsClésValues.length; i++) {
      motsClés.push(motsClésValues[i].getString());
    }
    //print(motsClés);

    let volumeHoraire = getPropertyString(courseContentNode,"ametys:nbHours");
    //print(volumeHoraire);

    let effectif = getPropertyString(courseContentNode,"ametys:maxNumberOfStudents");
    //print(effectif);

    let periodeAnnée = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingTerm")),"ametys:title"),"ametys:fr");
    //print(periodeAnnée);

    let plageHoraire= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:timeSlot")),"ametys:title"),"ametys:fr");
    //print(plageHoraire);

    let methodeEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:formofteachingMethod")),"ametys:title"),"ametys:fr");
    //print(methodeEnseignement);

    let organisationEnseignementValues = getPropertyValues(courseContentNode,"ametys:formofteachingOrg");
    let organisationEnseignement=[];
    for (let i = 0; i < organisationEnseignementValues.length; i++) {
      organisationEnseignement.push(getPropertyString(getNode(getNodeById(organisationEnseignementValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(organisationEnseignement);

    let formeEnseignement= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingActivity")),"ametys:title"),"ametys:fr");
    //print(formeEnseignement);

    let languesValues = getPropertyValues(courseContentNode,"ametys:teachingLanguage");
    let langues=[];
    for (let i = 0; i < languesValues.length; i++) {
      langues.push(getPropertyString(getNode(getNodeById(languesValues[i].getString()),"ametys:title"),"ametys:fr"));
    }
    //print(langues);

    let dateDebutCours = getPropertyString(courseContentNode,"ametys:startDate");
    //print(dateDebutCours);

    //print(`"${count}";"${libellé}";"${codeApogee}";"${description}";"${objectifs}";"${prerequis}";"${controleConnaissance}";"${syllabus}";"${competencesVisées}";"${infosComplementaires}";"${composantes}";"${lieux}";"${campus}";"${role1}";"${contacts1}";"${role2}";"${contacts2}";"${label}";"${motsClés}";"${volumeHoraire}";"${effectif}";"${periodeAnnée}";"${plageHoraire}";"${methodeEnseignement}";"${organisationEnseignement}";"${formeEnseignement}";"${langues}";"${dateDebutCours}"`);
    report.addRow(count,libellé,codeApogee,description,objectifs,prerequis,controleConnaissance,syllabus,competencesVisées,infosComplementaires,composantes,lieux,campus,role1,contacts1,role2,contacts2,label,motsClés,volumeHoraire,effectif,periodeAnnée,plageHoraire,methodeEnseignement,organisationEnseignement,formeEnseignement,langues,dateDebutCours);
  });

  //print(`${count} results(s)`);
  report.print();
  report.saveAsCSV();
  report.printLink()

Le soucis c'est que ça me fait un résultat assez bizarre en fonction des données vide ou multiple :-/
Si c'est vide il prends la colonne d'après, si c'est multiple il rempli plusieurs colonnes au lieu de tout mettre dans une seule colonne.
Et si j'utilise la version avec le fichier, je me retrouve à voir la balise xml des jcr-data dans le fichier.

Il faudra que je vois comment améliorer ça quand j'aurai un peu plus de temps (je dois pouvoir faire des implodes/explodes mais je ne sais pas si il n'y a pas de solution plus propre)

#4 Re: Offre de formation : Ametys ODF » Extraction de données ODF » 21/03/2023 16:21:44

Salut Cédric,

j'utilise la version 4.4.9 et ça à l'air disponible *o* , merci, plus qu'à voir comment faire ça big_smile

Et en attendant, nouvelle version du code en utilisant des fonctions pour faire les vérifications hasProperty et hasNode (pour le coup je perds le coté "objet" :-/)

function getProperty(courseContentNode , propertyName , type)
{
  if(courseContentNode == null && type=="values")
  {
    return [];
  }

  if(courseContentNode == null)
  {
    return null;
  }

  if(courseContentNode.hasProperty(propertyName))
  {
    if(type=="string")
    {
      return courseContentNode.getProperty(propertyName).getString();
    }
    else if (type=="values")
    {
      return courseContentNode.getProperty(propertyName).getValues();
    }
  }
  else {
    return null;
  }
}

function getPropertyString(courseContentNode , propertyName)
{
  return getProperty(courseContentNode , propertyName , "string");
}

function getPropertyValues(courseContentNode , propertyName)
{
  return getProperty(courseContentNode , propertyName , "values");
}

function getNode(courseContentNode , nodeName)
{
  if(courseContentNode == null)
  {
    return null;
  }

  if (courseContentNode.hasNode(nodeName))
  {
    return courseContentNode.getNode(nodeName);
  }
  else
  {
    return null;
  }
}

function getNodeById(id)
{
  if(id == null || id == "")
  {
    return null;
  }

  return Repository.resolver.resolveById(id).getNode();
}

let count = 0;
print('Compteur; Libellé; Code Apogée; Description; Objectifs; Pré requis nécessaires; Contrôle des connaissances; syllabus; compétences visées; Informations complémentaires; Composantes; lieux; Campus; rôle1; contacts1; role2; contacts2; Label; Mots clés; Volume horaire; Effectif; Période de l année; Plage horaire; Méthode d enseignement; Organisation d enseignement; Forme d enseignement; Langues; Date de début des cours')

Repository.query('//element(*, ametys:courseContent)[ametys:catalog="ue-iibres-2023"]').forEach(function(courseContent) {
  count++;
  let courseContentNode = courseContent.getNode();

  //Haut de page
  let libellé= getPropertyString(courseContentNode, "ametys:title");
  //print("\n"+libellé);

  let codeApogee= getPropertyString(courseContentNode,"ametys:codeApogee");
  //print(codeApogee);


  //Onglet Presentation
  let description = getPropertyString(getNode(courseContentNode,"ametys:description"),"jcr:data");

  //print(description);
  let objectifs = getPropertyString(getNode(courseContentNode,"ametys:objectives"),"jcr:data");
  //print(objectifs);

  let prerequis = getPropertyString(getNode(courseContentNode,"ametys:neededPrerequisite"),"jcr:data");
  //print(prerequis);

  //Onglet +d'infos
  let controleConnaissance = getPropertyString(getNode(courseContentNode,"ametys:formOfAssessment"),"jcr:data");
  //print(controleConnaissance);

  let syllabus = getPropertyString(getNode(courseContentNode,"ametys:syllabus"),"jcr:data");
  //print(syllabus);

  let competencesVisées = getPropertyString(getNode(courseContentNode,"ametys:skills"),"jcr:data");
  //print(competencesVisées);

  let infosComplementaires = getPropertyString(getNode(courseContentNode,"ametys:additionalInformations"),"jcr:data");
  //print(infosComplementaires);

  //Onglet Contacts
  let composantesValues = getPropertyValues(courseContentNode,"ametys:orgUnit");
  let composantes=[];
  for (let i = 0; i < composantesValues.length; i++) {
    composantes.push(getPropertyString(getNodeById(composantesValues[i].getString()),"ametys:title"));
  }
  //print(composantes);

  let lieuxValues = getPropertyValues(courseContentNode,"ametys:teachingLocation");
  let lieux=[];
  for (let i = 0; i < lieuxValues.length; i++) {
    lieux.push(getPropertyString(getNode(getNodeById(lieuxValues[i].getString()),"ametys:title"),"ametys:fr"));
  }
  //print(lieux);

  let campusValues = getPropertyValues(courseContentNode,"ametys:campus");
  let campus=[];
  for (let i = 0; i < campusValues.length; i++) {
    campus.push(getPropertyString(getNode(getNodeById(campusValues[i].getString()),"ametys:title"),"ametys:fr"));
  }
  //print(campus);

  //contact et role
  let role1=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:role")),"ametys:title"),"ametys:fr");
  //print(role2);
  let contacts1Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:1"),"ametys:persons");
  let contacts1=[];
  for (let i = 0; i < contacts1Values.length; i++) {
    contacts1.push(getPropertyString(getNodeById(contacts1Values[i].getString()),"ametys:title"));
  }
  //print(contacts2);

  let role2=getPropertyString(getNode(getNodeById(getPropertyString(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:role")),"ametys:title"),"ametys:fr");
  //print(role2);
  let contacts2Values = getPropertyValues(getNode(getNode(courseContentNode,"ametys:contacts"),"ametys:2"),"ametys:persons");
  let contacts2=[];
  for (let i = 0; i < contacts2Values.length; i++) {
    contacts2.push(getPropertyString(getNodeById(contacts2Values[i].getString()),"ametys:title"));
  }
  //print(contacts2);

  //Onglet en bref
  let labelValues = getPropertyValues(courseContentNode,"ametys:labellisation");
  let label=[];
  for (let i = 0; i < labelValues.length; i++) {
    label.push(getPropertyString(getNode(getNodeById(labelValues[i].getString()),"ametys:title"),"ametys:fr"));
  }
  //print(label);

  let motsClésValues= getPropertyValues(courseContentNode,"ametys:keywords");
  let motsClés=[];
  for (let i = 0; i < motsClésValues.length; i++) {
    motsClés.push(motsClésValues[i].getString());
  }
  //print(motsClés);

  let volumeHoraire = getPropertyString(courseContentNode,"ametys:nbHours");
  //print(volumeHoraire);

  let effectif = getPropertyString(courseContentNode,"ametys:maxNumberOfStudents");
  //print(effectif);

  let periodeAnnée = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingTerm")),"ametys:title"),"ametys:fr");
  //print(periodeAnnée);

  let plageHoraire= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:timeSlot")),"ametys:title"),"ametys:fr");
  //print(plageHoraire);

  let methodeEnseignement = getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:formofteachingMethod")),"ametys:title"),"ametys:fr");
  //print(methodeEnseignement);

  let organisationEnseignementValues = getPropertyValues(courseContentNode,"ametys:formofteachingOrg");
  let organisationEnseignement=[];
  for (let i = 0; i < organisationEnseignementValues.length; i++) {
    organisationEnseignement.push(getPropertyString(getNode(getNodeById(organisationEnseignementValues[i].getString()),"ametys:title"),"ametys:fr"));
  }
  //print(organisationEnseignement);

  let formeEnseignement= getPropertyString(getNode(getNodeById(getPropertyString(courseContentNode,"ametys:teachingActivity")),"ametys:title"),"ametys:fr");
  //print(formeEnseignement);

  let languesValues = getPropertyValues(courseContentNode,"ametys:teachingLanguage");
  let langues=[];
  for (let i = 0; i < languesValues.length; i++) {
    langues.push(getPropertyString(getNode(getNodeById(languesValues[i].getString()),"ametys:title"),"ametys:fr"));
  }
  //print(langues);

  let dateDebutCours = getPropertyString(courseContentNode,"ametys:startDate");
  //print(dateDebutCours);

  print(`"${count}";"${libellé}";"${codeApogee}";"${description}";"${objectifs}";"${prerequis}";"${controleConnaissance}";"${syllabus}";"${competencesVisées}";"${infosComplementaires}";"${composantes}";"${lieux}";"${campus}";"${role1}";"${contacts1}";"${role2}";"${contacts2}";"${label}";"${motsClés}";"${volumeHoraire}";"${effectif}";"${periodeAnnée}";"${plageHoraire}";"${methodeEnseignement}";"${organisationEnseignement}";"${formeEnseignement}";"${langues}";"${dateDebutCours}"`);

});

print(`${count} results(s)`);

#5 Offre de formation : Ametys ODF » Extraction de données ODF » 21/03/2023 11:05:20

Mathieu
Replies: 4

Salut,

je viens de faire un petit script pour sortir des informations des coursesContent depuis un catalogue :

let count = 0;

print('Compteur; Libellé; Code Apogée; Description; Objectifs; Pré requis nécessaires; Contrôle des connaissances; syllabus; compétences visées; Informations complémentaires; Composantes; lieux; Campus; rôle1; contacts1; role2; contacts2; Label; Mots clés; Volume horaire; Effectif; Période de l année; Plage horaire; Méthode d enseignement; Organisation d enseignement; Forme d enseignement; Langues; Date de début des cours')  
 
Repository.query('//element(*, ametys:courseContent)[ametys:catalog="ue-iibres-2023"]').forEach(function(courseContent) {
  count++;
 
 
  //Haut de page
  let libellé= courseContent.getNode().getProperty("ametys:title").getString();
  //print("\n"+libellé);
  let codeApogee= courseContent.getNode().getProperty("ametys:codeApogee").getString();
  //print(codeApogee);
 
  //Onglet Presentation
  let description = courseContent.getNode().getNode("ametys:description").getProperty("jcr:data").getString();
  //print(description);
  let objectifs = courseContent.getNode().getNode("ametys:objectives").getProperty("jcr:data").getString();
  //print(objectifs);
  let prerequis = courseContent.getNode().getNode("ametys:neededPrerequisite").getProperty("jcr:data").getString();
  //print(prerequis);
 
  //Onglet +d'infos
  let controleConnaissance = courseContent.getNode().getNode("ametys:formOfAssessment").getProperty("jcr:data").getString();
  //print(controleConnaissance);
  let syllabus = courseContent.getNode().getNode("ametys:syllabus").getProperty("jcr:data").getString();
  //print(syllabus);
  let competencesVisées = courseContent.getNode().getNode("ametys:skills").getProperty("jcr:data").getString();
  //print(competencesVisées);
  let infosComplementaires = courseContent.getNode().getNode("ametys:additionalInformations").getProperty("jcr:data").getString();
  //print(infosComplementaires);
 
  //Onglet Contacts
  let composantesValues = courseContent.getNode().getProperty("ametys:orgUnit").getValues();
  let composantes=[];
  for (let i = 0; i < composantesValues.length; i++) {
    composantes.push(Repository.resolver.resolveById(composantesValues[i].getString()).getNode().getProperty("ametys:title").getString());
  }
  //print(composantes);
 
  let lieuxValues = courseContent.getNode().getProperty("ametys:teachingLocation").getValues();
  let lieux=[];
  for (let i = 0; i < lieuxValues.length; i++) {
    lieux.push(Repository.resolver.resolveById(lieuxValues[i].getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString());
  }
  //print(lieux);
 
  let campusValues = courseContent.getNode().getProperty("ametys:campus").getValues();
  let campus=[];
  for (let i = 0; i < campusValues.length; i++) {
    campus.push(Repository.resolver.resolveById(campusValues[i].getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString());
  }
  //print(campus);
 
  //contact et role
  let role1=null;
  let contacts1=[];
  if(courseContent.getNode().getNode("ametys:contacts").hasNode("ametys:1"))
  {
    role1 = Repository.resolver.resolveById(courseContent.getNode().getNode("ametys:contacts").getNode("ametys:1").getProperty("ametys:role").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
    //print(role1);
    let contacts1Values = courseContent.getNode().getNode("ametys:contacts").getNode("ametys:1").getProperty("ametys:persons").getValues();
    for (let i = 0; i < contacts1Values.length; i++) {
      contacts1.push(Repository.resolver.resolveById(contacts1Values[i].getString()).getNode().getProperty("ametys:title").getString());
    }
    //print(contacts1);
  }

  let role2=null;
  let contacts2=[];
    if(courseContent.getNode().getNode("ametys:contacts").hasNode("ametys:2"))
  {
    role2 = Repository.resolver.resolveById(courseContent.getNode().getNode("ametys:contacts").getNode("ametys:2").getProperty("ametys:role").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
    //print(role2);
    let contacts2Values = courseContent.getNode().getNode("ametys:contacts").getNode("ametys:2").getProperty("ametys:persons").getValues();
    for (let i = 0; i < contacts2Values.length; i++) {
      contacts2.push(Repository.resolver.resolveById(contacts2Values[i].getString()).getNode().getProperty("ametys:title").getString());
    }
    //print(contacts2);
  }
 
  //Onglet en bref
  let labelValues = courseContent.getNode().getProperty("ametys:labellisation").getValues();
  let label=[];
  for (let i = 0; i < labelValues.length; i++) {
    label.push(Repository.resolver.resolveById(labelValues[i].getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString());
  }
  //print(label);
  let motsClésValues= courseContent.getNode().getProperty("ametys:keywords").getValues();
  let motsClés=[];
  for (let i = 0; i < motsClésValues.length; i++) {
    motsClés.push(motsClésValues[i].getString());
  }
  //print(motsClés);

  //if(courseContent.getNode().hasProperty("ametys:nbHours"))
  let volumeHoraire = courseContent.getNode().hasProperty("ametys:nbHours") ? courseContent.getNode().getProperty("ametys:nbHours").getString() : null ;
  //print(volumeHoraire);
 
  let effectif = courseContent.getNode().getProperty("ametys:maxNumberOfStudents").getString();
  //print(effectif);

  let periodeAnnée = Repository.resolver.resolveById(courseContent.getNode().getProperty("ametys:teachingTerm").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
  //print(periodeAnnée);
 
  let plageHoraire= null;
  if(courseContent.getNode().hasProperty("ametys:timeSlot") & courseContent.getNode().getProperty("ametys:timeSlot").getString() != "")
  {
    plageHoraire = Repository.resolver.resolveById(courseContent.getNode().getProperty("ametys:timeSlot").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
    //print(plageHoraire);
  }
 
  let methodeEnseignement = Repository.resolver.resolveById(courseContent.getNode().getProperty("ametys:formofteachingMethod").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
  //print(methodeEnseignement);
 
  let organisationEnseignementValues = courseContent.getNode().getProperty("ametys:formofteachingOrg").getValues();
  let organisationEnseignement=[];
  for (let i = 0; i < organisationEnseignementValues.length; i++) {
    organisationEnseignement.push(Repository.resolver.resolveById(organisationEnseignementValues[i].getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString());
  }
  //print(organisationEnseignement);
 
  let formeEnseignement= null;
  if(courseContent.getNode().hasProperty("ametys:teachingActivity") & courseContent.getNode().getProperty("ametys:teachingActivity").getString() != "")
  {
      formeEnseignement = Repository.resolver.resolveById(courseContent.getNode().getProperty("ametys:teachingActivity").getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString();
      //print(formeEnseignement);
  }
    
  let languesValues = courseContent.getNode().getProperty("ametys:teachingLanguage").getValues();
  let langues=[];
  for (let i = 0; i < languesValues.length; i++) {
    langues.push(Repository.resolver.resolveById(languesValues[i].getString()).getNode().getNode("ametys:title").getProperty("ametys:fr").getString());
  }
  //print(langues);
      
  let dateDebutCours = courseContent.getNode().getProperty("ametys:startDate").getString();
  //print(dateDebutCours);

  print(`"${count}";"${libellé}";"${codeApogee}";"${description}";"${objectifs}";"${prerequis}";"${controleConnaissance}";"${syllabus}";"${competencesVisées}";"${infosComplementaires}";"${composantes}";"${lieux}";"${campus}";"${role1}";"${contacts1}";"${role2}";"${contacts2}";"${label}";"${motsClés}";"${volumeHoraire}";"${effectif}";"${periodeAnnée}";"${plageHoraire}";"${methodeEnseignement}";"${organisationEnseignement}";"${formeEnseignement}";"${langues}";"${dateDebutCours}"`);  
    
}); 

Il faudra sans doute améliorer le script (factoriser le courseContent.getNode() sur chaque ligne, et rajouter des hasNode/hasProperty avant d'aller y faire du getValues/getString, la je ne l'ai fais que pour les quelques cas qui posaient problème dans mon jeu de test) mais j'ai quelques questions pour que ce soit plus pratique à l'usage :
Au lieu de faire un print en sortie console qui ressemble à un csv, est ce qu'il est possible de remplir directement une sortie de type fichier ?
Au lieu de faire un script est ce qu'il serait envisageable d'en faire (relativement facilement) un genre de mini plugin pour que cela soit accessible depuis le cms plutot que via la _repository ? Selectionner un des catalogues + cliquer sur un bouton => obtenir un fichier d'extraction

#6 Re: Administration » Problème de site "vide" dans une langue » 02/02/2023 18:08:40

En continuant à fouiner, j'ai regardé du coté du repository, quand je parcours l'arbre jcr je retrouve bien le site :
- les contenus que je liste via la recherche sont bien présent dans la sous partie ametys-internal:contents du site.
- le problème semble se situer dans la partie "ametys:sitemaps" , j'y retrouve bien un sous dossier "es" pour l'espagnol (comme "fr" et "en") mais il ne contient plus qu'un "ametys:acl" au lieu de contenir les différentes pages (index et autres) que je retrouve normalement sous la partie plan du site (ametys:defaultPage)

Du coup j'ai l'impression que j'ai perdu de la donnée en prod, je sais pas si c'est réparable / récupérable :-/


Par hasard, est ce qu'il y a des scripts qui permette de :
- copier une partie d'un repository
- remplacer une partie de repository (à partir des données copier par le précèdent script)

L'idée serait de pouvoir copier l'arborescence en dessous du ametys:site depuis une sauvegarde qui fonctionne et de remplacer le contenu de ce ametys:site sur le serveur de prod qui bug.

#7 Administration » Problème de site "vide" dans une langue » 02/02/2023 16:39:08

Mathieu
Replies: 2

Salut,

j'ai mis en commentaires des langues (sans faire attention pendant la migration vers la 4.4 ..) dans le fichier WEB-INF/param/languages.xml , on vient de me faire remonter le problème et j'ai donc remis l'espagnol (comme avant la migration).

Problème : lorsque l'on va sur le site, et que l'on change la langue de français à espagnol dans le plan du site, la liste des pages du site en espagnol ne s'affiche pas, il y a juste écrit plan du site et c'est vide en dessous, et au dessus tous les éléments du menu de l'onglet "page" sont grisés (sauf rafraîchir)

A priori les pages ne sont pas supprimés car elles s'affichent bien en allant dans accueil -> recherche -> Langue : Espagnol dans le critère de recherche.

A défaut de réussir à résoudre le problème, je crois que j'ai réussi à le reproduire : je vais sur la configuration d'un site, je supprime la langue et j'enregistre puis je reconfigure le site pour la remettre et cela refait le même bug de liste vide et contenu accessible via la recherche (si je ne me suis pas trompé dans mon test)

Je suppose que que c'est vaguement lié au fait que toutes les pages sont indiqués "orphelin" dans la recherche.

Une idée de comment je peux mieux diagnostiquer voir résoudre ça ?

#8 Re: Offre de formation : Ametys ODF » Erreur sur les Tables de references » 26/01/2023 10:58:34

Oui j'ai cherché dans les 2 , j'obtiens à chaque fois une erreur comme quoi c'est introuvable
J'ai aussi essayé de faire via la fonctionnalité 'script' avec la fonction Repository.resolver.resolveById qui me trouve rien non plus

Je ne comprends pas comment le système d'indexation sort ces pages ..

#9 Re: Offre de formation : Ametys ODF » Erreur sur les Tables de references » 25/01/2023 18:54:41

Salut Cédric,

la réindexation totale plante en cours de route :-/  et le planificateur de tache m'indique juste qu'il y a eu une erreur.
Mais c'est quand même tombé en marche, du coup je suppose que c'était bien ça :-)

J'ai une autre question pour le coup : en regardant les logs de la réindexation j'obtiens très régulièrement des erreurs de ce type la :


Catégorie : org.ametys.cms.content.indexing.solr.SolrIndexer
Message : Error indexing content 'defaultWebContent://XXX' in the solr server.

Emplacement : org.ametys.cms.content.indexing.solr.SolrIndexer.doIndexContents(SolrIndexer.java:1200)

Pile d'appels :
org.ametys.runtime.model.exception.UndefinedItemPathException: Unable to retrieve the value at path 'title'. There is no such item defined by the model.


Et si j'essaye d’accéder à cet item defaultWebContent://XXX via le repository j'obtiens Une erreur est survenue : impossible de retrouver le noeud ametys par son id.


Une idée d'où cela peut venir et/ou de comment je peux corriger ça ?

#10 Offre de formation : Ametys ODF » Erreur sur les Tables de references » 24/01/2023 12:36:46

Mathieu
Replies: 4

Salut,

Les tables de références ne fonctionnent pas lors de la restauration d'une sauvegarde du repository de la prod sur un serveur de test.

Au départ j'ai cherché un élément à la fois via la recherche par identifiant ( content://.... )  puis je me suis fais un petit script pour comparer de manière plus globale : 

let count = 0;
Repository.query('//element(*, ametys:content)[jcr:like(@ametys-internal:contentType,"odf-enumeration.%")]').forEach(function(content) {
   count++;
   print(`#${count} - ${content.getNode().getProperty("ametys-internal:contentType").getValues()[0].getString()} - ${content}`)
});
print(`${count} results(s)`);

J'en conclus que les données ne sont pas supprimés vu que je les retrouve bien dans le repository

Est ce que vous auriez une idée de ce qui pourrait poser problème sur la remontée de ces contenus ?
Est ce qu'il y a un fichier de configuration qu'il faut copier depuis le serveur de prod en plus du repository ? (J'ai eu vaguement le même problème sur la page des synchronisations de contenu qui planté car le fichier synchronizable-collections.xml n'était plus bon suite à la restauration du repository).

Bonne journée,
Mathieu

#12 Offre de formation : Ametys ODF » [Résolu]Javadoc » 30/09/2020 09:41:51

Mathieu
Replies: 2

Salut,

Je viens de trouvé une javadoc ici :
Mais il n'y a pas l'air d'y avoir la doc pour odf :-/
Elle est disponible ailleurs ?

Si oui je veux bien la lien :-)

Bonne journée,
Mathieu

#13 Re: Administration » [Résolu] Erreur : La reconstruction du workspace live a échoué. » 06/11/2018 11:24:22

Bonjour Cédric.

J'ai essayé de supprimer le répertoire live mais plus rien ne fonctionne ensuite :
Au premier redémarrage j'obtiens cette erreur :
javax.jcr.NoSuchWorkspaceException: live (Cela recrée bien un dossier live, mais globalement vide, sans le dossier index à l'intérieur et le dossier db pratiquement vide)

Puis si je redémarre de nouveau le tomcat j'obtiens cette erreur :
javax.jcr.RepositoryException: workspace 'live' already exists.


En solution de contournement (qui semble fonctionner), j'ai crée un nouveau site à partir du site qui posait problème (ce qui créer une copie donc), puis j'ai inversé les adresses du site originale avec la copie

Bonne journée,
Mathieu

#14 Administration » [Résolu] Erreur : La reconstruction du workspace live a échoué. » 31/10/2018 12:29:43

Mathieu
Replies: 2

Bonjour,

(Toujours la version 3 d'Ametys)

je rencontre un problème de reconstruction du live d'un des sites.
J'obtiens l'erreur suivante :

javax.jcr.ItemNotFoundException: 4b686320-54bb-41f8-a8d0-7adc3c7b34fb
    at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:384)
    at org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:669)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:680)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
    at org.apache.jackrabbit.core.NodeImpl.removeChildNode(NodeImpl.java:608)
    at org.apache.jackrabbit.core.ItemRemoveOperation.perform(ItemRemoveOperation.java:78)
    at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
    at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
    at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:322)
    at org.ametys.web.live.SitePopulator._cloneSiteNode(SitePopulator.java:181)
    at org.ametys.web.live.SitePopulator._populate(SitePopulator.java:133)
    at org.ametys.web.live.SitePopulator.populate(SitePopulator.java:103)
    at org.ametys.web.live.RebuildLiveComponent.rebuildLive(RebuildLiveComponent.java:188)
    at org.ametys.web.site.BuildLiveAction.act(BuildLiveAction.java:62)
    at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:125)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
    at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
    at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
    at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:65)
    at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
    at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:137)
    at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:86)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:579)
    at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:280)
    at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:481)
    at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
    at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
    at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
    at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
    at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
    at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
    at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
    at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1159)
    at org.ametys.runtime.servlet.RuntimeServlet._doService(RuntimeServlet.java:135)
    at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:92)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

Je suis aller dans le repository, j'ai trouvé le noeud en question, je me suis dis qu'il était peut être "corrompu" pour une raison quelconque ...  (Pour info : Il s'agit d'un service "page externe : iframe")
Je suis aller le voir dans le cms, il avait l'air d’être bon, dans le doute je l'ai supprimé puis recrée, il a l'air identique a avant.

Et au moment de reconstruire le live, il y a toujours la même erreur...
Par contre assez logiquement il n'y est plus désormais lorsque l'on regarde dans le repository.

Du coup je suppose que le problème viens d'ailleurs que le nœud indiqué et je m'oriente plutôt vers un problème de rafraîchissement de ce qu'il doit générer ?

J'ai regardé dans les logs ( /cms/WEB-INF/logs ) , j'obtiens l'erreur suivante :

2018-10-31 11:15:55,826 ERROR [sitemap] (http-bio-8080-exec-11;/cms/_admin/plugins/core/servercomm/messages.xml) Can not dispatch request '0' : 'web' '/sites/build-preview' '{siteName=intranet}'
org.apache.cocoon.util.location.LocatedException: Can not dispatch request '0' : 'web' '/sites/build-preview' '{siteName=intranet}'
        at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:167)
        at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:86)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:579)
        at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:280)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:481)
        at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
        at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1159)
        at org.ametys.runtime.servlet.RuntimeServlet._doService(RuntimeServlet.java:135)
        at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:92)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.excalibur.source.SourceException: Cannot get input stream for cocoon://_plugins/web/sites/build-preview?siteName=intranet&
        at org.apache.cocoon.components.source.impl.SitemapSource.getInputStream(SitemapSource.java:253)
        at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:140)
        ... 56 more
Caused by: org.xml.sax.SAXException: Could not get sitemap source cocoon://_plugins/web/sites/build-preview?siteName=intranet&
org.apache.cocoon.ProcessingException: Sitemap: error when calling sub-sitemap
        at <map:mount> - resource://org/ametys/web/sitemap.xmap:35:106
        at <map:mount> - resource://org/ametys/runtime/kernel/sitemap.xmap:149:82
        at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:380)
        at org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215)
        at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:65)
        at org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208)
        at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        at org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558)
        at org.ametys.runtime.plugins.core.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:137)
        ... 56 more
Caused by: org.apache.cocoon.ProcessingException: Sitemap: error when calling sub-sitemap
        at <map:mount> - resource://org/ametys/web/sitemap.xmap:35:106
        at <map:mount> - resource://org/ametys/runtime/kernel/sitemap.xmap:149:82
        at org.apache.cocoon.ProcessingException.throwLocated(ProcessingException.java:113)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:122)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
        at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333)
        ... 63 more
Caused by: javax.jcr.ItemNotFoundException: 4b686320-54bb-41f8-a8d0-7adc3c7b34fb
        at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:384)
        at org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:669)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:680)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:681)
        at org.apache.jackrabbit.core.NodeImpl.removeChildNode(NodeImpl.java:608)
        at org.apache.jackrabbit.core.ItemRemoveOperation.perform(ItemRemoveOperation.java:78)
        at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
        at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
        at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:322)
        at org.ametys.web.live.SitePopulator._cloneSiteNode(SitePopulator.java:181)
        at org.ametys.web.live.SitePopulator._populate(SitePopulator.java:133)
        at org.ametys.web.live.SitePopulator.populate(SitePopulator.java:103)
        at org.ametys.web.live.RebuildLiveComponent.rebuildLive(RebuildLiveComponent.java:188)
        at org.ametys.web.site.BuildLiveAction.act(BuildLiveAction.java:62)
        at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:125)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111)
        ... 83 more
2018-10-31 11:16:31,143 ERROR [sitemap.handled-errors] (http-bio-8080-exec-7;/cms/generate/vie/_resources/documents/archives%20newsletter%20n1%20%C3%A0%20n99/lettre%20de%20l'%20n01%2020-09-2010.pdf) Failed to process reader
        at <map:read type="ametys-resource"> - resource://org/ametys/web/workspace/sitemap.xmap:600:54
        at <map:mount> - resource://org/ametys/runtime/kernel/sitemap.xmap:204:109
org.apache.cocoon.ProcessingException: Failed to process reader
        at <map:read type="ametys-resource"> - resource://org/ametys/web/workspace/sitemap.xmap:600:54
        at <map:mount> - resource://org/ametys/runtime/kernel/sitemap.xmap:204:109
        at org.apache.cocoon.ProcessingException.throwLocated(ProcessingException.java:113)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.handleException(AbstractProcessingPipeline.java:957)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupReader(AbstractProcessingPipeline.java:602)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:499)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:453)
        at org.apache.cocoon.components.treeprocessor.sitemap.ReadNode.invoke(ReadNode.java:85)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:139)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.handleCocoonRedirect(ConcreteTreeProcessor.java:300)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.access$000(ConcreteTreeProcessor.java:49)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor$TreeProcessorRedirector.cocoonRedirect(ConcreteTreeProcessor.java:348)
        at org.apache.cocoon.environment.ForwardRedirector.redirect(ForwardRedirector.java:60)
        at org.apache.cocoon.components.treeprocessor.sitemap.RedirectToURINode.invoke(RedirectToURINode.java:70)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47)
        at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
        at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69)
        at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236)
        at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178)
        at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254)
        at org.apache.cocoon.Cocoon.process(Cocoon.java:699)
        at org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1159)
        at org.ametys.runtime.servlet.RuntimeServlet._doService(RuntimeServlet.java:135)
        at org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:92)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.ametys.plugins.repository.UnknownAmetysObjectException: There's no object at path documents from path /ametys-internal:sites/vie/ametys-internal:resources
        at org.ametys.plugins.repository.jcr.TraversableAmetysObjectHelper.getChild(TraversableAmetysObjectHelper.java:150)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory.getChild(DefaultTraversableAmetysObjectFactory.java:51)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObject.getChild(DefaultTraversableAmetysObject.java:61)
        at org.ametys.plugins.repository.AmetysObjectResolver._resolve(AmetysObjectResolver.java:385)
        at org.ametys.plugins.repository.AmetysObjectResolver.resolve(AmetysObjectResolver.java:347)
        at org.ametys.plugins.repository.jcr.TraversableAmetysObjectHelper.getChild(TraversableAmetysObjectHelper.java:132)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory.getChild(DefaultTraversableAmetysObjectFactory.java:51)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObject.getChild(DefaultTraversableAmetysObject.java:61)
        at org.ametys.plugins.repository.AmetysObjectResolver._resolve(AmetysObjectResolver.java:385)
        at org.ametys.plugins.repository.AmetysObjectResolver.resolve(AmetysObjectResolver.java:347)
        at org.ametys.plugins.repository.collection.AmetysObjectCollectionFactory.getObject(AmetysObjectCollectionFactory.java:148)
        at org.ametys.plugins.repository.collection.AmetysObjectCollection.getChild(AmetysObjectCollection.java:121)
        at org.ametys.plugins.repository.AmetysObjectResolver._resolve(AmetysObjectResolver.java:385)
        at org.ametys.plugins.repository.AmetysObjectResolver.resolve(AmetysObjectResolver.java:347)
        at org.ametys.plugins.repository.jcr.TraversableAmetysObjectHelper.getChild(TraversableAmetysObjectHelper.java:132)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory.getChild(DefaultTraversableAmetysObjectFactory.java:51)
        at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObject.getChild(DefaultTraversableAmetysObject.java:61)
        at org.ametys.plugins.repository.AmetysObjectResolver._resolve(AmetysObjectResolver.java:385)
        at org.ametys.plugins.repository.AmetysObjectResolver.resolve(AmetysObjectResolver.java:199)
        at org.ametys.plugins.explorer.resources.readers.AmetysResourceReader.setup(AmetysResourceReader.java:101)
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupReader(AbstractProcessingPipeline.java:595)
        ... 68 more

Je ne sais pas trop comment interpréter ce message  sad , si vous avez une idée ça m'aiderait  big_smile

Bonne journée,
Mathieu

#15 Re: Administration » [Résolu] Restore Backup » 18/09/2018 10:34:55

Je crois que j'ai des bugs qui traine ici et la mais qui n'ont pas de rapport ..

Il suffisait que je me mette comme manager des sites  roll

#16 Administration » [Résolu] Restore Backup » 17/09/2018 17:23:04

Mathieu
Replies: 2

Salut smile

Version : toujours en v3 :'(

J'ai un probleme en restorant un backup de mon repository

J'obtiens bien la liste de tous les sites du backup quand je suis dans cette page cms/_admin/_plugins/web/administrator/sites/view.html

Sauf que lorsque je clique sur "Ouvrir en tant que contributeur", au lieu d'arriver sur le site voulu, j'atterris sur la page cms/index.html qui me donne la liste (reduite) des sites avant restoration..
Du coup j'ai l'impression que le front ne se rafraichit pas sad

Lorsque je vais sur la page _admin pour voir l'admin du front office, j'obtiens une erreur :
An error occurred. Please contact the administrator of the application.net.sf.ehcache.ObjectExistsException: Cache cocoon-ehcache-1 already exists

Une idée du probleme et de comment le resoudre ?

Bonne journée,
Mathieu

#17 Re: Développement » Générer et afficher la premiere page d'un pdf mis en téléchargement » 29/06/2018 09:45:51

Salut,

- pour la fonction replace, je crois que c'est un problème de version de xpath/xslt en v1 au lieu de v2

- pour la fonction translate, il me semble qu'elle sert a faire un remplacement caractère par caractère.Tous les t deviennent des p , puis tous les a des h, et ainsi de suite , ce qui n'est pas du tout ce que tu veux faire. (et vu qu'il y a moins de caractère à droite, je ne sais pas trop ce que ça fait pour les caractères en trop à gauche..)

-pour remplacer une chaîne de caractère par une autre, il y a l'air d'y avoir plusieurs solutions sur cette page : 

Celle qui m'a l'air la plus simple : dans la balise stylesheet mettre :

xmlns:xalan="http://xml.apache.org/xalan"
xmlns:str="xalan://java.lang.String"
<xsl:value-of select="str:replaceAll(
  '/preview/www/_plugins/flipbook/www/resources//ODF/plaquette/licence/UFR%2520Langues/licence-allemand-u-bordeaux-montaigne.pdf/pages/thumbnail_0x0.png',
  'thumbnail_0x0.png',
  'page1.png'
    
)"/>

Par contre, je ne sais pas si il y a une fonction vaguement équivalente déjà inclus dans AmetysXsltHelper ou pas

Bonne journée smile
Mathieu

#18 Développement » Page personnelle multi langue | verifier qu'une page existe » 12/06/2018 16:23:28

Mathieu
Replies: 0

Bonjour,

Je cherche à faire apparaître les petits drapeaux des différentes langues sur les pages personnelles (pour mettre un lien vers la page personnelle dans les autres langues) (toujours en v3)

Le fichier que j'ai modifié : skins/nom_du_skin/stylesheets/content/person/person.xsl

Je suis arrivé au code suivant :

<xsl:template name="affiche_drapeaux">
  <!-- on liste les differentes langues possibles -->
  <xsl:variable name="raw_liste_langues">
    <xsl:element name="langue">fr</xsl:element>
    <xsl:element name="langue">en</xsl:element>
    <xsl:element name="langue">es</xsl:element>
  </xsl:variable>
  <xsl:variable name="liste_langues" select="exsl:node-set($raw_liste_langues)"/>
  
  <!-- pour chacune des langues on crée un drapeau qui redirige vers la page dans la langue du drapeau -->
  <xsl:for-each select="$liste_langues/langue">
    <!-- on ne met pas un drapeau qui renvoie vers la langue actuellement utilisé --> 
    <xsl:if test=" . != $lang">
      <a title="skin.{$skin}:SKIN_TRANSLATION_{.}" i18n:attr="title" href="{$site-uri-prefix}/{.}/~{$login}"> 
        <img alt="skin.{$skin}:SKIN_TRANSLATION_{.}" i18n:attr="title" src="/skins/{$skin}/resources/img/translation/{.}.png" width="14" height="11"></img>
      </a>
    </xsl:if>
  </xsl:for-each>
</xsl:template>

Cela m'affiche bien les drapeaux  cool  mais je ne sais pas comment vérifier que la page existe bien dans les autres langues  hmm (en l'état, ça génère donc des liens morts roll )

Est ce qu'il y a un moyen de vérifier que la page existe ? (Sachant que je n'ai que son URL : {$site-uri-prefix}/{.}/~{$login} )

Bonne journée,
Mathieu

#19 Re: Offre de formation : Ametys ODF » Surcharge d'un service ? » 04/06/2018 14:48:19

Bonjour Raphaël,

comme indiqué dans le premier lien que vous donnez, au paragraphe "Créer un rendu supplémentaire" ; vous pouvez ajouter un fichier ".xml" de même nom que la ".xsl" qui va pouvoir contenir un joli libellé pour votre vue

Oui j'avais essayé, mais j'avais obtenu un rendu bizarre avec le nom du skin qui précédait mon libellé. J'avais donc "résolu" le problème en mettant directement le jolie libellé (en français) dans le nom du fichier avant le xsl  roll .
En re testant je viens de comprendre, le problème venait du i18n="true" alors que dans mon cas ça doit être i18n="false" vu que je met directement le libellé en français. C'est un peu plus propre maintenant mais du coup je passe de 10 à 20 fichiers au lieu de 10 à 5 tongue

Concernant l'ordre du tri, c'est vrai que je n'ai pas la réponse sous les yeux smile mais je dirai que comme on ne retri pas, cela doit correspondre à l'ordre des fichiers sur le disque...

A priori ça n'utilise pas le nom des fichiers, ni les numéros d'inode.

Pour la seconde partie, surcharger un service est assez lourd à faire et nécessiterait de la migration.
Ce qui vous intéresserait dans votre cas, serait les "paramètres de vue" qui malheureusement n'existent pas... mais c'est une chose qui serait très intéressante et je vous invite aussi à créer une proposition d'évolution (je pensais que le ticket existait déjà, mais je ne l'ai pas retrouvé)

Ah zut, j’espérais que ça serait un peu le même principe que la surcharge de contenu, je pensais pouvoir rajouter un code du style du coté surcharge du service :

<parameter name="Liste_ouverte" type="boolean">
  <label i18n="true">Afficher la liste ? </label>
  <description i18n="true"> Permet de choisir si l'on laisse réduit (ou non) la liste des formations </description>
</parameter>

puis de le récupérer dans mes xsl via un

<xsl:param name="Liste_ouverte" select="ametys:serviceParameter('Liste_ouverte')"/>

Merci pour les infos smile
Mathieu

#20 Offre de formation : Ametys ODF » Surcharge d'un service ? » 04/06/2018 11:27:16

Mathieu
Replies: 2

Bonjour,

En utilisant :
et


j'ai pu ajouter une dizaine de variantes dans le dossier skin/nom_skin/services/odf-web/pages/services/program-list/

A priori cela marche plutôt bien, mais j'ai deux petites questions pour éventuellement améliorer la chose :

- Lorsque je configure le service, la liste des affichages utilise le nom de mes fichiers (sans le .xsl), est ce qu'il y a une astuce pour que la liste qui s'affiche soit ordonné alphabétiquement ?
Par défaut ça ne m'a pas l'air d'être trié (ou si ça l'est je ne sais pas comment) ce qui demande un peu plus de temps pour trouver le bon élément, du coup ce n'est pas super userfriendly  hmm

- Est ce qu'il est possible de surcharger le service pour ajouter des paramètres ?
Je suppose que il faudrait me baser sur ça :  mais je ne sais pas où le surcharger :s
J'aimerai rajouter une checkbox pour choisir si l'on doit afficher toute la liste des formations directement ou la laisser réduite comme c'est le cas par défaut. (Cela me permettrait de réduire par 2 la liste des variantes des program-list_1.3.xsl)

Bonne journée smile
Mathieu

#21 Re: Offre de formation : Ametys ODF » Ajouter un référentiel propre à l'établissement » 23/05/2018 17:11:00

Salut,

Tu utilises quelle version ? (Je n'ai pas réussi à migrer mes données de la v3 à la v4 donc je ne sais pas si cela à changer en v4 ou pas..)

En v3, j'avais besoin de faire une petite modification pour pouvoir sélectionner plusieurs code NSF, du coup j'avais du créer le fichier WEB-INF/param/content-types/_override/org.ametys.plugins.odf.Content.program.xml 
Je pense que cela sera probablement la même chose pour toi smile (Peut être voir aussi du coté du fichier WEB-INF/param/odf-enumeration.xml )

Le poste que j'avais crée si tu veux lire un peu les détails : 

Bon courage,
Mathieu

#22 Re: Administration » Migration v4 » 17/05/2018 08:27:45

Bonjour,

Désolé Raphaël, je ne l'avais pas compris comme ça, je pensais que le "upgrading" faisait référence à "Ametys" du début de phrase ("Faire une mise à jour d'Ametys d'une version à une autre est très simple), pas à "plugins and extensions" de la fin de phrase ("Faire une mise à jour des plugins et extensions d'une version (d'Ametys) à une autre version (d'Ametys) est très simple")

Enfin peu importe, je vais continuer à attendre une solution pour pouvoir garder les données en passant de la version 3 à la version 4 d'ametys pour ne avoir à repartir de 0 avec la version 4.

Bonne journée,
Mathieu

#23 Re: Administration » Migration v4 » 14/05/2018 08:14:21

Bonjour,

je viens pour avoir des nouvelles sur l'avancée (ou non) d'une solution pour passer de la version 3 à la version 4 ?

Petite citation d'un post que je viens de lire roll :

Raphaël Franchet wrote:

Ametys is different (better smile) thanother products: you never have to change it in order to add your own features... all is based on plugins and extensions. Thanks to this, upgrading from a version to another version is quite simple.

Bonne journée,
Mathieu

#24 Re: Paramétrage et intégration » [Résolu] Passage en HTTPS » 29/03/2018 14:29:18

Bonjour,

Au milieu des erreurs des floods de bots, j'ai fini par trouver l'erreur dans les logs :  javax.net.ssl.SSLException: hostname in certificate didn't match : <url_front_office> != <url1_apache>

Dans la configuration du back office, pour l'adresse du site web de front office, j'ai du mettre l'adresse qui est la première dans la liste des sites enable d'apache (et accessoirement changer l'adresse qui était en 1ere dans apache vu que ce n'était pas une adresse du cms)

Cette fois ci ça m'a l'air bon, plus qu'a me remettre en attente d'un script pour passer le repository de la v3 à la v4  smile

Merci pour votre aide et bonne journée,
Mathieu

#25 Re: Paramétrage et intégration » [Résolu] Passage en HTTPS » 28/03/2018 17:43:34

Bonjour,

j'ai crié victoire trop vite  sad

Nouveau problème suite au passage en https : Si l'on modifie une page dans le back-office, elle n'est pas mise à jour pour les visiteurs  hmm .

J'ai vérifié que la page est bien modifiée dans le back-office : je vois la modification aussi bien dans la partie où l'on saisie que via /cms/preview et via /cms/live

Je suppose que le cache du tomcat du front-office ne se met plus à jour lorsque l'on fait des modifications de page dans le back-office
Lorsque je redémarre le tomcat du front-office, cela rafraichit son cache et les visiteurs peuvent accéder aux modifications.
Coté back-office, j'ai essayé de vider le cache, de reconstruire le live du site, de mettre à 0 le durée du cache dans les paramètres, cela n'a l'air d'avoir aucune influence sur le front-office..

Je n'ai pas trouvé comment voir les échanges qu'il peut y avoir entre le back office et le front office pour la gestion du cache

Bonne soirée,
Mathieu

Board footer

Powered by FluxBB