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

[email protected]

Experts

Asset Publisher

Tara James

Climate Risk and Agricultural Insurance Specialist

[email protected]

Imaine Abada

Portfolio and Programme Analyst

[email protected]

Related publications

Related publications

Making agricultural and climate risk insurance gender inclusive: How to improve access to insurance for rural women

October 2021

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

June 2023

INSURED is a technical assistance programme working to strengthen agricultural insurance in IFAD’s portfolio.

INSURED results 2018-2023

October 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

An error occurred while processing the template.
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>&nbsp;&nbsp; 
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> 
An error occurred while processing the template.
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>&nbsp;&nbsp; 
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)

June 2019

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.

An error occurred while processing the template.
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>&nbsp;&nbsp; 
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>