Category Facet

Category

Category Facet

Category

Category Facet

Category

Sort

Search Results

An error occurred while processing the template.
The following has evaluated to null or missing:
==> stat  [in template "20098#20124#2513884" at line 20, column 27]

----
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: #assign articleTitleEn = stat.getTitl...  [in template "20098#20124#2513884" at line 20, column 1]
----
1<div data-analytics-asset-type="document" 
2  data-analytics-asset-id="publications-downloaded" 
3  data-analytics-asset-title="Publications Downloaded" 
4	data-analytics-asset-action="download">  
5	 
6<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
7    JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") 
8    resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data) 
9    articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey) 
10    dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
11    assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
12    dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
13    dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
14    statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics") 
15    assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
16			<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
17 
18 
19<#assign journalArticleTitle=.vars['reserved-article-title'].data /> 
20<#assign articleTitleEn = stat.getTitle("en_US")!journalArticleTitle /> 
21				<#assign articleTitleAr = stat.getTitle("ar_SA")!journalArticleTitle /> 
22				<#assign currentUserScreenName = themeDisplay.getUser().getScreenName()!"" /> 
23 
24<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
25<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")/> 
26 
27 
28<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg" 
29    categoryDisplay="Economic" /> 
30<#if (articleCatNames?size > 0)> 
31    <#list articleCatNames as category> 
32    <#if category.parentCategoryId==0> 
33        <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()> 
34            <#assign assetThemeCategoryId=category.categoryId?long /> 
35            <#assign 
36                themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue() 
37                themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue() 
38                themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() /> 
39         
40            <#if themeImgId!="0"> 
41                <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number) 
42                    imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) /> 
43            </#if> 
44            <#list category.name?split(" ") as catWords> 
45												<#assign categoryDisplay = catWords/> 
46													<#break> 
47									</#list> 
48									<#assign categoryDisplay = category.titleCurrentValue/> 
49										</#if> 
50									</#if> 
51								</#list> 
52 
53                                </#if> 
54 
55 
56<#if file_upload.getSiblings()?has_content> 
57  
58					<#list file_upload.getSiblings() as medias> 
59                    <#if medias.getData()?has_content > 
60					 
61			<div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded"> 
62                <div class="col-lg-1 p-0 "> 
63                    <div class="icon d-flex text-center px-2 py-3" style="background: #eee"> 
64                        <div class="align-self-center mx-auto d-flex flex-column"> 
65                            <img src="/documents/d/guest/${themeIconId}" height="30"> 
66                            <label class="small mx-auto mb-0" style="color: #${themeColor} ;"> 
67                                ${categoryDisplay} 
68                            </label> 
69                        </div> 
70                    </div> 
71                </div> 
72 
73                <div class="col-8"> 
74                    <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p> 
75										<div class="dates_inside_wrapper"> 
76 
77<div class="dates_inside"> 
78<img height="16" src="/documents/d/guest/release_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
79         
80 <div> 
81 Release Date:										<#assign releaseArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
82										<#assign releaseDate = releaseArticle.getExpandoBridge().getAttribute("UIIssueDate")/> 
83${releaseDate?string("yyyy-MM-dd")} 
84 </div> 
85  </div> 
86	<#assign publicationArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
87<#assign revisionDate = publicationArticle.getExpandoBridge().getAttribute("revisionDate")/> 
88	<#assign formattedRevDate = revisionDate?string("yyyy-MM-dd")> 
89	<#if formattedRevDate  != "1888-01-01"> 
90	 <div class="dates_inside"> 
91	 <img height="16" src="/documents/d/guest/revision_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
92   
93<div>Revision Date: 
94           ${revisionDate?string("yyyy-MM-dd")} 
95        </div> 
96    </div> 
97		</#if> 
98	 
99	 
100	 
101 
102										</div> 
103										 
104										<#assign articleId = .vars["reserved-article-id"].data?number> 
105										<#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content> 
106    <div class="dates_inside_wrapper p-1"> 
107        <img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20"> 
108        ${.vars['publicationNote'].getData()} 
109    </div>							 
110</#if> 
111										 
112									 
113							 
114							 
115                </div> 
116 
117                <div class="col-3 d-flex align-items-center justify-content-end"> 
118								 
119 
120                    <div class="my-2 right-icons d-flex align-items-center "> 
121                        <#if file_upload.getSiblings()?has_content> 
122                            <#list file_upload.getSiblings() as media> 
123                                <#if media.getData()?has_content> 
124 
125                                    <#assign counter=0> 
126                                        <#list "${media.getData()}" ?split("/") as mediaDataSplit> 
127                                            <#if counter==5> 
128                                                <#list mediaDataSplit?split("?") as uuId> 
129                                                    <#assign uuid=uuId /> 
130                                                    <#break> 
131                                                </#list> 
132                                            </#if> 
133                                            <#assign counter=counter+1> 
134                                        </#list> 
135                                        <#if uuid??> 
136                                            <#assign file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)> 
137                                                <#assign fileExtension=file.extension> 
138																								<#assign fileSize = file.size > 
139																								<#assign fileSizeInMB = (file.size / 1024 / 1024)?string('0.##')> 
140                                                    <#if fileExtension==""> 
141                                                        <#list "${file.fileName}" ?split(".") as extention> 
142                                                            <#if extention?is_last> 
143                                                                <#assign fileExtension=extention> 
144                                                                    <#break> 
145                                                            </#if> 
146                                                        </#list> 
147                                                    </#if> 
148                                                    <#if media.getData()?has_content> 
149 
150 
151                                                        <#if fileExtension=="pdf" || fileExtension=="PDF"> 
152                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
153                                                                style="order:1"  onclick="trackDownload(event, '${file.fileName}')> 
154                                                                <li class="list-item list-inline-item d-flex flex-column"> 
155                                                                <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg 
156                                                                        class="d-flex mx-auto align-self-center" /> 
157																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
158                                                                </li> 
159                                                            </a> 
160                                                        
161                                                        <#elseif fileExtension=="xls" || fileExtension=="XLS" || 
162                                                            fileExtension=="xlsx" || fileExtension=="XLSX"> 
163                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
164                                                                style="order:2" onclick="trackDownload(event, '${file.fileName}')"> 
165                                                                <li class="list-item list-inline-item d-flex flex-column"> 
166                                                                    
167																																	  <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg 
168                                                                        class="d-flex mx-auto align-self-center" /> 
169																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
170                                                                </li> 
171                                                            </a> 
172																														 
173																														<#else> 
174																														 
175																														 <a class="ml-2" href="${media.getData()}" target="blank" 
176                                                                style="order:3" onclick="trackDownload(event, '${file.fileName}')"> 
177                                                                <li class="list-item list-inline-item d-flex flex-column"> 
178																																  
179																																 <img src="/documents/d/guest/docx-1-" 
180                                                                        class="d-flex mx-auto align-self-center" style="height:25px;" /> 
181																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
182                                                                    
183                                                                </li> 
184                                                            </a> 
185																														 
186                                                        </#if> 
187																												 
188 
189                                                    </#if> 
190                                        </#if> 
191                                </#if> 
192                            </#list> 
193                        </#if> 
194                    </div> 
195                </div> 
196                </div> 
197 
198 
199 
200<#break> 
201        
202   </#if>    
203</#list> 
204</#if> 
205<style>.dates_inside_wrapper{ 
206 
207display: flex; 
208    gap: 5px; 
209    align-items: center; 
210    font-size: 13px; 
211    flex-direction: row; 
212    gap: 20px; 
213
214 
215.dates_inside { 
216 
217    display: flex; 
218    gap: 5px; 
219    align-items: center;  
220    
221    padding: 4px 10px; 
222    color: #616060; 
223    border-radius: 5px; 
224    
225
226.file-size{padding :5px;}</style> 
227<script> 
228<#assign JArticleTitle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />  
229<#assign JDisplayDate = JArticleTitle.getExpandoBridge().getAttribute("UIIssueDate")/> 
230var dateString = '${JDisplayDate?string("yyyy-MM-dd")}'; 
231 
232// Convert the string into a Date object 
233var date = new Date(dateString); 
234 
235// Format the date to "dd MMM yyyy" (e.g., "02 Feb 2024") 
236var formattedDate = date.toLocaleDateString('en-GB', { 
237    day: '2-digit', 
238    month: 'short', 
239    year: 'numeric' 
240}); 
241 
242// Set the formatted date into the HTML 
243document.querySelector('.publications-display').innerHTML = formattedDate; 
244function trackDownload(event, fileName) { 
245    console.log("INSIDE TRACKING DOWNLOADS"); 
246 
247    // Check if fileName is correctly passed 
248    if (fileName) { 
249        console.log("File Name: " + fileName); 
250        Analytics.track('trackPublicationDownloads', { 
251            'fileName': fileName 
252        }); 
253    } else { 
254        console.log("Error: File name is missing or incorrect."); 
255
256 
257    console.log("INSIDE TRACKER"); 
258
259function escapeNonAscii(str) { 
260    return str.replace(/[^\x00-\x7F]/g, function(ch) { 
261        return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4); 
262    }); 
263
264function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) { 
265    var innerPayload = { 
266        Name_EN: nameEn, 
267        Name_AR: nameAr, 
268        PublicationID: 0, 
269        CalendarID: 0, 
270        URL: fileUrl, 
271        CreatedBy: createdBy 
272    }; 
273 
274    var outerPayload = { 
275        url: 'Publication/InsertPublicationDownload', 
276        body: escapeNonAscii(JSON.stringify(innerPayload)) 
277    }; 
278 
279    try { 
280        fetch('/o/communication', { 
281            method: 'POST', 
282            headers: { 
283                'Accept': '*/*', 
284                'Content-Type': 'application/json; charset=utf-8' 
285            }, 
286            body: JSON.stringify(outerPayload) 
287        }); 
288    } catch (e) {} 
289
290</script> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> stat  [in template "20098#20124#2513884" at line 20, column 27]

----
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: #assign articleTitleEn = stat.getTitl...  [in template "20098#20124#2513884" at line 20, column 1]
----
1<div data-analytics-asset-type="document" 
2  data-analytics-asset-id="publications-downloaded" 
3  data-analytics-asset-title="Publications Downloaded" 
4	data-analytics-asset-action="download">  
5	 
6<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
7    JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") 
8    resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data) 
9    articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey) 
10    dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
11    assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
12    dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
13    dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
14    statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics") 
15    assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
16			<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
17 
18 
19<#assign journalArticleTitle=.vars['reserved-article-title'].data /> 
20<#assign articleTitleEn = stat.getTitle("en_US")!journalArticleTitle /> 
21				<#assign articleTitleAr = stat.getTitle("ar_SA")!journalArticleTitle /> 
22				<#assign currentUserScreenName = themeDisplay.getUser().getScreenName()!"" /> 
23 
24<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
25<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")/> 
26 
27 
28<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg" 
29    categoryDisplay="Economic" /> 
30<#if (articleCatNames?size > 0)> 
31    <#list articleCatNames as category> 
32    <#if category.parentCategoryId==0> 
33        <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()> 
34            <#assign assetThemeCategoryId=category.categoryId?long /> 
35            <#assign 
36                themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue() 
37                themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue() 
38                themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() /> 
39         
40            <#if themeImgId!="0"> 
41                <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number) 
42                    imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) /> 
43            </#if> 
44            <#list category.name?split(" ") as catWords> 
45												<#assign categoryDisplay = catWords/> 
46													<#break> 
47									</#list> 
48									<#assign categoryDisplay = category.titleCurrentValue/> 
49										</#if> 
50									</#if> 
51								</#list> 
52 
53                                </#if> 
54 
55 
56<#if file_upload.getSiblings()?has_content> 
57  
58					<#list file_upload.getSiblings() as medias> 
59                    <#if medias.getData()?has_content > 
60					 
61			<div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded"> 
62                <div class="col-lg-1 p-0 "> 
63                    <div class="icon d-flex text-center px-2 py-3" style="background: #eee"> 
64                        <div class="align-self-center mx-auto d-flex flex-column"> 
65                            <img src="/documents/d/guest/${themeIconId}" height="30"> 
66                            <label class="small mx-auto mb-0" style="color: #${themeColor} ;"> 
67                                ${categoryDisplay} 
68                            </label> 
69                        </div> 
70                    </div> 
71                </div> 
72 
73                <div class="col-8"> 
74                    <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p> 
75										<div class="dates_inside_wrapper"> 
76 
77<div class="dates_inside"> 
78<img height="16" src="/documents/d/guest/release_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
79         
80 <div> 
81 Release Date:										<#assign releaseArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
82										<#assign releaseDate = releaseArticle.getExpandoBridge().getAttribute("UIIssueDate")/> 
83${releaseDate?string("yyyy-MM-dd")} 
84 </div> 
85  </div> 
86	<#assign publicationArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
87<#assign revisionDate = publicationArticle.getExpandoBridge().getAttribute("revisionDate")/> 
88	<#assign formattedRevDate = revisionDate?string("yyyy-MM-dd")> 
89	<#if formattedRevDate  != "1888-01-01"> 
90	 <div class="dates_inside"> 
91	 <img height="16" src="/documents/d/guest/revision_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
92   
93<div>Revision Date: 
94           ${revisionDate?string("yyyy-MM-dd")} 
95        </div> 
96    </div> 
97		</#if> 
98	 
99	 
100	 
101 
102										</div> 
103										 
104										<#assign articleId = .vars["reserved-article-id"].data?number> 
105										<#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content> 
106    <div class="dates_inside_wrapper p-1"> 
107        <img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20"> 
108        ${.vars['publicationNote'].getData()} 
109    </div>							 
110</#if> 
111										 
112									 
113							 
114							 
115                </div> 
116 
117                <div class="col-3 d-flex align-items-center justify-content-end"> 
118								 
119 
120                    <div class="my-2 right-icons d-flex align-items-center "> 
121                        <#if file_upload.getSiblings()?has_content> 
122                            <#list file_upload.getSiblings() as media> 
123                                <#if media.getData()?has_content> 
124 
125                                    <#assign counter=0> 
126                                        <#list "${media.getData()}" ?split("/") as mediaDataSplit> 
127                                            <#if counter==5> 
128                                                <#list mediaDataSplit?split("?") as uuId> 
129                                                    <#assign uuid=uuId /> 
130                                                    <#break> 
131                                                </#list> 
132                                            </#if> 
133                                            <#assign counter=counter+1> 
134                                        </#list> 
135                                        <#if uuid??> 
136                                            <#assign file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)> 
137                                                <#assign fileExtension=file.extension> 
138																								<#assign fileSize = file.size > 
139																								<#assign fileSizeInMB = (file.size / 1024 / 1024)?string('0.##')> 
140                                                    <#if fileExtension==""> 
141                                                        <#list "${file.fileName}" ?split(".") as extention> 
142                                                            <#if extention?is_last> 
143                                                                <#assign fileExtension=extention> 
144                                                                    <#break> 
145                                                            </#if> 
146                                                        </#list> 
147                                                    </#if> 
148                                                    <#if media.getData()?has_content> 
149 
150 
151                                                        <#if fileExtension=="pdf" || fileExtension=="PDF"> 
152                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
153                                                                style="order:1"  onclick="trackDownload(event, '${file.fileName}')> 
154                                                                <li class="list-item list-inline-item d-flex flex-column"> 
155                                                                <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg 
156                                                                        class="d-flex mx-auto align-self-center" /> 
157																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
158                                                                </li> 
159                                                            </a> 
160                                                        
161                                                        <#elseif fileExtension=="xls" || fileExtension=="XLS" || 
162                                                            fileExtension=="xlsx" || fileExtension=="XLSX"> 
163                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
164                                                                style="order:2" onclick="trackDownload(event, '${file.fileName}')"> 
165                                                                <li class="list-item list-inline-item d-flex flex-column"> 
166                                                                    
167																																	  <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg 
168                                                                        class="d-flex mx-auto align-self-center" /> 
169																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
170                                                                </li> 
171                                                            </a> 
172																														 
173																														<#else> 
174																														 
175																														 <a class="ml-2" href="${media.getData()}" target="blank" 
176                                                                style="order:3" onclick="trackDownload(event, '${file.fileName}')"> 
177                                                                <li class="list-item list-inline-item d-flex flex-column"> 
178																																  
179																																 <img src="/documents/d/guest/docx-1-" 
180                                                                        class="d-flex mx-auto align-self-center" style="height:25px;" /> 
181																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
182                                                                    
183                                                                </li> 
184                                                            </a> 
185																														 
186                                                        </#if> 
187																												 
188 
189                                                    </#if> 
190                                        </#if> 
191                                </#if> 
192                            </#list> 
193                        </#if> 
194                    </div> 
195                </div> 
196                </div> 
197 
198 
199 
200<#break> 
201        
202   </#if>    
203</#list> 
204</#if> 
205<style>.dates_inside_wrapper{ 
206 
207display: flex; 
208    gap: 5px; 
209    align-items: center; 
210    font-size: 13px; 
211    flex-direction: row; 
212    gap: 20px; 
213
214 
215.dates_inside { 
216 
217    display: flex; 
218    gap: 5px; 
219    align-items: center;  
220    
221    padding: 4px 10px; 
222    color: #616060; 
223    border-radius: 5px; 
224    
225
226.file-size{padding :5px;}</style> 
227<script> 
228<#assign JArticleTitle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />  
229<#assign JDisplayDate = JArticleTitle.getExpandoBridge().getAttribute("UIIssueDate")/> 
230var dateString = '${JDisplayDate?string("yyyy-MM-dd")}'; 
231 
232// Convert the string into a Date object 
233var date = new Date(dateString); 
234 
235// Format the date to "dd MMM yyyy" (e.g., "02 Feb 2024") 
236var formattedDate = date.toLocaleDateString('en-GB', { 
237    day: '2-digit', 
238    month: 'short', 
239    year: 'numeric' 
240}); 
241 
242// Set the formatted date into the HTML 
243document.querySelector('.publications-display').innerHTML = formattedDate; 
244function trackDownload(event, fileName) { 
245    console.log("INSIDE TRACKING DOWNLOADS"); 
246 
247    // Check if fileName is correctly passed 
248    if (fileName) { 
249        console.log("File Name: " + fileName); 
250        Analytics.track('trackPublicationDownloads', { 
251            'fileName': fileName 
252        }); 
253    } else { 
254        console.log("Error: File name is missing or incorrect."); 
255
256 
257    console.log("INSIDE TRACKER"); 
258
259function escapeNonAscii(str) { 
260    return str.replace(/[^\x00-\x7F]/g, function(ch) { 
261        return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4); 
262    }); 
263
264function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) { 
265    var innerPayload = { 
266        Name_EN: nameEn, 
267        Name_AR: nameAr, 
268        PublicationID: 0, 
269        CalendarID: 0, 
270        URL: fileUrl, 
271        CreatedBy: createdBy 
272    }; 
273 
274    var outerPayload = { 
275        url: 'Publication/InsertPublicationDownload', 
276        body: escapeNonAscii(JSON.stringify(innerPayload)) 
277    }; 
278 
279    try { 
280        fetch('/o/communication', { 
281            method: 'POST', 
282            headers: { 
283                'Accept': '*/*', 
284                'Content-Type': 'application/json; charset=utf-8' 
285            }, 
286            body: JSON.stringify(outerPayload) 
287        }); 
288    } catch (e) {} 
289
290</script> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> stat  [in template "20098#20124#2513884" at line 20, column 27]

----
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: #assign articleTitleEn = stat.getTitl...  [in template "20098#20124#2513884" at line 20, column 1]
----
1<div data-analytics-asset-type="document" 
2  data-analytics-asset-id="publications-downloaded" 
3  data-analytics-asset-title="Publications Downloaded" 
4	data-analytics-asset-action="download">  
5	 
6<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
7    JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") 
8    resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data) 
9    articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey) 
10    dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
11    assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
12    dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
13    dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
14    statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics") 
15    assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
16			<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
17 
18 
19<#assign journalArticleTitle=.vars['reserved-article-title'].data /> 
20<#assign articleTitleEn = stat.getTitle("en_US")!journalArticleTitle /> 
21				<#assign articleTitleAr = stat.getTitle("ar_SA")!journalArticleTitle /> 
22				<#assign currentUserScreenName = themeDisplay.getUser().getScreenName()!"" /> 
23 
24<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
25<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")/> 
26 
27 
28<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg" 
29    categoryDisplay="Economic" /> 
30<#if (articleCatNames?size > 0)> 
31    <#list articleCatNames as category> 
32    <#if category.parentCategoryId==0> 
33        <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()> 
34            <#assign assetThemeCategoryId=category.categoryId?long /> 
35            <#assign 
36                themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue() 
37                themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue() 
38                themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() /> 
39         
40            <#if themeImgId!="0"> 
41                <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number) 
42                    imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) /> 
43            </#if> 
44            <#list category.name?split(" ") as catWords> 
45												<#assign categoryDisplay = catWords/> 
46													<#break> 
47									</#list> 
48									<#assign categoryDisplay = category.titleCurrentValue/> 
49										</#if> 
50									</#if> 
51								</#list> 
52 
53                                </#if> 
54 
55 
56<#if file_upload.getSiblings()?has_content> 
57  
58					<#list file_upload.getSiblings() as medias> 
59                    <#if medias.getData()?has_content > 
60					 
61			<div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded"> 
62                <div class="col-lg-1 p-0 "> 
63                    <div class="icon d-flex text-center px-2 py-3" style="background: #eee"> 
64                        <div class="align-self-center mx-auto d-flex flex-column"> 
65                            <img src="/documents/d/guest/${themeIconId}" height="30"> 
66                            <label class="small mx-auto mb-0" style="color: #${themeColor} ;"> 
67                                ${categoryDisplay} 
68                            </label> 
69                        </div> 
70                    </div> 
71                </div> 
72 
73                <div class="col-8"> 
74                    <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p> 
75										<div class="dates_inside_wrapper"> 
76 
77<div class="dates_inside"> 
78<img height="16" src="/documents/d/guest/release_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
79         
80 <div> 
81 Release Date:										<#assign releaseArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
82										<#assign releaseDate = releaseArticle.getExpandoBridge().getAttribute("UIIssueDate")/> 
83${releaseDate?string("yyyy-MM-dd")} 
84 </div> 
85  </div> 
86	<#assign publicationArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
87<#assign revisionDate = publicationArticle.getExpandoBridge().getAttribute("revisionDate")/> 
88	<#assign formattedRevDate = revisionDate?string("yyyy-MM-dd")> 
89	<#if formattedRevDate  != "1888-01-01"> 
90	 <div class="dates_inside"> 
91	 <img height="16" src="/documents/d/guest/revision_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
92   
93<div>Revision Date: 
94           ${revisionDate?string("yyyy-MM-dd")} 
95        </div> 
96    </div> 
97		</#if> 
98	 
99	 
100	 
101 
102										</div> 
103										 
104										<#assign articleId = .vars["reserved-article-id"].data?number> 
105										<#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content> 
106    <div class="dates_inside_wrapper p-1"> 
107        <img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20"> 
108        ${.vars['publicationNote'].getData()} 
109    </div>							 
110</#if> 
111										 
112									 
113							 
114							 
115                </div> 
116 
117                <div class="col-3 d-flex align-items-center justify-content-end"> 
118								 
119 
120                    <div class="my-2 right-icons d-flex align-items-center "> 
121                        <#if file_upload.getSiblings()?has_content> 
122                            <#list file_upload.getSiblings() as media> 
123                                <#if media.getData()?has_content> 
124 
125                                    <#assign counter=0> 
126                                        <#list "${media.getData()}" ?split("/") as mediaDataSplit> 
127                                            <#if counter==5> 
128                                                <#list mediaDataSplit?split("?") as uuId> 
129                                                    <#assign uuid=uuId /> 
130                                                    <#break> 
131                                                </#list> 
132                                            </#if> 
133                                            <#assign counter=counter+1> 
134                                        </#list> 
135                                        <#if uuid??> 
136                                            <#assign file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)> 
137                                                <#assign fileExtension=file.extension> 
138																								<#assign fileSize = file.size > 
139																								<#assign fileSizeInMB = (file.size / 1024 / 1024)?string('0.##')> 
140                                                    <#if fileExtension==""> 
141                                                        <#list "${file.fileName}" ?split(".") as extention> 
142                                                            <#if extention?is_last> 
143                                                                <#assign fileExtension=extention> 
144                                                                    <#break> 
145                                                            </#if> 
146                                                        </#list> 
147                                                    </#if> 
148                                                    <#if media.getData()?has_content> 
149 
150 
151                                                        <#if fileExtension=="pdf" || fileExtension=="PDF"> 
152                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
153                                                                style="order:1"  onclick="trackDownload(event, '${file.fileName}')> 
154                                                                <li class="list-item list-inline-item d-flex flex-column"> 
155                                                                <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg 
156                                                                        class="d-flex mx-auto align-self-center" /> 
157																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
158                                                                </li> 
159                                                            </a> 
160                                                        
161                                                        <#elseif fileExtension=="xls" || fileExtension=="XLS" || 
162                                                            fileExtension=="xlsx" || fileExtension=="XLSX"> 
163                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
164                                                                style="order:2" onclick="trackDownload(event, '${file.fileName}')"> 
165                                                                <li class="list-item list-inline-item d-flex flex-column"> 
166                                                                    
167																																	  <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg 
168                                                                        class="d-flex mx-auto align-self-center" /> 
169																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
170                                                                </li> 
171                                                            </a> 
172																														 
173																														<#else> 
174																														 
175																														 <a class="ml-2" href="${media.getData()}" target="blank" 
176                                                                style="order:3" onclick="trackDownload(event, '${file.fileName}')"> 
177                                                                <li class="list-item list-inline-item d-flex flex-column"> 
178																																  
179																																 <img src="/documents/d/guest/docx-1-" 
180                                                                        class="d-flex mx-auto align-self-center" style="height:25px;" /> 
181																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
182                                                                    
183                                                                </li> 
184                                                            </a> 
185																														 
186                                                        </#if> 
187																												 
188 
189                                                    </#if> 
190                                        </#if> 
191                                </#if> 
192                            </#list> 
193                        </#if> 
194                    </div> 
195                </div> 
196                </div> 
197 
198 
199 
200<#break> 
201        
202   </#if>    
203</#list> 
204</#if> 
205<style>.dates_inside_wrapper{ 
206 
207display: flex; 
208    gap: 5px; 
209    align-items: center; 
210    font-size: 13px; 
211    flex-direction: row; 
212    gap: 20px; 
213
214 
215.dates_inside { 
216 
217    display: flex; 
218    gap: 5px; 
219    align-items: center;  
220    
221    padding: 4px 10px; 
222    color: #616060; 
223    border-radius: 5px; 
224    
225
226.file-size{padding :5px;}</style> 
227<script> 
228<#assign JArticleTitle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />  
229<#assign JDisplayDate = JArticleTitle.getExpandoBridge().getAttribute("UIIssueDate")/> 
230var dateString = '${JDisplayDate?string("yyyy-MM-dd")}'; 
231 
232// Convert the string into a Date object 
233var date = new Date(dateString); 
234 
235// Format the date to "dd MMM yyyy" (e.g., "02 Feb 2024") 
236var formattedDate = date.toLocaleDateString('en-GB', { 
237    day: '2-digit', 
238    month: 'short', 
239    year: 'numeric' 
240}); 
241 
242// Set the formatted date into the HTML 
243document.querySelector('.publications-display').innerHTML = formattedDate; 
244function trackDownload(event, fileName) { 
245    console.log("INSIDE TRACKING DOWNLOADS"); 
246 
247    // Check if fileName is correctly passed 
248    if (fileName) { 
249        console.log("File Name: " + fileName); 
250        Analytics.track('trackPublicationDownloads', { 
251            'fileName': fileName 
252        }); 
253    } else { 
254        console.log("Error: File name is missing or incorrect."); 
255
256 
257    console.log("INSIDE TRACKER"); 
258
259function escapeNonAscii(str) { 
260    return str.replace(/[^\x00-\x7F]/g, function(ch) { 
261        return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4); 
262    }); 
263
264function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) { 
265    var innerPayload = { 
266        Name_EN: nameEn, 
267        Name_AR: nameAr, 
268        PublicationID: 0, 
269        CalendarID: 0, 
270        URL: fileUrl, 
271        CreatedBy: createdBy 
272    }; 
273 
274    var outerPayload = { 
275        url: 'Publication/InsertPublicationDownload', 
276        body: escapeNonAscii(JSON.stringify(innerPayload)) 
277    }; 
278 
279    try { 
280        fetch('/o/communication', { 
281            method: 'POST', 
282            headers: { 
283                'Accept': '*/*', 
284                'Content-Type': 'application/json; charset=utf-8' 
285            }, 
286            body: JSON.stringify(outerPayload) 
287        }); 
288    } catch (e) {} 
289
290</script> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> stat  [in template "20098#20124#2513884" at line 20, column 27]

----
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: #assign articleTitleEn = stat.getTitl...  [in template "20098#20124#2513884" at line 20, column 1]
----
1<div data-analytics-asset-type="document" 
2  data-analytics-asset-id="publications-downloaded" 
3  data-analytics-asset-title="Publications Downloaded" 
4	data-analytics-asset-action="download">  
5	 
6<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") 
7    JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService") 
8    resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data) 
9    articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey) 
10    dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') 
11    assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") 
12    dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
13    dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
14    statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics") 
15    assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
16			<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
17 
18 
19<#assign journalArticleTitle=.vars['reserved-article-title'].data /> 
20<#assign articleTitleEn = stat.getTitle("en_US")!journalArticleTitle /> 
21				<#assign articleTitleAr = stat.getTitle("ar_SA")!journalArticleTitle /> 
22				<#assign currentUserScreenName = themeDisplay.getUser().getScreenName()!"" /> 
23 
24<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
25<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")/> 
26 
27 
28<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg" 
29    categoryDisplay="Economic" /> 
30<#if (articleCatNames?size > 0)> 
31    <#list articleCatNames as category> 
32    <#if category.parentCategoryId==0> 
33        <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()> 
34            <#assign assetThemeCategoryId=category.categoryId?long /> 
35            <#assign 
36                themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue() 
37                themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue() 
38                themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() /> 
39         
40            <#if themeImgId!="0"> 
41                <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number) 
42                    imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) /> 
43            </#if> 
44            <#list category.name?split(" ") as catWords> 
45												<#assign categoryDisplay = catWords/> 
46													<#break> 
47									</#list> 
48									<#assign categoryDisplay = category.titleCurrentValue/> 
49										</#if> 
50									</#if> 
51								</#list> 
52 
53                                </#if> 
54 
55 
56<#if file_upload.getSiblings()?has_content> 
57  
58					<#list file_upload.getSiblings() as medias> 
59                    <#if medias.getData()?has_content > 
60					 
61			<div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded"> 
62                <div class="col-lg-1 p-0 "> 
63                    <div class="icon d-flex text-center px-2 py-3" style="background: #eee"> 
64                        <div class="align-self-center mx-auto d-flex flex-column"> 
65                            <img src="/documents/d/guest/${themeIconId}" height="30"> 
66                            <label class="small mx-auto mb-0" style="color: #${themeColor} ;"> 
67                                ${categoryDisplay} 
68                            </label> 
69                        </div> 
70                    </div> 
71                </div> 
72 
73                <div class="col-8"> 
74                    <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p> 
75										<div class="dates_inside_wrapper"> 
76 
77<div class="dates_inside"> 
78<img height="16" src="/documents/d/guest/release_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
79         
80 <div> 
81 Release Date:										<#assign releaseArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
82										<#assign releaseDate = releaseArticle.getExpandoBridge().getAttribute("UIIssueDate")/> 
83${releaseDate?string("yyyy-MM-dd")} 
84 </div> 
85  </div> 
86	<#assign publicationArticle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) /> 
87<#assign revisionDate = publicationArticle.getExpandoBridge().getAttribute("revisionDate")/> 
88	<#assign formattedRevDate = revisionDate?string("yyyy-MM-dd")> 
89	<#if formattedRevDate  != "1888-01-01"> 
90	 <div class="dates_inside"> 
91	 <img height="16" src="/documents/d/guest/revision_icon" class="pe-2" style="filter: invert(1); padding-inline-end: 2px; padding-bottom:3px;"> 
92   
93<div>Revision Date: 
94           ${revisionDate?string("yyyy-MM-dd")} 
95        </div> 
96    </div> 
97		</#if> 
98	 
99	 
100	 
101 
102										</div> 
103										 
104										<#assign articleId = .vars["reserved-article-id"].data?number> 
105										<#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content> 
106    <div class="dates_inside_wrapper p-1"> 
107        <img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20"> 
108        ${.vars['publicationNote'].getData()} 
109    </div>							 
110</#if> 
111										 
112									 
113							 
114							 
115                </div> 
116 
117                <div class="col-3 d-flex align-items-center justify-content-end"> 
118								 
119 
120                    <div class="my-2 right-icons d-flex align-items-center "> 
121                        <#if file_upload.getSiblings()?has_content> 
122                            <#list file_upload.getSiblings() as media> 
123                                <#if media.getData()?has_content> 
124 
125                                    <#assign counter=0> 
126                                        <#list "${media.getData()}" ?split("/") as mediaDataSplit> 
127                                            <#if counter==5> 
128                                                <#list mediaDataSplit?split("?") as uuId> 
129                                                    <#assign uuid=uuId /> 
130                                                    <#break> 
131                                                </#list> 
132                                            </#if> 
133                                            <#assign counter=counter+1> 
134                                        </#list> 
135                                        <#if uuid??> 
136                                            <#assign file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)> 
137                                                <#assign fileExtension=file.extension> 
138																								<#assign fileSize = file.size > 
139																								<#assign fileSizeInMB = (file.size / 1024 / 1024)?string('0.##')> 
140                                                    <#if fileExtension==""> 
141                                                        <#list "${file.fileName}" ?split(".") as extention> 
142                                                            <#if extention?is_last> 
143                                                                <#assign fileExtension=extention> 
144                                                                    <#break> 
145                                                            </#if> 
146                                                        </#list> 
147                                                    </#if> 
148                                                    <#if media.getData()?has_content> 
149 
150 
151                                                        <#if fileExtension=="pdf" || fileExtension=="PDF"> 
152                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
153                                                                style="order:1"  onclick="trackDownload(event, '${file.fileName}')> 
154                                                                <li class="list-item list-inline-item d-flex flex-column"> 
155                                                                <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg 
156                                                                        class="d-flex mx-auto align-self-center" /> 
157																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
158                                                                </li> 
159                                                            </a> 
160                                                        
161                                                        <#elseif fileExtension=="xls" || fileExtension=="XLS" || 
162                                                            fileExtension=="xlsx" || fileExtension=="XLSX"> 
163                                                            <a class="ml-2" href="${media.getData()}" target="blank" 
164                                                                style="order:2" onclick="trackDownload(event, '${file.fileName}')"> 
165                                                                <li class="list-item list-inline-item d-flex flex-column"> 
166                                                                    
167																																	  <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg 
168                                                                        class="d-flex mx-auto align-self-center" /> 
169																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
170                                                                </li> 
171                                                            </a> 
172																														 
173																														<#else> 
174																														 
175																														 <a class="ml-2" href="${media.getData()}" target="blank" 
176                                                                style="order:3" onclick="trackDownload(event, '${file.fileName}')"> 
177                                                                <li class="list-item list-inline-item d-flex flex-column"> 
178																																  
179																																 <img src="/documents/d/guest/docx-1-" 
180                                                                        class="d-flex mx-auto align-self-center" style="height:25px;" /> 
181																																				<small class="text-dark-blue">  ${fileSizeInMB} MB </small>   
182                                                                    
183                                                                </li> 
184                                                            </a> 
185																														 
186                                                        </#if> 
187																												 
188 
189                                                    </#if> 
190                                        </#if> 
191                                </#if> 
192                            </#list> 
193                        </#if> 
194                    </div> 
195                </div> 
196                </div> 
197 
198 
199 
200<#break> 
201        
202   </#if>    
203</#list> 
204</#if> 
205<style>.dates_inside_wrapper{ 
206 
207display: flex; 
208    gap: 5px; 
209    align-items: center; 
210    font-size: 13px; 
211    flex-direction: row; 
212    gap: 20px; 
213
214 
215.dates_inside { 
216 
217    display: flex; 
218    gap: 5px; 
219    align-items: center;  
220    
221    padding: 4px 10px; 
222    color: #616060; 
223    border-radius: 5px; 
224    
225
226.file-size{padding :5px;}</style> 
227<script> 
228<#assign JArticleTitle = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />  
229<#assign JDisplayDate = JArticleTitle.getExpandoBridge().getAttribute("UIIssueDate")/> 
230var dateString = '${JDisplayDate?string("yyyy-MM-dd")}'; 
231 
232// Convert the string into a Date object 
233var date = new Date(dateString); 
234 
235// Format the date to "dd MMM yyyy" (e.g., "02 Feb 2024") 
236var formattedDate = date.toLocaleDateString('en-GB', { 
237    day: '2-digit', 
238    month: 'short', 
239    year: 'numeric' 
240}); 
241 
242// Set the formatted date into the HTML 
243document.querySelector('.publications-display').innerHTML = formattedDate; 
244function trackDownload(event, fileName) { 
245    console.log("INSIDE TRACKING DOWNLOADS"); 
246 
247    // Check if fileName is correctly passed 
248    if (fileName) { 
249        console.log("File Name: " + fileName); 
250        Analytics.track('trackPublicationDownloads', { 
251            'fileName': fileName 
252        }); 
253    } else { 
254        console.log("Error: File name is missing or incorrect."); 
255
256 
257    console.log("INSIDE TRACKER"); 
258
259function escapeNonAscii(str) { 
260    return str.replace(/[^\x00-\x7F]/g, function(ch) { 
261        return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4); 
262    }); 
263
264function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) { 
265    var innerPayload = { 
266        Name_EN: nameEn, 
267        Name_AR: nameAr, 
268        PublicationID: 0, 
269        CalendarID: 0, 
270        URL: fileUrl, 
271        CreatedBy: createdBy 
272    }; 
273 
274    var outerPayload = { 
275        url: 'Publication/InsertPublicationDownload', 
276        body: escapeNonAscii(JSON.stringify(innerPayload)) 
277    }; 
278 
279    try { 
280        fetch('/o/communication', { 
281            method: 'POST', 
282            headers: { 
283                'Accept': '*/*', 
284                'Content-Type': 'application/json; charset=utf-8' 
285            }, 
286            body: JSON.stringify(outerPayload) 
287        }); 
288    } catch (e) {} 
289
290</script>