Salle de presse
Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> .vars['surtitre'] [in template "20097#20123#1770048" at line 26, column 10] ---- Tip: It's the final [] step that caused this error, not those before it. ---- Tip: If the failing expression is known to 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: #if .vars["surtitre"].getData()?has_c... [in template "20097#20123#1770048" at line 26, column 5] ----
1<#assign
2contentId = .vars['reserved-article-id'].data
3contentClass = "news-" + contentId
4/>
5
6
7<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
8<#assign dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ">
9<#assign originalLocale = locale>
10<#setting locale = 'en_GB'>
11<#assign displayDate = .vars['reserved-article-display-date'].data>
12<#assign modifiedDate = .vars['reserved-article-modified-date'].data>
13<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
14<#assign modifiedDate = modifiedDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
15<#setting locale = originalLocale>
16
17<#if .vars['image_library']?? && .vars['image_library'].getData()?has_content >
18 <#assign imageNews = .vars['image_library'].getData() />
19<#elseif .vars['image']?? && .vars['image'].getData()?has_content && .vars['image'].getData()?length != 20 >
20 <#assign imageNews = .vars['image'].getData() />
21<#else>
22<#assign imageNews = "" />
23</#if>
24
25<div class="content ${contentClass}">
26 <#if .vars['surtitre'].getData()?has_content>
27 <div class="surtitre">${.vars['surtitre'].getData()}</div>
28</#if>
29
30<#if .vars['introduction']?? && .vars['introduction'].getData()?has_content>
31<div class="introduction">${.vars['introduction'].getData()}</div>
32</#if>
33
34<#if .vars['origine'].getData()?has_content || .vars['location'].getData()?has_content || .vars['date'].getData()?has_content>
35
36<div class="info-content"><span class="square"></span>
37 <#if .vars['headline']?? && .vars['headline'].getData()?has_content><span class="headline">${languageUtil.get(locale, 'headline')}</span></#if>
38<#if .vars['origine'].getData()?has_content><span class="origine">${.vars['origine'].getData()}</span></#if>
39<#if .vars['location'].getData()?has_content><span class="location">${.vars['location'].getData()}</span></#if>
40<#if .vars['date'].getData()?has_content><span class="date">${.vars['date'].getData()}</span></#if>
41<ul class="pull-right newstools">
42 <li class="diminuer">
43 Diminuer la taille du texte
44 </li>
45 <li class="augmenter">
46 Augmenter la taille du texte
47 </li>
48 <li onclick="print();" class="imprimer">
49 Imprimer la page
50 </li>
51 <li class="imprimerpdf">
52 Imprimer en PDF
53 </li>
54</ul>
55</div>
56
57</#if>
58
59<#if .vars['video_script']?? && .vars['video_script'].getData()?has_content>
60
61<div class="video-content">
62
63 ${.vars['video_script'].getData()}
64
65 <#if .vars['legende_image'].getData()?has_content><p class="legende">${.vars['legende_image'].getData()}</p></#if>
66
67</div>
68
69<#elseif imageNews != "" >
70
71<div class="image-content">
72
73 <img src="${imageNews}" alt="<#if .vars['legende_image'].getData()?has_content>${.vars['legende_image'].getData()}<#else>${.vars['reserved-article-title'].data}</#if>" />
74
75 <#if .vars['legende_image'].getData()?has_content><p class="legende">${.vars['legende_image'].getData()}</p></#if>
76
77</div>
78
79</#if>
80
81<div class="text">${.vars['content'].getData()}</div>
82
83<#if .vars['resource_text']?? && .vars['resource_text'].getData()?has_content && .vars['resource_url']?? && .vars['resource_url'].getData()?has_content><div class="ressource-link"><a href="${.vars['resource_url'].getData()}" class="${.vars['resource_text'].getData()}">${.vars['resource_text'].getData()}</a></div>
84</#if>
85
86<#if .vars['image_gallery_folder']?? && .vars['image_gallery_folder'].getData()?has_content>
87
88 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
89 <#assign themeDisplay = serviceContext.getThemeDisplay()>
90 <#assign entryLocalService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]>
91
92 <#assign orderByComparatorFactory = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"]>
93 <#assign comp = orderByComparatorFactory.create("DLFileEntry", "fileEntryId", true) />
94
95 <#assign fileList = .vars['image_gallery_folder'].getData()?split("/") />
96
97 <#if fileList[2]?? && fileList[3]??>
98 <#assign groupId = fileList[2]?number />
99 <#assign folderId = fileList[3]?number />
100 <#assign entries = entryLocalService.getFileEntries(groupId, folderId, 0, 30, comp)!null />
101
102 <hr>
103 <h3>${languageUtil.get(locale, "image-gallery")}</h3>
104
105 <#if entries?? && entries?has_content>
106 <div id="gallery${contentId}" class="media-gallery">
107 <div class="image-gallery">
108 <div class="veil"></div>
109 <div class="image-container">
110 <div class="image-wrapper">
111 <div class="image-box">
112 <div class="image-control-left"></div>
113 <div class="image-control-right"></div>
114 <div class="close">×</div>
115 <img class="image-loader" src="${themeDisplay.getPathThemeImages()}/progress_bar/loading_animation.gif"/>
116 </div>
117 </div>
118 </div>
119 </div>
120 <div class="gallery-thumbnails">
121 <#list entries?sort_by(["title"]) as curFileEntry>
122 <div class="gallery-item">
123 <span class="mask">
124 <a style="background-image:url('/documents/${curFileEntry.groupId}/${curFileEntry.folderId}/${curFileEntry.title?url('utf-8')?replace("'","")}/${curFileEntry.uuid}?version=${curFileEntry.version}&width=256&height=192')"
125 alt="${curFileEntry.title}"
126 title="${curFileEntry.description}"
127 class="gallery-thumbnail"
128 href="/documents/${curFileEntry.groupId}/${curFileEntry.folderId}/${curFileEntry.title}/${curFileEntry.uuid}?version=${curFileEntry.version}" >
129 </a>
130 </span>
131 </div>
132 </#list>
133 <div class="clearfix"></div>
134 </div>
135 </div>
136 </#if>
137 </#if>
138
139 <style>
140 .image-title {
141 display: none;
142 }
143 </style>
144
145 <script src="https://static.coe.int/libs/common/coe-2014-theme/media-gallery.js"></script>
146 <script>
147 jQuery(document).ready(function(){
148 jQuery('#gallery${contentId}').mediaGallery();
149 });
150 </script>
151
152 </#if>
153
154</div>
155
156
157<#setting locale="en_GB">
158<time pubdate="pubdate" class="hidden">${.vars['reserved-article-display-date'].data?datetime("EEE, dd MMM yyyy hh:mm:ss Z")?string("yyyy-MM-dd'T'hh:mm:ss")}</time>
159
160<script>
161 $(function() {
162 let portletBody = $('.portlet-asset-publisher .${contentClass}').parentsUntil('.portlet-body');
163 portletBody.find('.surtitre').insertBefore(portletBody.find('.asset-title'));
164 });
165</script>
166
167
168<#if introduction?has_content>
169<#assign mdDescription = introduction.getData()>
170<#else>
171<#assign mdDescription = stringUtil.shorten(htmlUtil.extractText(content.getData()), 150)>
172</#if>
173<#assign mdDescription = stringUtil.replace(mdDescription,'"', '\\"')>
174
175<#assign headline = stringUtil.replace(.vars['reserved-article-title'].getData(),'"', '\\"')>
176<#assign displayDate = stringUtil.replaceLast(displayDate?string(dateFormat),'00',':00')>
177<#assign modifiedDate = stringUtil.replaceLast(modifiedDate?string(dateFormat),'00',':00')>
178<#assign image = httpUtil.removeParameter(imageNews, 't')>
179<#assign image = "${themeDisplay.getPortalURL()}${image}">
180<#if imageNews?has_content>
181 <#assign
182 imageJson="\"image\": {"+
183 "\"@type\": \"ImageObject\","+
184 "\"url\": \"${themeDisplay.getPortalURL()}${httpUtil.removeParameter(imageNews, 't')}\","+
185 "\"height\": 489,"+
186 "\"width\": 870"+
187 "},"
188 />
189<#else>
190 <#assign imageJson="" />
191</#if>
192<script type="application/ld+json">
193 {
194 "@context": "http://schema.org",
195 "@type": "NewsArticle",
196 "mainEntityOfPage":{
197 "@type":"WebPage",
198 "@id":"${currentUrl}"
199 },
200 "headline": "${headline}",
201 ${imageJson}
202 "datePublished": "${displayDate}",
203 "dateModified": "${modifiedDate}",
204 "author": {
205 "@type": "Organization",
206 "name": "Council of Europe"
207 },
208 "publisher": {
209 "@type": "Organization",
210 "name": "Council of Europe",
211 "logo": {
212 "@type": "ImageObject",
213 "url": "https://static.coe.int/pics/logos/desktop/logo-coe-google-news.png",
214 "width": 78,
215 "height": 60
216 }
217 },
218 "description": "${mdDescription}"
219 }
220</script>
221<script>
222$(function() {
223 $('.augmenter').click(function() {
224 $('.content .surtitre, .content .introduction, .content .info-content > span, .content .legende, .content .text, .content .text > *').css({
225 'font-size': '+=1px',
226 'line-height' : '1.2'
227 });
228 });
229
230 $('.diminuer').click(function() {
231 $('.content .surtitre, .content .introduction, .content .info-content > span, .content .legende, .content .text, .content .text > *').css({
232 'font-size': '-=1px',
233 'line-height' : '1.2'
234 });
235 });
236});
237</script>
238
239<#-------------------------------------->
240<#------- Load categories in JSON ------>
241<#-------------------------------------->
242
243<#-- Get article primary key -->
244<#assign JournalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") />
245<#assign articleResourcePK = JournalArticleResourceLocalService.getArticleResourcePrimKey(themeDisplay.getLayout().getGroupId(), contentId) />
246
247<#-- Get article categories -->
248<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
249<#assign assetCategories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", articleResourcePK) />
250
251<#-- Load required services -->
252<#assign jsonFactoryUtil = serviceLocator.findService("com.liferay.portal.kernel.json.JSONFactoryUtil") />
253<#assign vocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
254
255<#-- Get vocabulary ids into a list -->
256<#assign vocabularyIds = [] />
257<#list assetCategories as cat>
258 <#assign vocabularyId = cat.vocabularyId />
259 <#if !vocabularyIds?seq_contains(vocabularyId) >
260 <#assign vocabularyIds = vocabularyIds + [vocabularyId] />
261 </#if>
262</#list>
263
264<#-- Get vocabularies (one SQL request) -->
265<#assign vocabularies = vocabularyLocalService.getVocabularies(vocabularyIds) />
266
267<#-- Combine vocabularies and categories -->
268<#assign categories = [] />
269<#list assetCategories as cat>
270 <#assign vocabularyId = cat.vocabularyId />
271
272 <#list vocabularies as voc>
273 <#if voc.vocabularyId == vocabularyId >
274 <#assign catAndVoc = {"vocabularyId": voc.vocabularyId, "vocabularyTitle": voc.title, "vocabularyName": voc.name, "vocabularytitleCurrentValue": voc.titleCurrentValue, "categoryId": cat.categoryId, "categoryTitle": cat.title, "categoryName": cat.name, "categorytitleCurrentValue": cat.titleCurrentValue} />
275 <#assign categories = categories + [catAndVoc] />
276 </#if>
277 </#list>
278</#list>
279
280<script>
281 var assetCategories = ${jsonFactoryUtil.looseSerializeDeep(categories)};
282</script>
Contributions de l'EDQM
Découvrez les contributions de l'EDQM relatives aux N-nitrosamines et au COVID 19.
ressources
formations et événements