حصل خطأ عند معالجة القالب.
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>
هل وجدت هذا المحتوى مفيدًا؟
يسعدنا أن نتلقى ملاحظاتك حتى نتمكن من تحسين تجربتك.