General Authority for Academic Accreditation and Quality Assurance
Menu Display
Breadcrumb
Oman Authority for Academic Accreditation and Quality Assurance of Education
Oman Authority for Academic Accreditation and Quality Assura
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 Authority
About the Authority
The Oman Academic Accreditation Authority was established by Royal Decree No. 54/2010, granting it legal personality, financial, and administrative independence, replacing the Accreditation Council (formerly). It began its work in 2001, promoting the culture of quality and accreditation for higher education institutions and their programs.
On January 13, 2021, Royal Decree No. 9/2021 renamed it the Oman Academic Accreditation and Quality Assurance Authority, which operates under the Council of Ministers. The decree also expanded its mandate to include school education quality assurance and the implementation of the National Qualifications Framework.
Social Media Platforms
"Quality is no longer an optional matter in educational institutions, it has become one of the necessities imposed by scientific and technological development and the rapid changes in human societies."
- H.E. Prof. Dr. Rahma Al Mahrouqi - Minister of MOHERI
Contact Information
Location Information
Our Management
Our Management
Chairman of the board
Deputy Chair of the board
CEO of the Oman Authority for Academic Accreditation and Quality Assurance of Education