General Authority for Academic Accreditation and Quality Assurance
“Welcome! You are viewing a development version of the site. The final production version is under development”
Menu Display
Breadcrumb
Search Bar
Recent Content
Web Content Article
Popular services
Asset Publisher
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
Thank you for your feedback.
Are you satisfied with this page?
Thank you
Thank you for taking the time to participate in this survey.
Return to homepage
Emergency numbers
Emergency numbers
View all numbers
Service categories
Available Services - Footer
Digital OMAN
© Oman Government