Atelier sur l’investissement des migrants en milieu rural au Sénégal, Paris

IFAD Asset Request Portlet

Publicador de Conteúdo

Ocorreu um erro ao processar o template.
The following has evaluated to null or missing:
==> related_documents_label  [in template "10154#10192#EVENT" at line 257, column 10]

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

Watch

Aplicações Aninhadas

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado

Conteúdo Relacionado