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