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