An error occurred while processing the template.
The following has evaluated to null or missing: ==> assetLocator.getFileEntryByUrl(permissionChecker, groupId, PDF.data) [in template "20116#20152#38374" at line 125, column 36] ---- 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: #assign PDFFile = assetLocator.getFil... [in template "20116#20152#38374" at line 125, column 17] ----
1<#assign assetLocator = request['attributes']['assetLocator'] />
2<#assign groupId = request['theme-display']['scope-group-id'] />
3<#assign theme_display = request['attributes']['customThemeDisplay'] />
4<#assign displayDate = .vars['reserved-article-display-date'].data />
5<#assign journalArticleId = .vars['reserved-article-id'].data>
6
7<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z") />
8<#setting locale="${locale}">
9
10<#assign categories = assetLocator.getCategories(permissionChecker, groupId, journalArticleId) />
11
12
13<#if contactMediaShortCode.data?has_content>
14 <#assign contactMedia = assetLocator.renderJournalArticle(theme_display, contactMediaShortCode.data, "CONTACT-BLOC-MINI") />
15</#if>
16
17<#assign backToParentButtonLabelKey = "label.salledepresse.retour.communiques" />
18<#assign mailObjectLabelKey = "label.salledepresse.partage.mail.objet.communique" />
19<#assign baseTitle = .vars['reserved-article-title'].data />
20<#assign socialTitle = baseTitle?url('UTF-8') />
21
22<#assign currentURL = assetLocator.getCurrentUrl() />
23<div class="details-header">
24 <div class="container flex-container">
25 <a href="${assetLocator.getFriendlyUrlOfParent(theme_display.getLayout(), locale)}" class="btn btn--prev btn--light">
26 <@liferay.language key="${backToParentButtonLabelKey}" />
27 </a>
28
29 <div class="sharer">
30 <p class="sharer__title h4">
31 <@liferay.language key="label.salledepresse.partagercettepage" />
32 </p>
33 <ul class="sharer__items flex-container">
34 <li class="sharer__item">
35 <#if twitterTitle?? && twitterTitle.data?has_content>
36 <a href="https://twitter.com/intent/tweet?url=${currentURL}&text=${twitterTitle.getData()?url('UTF-8')}&via=<@liferay.language key="label.salledepresse.partage.via" />" class="sharer__link" target="_blank">
37 <svg class="ico ico--soc-twitter lexicon-icon"><use xlink:href="#soc-twitter"/></svg>
38 </a>
39 <#else>
40 <a href="https://twitter.com/intent/tweet?url=${currentURL}&text=${socialTitle}&via=<@liferay.language key="label.salledepresse.partage.via" />" class="sharer__link" target="_blank">
41 <svg class="ico ico--soc-twitter lexicon-icon"><use xlink:href="#soc-twitter"/></svg>
42 </a>
43 </#if>
44 </li>
45 <li class="sharer__item">
46 <a href="https://www.facebook.com/sharer.php?u=${currentURL}" class="sharer__link" target="_blank">
47 <svg class="ico ico--soc-facebook lexicon-icon"><use xlink:href="#soc-facebook"/></svg>
48 </a>
49 </li>
50 <li class="sharer__item">
51 <a href="https://www.linkedin.com/shareArticle?url=${currentURL}&title=${socialTitle}" target="_blank" class="sharer__link">
52 <svg class="ico ico--soc-linkedin lexicon-icon"><use xlink:href="#soc-linkedin"/></svg>
53 </a>
54 </li>
55 <li class="sharer__item">
56 <a href="mailto:?subject=<@liferay.language key="${mailObjectLabelKey}" /> - ${baseTitle}&body=${baseTitle} - ${currentURL}" class="sharer__link" target="_blank">
57 <svg class="ico ico--soc-mail lexicon-icon"><use xlink:href="#soc-mail"/></svg>
58 </a>
59 </li>
60 </ul>
61 </div>
62 </div>
63</div>
64<#assign linkPrefixToCategories = "" />
65<#assign searchUrls = request['attributes']['com_savoirfairelinux_flashlight_portlet_FlashlightSearchPortlet_urls'] />
66<#list searchUrls.searchUrls?keys as searchLayout>
67 <#if (theme_display.layout.ancestors?size > 0 && theme_display.layout.ancestors[0].uuid == searchLayout.uuid)>
68 <#assign searchUrl = searchUrls.getSearchUrlByLayoutUuid(searchLayout.uuid)?first />
69 <#assign linkPrefixToCategories = searchUrl.url + "?" />
70 <#list searchUrl.requestParameters as searchParameter>
71 <#assign linkPrefixToCategories += searchParameter.name + "="+ searchParameter.value + "&" />
72 </#list>
73 <#assign linkPrefixToCategories += searchUrl.portletNamespace + "assetCategoryIds=" />
74 </#if>
75</#list>
76
77<article class="content">
78 <div class="container">
79
80 <div class="content__block content__block--grey content-zone">
81 <header class="content__block-header">
82 <h1 class="content__block-title">${.vars['reserved-article-title'].data}</h1>
83 <div class="content__block-details">
84 <span class="content__block-details-item">
85 <time datetime="${displayDate?string("yy-MM-dd")}" pubdate>${displayDate?string(languageUtil.get(locale, "label.global.human.date.format"))}</time>
86 </span>
87 </div>
88 </header>
89
90 ${Content.data}
91
92 </div>
93
94 <aside class="content__block content__block--more">
95 <div class="content-zone">
96 ${SecondaryContent.data}
97 </div>
98
99 <footer class="content__block-footer">
100 <#if categories?has_content>
101 <p class="h4"><@liferay.language key="label.salledepresse.categories" /></p>
102
103 <ul class="content__block-tags">
104 <#list categories as category>
105 <li class="content__block-tag">
106 <a href="${linkPrefixToCategories}${category.getCategoryId()}" class="content__block-tag-link btn">
107 #${category.getTitle(locale.toString())}
108 </a>
109 </li>
110 </#list>
111 </ul>
112 </#if>
113 </footer>
114 </aside>
115
116 <aside class="content__block content__block--aside content__block--grey sidebar">
117 <#if PDF.data?has_content || Medias.data?has_content>
118 <div class="sidebar__item sidebar__item--download">
119 <div class="sidebar__inner">
120 <p class="sidebar__item-title">
121 <svg class="ico ico--clip lexicon-icon"><use xlink:href="#clip"/></svg>
122 <@liferay.language key="label.salledepresse.telechargements" />
123 </p>
124 <#if PDF.data?has_content>
125 <#assign PDFFile = assetLocator.getFileEntryByUrl(permissionChecker, groupId, PDF.data) />
126 <#assign PDFfileSize = getterUtil.getFloat(PDFFile.getSize()) / 1024 / 1024 />
127 <a class="btn btn--icon" target="_blank" href="${PDF.data}">
128 <svg class="ico ico--download lexicon-icon"><use xlink:href="#download"/></svg>
129 <@liferay.language key="label.salledepresse.communique" />
130 (${PDFfileSize?string["0.##"]} <@liferay.language key="label.global.abbr.megabyte" />)
131 </a>
132 </#if>
133 <#if Medias.data?has_content>
134 <#assign MediasFile = assetLocator.getFileEntryByUrl(permissionChecker, groupId, Medias.data) />
135 <#assign MediasfileSize = getterUtil.getFloat(MediasFile.getSize()) / 1024 / 1024 />
136 <a class="btn btn--icon btn--light" download href="${Medias.data}">
137 <svg class="ico ico--download lexicon-icon"><use xlink:href="#download"/></svg>
138 <@liferay.language key="label.salledepresse.medias" />
139 (${MediasfileSize?string["0.##"]} <@liferay.language key="label.global.abbr.megabyte" />)
140 </a>
141 </#if>
142 </div>
143 </div>
144 </#if>
145 <#if contactMedia?has_content>
146 <div class="sidebar__item">
147 ${contactMedia}
148 </div>
149 </#if>
150 </aside>
151
152 </div>
153</article>