Upcoming Events Header

Recent Activities

Search Results
Filters
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • Certification Momentum Expands Across the Countries Most Real Estate Markets

    BREEAM USA’s 2025 Review: Scaling Impact Across Key Markets

    USABREEAM
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    Tip: If the failing expression is known to 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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    61                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    62            <#else> 
    63                <#if (AuthorName.getData())?has_content> 
    64                    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    65                </#if> 
    66            </#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
Category Facet