World Wetlands Day Messages and Statements

An error occurred while processing the template.
The following has evaluated to null or missing:
==> renderer.getDisplayDate  [in template "10157#10197#1137899" at line 47, column 33]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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 Date = renderer.getDisplayDate()  [in template "10157#10197#1137899" at line 47, column 17]
----
1<#-- ADT - Story List --> 
2<#if entries?has_content> 
3	<#setting locale = locale.toString() /> 
4    <#setting datetime_format = "dd MMMM yyyy" /> 
5    <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
6    <#assign themeDisplay = serviceContext.getThemeDisplay() /> 
7    <#assign showFullContent = assetLinkBehavior != "showFullContent" /> 
8    <#assign cpt=0 /> 
9    <div class="row"> 
10	    <#list entries as curEntry> 
11		 
12			<#assign renderer = curEntry.getAssetRenderer() /> 
13		    <#assign className = renderer.getClassName() /> 
14		    <#assign userName = stringUtil.split(renderer.getUserName(), ' ') /> 
15		     
16		    <#if renderer.getArticle()?? && className == "com.liferay.journal.model.JournalArticle" > 
17		        <#assign journalArticle = renderer.getArticle() /> 
18		         
19	            <#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
20	            <#assign rootElement = document.getRootElement() /> 
21			    <#assign resourcePrimKey = journalArticle.getResourcePrimKey()/> 
22			    <#-- StoryTitle --> 
23	    	    <#assign StoryTitle = "" /> 
24	            <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='StoryTitle']") > 
25	            <#if xPathSelectorItem.selectSingleNode(rootElement)?? > 
26	                <#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") > 
27	                <#assign StoryTitle = ItemNode.getStringValue() > 
28	            </#if> 
29			     
30	             <#-- Text --> 
31	    	    <#assign Text = "" /> 
32	            <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Description']") > 
33	            <#if xPathSelectorItem.selectSingleNode(rootElement)?? > 
34	                <#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") > 
35	                <#assign Text = ItemNode.getStringValue() > 
36	            </#if> 
37	             
38	            <#-- Image --> 
39	    	    <#assign Image = "" /> 
40	            <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Image']") > 
41	            <#if xPathSelectorItem.selectSingleNode(rootElement)?? > 
42	                <#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") > 
43	                <#assign Image = ItemNode.getStringValue() > 
44	            </#if> 
45	             
46	            <#-- Date --> 
47                <#assign Date = renderer.getDisplayDate() /> 
48	            <#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Date']") > 
49	            <#if xPathSelectorItem.selectSingleNode(rootElement)?? > 
50	                <#assign ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") > 
51	                <#assign Date = ItemNode.getStringValue() /> 
52	                <#assign Date = dateUtil.parseDate("yyyy-MM-dd", Date, locale) /> 
53	            </#if> 
54	             
55	            <#-- View URL --> 
56		        <#assign viewURL= "${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay)}/story/-/detail/${journalArticle.getUrlTitle()}?redirect=${themeDisplay.getURLCurrent()}"/> 
57	            <#if cpt != 0 && cpt % 3 == 0> 
58	            	</div> 
59	            	<div class="row"> 
60	            </#if> 
61	            			 
62				<div class="col-md-4"> 
63					<div class="block-white"> 
64						<div class="story-list-block"> 
65							<#if Image!="" > 
66								<figure> 
67									<a href="${viewURL}" class="img"> 
68		                				<img class="story-list-img" src="${Image}" alt="Image" role="presentation" /> 
69		                				<span>${languageUtil.get(locale, "story-list.more")}</span> 
70		                			</a> 
71		                		</figure> 
72			                </#if> 
73			                <div class="story-list-content"> 
74								<h4 class="story-list-title"><a href="${viewURL}">${StoryTitle}</a></h4> 
75								<div class="story-list-date"><a href="${viewURL}">${Date?datetime}</a></div> 
76								<div class="story-list-description"> 
77									<a href="${viewURL}"> 
78										${stringUtil.shorten(Text,150)} 
79										 
80										<p><strong>${languageUtil.get(locale, "story-list.more")}</strong></p> 
81									</a> 
82								</div> 
83							</div> 
84						</div> 
85					</div> 
86				</div> 
87				<#assign cpt = cpt+1 /> 
88	        </#if> 
89		</#list> 
90	</div>		 
91</#if> 

Pitch for the Grant 2023

Call for project ideas in wetlands

Apply from 2 February to 2 March 2023 for an opportunity to receive EUR 10'000 provided by Danone

 
 

Learn more about the grant

What can you do?

Communication Resources

Available in different languages and formats

Download now

Wetlands

Land areas that are saturated or flooded with water either permanently or seasonally.

Inland wetlands:

 Marshes, lakes, rivers, floodplains, peatlands and swamps   

Coastal wetlands:

Saltwater marshes, estuaries, mangroves, lagoons and coral reefs

Human-made wetlands:

Fish ponds, rice paddies and salt pans
 

