Farmers on the Front Lines: Building resilience in a post-Coronavirus world

IFAD Asset Request Portlet

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> person.getImageCloseupURL()  [in template "10154#10192#EVENT" at line 216, column 79]

----
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: ${person.getImageCloseupURL()}  [in template "10154#10192#EVENT" at line 216, column 77]
----
1<#assign 
2journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
3assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
4groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") 
5classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")> 
6 
7<#assign globalGroup = groupLocalService.getFriendlyURLGroup(companyId, "/global")> 
8<#assign destMacroClassId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetEntry")> 
9<#include "_TEMPLATE_CONTEXT_/${companyId}/${globalGroup.groupId}/${destMacroClassId}/ASSET_ENTRY_MACROS" /> 
10 
11<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(articleGroupId), .vars['reserved-article-id'].data)> 
12<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey)> 
13 
14<#assign articleUrl = 
15asset.getAssetRenderer().getURLViewInContext(renderRequest, renderResponse, currentUrl)> 
16 
17<#assign fullDateFormatted = ""> 
18 
19<#if eventEndDate?hasContent && eventEndDate.getData()?hasContent> 
20    <#assign eventStartDateLocal = dateUtil.parseDate("yyyy-MM-dd",  eventStartDate.getData(), locale)> 
21    <#assign eventEndDateLocal = dateUtil.parseDate("yyyy-MM-dd",  eventEndDate.getData(), locale)> 
22 
23    <#assign eventStartDay = dateUtil.getDate(eventStartDateLocal, "dd", locale)> 
24    <#assign eventEndDay = dateUtil.getDate(eventEndDateLocal, "dd", locale)> 
25    <#assign eventYear = dateUtil.getDate(eventEndDateLocal, "yyyy", locale)> 
26 
27    <#assign eventStartMonth = dateUtil.getDate(eventStartDateLocal, "MMMM", locale)> 
28    <#assign eventEndMonth = dateUtil.getDate(eventEndDateLocal, "MMMM", locale)> 
29 
30    <#if eventStartMonth == eventEndMonth> 
31        <#if eventStartDay == eventEndDay> 
32            <#assign fullDateFormatted = "${eventStartDay} ${eventStartMonth} ${eventYear}"> 
33        <#else> 
34            <#assign fullDateFormatted = "${eventStartDay} - ${eventEndDay} ${eventStartMonth} ${eventYear}"> 
35        </#if> 
36    <#else> 
37        <#assign fullDateFormatted = "${eventStartDay} ${eventStartMonth} - ${eventEndDay} ${eventEndMonth} ${eventYear}"> 
38    </#if> 
39<#elseIf eventStartDate?hasContent && eventStartDate.getData()?hasContent> 
40    <#assign eventStartDateLocal = dateUtil.parseDate("yyyy-MM-dd",  eventStartDate.getData(), locale)> 
41    <#assign fullDateFormatted = dateUtil.getDate(eventStartDateLocal, "dd MMMM yyyy", locale)> 
42</#if> 
43 
44<#assign speakersItems = ""> 
45 
46<#if speakers_code.getSiblings()?hasContent> 
47    <#list speakers_code.getSiblings() as speakerCode> 
48        <#assign speakersItems = "${speakersItems}|${speakerCode.getData()}"> 
49    </#list> 
50</#if> 
51 
52<#assign persons = highriseWrapper.getPersonsList(speakersItems)> 
53 
54<div class="abstract-article event"> 
55    <div class="container publication-structure"> 
56        <div class="row"> 
57            <div class="col-md-10 offset-md-1"> 
58                <div class="row"> 
59                    <div class="col-md-6"> 
60                        <div class="pub-header header-section"> 
61                            <div class="tags"><@liferay.language key="${article.getStructureId()?lowerCase}" /></div> 
62                            <h1>${event_title.getData()} 
63                                <#if fullDateFormatted?hasContent> 
64                                    <div class="article-date">${fullDateFormatted}</div> 
65                                </#if> 
66                            </h1> 
67                        </div> 
68                        <div class="main-content"> 
69                            ${main_content.getData()} 
70                        </div> 
71                    </div> 
72                    <div class="col-md-5 offset-md-1"> 
73                        <div class="pub-shadowbox"> 
74 
75                            <div class="pub-image"> 
76                                <#if shadowbox_image?hasContent && shadowbox_image.getData()?hasContent> 
77                                    <img class="staff-hero-image" src="${shadowbox_image.getData()}"/> 
78                                </#if> 
79                            </div> 
80 
81                            <#if location?hasContent && location.getData()?hasContent> 
82                                <div class="pub-row"> 
83                                    <p class="pub-row-title"><@liferay.language key="location" /></p> 
84                                    <p class="pub-row-text">${location.getData()}</p> 
85                                </div> 
86                            </#if> 
87 
88                            <#if partners?hasContent && partners.getData()?hasContent> 
89                                <div class="pub-row"> 
90                                    <p class="pub-row-title"><@liferay.language key="partners" /></p> 
91                                    <p class="pub-row-text">${partners.getData()}</p> 
92                                </div> 
93                            </#if> 
94 
95                            <#if website?hasContent && website.getData()?hasContent> 
96                                <div class="pub-row"> 
97                                    <p class="pub-row-title"><@liferay.language key="event-website" /></p> 
98                                    <#if website.website_title?hasContent && website.website_title.getData()?hasContent> 
99                                        <p class="pub-row-text"><a href="${website.getData()}" 
100                                                                   target="_blank">${website.website_title.getData()}</a> 
101                                        </p> 
102                                    <#else> 
103                                        <p class="pub-row-text"><a href="${website.getData()}" 
104                                                                   target="_blank">${website.getData()}</a></p> 
105                                    </#if> 
106                                </div> 
107                            </#if> 
108 
109                            <#assign langList = {}> 
110                            <#assign displayLangList = false> 
111 
112                            <#list article.getAvailableLanguageIds() as articleLocale> 
113                                <#assign langCode = articleLocale?split("_")[0]> 
114 
115                                <#assign localizedUrl = 
116                                articleUrl?replace("/${locale.getLanguage()}/", "/${langCode}/")> 
117                                <#assign langList = langList + {"${localeUtil.fromLanguageId(articleLocale).getDisplayLanguage()}": "${localizedUrl}"}> 
118 
119                            <#-- Display full list only if there is at least one non-official language--> 
120                                <#if langCode != "en" && langCode != "es" && langCode != "fr" && langCode != "ar"> 
121                                    <#assign displayLangList = true> 
122                                </#if> 
123                            </#list> 
124 
125                            <#if displayLangList> 
126                                <div class="pub-row"> 
127                                    <p class="pub-row-title"><@liferay.language key="additional-languages" /></p> 
128                                    <p class="pub-row-text languages"> 
129                                        <#list langList as langName, localizedUrl> 
130                                            <a href="${localizedUrl}">${langName} ${langName?hasNext?then(',','')}</a> 
131                                        </#list> 
132                                    </p> 
133                                </div> 
134                            </#if> 
135 
136                            <#if asset.getTagNames()?hasContent> 
137                                <div class="pub-row"> 
138                                    <p class="pub-row-title">Hashtags</p> 
139                                    <p class="pub-row-text"> 
140                                        <#list asset.getTagNames() as tag> 
141                                            <span>#${tag}</span> 
142                                        </#list> 
143                                    </p> 
144                                </div> 
145                            </#if> 
146 
147                            <#if button_label?hasContent && button_label.getData()?hasContent && button_label.button_url.getData()?hasContent> 
148                                <div class="pub-button-container"> 
149                                    <button type="button" 
150                                            onclick="window.location.href='${button_label.button_url.getData()}'">${button_label.getData()}</button> 
151                                </div> 
152                            </#if> 
153                        </div> 
154                    </div> 
155                </div> 
156            </div> 
157        </div> 
158 
159        <#if main_content.main_content_extended?hasContent && main_content.main_content_extended.getData()?hasContent> 
160            <div class="row"> 
161                <div class="col-md-10 offset-md-1"> 
162                    <div class="main-content-extended" style="display: none"> 
163                        ${main_content.main_content_extended.getData()} 
164                    </div> 
165                    <div class="generic-btn less-btn" style="display: none"> 
166                        <button class="bordered"><@liferay.language key="less" /></button> 
167                    </div> 
168                    <div class="generic-btn more-btn" style="display: block"> 
169                        <button class="bordered"><@liferay.language key="more" /></button> 
170                    </div> 
171                </div> 
172            </div> 
173        </#if> 
174    </div> 
175 
176    <#if video_code?hasContent && video_code.getData()?hasContent> 
177        <#assign thumbnailPath = abstract_image_medium.getData()> 
178 
179        <#if !thumbnailPath?hasContent> 
180            <#assign thumbnailPath = "//img.youtube.com/vi/${video_code.getData()}/hqdefault.jpg"> 
181        </#if> 
182 
183        <div class="container"> 
184            <div class="row-fluid"> 
185                <div class="event-video span12"> 
186                    <h2>Watch Live</h2> 
187                    <div class="video-clmn1"> 
188                        <div class="ytube-video-cntnr"> 
189                            <div class="play-button"></div> 
190                            <img class="video-thumbnail" src="${thumbnailPath}" 
191                                 alt="image" style="visibility: hidden"/> 
192                            <div class="ytube-video-id">${video_code.getData()}</div> 
193                        </div> 
194                    </div> 
195                </div> 
196            </div> 
197        </div> 
198    </#if> 
199 
200    <#if speakers_code?hasContent && speakers_code.getData()?hasContent> 
201        <div class="generic-container container"> 
202            <div class="row"> 
203                <div class="event-speakers col-md-10 offset-md-1"> 
204                    <div class="event-speakers-title"> 
205                        <h2><@liferay.language key="speakers" /></h2> 
206                    </div> 
207 
208                    <div class="resource-links row"> 
209                        <#list persons as person> 
210                            <div class="resource-link-node col-md-6"> 
211                                <div class="speaker-link"> 
212                                    <div class="speaker-container"> 
213                                        <#if person.isHasBio()> 
214                                        <a href="/web/guest/profile?id=${person.getId()}&p_l_back_url=${themeDisplay.getURLCurrent()}"> 
215                                            </#if> 
216                                            <img class="speaker-image" src="${person.getImageCloseupURL()}"> 
217                                            <#if person.isHasBio()> 
218                                        </a> 
219                                        </#if> 
220 
221                                        <div class="speaker-label"> 
222                                            <#if person.isHasBio()> 
223                                            <a href="/web/guest/profile?id=${person.getId()}&p_l_back_url=${themeDisplay.getURLCurrent()}"> 
224                                                </#if> 
225                                                <div class="speaker-name">${person.getFirstName()} ${person.getLastName()}</div> 
226                                                <#if person.getCompanyName()?hasContent> 
227                                                    <div class="speaker-company">${person.getCompanyName()}</div> 
228                                                </#if> 
229                                                <div class="speaker-title">${person.getTitle()}</div> 
230                                                <#if person.isHasBio()> 
231                                            </a> 
232                                            </#if> 
233                                            <#if person.isHasBio()> 
234                                                <div class="speaker-bio"> 
235                                                    <a href="/web/guest/profile?id=${person.getId()}&p_l_back_url=${themeDisplay.getURLCurrent()}" 
236                                                       target="_blank" 
237                                                       class="adt-uppercase"><@liferay.language key="read-bio" /></a> 
238                                                </div> 
239                                            </#if> 
240                                        </div> 
241                                    </div> 
242                                </div> 
243                            </div> 
244                        </#list> 
245                    </div> 
246                </div> 
247            </div> 
248        </div> 
249    </#if> 
250 
251    <#if related_documents_label.related_documents_file?hasContent && 
252    related_documents_label.related_documents_file.getData()?hasContent> 
253 
254        <div class="generic-container"> 
255            <div class="related-docs row"> 
256                <div class="col-md-10 offset-md-1"> 
257 
258                    <div class="related-section-title"> 
259                        <h2><@liferay.language key="event-documents" /></h2> 
260                    </div> 
261 
262                    <#if related_documents_label.getSiblings()?hasContent> 
263                        <div class="row"> 
264                            <#list related_documents_label.getSiblings() as relatedDocumentsLabel> 
265                                <div class="related-result-row col-md-6"> 
266                                    <div class="related-row"> 
267                                        <div class="related-row-img"></div> 
268                                        <div class="related-row-content-wrapper"> 
269                                            <h3 class="related-row-title"><a 
270                                                        href="${relatedDocumentsLabel.related_documents_file.getData()}" 
271                                                        target="blank">${relatedDocumentsLabel.getData()}</a> 
272                                            </h3> 
273                                        </div> 
274                                    </div> 
275                                </div> 
276                            </#list> 
277                        </div> 
278                    <#else> 
279                        <div class="related-result-row"><@liferay.language key="err-msg-no-related-documents-found" /></div> 
280                    </#if> 
281                </div> 
282            </div> 
283        </div> 
284    </#if> 
285</div> 
286 
287<script> 
288    $(".more-btn,.less-btn").on('click', function () { 
289        $(".less-btn").toggle(); 
290        $(".more-btn").toggle(); 
291 
292        $(".main-content-extended").slideToggle(); 
293    }); 
294</script> 
295 
296<@printLegacyArticleUrl article /> 

Watch Live

Nested Applications

Related Assets

Related Assets

Related Assets

Related Assets

Related Assets

Related Assets

Related Assets

Related Assets