Transport Statistics-Annually 2025
Bank Statistics-Quarterly First Quarter 2026
Fishery Statistics-Quarterly First Quarter 2025
Air Quality Statistics-Quarterly First Quarter 2025
Marine Water Quality Statistics-Quarterly First Quarter 2025
The following has evaluated to null or missing:
==> themeIconId [in template "20098#20124#1093349" at line 75, 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#1093349" at line 75, column 58]
----
1<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
2 JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")
3 resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data)
4 articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey)
5 dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService')
6 assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
7 dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
8 dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"]
9 jsonFactoryUtil=staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]
10 statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics")
11 assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
12 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
13
14<#assign journalArticleTitle=.vars['reserved-article-title'].data />
15
16<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />
17<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UiissueDate")!"" />
18<#if !journalArticleDisplayDate?has_content>
19 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")!"" />
20</#if>
21<#if !journalArticleDisplayDate?has_content>
22 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("Uiissuedate")!"" />
23</#if>
24<#assign publicationIsoDate = "" />
25<#if journalArticleDisplayDate?has_content>
26 <#attempt>
27 <#assign publicationIsoDate = journalArticleDisplayDate?string["yyyy-MM-dd"] />
28 <#recover>
29 <#assign publicationIsoDate = "" />
30 </#attempt>
31</#if>
32<#assign publicationPageUrl = themeDisplay.getPortalURL() + "/w/" + .vars['reserved-article-url-title'].data />
33<#assign publicationDistributions = jsonFactoryUtil.createJSONArray() />
34
35
36
37
38
39<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg"
40 categoryDisplay="Economic" />
41<#if (articleCatNames?size > 0)>
42 <#list articleCatNames as category>
43 <#if category.parentCategoryId==0>
44 <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()>
45 <#assign assetThemeCategoryId=category.categoryId?long />
46 <#assign
47 themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue()
48 themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue()
49 themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() />
50
51 <#if themeImgId!="0">
52 <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number)
53 imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) />
54 </#if>
55 <#list category.name?split(" ") as catWords>
56 <#assign categoryDisplay = catWords/>
57 <#break>
58 </#list>
59 <#assign categoryDisplay = category.titleCurrentValue/>
60 </#if>
61 </#if>
62 </#list>
63
64 </#if>
65
66
67<#if file_upload.getSiblings()?has_content>
68
69 <#list file_upload.getSiblings() as medias>
70
71 <div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded">
72 <div class="col-lg-1 p-0 ">
73 <div class="icon d-flex text-center p-1" style="background: #eee">
74 <div class="align-self-center mx-auto d-flex flex-column">
75 <img src="/documents/d/guest/${themeIconId}" height="30">
76 <label class="small mx-auto mb-0" style="color: #${themeColor} ;">
77 ${categoryDisplay}
78 </label>
79 </div>
80 </div>
81 </div>
82
83 <div class="col-8">
84 <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p>
85 </div>
86
87 <div class="col-3 d-flex align-items-center justify-content-end">
88
89 <div class="my-2 right-icons d-flex align-items-center ">
90 <#if file_upload.getSiblings()?has_content>
91 <#list file_upload.getSiblings() as media>
92 <#if media.getData()?has_content>
93 <#assign fileData = media.getData()?trim />
94 <#assign fileEntry = "" />
95 <#assign downloadUrl = "" />
96 <#assign fileExtension = "" />
97
98 <#-- Yearbook stores document_library as JSON; older content may use a /documents/... path -->
99 <#if fileData?starts_with("{")>
100 <#assign fileJson = jsonFactoryUtil.createJSONObject(fileData) />
101 <#assign fileEntryId = fileJson.getLong("fileEntryId") />
102 <#if fileEntryId gt 0>
103 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntry(fileEntryId) />
104 <#elseif fileJson.getString("uuid")?has_content>
105 <#assign fileGroupId = fileJson.getLong("groupId") />
106 <#if fileGroupId lte 0>
107 <#assign fileGroupId = groupId />
108 </#if>
109 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileJson.getString("uuid"), fileGroupId) />
110 </#if>
111 <#else>
112 <#assign uuid = "" />
113 <#list fileData?split("/") as mediaDataSplit>
114 <#assign segment = mediaDataSplit?split("?")[0] />
115 <#if segment?matches("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}")>
116 <#assign uuid = segment />
117 </#if>
118 </#list>
119 <#if uuid?has_content>
120 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(uuid, groupId) />
121 </#if>
122 </#if>
123
124 <#if fileEntry?has_content>
125 <#assign downloadUrl = dlUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, "&download=true", false, true) />
126 <#assign fileExtension = fileEntry.getExtension()!"" />
127 <#if !fileExtension?has_content>
128 <#list fileEntry.getFileName()?split(".") as extention>
129 <#if extention?is_last>
130 <#assign fileExtension = extention />
131 <#break>
132 </#if>
133 </#list>
134 </#if>
135 <#elseif fileData?contains("/documents/")>
136 <#assign downloadUrl = fileData />
137 <#if !downloadUrl?contains("download=true")>
138 <#if downloadUrl?contains("?")>
139 <#assign downloadUrl = downloadUrl + "&download=true" />
140 <#else>
141 <#assign downloadUrl = downloadUrl + "?download=true" />
142 </#if>
143 </#if>
144 <#list fileData?split("?")[0]?split("/") as pathPart>
145 <#if pathPart?contains(".")>
146 <#list pathPart?split(".") as extention>
147 <#if extention?is_last>
148 <#assign fileExtension = extention />
149 </#if>
150 </#list>
151 </#if>
152 </#list>
153 </#if>
154
155 <#if downloadUrl?has_content>
156 <#assign encodingFormat = "application/octet-stream" />
157 <#if fileExtension?lower_case == "pdf">
158 <#assign encodingFormat = "application/pdf" />
159 <#elseif fileExtension?lower_case == "xls">
160 <#assign encodingFormat = "application/vnd.ms-excel" />
161 <#elseif fileExtension?lower_case == "xlsx">
162 <#assign encodingFormat = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
163 </#if>
164 <#assign distributionJson = jsonFactoryUtil.createJSONObject() />
165 <#assign void = distributionJson.put("@type", "DataDownload") />
166 <#assign void = distributionJson.put("contentUrl", downloadUrl) />
167 <#assign void = distributionJson.put("encodingFormat", encodingFormat) />
168 <#if fileExtension?has_content>
169 <#assign void = distributionJson.put("name", journalArticleTitle + " (" + fileExtension?upper_case + ")") />
170 </#if>
171 <#assign void = publicationDistributions.put(distributionJson) />
172
173 <#if fileExtension == "pdf" || fileExtension == "PDF">
174 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:1" aria-label="Download PDF">
175 <li class="list-item list-inline-item d-flex">
176 <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg
177 class="d-flex mx-auto align-self-center" />
178 </li>
179 </a>
180 <#elseif fileExtension == "xls" || fileExtension == "XLS" ||
181 fileExtension == "xlsx" || fileExtension == "XLSX">
182 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:2" aria-label="Download Excel">
183 <li class="list-item list-inline-item d-flex">
184 <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg
185 class="d-flex mx-auto align-self-center" />
186 </li>
187 </a>
188 <#else>
189 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:3" aria-label="Download file">
190 <li class="list-item list-inline-item d-flex">
191 <i class="icon-file" style="font-size:27px"></i>
192 </li>
193 </a>
194 </#if>
195 </#if>
196 </#if>
197 </#list>
198 </#if>
199 </div>
200 </div>
201 </div>
202
203<#-- Schema.org Dataset JSON-LD (list view only — avoids duplicate grid+list scripts) -->
204<#assign datasetJson = jsonFactoryUtil.createJSONObject() />
205<#assign void = datasetJson.put("@context", "https://schema.org") />
206<#assign void = datasetJson.put("@type", "Dataset") />
207<#assign void = datasetJson.put("@id", publicationPageUrl + "#dataset") />
208<#assign void = datasetJson.put("name", journalArticleTitle) />
209<#assign void = datasetJson.put("url", publicationPageUrl) />
210<#assign publicationDescription = journalArticleTitle />
211<#if categoryDisplay?has_content>
212 <#assign publicationDescription = publicationDescription + " — " + categoryDisplay + " publication from Statistics Centre - Abu Dhabi (SCAD)." />
213<#else>
214 <#assign publicationDescription = publicationDescription + " — Statistical publication from Statistics Centre - Abu Dhabi (SCAD)." />
215</#if>
216<#if publicationIsoDate?has_content>
217 <#assign publicationDescription = publicationDescription + " Published on " + publicationIsoDate + "." />
218</#if>
219<#if publicationDistributions.length() gt 0>
220 <#assign publicationDescription = publicationDescription + " Downloadable PDF or Excel data file available." />
221</#if>
222<#if publicationDescription?length lt 50>
223 <#assign publicationDescription = publicationDescription + " Official SCAD statistical data is freely available to the public on the SCAD Download Publications catalog." />
224</#if>
225<#assign void = datasetJson.put("description", publicationDescription) />
226<#assign topicKeywords = categoryDisplay!"" />
227<#if topicKeywords?has_content>
228 <#assign void = datasetJson.put("keywords", topicKeywords) />
229 <#assign aboutThing = jsonFactoryUtil.createJSONObject() />
230 <#assign void = aboutThing.put("@type", "Thing") />
231 <#assign void = aboutThing.put("name", topicKeywords) />
232 <#assign void = datasetJson.put("about", aboutThing) />
233</#if>
234<#if publicationIsoDate?has_content>
235 <#assign void = datasetJson.put("datePublished", publicationIsoDate) />
236 <#assign void = datasetJson.put("dateModified", publicationIsoDate) />
237</#if>
238<#assign void = datasetJson.put("inLanguage", (themeDisplay.getLanguageId()?starts_with("ar"))?then("ar", "en")) />
239<#assign void = datasetJson.put("isAccessibleForFree", true) />
240<#assign void = datasetJson.put("license", "https://www.scad.gov.ae") />
241<#assign catalogRef = jsonFactoryUtil.createJSONObject() />
242<#assign void = catalogRef.put("@type", "DataCatalog") />
243<#assign void = catalogRef.put("name", "Download Publications") />
244<#assign void = catalogRef.put("url", themeDisplay.getPortalURL() + "/download-publications") />
245<#assign void = datasetJson.put("includedInDataCatalog", catalogRef) />
246<#assign creatorJson = jsonFactoryUtil.createJSONObject() />
247<#assign void = creatorJson.put("@type", "GovernmentOrganization") />
248<#assign void = creatorJson.put("name", "Statistics Centre - Abu Dhabi (SCAD)") />
249<#assign void = creatorJson.put("url", "https://www.scad.gov.ae") />
250<#assign void = datasetJson.put("creator", creatorJson) />
251<#assign void = datasetJson.put("publisher", creatorJson) />
252<#if publicationDistributions.length() gt 0>
253 <#assign void = datasetJson.put("distribution", publicationDistributions) />
254</#if>
255<script type="application/ld+json">
256${datasetJson.toString()}
257</script>
258
259<#break>
260
261
262</#list>
263</#if>
Industrial Production Index-Quarterly First Quarter 2025
Producer Price Index-Quarterly First Quarter 2025
Securities Market Statistics-Annually 2024
Non-oil Foreign Merchandise Trade Statistics Through Ports by Harmonized System-Monthly April 2025
Hotel Price Index-Monthly April 2025
The following has evaluated to null or missing:
==> themeIconId [in template "20098#20124#1093349" at line 75, 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#1093349" at line 75, column 58]
----
1<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
2 JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")
3 resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data)
4 articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey)
5 dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService')
6 assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
7 dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
8 dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"]
9 jsonFactoryUtil=staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]
10 statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics")
11 assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
12 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
13
14<#assign journalArticleTitle=.vars['reserved-article-title'].data />
15
16<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />
17<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UiissueDate")!"" />
18<#if !journalArticleDisplayDate?has_content>
19 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")!"" />
20</#if>
21<#if !journalArticleDisplayDate?has_content>
22 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("Uiissuedate")!"" />
23</#if>
24<#assign publicationIsoDate = "" />
25<#if journalArticleDisplayDate?has_content>
26 <#attempt>
27 <#assign publicationIsoDate = journalArticleDisplayDate?string["yyyy-MM-dd"] />
28 <#recover>
29 <#assign publicationIsoDate = "" />
30 </#attempt>
31</#if>
32<#assign publicationPageUrl = themeDisplay.getPortalURL() + "/w/" + .vars['reserved-article-url-title'].data />
33<#assign publicationDistributions = jsonFactoryUtil.createJSONArray() />
34
35
36
37
38
39<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg"
40 categoryDisplay="Economic" />
41<#if (articleCatNames?size > 0)>
42 <#list articleCatNames as category>
43 <#if category.parentCategoryId==0>
44 <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()>
45 <#assign assetThemeCategoryId=category.categoryId?long />
46 <#assign
47 themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue()
48 themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue()
49 themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() />
50
51 <#if themeImgId!="0">
52 <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number)
53 imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) />
54 </#if>
55 <#list category.name?split(" ") as catWords>
56 <#assign categoryDisplay = catWords/>
57 <#break>
58 </#list>
59 <#assign categoryDisplay = category.titleCurrentValue/>
60 </#if>
61 </#if>
62 </#list>
63
64 </#if>
65
66
67<#if file_upload.getSiblings()?has_content>
68
69 <#list file_upload.getSiblings() as medias>
70
71 <div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded">
72 <div class="col-lg-1 p-0 ">
73 <div class="icon d-flex text-center p-1" style="background: #eee">
74 <div class="align-self-center mx-auto d-flex flex-column">
75 <img src="/documents/d/guest/${themeIconId}" height="30">
76 <label class="small mx-auto mb-0" style="color: #${themeColor} ;">
77 ${categoryDisplay}
78 </label>
79 </div>
80 </div>
81 </div>
82
83 <div class="col-8">
84 <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p>
85 </div>
86
87 <div class="col-3 d-flex align-items-center justify-content-end">
88
89 <div class="my-2 right-icons d-flex align-items-center ">
90 <#if file_upload.getSiblings()?has_content>
91 <#list file_upload.getSiblings() as media>
92 <#if media.getData()?has_content>
93 <#assign fileData = media.getData()?trim />
94 <#assign fileEntry = "" />
95 <#assign downloadUrl = "" />
96 <#assign fileExtension = "" />
97
98 <#-- Yearbook stores document_library as JSON; older content may use a /documents/... path -->
99 <#if fileData?starts_with("{")>
100 <#assign fileJson = jsonFactoryUtil.createJSONObject(fileData) />
101 <#assign fileEntryId = fileJson.getLong("fileEntryId") />
102 <#if fileEntryId gt 0>
103 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntry(fileEntryId) />
104 <#elseif fileJson.getString("uuid")?has_content>
105 <#assign fileGroupId = fileJson.getLong("groupId") />
106 <#if fileGroupId lte 0>
107 <#assign fileGroupId = groupId />
108 </#if>
109 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileJson.getString("uuid"), fileGroupId) />
110 </#if>
111 <#else>
112 <#assign uuid = "" />
113 <#list fileData?split("/") as mediaDataSplit>
114 <#assign segment = mediaDataSplit?split("?")[0] />
115 <#if segment?matches("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}")>
116 <#assign uuid = segment />
117 </#if>
118 </#list>
119 <#if uuid?has_content>
120 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(uuid, groupId) />
121 </#if>
122 </#if>
123
124 <#if fileEntry?has_content>
125 <#assign downloadUrl = dlUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, "&download=true", false, true) />
126 <#assign fileExtension = fileEntry.getExtension()!"" />
127 <#if !fileExtension?has_content>
128 <#list fileEntry.getFileName()?split(".") as extention>
129 <#if extention?is_last>
130 <#assign fileExtension = extention />
131 <#break>
132 </#if>
133 </#list>
134 </#if>
135 <#elseif fileData?contains("/documents/")>
136 <#assign downloadUrl = fileData />
137 <#if !downloadUrl?contains("download=true")>
138 <#if downloadUrl?contains("?")>
139 <#assign downloadUrl = downloadUrl + "&download=true" />
140 <#else>
141 <#assign downloadUrl = downloadUrl + "?download=true" />
142 </#if>
143 </#if>
144 <#list fileData?split("?")[0]?split("/") as pathPart>
145 <#if pathPart?contains(".")>
146 <#list pathPart?split(".") as extention>
147 <#if extention?is_last>
148 <#assign fileExtension = extention />
149 </#if>
150 </#list>
151 </#if>
152 </#list>
153 </#if>
154
155 <#if downloadUrl?has_content>
156 <#assign encodingFormat = "application/octet-stream" />
157 <#if fileExtension?lower_case == "pdf">
158 <#assign encodingFormat = "application/pdf" />
159 <#elseif fileExtension?lower_case == "xls">
160 <#assign encodingFormat = "application/vnd.ms-excel" />
161 <#elseif fileExtension?lower_case == "xlsx">
162 <#assign encodingFormat = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
163 </#if>
164 <#assign distributionJson = jsonFactoryUtil.createJSONObject() />
165 <#assign void = distributionJson.put("@type", "DataDownload") />
166 <#assign void = distributionJson.put("contentUrl", downloadUrl) />
167 <#assign void = distributionJson.put("encodingFormat", encodingFormat) />
168 <#if fileExtension?has_content>
169 <#assign void = distributionJson.put("name", journalArticleTitle + " (" + fileExtension?upper_case + ")") />
170 </#if>
171 <#assign void = publicationDistributions.put(distributionJson) />
172
173 <#if fileExtension == "pdf" || fileExtension == "PDF">
174 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:1" aria-label="Download PDF">
175 <li class="list-item list-inline-item d-flex">
176 <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg
177 class="d-flex mx-auto align-self-center" />
178 </li>
179 </a>
180 <#elseif fileExtension == "xls" || fileExtension == "XLS" ||
181 fileExtension == "xlsx" || fileExtension == "XLSX">
182 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:2" aria-label="Download Excel">
183 <li class="list-item list-inline-item d-flex">
184 <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg
185 class="d-flex mx-auto align-self-center" />
186 </li>
187 </a>
188 <#else>
189 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:3" aria-label="Download file">
190 <li class="list-item list-inline-item d-flex">
191 <i class="icon-file" style="font-size:27px"></i>
192 </li>
193 </a>
194 </#if>
195 </#if>
196 </#if>
197 </#list>
198 </#if>
199 </div>
200 </div>
201 </div>
202
203<#-- Schema.org Dataset JSON-LD (list view only — avoids duplicate grid+list scripts) -->
204<#assign datasetJson = jsonFactoryUtil.createJSONObject() />
205<#assign void = datasetJson.put("@context", "https://schema.org") />
206<#assign void = datasetJson.put("@type", "Dataset") />
207<#assign void = datasetJson.put("@id", publicationPageUrl + "#dataset") />
208<#assign void = datasetJson.put("name", journalArticleTitle) />
209<#assign void = datasetJson.put("url", publicationPageUrl) />
210<#assign publicationDescription = journalArticleTitle />
211<#if categoryDisplay?has_content>
212 <#assign publicationDescription = publicationDescription + " — " + categoryDisplay + " publication from Statistics Centre - Abu Dhabi (SCAD)." />
213<#else>
214 <#assign publicationDescription = publicationDescription + " — Statistical publication from Statistics Centre - Abu Dhabi (SCAD)." />
215</#if>
216<#if publicationIsoDate?has_content>
217 <#assign publicationDescription = publicationDescription + " Published on " + publicationIsoDate + "." />
218</#if>
219<#if publicationDistributions.length() gt 0>
220 <#assign publicationDescription = publicationDescription + " Downloadable PDF or Excel data file available." />
221</#if>
222<#if publicationDescription?length lt 50>
223 <#assign publicationDescription = publicationDescription + " Official SCAD statistical data is freely available to the public on the SCAD Download Publications catalog." />
224</#if>
225<#assign void = datasetJson.put("description", publicationDescription) />
226<#assign topicKeywords = categoryDisplay!"" />
227<#if topicKeywords?has_content>
228 <#assign void = datasetJson.put("keywords", topicKeywords) />
229 <#assign aboutThing = jsonFactoryUtil.createJSONObject() />
230 <#assign void = aboutThing.put("@type", "Thing") />
231 <#assign void = aboutThing.put("name", topicKeywords) />
232 <#assign void = datasetJson.put("about", aboutThing) />
233</#if>
234<#if publicationIsoDate?has_content>
235 <#assign void = datasetJson.put("datePublished", publicationIsoDate) />
236 <#assign void = datasetJson.put("dateModified", publicationIsoDate) />
237</#if>
238<#assign void = datasetJson.put("inLanguage", (themeDisplay.getLanguageId()?starts_with("ar"))?then("ar", "en")) />
239<#assign void = datasetJson.put("isAccessibleForFree", true) />
240<#assign void = datasetJson.put("license", "https://www.scad.gov.ae") />
241<#assign catalogRef = jsonFactoryUtil.createJSONObject() />
242<#assign void = catalogRef.put("@type", "DataCatalog") />
243<#assign void = catalogRef.put("name", "Download Publications") />
244<#assign void = catalogRef.put("url", themeDisplay.getPortalURL() + "/download-publications") />
245<#assign void = datasetJson.put("includedInDataCatalog", catalogRef) />
246<#assign creatorJson = jsonFactoryUtil.createJSONObject() />
247<#assign void = creatorJson.put("@type", "GovernmentOrganization") />
248<#assign void = creatorJson.put("name", "Statistics Centre - Abu Dhabi (SCAD)") />
249<#assign void = creatorJson.put("url", "https://www.scad.gov.ae") />
250<#assign void = datasetJson.put("creator", creatorJson) />
251<#assign void = datasetJson.put("publisher", creatorJson) />
252<#if publicationDistributions.length() gt 0>
253 <#assign void = datasetJson.put("distribution", publicationDistributions) />
254</#if>
255<script type="application/ld+json">
256${datasetJson.toString()}
257</script>
258
259<#break>
260
261
262</#list>
263</#if>
Foreign trade unit value index-Quarterly First Quarter 2025
Climate Statistics-Monthly April 2025
Bank Statistics-Quarterly First Quarter 2025
Construction Cost Index-Quarterly First Quarter 2025
Building Completion Statistics-Quarterly First Quarter 2025
Consumer Price Index-Monthly May 2025
The following has evaluated to null or missing:
==> themeIconId [in template "20098#20124#1093349" at line 75, 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#1093349" at line 75, column 58]
----
1<#assign catLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
2 JournalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")
3 resourcePrimKey=JournalArticleService.getArticleResourcePrimKey(groupId, .vars['reserved-article-id'].data)
4 articleCatNames=catLocalService.getCategories("com.liferay.journal.model.JournalArticle", resourcePrimKey)
5 dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService')
6 assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
7 dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
8 dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"]
9 jsonFactoryUtil=staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]
10 statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics")
11 assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") />
12 <#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
13
14<#assign journalArticleTitle=.vars['reserved-article-title'].data />
15
16<#assign journalArticlele = JournalArticleLocalService.getArticle(groupId, .vars["reserved-article-id"].data) />
17<#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UiissueDate")!"" />
18<#if !journalArticleDisplayDate?has_content>
19 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("UIIssueDate")!"" />
20</#if>
21<#if !journalArticleDisplayDate?has_content>
22 <#assign journalArticleDisplayDate = journalArticlele.getExpandoBridge().getAttribute("Uiissuedate")!"" />
23</#if>
24<#assign publicationIsoDate = "" />
25<#if journalArticleDisplayDate?has_content>
26 <#attempt>
27 <#assign publicationIsoDate = journalArticleDisplayDate?string["yyyy-MM-dd"] />
28 <#recover>
29 <#assign publicationIsoDate = "" />
30 </#attempt>
31</#if>
32<#assign publicationPageUrl = themeDisplay.getPortalURL() + "/w/" + .vars['reserved-article-url-title'].data />
33<#assign publicationDistributions = jsonFactoryUtil.createJSONArray() />
34
35
36
37
38
39<#assign themeColor="d29c4b" imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg"
40 categoryDisplay="Economic" />
41<#if (articleCatNames?size > 0)>
42 <#list articleCatNames as category>
43 <#if category.parentCategoryId==0>
44 <#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()>
45 <#assign assetThemeCategoryId=category.categoryId?long />
46 <#assign
47 themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue()
48 themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue()
49 themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() />
50
51 <#if themeImgId!="0">
52 <#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number)
53 imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), themeDisplay, '' ) />
54 </#if>
55 <#list category.name?split(" ") as catWords>
56 <#assign categoryDisplay = catWords/>
57 <#break>
58 </#list>
59 <#assign categoryDisplay = category.titleCurrentValue/>
60 </#if>
61 </#if>
62 </#list>
63
64 </#if>
65
66
67<#if file_upload.getSiblings()?has_content>
68
69 <#list file_upload.getSiblings() as medias>
70
71 <div class=" row mb-3 mx-0 bg-white d-flex w-100 align-items-center h-100 border rounded">
72 <div class="col-lg-1 p-0 ">
73 <div class="icon d-flex text-center p-1" style="background: #eee">
74 <div class="align-self-center mx-auto d-flex flex-column">
75 <img src="/documents/d/guest/${themeIconId}" height="30">
76 <label class="small mx-auto mb-0" style="color: #${themeColor} ;">
77 ${categoryDisplay}
78 </label>
79 </div>
80 </div>
81 </div>
82
83 <div class="col-8">
84 <p class="mb-0 py-3 publication-p">${journalArticleTitle}</p>
85 </div>
86
87 <div class="col-3 d-flex align-items-center justify-content-end">
88
89 <div class="my-2 right-icons d-flex align-items-center ">
90 <#if file_upload.getSiblings()?has_content>
91 <#list file_upload.getSiblings() as media>
92 <#if media.getData()?has_content>
93 <#assign fileData = media.getData()?trim />
94 <#assign fileEntry = "" />
95 <#assign downloadUrl = "" />
96 <#assign fileExtension = "" />
97
98 <#-- Yearbook stores document_library as JSON; older content may use a /documents/... path -->
99 <#if fileData?starts_with("{")>
100 <#assign fileJson = jsonFactoryUtil.createJSONObject(fileData) />
101 <#assign fileEntryId = fileJson.getLong("fileEntryId") />
102 <#if fileEntryId gt 0>
103 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntry(fileEntryId) />
104 <#elseif fileJson.getString("uuid")?has_content>
105 <#assign fileGroupId = fileJson.getLong("groupId") />
106 <#if fileGroupId lte 0>
107 <#assign fileGroupId = groupId />
108 </#if>
109 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileJson.getString("uuid"), fileGroupId) />
110 </#if>
111 <#else>
112 <#assign uuid = "" />
113 <#list fileData?split("/") as mediaDataSplit>
114 <#assign segment = mediaDataSplit?split("?")[0] />
115 <#if segment?matches("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}")>
116 <#assign uuid = segment />
117 </#if>
118 </#list>
119 <#if uuid?has_content>
120 <#assign fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(uuid, groupId) />
121 </#if>
122 </#if>
123
124 <#if fileEntry?has_content>
125 <#assign downloadUrl = dlUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, "&download=true", false, true) />
126 <#assign fileExtension = fileEntry.getExtension()!"" />
127 <#if !fileExtension?has_content>
128 <#list fileEntry.getFileName()?split(".") as extention>
129 <#if extention?is_last>
130 <#assign fileExtension = extention />
131 <#break>
132 </#if>
133 </#list>
134 </#if>
135 <#elseif fileData?contains("/documents/")>
136 <#assign downloadUrl = fileData />
137 <#if !downloadUrl?contains("download=true")>
138 <#if downloadUrl?contains("?")>
139 <#assign downloadUrl = downloadUrl + "&download=true" />
140 <#else>
141 <#assign downloadUrl = downloadUrl + "?download=true" />
142 </#if>
143 </#if>
144 <#list fileData?split("?")[0]?split("/") as pathPart>
145 <#if pathPart?contains(".")>
146 <#list pathPart?split(".") as extention>
147 <#if extention?is_last>
148 <#assign fileExtension = extention />
149 </#if>
150 </#list>
151 </#if>
152 </#list>
153 </#if>
154
155 <#if downloadUrl?has_content>
156 <#assign encodingFormat = "application/octet-stream" />
157 <#if fileExtension?lower_case == "pdf">
158 <#assign encodingFormat = "application/pdf" />
159 <#elseif fileExtension?lower_case == "xls">
160 <#assign encodingFormat = "application/vnd.ms-excel" />
161 <#elseif fileExtension?lower_case == "xlsx">
162 <#assign encodingFormat = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
163 </#if>
164 <#assign distributionJson = jsonFactoryUtil.createJSONObject() />
165 <#assign void = distributionJson.put("@type", "DataDownload") />
166 <#assign void = distributionJson.put("contentUrl", downloadUrl) />
167 <#assign void = distributionJson.put("encodingFormat", encodingFormat) />
168 <#if fileExtension?has_content>
169 <#assign void = distributionJson.put("name", journalArticleTitle + " (" + fileExtension?upper_case + ")") />
170 </#if>
171 <#assign void = publicationDistributions.put(distributionJson) />
172
173 <#if fileExtension == "pdf" || fileExtension == "PDF">
174 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:1" aria-label="Download PDF">
175 <li class="list-item list-inline-item d-flex">
176 <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg
177 class="d-flex mx-auto align-self-center" />
178 </li>
179 </a>
180 <#elseif fileExtension == "xls" || fileExtension == "XLS" ||
181 fileExtension == "xlsx" || fileExtension == "XLSX">
182 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:2" aria-label="Download Excel">
183 <li class="list-item list-inline-item d-flex">
184 <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg
185 class="d-flex mx-auto align-self-center" />
186 </li>
187 </a>
188 <#else>
189 <a class="ml-2" href="${downloadUrl}" target="_blank" style="order:3" aria-label="Download file">
190 <li class="list-item list-inline-item d-flex">
191 <i class="icon-file" style="font-size:27px"></i>
192 </li>
193 </a>
194 </#if>
195 </#if>
196 </#if>
197 </#list>
198 </#if>
199 </div>
200 </div>
201 </div>
202
203<#-- Schema.org Dataset JSON-LD (list view only — avoids duplicate grid+list scripts) -->
204<#assign datasetJson = jsonFactoryUtil.createJSONObject() />
205<#assign void = datasetJson.put("@context", "https://schema.org") />
206<#assign void = datasetJson.put("@type", "Dataset") />
207<#assign void = datasetJson.put("@id", publicationPageUrl + "#dataset") />
208<#assign void = datasetJson.put("name", journalArticleTitle) />
209<#assign void = datasetJson.put("url", publicationPageUrl) />
210<#assign publicationDescription = journalArticleTitle />
211<#if categoryDisplay?has_content>
212 <#assign publicationDescription = publicationDescription + " — " + categoryDisplay + " publication from Statistics Centre - Abu Dhabi (SCAD)." />
213<#else>
214 <#assign publicationDescription = publicationDescription + " — Statistical publication from Statistics Centre - Abu Dhabi (SCAD)." />
215</#if>
216<#if publicationIsoDate?has_content>
217 <#assign publicationDescription = publicationDescription + " Published on " + publicationIsoDate + "." />
218</#if>
219<#if publicationDistributions.length() gt 0>
220 <#assign publicationDescription = publicationDescription + " Downloadable PDF or Excel data file available." />
221</#if>
222<#if publicationDescription?length lt 50>
223 <#assign publicationDescription = publicationDescription + " Official SCAD statistical data is freely available to the public on the SCAD Download Publications catalog." />
224</#if>
225<#assign void = datasetJson.put("description", publicationDescription) />
226<#assign topicKeywords = categoryDisplay!"" />
227<#if topicKeywords?has_content>
228 <#assign void = datasetJson.put("keywords", topicKeywords) />
229 <#assign aboutThing = jsonFactoryUtil.createJSONObject() />
230 <#assign void = aboutThing.put("@type", "Thing") />
231 <#assign void = aboutThing.put("name", topicKeywords) />
232 <#assign void = datasetJson.put("about", aboutThing) />
233</#if>
234<#if publicationIsoDate?has_content>
235 <#assign void = datasetJson.put("datePublished", publicationIsoDate) />
236 <#assign void = datasetJson.put("dateModified", publicationIsoDate) />
237</#if>
238<#assign void = datasetJson.put("inLanguage", (themeDisplay.getLanguageId()?starts_with("ar"))?then("ar", "en")) />
239<#assign void = datasetJson.put("isAccessibleForFree", true) />
240<#assign void = datasetJson.put("license", "https://www.scad.gov.ae") />
241<#assign catalogRef = jsonFactoryUtil.createJSONObject() />
242<#assign void = catalogRef.put("@type", "DataCatalog") />
243<#assign void = catalogRef.put("name", "Download Publications") />
244<#assign void = catalogRef.put("url", themeDisplay.getPortalURL() + "/download-publications") />
245<#assign void = datasetJson.put("includedInDataCatalog", catalogRef) />
246<#assign creatorJson = jsonFactoryUtil.createJSONObject() />
247<#assign void = creatorJson.put("@type", "GovernmentOrganization") />
248<#assign void = creatorJson.put("name", "Statistics Centre - Abu Dhabi (SCAD)") />
249<#assign void = creatorJson.put("url", "https://www.scad.gov.ae") />
250<#assign void = datasetJson.put("creator", creatorJson) />
251<#assign void = datasetJson.put("publisher", creatorJson) />
252<#if publicationDistributions.length() gt 0>
253 <#assign void = datasetJson.put("distribution", publicationDistributions) />
254</#if>
255<script type="application/ld+json">
256${datasetJson.toString()}
257</script>
258
259<#break>
260
261
262</#list>
263</#if>
Consumer Price Index-Monthly April 2025
Did you find this content useful?
Share your feedback with us so we can improve your experience.