Project
IfadAssetRequestWeb
Asset Publisher
An error occurred while processing the template.
The following has evaluated to null or missing: ==> cofinancier_item.cofinancier_dom_amount [in template "10154#10192#PROJECT" at line 172, column 70] ---- Tip: It's the step after the last dot 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: #assign cofinancierAmount = cofinanci... [in template "10154#10192#PROJECT" at line 172, column 41] ----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
3<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
4<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") />
5<#assign classNameLocalService = 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 countries_vocabulary = assetVocabularyLocalService.getGroupVocabulary(company.getGroupId(), "Countries")>
12<#assign projects_vocabulary = assetVocabularyLocalService.getGroupVocabulary(company.getGroupId(), "Project")>
13
14<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(articleGroupId), .vars['reserved-article-id'].data)>
15<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey)>
16
17<div class="container project-container generic-container">
18 <div class="row project-structure">
19
20 <div class="col-xl-10 col-lg-12 offset-xl-1">
21 <div class="row">
22 <div class="col-lg-6 col-md-12 pub-header">
23 <#if project_title.getData()?has_content>
24 <h1>${project_title.getData()}</h1>
25 <#elseif article.getTitle(locale)?has_content>
26 <h1>${article.getTitle(locale)}</h1>
27 <#else>
28 <h1>${abstract_title.getData()}</h1>
29 </#if>
30
31 <div class="main-content">${main_content.getData()}</div>
32 </div>
33
34 <div class="col-lg-5 col-md-12 offset-lg-1">
35 <div class="shadow mb-3 pb-3 bg-white rounded project-shadowbox">
36 <#if mapStream.getData()?has_content>
37 <img class="img-fluid w-100 project-map-image" src="${mapStream.getData()}"/>
38 </#if>
39 <div class="m-3 project-row">
40
41 <#if status.getData()?has_content>
42 <dd class="project-status mt-3">
43 <#if status.getData() == "B" || status.getData() == "C" || status.getData() ==
44 "D" || status.getData() == "I" || status.getData() ==
45 "J" || status.getData() == "K">
46 <span><@liferay.language key="status" />: <@liferay.language key="custom-msg-planned" /></span>
47 <#elseif status.getData() == "G" || status.getData() ==
48 "H" || status.getData() =="U" || status.getData() =="Z">
49 <span><@liferay.language key="status" />:
50 <@liferay.language key="custom-msg-ongoing" /></span>
51 <#elseif status.getData() == "M" || status.getData() == "N">
52 <span><@liferay.language key="status" />: <@liferay.language key="custom-msg-closed" /></span>
53 <#elseif status.getData() == "E">
54 <span><@liferay.language key="status" />: <@liferay.language key="approved" /></span>
55 <#elseif status.getData() == "F">
56 <span><@liferay.language key="status" />: <@liferay.language key="custom-msg-signed" /></span>
57 <#else>
58 <span><@liferay.language key="status" />: <@liferay.language key="custom-msg-not-planned" /></span>
59 </#if>
60 </dd>
61 </#if>
62
63 <#if type.getData() == "INVPR">
64 <#list asset.getCategories() as category>
65 <#if category.getVocabularyId() == countries_vocabulary.getVocabularyId()>
66 <#--<div class="project-row">-->
67 <dt class="project-row-title"><@liferay.language key="country" /></dt>
68 <dd class="project-row-text">
69 <a href="${getCountryUrl(category, locale)}">${category.getDescription(locale)}</a>
70 </dd>
71 <#--#break-->
72 </#if>
73 </#list>
74 </#if>
75
76 <#if status_date?? && status_date.getData()?has_content && status_date.getData() != "null">
77 <#assign formatted_status_date_obj =
78 dateUtil.parseDate("yyyy-MM-dd", status_date.getData(), locale)>
79
80 <#assign formatted_status_date =
81 dateUtil.getDate(formatted_status_date_obj, "dd MMMM yyyy", locale)>
82
83 <dt class="project-row-title"><@liferay.language key="approval-date" /></dt>
84 <dd class="project-row-text">${formatted_status_date}</dd>
85 </#if>
86
87 <#if type.getData() == "GRANT" && beneficiary.getData()?has_content>
88 <dt class="project-row-title"><@liferay.language key="recipient" /></dt>
89 <dd class="project-row-text">${beneficiary.getData()}</dd>
90 </#if>
91
92 <#-- Don't display duration for "planned" projects-->
93 <#if !(status.getData() == "B" || status.getData() == "C" || status.getData() ==
94 "D" || status.getData() == "I" || status.getData() == "J" || status.getData() ==
95 "K")>
96 <#if duration.getData()?has_content>
97 <dt class="project-row-title"><@liferay.language key="duration" /></dt>
98 <dd class="project-row-text">${duration.getData()}</dd>
99 </#if>
100 </#if>
101
102 <#if sector.getData()?has_content && sector.getData() != " ">
103 <dt class="project-row-title"><@liferay.language key="sector" /></dt>
104 <dd class="project-row-text"><@liferay.language key="sector.${sector.getData()?lower_case}" /></dd>
105 </#if>
106
107 <#if current_amount.getData()?has_content>
108 <#assign totalProjectCost = current_amount.getData()?replace(",",".")?number?double>
109
110 <dt class="project-row-title">
111 <#if type.getData() == "GRANT">
112 <@liferay.language key="total-cost" />
113 <#elseif type.getData() == "INVPR">
114 <@liferay.language key="total-project-cost" />
115 </#if>
116 </dt>
117 <dd class="project-row-text">
118 <#if totalProjectCost < 2.0>
119 ${languageUtil.format(locale, "million-usd", ifadNumberFormatter.format(locale, totalProjectCost))}
120 <#else>
121 ${languageUtil.format(locale, "millions-usd", ifadNumberFormatter.format(locale, totalProjectCost))}
122 </#if>
123 </dd>
124 </#if>
125
126 <#if current_ifad_amount?? && current_ifad_amount.getData()?has_content>
127 <#assign ifadFinancing = current_ifad_amount.getData()?replace(",",".")?number?double>
128
129 <dt class="project-row-title">
130 <#if type.getData() == "GRANT">
131 <@liferay.language key="ifad-grant-amount" />
132 <#elseif type.getData() == "INVPR">
133 <@liferay.language key="ifad-financing" />
134 </#if>
135 </dt>
136 <dd class="project-row-text">
137 <#if ifadFinancing < 2.0>
138 ${languageUtil.format(locale, "million-usd", ifadNumberFormatter.format(locale, ifadFinancing))}
139 <#else>
140 ${languageUtil.format(locale, "millions-usd", ifadNumberFormatter.format(locale, ifadFinancing))}
141 </#if>
142 </dd>
143 </#if>
144
145 <#if type.getData() == "INVPR">
146 <#if cofinancier_int?? &&
147 cofinancier_int.getData()?has_content &&
148 cofinancier_int.getSiblings()?has_content &&
149 cofinancier_int.getSiblings()[0].getData()?has_content >
150
151 <dt class="project-row-title"><@liferay.language key="co-financiers-int" /></dt>
152 <#list cofinancier_int.getSiblings() as cofinancier_item>
153 <#assign cofinancierAmount = cofinancier_item.cofinancier_int_amount.data?replace(",", ".")?number?double>
154
155 <dd class="project-row-text">
156 <#if cofinancierAmount < 2.0>
157 ${cofinancier_item.getData()} ${languageUtil.format(locale, "million-usd", ifadNumberFormatter.format(locale, cofinancierAmount))}
158 <#else>
159 ${cofinancier_item.getData()} ${languageUtil.format(locale, "millions-usd", ifadNumberFormatter.format(locale, cofinancierAmount))}
160 </#if>
161 </dd>
162 </#list>
163 </#if>
164
165 <#if cofinancier_dom?? &&
166 cofinancier_dom.getData()?has_content &&
167 cofinancier_dom.getSiblings()?has_content &&
168 cofinancier_dom.getSiblings()[0].getData()?has_content>
169
170 <dt class="project-row-title"><@liferay.language key="co-financiers-dom" /></dt>
171 <#list cofinancier_dom.getSiblings() as cofinancier_item>
172 <#assign cofinancierAmount = cofinancier_item.cofinancier_dom_amount.data?replace(",", ".")?number?double>
173
174 <dd class="project-row-text">
175 <#if cofinancierAmount < 2.0>
176 ${cofinancier_item.getData()} ${languageUtil.format(locale, "million-usd", ifadNumberFormatter.format(locale, cofinancierAmount))}
177 <#else>
178 ${cofinancier_item.getData()} ${languageUtil.format(locale, "millions-usd", ifadNumberFormatter.format(locale, cofinancierAmount))}
179 </#if>
180 </dd>
181 </#list>
182 </#if>
183
184 <#if financing_gap?? && financing_gap.getData()?has_content &&
185 financing_gap.getData() != "null">
186 <dt class="project-row-title"><@liferay.language key="financing-gap" /></dt>
187
188 <#assign financingGap = financing_gap.getData()?replace(",",".")?number?double>
189
190 <dd class="project-row-text">
191 <#if financingGap < 2.0>
192 ${languageUtil.format(locale, "million-usd", ifadNumberFormatter.format(locale, financingGap))}
193 <#else>
194 ${languageUtil.format(locale, "millions-usd", ifadNumberFormatter.format(locale, financingGap))}
195 </#if>
196 </dd>
197 </#if>
198
199 <#if lending_terms?? && lending_terms.getData()?has_content>
200 <dt class="project-row-title"><@liferay.language key="financing-terms" /></dt>
201 <dd class="project-row-text">
202 <#if lending_terms.getData() == "null">
203 <@liferay.language key="not-available" />
204 <#else>
205 <@liferay.language key="lending-term.${lending_terms.getData()?lower_case}" />
206 </#if>
207 </dd>
208 </#if>
209 </#if>
210
211 <#list asset.getCategories() as category>
212 <#if category.getVocabularyId() == projects_vocabulary.getVocabularyId()>
213 <dt class="project-row-title">
214 <#if type.getData() == "GRANT">
215 <@liferay.language key="grant-id" />
216 <#elseif type.getData() == "INVPR">
217 <@liferay.language key="project-id" />
218 </#if>
219 </dt>
220 <dd class="project-row-text">${category.name}</dd>
221 <#--#break-->
222 </#if>
223 </#list>
224
225 <#if type.getData() == "INVPR" && contact.getData()?has_content && contact.getData() != "null">
226 <dt class="project-row-title"><@liferay.language key="project-contact" /></dt>
227 <dd class="project-row-text">
228 <#if contact_email.getData()?has_content>
229 <a href="mailto:${contact_email.getData()}">${contact.getData()}</a>
230 <#else>
231 ${contact.getData()}
232 </#if>
233 </dd>
234 </#if>
235 </div>
236 </div>
237 </div>
238 </div>
239 </div>
240 </div>
241</div>