Ajout page de présentation de modèle dans Builder

Bonjour,

Je viens d’essayer de créer le début d’une documentation intégrée pour mon modèle Organigramme. Je parle de la doc de présentation qui s’affiche sur la partie édition d’un modèle quand on ouvre un atelier.
Le squelette de doc est fait avec SWAD comme les documentations des modèles classiques et publié sur mon dépôt scenari en dossier public. J4ai testé l’accès en mode navigation privée et sans authentification et on peutlirela doc.
J’ai ajouté dans mon packmake les infos suivantes :

	<sm:homeSite name=";Organigramme Accueil">
		<sm:embeddedSite mainFile=";index.html" remoteUrl="https://scenari.univ-lille.fr/public/scenari/modeles/organigramme/presentation-organigramme/"/>
	</sm:homeSite>

A la compilation du modèle j’ai une faal error (valeur par défaut du sm:embeddedSite en cas de souci sur la remoteUrl. J’ai le log ci-dessous. Je suppose que c’est la manière dont j’ai déposé la ressource.
Si vous pouviez me dire ce qu’il faut faire.

Merci d’avance
Franck

Une erreur est survenue lors de la génération.

— Admin details —

<?xml version="1.0" encoding="UTF-8"?>
<start t="26/06/26 18:04:00"/>
<l t="FatalError" d="26/06/26 18:04:02">
	<message type="FatalError" ts="1782489842488" appCtx="chain" thread="ForkJoinPool-1-worker-6" desc="Anomaly in the generation of the sub-generator '%s' (in %s)." var1="buildModel" var2="/tmp/model/A6MeCav8Wlj1hh69aeJv4e">
		<message type="FatalError" ts="1782489841582" thread="ForkJoinPool-1-worker-6 FROM ForkJoinPool-1-worker-6" desc="Echec à la transformation de la ressource 'src=src:/50_organigramme/organigram/organigramme.wspdef;logLevel=FatalError;unzip=true;dst=models/_wspDef/res/eUJ2kPGbUsb5SZAetADKah;transform=facet&amp;facet=remoteContent&amp;outType=CONTENT&amp;location=https%3A%2F%2Fscenari.univ-lille.fr%2Fpublic%2Fscenari%2Fmodeles%2Forganigramme%2Fpresentation-organigramme' dans &lt;dialog cdAction=&quot;Exe&quot; param=&quot;null&quot; class=&quot;HDialogPages&quot;&gt;&lt;agent uri=&quot;@\50_organigramme\organigram\organigramme.wspdef;/wuiContents/wspType.js&quot; class=&quot;HAgentPages&quot;&gt;&lt;agtType code=&quot;wspType.js&quot; xpathRoot=&quot;&quot; src=&quot;/~param/sc/modeling/gen/modelBuilder/bs/sm_wspDefinition.xml&quot; class=&quot;HComposantTypePages&quot;/&gt;&lt;agtBag agtBagId=&quot;\50_organigramme\organigram\organigramme.wspdef;&quot; /&gt;&lt;/agent&gt;&lt;/dialog&gt;.">
			<message type="Error" ts="1782489841582" thread="ForkJoinPool-1-worker-6 FROM ForkJoinPool-1-worker-6" desc="Unzip failed.">
				<message type="Error" ts="1782489841581" thread="ForkJoinPool-1-worker-6 FROM ForkJoinPool-1-worker-6" desc="Get shared FileSystem failed for: jar:file:///C:/_F/noSync/SCgen/scb64/allInOne/50_organigramme/organigram/organigramme.packMake/buildPack/tmp/model/A6MeCav8Wlj1hh69aeJv4e/wui/models/_wspDef/res/7033621572109801641.zip">
					<message type="Exception" ts="1782489841581" thread="ForkJoinPool-1-worker-6 FROM ForkJoinPool-1-worker-6" desc="zip END header not found">
						<details>java.util.zip.ZipException: zip END header not found
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.findEND(ZipFileSystem.java:1320)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1541)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.&lt;init&gt;(ZipFileSystem.java:179)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getZipFileSystem(ZipFileSystemProvider.java:125)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:106)
at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:339)
at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:288)
at eu.scenari.commons.util.path.SharedFs.&lt;init&gt;(SharedFs.java:112)
at eu.scenari.commons.util.path.SharedFs.lambda$getFs$0(SharedFs.java:79)
at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1955)
at eu.scenari.commons.util.path.SharedFs.getFs(SharedFs.java:76)
at eu.scenari.commons.util.path.PathUtils.unzip(PathUtils.java:375)
at com.scenari.m.builder.gen.HModelGenerator.copyXxxPath2DestUri(HModelGenerator.java:1551)
at com.scenari.m.ge.agent.AgentNavigableBase.computeAsData(AgentNavigableBase.java:283)
at com.scenari.m.ge.agent.AgentNavigableBase.computeAsString(AgentNavigableBase.java:339)
at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:100)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:392)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:432)
at eu.scenari.xml.xalan.templates.ElemValueOf.execute(ElemValueOf.java:276)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemChoose.execute(ElemChoose.java:170)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemTemplate.execute(ElemTemplate.java:412)
at eu.scenari.xml.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:227)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java:1133)
at eu.scenari.xml.xalan.templates.ElemVariable.getValue(ElemVariable.java:305)
at eu.scenari.xml.xalan.templates.ElemVariable.execute(ElemVariable.java:280)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemChoose.execute(ElemChoose.java:170)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemTemplate.execute(ElemTemplate.java:412)
at eu.scenari.xml.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:227)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transformToRTF(TransformerImpl.java:1133)
at eu.scenari.xml.xalan.templates.ElemVariable.getValue(ElemVariable.java:305)
at eu.scenari.xml.xalan.templates.ElemVariable.execute(ElemVariable.java:280)
at eu.scenari.xml.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java:458)
at eu.scenari.xml.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:207)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemIf.execute(ElemIf.java:189)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:536)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:536)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1348)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:748)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:388)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:689)
at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.xExecuteXsl(WDonneeXslOnSrcDynamique.java:134)
at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.writeValue(WDonneeXslOnSrcDynamique.java:107)
at com.scenari.m.ge.pages.JsXmlPage.xWritePage(JsXmlPage.java:119)
at com.scenari.m.ge.pages.BasePage.producePage(BasePage.java:158)
at com.scenari.m.ge.generator.base.TemplatesMgr.producePage(TemplatesMgr.java:298)
at com.scenari.m.ge.generator.base.GeneratorStatic.wTreatStackPages(GeneratorStatic.java:186)
at com.scenari.m.builder.gen.HModelGenerator.xGenerateWui(HModelGenerator.java:2504)
at com.scenari.m.builder.gen.HModelGenerator.xGenerate(HModelGenerator.java:2006)
at eu.scenari.gen.GenStatic.generate(GenStatic.java:262)
at eu.scenari.wsp.module.gen.ThreadGen.call(ThreadGen.java:181)
at eu.scenari.wsp.module.gen.ThreadGen.synchRun(ThreadGen.java:232)
at eu.scenari.wsp.agt.agent.callgen.AgtCallGenDialog.producePage(AgtCallGenDialog.java:369)
at com.scenari.m.ge.generator.base.TemplatesMgr.producePage(TemplatesMgr.java:298)
at com.scenari.m.ge.generator.base.GeneratorStatic.wTreatStackPages(GeneratorStatic.java:186)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at eu.scenari.xml.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:342)
at eu.scenari.xml.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:273)
at eu.scenari.xml.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:189)
at com.scenari.m.co.xpath.dom.ZXPathExecute.xExecute(ZXPathExecute.java:84)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:392)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:432)
at eu.scenari.xml.xalan.templates.ElemValueOf.execute(ElemValueOf.java:276)
at eu.scenari.xml.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:1440)
at eu.scenari.xml.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1348)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:748)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:388)
at eu.scenari.xml.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:689)
at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.xExecuteXsl(WDonneeXslOnSrcDynamique.java:134)
at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.writeValue(WDonneeXslOnSrcDynamique.java:107)
at com.scenari.m.co.donnee.WDonneeXslOnSrcDynamique.getString(WDonneeXslOnSrcDynamique.java:93)
at eu.scenari.core.agt.agent.value.AgtValue.xComputeCache(AgtValue.java:203)
at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:171)
at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:100)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.functions.FuncConcat.execute(FuncConcat.java:122)
at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:98)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at com.scenari.m.co.xpath.dom.ZXPathJson2Dom.xExecute(ZXPathJson2Dom.java:83)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at com.scenari.m.ge.xpath.dom.ZXPathInitBuffer.xExecute(ZXPathInitBuffer.java:91)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:392)
at com.scenari.m.co.donnee.WDonneeXPath.xGetValue(WDonneeXPath.java:239)
at com.scenari.m.co.donnee.WDonneeXPathDynamique.getString(WDonneeXPathDynamique.java:70)
at eu.scenari.core.agt.agent.value.AgtValue.xComputeCache(AgtValue.java:203)
at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:171)
at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:100)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at com.scenari.m.co.xpath.dom.ZXPathExecute.xExecute(ZXPathExecute.java:84)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.functions.FuncConcat.execute(FuncConcat.java:121)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:392)
at com.scenari.m.co.donnee.WDonneeXPath.xGetValue(WDonneeXPath.java:239)
at com.scenari.m.co.donnee.WDonneeXPathDynamique.getString(WDonneeXPathDynamique.java:70)
at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:184)
at com.scenari.m.co.xpath.dom.ZXPathComputeStrAgent.xExecute(ZXPathComputeStrAgent.java:100)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at com.scenari.m.co.xpath.dom.ZXPathReturnFirstExpr.xExecute(ZXPathReturnFirstExpr.java:102)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at com.scenari.m.co.xpath.dom.ZXPathReturnFirst.xExecute(ZXPathReturnFirst.java:84)
at com.scenari.m.co.xpath.dom.ZXPath.execute(ZXPath.java:90)
at eu.scenari.xml.xpath.functions.FunctionDef1Arg.getArg0AsString(FunctionDef1Arg.java:137)
at eu.scenari.xml.xpath.functions.FuncNormalizeSpace.execute(FuncNormalizeSpace.java:179)
at eu.scenari.xml.xpath.functions.FuncSubstring.execute(FuncSubstring.java:118)
at eu.scenari.xml.xpath.XPath.execute(XPath.java:392)
at com.scenari.m.co.donnee.WDonneeXPathOnSrcDynamique.getString(WDonneeXPathOnSrcDynamique.java:91)
at eu.scenari.core.agt.agent.value.AgtValue.computeAsString(AgtValue.java:184)
at com.scenari.m.co.ant.ResultatTask.execute(ResultatTask.java:98)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:184)
at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:104)
at com.scenari.m.ge.generator.ant.AntGenerator.xGenerate(AntGenerator.java:460)
at eu.scenari.gen.GenStatic.generate(GenStatic.java:262)
at eu.scenari.wsp.module.gen.ThreadGen.call(ThreadGen.java:181)
at eu.scenari.wsp.module.gen.ThreadGen.run(ThreadGen.java:168)
at eu.scenari.core.universe.Universe$2.run(Universe.java:472)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

