Aides au parcours d'auteur : décision de nomination du 24 mai 2024
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>