An error occurred while processing the template.
Java method "com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl.getAssetViewURL(com.liferay.portal.kernel.portlet.LiferayPortletRequest, com.liferay.portal.kernel.portlet.LiferayPortletResponse, com.liferay.asset.kernel.model.AssetEntry, boolean)" threw an exception when invoked on com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl object "com.liferay.asset.publisher.web.internal.util.AssetPublisherHelperImpl@14b46bd4"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign directUrl = assetPublisherHel...  [in template "20097#20123#117955" at line 83, column 25]
----
1<style> 
2    .rl-courses .content .title { 
3        height: 60px; 
4        overflow: hidden; 
5        display: -webkit-box; 
6        -webkit-line-clamp: 3; 
7        -webkit-box-orient: vertical; 
8
9    .rl-courses .price { 
10        color: #0097ce; 
11        padding-left: 10px; 
12
13 
14</style> 
15 
16<section class="rl-courses"> 
17<div class="container"> 
18    <h2 class="title-1">What Others Also Enrolled In</h2> 
19    <div class="sly-wrap sp-bot-2"> 
20        <div class="multisly" data-slide="1"> 
21            <div class="grid-4 clearfix sly-content" id="recommended_courses_home"> 
22                 
23            <!--LOOPING--> 
24            <#if entries?has_content> 
25                <#list entries as curEntry> 
26                 
27                    <#assign entryId = curEntry.getClassPK()/> 
28                    <#assign renderer = curEntry.getAssetRenderer()/> 
29                    <#assign className = renderer.getClassName()/> 
30                     
31                    <#if className = "com.liferay.journal.model.JournalArticle"> 
32                     
33                        <#assign journalArticle = renderer.getArticle() /> 
34                        <#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
35                        <#assign rootElement = document.getRootElement()/> 
36 
37                        <#assign getDisplayDate = journalArticle.getDisplayDate()/> 
38                        <#assign displayDate = dateUtil.getDate(getDisplayDate, "dd MMM yyyy", locale)/> 
39 
40                        <#if journalArticle.getExpirationDate()??> 
41                            <#assign dateExp = journalArticle.getExpirationDate()/> 
42                            <#assign displayExpDate = dateUtil.getDate(dateExp, "dd MMM yyyy", locale)/> 
43                            <#assign expiredDate =  displayExpDate/> 
44                        <#else> 
45                            <#assign expiredDate = "No Expired"/> 
46                        </#if> 
47 
48                        <#list rootElement.elements() as dynamicElement>  
49                            <#if "image" == dynamicElement.attributeValue("name")> 
50                                <#assign ImageBackground = dynamicElement.element("dynamic-content").getStringValue()/> 
51                                <#assign path_image = "/documents/"/> 
52                                <#assign image_json = jsonFactoryUtil.createJSONObject(ImageBackground)/> 
53                                <#assign image_title = image_json.getString('title') /> 
54                                <#assign image_grupid = image_json.getString('groupId') + "/" /> 
55                                <#assign image_fileEntryId = image_json.getString('fileEntryId') + "/" /> 
56                                <#assign image_name = stringUtil.replace(image_json.getString('name'), " ","%20" )/> 
57                                <#assign image_uuid = "/" + image_json.getString('uuid') + "/"/> 
58                                <#assign full_image = path_image + image_grupid + image_fileEntryId + image_name + image_uuid />  
59                            </#if> 
60                            <#if "title" == dynamicElement.attributeValue("name")> 
61                                <#assign title = dynamicElement.element("dynamic-content").getText()/>  
62                            </#if> 
63                            <#if "popular" == dynamicElement.attributeValue("name")> 
64                                <#assign popular = dynamicElement.element("dynamic-content").getText()/>  
65                            </#if> 
66                            <#if "courseTitle" == dynamicElement.attributeValue("name")> 
67                                <#assign courseTitle = dynamicElement.element("dynamic-content").getText()/>  
68                            </#if> 
69                             
70                            <#if "content" == dynamicElement.attributeValue("name")> 
71                                <#assign content = dynamicElement.element("dynamic-content").getText()/>  
72                            </#if> 
73                              <#if "funded" == dynamicElement.attributeValue("name")> 
74                                <#assign funded = dynamicElement.element("dynamic-content").getText()/>  
75                            </#if> 
76                            <#if "price" == dynamicElement.attributeValue("name")> 
77                                <#assign price = dynamicElement.element("dynamic-content").getText()/>  
78                            </#if> 
79                             
80                     
81                         
82                          </#list> 
83                        <#assign directUrl = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry, true)/> 
84                        <#assign finalUrl = directUrl> 
85                        
86 
87                <div class="item active"> 
88                    <div class="inner imgeffect"> 
89                        <figure class="imgwrap" style="height:270px !important"> 
90                            <img  class="w-100" style="height: 100%; object-fit: cover;" src="${full_image}" 
91                                ret-data="22618"> 
92                                <!--<#if popular == "true">--> 
93                                <!--    <div class="status">POPULAR</div>--> 
94                                <!--<#else>--> 
95 
96                                <!--</#if>--> 
97                            
98                        </figure> 
99 
100                        <div class="content" style="height:150px"> 
101                            <div class="box-status"> 
102                                <#if popular == "true"> 
103                                    <span class="popular">Popular</span> 
104                                </#if> 
105                                <#if funded == "true"> 
106                                    <span class="funded">Funded</span> 
107                                </#if> 
108                            </div> 
109                            <p class="title">${courseTitle}</p> 
110                             <a href="${finalUrl}" 
111                            class="fxlink">View detail</a> 
112                             <div class="float-right small-text"> 
113                                    <#if funded == "true"> 
114                                        Before Funding 
115                                    </#if> 
116                                     
117                                 <#assign fixprice="${price}"> 
118 
119                             <!--<#assign labelTitik=price?replace('.', '&nbsp;titik&nbsp;' ) />--> 
120                                <#if price == "" || price == "0" > 
121                                  <!--<strong class="price"></strong>--> 
122                                    <#else> 
123                <strong class="price">$${fixprice?number?string.currency?replace('¤' , '')}</strong> 
124                                </#if> 
125                                </div> 
126                        </div> 
127                         
128                        <a data-senna-off="true" href="${finalUrl}" 
129                            class="fxlink link-detail">View detail</a> 
130                    </div> 
131                </div> 
132 
133                    </#if>         
134                </#list>     
135            </#if> 
136            <!--LOOPING--> 
137      </div> 
138        </div> 
139        <div class="scrollbar"> 
140            <div class="handle"> 
141                <div class="mousearea"></div> 
142            </div> 
143        </div> 
144        <!--<button class="btn prevPage"><i class="fas fa-arrow-left"></i> prev</button>--> 
145        <!--<button class="btn nextPage"><i class="fas fa-arrow-right"></i> next</button>--> 
146    </div> 
147    <!--<div class="text-center sp-bot-1">--> 
148    <!--    <a href="#" class="btn-1">View all courses</a>--> 
149    <!--</div>--> 
150</div> 
151</section> 
152<script type="text/javascript"> 
153    $(document).ready(function(){ 
154        /* Updated 3 Jan 2025 */ 
155        let hiddenTileCnt = 0; 
156        $('.rl-courses .multisly .item').each(function(){ 
157            var urlDetail = $(this).find('.link-detail').attr("href").replace(/en/, "en-gb"); 
158            var url = urlDetail.split("?"); 
159            var thisUrl = window.location.href; 
160            var urlNow = thisUrl.split("?"); 
161            if (url[0] == urlNow[0]) { 
162                $(this).css("display", "none"); 
163                hiddenTileCnt++; 
164
165        }); 
166        /* If total tiles available == hiddenTileCnt, then hide the section title */ 
167        if ($('.rl-courses .multisly .item').length == hiddenTileCnt){ 
168            $('.rl-courses h2').hide(); 
169
170    }); 
171</script>