— Context —
reg: {« envKeys »:[« itemType »,« securityCtx »],« parent »:{« envKeys »:[« wsp »,« securityCtx »,« uiRoot »,« place »,« infoBroker »,« wedSearchCoord »,« histoEditMgr »],« parent »:{« envKeys »:[« resolver »,« universe »,« securityCtx »],« parent »:{« envKeys »:[« resolver »,« noAuthentication »,« remoteAuthentications »,« embeddedAuthentication »,« universe »,« securityCtx »]}}}}
uiContext: undefined
wsp: undefined
shortDesc: {« srcUri »:« /50_organigramme/organigram/organigramme.packMake »,« srcSt »:1,« srcDt »:1782490515128,« srcRi »:511,« srcRoles »:[« ~default »,« main:~fallback »],« gitSt »:-1,« itSt »:1,« itSgn »:« @sm_packMake »,« itModel »:« sm_packMake »}
pubNode: {}
genInfo: {« codeGenStack »:« buildPack »,« title »:« wsppack compilation »,« status »:« failed »,« lastGen »:1782489845034,« uriPub »:« /allInOne/50_organigramme/organigram/organigramme.packMake/buildPack/pack »,« localPathPub »:« C:\_F\noSync\SCgen\scb64\allInOne\50_organigramme\organigram\organigramme.packMake\buildPack\pack »,« uriTraces »:« /allInOne/50_organigramme/organigram/organigramme.packMake/buildPack/meta/~Traces.xml »,« user »:«  »}
genProps: undefined
customDestPath: undefined
cidInfo: null

