Total Results : 18124
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>
An error occurred while processing the template.
The following has evaluated to null or missing: ==> releaseDate [in template "11099719610328#20119#556301" at line 12, column 50] ---- 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 releaseDate_Data = getterUtil... [in template "11099719610328#20119#556301" at line 12, column 1] ----
1<#-- Service references -->
2<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4<#assign DLFileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryService") />
5<#assign AssetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
6
7<#-- Fetch article and categories -->
8<#assign journalArticle = JournalArticleLocalService.getArticle(getterUtil.getLong(groupId), .vars["reserved-article-id"].data) />
9<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()) />
10
11<#-- Extract release date -->
12<#assign releaseDate_Data = getterUtil.getString(releaseDate.getData()) />
13
14<#-- Defaults -->
15<#assign tab = 436312 />
16<#assign catId = -1 />
17<#assign linksExist = false />
18<#assign year = "" />
19<#assign quarter = "" />
20<#assign month = "" />
21
22<#-- Get specific category ID -->
23<#list categories?sort_by("treePath") as cat>
24 <#if cat.vocabularyId == 119020>
25 <#assign catId = cat.categoryId />
26 </#if>
27</#list>
28
29<#-- Check for files in publicationFilesLinks -->
30<#if publicationFilesLinks.getSiblings()?has_content>
31 <#list publicationFilesLinks.getSiblings() as file>
32 <#if file.getData()?has_content && file.getData()?trim != "">
33 <#assign linksExist = true />
34 <#break>
35 </#if>
36 </#list>
37</#if>
38
39<#-- Extract period info from categories -->
40<#if categories?has_content>
41 <#list categories as category>
42 <#assign vocab = AssetVocabularyLocalService.fetchAssetVocabulary(category.vocabularyId) />
43 <#assign vocabName = vocab.getName()!"" />
44 <#assign title = category.getTitle(locale) />
45
46 <#if vocabName == "periodicity">
47 <#assign quarter = title />
48 <#elseif vocabName == "year">
49 <#assign year = title />
50 <#elseif vocabName?contains("شهر") || vocabName?contains("quarter")>
51 <#assign month = title />
52 </#if>
53 </#list>
54</#if>
55
56<#-- Helper to determine file type icon -->
57<#macro getFileIcon url>
58 <#assign ext = url?lower_case />
59 <#assign fileType = "pdf" />
60 <#if ext?contains(".docx") || ext?contains(".doc")>
61 <#assign fileType = "word" />
62 <#elseif ext?contains(".jpeg") || ext?contains(".jpg")>
63 <#assign fileType = "jpeg" />
64 <#elseif ext?contains(".ppt") || ext?contains(".pptx")>
65 <#assign fileType = "ppt" />
66 <#elseif ext?contains(".xlsx") || ext?contains(".csv") || ext?contains(".xls")>
67 <#assign fileType = "xlsx" />
68 </#if>
69 <i class="dl-file-earmark-${fileType}-icon"></i>
70</#macro>
71
72<#-- Render main card -->
73<div class="card p-4 my-4">
74 <div class="box-body d-flex justify-content-between align-items-center">
75 <h3 class="fs-lg fw-700">${.vars["reserved-article-title"].data}</h3>
76
77 <div class="d-flex gap-2 align-items-center">
78 <#-- Display file links from publicationFilesLinks or fallback to publicationFiles -->
79 <#assign fileField = linksExist?then(publicationFilesLinks, publicationFiles) />
80 <#if fileField.getSiblings()?has_content>
81 <#list fileField.getSiblings() as file>
82 <#if file.getData()?has_content && file.getData()?trim != "">
83 <a href="${file.getData()}" target="_blank">
84 <@getFileIcon url=file.getData() />
85 </a>
86 </#if>
87 </#list>
88 <#else>
89 -
90 </#if>
91
92 <#-- View Details button -->
93 <#if (SectionFieldSet.sectionBody.getData())?? && SectionFieldSet.sectionBody.getData()?trim != "">
94 <a class="dl-btn btn-padding-lg btn-secondary"
95 href="/web${themeDisplay.getSiteGroup().getFriendlyURL()}/w/${.vars['reserved-article-url-title'].data}?tab=${tab}&category=${catId}">
96 <@liferay.language key="view-details-label" />
97 </a>
98 </#if>
99 </div>
100 </div>
101</div>