Gallery
Gallery
An error occurred while processing the template.
The following has evaluated to null or missing: ==> journalArticleUtil.getJournalArticleByArticleId(journalArticleId) [in template "20099#20135#213688" at line 8, column 22] ---- 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: journalArticle = journalArticleUtil.g... [in template "20099#20135#213688" at line 8, column 5] - Reached through: #assign-container [in template "20099#20135#213688" at line 1, column 1] ----
1<#assign
2 defaultImage = themeDisplay.getPathThemeImages() + '/default_image.png'
3 TAXONOMIES_DISPLAY_COUNT = 6
4 journalArticleId = .vars['reserved-article-id'].data
5 journalArticleTitle = .vars['reserved-article-title'].data
6 groupId = themeDisplay.getLayout().getGroupId()
7 journalArticleUtil = serviceLocator.findService("com.eversis.esa.eomall.eomall.core.api.util.JournalArticleUtils")
8 journalArticle = journalArticleUtil.getJournalArticleByArticleId(journalArticleId)
9 resourceprimKey = journalArticle.getResourcePrimKey()
10 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
11 assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourceprimKey)
12 assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
13 organizationUtils = serviceLocator.findService("com.eversis.esa.eomall.eomall.core.api.util.OrganizationUtils")
14 organizationId = journalArticleUtil.getOrganizationIdByJournalArticle(journalArticle)
15 organizationLogo = ''
16 organizationURL = ''
17 organizationName = ''
18 organizationType = ''
19 companyName = 'Company name'
20 taxonomies = []
21 reasearchFields = []
22/>
23<#if (journalArticleUtil.getJournalArticleOrganizationType(journalArticle)?? && journalArticleUtil.getJournalArticleOrganizationType(journalArticle).isPresent())>
24 <#assign organizationType = journalArticleUtil.getJournalArticleOrganizationType(journalArticle).get().getName() />
25</#if>
26<#if organizationId != 0>
27 <#assign organization = organizationUtils.getOrganizationById(organizationId) />
28 <#assign organizationName = organization.getName() />
29 <#assign organizationLogo = organizationUtils.getOrganizationLogoImageURL(organizationId) />
30 <#assign organizationPhoneNumber = organizationUtils.getOrganizationPrimaryPhoneNumber(organizationId) />
31 <#assign organizationFaxNumber = organizationUtils.getOrganizationFaxNumber(organizationId) />
32 <#assign organizationEmailAddress = organizationUtils.getOrganizationPrimaryEmailAddress(organizationId) />
33 <#assign organizationURL = organizationUtils.getOrganizationPrimaryWebsiteURL(organizationId) />
34 <#assign companyName = organization.getName() />
35</#if>
36<#list assetEntry.getCategories() as category>
37 <#assign vocabulary = assetVocabularyLocalService.getVocabulary(category.vocabularyId) />
38 <#if vocabulary.getName() == 'Market Sector' || vocabulary.getName() == 'Thematic'>
39 <#assign taxonomies = taxonomies + [category.getName()] />
40 </#if>
41 <#if vocabulary.getName() == 'Research fields'>
42 <#assign reasearchFields = reasearchFields + [category.getName()] />
43 </#if>
44</#list>
45
46<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
47
48<#if CaseStudyAbstract??>
49 <#assign articleDescription = CaseStudyAbstract.getData() />
50<#else>
51 <#assign articleDescription = case_study_implementation.getData() + case_study_available_datasets.getData() />
52</#if>
53
54<#assign articleBackstory = case_study_scope_of_project.getData() />
55
56<#if getterUtil.getString(case_study_publication_date.getData()) != ''>
57 <#assign case_study_publication_date_Data = getterUtil.getString(case_study_publication_date.getData()) />
58<#else>
59 <#assign case_study_publication_date_Data = '2019-01-01' />
60</#if>
61
62<#assign articleComment = case_study_result.getData() />
63
64<script type="application/ld+json">
65{
66 "@context": "https://schema.org",
67 "@type": "Article",
68 "name": "${journalArticleTitle}",
69 "description": "${articleDescription}",
70 "image": [
71 "${themeDisplay.getPortalURL()}${case_study_main_header_image.getData()}",
72 "${themeDisplay.getPortalURL()}${case_study_receiver_image.getData()}",
73 "${themeDisplay.getPortalURL()}${case_study_benefits.case_study_benefits_image.getData()}"
74 ],
75 "sameAs": [
76 "${case_study_service_on_eomall.case_study_service_on_eomall_link_url.getData()}",
77 "${case_study_external_service_link.case_study_external_service_link_url.getData()}"
78 ],
79 "url": "${currentUrl}",
80 "articleSection": "${case_study_service_category.getData()}",
81 "backstory": "${articleBackstory}",
82 "author": {
83 "@type": "Organization",
84 "name": "${organizationName}",
85 "logo": {
86 "@type": "ImageObject",
87 "url": "${themeDisplay.getPortalURL()}${organizationLogo}"
88 },
89 "telephone": "${organizationPhoneNumber}",
90 "faxNumber": "${organizationFaxNumber}",
91 "email": "${organizationEmailAddress}",
92 "url": "${organizationURL}"
93 },
94 "creator": {
95 "@type": "Organization",
96 "name": "${organizationName}",
97 "logo": {
98 "@type": "ImageObject",
99 "url": "${themeDisplay.getPortalURL()}${organizationLogo}"
100 },
101 "telephone": "${organizationPhoneNumber}",
102 "faxNumber": "${organizationFaxNumber}",
103 "email": "${organizationEmailAddress}",
104 "url": "${organizationURL}"
105 },
106 "publisher": {
107 "@type": "Organization",
108 "name": "${organizationName}",
109 "logo": {
110 "@type": "ImageObject",
111 "url": "${themeDisplay.getPortalURL()}${organizationLogo}"
112 },
113 "telephone": "${organizationPhoneNumber}",
114 "faxNumber": "${organizationFaxNumber}",
115 "email": "${organizationEmailAddress}",
116 "url": "${organizationURL}"
117 },
118 "comment": "${articleComment}",
119 "dateCreated": "${case_study_publication_date_Data}",
120 "dateModified": "${case_study_publication_date_Data}",
121 "datePublished": "${case_study_publication_date_Data}",
122 "headline": "${journalArticleTitle}",
123 "alternativeHeadline": "${taxonomies[0..*TAXONOMIES_DISPLAY_COUNT]?join(', ')}",
124 "keywords": "${(reasearchFields?size > 0)?then(reasearchFields?join(', '), '')}",
125 "mainEntityOfPage": [
126 "${case_study_service_on_eomall.case_study_service_on_eomall_link_url.getData()}",
127 "${case_study_external_service_link.case_study_external_service_link_url.getData()}"
128 ]
129}
130</script>
131
132<#compress>
133<div class="article article--case-study row">
134 <div class="col-sm-12 page__section">
135 <p class="h5 col-sm-12 text-uppercase text-center font-bold margin-bottom-0"><@liferay.language key="CaseStudy.CaseStudy" /></p>
136 <p class="align-items-center section__name text-center margin-bottom-10 h1">${journalArticleTitle}</p>
137 <p class="col-12 text-center text-uppercase d-none d-md-block section__taxonomies service__taxonomies">${taxonomies[0..*TAXONOMIES_DISPLAY_COUNT]?join('; ')}</p>
138
139 <div class="d-flex flex-wrap align-items-end">
140 <div class="margin-bottom-25">
141 <div class="success-story__receiver-logo-wrapper text-center text-md-left">
142 <a class="d-block link__item service__logo padding-left-0 margin-bottom-0" href="${organizationURL}" target="_blank">
143 <img class="case-study__receiver-logo-image" alt="${organizationName}" title="${organizationName}" src="${organizationLogo}" onerror='this.src="${defaultImage}"' />
144 </a>
145 </div>
146 </div>
147 <div class="extra-options margin-bottom-25 ml-auto">
148 <div class="ml-auto product__share_trigger relative">
149 <i class="icon eo-icon-share"></i>
150 <div class="product__share">
151 <span data-link="#share-facebook" data-title="${journalArticleTitle}" data-description="" class="padding-right-15"><i class="eo-icon-facebook"></i></span>
152 <span data-link="#share-linkedin" data-title="${journalArticleTitle}" data-description="" class="padding-right-15"><i class="eo-icon-linkedin"></i></span>
153 <span data-link="#share-twitter" data-title="${journalArticleTitle}" data-description=""><i class="eo-icon-twitter"></i></span>
154 </div>
155 </div>
156 </div>
157 </div>
158 <div class="row">
159 <div class="col-md-6 margin-bottom-30 margin-bottom-md-70">
160 <div class="border w-100">
161 <div class="ratio-box ratio-box--16-9">
162 <#if case_study_main_header_image.getData()?? && case_study_main_header_image.getData() != "">
163 <img alt="${case_study_main_header_image.getAttribute("alt")}" data-fileentryid="${case_study_main_header_image.getAttribute("fileEntryId")}"
164 src="${case_study_main_header_image.getData()}" onerror='this.src="${defaultImage}"' />
165 <#else>
166 <picture>
167 <img src="${defaultImage}">
168 </picture>
169 </#if>
170 </div>
171 </div>
172 </div>
173 <div class="col-md-6 margin-bottom-30 margin-bottom-md-70 map-container">
174 <#assign latitude = 0>
175 <#assign longitude = 0>
176 <#if (case_study_location_map.getData() != "")> <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(case_study_location_map.getData())>
177 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
178 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
179 <@liferay_map["map-display"] geolocation=true latitude=latitude longitude=longitude name="case_study_location_map${randomizer.nextInt()}" />
180 </#if>
181 </div>
182 </div>
183 <div class="row">
184 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60 align-self-center">
185 <h4><@liferay.language key="CaseStudy.backgroundHeader" /></h4>
186 <time class="d-block margin-top-15 margin-bottom-15">
187 <#assign case_study_publication_date_Data = getterUtil.getString(case_study_publication_date.getData())>
188 <#if validator.isNotNull(case_study_publication_date_Data)>
189 <#assign case_study_publication_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", case_study_publication_date_Data, locale)>
190 ${dateUtil.getDate(case_study_publication_date_DateObj, "dd MMMM yyyy", locale)}
191 </#if>
192 </time>
193 <p>${case_study_scope_of_project.getData()}</p>
194 </div>
195 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60">
196 <div class="d-flex align-items-center justify-content-center height-100">
197 <div class="border w-100">
198 <div class="ratio-box ratio-box--16-9 logotype">
199 <#if case_study_receiver_image.getData()?? && case_study_receiver_image.getData() != "">
200 <img alt="${case_study_receiver_image.getAttribute("alt")}" data-fileentryid="${case_study_receiver_image.getAttribute("fileEntryId")}"
201 src="${case_study_receiver_image.getData()}" onerror='this.src="${defaultImage}"' />
202 <#else>
203 <picture>
204 <img src="${defaultImage}">
205 </picture>
206 </#if>
207 </div>
208 </div>
209 </div>
210 </div>
211 </div>
212 <div class="row">
213 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60">
214 <h4><@liferay.language key="CaseStudy.solutionHeader" /></h4>
215 <p>${case_study_implementation.getData()}</p>
216 </div>
217 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60">
218 <h4><@liferay.language key="CaseStudy.resultHeader" /></h4>
219 <p>${case_study_result.getData()}</p>
220 </div>
221 </div>
222 <div class="row align-items-center">
223 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60">
224 <div class="d-flex align-items-center justify-content-center height-100">
225 <div class="border w-100">
226 <div class="ratio-box ratio-box--16-9">
227 <#if case_study_benefits.case_study_benefits_image.getData()?? && case_study_benefits.case_study_benefits_image.getData() != "">
228 <img alt="${case_study_benefits.case_study_benefits_image.getAttribute("alt")}" data-fileentryid="${case_study_benefits.case_study_benefits_image.getAttribute("fileEntryId")}" src="${case_study_benefits.case_study_benefits_image.getData()}" onerror='this.src="${defaultImage}"' />
229 <#else>
230 <picture>
231 <img src="${defaultImage}">
232 </picture>
233 </#if>
234 </div>
235 </div>
236 </div>
237 </div>
238 <div class="col-md-6 margin-bottom-30 margin-bottom-md-60 order-first order-md-last">
239 <h4><@liferay.language key="CaseStudy.benefitsHeader" /></h4>
240 <ul class="margin-bottom-0">
241 <#if case_study_benefits.case_study_benefits_entry.getSiblings()?has_content>
242 <#list case_study_benefits.case_study_benefits_entry.getSiblings() as case_study_benefits_entry>
243 <li class="margin-bottom-30">${case_study_benefits_entry.getData()}</li>
244 </#list>
245 </#if>
246 </ul>
247 </div>
248 </div>
249 <div class="row">
250 <div class="col-md-6 margin-bottom-30 margin-bottom-md-70 map-container d-md-flex flex-md-column">
251 <h4><@liferay.language key="CaseStudy.caseStudyDetailsHeader" /></h4>
252 <div class="layout-grid mt-md-auto margin-bottom-30">
253 <div class="layout-grid__row">
254 <div class="layout-grid__column">
255 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.clientName" /></div>
256 </div>
257 <div class="layout-grid__column">
258 <div class="layout-grid__cell font-bold">${case_study_client?has_content?then(case_study_client.case_study_client_name.getData(), '—')}</div>
259 </div>
260 </div>
261 <div class="layout-grid__row">
262 <div class="layout-grid__column">
263 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.receiverOrganizationType" /></div>
264 </div>
265 <div class="layout-grid__column">
266 <div class="layout-grid__cell font-bold">${organizationType?has_content?then(organizationType, '—')}</div>
267 </div>
268 </div>
269 <div class="layout-grid__row">
270 <div class="layout-grid__column">
271 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.clientWWW" /></div>
272 </div>
273 <div class="layout-grid__column">
274 <div class="layout-grid__cell font-bold">
275 <#if case_study_client?? && case_study_client.case_study_client_link.case_study_client_link_url.getData()?has_content>
276 <a class="font-bold" href="${case_study_client.case_study_client_link.case_study_client_link_url.getData()}">
277 ${case_study_client.case_study_client_link.case_study_client_link_text.getData()}
278 </a>
279 <#else>
280 —
281 </#if>
282 </div>
283 </div>
284 </div>
285 <div class="layout-grid__row">
286 <div class="layout-grid__column">
287 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.activityType" /></div>
288 </div>
289 <div class="layout-grid__column">
290 <div class="layout-grid__cell font-bold"><#if (case_study_service_category.getData()?has_content)>${case_study_service_category.getData()}<#else>—</#if></div>
291 </div>
292 </div>
293 <div class="layout-grid__row">
294 <div class="layout-grid__column">
295 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.activity" /></div>
296 </div>
297 <div class="layout-grid__column">
298 <#assign subcategories = [] />
299 <#list case_study_service_subcategory.getOptions() as subcategory>
300 <#if (subcategory?has_content)>
301 <#assign subcategories = subcategories + [subcategory] />
302 </#if>
303 </#list>
304 <div class="layout-grid__cell font-bold">${(subcategories?size > 0)?then(subcategories?join(', '), '—')}</div>
305 </div>
306 </div>
307 <div class="layout-grid__row">
308 <div class="layout-grid__column">
309 <div class="layout-grid__cell font-light"><@liferay.language key="CaseStudy.keywords" /></div>
310 </div>
311 <div class="layout-grid__column">
312 <div class="layout-grid__cell font-bold">${(reasearchFields?size > 0)?then(reasearchFields?join(', '), '—')}</div>
313 </div>
314 </div>
315 </div>
316 <div class="text-right">
317 <#assign inactiveButtonClass = organizationURL?has_content?then('', 'button--disabled') />
318 <a href="${case_study_service_on_eomall.case_study_service_on_eomall_link_url.getData()}" class="button margin-bottom-5">
319 <#if case_study_service_on_eomall.case_study_service_on_eomall_link_text.getData()?has_content>
320 ${case_study_service_on_eomall.case_study_service_on_eomall_link_text.getData()}
321 <#else>
322 <@liferay.language key="CaseStudy.serviceOnEomallButton" />
323 </#if>
324 </a>
325 <#if themeDisplay.isSignedIn() >
326 <a href="${case_study_external_service_link.case_study_external_service_link_url.getData()}" class="button margin-bottom-5">
327 <#if case_study_external_service_link.case_study_external_service_link_text.getData()?has_content>
328 ${case_study_external_service_link.case_study_external_service_link_text.getData()}
329 <#else>
330 <@liferay.language key="CaseStudy.externalServiceLinkButton" />
331 </#if>
332 </a>
333 </#if>
334 <a href="${organizationURL}" data-company-name="${companyName}" data-company-id="${organizationId}" class="button--contact-us button margin-bottom-5 mt-md-auto align-self-md-end ${inactiveButtonClass}">
335 <@liferay.language key="CaseStudy.contactCompanyButton" />
336 </a>
337 </div>
338
339 </div>
340 <div class="col-md-6 margin-bottom-30 margin-bottom-md-70 justify-content-center d-flex align-items-center">
341 <div class="d-flex align-items-center justify-content-center height-100 w-100">
342 <div class="border w-100">
343 <div class="ratio-box ratio-box--16-9 logotype">
344 <#if organizationLogo?? && organizationLogo != "">
345 <picture>
346 <img alt="${organizationName}" title="${organizationName}" src="${organizationLogo}" onerror='this.src="${defaultImage}"' />
347 </picture>
348 <#else>
349 <picture>
350 <img src="${defaultImage}">
351 </picture>
352 </#if>
353 </div>
354 </div>
355 </div>
356 </div>
357 </div>
358 </div>
359</div>
360</#compress>