— App context —
url: http://127.0.0.1:50510/~~static/fr-FR/home.xhtml#(wsp’allInOne’srcRef’%2F50_organigramme%2Forganigram%2Forganigramme.packMake’),
timestamp: 6/26/2026, 6:24:50 PM
userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) SCENARIbuilder6.4/6.4.5-final.202601281104 Chrome/136.0.7103.177 Electron/36.9.5 Safari/537.36

Bonjour Franck,

Tu as bien déclaré le fichier .props dans le packMake ?

Voici l’exemple d’Opale (même si j’imagine que tu es en mode embbededSite - localDefinition) :

Salut Franck

Tu as paramétré un sm:embeddedSite ce qui signifie que SCENARIbuilder s’attend à trouver un zip d’une publication téléchargeable à l’adresse @remoteUrl. Or, ton adresse Organigramme propose le site dézippé.

Un sm:homeSite peut soit être un :

  • site distant - sm:remoteSite : dans ce cas SCENARIchain chargera le site distant dans un iframe.
  • site embarqué - sm:embeddedSitedans ce cas SCENARIbuilder récupère le zip du site à l’url indiqué pour l’embarquer dans le wsppack produit.

De mon point de vue, il est préférable qu’un sm:homeSite soit embarqué, car dans ce cas, il reste accessible même si l’auteur est offline.

