L’emploi dans les effets visuels numériques
Une erreur s'est produite lors du traitement du gabarit.
Java method "fr.cnc.url.service.CncUrlServiceImpl.calculUrlPageListeDomainePublicationsTypeParArticleId(com.liferay.portal.kernel.theme.ThemeDisplay, String, com.liferay.asset.kernel.model.AssetCategory, com.liferay.asset.kernel.model.AssetCategory)" couldn't be called: Can't convert the 3rd argument's value to the target Java type, com.liferay.asset.kernel.model.AssetCategory. The type of the actual value was: string (wrapper: f.t.SimpleScalar)

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign urlListePublicationsType = cn...  [in template "20116#20152#PUBLICATION" at line 25, column 9]
----
1<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
2<#assign httpServletRequest = serviceContext.getRequest()/> 
3<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
4<#assign cncCategoriesService = serviceLocator.findService("fr.cnc.categories.api.CncCategoriesService") /> 
5<#assign cncTagsService = serviceLocator.findService("fr.cnc.tags.api.CncTagsService") /> 
6<#assign cncUrlService = serviceLocator.findService("fr.cnc.url.api.CncUrlService") /> 
7<#assign ArticleJournalId = .vars['reserved-article-id'].data> 
8<#assign categoriesDomainesList = cncCategoriesService.getDomaines(groupId, ArticleJournalId) /> 
9<#assign categoriesDomainesPrimairesList = cncCategoriesService.getDomainesPrimaires(groupId, ArticleJournalId) /> 
10<#assign tagEntries = cncTagsService.recupererTagsArticle(groupId, ArticleJournalId) /> 
11<#assign categoriesTypePublicationList = cncCategoriesService.recupererCategoriesArticleParVocabulaire(groupId, ArticleJournalId , "Type de publication") /> 
12 
13<#-- test si on vient d'une page de liste de contenu --> 
14<#assign siPagePrecedenteCorrespondPageListeContenu = cncUrlService.siPagePrecedenteCorrespondPageListeContenu(httpServletRequest) /> 
15<#assign categoryDomainePrimaire = ""> 
16 
17<#if categoriesDomainesPrimairesList?size != 0> 
18	<#assign categoryDomainePrimaire = categoriesDomainesPrimairesList[0]> 
19	<#assign urlListePublicationsDomaine = cncUrlService.calculUrlPageListeDomainePublicationsTypeParArticleId(themeDisplay, journalArticleId, categoryDomainePrimaire, null) /> 
20</#if> 
21 
22<#if categoriesTypePublicationList?size != 0> 
23	<#assign typePublication = categoriesTypePublicationList[0]> 
24	<#-- Calcul de l'url vers la page liste de publication filtrer sur le type--> 
25	<#assign urlListePublicationsType = cncUrlService.calculUrlPageListeDomainePublicationsTypeParArticleId(themeDisplay, ArticleJournalId, categoryDomainePrimaire, typePublication) /> 
26</#if> 
27 
28<#if categoriesDomainesList?size != 0> 
29	<#assign categoriesSousDomainesList = cncCategoriesService.recupererCategoriesArticleParVocabulaire(groupId, ArticleJournalId , "Sous-domaine") /> 
30	<#assign cncArticleRechercheService = serviceLocator.findService("fr.cnc.recherche.api.CncArticleRechercheService") /> 
31	<#assign articlesMemesSujet = cncArticleRechercheService.recupererRenduDerniersArticlesMemeSujet(themeDisplay, ArticleJournalId, "PUBLICATION", categoriesDomainesList, categoriesSousDomainesList, "PUBLICATION-MEME-SUJET", 2) /> 
32</#if> 
33 
34 
35<#setting locale=locale.toString()> 
36<#setting datetime_format="EEE, d MMM yyyy HH:mm:ss Z"> 
37 
38<style> 
39 
40	.news-downloads { 
41		display: flex; 
42		flex-direction: column; 
43		gap: 1rem; 
44		padding-top: 10px; 
45
46 
47	.news-downloads .news-download { 
48		display: flex; 
49
50 
51	.news-download .details { 
52		display: block; 
53
54 
55	.news-download-title { 
56		overflow: hidden; 
57		display: -webkit-box; 
58		-webkit-box-orient: vertical; 
59		-webkit-line-clamp: 2; 
60
61 
62</style> 
63 
64 
65<#if siPagePrecedenteCorrespondPageListeContenu> 
66	<div class="back"> 
67		<div class="container"> 
68			<div class="row"> 
69				<div class="col"> 
70					<div class="link-icon"> 
71						<a href="javascript:boutonRetour.goBack();" > 
72							<i class="icon icon-back"></i> 
73							<@liferay.language key="pages.liste.bouton.retour.a.la.liste" /> 
74						</a> 
75					</div> 
76				</div> 
77			</div> 
78		</div> 
79	</div> 
80</#if> 
81 
82<div class="single publication"> 
83	<div class="container"> 
84		<article> 
85			<div class="row justify-content-center"> 
86				<div class="col-12 col-lg-10"> 
87					<div class="article-head"> 
88						<div class="article-title"> 
89							<#assign ArticleJournalTitle = .vars['reserved-article-title'].data> 
90							<#if ArticleJournalTitle?has_content> 
91								<h1> 
92									${ArticleJournalTitle} 
93								</h1> 
94							</#if> 
95 
96							<#assign Templates_Path = templatesPath /> 
97							<#include "${Templates_Path}/BLOC-SHARETHIS"> 
98						</div> 
99					</div> 
100				</div> 
101			</div> 
102			<div class="article-content"> 
103				<div class="row"> 
104					<div class="col-12 col-lg-3" style="overflow: visible"> 
105						<div style="position: sticky; top: 100px"> 
106							<div class="picture"> 
107								<#if VisuelPrincipal?has_content && VisuelPrincipal.getData()?has_content && VisuelPrincipal.getData()?length gt 2> 
108									<#assign altVisuelPrincipalDefaut = VisuelPrincipal.getAttribute("name")?split(".")[0] /> 
109 
110									<#if VisuelPrincipal.getAttribute("alt")?has_content> 
111										<#assign altVisuelPrincipalDefaut = VisuelPrincipal.getAttribute("alt") /> 
112									</#if> 
113									<img data-fileentryid="${VisuelPrincipal.getAttribute("fileEntryId")}" 
114										 alt="${altVisuelPrincipalDefaut}" 
115										 src="${VisuelPrincipal.getData()}&thumb=cncThumb" /> 
116								</#if> 
117							</div> 
118							<div class="link-icon news-downloads" style="margin-top: 10px;"> 
119								<#if FichiersAssocies?has_content && FichiersAssocies.getData()?has_content> 
120									<#list FichiersAssocies.getSiblings() as cur_fichiersAssocies> 
121										<#assign counter = 0 > 
122										<#assign uuId = "" > 
123										<#list cur_fichiersAssocies.getData()?split("/") as x> 
124											<#if counter == 5> 
125												<#if x?split("?t")?has_content > 
126													<#assign uuId = x?split("?t")[0] > 
127												</#if> 
128											</#if> 
129											<#assign counter = counter+1 > 
130										</#list> 
131										<#assign fileEntry = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService")> 
132										<#if uuId != ""> 
133											<#assign file = fileEntry.getFileEntryByUuidAndGroupId(uuId,groupId) > 
134										</#if> 
135										<#if file?has_content && uuId?has_content> 
136 
137											<#assign fileExtension = "" /> 
138											<#if file.getFileName()?has_content && file.getFileName()?split(".")?size gt 1> 
139												<#assign fileExtension = file.getFileName()?split(".")[1] /> 
140											</#if> 
141											<#if file.getFileName()?has_content && file.getFileName()?split(".")?size gt 1> 
142												<#assign fileExtension = file.getFileName()?split(".")[1] /> 
143											</#if> 
144											<#assign fileSize = 0 /> 
145 
146											<a href="${cur_fichiersAssocies.getData()}"  class="round news-download" target="_blank"> 
147												<div> 
148													<i class="icon icon-download"></i> 
149												</div> 
150												<div> 
151												<span class="news-download-title"> 
152													<#if cur_fichiersAssocies.LibelleDuFichier?has_content && cur_fichiersAssocies.LibelleDuFichier.getData()?has_content> 
153														${cur_fichiersAssocies.LibelleDuFichier.getData()} 
154													<#elseif LibelleDuFichier?has_content && LibelleDuFichier.getData()?has_content> 
155													<#-- Avant que le champ document devienne repetable le champ libelle n'etait pas un enfant du document. 
156													Tant que les contenus web n'ont pas étés re-publiés il faut chercher le contenu du libellé dans l'ancien champ, 
157													même si celui-ci n'est plus dans le json de la scruture--> 
158														${LibelleDuFichier.getData()} 
159													<#else> 
160														<@liferay.language key="article.publication.telechargement" /> 
161													</#if> 
162												</span> 
163 
164													<#if file.getSize()?has_content> 
165														<#assign fileSize = file.getSize()/1000 /> 
166														<span class="details"> 
167
168													<#if fileExtension?has_content && fileExtension?length gt 0 > 
169														<span class="extension"> 
170															${fileExtension?upper_case} 
171														</span> 
172													</#if> 
173														<span class="weight">${fileSize?int} Ko</span>) 
174													</span> 
175													</#if> 
176												</div> 
177											</a> 
178										</#if> 
179									</#list> 
180								</#if> 
181							</div> 
182						</div> 
183					</div> 
184					<div class="col-12 col-lg-8"> 
185						<div class="infos"> 
186							<#assign originalLocale = locale> 
187							<#setting locale = localeUtil.getDefault()> 
188							<#if categoriesDomainesPrimairesList?size != 0> 
189								<div class="category"> 
190									<#if locale.toString()!="en_US"><a href="${urlListePublicationsDomaine}"></#if> 
191										${categoryDomainePrimaire.getTitle(locale)} 
192										<#if locale.toString()!="en_US"></a></#if> 
193								</div> 
194							</#if> 
195 
196							<#if tagEntries?has_content> 
197								<div class="tags"> 
198									<div class="title-tag"> 
199										<@liferay.language key="article.texte.tags" /> : 
200									</div> 
201									<ul class="list-unstyled"> 
202										<#list tagEntries as tagEntry> 
203											<#assign urlTags = cncUrlService.calculeUrlPageRechercheParTag(themeDisplay, tagEntry.getName()) /> 
204											<li> 
205												<#if locale.toString()!="en_US"><a href="${urlTags}" ></#if> 
206													${tagEntry.getName()} 
207													<#if locale.toString()!="en_US"></a></#if> 
208											</li> 
209										</#list> 
210									</ul> 
211								</div> 
212							</#if> 
213 
214							<ul class="list-unstyled simple"> 
215								<li> 
216									<strong><@liferay.language key="article.publication.type.publication" /></strong> : 
217									<#if categoriesTypePublicationList?size != 0 > 
218										<#list categoriesTypePublicationList as categoryTPList> 
219											<#if urlListePublicationsType?has_content && locale.toString()!="en_US"><a href="${urlListePublicationsType}"></#if> 
220											${categoryTPList.getTitle(locale)} 
221											<#if urlListePublicationsType?has_content && locale.toString()!="en_US"></a></#if> 
222										</#list> 
223									</#if> 
224								</li> 
225								<li> 
226									<strong><@liferay.language key="article.publication.date" /></strong> : 
227									<#assign originalLocale = locale> 
228									<#setting locale = localeUtil.getDefault()> 
229 
230									<#assign displaydate = .vars['reserved-article-display-date'].data> 
231									<#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
232									<#if displaydate?has_content> 
233										<#assign date_value = dateUtil.getDate(displaydate, "dd/MM/yyyy", locale)> 
234										<div class="date date-2" style="margin-top: auto;font-family: Arial;font-size: 1.4rem;color: #212529;">${date_value}</div> 
235									</#if> 
236									<#setting locale = originalLocale> 
237								</li> 
238							</ul> 
239							<#setting locale = originalLocale> 
240						</div> 
241						<p> 
242							<#if Resume?has_content> 
243						<div class="intro">${Resume.getData()}</div> 
244						</#if> 
245						</p> 
246						<p> 
247							<#if Contenu?has_content> 
248								${Contenu.getData()} 
249							</#if> 
250						</p> 
251 
252					</div> 
253				</div> 
254			</div> 
255		</article> 
256	</div> 
257	<hr/> 
258	<#if articlesMemesSujet?? && articlesMemesSujet?size != 0> 
259		<div class="rebound"> 
260			<div class="container"> 
261				<div class="related-publications"> 
262					<div class="row"> 
263						<div class="col-12 text-center"> 
264							<div class="section-title"><@liferay.language key="article.voir.aussi" /></div> 
265						</div> 
266					</div> 
267					<div class="row"> 
268						<#list articlesMemesSujet as articleMemeSujet> 
269							<div class="col-12 col-lg-6"> 
270								${articleMemeSujet} 
271							</div> 
272						</#list> 
273					</div> 
274				</div> 
275			</div> 
276		</div> 
277	</#if> 
278</div> 
279 
280<#if InformationComplementaire?has_content> 
281	<div class="footer-text"> 
282		<div class="container"> 
283			<div class="row"> 
284				<div class="col-12"> 
285					${InformationComplementaire.getData()} 
286				</div> 
287			</div> 
288		</div> 
289	</div> 
290</#if>