Search Results

Benefits

An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy426.getArticleResourcePrimKey(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy426 object "com.liferay.journal.service.impl.JournalArticleResourceLocalServiceImpl@3cd75977"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: articleResourcePrimaryKey = journalAr...  [in template "20096#20121#207707" at line 12, column 5]
----
1<#assign friendlyURLEntryLocalService=serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") /> 
2<#assign classNameLocalService=serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") /> 
3<#assign assetCategoryClassNameId=classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") /> 
4<#assign assetCategoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
5 
6<#assign excludedCategories=["News","Case Study","BREEAM","z_infracasestudiesppc","z_Report_listing","Report_list","Reports","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
7 
8<#assign 
9    journalArticleResourceLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") 
10    assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
11    journalArticleId=.vars['reserved-article-id'].data 
12    articleResourcePrimaryKey=journalArticleResourceLocalService.getArticleResourcePrimKey(themeDisplay.getScopeGroupId(), 
13    journalArticleId) assetEntry=assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", 
14    articleResourcePrimaryKey) assetCategories=assetEntry.getCategories() /> 
15 
16<#assign rn=randomNamespace> 
17 
18<#list assetCategories as category> 
19    <#assign categoryName=category.getName() /> 
20</#list> 
21 
22<!-- [Start] News Header --> 
23<section class="c-news-header" style="background-image: url('${cardImage.getData()}')"> 
24    <div class="c-news-header__body"> 
25        <ul class="c-news-header__byline"> 
26            <#if categoryName?has_content> 
27                <li class="c-news-header__category">${categoryName}</li> 
28            </#if> 
29            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
30                <li class="c-news-header__date"> 
31                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
32                    <#if validator.isNotNull(CardDate)> 
33                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate, locale)> 
34                            ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
35                    </#if> 
36                </li> 
37            </#if> 
38 
39            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
40                <#if (cardAuthor.getData())?has_content> 
41                    <li class="c-news-header__author">${cardAuthor.getData()}</li> 
42                <#else> 
43                    <li class="c-news-header__author">${.vars["reserved-article-author-name"].data}</li> 
44                </#if> 
45            </#if> 
46        </ul> 
47        <#if (cardTitle.getData())??> 
48            <h1 class="c-section__title mb-0"> 
49                ${cardTitle.getData()} 
50            </h1> 
51        </#if> 
52    </div> 
53</section> 
54<!-- [End] News Header --> 
55 
56 
57<!-- [Start] Page Description --> 
58<#if (cardDscription.getData())?has_content> 
59    <section class="c-section"> 
60        <div class="container"> 
61            <div class="c-small-desc"> 
62                ${cardDscription.getData()} 
63            </div> 
64        </div> 
65    </section> 
66</#if> 
67<!-- [End] Page Description --> 
68 
69 
70<!-- [Start] Page Rich Description --> 
71<#if (RichCardDscription.getData())?has_content> 
72    <section class="c-section"> 
73        <div class="container"> 
74            <div class="c-small-desc"> 
75                ${RichCardDscription.getData()} 
76            </div> 
77        </div> 
78    </section> 
79</#if> 
80<!-- [End] Page Rich Description --> 
81 
82 
83<!-- [Start] News Details --> 
84<section class="c-section c-section--gray-f5 c-casestudy-details c-section--ptb-32"> 
85    <div class="container"> 
86        <div class="row justify-content-center"> 
87            <div class="col-lg-12"> 
88                <div class="c-article-details"> 
89 
90                    <!-- [Start] Overview and About --> 
91                    <#assign webContentData=jsonFactoryUtil.createJSONObject(overviewAbout.getData()) /> 
92                    <#if webContentData?? && webContentData.title??> 
93                        <div class="c-overview-about c-section pt-0"> 
94                            <#assign journalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
95                            <#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />         
96                            <#assign asset=assetEntryLocalService.getEntry(webContentData.className, getterUtil.getLong(webContentData.classPK)) /> 
97                            <#assign assetRenderer=asset.getAssetRenderer() journalArticle=assetRenderer.getAssetObject() /> 
98                            <@liferay_journal["journal-article"]  
99                                articleId=journalArticle.getArticleId() 
100                                ddmTemplateKey=journalArticle.getDDMTemplateKey()  
101                                groupId=journalArticle.getGroupId()  
102                            />         
103                        </div> 
104                    </#if> 
105                    <!-- [End] Overview and About --> 
106 
107 
108                    <#if caseStudyGroup.getSiblings()?has_content> 
109                        <#list caseStudyGroup.getSiblings() as cur_caseStudyGroup> 
110 
111                            <!-- [Start] Title --> 
112                            <#if (cur_caseStudyGroup.title.getData())?has_content> 
113                                <h2 class="c-article-details__title"> 
114                                    ${cur_caseStudyGroup.title.getData()} 
115                                </h2>	 
116                            </#if> 
117                            <!-- [End] Title --> 
118 
119 
120                            <!-- [Start] Summary --> 
121                            <#--<#if (cur_caseStudyGroup.summary.getData())?has_content> 
122                                <div class="c-summary"> 
123                                    ${cur_caseStudyGroup.summary.getData()} 
124                                </div> 
125                            </#if> --> 
126                            <!-- [End] Summary --> 
127 
128 
129                            <!-- [Start] Slice --> 
130                            <#if (cur_caseStudyGroup.slice.getData())?has_content> 
131																<div class="c-section-text"> 
132                                    ${cur_caseStudyGroup.slice.getData()} 
133                                </div> 
134                            </#if> 
135                            <!-- [End] Slice --> 
136 
137 
138                            <!-- [Start] Captioned Image --> 
139                            <#if (cur_caseStudyGroup.captionedImage.getData())?? && cur_caseStudyGroup.captionedImage.getData() != ""> 
140                                <div class="c-captioned-image"> 
141                                    <div class="c-captioned-image__image"> 
142                                        <img class="img-fluid lazy" loading="lazy" alt="${cur_caseStudyGroup.captionedImage.getAttribute("alt")}" data-fileentryid="${cur_caseStudyGroup.captionedImage.getAttribute("fileEntryId")}" data-src="${cur_caseStudyGroup.captionedImage.getData()}" /> 
143                                    </div> 
144                                    <div class="c-captioned-image__body"> 
145                                        ${cur_caseStudyGroup.captionedImage.getAttribute("alt")} 
146                                    </div> 
147                                </div> 
148                            </#if> 
149                            <!-- [End] Captioned Image --> 
150												 
151<!-- [Start] Captioned Image Popup --> 
152<#if cur_caseStudyGroup.captionedImage.getData()??> 
153<div class="c-captioned-image-popup"> 
154	<div class="container"> 
155		<div class="c-captioned-image-popup__header"> 
156			<i class="c-icon c-icon--close c-captioned-image-popup__close"></i> 
157		</div> 
158		<img src="" alt="" class="c-captioned-image-popup__image" /> 
159	</div> 
160</div> 
161<div class="c-captioned-popup__backdrop"></div> 
162</#if> 
163<!-- [End] Captioned Image Popup -->												 
164 
165 
166                            <!-- [Start] Image Slider --> 
167                            <#if cur_caseStudyGroup.carouselImage.getSiblings()?has_content && (cur_caseStudyGroup.carouselImage.getSiblings()?size) gt 1> 
168                                <div class="c-article-image-slider c-section--carousel-half slick-carousel slick-carousel--one-half-card ${rn}_Carousel"> 
169                                    <#list cur_caseStudyGroup.carouselImage.getSiblings() as cur_caseStudyGroup_carouselImage> 
170                                        <#if (cur_caseStudyGroup_carouselImage.getData())?has_content && cur_caseStudyGroup_carouselImage.getData()??> 
171                                            <div> 
172                                                <div class="c-image-placeholder"> 
173                                                    <img class="img-fluid lazy" loading="lazy" alt="${cur_caseStudyGroup_carouselImage.getAttribute("alt")}" data-fileentryid="${cur_caseStudyGroup_carouselImage.getAttribute("fileEntryId")}" data-src="${cur_caseStudyGroup_carouselImage.getData()}" /> 
174                                                </div> 
175                                            </div>   
176                                        </#if> 
177                                    </#list> 
178                                </div> 
179                            </#if> 
180                            <!-- [End] Image Slider --> 
181         
182										 
183                            <!-- [Start] Video --> 
184                            <#if (cur_caseStudyGroup.video.getData())?has_content> 
185                                <div class="c-video">     
186                                    <#if !cur_caseStudyGroup.video.getData()?contains("youtube") && !cur_caseStudyGroup.video.getData()?contains("vimeo")> 
187                                        <div class="c-video__disabled"> 
188                                            ${cur_caseStudyGroup.video.getData()} 
189                                        </div> 
190                                    <#else> 
191                                        ${cur_caseStudyGroup.video.getData()} 
192                                    </#if> 
193                                </div> 
194                            </#if> 
195                            <!-- [End] Video --> 
196 
197 
198                            <!-- [Start] Slice --> 
199                            <#if (cur_caseStudyGroup.slice01.getData())?has_content> 
200																<div class="c-section-text"> 
201                                    ${cur_caseStudyGroup.slice01.getData()} 
202                                </div> 
203                            </#if> 
204                            <!-- [End] Slice --> 
205                             
206										 
207                            <!-- [Start] Quotes --> 
208                             
209                                <#assign webContentData=jsonFactoryUtil.createJSONObject(cur_caseStudyGroup.quotes.getData()) /> 
210 
211                                <#if webContentData?? && webContentData.title??> 
212                                    <div class="c-quotes"> 
213                                    <#assign journalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
214                                    <#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
215                                    <#assign asset=assetEntryLocalService.getEntry(webContentData.className, getterUtil.getLong(webContentData.classPK)) /> 
216                                    <#assign assetRenderer=asset.getAssetRenderer() journalArticle=assetRenderer.getAssetObject() /> 
217 
218                                    <@liferay_journal["journal-article"]  
219                                        articleId=journalArticle.getArticleId() 
220                                        ddmTemplateKey=journalArticle.getDDMTemplateKey()  
221                                        groupId=journalArticle.getGroupId()  
222                                    /> 
223                                    </div> 
224                                </#if> 
225                             
226                            <!-- [End] Quotes --> 
227 
228										 
229                            <!-- [Start] Slice --> 
230                            <#if (cur_caseStudyGroup.slice02.getData())?has_content> 
231																<div class="c-section-text"> 
232                                    ${cur_caseStudyGroup.slice02.getData()} 
233                                </div> 
234                            </#if> 
235                            <!-- [End] Slice --> 
236								 
237 
238                            <!-- [Start] Button --> 
239                            <#if (cur_caseStudyGroup.buttonText.getData())?has_content> 
240                                <a class="c-button c-button--secondary" data-senna-off="true" 
241                                    href="${cur_caseStudyGroup.buttonLink.getData()}"> 
242                                    ${cur_caseStudyGroup.buttonText.getData()} 
243                                </a> 
244                            </#if> 
245                            <!-- [End] Button --> 
246 
247                        </#list> 
248                    </#if>		 
249 
250                </div> 
251            </div> 
252        </div> 
253    </div> 
254</section> 
255<!-- [End] News Details --> 
256 
257<!--[Start] Tag option--> 
258<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
259<#assign plid=themeDisplay.getLayout().getParentPlid() /> 
260<#assign pageFriendlyURL=themeDisplay.getLayout().getFriendlyURL() /> 
261<#if plid?exists && plid!=0> 
262 <#assign pageFriendlyURL=LayoutLocalService.getLayout(plid).getFriendlyURL()/> 
263<#if pageFriendlyURL == "/press-releases-not-in-use" > 
264    <#assign pageFriendlyURL="/media-centre" /> 
265<#elseif pageFriendlyURL=="/reports" > 
266    <#assign pageFriendlyURL="/reports-categories" /> 
267</#if> 
268</#if> 
269 
270<section class="c-section c-section--gray-f5 d-none c-article-related-tags" id="articleRelatedTags"> 
271    <div class="container"> 
272        <div class="row justify-content-center"> 
273            <div class="col-lg-12"> 
274                <div class="c-share"> 
275								<h3 class="c-share__title">Related Topics</h3> 
276                <#list assetCategories as category> 
277                     
278                   <#assign curCategoryName =category.getName() /> 
279									 <#if ! excludedCategories?seq_contains(curCategoryName)> 
280									 <#assign urlTitle="" /> 
281                    <#assign curCategoryId = category.getCategoryId() /> 
282                            <#assign curTagFriendlyUrl = "" /> 
283 
284                            <#assign friendlyURLs = friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(themeDisplay.getCompanyGroupId(), assetCategoryClassNameId, curCategoryId, localeUtil.toLanguageId(locale), 0, 1, null) /> 
285                            <#if friendlyURLs?size == 1> 
286                                <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
287                            </#if> 
288														 
289												<#assign curTagUrl = themeDisplay.getPortalURL() + pageFriendlyURL  + "/tags/" + curTagFriendlyUrl /> 
290                         <a href="${curTagUrl}" class="c-new-small-tag">${curCategoryName}</a> 
291								   </#if> 
292								</#list> 
293								</div> 
294            </div> 
295        </div> 
296    </div> 
297</section> 
298<!--[End] Tag option--> 
299 
300<style> 
301.c-section .c-section { padding: 0; } 
302 
303.c-article-details a { 
304    color: #1e1836; 
305
306 
307.c-summary ul li,  
308.c-section-text ul li,  
309.c-rich-text ul li { 
310    display: block; 
311    position: relative; 
312    padding-left: 25px; 
313
314.c-summary ul li::before,  
315.c-section-text ul li::before,  
316.c-rich-text ul li::before { 
317    position: absolute; 
318    left: 0; 
319
320 
321.c-captioned-image { cursor: pointer; } 
322.c-captioned-image-popup { 
323    display: none; 
324		overflow-y: auto; 
325    position: fixed; 
326    top: 0; 
327		left: 0; 
328    width: 100%; 
329		height: 100%; 
330    z-index: 1045; 
331		padding: 32px 0; 
332
333.c-captioned-image-popup.open { 
334    display: block; 
335
336.c-captioned-image-popup__header { 
337    display: flex; 
338    justify-content: flex-end; 
339
340.c-captioned-image-popup__header .c-icon--close { 
341    cursor: pointer; 
342
343.c-captioned-image-popup__image { 
344    width: 100%; 
345
346.c-captioned-popup__backdrop { 
347    display: none; 
348    position: fixed; 
349    top: 0; 
350    left: 0; 
351    z-index: 1040; 
352    width: 100vw; 
353    height: 100vh; 
354    background-color: rgba(0, 0, 0, 0.25); 
355
356.c-overview-about .c-casestudy-overview + .c-casestudy-about{ 
357    padding-bottom: 16px; 
358
359.c-casestudy-details .c-section-text{ 
360    padding: 0 0 16px 0; 
361
362 
363.c-casestudy-about .c-feature-card__desc, 
364.c-casestudy-about .c-feature-card__desc p, 
365.c-section-text table tr td { 
366		font-size: 18px; 
367		line-height: 21px; 
368		letter-spacing: 1.5px; 
369
370 
371.c-section-text table tr td { padding: 5px; } 
372 
373.c-article-related-tags .c-new-small-tag { 
374		line-height: 1.5rem; 
375		border: solid 1px #1E183680; 
376		padding: 4px 8px; 
377		color: #1E1836; 
378		font-size: 14px; 
379		cursor: pointer; 
380		display: inline-flex; 
381		border-radius: 0; 
382		margin: 0 4px 8px 0;                                                 
383
384.c-article-related-tags .c-new-small-tag:hover { 
385		outline: solid 1px rgba(30, 24, 54, 0.2); 
386		text-decoration: none; 
387		color: #1E1836;         
388
389 
390@media all and (min-width: 1200px) { 
391		.c-text-block-head__title { font-size: 42px; } 
392 
393		.c-news-header .c-news-header__byline, 
394		.c-news-header .c-section__title { padding-left: 4rem; } 
395		 
396		.c-news-header .c-section__title::before { 
397        width: 3.5rem; 
398        height: 3.5rem; 
399				background-image: url("/documents/d/bre-group/back-slash-blue-01"); 
400
401
402</style> 
403 
404<script> 
405    $(document).ready(function () { 
406 
407let pageRelatedTagsExists = $('#pageRelatedTags').length > 0; 
408let pageRelatedTagsExistsLength = $('#pageRelatedTags .c-share').children('a.c-new-small-tag').length > 0; 
409let articleRelatedTagsExists = $('#articleRelatedTags .c-share').children('a.c-new-small-tag').length > 0; 
410		 
411if(pageRelatedTagsExists) { 
412    if(!pageRelatedTagsExistsLength) { 
413        $('#pageRelatedTags').parents('section.c-section.c-section--gray-fb').hide(); 
414
415} else {             
416    let articleRelatedSection = document.querySelectorAll("#articleRelatedTags"); 
417    let relatedTagsBoolean = true; 
418 
419    articleRelatedSection.forEach(relatedArticles => { 
420 
421        let relatedTagsCount = relatedArticles.querySelectorAll('a.c-new-small-tag').length; 
422 
423        if (relatedTagsBoolean && relatedTagsCount != 0) { 
424            relatedTagsBoolean = false; 
425            $(relatedArticles).insertBefore('#footer').removeClass('d-none'); 
426        } else { 
427            $(relatedArticles).addClass('d-none'); 
428
429    }); 
430
431		 
432        $('.${rn}_Carousel').slick({ 
433            slidesToShow: 1.5, 
434            slidesToScroll: 1, 
435            arrows: true, 
436            dots: true, 
437            infinite: false, 
438            accessibility: false, 
439            responsive: [ 
440
441                    breakpoint: 600, 
442                    settings: { 
443                        arrows: false, 
444                        slidesToShow: 1 
445
446
447
448        }); 
449				 
450        // Remove unwanted html for white space 
451        let childElement = $('.${rn}_Carousel .slick-track').children(); 
452        if(childElement.length < 1) { 
453            $('.${rn}_Carousel').remove();  
454
455		 
456		 
457		// Captioned Image Popup 
458		$('.c-captioned-image-popup').not(':first').remove(); 
459		$('.c-captioned-popup__backdrop').not(':first').remove(); 
460 
461		const winWidth = $(window).width(); 
462		 
463		if(winWidth > 992) { 
464			$('body').on('click', '.c-captioned-image', function() { 
465				let imgSource = $(this).children('.c-captioned-image__image').find('img').attr('src'); 
466				//console.log($(this).children('.c-captioned-image__image').find('img').attr('src')); 
467				$('body').css('overflow', 'hidden'); 
468				$('.c-captioned-popup__backdrop').show(); 
469				$('.c-captioned-image-popup').addClass('open'); 
470				$('.c-captioned-image-popup__image').attr('src', imgSource); 
471			}); 
472			 
473			$('.c-captioned-image-popup__close').click(function(){ 
474			  $('body').attr('style', ''); 
475			  $('.c-captioned-popup__backdrop').hide(); 
476				$('.c-captioned-image-popup').removeClass('open');		 
477				$('.c-captioned-image-popup__image').attr('src', ''); 
478			}); 
479
480		 
481    }); 
482</script>