Si tu regardes comment est paramétré Opale (/l10n/fr-FR/opale.packmake):


Ou le fichier de props /_model.props apporte les variables suivantes :

On voit que sm:homeSite est un sm:embeddedSite à l’adresse https://doc.scenari.software/Opale@26/md/fr-FR/presWsp . Si tu ouvres cette URL, ton navigateur va télécharger un ZIP contenant un fichier index.xhtml à sa racine.

Dans le cas des chaines éditoriales libres tel qu’Opale etc, ça va encore un peu plus loin : même si le presSite est embarqué, celui-si pointe quand-même des sections qui restent distantes (Contenus exemples, Autres extensions et Nouveautés).
Pour cela, il faut :

  • les déclarer comme tel dans SWAD :
  • Définir l’URL distant à laquelle ils seront disponibles dans les méta du .pub :
  • Y déposer le résultat de la génération SCENARI presSite - Sections :
  • Et enfin déposer le ZIP de la génération SCENARI presSite - Modèle à l’adresse déclarée dans le packmake

Hello CAC,
Pour répondre à ta question, oui j’ai bien déclaré un fichier .props.
Je vais voir le message de SAM car j’avais bien vu qu’il y avait une question de version archivée ou pas mais pas eu le réflex d’aller plus loin.
Je vous tien au courant.

merci pour vos pistes.
A+
Franck

Salut Sam,

