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> 

Quick links