حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> themePoster [in template "20098#20124#330422" at line 65, 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 65, 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
63
64<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"
65style="background: linear-gradient(transparent,#000000d4 ),url(/documents/d/guest/${themePoster}) no-repeat center/cover;">
66<div class="d-flex justify-content-start">
67<#assign articleId = .vars["reserved-article-id"].data?number>
68 <#if .vars['publicationNote']?? && .vars['publicationNote'].getData()?has_content>
69 <div class="dates_inside_wrapper p-1">
70 <img src="/documents/d/guest/information-circle-svgrepo-com" height="20" width="20">
71 ${.vars['publicationNote'].getData()}
72 </div>
73</#if>
74<div class="button-wrapper d-inline-block p-1"><button class="hover-button btn dl-share-btn mb-0"><img
75 src="/documents/d/guest/share" height="20"></button>
76<ul class="hidden-buttons list-unstyled">
77 <li><a target="_blank"
78 href="https://www.facebook.com/sharer.php?u=https://uat.scad.gov.ae/w/${.vars['reserved-article-url-title'].data}"><i
79 class="icon-facebook"></i></a></li>
80 <li><a target="_blank"
81 href="https://twitter.com/intent/tweet?url=https://uat.scad.gov.ae/w/${.vars['reserved-article-url-title'].data}"><i
82 class="icon-twitter"></i></a></li>
83</ul>
84</div>
85</div>
86<div class="w-100">
87<h5><a class="text-white" href="/w/${.vars['reserved-article-url-title'].data}">${journalArticleTitle}</a></h5><span
88 class="theme-category p-2 badge" style="background: #${themeColor}">${categoryDisplay}</span>
89<ul class="d-flex justify-content-end attachments-list px-0 mb-0 mt-3 w-100">
90 <#if file_upload.getSiblings()?has_content>
91 <#list file_upload.getSiblings() as media>
92 <#if media?has_content>
93 <#assign counter=0>
94 <#list "${media.getData()}" ?split("/") as
95 mediaDataSplit>
96 <#if counter==5>
97 <#list mediaDataSplit?split("?") as
98 uuId>
99 <#assign uuid=uuId />
100 <#break>
101 </#list>
102 </#if>
103 <#assign counter=counter+1>
104 </#list>
105 <#if uuid?? && groupId??>
106 <#assign
107 file=dlFileEntryService.getFileEntryByUuidAndGroupId(uuid,groupId)>
108 <#assign
109 fileExtension=file.extension>
110 <#if fileExtension=="">
111 <#list "${file.fileName}"
112 ?split(".") as
113 extention>
114 <#if extention?is_last>
115 <#assign
116 fileExtension=extention>
117 <#break>
118 </#if>
119 </#list>
120 </#if>
121 <#if
122 media.getData()?has_content>
123 <a class="dl-attachment-circle mr-2"
124 href="${media.getData()}"
125 target="blank"
126 onclick="trackPublicationDownload('${articleTitleEn?js_string}', '${articleTitleAr?js_string}', '${media.getData()?js_string}', '${currentUserScreenName?js_string}')">
127
128 <#if fileExtension=="pdf"
129 ||
130 fileExtension=="PDF">
131 <li
132 class="list-item list-inline-item d-flex">
133 <img src=${themeDisplay.getPathThemeImages()}/publications/pdf-svgrepo-com.svg
134 height="20" style="max-width:unset !important" />
135 </li>
136 </#if>
137 <#if fileExtension=="xls"
138 ||
139 fileExtension=="XLS"
140 ||
141 fileExtension=="xlsx"
142 ||
143 fileExtension=="XLSX">
144 <li
145 class="list-item list-inline-item d-flex">
146 <img src=${themeDisplay.getPathThemeImages()}/publications/excel-svgrepo-com.svg
147 height="20" style="max-width:unset !important" />
148 </li>
149 </#if>
150 </a>
151 </#if>
152 </#if>
153 </#if>
154 </#list>
155</#if>
156
157 </ul>
158</div>
159</div>
160<script>
161function escapeNonAscii(str) {
162 return str.replace(/[^\x00-\x7F]/g, function(ch) {
163 return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4);
164 });
165}
166function trackPublicationDownload(nameEn, nameAr, fileUrl, createdBy) {
167 var innerPayload = {
168 Name_EN: nameEn,
169 Name_AR: nameAr,
170 PublicationID: 0,
171 CalendarID: 0,
172 URL: fileUrl,
173 CreatedBy: createdBy
174 };
175
176 var outerPayload = {
177 url: 'Publication/InsertPublicationDownload',
178 body: escapeNonAscii(JSON.stringify(innerPayload))
179 };
180
181 try {
182 fetch('/o/communication', {
183 method: 'POST',
184 headers: {
185 'Accept': '*/*',
186 'Content-Type': 'application/json; charset=utf-8'
187 },
188 body: JSON.stringify(outerPayload)
189 });
190 } catch (e) {}
191}
192</script>
هل وجدت هذا المحتوى مفيدًا؟
يسعدنا أن نتلقى ملاحظاتك حتى نتمكن من تحسين تجربتك.