Bon j’ai ajouté une variable docUrl dans mon fichiers .props du modèle pour avoir une adresse générique en un seul endroit. Tout ça c’est ok. Pour le moment, je me suis contenté de contenu interne et pas distant. Et j’ai déposé le zip de la présentation sur le dépot Scenari sous le nom presWsp.zip (par mimétisme).
Dans le remoteUrl j’ai indiqué §§docUrl§§_v§§major§§/presWsp.zip/

Et le souci reste le même à la compilation du wsppack. J’ai l’impression que le fait de déposer sur le dépôt ça interprète le zip et donc au moment de la compilation du pack il ne sait pas effectuer de unzip puisque le dépôt lui livre son contenu.
Est-ce que la doc dans le contexte « remoteUrl », peut être poussée sur un SCDépôt ?

A+

Il ne faut pas déposer en tant qu’archive web, mais en tant que fichier simple.

Le / en fin d’URL n’a pas de sens. SCENARIbuilder doit télécharger un zip, pas son contenu.

Dans SuiteStarter, quand tu déposes la ressource, il faut choisir Fichier simple :

Ok j’ai bien déposé en tant que simple fichier ce que je n’avais pas fait jusque là et viré le « / » final.
La compilation du pack est ok mais si je déploie le pack, à l’ouverture de l’atelier j’ai l’exception suivante qui est levée :

eu.scenari.commons.util.lang.ScException at eu.scenari.commons.log.LogMgr.newException(LogMgr.java:382) at eu.scenari.wsp.service.adminwsp.SvcAdminWspDialog.xExecuteDialog(SvcAdminWspDialog.java:587) at eu.scenari.core.dialog.DialogBase.executeDialog(DialogBase.java:93) at eu.scenari.core.execframe.httpservlet.HttpRequestConnectorBase.handleRequest(HttpRequestConnectorBase.java:94) at eu.scenari.core.execframe.httpservlet.servlets.ServiceServlet.service(ServiceServlet.java:163) at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:840)

Je pense que j’ai trouvé. Dans le zip créé et placé dans le .wsppack, le fichier d’index est avec extension xhtml et non html. Si dans mon .packMake j’indique mainFile=« index.xhtml » ça m’affiche bien le contenu. Je n’avais pas fait attention à l’extension.

