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