CIBC Innovation Banking Press Releases
Find the latest news on CIBC Innovation Banking, as it happens.
Latest news release :
An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy708.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy708 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@4e038d26"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: journalArticle = JournalArticleLocalS... [in template "709831#709857#665826" at line 31, column 25] ----
1<style>.component-title, .metadata-author{
2 display:none;
3}
4</style>
5<#--
6Web content templates are used to lay out the fields defined in a web
7content structure.
8
9Please use the left panel to quickly add commonly used variables.
10Autocomplete is also available and can be invoked by typing "${".
11-->
12<#assign
13 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
14 themeDisplay = serviceContext.getThemeDisplay()
15 group_id = themeDisplay.getScopeGroupId()
16 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
17>
18<#macro language
19 key
20>
21${languageUtil.get(locale, key)}
22</#macro>
23<div class="insight-section spokeperson-section container">
24<h2 class="headline_lg text-center"><@liferay.language key="spokespeople" /></h2>
25<#if PressReleaseSpokesPerson.getSiblings()?has_content>
26 <div class="row">
27 <#list PressReleaseSpokesPerson.getSiblings() as cur_PressReleaseSpokesPerson>
28 <#assign
29 webContentData = jsonFactoryUtil.createJSONObject(cur_PressReleaseSpokesPerson.getData())
30 classPk = webContentData.classPK
31 journalArticle = JournalArticleLocalService.getLatestArticle(classPk?number)
32 document = saxReaderUtil.read(journalArticle.getContentByLocale(locale))
33 firstNameNode = document.selectSingleNode("/root/dynamic-element[@name='FirstName']/dynamic-content")
34 lastNameNode = document.selectSingleNode("/root/dynamic-element[@name='LastName']/dynamic-content")
35 designationNode = document.selectSingleNode("/root/dynamic-element[@name='Designation']/dynamic-content")
36 emailAddressNode = document.selectSingleNode("/root/dynamic-element[@name='EmailAddress']/dynamic-content")
37 imageNode = document.selectSingleNode("/root/dynamic-element[@name='ProfileImage']/dynamic-content")
38 documentUrl = getArticleDLEntryUrl(imageNode.getStringValue())
39 highResolutionImageNode = document.selectSingleNode("/root/dynamic-element[@name='HighResolutionImage']/dynamic-content")
40 highResolutionUrl = getArticleDLEntryUrl(highResolutionImageNode.getStringValue())
41 bioUrl=document.selectSingleNode("/root/dynamic-element[@name='BioPageLink']/dynamic-content")
42
43 siteUrl = layout.getGroup().getDisplayURL(themeDisplay,true)
44
45 webcontentFriendlyUrl = siteUrl + "/-/" + journalArticle.getUrlTitle()
46 />
47 <div class="col-md-4 mb-3">
48 <div class="card spokeperson-card m-0">
49 <img src="${documentUrl}" class="card-img-top" alt="${firstNameNode.getText()} ${lastNameNode.getText()} <@liferay.language key='profile-picture-alt-label' />"/>
50 <div class="card-body">
51 <div class="subhead_md">${firstNameNode.getText()} ${lastNameNode.getText()}</div>
52 <div class="font_lg">
53 <div class="spokeperson-designation pb-2">${designationNode.getText()}</div>
54 <div class="row pb-2">
55 <div class="icon-mail my-auto"></div>
56 <a ria-label="<@liferay.language key="opens-user-main-box"/> ${emailAddressNode.getText()}" href="mailto:${emailAddressNode.getText()}" target="_blank" rel="noopener noreferrer" style="display: inline-flex;word-break: break-all;color: #383B3E;" class="spokeperson-email">${emailAddressNode.getText()}</a>
57 </div>
58 <div><a href="${bioUrl.getText()}" class="primary-color" data-spokesperson="${firstNameNode.getText()}-${lastNameNode.getText()}" aria-label="<@liferay.language key="read-biography" /> <@liferay.language key="of" /> ${firstNameNode.getText()} ${lastNameNode.getText()}"><@liferay.language key="read-biography" /></a></div>
59 <#if highResolutionUrl??>
60 <a href="${highResolutionUrl}" class="primary-color press-release-download" download data-spokesperson="${firstNameNode.getText()}-${lastNameNode.getText()}"><@liferay.language key="download-high-resolution-photo" /></a>
61 </#if>
62 </div>
63 </div>
64 </div>
65 </div>
66
67 </#list>
68 </div>
69</#if>
70</div>
71<#function getArticleDLEntryUrl xmlValue>
72 <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
73 <#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
74 <#local docUrl = "" />
75
76 <#if xmlValue?has_content>
77 <#local jsonObject = xmlValue?eval />
78
79 <#local entryUuid = jsonObject.uuid />
80 <#local entryGroupId = getterUtil.getLong(jsonObject.groupId) />
81
82 <#local dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) />
83
84 <#local assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) />
85 <#local assetRenderer = assetEntry.assetRenderer />
86
87 <#local docUrl = assetRenderer.getURLDownload(themeDisplay) />
88 </#if>
89 <#return docUrl />
90</#function>
91
92<style>
93 .spokesperson-picture {
94 height: 75vh;
95 object-position: top;
96 object-fit: cover;
97 }
98 .spokeperson-card {
99 height: 100%;
100 background: #f2f3f2 !important;
101 }
102 @media only screen and (min-width: 768px) and (max-width: 992px) {
103 .spokeperson-section {
104 max-width: 100%
105 }
106 .spokeperson-card .subhead_md {
107 font-size: 24px;
108 }
109 .spokeperson-card .spokeperson-email {
110 font-size: 13px;
111 }
112 .spokeperson-card .font_lg {
113 font-size: 16px;
114 }
115}
116 @media only screen and (min-width: 768px) and (max-width: 830px) {
117 .spokeperson-designation {
118 min-height: 105px;
119 }
120 }
121@media only screen and (min-width: 831px) {
122 .spokeperson-designation {
123 min-height: 90px;
124 }
125}
126</style>
Media contacts
If you are not part of the media but would like more information about CIBC and its products and services, please contact us.