INSURED

Insurance for Rural Resilience and Economic Development
INSURED
INSURED programme
IFAD’s INSURED programme (Insurance for Rural Resilience and Economic Development) aims to build the climate resilience of poor rural households, increase their capacity to manage climate risk and strengthen their livelihoods.
INSURED provides implementation support on agricultural insurance and climate risk insurance to governments and partners across the world (see map below). It also provides capacity-building and technical assistance, and supports the roll-out of insurance schemes linked to agricultural development and financial inclusion activities.
Lessons learned and practical guidance for project designers and implementers are shared through the Insurance Toolkit.
INSURED is a US$6 million programme funded by Sida and implemented by the multi-donor Platform for Agricultural Risk Management (PARM).
INSURED contacts
Contact information
Experts
Asset Publisher


Related publications
Related publications
Making agricultural and climate risk insurance gender inclusive: How to improve access to insurance for rural women
IFAD’s technical assistance programme INSURED (Insurance for rural resilience and economic development) has been building knowledge about how to strengthen women producers’ access to climate risk insurance.
INSURED - Insurance for rural resilience and economic development
INSURED is a technical assistance programme working to strengthen agricultural insurance in IFAD’s portfolio.
INSURED results 2018-2023
This brief shares the results and lessons learned from the first phase of the Insurance for Rural Resilience and Economic Development (INSURED) programme.
Blogs and Stories
Blogs and Stories
The following has evaluated to null or missing: ==> parentStructureFieldSet38712019 [in template "10154#10192#ABSTRACT_ROW" at line 44, column 32] ---- 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 abstract_parent = parentStruc... [in template "10154#10192#ABSTRACT_ROW" at line 44, column 5] ----
1<#assign
2journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
3assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
4groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
5classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")
6ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
7assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
8
9<#assign globalGroup = groupLocalService.getFriendlyURLGroup(companyId, "/global")>
10<#assign destMacroClassId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetEntry")>
11<#include "_TEMPLATE_CONTEXT_/${companyId}/${globalGroup.groupId}/${destMacroClassId}/ASSET_ENTRY_MACROS" />
12
13<#assign voc_type = assetVocabularyLocalService.getGroupVocabulary(company.getGroupId(), "Document_type")>
14
15<#assign currentUrl = themeDisplay.getURLCurrent()>
16
17<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(articleGroupId), .vars['reserved-article-id'].data)>
18
19<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey)>
20
21<#assign jaClassNameId = classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle")>
22<#assign curArticleStructure = ddmStructureLocalService.getStructure(company.getGroupId(), jaClassNameId, article.getDDMStructureKey())>
23<#assign structureLocalizedName = curArticleStructure.getName(locale)>
24<#assign structureId = article.getDDMStructureKey()?lowerCase>
25
26<#assign leftColumnSize = "col-md-4">
27<#assign rightColumnSize = "col-md-8">
28<#assign abstarct_img_default_class = "abstract-img-publication-land">
29<#assign contentTypeRowClass ="">
30
31<#if structureId == "publication" || structureId == "project">
32 <#assign leftColumnSize = "col-md-2">
33 <#assign rightColumnSize = "col-md-10">
34 <#assign abstarct_img_default_class = "abstract-img-publication-port">
35 <#assign contentTypeRowClass ="publication-row">
36</#if>
37
38<#-- Necessary for nested structures after upgrading to Liferay 7.4 -->
39<#if structureId == "corporate">
40 <#assign abstract_parent = parentStructureFieldSet38712088.parentStructureFieldSet38712019 />
41<#elseIf structureId == "abstract">
42 <#assign abstract_parent = .vars />
43<#else>
44 <#assign abstract_parent = parentStructureFieldSet38712019 />
45</#if>
46
47<#-- Article URL resolution -->
48<#assign articleUrl = renderRequest.getAttribute("viewURL")!"">
49
50<#assign disableSpa = false>
51<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent) ||
52(abstract_parent.shorthand_story_url?? && abstract_parent.shorthand_story_url.getData()?hasContent)>
53 <#assign disableSpa = true>
54</#if>
55
56<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent)>
57 <#assign articleUrl = abstract_parent.abstract_link.getData()>
58</#if>
59
60<#if articleUrl == "">
61 <#assign articleUrl = getURLViewInContext(themeDisplay, asset, currentUrl!"")>
62</#if>
63
64<#assign article_title = resolveArticleTitle(abstract_parent.short_title!"", abstract_parent.abstract_title!"") />
65
66<#assign abstract_icon = abstract_parent.abstract_icon />
67<#assign abstract_image_medium = abstract_parent.abstract_image_medium />
68<#assign abstract_publication_date = abstract_parent.abstract_publication_date />
69<#assign abstract_text = abstract_parent.abstract_text />
70
71<div class="row border-bottom abstract-row ${contentTypeRowClass}">
72 <div class="${leftColumnSize} col-xs-12">
73 <#if abstract_icon?hasContent && abstract_icon.getData()?hasContent>
74 <#assign myabstract_icon = abstract_icon.getData()>
75 <#else>
76 <#if locale.getLanguage() != "ar">
77 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon.png">
78 <#else>
79 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon-ar.png">
80 </#if>
81 </#if>
82
83 <#if structureId == "project">
84 <img class="img-fluid" src="${myabstract_icon}">
85 <#else>
86 <#if abstract_image_medium?hasContent && abstract_image_medium.getData()?hasContent>
87 <#assign myabstract_image_medium = abstract_image_medium.getData()>
88 <#else>
89 <#assign myabstract_image_medium = "/o/ifad-global-theme/images/placeholders/IFADlogongrey.jpg">
90 </#if>
91 </#if>
92
93 <div class="abstract-img-wrapper">
94 <div class="abstract-img-publication ${abstarct_img_default_class}"
95 style="background-image: url(${myabstract_image_medium})"></div>
96 </div>
97 </div>
98
99 <div class="${rightColumnSize} col-xs-12 abstract-row-content-wrapper">
100 <#if articleUrl != "#">
101 <a href="${articleUrl}" ${disableSpa?then("data-senna-off=\"true\"", "")}>
102 <h3 class="abstract-title-text">${article_title}</h3>
103 </a>
104 <#else>
105 <span>${article_title}</span>
106 </#if>
107
108 <@getAdminMenu asset />
109
110 <#assign publicationDateFormatted = getFormattedDateForAbstractArticle(article, abstract_publication_date!"", locale, "MMMM yyyy") />
111
112 <div class="abstract-row-author">
113 ${publicationDateFormatted}
114 <#if structureId != "publication" && structureId != "generic" &&
115 !currentUrl?contains("videos") && !currentUrl?contains("photos") && !currentUrl?contains("stories")>
116 - ${structureLocalizedName?upperCase}
117 </#if>
118 </div>
119 <div class="abstract-row-categories">
120 <#if structureId == "publication">
121 <#-- TODO Check if that's used anywhere -->
122 <#--<span class="abstract-category">${publicationDateFormatted} ${publication_publisher.getData()}</span>-->
123 <#else>
124 <#list asset.getCategories() as category>
125 <#if category.getVocabularyId() == voc_type.getVocabularyId()>
126 <span class="abstract-category">${category.getName()}</span>
127 </#if>
128 </#list>
129 </#if>
130 </div>
131
132 <div class="abstract-content-text ellipsis-text">
133 ${abstract_text.getData()}
134 </div>
135
136 <#if structureId == "publication">
137 <#assign langList = {}>
138 <#assign displayLangList = false>
139
140 <#list article.getAvailableLanguageIds() as articleLocale>
141 <#assign langCode = articleLocale?split("_")[0]>
142
143 <#assign localizedUrl =
144 articleUrl?replace("/${locale.getLanguage()}/", "/${langCode}/")>
145 <#assign langList = langList + {"${localeUtil.fromLanguageId(articleLocale).getDisplayLanguage()}": "${localizedUrl}"}>
146
147 <#-- Display full list only if there is at least one non-official language-->
148 <#if langCode != "en" && langCode != "es" && langCode != "fr" && langCode != "ar">
149 <#assign displayLangList = true>
150 </#if>
151 </#list>
152
153 <#if displayLangList>
154 <small class="d-block text-uppercase abstract-row-langs">
155 <span><@liferay.language key="additional-languages" /></span>:
156
157 <#list langList as langName, localizedUrl>
158 <a href="${localizedUrl}">${langName}${langName?hasNext?then(', ','')}</a>
159 </#list>
160 </small>
161 </#if>
162 </#if>
163 </div>
164</div>
The following has evaluated to null or missing: ==> parentStructureFieldSet38712019 [in template "10154#10192#ABSTRACT_ROW" at line 44, column 32] ---- 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 abstract_parent = parentStruc... [in template "10154#10192#ABSTRACT_ROW" at line 44, column 5] ----
1<#assign
2journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
3assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
4groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
5classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")
6ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
7assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
8
9<#assign globalGroup = groupLocalService.getFriendlyURLGroup(companyId, "/global")>
10<#assign destMacroClassId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetEntry")>
11<#include "_TEMPLATE_CONTEXT_/${companyId}/${globalGroup.groupId}/${destMacroClassId}/ASSET_ENTRY_MACROS" />
12
13<#assign voc_type = assetVocabularyLocalService.getGroupVocabulary(company.getGroupId(), "Document_type")>
14
15<#assign currentUrl = themeDisplay.getURLCurrent()>
16
17<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(articleGroupId), .vars['reserved-article-id'].data)>
18
19<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey)>
20
21<#assign jaClassNameId = classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle")>
22<#assign curArticleStructure = ddmStructureLocalService.getStructure(company.getGroupId(), jaClassNameId, article.getDDMStructureKey())>
23<#assign structureLocalizedName = curArticleStructure.getName(locale)>
24<#assign structureId = article.getDDMStructureKey()?lowerCase>
25
26<#assign leftColumnSize = "col-md-4">
27<#assign rightColumnSize = "col-md-8">
28<#assign abstarct_img_default_class = "abstract-img-publication-land">
29<#assign contentTypeRowClass ="">
30
31<#if structureId == "publication" || structureId == "project">
32 <#assign leftColumnSize = "col-md-2">
33 <#assign rightColumnSize = "col-md-10">
34 <#assign abstarct_img_default_class = "abstract-img-publication-port">
35 <#assign contentTypeRowClass ="publication-row">
36</#if>
37
38<#-- Necessary for nested structures after upgrading to Liferay 7.4 -->
39<#if structureId == "corporate">
40 <#assign abstract_parent = parentStructureFieldSet38712088.parentStructureFieldSet38712019 />
41<#elseIf structureId == "abstract">
42 <#assign abstract_parent = .vars />
43<#else>
44 <#assign abstract_parent = parentStructureFieldSet38712019 />
45</#if>
46
47<#-- Article URL resolution -->
48<#assign articleUrl = renderRequest.getAttribute("viewURL")!"">
49
50<#assign disableSpa = false>
51<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent) ||
52(abstract_parent.shorthand_story_url?? && abstract_parent.shorthand_story_url.getData()?hasContent)>
53 <#assign disableSpa = true>
54</#if>
55
56<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent)>
57 <#assign articleUrl = abstract_parent.abstract_link.getData()>
58</#if>
59
60<#if articleUrl == "">
61 <#assign articleUrl = getURLViewInContext(themeDisplay, asset, currentUrl!"")>
62</#if>
63
64<#assign article_title = resolveArticleTitle(abstract_parent.short_title!"", abstract_parent.abstract_title!"") />
65
66<#assign abstract_icon = abstract_parent.abstract_icon />
67<#assign abstract_image_medium = abstract_parent.abstract_image_medium />
68<#assign abstract_publication_date = abstract_parent.abstract_publication_date />
69<#assign abstract_text = abstract_parent.abstract_text />
70
71<div class="row border-bottom abstract-row ${contentTypeRowClass}">
72 <div class="${leftColumnSize} col-xs-12">
73 <#if abstract_icon?hasContent && abstract_icon.getData()?hasContent>
74 <#assign myabstract_icon = abstract_icon.getData()>
75 <#else>
76 <#if locale.getLanguage() != "ar">
77 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon.png">
78 <#else>
79 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon-ar.png">
80 </#if>
81 </#if>
82
83 <#if structureId == "project">
84 <img class="img-fluid" src="${myabstract_icon}">
85 <#else>
86 <#if abstract_image_medium?hasContent && abstract_image_medium.getData()?hasContent>
87 <#assign myabstract_image_medium = abstract_image_medium.getData()>
88 <#else>
89 <#assign myabstract_image_medium = "/o/ifad-global-theme/images/placeholders/IFADlogongrey.jpg">
90 </#if>
91 </#if>
92
93 <div class="abstract-img-wrapper">
94 <div class="abstract-img-publication ${abstarct_img_default_class}"
95 style="background-image: url(${myabstract_image_medium})"></div>
96 </div>
97 </div>
98
99 <div class="${rightColumnSize} col-xs-12 abstract-row-content-wrapper">
100 <#if articleUrl != "#">
101 <a href="${articleUrl}" ${disableSpa?then("data-senna-off=\"true\"", "")}>
102 <h3 class="abstract-title-text">${article_title}</h3>
103 </a>
104 <#else>
105 <span>${article_title}</span>
106 </#if>
107
108 <@getAdminMenu asset />
109
110 <#assign publicationDateFormatted = getFormattedDateForAbstractArticle(article, abstract_publication_date!"", locale, "MMMM yyyy") />
111
112 <div class="abstract-row-author">
113 ${publicationDateFormatted}
114 <#if structureId != "publication" && structureId != "generic" &&
115 !currentUrl?contains("videos") && !currentUrl?contains("photos") && !currentUrl?contains("stories")>
116 - ${structureLocalizedName?upperCase}
117 </#if>
118 </div>
119 <div class="abstract-row-categories">
120 <#if structureId == "publication">
121 <#-- TODO Check if that's used anywhere -->
122 <#--<span class="abstract-category">${publicationDateFormatted} ${publication_publisher.getData()}</span>-->
123 <#else>
124 <#list asset.getCategories() as category>
125 <#if category.getVocabularyId() == voc_type.getVocabularyId()>
126 <span class="abstract-category">${category.getName()}</span>
127 </#if>
128 </#list>
129 </#if>
130 </div>
131
132 <div class="abstract-content-text ellipsis-text">
133 ${abstract_text.getData()}
134 </div>
135
136 <#if structureId == "publication">
137 <#assign langList = {}>
138 <#assign displayLangList = false>
139
140 <#list article.getAvailableLanguageIds() as articleLocale>
141 <#assign langCode = articleLocale?split("_")[0]>
142
143 <#assign localizedUrl =
144 articleUrl?replace("/${locale.getLanguage()}/", "/${langCode}/")>
145 <#assign langList = langList + {"${localeUtil.fromLanguageId(articleLocale).getDisplayLanguage()}": "${localizedUrl}"}>
146
147 <#-- Display full list only if there is at least one non-official language-->
148 <#if langCode != "en" && langCode != "es" && langCode != "fr" && langCode != "ar">
149 <#assign displayLangList = true>
150 </#if>
151 </#list>
152
153 <#if displayLangList>
154 <small class="d-block text-uppercase abstract-row-langs">
155 <span><@liferay.language key="additional-languages" /></span>:
156
157 <#list langList as langName, localizedUrl>
158 <a href="${localizedUrl}">${langName}${langName?hasNext?then(', ','')}</a>
159 </#list>
160 </small>
161 </#if>
162 </#if>
163 </div>
164</div>
Insurance for Rural Resilience and Economic Development (INSURED)
IFAD’s INSURED programme (Insurance for Rural Resilience and Economic Development) aims to build the climate resilience of poor rural households, increase their capacity to manage climate risk and strengthen their livelihoods.
The following has evaluated to null or missing: ==> parentStructureFieldSet38712019 [in template "10154#10192#ABSTRACT_ROW" at line 44, column 32] ---- 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 abstract_parent = parentStruc... [in template "10154#10192#ABSTRACT_ROW" at line 44, column 5] ----
1<#assign
2journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
3assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
4groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
5classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")
6ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
7assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
8
9<#assign globalGroup = groupLocalService.getFriendlyURLGroup(companyId, "/global")>
10<#assign destMacroClassId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetEntry")>
11<#include "_TEMPLATE_CONTEXT_/${companyId}/${globalGroup.groupId}/${destMacroClassId}/ASSET_ENTRY_MACROS" />
12
13<#assign voc_type = assetVocabularyLocalService.getGroupVocabulary(company.getGroupId(), "Document_type")>
14
15<#assign currentUrl = themeDisplay.getURLCurrent()>
16
17<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(articleGroupId), .vars['reserved-article-id'].data)>
18
19<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey)>
20
21<#assign jaClassNameId = classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle")>
22<#assign curArticleStructure = ddmStructureLocalService.getStructure(company.getGroupId(), jaClassNameId, article.getDDMStructureKey())>
23<#assign structureLocalizedName = curArticleStructure.getName(locale)>
24<#assign structureId = article.getDDMStructureKey()?lowerCase>
25
26<#assign leftColumnSize = "col-md-4">
27<#assign rightColumnSize = "col-md-8">
28<#assign abstarct_img_default_class = "abstract-img-publication-land">
29<#assign contentTypeRowClass ="">
30
31<#if structureId == "publication" || structureId == "project">
32 <#assign leftColumnSize = "col-md-2">
33 <#assign rightColumnSize = "col-md-10">
34 <#assign abstarct_img_default_class = "abstract-img-publication-port">
35 <#assign contentTypeRowClass ="publication-row">
36</#if>
37
38<#-- Necessary for nested structures after upgrading to Liferay 7.4 -->
39<#if structureId == "corporate">
40 <#assign abstract_parent = parentStructureFieldSet38712088.parentStructureFieldSet38712019 />
41<#elseIf structureId == "abstract">
42 <#assign abstract_parent = .vars />
43<#else>
44 <#assign abstract_parent = parentStructureFieldSet38712019 />
45</#if>
46
47<#-- Article URL resolution -->
48<#assign articleUrl = renderRequest.getAttribute("viewURL")!"">
49
50<#assign disableSpa = false>
51<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent) ||
52(abstract_parent.shorthand_story_url?? && abstract_parent.shorthand_story_url.getData()?hasContent)>
53 <#assign disableSpa = true>
54</#if>
55
56<#if (abstract_parent.abstract_link?? && abstract_parent.abstract_link.getData()?hasContent)>
57 <#assign articleUrl = abstract_parent.abstract_link.getData()>
58</#if>
59
60<#if articleUrl == "">
61 <#assign articleUrl = getURLViewInContext(themeDisplay, asset, currentUrl!"")>
62</#if>
63
64<#assign article_title = resolveArticleTitle(abstract_parent.short_title!"", abstract_parent.abstract_title!"") />
65
66<#assign abstract_icon = abstract_parent.abstract_icon />
67<#assign abstract_image_medium = abstract_parent.abstract_image_medium />
68<#assign abstract_publication_date = abstract_parent.abstract_publication_date />
69<#assign abstract_text = abstract_parent.abstract_text />
70
71<div class="row border-bottom abstract-row ${contentTypeRowClass}">
72 <div class="${leftColumnSize} col-xs-12">
73 <#if abstract_icon?hasContent && abstract_icon.getData()?hasContent>
74 <#assign myabstract_icon = abstract_icon.getData()>
75 <#else>
76 <#if locale.getLanguage() != "ar">
77 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon.png">
78 <#else>
79 <#assign myabstract_icon = "/o/ifad-global-theme/images/placeholders/document-icon-ar.png">
80 </#if>
81 </#if>
82
83 <#if structureId == "project">
84 <img class="img-fluid" src="${myabstract_icon}">
85 <#else>
86 <#if abstract_image_medium?hasContent && abstract_image_medium.getData()?hasContent>
87 <#assign myabstract_image_medium = abstract_image_medium.getData()>
88 <#else>
89 <#assign myabstract_image_medium = "/o/ifad-global-theme/images/placeholders/IFADlogongrey.jpg">
90 </#if>
91 </#if>
92
93 <div class="abstract-img-wrapper">
94 <div class="abstract-img-publication ${abstarct_img_default_class}"
95 style="background-image: url(${myabstract_image_medium})"></div>
96 </div>
97 </div>
98
99 <div class="${rightColumnSize} col-xs-12 abstract-row-content-wrapper">
100 <#if articleUrl != "#">
101 <a href="${articleUrl}" ${disableSpa?then("data-senna-off=\"true\"", "")}>
102 <h3 class="abstract-title-text">${article_title}</h3>
103 </a>
104 <#else>
105 <span>${article_title}</span>
106 </#if>
107
108 <@getAdminMenu asset />
109
110 <#assign publicationDateFormatted = getFormattedDateForAbstractArticle(article, abstract_publication_date!"", locale, "MMMM yyyy") />
111
112 <div class="abstract-row-author">
113 ${publicationDateFormatted}
114 <#if structureId != "publication" && structureId != "generic" &&
115 !currentUrl?contains("videos") && !currentUrl?contains("photos") && !currentUrl?contains("stories")>
116 - ${structureLocalizedName?upperCase}
117 </#if>
118 </div>
119 <div class="abstract-row-categories">
120 <#if structureId == "publication">
121 <#-- TODO Check if that's used anywhere -->
122 <#--<span class="abstract-category">${publicationDateFormatted} ${publication_publisher.getData()}</span>-->
123 <#else>
124 <#list asset.getCategories() as category>
125 <#if category.getVocabularyId() == voc_type.getVocabularyId()>
126 <span class="abstract-category">${category.getName()}</span>
127 </#if>
128 </#list>
129 </#if>
130 </div>
131
132 <div class="abstract-content-text ellipsis-text">
133 ${abstract_text.getData()}
134 </div>
135
136 <#if structureId == "publication">
137 <#assign langList = {}>
138 <#assign displayLangList = false>
139
140 <#list article.getAvailableLanguageIds() as articleLocale>
141 <#assign langCode = articleLocale?split("_")[0]>
142
143 <#assign localizedUrl =
144 articleUrl?replace("/${locale.getLanguage()}/", "/${langCode}/")>
145 <#assign langList = langList + {"${localeUtil.fromLanguageId(articleLocale).getDisplayLanguage()}": "${localizedUrl}"}>
146
147 <#-- Display full list only if there is at least one non-official language-->
148 <#if langCode != "en" && langCode != "es" && langCode != "fr" && langCode != "ar">
149 <#assign displayLangList = true>
150 </#if>
151 </#list>
152
153 <#if displayLangList>
154 <small class="d-block text-uppercase abstract-row-langs">
155 <span><@liferay.language key="additional-languages" /></span>:
156
157 <#list langList as langName, localizedUrl>
158 <a href="${localizedUrl}">${langName}${langName?hasNext?then(', ','')}</a>
159 </#list>
160 </small>
161 </#if>
162 </#if>
163 </div>
164</div>