حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> themePoster  [in template "20098#20124#330422" at line 86, column 85]

----
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: ${themePoster}  [in template "20098#20124#330422" at line 86, column 83]
----
1<#assign 
2JournalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
3<#assign 
4	dlFileEntryService=serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService')> 
5	<#assign 
6		assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
7<#assign journalArticleResourceLocalServiceUtil=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
8		<#assign 
9			assetCategoryLocalServiceUtil=staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
10			<#assign 
11				dlAppLocalServiceUtil=staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] /> 
12			<#assign dlUtil=staticUtil["com.liferay.document.library.kernel.util.DLUtil"]> 
13				<#assign 
14					serviceContext=staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
15					<#assign themeDisplay=serviceContext.getThemeDisplay() /> 
16					<#assign 
17						journalarticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
18 
19					<#assign 
20						statisticVocabulary=assetVocabularyLocalService.getGroupVocabulary(groupId?long,"statistics") /> 
21					<#assign journalArticleId=.vars['reserved-article-id'].data /> 
22					<#assign stat=journalarticleLocalService.getArticle(themeDisplay.getScopeGroupId() 
23						,journalArticleId) /> 
24					<#assign 
25						assetCategoryPropService=serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService") /> 
26					<#assign journalArticleTitle=.vars['reserved-article-title'].data /> 
27					<#assign journalArticleDisplayDate = (journalArticle.getDisplayDate())! /> 
28						<#assign articleTitleEn = stat.getTitle("en_US")!journalArticleTitle /> 
29				<#assign articleTitleAr = stat.getTitle("ar_SA")!journalArticleTitle /> 
30				<#assign currentUserScreenName = themeDisplay.getUser().getScreenName()!"" /> 
31					<#assign 
32					  articleResourcePK=stat.resourcePrimKey?long /> 
33					<#assign 
34						categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK)> 
35						<#assign themeColor="d29c4b" 
36							imgUrl="${themeDisplay.getPathThemeImages()}/publications/005.jpg" 
37							categoryDisplay="Economic" /> 
38						<#list categoryList as category> 
39							<#if category.parentCategoryId==0> 
40								<#if category.getVocabularyId()==statisticVocabulary.getVocabularyId()> 
41									<#assign assetThemeCategoryId=category.categoryId?long /> 
42									<#assign 
43				  themePoster=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme-poster").getValue() 
44										themeColor=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_color").getValue() 
45										themeIconId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"theme_icon_id").getValue() 
46										themeImgId=assetCategoryPropService.getCategoryProperty(assetThemeCategoryId,"portfolio-image").getValue() /> 
47 
48									<#if themeImgId!="0"> 
49										<#assign imgDlFile=dlAppLocalServiceUtil.getFileEntry(themeImgId?number) 
50											imgUrl=dlUtil.getPreviewURL(imgDlFile, imgDlFile.getFileVersion(), 
51											themeDisplay, '' ) /> 
52									</#if> 
53									<#list category.name?split(" ") as catWords> 
54			<#assign categoryDisplay = catWords/> 
55			<#break> 
56		</#list> 
57				<#assign categoryDisplay = category.titleCurrentValue/> 
58	</#if> 
59</#if> 
60</#list> 
61 
62<#-- A13: citeable facts render only on the /w/ detail page. Listing cards stay unchanged. --> 
63<#assign requestUrl = themeDisplay.getURLCurrent()!"" /> 
64<#assign isPublicationDetail = requestUrl?contains("/w/") /> 
65<#assign isArabic = (themeDisplay.getLanguageId()!"")?starts_with("ar") /> 
66<#assign portalURL = themeDisplay.getPortalURL() /> 
67<#assign publicationUrl = portalURL + "/w/" + .vars['reserved-article-url-title'].data /> 
68<#assign publicationFiles = [] /> 
69<#assign releaseDate = "" /> 
70<#attempt> 
71	<#assign releaseDate = stat.getDisplayDate()?string("yyyy-MM-dd") /> 
72<#recover> 
73</#attempt> 
74<#assign publicationSummary = "" /> 
75<#attempt> 
76	<#assign publicationSummary = stat.getDescription(themeDisplay.getLanguageId())!"" /> 
77<#recover> 
78</#attempt> 
79<#if !publicationSummary?has_content> 
80	<#assign publicationSummary = isArabic?then( 
81		"منشور إحصائي رسمي صادر عن مركز الإحصاء - أبوظبي (SCAD) يغطي إمارة أبوظبي.", 
82		"Official statistical publication issued by Statistics Centre – Abu Dhabi (SCAD) covering the Emirate of Abu Dhabi.") /> 
83</#if> 
84 
85<div class="col-md-3 dl-card latest-publications-card dl-rounded d-flex flex-column align-items-start justify-content-between text-white p-3" 
86style="background: linear-gradient(transparent,#000000d4 ),url(/documents/d/guest/${themePoster}) no-repeat center/cover;"> 
87<div class="d-flex justify-content-start"> 
88<#assign articleId = .vars["reserved-article-id"].data?number> 
89	<#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content> 
90											<div class="dates_inside_wrapper p-1"> 
91							<img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20"> 
92							 ${.vars['publicationNote'].getData()} 
93								</div> 
94</#if> 
95<div class="button-wrapper d-inline-block p-1"><button class="hover-button btn dl-share-btn mb-0"><img 
96	src="/documents/d/guest/share" height="20"></button> 
97<ul class="hidden-buttons list-unstyled"> 
98  <li><a target="_blank" 
99	  href="https://www.facebook.com/sharer.php?u=${publicationUrl}"><i 
100		class="icon-facebook"></i></a></li> 
101  <li><a target="_blank" 
102	  href="https://twitter.com/intent/tweet?url=${publicationUrl}"><i 
103		class="icon-twitter"></i></a></li> 
104</ul> 
105</div> 
106</div> 
107<div class="w-100"> 
108<h5><a class="text-white" href="/w/${.vars['reserved-article-url-title'].data}">${journalArticleTitle}</a></h5><span 
109  class="theme-category p-2 badge" style="background: #${themeColor}">${categoryDisplay}</span> 
110<ul class="d-flex  justify-content-end attachments-list px-0 mb-0 mt-3 w-100"> 
111  <#if file_upload.getSiblings()?has_content> 
112  <#list file_upload.getSiblings() as media> 
113	<#if media?has_content> 
114	  <#assign counter=0> 
115		<#list "${media.getData()}" ?split("/") as 
116		  mediaDataSplit> 
117		  <#if counter==5> 
118			<#list mediaDataSplit?split("?") as 
119			  uuId> 
120			  <#assign uuid=uuId /> 
121			  <#break> 
122			</#list> 
123		  </#if> 
124		  <#assign counter=counter+1> 
125		</#list> 
126		<#if uuid?? && groupId??> 
127		  <#assign 
128			file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)> 
129			<#assign 
130			  fileExtension=file.extension> 
131			  <#if fileExtension==""> 
132				<#list "${file.fileName}" 
133				  ?split(".") as 
134				  extention> 
135				  <#if extention?is_last> 
136					<#assign 
137					  fileExtension=extention> 
138					  <#break> 
139				  </#if> 
140				</#list> 
141			  </#if> 
142			  <#if 
143				media.getData()?has_content> 
144				<#assign fileAbsoluteUrl = media.getData() /> 
145				<#if !fileAbsoluteUrl?starts_with("http")> 
146					<#assign fileAbsoluteUrl = portalURL + fileAbsoluteUrl /> 
147				</#if> 
148				<#assign fileSizeLabel = "" /> 
149				<#assign fileBytes = file.getSize() /> 
150				<#if fileBytes < 1024> 
151					<#assign fileSizeLabel = fileBytes + " B" /> 
152				<#elseif fileBytes < 1048576> 
153					<#assign fileSizeLabel = (fileBytes / 1024)?string("0.#") + " KB" /> 
154				<#else> 
155					<#assign fileSizeLabel = (fileBytes / 1048576)?string("0.#") + " MB" /> 
156				</#if> 
157				<#assign fileMime = "application/octet-stream" /> 
158				<#assign fileExtLower = fileExtension?lower_case /> 
159				<#if fileExtLower == "pdf"> 
160					<#assign fileMime = "application/pdf" /> 
161				<#elseif fileExtLower == "xls"> 
162					<#assign fileMime = "application/vnd.ms-excel" /> 
163				<#elseif fileExtLower == "xlsx"> 
164					<#assign fileMime = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> 
165				<#elseif fileExtLower == "csv"> 
166					<#assign fileMime = "text/csv" /> 
167				</#if> 
168				<#assign publicationFiles = publicationFiles + [{ 
169					"name": file.getFileName(), 
170					"url": media.getData(), 
171					"absoluteUrl": fileAbsoluteUrl, 
172					"size": fileSizeLabel, 
173					"format": fileExtension?upper_case, 
174					"mimeType": fileMime 
175				}] /> 
176				<a  class="dl-attachment-circle mr-2" 
177				  href="${media.getData()}" 
178				  target="blank" 
179				onclick="trackPublicationDownload('${articleTitleEn?js_string}', '${articleTitleAr?js_string}', '${media.getData()?js_string}', '${currentUserScreenName?js_string}')"> 
180 
181				  <#if fileExtension=="pdf" 
182					|| 
183					fileExtension=="PDF"> 
184					<li 
185					class="list-item list-inline-item d-flex"> 
186					  <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg 
187					  height="20" style="max-width:unset !important" /> 
188					</li> 
189				  </#if> 
190				  <#if fileExtension=="xls" 
191					|| 
192					fileExtension=="XLS" 
193					|| 
194					fileExtension=="xlsx" 
195					|| 
196					fileExtension=="XLSX"> 
197					<li 
198					  class="list-item list-inline-item d-flex"> 
199					  <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg 
200					  height="20"  style="max-width:unset !important" /> 
201					</li> 
202				  </#if> 
203				</a> 
204			  </#if> 
205		</#if> 
206	</#if> 
207  </#list> 
208</#if> 
209 
210 </ul> 
211</div> 
212</div> 
213 
214<#if isPublicationDetail> 
215<article class="publication-landing" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"> 
216	<p>${publicationSummary}</p> 
217	<dl> 
218		<dt>${isArabic?then("الناشر", "Publisher")}</dt> 
219		<dd>${isArabic?then("مركز الإحصاء - أبوظبي (SCAD)", "Statistics Centre – Abu Dhabi (SCAD)")}</dd> 
220		<dt>${isArabic?then("المنطقة الجغرافية", "Geographic coverage")}</dt> 
221		<dd>${isArabic?then("أبوظبي", "Abu Dhabi")}</dd> 
222		<#if releaseDate?has_content> 
223		<dt>${isArabic?then("تاريخ الإصدار", "Release date")}</dt> 
224		<dd><time datetime="${releaseDate}">${releaseDate}</time></dd> 
225		</#if> 
226		<#if categoryDisplay?has_content> 
227		<dt>${isArabic?then("الموضوع الإحصائي", "Statistical theme")}</dt> 
228		<dd>${categoryDisplay}</dd> 
229		</#if> 
230	</dl> 
231	<#if publicationFiles?has_content> 
232	<table> 
233		<caption>${journalArticleTitle}</caption> 
234		<thead> 
235			<tr> 
236				<th>${isArabic?then("الملف", "File")}</th> 
237				<th>${isArabic?then("الصيغة", "Format")}</th> 
238				<th>${isArabic?then("الحجم", "Size")}</th> 
239			</tr> 
240		</thead> 
241		<tbody> 
242			<#list publicationFiles as publicationFile> 
243			<tr> 
244				<td><a href="${publicationFile.url}">${publicationFile.name}</a></td> 
245				<td>${publicationFile.format}</td> 
246				<td>${publicationFile.size}</td> 
247			</tr> 
248			</#list> 
249		</tbody> 
250	</table> 
251	</#if> 
252</article> 
253<script type="application/ld+json"> 
254{ 
255  "@context": "https://schema.org", 
256  "@type": "Dataset", 
257  "@id": "${(publicationUrl + '#dataset')?json_string}", 
258  "name": "${journalArticleTitle?json_string}", 
259  "url": "${publicationUrl?json_string}", 
260  "description": "${publicationSummary?json_string}", 
261  "inLanguage": "${isArabic?then('ar','en')}", 
262  "isAccessibleForFree": true, 
263  "license": "https://www.scad.gov.ae/", 
264  <#if releaseDate?matches("^[0-9]{4}-[0-9]{2}-[0-9]{2}$")> 
265  "datePublished": "${releaseDate?json_string}", 
266  </#if> 
267  <#if categoryDisplay?has_content> 
268  "keywords": "${categoryDisplay?json_string}", 
269  </#if> 
270  "spatialCoverage": { 
271    "@type": "Place", 
272    "name": "Abu Dhabi" 
273  }, 
274  "creator": { 
275    "@type": "GovernmentOrganization", 
276    "@id": "https://www.scad.gov.ae/#organization", 
277    "name": "Statistics Centre – Abu Dhabi (SCAD)", 
278    "url": "https://www.scad.gov.ae/" 
279  }, 
280  "publisher": { 
281    "@type": "GovernmentOrganization", 
282    "@id": "https://www.scad.gov.ae/#organization", 
283    "name": "Statistics Centre – Abu Dhabi (SCAD)", 
284    "url": "https://www.scad.gov.ae/" 
285  } 
286  <#if publicationFiles?has_content> 
287  ,"distribution": [ 
288    <#list publicationFiles as publicationFile> 
289    { 
290      "@type": "DataDownload", 
291      "name": "${publicationFile.name?json_string}", 
292      "encodingFormat": "${publicationFile.mimeType?json_string}", 
293      "contentUrl": "${publicationFile.absoluteUrl?json_string}" 
294      <#if publicationFile.size?has_content>,"contentSize": "${publicationFile.size?json_string}"</#if> 
295    }<#if publicationFile_has_next>,</#if> 
296    </#list> 
297  ] 
298  </#if> 
299} 
300</script> 
301</#if> 
302 
303<script> 
304function escapeNonAscii(str) { 
305    return str.replace(/[^\x00-\x7F]/g, function(ch) { 
306        return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4); 
307    }); 
308} 
309function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) { 
310    var innerPayload = { 
311        Name_EN: nameEn, 
312        Name_AR: nameAr, 
313        PublicationID: 0, 
314        CalendarID: 0, 
315        URL: fileUrl, 
316        CreatedBy: createdBy 
317    }; 
318 
319    var outerPayload = { 
320        url: 'Publication/InsertPublicationDownload', 
321        body: escapeNonAscii(JSON.stringify(innerPayload)) 
322    }; 
323 
324    try { 
325        fetch('/o/communication', { 
326            method: 'POST', 
327            headers: { 
328                'Accept': '*/*', 
329                'Content-Type': 'application/json; charset=utf-8' 
330            }, 
331            body: JSON.stringify(outerPayload) 
332        }); 
333    } catch (e) {} 
334} 
335</script>