An error occurred while processing the template.
The following has evaluated to null or missing: ==> serviceLocator.findService("com.eversis.esa.eomall.eopages.core.util.CompanyArticleUtils") [in template "903221#903260#907367" at line 10, column 27] ---- 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: companyArticleUtils = serviceLocator... [in template "903221#903260#907367" at line 10, column 5] - Reached through: #assign-container [in template "903221#903260#907367" at line 1, column 1] ----
1<#assign
2 defaultCompanyLogoUrl = themeDisplay.getPathThemeImages() + '/default_company_logo.png'
3
4 journalArticleId = .vars['reserved-article-id'].data
5 groupId = themeDisplay.getLayout().getGroupId()
6 journalArticleUtil = serviceLocator.findService("com.eversis.esa.eomall.eopages.core.util.JournalArticleUtils")
7 journalArticle = journalArticleUtil.getJournalArticleByArticleId(journalArticleId)
8 journalArticleTitle = .vars['reserved-article-title'].data
9 organizationUtils = serviceLocator.findService("com.eversis.esa.eomall.eopages.core.util.OrganizationUtils")
10 companyArticleUtils = serviceLocator.findService("com.eversis.esa.eomall.eopages.core.util.CompanyArticleUtils")
11 valueChainList = companyArticleUtils.getCompanyArticleCategories(journalArticle)
12 organizationId = organizationUtils.getOrganizationIdByGroupId(journalArticle.getGroupId())
13 organizationLogo = ''
14 organizationURL = WebsiteURL?has_content?then(WebsiteURL.getData(),'')
15 organizationPhoneNumber = ''
16 organizationFaxNumber = ''
17 organizationEmailAddress = ''
18 organizationCountry = ''
19 organizationName = ''
20 portalBaseURL = themeDisplay.getPortalURL()
21/>
22
23<#if organizationId != 0>
24 <#assign
25 organization = organizationUtils.getOrganizationById(organizationId)
26 organizationName = organization.getName()
27 organizationLogo = organizationUtils.getOrganizationLogoImageURL(organizationId)
28 organizationCountry = organization.getAddress().getCountry().getName(themeDisplay.getLocale())
29 organizationPhoneNumber = organizationUtils.getOrganizationPrimaryPhoneNumber(organizationId)
30 organizationFaxNumber = organizationUtils.getOrganizationFaxNumber(organizationId)
31 organizationEmailAddress = organizationUtils.getOrganizationPrimaryEmailAddress(organizationId)
32 organizationURL = organizationURL?has_content?then(organizationURL, organizationUtils.getOrganizationPrimaryWebsiteURL(organizationId))
33 />
34
35
36 <script type="application/ld+json">
37 {
38 "@context": "https://schema.org",
39 "@type": "Organization",
40 "email": "${organizationEmailAddress}",
41 "faxNumber": "${organizationFaxNumber}",
42 "location": {
43 "@type": "PostalAddress",
44 "addressCountry": {
45 "@type": "Country",
46 "name": "${organizationCountry}"
47 },
48 "postalCode": "${organization.getAddress().getZip()}",
49 "streetAddress": "${organization.getAddress().getStreet1()}"
50 },
51 "logo": "${portalBaseURL}${organizationLogo}",
52 "telephone": "${organizationPhoneNumber}",
53 "url": "${organizationURL}"
54 }
55 </script>
56</#if>
57
58<#compress>
59<div class="company article">
60 <div class="row page__section">
61 <div class="col-12 col-lg-8 offset-lg-2">
62 <div class="row">
63 <h5 class="col-12 text-center margin-bottom-0 text-uppercase"><@liferay.language key="Company.Company" /></h5>
64 <h1 class="col-12 text-center margin-bottom-30">${organizationName}</h1>
65 </div>
66 <div class="row margin-bottom-10 justify-content-center">
67 <#if valueChainList?has_content>
68 <div class="col-12 line-clamp-animation">
69 <p class="text-center text-uppercase margin-bottom-40 font-bold lines-em-3">
70 <#list valueChainList as valueChainValue>
71 ${valueChainValue.getName()}<#if valueChainValue?has_next>, </#if>
72 </#list>
73 </p>
74 </div>
75 </#if>
76 </div>
77 <div class="row margin-bottom-35">
78 <div class="col-12 d-flex flex-wrap align-items-end">
79 <div class="margin-bottom-25">
80 <div class="success-story__receiver-logo-wrapper text-center text-md-left">
81 <a class="d-block link__item success-story__logo padding-left-0 margin-bottom-0" href="${organizationURL}" target="_blank">
82 <#if organizationLogo?has_content>
83 <img class="success-story__receiver-logo-image" alt="${organizationName}" title="${organizationName}" src="${organizationLogo}" onerror='this.src="${defaultCompanyLogoUrl}"' />
84 <#else>
85 <picture>
86 <img class="success-story__receiver-logo-image" alt="${organizationName}" title="${organizationName}" src="${defaultCompanyLogoUrl}">
87 </picture>
88 </#if>
89 </a>
90 </div>
91 </div>
92 <div class="extra-options margin-bottom-25 ml-auto">
93 <div class="ml-auto product__share_trigger relative">
94 <i class="icon eo-icon-share"></i>
95 <div class="product__share">
96 <span data-link="#share-facebook" data-title="${journalArticleTitle}" class="padding-right-15"><i class="eo-icon-facebook"></i></span>
97 <span data-link="#share-linkedin" data-title="${journalArticleTitle}" class="padding-right-15"><i class="eo-icon-linkedin"></i></span>
98 <span data-link="#share-twitter" data-title="${journalArticleTitle}"><i class="eo-icon-twitter"></i></span>
99 </div>
100 </div>
101 </div>
102 </div>
103 <div class="col-12">
104 <#if Description?has_content && Description.getData() != ''>
105 <p class="col-12 text-center">${Description.getData()}</p>
106 </#if>
107 </div>
108 <div class="col-12 company__details layout-grid">
109 <div class="layout-grid__row">
110 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Website" /></div> </div>
111 <div class="layout-grid__column"> <div class="layout-grid__cell">
112 <#if organizationURL?has_content>
113 <a class="ms-break-all" href="${organizationURL}" target="_blank">${organizationURL}</a>
114 <#else>
115 —
116 </#if>
117 </div> </div>
118 </div>
119 <div class="layout-grid__row">
120 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Head-Office-Location" /></div> </div>
121 <div class="layout-grid__column"> <div class="layout-grid__cell">${organizationCountry?has_content?then(organizationCountry, '—')}</div> </div>
122 </div>
123 <div class="layout-grid__row">
124 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Address" /></div> </div>
125 <div class="layout-grid__column"> <div class="layout-grid__cell">${CompanyAddress.getData()?has_content?then(CompanyAddress.getData(), '—')}</div> </div>
126 </div>
127 <div class="layout-grid__row">
128 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Telephone" /></div> </div>
129 <div class="layout-grid__column"> <div class="layout-grid__cell">${organizationPhoneNumber?has_content?then(organizationPhoneNumber, '—')}</div> </div>
130 </div>
131 <div class="layout-grid__row">
132 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Name" /></div> </div>
133 <div class="layout-grid__column"> <div class="layout-grid__cell">${ContactName.getData()?has_content?then(ContactName.getData(), '—')}</div> </div>
134 </div>
135 <div class="layout-grid__row">
136 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Position" /></div> </div>
137 <div class="layout-grid__column"> <div class="layout-grid__cell">${ContactPositionTitle.getData()?has_content?then(ContactPositionTitle.getData(), '—')}</div> </div>
138 </div>
139 <div class="layout-grid__row">
140 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Telephone" /></div> </div>
141 <div class="layout-grid__column"> <div class="layout-grid__cell">${ContactTelephone.getData()?has_content?then(ContactTelephone.getData(), '—')}</div> </div>
142 </div>
143 <div class="layout-grid__row">
144 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Email" /></div> </div>
145 <div class="layout-grid__column"> <div class="layout-grid__cell">
146 <#if ContactEmail.getData()?has_content>
147 <a class="ms-break-all" href="mailto:${ContactEmail.getData()}">${ContactEmail.getData()}</a>
148 <#else>
149 —
150 </#if>
151 </div> </div>
152 </div>
153 <div class="layout-grid__row">
154 <div class="layout-grid__column font-light"> <div class="layout-grid__cell"><@liferay.language key="Company.Contact-Linkedin" /></div> </div>
155 <div class="layout-grid__column"> <div class="layout-grid__cell">
156 <#if LinkedInProfileURL.getData()?has_content>
157 <a class="ms-break-all" href="${LinkedInProfileURL.getData()}" target="_blank"> ${LinkedInProfileURL.getData()}</a>
158 <#else>
159 —
160 </#if>
161 </div> </div>
162 </div>
163 </div>
164 </div>
165 <div class="margin-top-20 margin-bottom-20">
166 <#if (CompanyAddress?? && CompanyAddress.CompanyAddressMap?? && CompanyAddress.CompanyAddressMap.getData() != "")>
167 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(CompanyAddress.CompanyAddressMap.getData())>
168 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
169 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
170
171 <@liferay_map["map-display"]
172 geolocation=true
173 latitude=latitude
174 longitude=longitude
175 name="CompanyAddress.CompanyAddressMap${randomizer.nextInt()}"
176 />
177 </#if>
178 </div>
179 <div class="text-center">
180 <button class="btn btn-primary btn-default button--contact-us" data-company-name="${organizationName}" data-company-id="${organizationId}"><@liferay.language key="contact-us-button" /></button>
181 </div>
182 </div>
183 </div>
184</div>
185</#compress>