IB - Insights - Podcast - Banner

Insights
Designed for curious minds

Discover a cross-section of content from industry leaders and experts shaping the future of our innovation economy.

Menu Display

IB - Insights - Podcasts - HeadLine

CIBC Innovation Banking Podcast

On our #CIBCInnovationEconomy podcast series, hear from leaders, entrepreneurs, experts and venture capitalists about the changing dynamics of the North American innovation economy

IB - Podcast Publish Buttons

Asset Publisher

An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy155.getDLFileEntryByUuidAndGroupId(String, long)" threw an exception when invoked on jdk.proxy3.$Proxy155 object "com.liferay.document.library.internal.service.FriendlyURLDLFileEntryLocalServiceWrapper@2b656642"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local dlFileEntry = dlFileEntryLocal...  [in template "709831#709857#732636" in function "getArticleDLEntryUrl" at line 116, column 5]
----
1<#macro language 
2        key 
3
4${languageUtil.get(locale, key)} 
5</#macro> 
6<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() /> 
7 
8<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") 
9    layout = LayoutLocalService.getFriendlyURLLayout(themeDisplay.getScopeGroupId(), false, "/podcast-list") 
10    listUrl = portalUtil.getLayoutFullURL(layout, themeDisplay) 
11
12<div class="insight-section"> 
13    <#if entries?has_content> 
14        <div class="currect-section"> 
15            <div class="container"> 
16                <#assign 
17                   httpUtil = staticUtil["com.liferay.portal.kernel.util.HttpComponentsUtil"] 
18				   lastestEntry = entries[0] 
19				   assetRenderer = lastestEntry.getAssetRenderer() 
20 
21                    journalArticle = assetRenderer.getAssetObject() 
22                    document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) 
23                    titleNode = document.selectSingleNode("/root/dynamic-element[@name='PodcastTitle']/dynamic-content") 
24                    imageNode = document.valueOf("/root/dynamic-element[@name='PodcastImage']/dynamic-content") 
25                    imageJson = jsonFactoryUtil.createJSONObject(imageNode) 
26                    documentUrl = getArticleDLEntryUrl(imageJson) 
27                    summaryNode = document.selectSingleNode("/root/dynamic-element[@name='PodcastSummary']/dynamic-content") 
28                    embedURL = document.selectSingleNode("/root/dynamic-element[@name='EmbedURL']/dynamic-content") 
29                    viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, lastestEntry, true) 
30                    viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) 
31					viewURL = httpUtil.setParameter(viewURL,"podcastdetail","transcript") 
32					videoDuration = document.valueOf("//dynamic-element[@name='VideoDuration']/dynamic-content/text()") 
33				/> 
34 
35                <div class="card"> 
36                    <#if documentUrl??> 
37                        <img alt="${imageJson.getString('alt')}" src="${documentUrl}" class="card-img-top col-md-12"/> 
38                    </#if> 
39                    <div class="card-body" style="padding: 15px;"> 
40                        <div class="row no-gutters"> 
41                            <div class="primary-color subhead_md col-md-auto"><@liferay.language key="current-episode" />:&nbsp;</div> 
42                            <div class="subhead_md col-md-9">${titleNode.getText()}</div> 
43                        </div> 
44                        <p>${summaryNode.getText() }</p> 
45                        <div class="row"> 
46                            <a href="${embedURL.getText()}" class="podcast-play-link" role="button" data-toggle="modal" data-target="#podcastModal" aria-label="<@liferay.language key="play-video"/>: ${titleNode.getText()} ${videoDuration}. <@liferay.language key="opens-in-dialog"/>"><img src="/o/innovation-banking-theme/images/Play-Icon-Red-Large.png" alt="" class="mr-2"></a> 
47                            <a href="${viewURL}" class="link-of-page my-auto" aria-label="<@liferay.language key="transcript" /> ${titleNode.getText()}"> 
48                                    <@liferay.language key="transcript" /></a> 
49                        </div> 
50                    </div> 
51                </div> 
52        </div>    
53        </div> 
54        <div class="container podcast-cards"> 
55        <div class="row"> 
56            <#list 1..3 as x> 
57                <div class="col-md-4 col-sm-6 mb-2"> 
58                    <#if entries[x]??> 
59                    <#assign 
60                        lastestEntry = entries[x] 
61                        assetRenderer = lastestEntry.getAssetRenderer() 
62                        journalArticle = assetRenderer.getAssetObject() 
63                        viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, lastestEntry, true) 
64                        viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) 
65                        viewURL = httpUtil.setParameter(viewURL,"podcastdetail","transcript") 
66                        temp = serviceContext.setAttribute("my_view_url", viewURL) 
67                     /> 
68                     <@liferay_journal["journal-article"] 
69                            articleId=journalArticle.getArticleId() 
70                            ddmTemplateKey="665778" 
71                            groupId=journalArticle.getGroupId() 
72                        /> 
73                    </#if> 
74                </div> 
75            </#list> 
76        </div> 
77        </div> 
78    </#if> 
79</div> 
80<div class="d-flex justify-content-center"> 
81    <a href="${listUrl}" class="btn btn-primary" aria-label="<@liferay.language key="view-all-podcasts-alt-text"/>">${languageUtil.get(locale, "view-all-podcasts-alt-text")}</a> 
82</div> 
83<div class="podcast-modal"> 
84<div class="modal fade" id="podcastModal" tabindex="-1" role="dialog" aria-hidden="true"> 
85    <div class="modal-dialog"> 
86        <div class="modal-content"> 
87            <div class="modal-body"> 
88                <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
89                <span aria-hidden="true">&times;</span> 
90                </button>         
91                <div id="videoContainer" tabindex="0" class="youtubevideo"> 
92					<div class="youtubeVideoEmbed"> 
93						<iframe class="embed-responsive-item optanon-category-[C0004]" id="podcastVideo"  allowscriptaccess="autoplay" allow="autoplay" title="<@liferay.language key="video-player"/>"></iframe> 
94					</div> 
95					<div class="youtube-notification hide" id="ytvideo-notification"> 
96							<img src="/documents/709853/1056517/youtube-256x256.svg/227c2cba-952b-94ae-acf5-163ccacd0458?t=1726482979959"> 
97							<h3 style="text-align: center;"><span class="subhead-medium"><@liferay.language key="cookies-disabled"/></span></h3> 
98					         <p> 
99								<span class="banner-body-copy"><@liferay.language key="cookies-disabled-message-part1"/><a href="#" target="_blank" class=" inlineLink DefaultColor" data-di-id="di-id-6c88222-cea0fdde">&nbsp;<@liferay.language key="cookies-disabled-message-part2"/>&nbsp;</a><@liferay.language key="cookies-disabled-message-part3"/></span></p> 
100					</div> 
101				</div> 
102            </div> 
103        </div> 
104    </div> 
105</div> 
106</div> 
107<#function getArticleDLEntryUrl jsonObject> 
108    <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
109    <#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
110    <#local docUrl = "" /> 
111 
112    <#if jsonObject?has_content> 
113    <#local entryUuid = jsonObject.getString("uuid") /> 
114    <#local entryGroupId = getterUtil.getLong(jsonObject.getString("groupId")) /> 
115 
116    <#local dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) /> 
117 
118    <#local assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) /> 
119    <#local assetRenderer = assetEntry.assetRenderer /> 
120 
121    <#local docUrl = assetRenderer.getURLDownload(themeDisplay) /> 
122  </#if> 
123  <#return docUrl /> 
124</#function> 
125 
126<style> 
127	.subhead_md p{ 
128		margin-bottom:0px; 
129		font-size: 26px!important; 
130		font-family: Whitney-Medium-Pro,Arial,Helvetica,sans-serif; 
131
132    .podcast-cards .col-md-4 { 
133        display: flex; 
134
135 
136    .podcast-cards .card { 
137        height : 100%; 
138        background: #f2f3f2; 
139        margin-bottom: 0; 
140
141    .podcast-cards .journal-content-article { 
142        width: 100%; 
143
144    .podcast-modal .modal { 
145        display: none; 
146
147 
148    .podcast-modal .modal-dialog { 
149      max-width: 550px; 
150      margin: 30px auto; 
151      position: relative; 
152
153 .podcast-card-link { 
154    position: absolute; 
155    bottom: 0; 
156    margin-bottom: 0.50rem; 
157
158 .podcast-cards .card-body { 
159     padding-bottom: 2rem; 
160
161 .insight-section a.link-of-page{ 
162    text-decoration:none; 
163
164 .insight-section a.link-of-page:hover{ 
165    text-decoration:underline;  
166
167.btn-red-medium-play:hover{ 
168   /* border-bottom: none!important; */ 
169
170.btn-listen:hover { 
171   /* border-bottom: 1px solid #8B1D41; */ 
172
173 
174 
175.videoWrapper .youtube-notification { 
176    position: absolute; 
177    text-align: center; 
178    width: 100%; 
179    padding: 0 20px 0 20px 
180
181 
182.youtubeVideoEmbed { 
183    position: relative; 
184    padding-bottom: 56.25%; 
185    height: 0 
186
187 
188.youtubeVideoEmbed iframe { 
189    position: absolute; 
190    top: 0; 
191    left: 0; 
192    width: 100%; 
193    height: 100% 
194
195 
196.youtubeVideoEmbed .youtube-notification img,.videoWrapper .youtube-notification img { 
197    height: 64px; 
198    width: 64px 
199
200 
201.youtubeVideoEmbed .youtube-notification span,.videoWrapper .youtube-notification span { 
202    margin: 20px 0 20px 0 
203
204 
205.youtubeVideoEmbed.youtube-notification-min-height { 
206    border: 1px solid var(--Border-border-decorative,#bbbcbc) 
207
208 
209 
210@media only screen and (max-width: 767px) { 
211    .youtubeVideoEmbed .youtube-notification { 
212        text-align:center 
213
214 
215    .youtubeVideoEmbed.youtube-notification-min-height { 
216        min-height: 363px; 
217        padding: 8px 8px 0 8px 
218
219 
220    .youtubeVideoEmbed.youtube-notification-min-height { 
221        padding: 15px 15px 15px 15px 
222
223
224 
225@media only screen and (min-width: 768px) { 
226    .youtubeVideoEmbed .youtube-notification { 
227        position: absolute; 
228        left: 50%; 
229        top: 52%; 
230        transform: translate(-50%, -50%); 
231        text-align: center; 
232        width: 490px; 
233        padding: 0 20px 0 20px; 
234
235
236</style> 
237<script> 
238$(document).ready(function() { 
239 
240    var $podcastSrc, $podcastTitle;   
241    $('.podcast-play-link').click(function() { 
242        $podcastSrc = $(this).attr("href"); 
243        $podcastTitle = $(this).attr("aria-label").split('. '.concat('<@liferay.language key="opens-in-dialog"/>'))[0]; 
244    }); 
245    $('#podcastModal').on('shown.bs.modal', function (e) { 
246         if( isOneTrustEnabled() && (checkOptanonCookie('C0004') === 1) ) { 
247             $("#podcastVideo").attr('src',$podcastSrc + "?modestbranding=1&amp;showinfo=0" );  
248             $("#videoContainer").attr('aria-label',$podcastTitle);  
249
250    }) 
251 
252    $('#podcastModal').on('hide.bs.modal', function (e) { 
253        $("#podcastVideo").attr('src',"");  
254        $("#videoContainer").removeAttr('aria-label');  
255    }) 
256}); 
257</script> 

IB - Videos Page - Copyright Content

Disclaimer

Disclaimer

This content is intended as general information only and is not to be relied upon as constituting legal, financial or other professional advice. Information presented is believed to be factual and current but we do not guarantee its accuracy and it should not be regarded as a complete analysis of the subjects discussed. All expressions of opinion reflect the judgment of the authors as of the date of publication and are subject to change. No endorsement of any third parties or their advice, opinions, information, products or services is expressly given or implied by Canadian Imperial Bank of Commerce or any of its affiliates.