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