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>