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

Breadcrumb

Ministry of Foreign Affairs

entity-logo

Ministry of Foreign Affairs

The official page of the Ministry of Foreign Affairs on GOV.OM includes an overview of the Ministry, its administrative structure, key services, documents, news and contact information.


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> 

About the Ministry

About the Ministry

The Omani Ministry of Foreign Affairs is the entity responsible for formulating and executing the foreign policy of the Sultanate of Oman, and strengthening its relations with the international community. The Ministry was established to represent the Sultanate of Oman in regional and international forums, protecting its national interests, and promoting diplomatic, economic and cultural cooperation to enhance its global standing and protect the rights of its citizens abroad.

Social Media Platforms

"Wise diplomacy is the best way to achieve peace and stability, and to strengthen relations based on mutual respect and constructive cooperation with countries worldwide."

- H.E Sayyid Badr Al Busaidi - Minister of Foreign Affairs

Location Information

Location Information

Our Management

Our Management

H.E Sayyid Badr bin Hamad Al Busaidi

Minister of Foreign Affairs

H.E Shiekh Khalifa bin Ali Al Harthy

Undersecretary of the Ministry of Foreign Affairs for Political Affairs

H.E Khalid bin Hashel Al Musalhi

Undersecretary of the Ministry of Foreign Affairs for Administrative and Financial Affairs

GUP Chatbot


Are you satisfied with this page?

Emergency numbers

Emergency numbers
View all numbers


Menu Display

© Oman Government