An error occurred while processing the template.
Java method "jdk.proxy3.$Proxy149.getFolder(long, long, String)" threw an exception when invoked on jdk.proxy3.$Proxy149 object "com.liferay.portlet.documentlibrary.service.impl.DLFolderLocalServiceImpl@6955bf53"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign folderId = dLFolderLocalServi...  [in template "10157#10197#1137782" at line 6, column 1]
----
1<#assign groupLocalServiceUtil = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")> 
2<#assign dLFolderLocalServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService")> 
3<#assign dLFileEntryLocalServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
4 
5<#assign groupId = themeDisplay.getScopeGroup().getGroupId() /> 
6<#assign folderId = dLFolderLocalServiceUtil.getFolder(groupId, 0, FolderName.getData()).getFolderId() /> 
7<#assign files = dLFileEntryLocalServiceUtil.getFileEntries(groupId, folderId) /> 
8 
9<#assign size = files?size /> 
10 
11<script> 
12	var images=[]; 
13	<#assign imageAdd= "/o/wwday-theme/images/add.png" /> 
14	<#assign cpt = 0 /> 
15	<#list files as fileEntry > 
16		images[${cpt}]="/documents/${groupId}/${folderId}/${fileEntry.getTitle()}/${fileEntry.getUuid()}"; 
17		<#assign cpt=cpt+1 /> 
18	</#list> 
19</script> 
20 
21 
22<div class="HomeGetInvolved imageTable"> 
23	<h1 style="font-weight:700">${TableTitle.getData()}</h1> 
24 
25	<table style="width:100%" border="0"> 
26		<tr> 
27			<td colspan="2" rowspan="2" style="width:33.3333%;background-image:url('${getRandomURL(files, 0.12)}')" id="img-1" >&nbsp;</td> 
28			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.93)}')" id="img-2" >&nbsp;</td> 
29			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.45)}')" id="img-3">&nbsp;</td> 
30			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.67)}')" id="img-4">&nbsp;</td> 
31			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.31)}')" id="img-5">&nbsp;</td> 
32		</tr> 
33		<tr> 
34			<td style="width:16.6666%;background-image:url('${imageAdd}')"><a href="${themeDisplay.getScopeGroup().getDisplayURL(themeDisplay)+AddPhotoURL.getData()}"><img src="${imageAdd}" ></a></td> 
35			<td colspan="2" rowspan="2" style="width:33.3333%;background-image:url('${getRandomURL(files, 0.24)}')" id="img-6">&nbsp;</td> 
36			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.53)}')" id="img-7">&nbsp;</td> 
37		</tr> 
38		<tr> 
39			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.39)}')" id="img-8">&nbsp;</td> 
40			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.83)}')" id="img-9">&nbsp;</td> 
41			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.11)}')" id="img-10">&nbsp;</td> 
42			<td style="width:16.6666%;background-image:url('${getRandomURL(files, 0.49)}')" id="img-11">&nbsp;</td> 
43		</tr> 
44	</table> 
45 
46	<br><a href="${LinkURL.getData()}" class="btn btn-default">${LinkTitle.getData()}</a>  
47</div> 
48 
49 
50<script> 
51	function changeAllImages(){ 
52		for( var i=1; i<12; i++){ 
53			var index = (i % ${size}); 
54			$("#img-"+i).css("background-image","url('"+images[index]+"')"); 
55			$("#img-"+i).css("height",$("#img-"+i).width()+'px'); 
56
57
58	 
59	function changeImage(){ 
60		var i = Math.floor((Math.random() * 11) + 1); 
61		var index = Math.floor((Math.random() * ${size}) + 1); 
62		$("#img-"+i).fadeOut(500, function() { 
63			$("#img-"+i).css("background-image","url('"+images[index]+"')"); 
64		}).fadeIn(400); 
65
66	changeAllImages(); 
67	setInterval(changeImage, 4000); 
68</script> 
69<style> 
70	.imageTable img{ 
71		width: 100%; 
72		 
73
74	.imageTable td{ 
75		background-repeat:no-repeat; 
76		background-size:cover; 
77		padding: 2px; 
78		background-position:center; 
79		border: solid 2px #ffffff; 
80
81</style> 
82 
83 
84 
85 
86 
87 
88 
89<#function getRandomURL files rnd> 
90	<#assign nb = rand(1, files?size-1, rnd)>	 	 
91	<#assign cpt= 0> 
92	<#list files as fileEntry > 
93		<#if cpt == nb > 
94	 		<#return "/documents/"+groupId+"/"+folderId+"/"+fileEntry.getTitle()+"/"+fileEntry.getUuid() /> 
95	 	</#if> 
96	 	<#assign cpt = cpt +1 /> 
97	</#list> 
98	<#return "" /> 
99</#function> 
100 
101<#function rand min max rnd> 
102	 
103	<#local now = .now?long?c /> 
104	<#local randomNum = rnd + 
105		("0." + now?substring(now?length-1) + now?substring(now?length-2))?number /> 
106  	<#if (randomNum > 1)> 
107		<#assign _rand = randomNum % 1 /> 
108  	<#else> 
109		<#assign _rand = randomNum /> 
110  </#if> 
111  <#return (min + ((max - min) * _rand))?round /> 
112</#function> 

Partners