Ministry of Foreign Affairs
Menu Display
Breadcrumb
Ministry of Foreign Affairs
Ministry of Foreign Affairs
Search Bar
Recent Content
Web Content Article
Popular services
Asset Publisher
Documents
Asset Publisher
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
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
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
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
Our Management
Our Management
Minister of Foreign Affairs
Undersecretary of the Ministry of Foreign Affairs for Political Affairs
Undersecretary of the Ministry of Foreign Affairs for Administrative and Financial Affairs