Livraison lot 3 - parties 1 et 2
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>