Maintenant me reste à tester la possibilité de mettre un contenu exemple à installer (et donc en externe.
Et j’ai voulu ajouter un bloc « à propos » et vu l’onglet Onglet « à proposé » de l’item de publi de SWAG mais il n’y a dedans que les champs titre et résumé qui apparaissent tous les deux dans la tuile et pas dans la page qu’on affiche en cliquant sur la tuile. Et comme cette touie semble obligatoire, si on n’y met rien pour créer une Section « à propos » manuellement, on a deux tuiles qui s’affichent. Donc je me demande comment vous l’avez géré dans les modèles habituels.

A+
Franck

Bonjour,

Je reviens sur ce sujet que j’avais mis un peu de coté.
J’ai résolu la question du « à propos » dans SWAD en utilisant les métadonnées « Licence » et ‹ Onglet « à propos » ›.
Il me reste un souci avec la publication des contenus exemples.
Je vous résume la situation :

  • J’ai un fichier « .props » dans lequel est défini une clé « docUrl » vers mon dossier sur mon dépôt Scenari
  • J’ai pointé ce fichier « .props » dans le packMake
  • Pour la balise homeSite du packMake j’ai opté pour un embeddedSite qui point vers l’url définie dans le .props.
  • Je génère le wsppack et le dépose sur une instance de test de SuiteStarter
  • Dans SWAD j’ai créé un contenu de présentation publié comme « fichier simple » dans le dépôt
  • J’ai mis en externe une section « contenu-exemple » et indiqué « l’adresse racine des sections distantes »
  • J’ai publié et déposé comme « Archive web » la section externe
  • J’ai généré deux scar de contenu de démonstration également envoyés sur le dépôt comme « fichier simple »
  • En terme de lien vers ces contenus j’ai copié/collé le lien qu’on trouve sur le téléchargement des exemples de dokiel ou opale : une adresse du genre
    scenari:{« action »:« doEach »,« stopOnError »:true,« stopOnNotExecuteAction »:true,« subActions »:[{« action »:« importScar »,« scarUrl »:« https://scenari.univ-lille.fr/public/scenari/modeles/organigramme_v2/simple.scar",« dstSpaceSrcUriFavour »:"/exemple-simple »}]}

En faisant ça si j’ouvre un atelier avec le modèle mis à jour, j’ai bien le contenu embarqué et la page correspondante au contenu exemple qui s’affiche. Par contre si je clique sur le lien de téléchargement d’un contenu exemple ça m’ouvre un onglet vide et sur la page dans laquelle le lien la console du navigateur me donne

Failed to launch ‹ scenari:%7B%22action%22:%22doEach%22,%22stopOnError%22:true,%22stopOnNotExecuteAction%22:true,%22subActions%22:[%7B%22action%22:%22importScar%22,%22scarUrl%22:%22https://scenari.univ-lille.fr/public/scenari/modeles/organigramme_v2/simple.scar%22,%22dstSpaceSrcUriFavour%22:%22/exemple-simple%22%7D]%7D › because the scheme does not have a registered handler.

Alors que je suis en prévisualisation dans l’atelier SWAD ça fait le boulot.

Pouvez-vous me guider sur ce point là ?
merci d’avance
Franck

Tu est sous quel OS ?

Mon pc est sous Windows, sinon le serveur est sous debian.

Je peux avoir le wsppack ?

Voilà m’sieur :slightly_smiling_face:

organigramme_2.2.2_fr-FR_202608261457_sc6-4.wsppack (928,6 Ko)

Salut Franck,
Alors, tu as un premier pb :

https://scenari.univ-lille.fr ne permet pas l’inclusion de contenu dans une iframe depuis un autre domaine :
Framing ‹ https://scenari.univ-lille.fr/ › violates the following Content Security Policy directive: « frame-ancestors ‹ self › https://*.univ-lille.fr ». The request has been blocked.

Ce qui veut dire que personne en dehors de univ-lille.fr aura accès aux exemples (ce qui est dommage)
Si tu ne peux pas rendre https://*.univ-lille.fr plus laxiste à ce niveau, il va falloir que tu internalises la section Contenu exemple et que tu ne l’héberges plus de façon distante.
Pour que le téléchargement du scar marche, il faut absolument que la page le proposant soit chargée dans une iframe fille d’un framework SCENARI.

Hello Sam,

Ok pour ce constat. Je vais voir avec mes collègues système ce qui est possible de faire et si je garde cet emplacement de dépôt ou non…

Par contre il y a probablement un autre souci car même en interne univ-lille.fr et sur la même instance de suite starter j’ai le souci avec l’erreur

A+

Ce qui n’est pas normal, c’est cette phrase. Que le protocole scenari: ne marche pas dans un nouvel onglet est totalement normal. Ce protocole est interprété par le framework SCENARI, il faut que la page le contenant soit chargée dans une iframe dans l’interface SCENARI.

En ouvrant la section en question directement, je vois que tu as posé les deux liens de téléchargement comme des liens HTML simples dans le contenu DOKIEL. Ceci est impossible car ces liens sont alors en target="_blank", soit forcément des liens dans un nouvel onglet.

Pour poser un lien de téléchargement dans SWAD tu dois utiliser la structure prévue (balise Actions/Action) à cet effet, par exemple pour Opale :

Heu tu m’as un peu perdu. Tu trouves où cette affichage 'Actions" …
Ce que j’i fait c’est un lien web dans l’item section « contenu-exemple »


Par ailleurs le lien est indiqué en HTTPS.
Mais je ne vois pas où et comment insérer autrement le lien.