“Welcome! You are viewing a development version of the site. The final production version is under development”

Breadcrumb



Recent Content

Web Content Article


Popular services


Documents

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> andKey  [in template "70645677960193#20119#73365" at line 27, column 29]

----
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: #assign matchedKey = " " + andKey + " "  [in template "70645677960193#20119#73365" at line 27, column 3]
----
1<#assign vocabLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
2	<#assign categoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3 
4	<#assign constVocabOfEntity="Content Type" /> 
5  <#assign monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] /> 
6  <#assign arabicMonthArr = ['ديسمبر', 'نوفمبر', 'أكتوبر', 'سبتمبر', 'أغسطس', 'يوليو', 'يونيو', 'يمكن', 'أبريل', 'مارس', 'فبراير', 'يناير']> 
7	<#assign searchURL="" /> 
8	<#assign contentTypeURL="" /> 
9	<#assign documentURL="" /> 
10	<#assign catName="" /> 
11	<#assign addedContentTypeCategories = [] /> 
12 
13	<#list portletPreferences?keys as preference> 
14		<#if portletPreferences[preference] ??> 
15			<#assign mapValues = portletPreferences[preference] /> 
16			<#list mapValues as value > 
17				<#if  preference == "queryValues0">  
18					<#assign documentURL = documentURL + "document=" + value + "&" /> 
19					<#assign categoryObject = categoryLocalService.getCategory(value?number) /> 
20					<#assign categoryName = categoryObject.getTitle(locale) /> 
21					<#assign andKey = languageUtil.get(locale,"gup-and") />  
22					<#assign catName = catName + categoryName + " " + andKey + " " /> 
23				</#if> 
24			</#list> 
25		</#if> 
26	</#list> 
27  <#assign matchedKey = " "+andKey+" "  /> 
28	<#if catName?ends_with(matchedKey)> 
29		<#if themeDisplay.getLanguageId() == "en_US"> 
30		<#assign catNameString = catName?substring(0, catName?length - 5)> 
31			<#else> 
32		<#assign catNameString = catName?substring(0, catName?length - 3)> 
33		</#if> 
34	<#else> 
35		<#assign catNameString = catName> 
36</#if> 
37 
38<#if entries?has_content> 
39	<div class="document-ministry-warpper card-without-image"> 
40		<div class="document-ministry-list card-body"> 
41			<h3 class="h5">${catNameString}</h3> 
42			<ul class="list-unstyled pl-0 mb-0"> 
43				<#list entries as curEntry> 
44					<#assign  
45						assetRenderer = curEntry.getAssetRenderer() 
46						fileEntry = assetRenderer.getAssetObject()       
47					/> 
48           
49					<#assign fields = curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/> 
50					 
51					<#assign fileEntryURL = themeDisplay.getPathContext() + "/documents/" + fileEntry.getRepositoryId()?c + "/" + fileEntry.getFolderId()?c + "/" + urlCodec.encodeURL(htmlUtil.unescape(fileEntry.getTitle()), true) + "/" + fileEntry.getUuid() /> 
52					<li class="mb-3"> 
53 
54						<div class="card-title-wrapper"> 
55							<a class="d-flex" href="${fileEntryURL}" download="true"> 
56								<i class="ri-download-2-fill"></i> 
57								<#if (fields?size gt 0)> 
58									<#assign fileName = fields[0].getValue().getString(locale) /> 
59									<#assign truncatedText = fileName?substring(0, (fileName?length > 60)?then(60, fileName?length))> 
60			            <h4 class="h6"> ${truncatedText}<#if fileName?length gt 60>...</#if></h4> 
61								<#else> 
62									<#if (fileEntry.title)??> 
63										 <#assign text= fileEntry.title /> 
64										 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
65										<h4 class="h6"> ${truncatedText}<#if text?length gt 60>...</#if></h4> 
66									</#if> 
67								</#if> 
68							</a> 
69						</div> 
70						<div class="doc-content card-description mb-2"> 
71							 
72							<#if (fields?size gt 0) && fields[1]?? && fields[1].getValue().getString(locale) != ""> 
73									<#assign fileDescription = fields[1].getValue().getString(locale) /> 
74									<#assign truncatedText = fileDescription?substring(0, (fileDescription?length > 60)?then(60, fileDescription?length))> 
75			            <h4 class="h6"> ${truncatedText}<#if fileDescription?length gt 60>...</#if></h4> 
76								<#else> 
77									<#if fileEntry.description?has_content> 
78										<#if (fileEntry.description)??> 
79											 <#assign text= fileEntry.description /> 
80											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
81											${truncatedText}<#if text?length gt 60>...</#if>, 
82										</#if> 
83									</#if> 
84								</#if> 
85							 
86							<#if fileEntry.description?has_content> 
87										<#if (fileEntry.description)??> 
88											 <#assign text= fileEntry.description /> 
89											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
90											${truncatedText}<#if text?length gt 60>...</#if>, 
91										</#if> 
92									</#if> 
93							<span> 
94		 
95								${fileEntry.extension}, 
96							</span> 
97							<#assign fileSizeInKB = (fileEntry.size / 1024)?string("0") /> 
98				              ${fileSizeInKB} ${languageUtil.get(locale,"storage.size.suffix.kb")} 
99						</div>	 
100						<div class="doc-bottom card-description d-flex mb-3"> 
101							 <#assign dateString = fileEntry.createDate?string("yyyy-MM-dd")> 
102               <#assign year = dateString?split("-")[0]> 
103               <#assign monthIndex = dateString?split("-")[1]?number - 1> 
104               <#assign day = dateString?split("-")[2]> 
105								 <#assign currentLocale = locale.language> 
106								 <#if currentLocale == "ar"> 
107                   <#assign monthName = arabicMonthArr[monthIndex]> 
108                 <#else> 
109                  <#assign monthName = monthArr[monthIndex]>  
110                 </#if> 
111							<div class="doc-date">${monthName} ${day}, ${year}</div> 
112							<div class="doc-categoty"> 
113								<#list curEntry.categories as category> 
114									<#assign vocabName = vocabLocalService.getVocabulary(category.vocabularyId).getTitle("en_US") /> 
115									<#assign vocabId = vocabLocalService.getVocabulary(category.vocabularyId) /> 
116									<#assign categoryName = category.getTitle(themeDisplay.getLocale()) /> 
117 
118									<#if vocabName == constVocabOfEntity> 
119										<#if (addedContentTypeCategories?seq_contains(category.categoryId)?c) == "false"> 
120											<#assign contentTypeURL = contentTypeURL + "content-type=" + category.categoryId + "&" /> 
121											<#assign addedContentTypeCategories = addedContentTypeCategories + [category.categoryId] /> 
122										</#if> 
123									<#else>	 
124									  <#if (category.name)?? && vocabName != "Entity"> 
125			                 <#assign text= categoryName /> 
126			                 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
127			                 <span class="asset-category"> ${truncatedText}<#if text?length gt 60>...</#if></span> 
128			              </#if> 
129									</#if>	 
130								</#list> 
131							</div> 
132						</div> 
133					</li> 
134				</#list>	 
135				<#assign searchURL="search?" + contentTypeURL + documentURL  /> 
136				<#if searchURL?ends_with("&")> 
137					<#assign searchURLString = searchURL?substring(0, searchURL?length - 1)> 
138				<#else> 
139					<#assign searchURLString = searchURL> 
140				</#if> 
141			</ul> 
142		</div> 
143	</div> 
144</#if> 
145									  
146									  
147									  
148<script> 
149$(document).ready(function() { 
150  var child = $('.document-ministry-warpper'); 
151 
152  if (child.length > 0) { 
153    var parent = child.parent(); 
154 
155    while (parent.length > 0 && !parent.hasClass('lfr-layout-structure-item-row')) { 
156      parent = parent.parent(); 
157
158 
159    if (parent.length > 0 && !parent.hasClass('document-section')) { 
160      parent.addClass('document-section'); 
161    }  
162  }  
163	 
164	 
165}); 
166</script> 
167									  
168<style> 
169	@media (min-width: 768px) { 
170.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start{ 
171	display:grid; 
172	grid-template-columns: 1fr 1fr; 
173	height:100% 
174
175	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start div, 
176		.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start section{ 
177	height:100% 
178
179	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start .col.col-lg-6.col-sm-12{ 
180    max-width:100%;			 
181
182
183	.document-ministry-warpper .document-ministry-list li:last-child{ 
184		margin-bottom:0 !important; 
185
186	.document-ministry-list { 
187		display:block !important; 
188
189</style> 

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> andKey  [in template "70645677960193#20119#73365" at line 27, column 29]

----
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: #assign matchedKey = " " + andKey + " "  [in template "70645677960193#20119#73365" at line 27, column 3]
----
1<#assign vocabLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
2	<#assign categoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3 
4	<#assign constVocabOfEntity="Content Type" /> 
5  <#assign monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] /> 
6  <#assign arabicMonthArr = ['ديسمبر', 'نوفمبر', 'أكتوبر', 'سبتمبر', 'أغسطس', 'يوليو', 'يونيو', 'يمكن', 'أبريل', 'مارس', 'فبراير', 'يناير']> 
7	<#assign searchURL="" /> 
8	<#assign contentTypeURL="" /> 
9	<#assign documentURL="" /> 
10	<#assign catName="" /> 
11	<#assign addedContentTypeCategories = [] /> 
12 
13	<#list portletPreferences?keys as preference> 
14		<#if portletPreferences[preference] ??> 
15			<#assign mapValues = portletPreferences[preference] /> 
16			<#list mapValues as value > 
17				<#if  preference == "queryValues0">  
18					<#assign documentURL = documentURL + "document=" + value + "&" /> 
19					<#assign categoryObject = categoryLocalService.getCategory(value?number) /> 
20					<#assign categoryName = categoryObject.getTitle(locale) /> 
21					<#assign andKey = languageUtil.get(locale,"gup-and") />  
22					<#assign catName = catName + categoryName + " " + andKey + " " /> 
23				</#if> 
24			</#list> 
25		</#if> 
26	</#list> 
27  <#assign matchedKey = " "+andKey+" "  /> 
28	<#if catName?ends_with(matchedKey)> 
29		<#if themeDisplay.getLanguageId() == "en_US"> 
30		<#assign catNameString = catName?substring(0, catName?length - 5)> 
31			<#else> 
32		<#assign catNameString = catName?substring(0, catName?length - 3)> 
33		</#if> 
34	<#else> 
35		<#assign catNameString = catName> 
36</#if> 
37 
38<#if entries?has_content> 
39	<div class="document-ministry-warpper card-without-image"> 
40		<div class="document-ministry-list card-body"> 
41			<h3 class="h5">${catNameString}</h3> 
42			<ul class="list-unstyled pl-0 mb-0"> 
43				<#list entries as curEntry> 
44					<#assign  
45						assetRenderer = curEntry.getAssetRenderer() 
46						fileEntry = assetRenderer.getAssetObject()       
47					/> 
48           
49					<#assign fields = curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/> 
50					 
51					<#assign fileEntryURL = themeDisplay.getPathContext() + "/documents/" + fileEntry.getRepositoryId()?c + "/" + fileEntry.getFolderId()?c + "/" + urlCodec.encodeURL(htmlUtil.unescape(fileEntry.getTitle()), true) + "/" + fileEntry.getUuid() /> 
52					<li class="mb-3"> 
53 
54						<div class="card-title-wrapper"> 
55							<a class="d-flex" href="${fileEntryURL}" download="true"> 
56								<i class="ri-download-2-fill"></i> 
57								<#if (fields?size gt 0)> 
58									<#assign fileName = fields[0].getValue().getString(locale) /> 
59									<#assign truncatedText = fileName?substring(0, (fileName?length > 60)?then(60, fileName?length))> 
60			            <h4 class="h6"> ${truncatedText}<#if fileName?length gt 60>...</#if></h4> 
61								<#else> 
62									<#if (fileEntry.title)??> 
63										 <#assign text= fileEntry.title /> 
64										 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
65										<h4 class="h6"> ${truncatedText}<#if text?length gt 60>...</#if></h4> 
66									</#if> 
67								</#if> 
68							</a> 
69						</div> 
70						<div class="doc-content card-description mb-2"> 
71							 
72							<#if (fields?size gt 0) && fields[1]?? && fields[1].getValue().getString(locale) != ""> 
73									<#assign fileDescription = fields[1].getValue().getString(locale) /> 
74									<#assign truncatedText = fileDescription?substring(0, (fileDescription?length > 60)?then(60, fileDescription?length))> 
75			            <h4 class="h6"> ${truncatedText}<#if fileDescription?length gt 60>...</#if></h4> 
76								<#else> 
77									<#if fileEntry.description?has_content> 
78										<#if (fileEntry.description)??> 
79											 <#assign text= fileEntry.description /> 
80											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
81											${truncatedText}<#if text?length gt 60>...</#if>, 
82										</#if> 
83									</#if> 
84								</#if> 
85							 
86							<#if fileEntry.description?has_content> 
87										<#if (fileEntry.description)??> 
88											 <#assign text= fileEntry.description /> 
89											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
90											${truncatedText}<#if text?length gt 60>...</#if>, 
91										</#if> 
92									</#if> 
93							<span> 
94		 
95								${fileEntry.extension}, 
96							</span> 
97							<#assign fileSizeInKB = (fileEntry.size / 1024)?string("0") /> 
98				              ${fileSizeInKB} ${languageUtil.get(locale,"storage.size.suffix.kb")} 
99						</div>	 
100						<div class="doc-bottom card-description d-flex mb-3"> 
101							 <#assign dateString = fileEntry.createDate?string("yyyy-MM-dd")> 
102               <#assign year = dateString?split("-")[0]> 
103               <#assign monthIndex = dateString?split("-")[1]?number - 1> 
104               <#assign day = dateString?split("-")[2]> 
105								 <#assign currentLocale = locale.language> 
106								 <#if currentLocale == "ar"> 
107                   <#assign monthName = arabicMonthArr[monthIndex]> 
108                 <#else> 
109                  <#assign monthName = monthArr[monthIndex]>  
110                 </#if> 
111							<div class="doc-date">${monthName} ${day}, ${year}</div> 
112							<div class="doc-categoty"> 
113								<#list curEntry.categories as category> 
114									<#assign vocabName = vocabLocalService.getVocabulary(category.vocabularyId).getTitle("en_US") /> 
115									<#assign vocabId = vocabLocalService.getVocabulary(category.vocabularyId) /> 
116									<#assign categoryName = category.getTitle(themeDisplay.getLocale()) /> 
117 
118									<#if vocabName == constVocabOfEntity> 
119										<#if (addedContentTypeCategories?seq_contains(category.categoryId)?c) == "false"> 
120											<#assign contentTypeURL = contentTypeURL + "content-type=" + category.categoryId + "&" /> 
121											<#assign addedContentTypeCategories = addedContentTypeCategories + [category.categoryId] /> 
122										</#if> 
123									<#else>	 
124									  <#if (category.name)?? && vocabName != "Entity"> 
125			                 <#assign text= categoryName /> 
126			                 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
127			                 <span class="asset-category"> ${truncatedText}<#if text?length gt 60>...</#if></span> 
128			              </#if> 
129									</#if>	 
130								</#list> 
131							</div> 
132						</div> 
133					</li> 
134				</#list>	 
135				<#assign searchURL="search?" + contentTypeURL + documentURL  /> 
136				<#if searchURL?ends_with("&")> 
137					<#assign searchURLString = searchURL?substring(0, searchURL?length - 1)> 
138				<#else> 
139					<#assign searchURLString = searchURL> 
140				</#if> 
141			</ul> 
142		</div> 
143	</div> 
144</#if> 
145									  
146									  
147									  
148<script> 
149$(document).ready(function() { 
150  var child = $('.document-ministry-warpper'); 
151 
152  if (child.length > 0) { 
153    var parent = child.parent(); 
154 
155    while (parent.length > 0 && !parent.hasClass('lfr-layout-structure-item-row')) { 
156      parent = parent.parent(); 
157
158 
159    if (parent.length > 0 && !parent.hasClass('document-section')) { 
160      parent.addClass('document-section'); 
161    }  
162  }  
163	 
164	 
165}); 
166</script> 
167									  
168<style> 
169	@media (min-width: 768px) { 
170.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start{ 
171	display:grid; 
172	grid-template-columns: 1fr 1fr; 
173	height:100% 
174
175	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start div, 
176		.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start section{ 
177	height:100% 
178
179	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start .col.col-lg-6.col-sm-12{ 
180    max-width:100%;			 
181
182
183	.document-ministry-warpper .document-ministry-list li:last-child{ 
184		margin-bottom:0 !important; 
185
186	.document-ministry-list { 
187		display:block !important; 
188
189</style> 

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> andKey  [in template "70645677960193#20119#73365" at line 27, column 29]

----
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: #assign matchedKey = " " + andKey + " "  [in template "70645677960193#20119#73365" at line 27, column 3]
----
1<#assign vocabLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
2	<#assign categoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3 
4	<#assign constVocabOfEntity="Content Type" /> 
5  <#assign monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] /> 
6  <#assign arabicMonthArr = ['ديسمبر', 'نوفمبر', 'أكتوبر', 'سبتمبر', 'أغسطس', 'يوليو', 'يونيو', 'يمكن', 'أبريل', 'مارس', 'فبراير', 'يناير']> 
7	<#assign searchURL="" /> 
8	<#assign contentTypeURL="" /> 
9	<#assign documentURL="" /> 
10	<#assign catName="" /> 
11	<#assign addedContentTypeCategories = [] /> 
12 
13	<#list portletPreferences?keys as preference> 
14		<#if portletPreferences[preference] ??> 
15			<#assign mapValues = portletPreferences[preference] /> 
16			<#list mapValues as value > 
17				<#if  preference == "queryValues0">  
18					<#assign documentURL = documentURL + "document=" + value + "&" /> 
19					<#assign categoryObject = categoryLocalService.getCategory(value?number) /> 
20					<#assign categoryName = categoryObject.getTitle(locale) /> 
21					<#assign andKey = languageUtil.get(locale,"gup-and") />  
22					<#assign catName = catName + categoryName + " " + andKey + " " /> 
23				</#if> 
24			</#list> 
25		</#if> 
26	</#list> 
27  <#assign matchedKey = " "+andKey+" "  /> 
28	<#if catName?ends_with(matchedKey)> 
29		<#if themeDisplay.getLanguageId() == "en_US"> 
30		<#assign catNameString = catName?substring(0, catName?length - 5)> 
31			<#else> 
32		<#assign catNameString = catName?substring(0, catName?length - 3)> 
33		</#if> 
34	<#else> 
35		<#assign catNameString = catName> 
36</#if> 
37 
38<#if entries?has_content> 
39	<div class="document-ministry-warpper card-without-image"> 
40		<div class="document-ministry-list card-body"> 
41			<h3 class="h5">${catNameString}</h3> 
42			<ul class="list-unstyled pl-0 mb-0"> 
43				<#list entries as curEntry> 
44					<#assign  
45						assetRenderer = curEntry.getAssetRenderer() 
46						fileEntry = assetRenderer.getAssetObject()       
47					/> 
48           
49					<#assign fields = curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/> 
50					 
51					<#assign fileEntryURL = themeDisplay.getPathContext() + "/documents/" + fileEntry.getRepositoryId()?c + "/" + fileEntry.getFolderId()?c + "/" + urlCodec.encodeURL(htmlUtil.unescape(fileEntry.getTitle()), true) + "/" + fileEntry.getUuid() /> 
52					<li class="mb-3"> 
53 
54						<div class="card-title-wrapper"> 
55							<a class="d-flex" href="${fileEntryURL}" download="true"> 
56								<i class="ri-download-2-fill"></i> 
57								<#if (fields?size gt 0)> 
58									<#assign fileName = fields[0].getValue().getString(locale) /> 
59									<#assign truncatedText = fileName?substring(0, (fileName?length > 60)?then(60, fileName?length))> 
60			            <h4 class="h6"> ${truncatedText}<#if fileName?length gt 60>...</#if></h4> 
61								<#else> 
62									<#if (fileEntry.title)??> 
63										 <#assign text= fileEntry.title /> 
64										 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
65										<h4 class="h6"> ${truncatedText}<#if text?length gt 60>...</#if></h4> 
66									</#if> 
67								</#if> 
68							</a> 
69						</div> 
70						<div class="doc-content card-description mb-2"> 
71							 
72							<#if (fields?size gt 0) && fields[1]?? && fields[1].getValue().getString(locale) != ""> 
73									<#assign fileDescription = fields[1].getValue().getString(locale) /> 
74									<#assign truncatedText = fileDescription?substring(0, (fileDescription?length > 60)?then(60, fileDescription?length))> 
75			            <h4 class="h6"> ${truncatedText}<#if fileDescription?length gt 60>...</#if></h4> 
76								<#else> 
77									<#if fileEntry.description?has_content> 
78										<#if (fileEntry.description)??> 
79											 <#assign text= fileEntry.description /> 
80											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
81											${truncatedText}<#if text?length gt 60>...</#if>, 
82										</#if> 
83									</#if> 
84								</#if> 
85							 
86							<#if fileEntry.description?has_content> 
87										<#if (fileEntry.description)??> 
88											 <#assign text= fileEntry.description /> 
89											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
90											${truncatedText}<#if text?length gt 60>...</#if>, 
91										</#if> 
92									</#if> 
93							<span> 
94		 
95								${fileEntry.extension}, 
96							</span> 
97							<#assign fileSizeInKB = (fileEntry.size / 1024)?string("0") /> 
98				              ${fileSizeInKB} ${languageUtil.get(locale,"storage.size.suffix.kb")} 
99						</div>	 
100						<div class="doc-bottom card-description d-flex mb-3"> 
101							 <#assign dateString = fileEntry.createDate?string("yyyy-MM-dd")> 
102               <#assign year = dateString?split("-")[0]> 
103               <#assign monthIndex = dateString?split("-")[1]?number - 1> 
104               <#assign day = dateString?split("-")[2]> 
105								 <#assign currentLocale = locale.language> 
106								 <#if currentLocale == "ar"> 
107                   <#assign monthName = arabicMonthArr[monthIndex]> 
108                 <#else> 
109                  <#assign monthName = monthArr[monthIndex]>  
110                 </#if> 
111							<div class="doc-date">${monthName} ${day}, ${year}</div> 
112							<div class="doc-categoty"> 
113								<#list curEntry.categories as category> 
114									<#assign vocabName = vocabLocalService.getVocabulary(category.vocabularyId).getTitle("en_US") /> 
115									<#assign vocabId = vocabLocalService.getVocabulary(category.vocabularyId) /> 
116									<#assign categoryName = category.getTitle(themeDisplay.getLocale()) /> 
117 
118									<#if vocabName == constVocabOfEntity> 
119										<#if (addedContentTypeCategories?seq_contains(category.categoryId)?c) == "false"> 
120											<#assign contentTypeURL = contentTypeURL + "content-type=" + category.categoryId + "&" /> 
121											<#assign addedContentTypeCategories = addedContentTypeCategories + [category.categoryId] /> 
122										</#if> 
123									<#else>	 
124									  <#if (category.name)?? && vocabName != "Entity"> 
125			                 <#assign text= categoryName /> 
126			                 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
127			                 <span class="asset-category"> ${truncatedText}<#if text?length gt 60>...</#if></span> 
128			              </#if> 
129									</#if>	 
130								</#list> 
131							</div> 
132						</div> 
133					</li> 
134				</#list>	 
135				<#assign searchURL="search?" + contentTypeURL + documentURL  /> 
136				<#if searchURL?ends_with("&")> 
137					<#assign searchURLString = searchURL?substring(0, searchURL?length - 1)> 
138				<#else> 
139					<#assign searchURLString = searchURL> 
140				</#if> 
141			</ul> 
142		</div> 
143	</div> 
144</#if> 
145									  
146									  
147									  
148<script> 
149$(document).ready(function() { 
150  var child = $('.document-ministry-warpper'); 
151 
152  if (child.length > 0) { 
153    var parent = child.parent(); 
154 
155    while (parent.length > 0 && !parent.hasClass('lfr-layout-structure-item-row')) { 
156      parent = parent.parent(); 
157
158 
159    if (parent.length > 0 && !parent.hasClass('document-section')) { 
160      parent.addClass('document-section'); 
161    }  
162  }  
163	 
164	 
165}); 
166</script> 
167									  
168<style> 
169	@media (min-width: 768px) { 
170.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start{ 
171	display:grid; 
172	grid-template-columns: 1fr 1fr; 
173	height:100% 
174
175	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start div, 
176		.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start section{ 
177	height:100% 
178
179	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start .col.col-lg-6.col-sm-12{ 
180    max-width:100%;			 
181
182
183	.document-ministry-warpper .document-ministry-list li:last-child{ 
184		margin-bottom:0 !important; 
185
186	.document-ministry-list { 
187		display:block !important; 
188
189</style> 

Asset Publisher

An error occurred while processing the template.
The following has evaluated to null or missing:
==> andKey  [in template "70645677960193#20119#73365" at line 27, column 29]

----
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: #assign matchedKey = " " + andKey + " "  [in template "70645677960193#20119#73365" at line 27, column 3]
----
1<#assign vocabLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
2	<#assign categoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
3 
4	<#assign constVocabOfEntity="Content Type" /> 
5  <#assign monthArr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] /> 
6  <#assign arabicMonthArr = ['ديسمبر', 'نوفمبر', 'أكتوبر', 'سبتمبر', 'أغسطس', 'يوليو', 'يونيو', 'يمكن', 'أبريل', 'مارس', 'فبراير', 'يناير']> 
7	<#assign searchURL="" /> 
8	<#assign contentTypeURL="" /> 
9	<#assign documentURL="" /> 
10	<#assign catName="" /> 
11	<#assign addedContentTypeCategories = [] /> 
12 
13	<#list portletPreferences?keys as preference> 
14		<#if portletPreferences[preference] ??> 
15			<#assign mapValues = portletPreferences[preference] /> 
16			<#list mapValues as value > 
17				<#if  preference == "queryValues0">  
18					<#assign documentURL = documentURL + "document=" + value + "&" /> 
19					<#assign categoryObject = categoryLocalService.getCategory(value?number) /> 
20					<#assign categoryName = categoryObject.getTitle(locale) /> 
21					<#assign andKey = languageUtil.get(locale,"gup-and") />  
22					<#assign catName = catName + categoryName + " " + andKey + " " /> 
23				</#if> 
24			</#list> 
25		</#if> 
26	</#list> 
27  <#assign matchedKey = " "+andKey+" "  /> 
28	<#if catName?ends_with(matchedKey)> 
29		<#if themeDisplay.getLanguageId() == "en_US"> 
30		<#assign catNameString = catName?substring(0, catName?length - 5)> 
31			<#else> 
32		<#assign catNameString = catName?substring(0, catName?length - 3)> 
33		</#if> 
34	<#else> 
35		<#assign catNameString = catName> 
36</#if> 
37 
38<#if entries?has_content> 
39	<div class="document-ministry-warpper card-without-image"> 
40		<div class="document-ministry-list card-body"> 
41			<h3 class="h5">${catNameString}</h3> 
42			<ul class="list-unstyled pl-0 mb-0"> 
43				<#list entries as curEntry> 
44					<#assign  
45						assetRenderer = curEntry.getAssetRenderer() 
46						fileEntry = assetRenderer.getAssetObject()       
47					/> 
48           
49					<#assign fields = curEntry.getAssetRenderer().getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValues()/> 
50					 
51					<#assign fileEntryURL = themeDisplay.getPathContext() + "/documents/" + fileEntry.getRepositoryId()?c + "/" + fileEntry.getFolderId()?c + "/" + urlCodec.encodeURL(htmlUtil.unescape(fileEntry.getTitle()), true) + "/" + fileEntry.getUuid() /> 
52					<li class="mb-3"> 
53 
54						<div class="card-title-wrapper"> 
55							<a class="d-flex" href="${fileEntryURL}" download="true"> 
56								<i class="ri-download-2-fill"></i> 
57								<#if (fields?size gt 0)> 
58									<#assign fileName = fields[0].getValue().getString(locale) /> 
59									<#assign truncatedText = fileName?substring(0, (fileName?length > 60)?then(60, fileName?length))> 
60			            <h4 class="h6"> ${truncatedText}<#if fileName?length gt 60>...</#if></h4> 
61								<#else> 
62									<#if (fileEntry.title)??> 
63										 <#assign text= fileEntry.title /> 
64										 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
65										<h4 class="h6"> ${truncatedText}<#if text?length gt 60>...</#if></h4> 
66									</#if> 
67								</#if> 
68							</a> 
69						</div> 
70						<div class="doc-content card-description mb-2"> 
71							 
72							<#if (fields?size gt 0) && fields[1]?? && fields[1].getValue().getString(locale) != ""> 
73									<#assign fileDescription = fields[1].getValue().getString(locale) /> 
74									<#assign truncatedText = fileDescription?substring(0, (fileDescription?length > 60)?then(60, fileDescription?length))> 
75			            <h4 class="h6"> ${truncatedText}<#if fileDescription?length gt 60>...</#if></h4> 
76								<#else> 
77									<#if fileEntry.description?has_content> 
78										<#if (fileEntry.description)??> 
79											 <#assign text= fileEntry.description /> 
80											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
81											${truncatedText}<#if text?length gt 60>...</#if>, 
82										</#if> 
83									</#if> 
84								</#if> 
85							 
86							<#if fileEntry.description?has_content> 
87										<#if (fileEntry.description)??> 
88											 <#assign text= fileEntry.description /> 
89											 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
90											${truncatedText}<#if text?length gt 60>...</#if>, 
91										</#if> 
92									</#if> 
93							<span> 
94		 
95								${fileEntry.extension}, 
96							</span> 
97							<#assign fileSizeInKB = (fileEntry.size / 1024)?string("0") /> 
98				              ${fileSizeInKB} ${languageUtil.get(locale,"storage.size.suffix.kb")} 
99						</div>	 
100						<div class="doc-bottom card-description d-flex mb-3"> 
101							 <#assign dateString = fileEntry.createDate?string("yyyy-MM-dd")> 
102               <#assign year = dateString?split("-")[0]> 
103               <#assign monthIndex = dateString?split("-")[1]?number - 1> 
104               <#assign day = dateString?split("-")[2]> 
105								 <#assign currentLocale = locale.language> 
106								 <#if currentLocale == "ar"> 
107                   <#assign monthName = arabicMonthArr[monthIndex]> 
108                 <#else> 
109                  <#assign monthName = monthArr[monthIndex]>  
110                 </#if> 
111							<div class="doc-date">${monthName} ${day}, ${year}</div> 
112							<div class="doc-categoty"> 
113								<#list curEntry.categories as category> 
114									<#assign vocabName = vocabLocalService.getVocabulary(category.vocabularyId).getTitle("en_US") /> 
115									<#assign vocabId = vocabLocalService.getVocabulary(category.vocabularyId) /> 
116									<#assign categoryName = category.getTitle(themeDisplay.getLocale()) /> 
117 
118									<#if vocabName == constVocabOfEntity> 
119										<#if (addedContentTypeCategories?seq_contains(category.categoryId)?c) == "false"> 
120											<#assign contentTypeURL = contentTypeURL + "content-type=" + category.categoryId + "&" /> 
121											<#assign addedContentTypeCategories = addedContentTypeCategories + [category.categoryId] /> 
122										</#if> 
123									<#else>	 
124									  <#if (category.name)?? && vocabName != "Entity"> 
125			                 <#assign text= categoryName /> 
126			                 <#assign truncatedText = text?substring(0, (text?length > 60)?then(60, text?length))> 
127			                 <span class="asset-category"> ${truncatedText}<#if text?length gt 60>...</#if></span> 
128			              </#if> 
129									</#if>	 
130								</#list> 
131							</div> 
132						</div> 
133					</li> 
134				</#list>	 
135				<#assign searchURL="search?" + contentTypeURL + documentURL  /> 
136				<#if searchURL?ends_with("&")> 
137					<#assign searchURLString = searchURL?substring(0, searchURL?length - 1)> 
138				<#else> 
139					<#assign searchURLString = searchURL> 
140				</#if> 
141			</ul> 
142		</div> 
143	</div> 
144</#if> 
145									  
146									  
147									  
148<script> 
149$(document).ready(function() { 
150  var child = $('.document-ministry-warpper'); 
151 
152  if (child.length > 0) { 
153    var parent = child.parent(); 
154 
155    while (parent.length > 0 && !parent.hasClass('lfr-layout-structure-item-row')) { 
156      parent = parent.parent(); 
157
158 
159    if (parent.length > 0 && !parent.hasClass('document-section')) { 
160      parent.addClass('document-section'); 
161    }  
162  }  
163	 
164	 
165}); 
166</script> 
167									  
168<style> 
169	@media (min-width: 768px) { 
170.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start{ 
171	display:grid; 
172	grid-template-columns: 1fr 1fr; 
173	height:100% 
174
175	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start div, 
176		.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start section{ 
177	height:100% 
178
179	.lfr-layout-structure-item-row.document-section .row.align-items-lg-start.align-items-sm-start .col.col-lg-6.col-sm-12{ 
180    max-width:100%;			 
181
182
183	.document-ministry-warpper .document-ministry-list li:last-child{ 
184		margin-bottom:0 !important; 
185
186	.document-ministry-list { 
187		display:block !important; 
188
189</style> 


Our Management

Our Management

H.E. Lt.Gen Hassan bin Mohsin Al Shuraiqi

Inspector General of Police and Customs.

GUP Chatbot


Are you satisfied with this page?

Emergency numbers

Emergency numbers
View all numbers


Menu Display

© Oman Government