Typ
Service
Jahr
Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> curEntry.getAssetRenderer()  [in template "10155#10193#14104459" at line 110, column 45]

----
Tip: If the failing expression is known to be 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 renderer = curEntry.getAssetR...  [in template "10155#10193#14104459" at line 110, column 25]
----
1<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
2<#assign dLAppLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")> 
3 
4 
5<#assign dlAppServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") />  
6 
7<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryService")> 
8<#assign assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService")> 
9 
10<#setting url_escaping_charset='ISO-8859-1'> 
11<#assign backLink = currentURL?url/>  
12<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] /> 
13<#assign strLang="Fr" />  
14<#if locale.getLanguage()?lower_case == "de"> 
15	<#assign strLang = "De" /> 
16</#if> 
17<#-- AP Block Title--> 
18<#assign apBlockTitle= "" /> 
19<#if portletPreferences["blockTitle"+strLang]?? && portletPreferences["blockTitle"+strLang][0]?? > 
20	<#assign apBlockTitle= portletPreferences["blockTitle"+strLang][0]> 
21</#if> 
22<#-- AP Block SubTitle --> 
23<#assign apBlockSubTitle= "" /> 
24<#if portletPreferences["blockSubTitle"+strLang]?? && portletPreferences["blockSubTitle"+strLang][0]?? > 
25	<#assign apBlockSubTitle= portletPreferences["blockSubTitle"+strLang][0]> 
26</#if> 
27<#-- AP Link Title --> 
28<#assign apLinkTitle= "" /> 
29<#if portletPreferences["linkTitle"+strLang]?? && portletPreferences["linkTitle"+strLang][0]?? > 
30	<#assign apLinkTitle= portletPreferences["linkTitle"+strLang][0]> 
31</#if> 
32<#-- AP Link URL --> 
33<#assign apLinkURL= "" /> 
34<#if portletPreferences["linkURL"+strLang]?? && portletPreferences["linkURL"+strLang][0]?? > 
35	<#assign apLinkURL= portletPreferences["linkURL"+strLang][0]> 
36</#if> 
37<#-- AP Link Sub Title--> 
38<#assign apLinkSubTitle= "" /> 
39<#if portletPreferences["linkSubTitle"+strLang]?? && portletPreferences["linkSubTitle"+strLang][0]?? > 
40	<#assign apLinkSubTitle= portletPreferences["linkSubTitle"+strLang][0]> 
41</#if> 
42 
43 
44<#assign plusButton = "PLUS D’ACTUALITÉS"/> 
45<#if locale = "de_DE"> 
46	<#assign local_back = "MEHR NEWS"/> 
47</#if> 
48 
49 
50<style> 
51.newsbackground{ 
52	background-color:#F3F3F2; 
53
54 
55.summaryTxt2{ 
56	display: -webkit-box; 
57	-webkit-line-clamp: 9; 
58	-webkit-box-orient: vertical; 
59	-webkit-box-align: top; 
60	overflow: hidden; 
61	text-overflow: ellipsis; 
62
63 
64.plusButton{ 
65	background-color:#E22B28; 
66	text-align:center; 
67	padding-top:10px; 
68	padding-bottom: 10px; 
69	color:#ffffff; 
70
71 
72.plusButton:hover{ 
73	color:#ffffff; 
74	background-color:#E22B28; 
75
76 
77.card:hover { 
78    box-shadow: rgba(0, 0, 0, 0.24) 0px 5px 10px 
79
80 
81 
82  /* Number of Cards by Row based on Viewport */ 
83    @media (min-width: 576px) { 
84        .card-deck .card { 
85            min-width: 50.1%; /* 1 Column */ 
86            margin-bottom: 12px; 
87
88
89 
90    @media (min-width: 768px) { 
91        .card-deck .card { 
92            min-width: 33.4%;  /* 2 Columns */ 
93
94
95 
96    @media (min-width: 992px) { 
97        .card-deck .card { 
98            min-width: 25.1%;  /* 3 Columns */ 
99
100
101 
102 
103</style> 
104 
105 
106 
107<div class="container rounded-0 p-0"> 
108	<div class="card-deck"> 
109		<#list entries as curEntry> 
110			<#assign renderer = curEntry.getAssetRenderer() /> 
111			<#assign className = renderer.getClassName() /> 
112			<#if className == "com.liferay.journal.model.JournalArticle" &&  renderer.getArticle()?? > 
113				<#assign journalArticle = renderer.getArticle() > 
114				<#assign Title = journalArticle.getTitle(locale) /> 
115				<#assign entryTitle = htmlUtil.escape(renderer.getTitle(locale)) /> 
116				<#assign document = saxReaderUtil.read(journalArticle.getContent()) > 
117				<#assign rootElement = document.getRootElement() > 
118				<#assign viewURL = "/web/communication/detail?groupId=${curEntry.getGroupId()}&articleId=${journalArticle.getArticleId()}&redirect=${backLink}" /> 
119				<#-- image --> 
120				<#assign xPathSelectorItem = saxReaderUtil.createXPath("dynamic-element[@name='Image']") > 
121				<#if xPathSelectorItem.selectSingleNode(rootElement)?? > 
122					<#--<#assign  ItemNode = xPathSelectorItem.selectSingleNode(rootElement).selectSingleNode("dynamic-content") > 
123					<#assign  Image = ItemNode.getStringValue() >--> 
124					 
125					 
126					 
127					 
128					 
129					<#assign  Image = getStructureValue("Image",rootElement).getData() /> 
130				 
131					 
132					 
133					<#assign noImage = 0 /> 
134					<#if Image != ""> 
135						<#assign  imgJson = jsonFactoryUtil.createJSONObject(Image)> 
136						<#assign  Image = "/documents/"+ imgJson.groupId +"/" + imgJson.uuid > 
137					</#if> 
138				<#else> 
139					<#assign  Image = "" > 
140					<#assign noImage = 1 /> 
141				</#if> 
142				<#if Image ==""> 
143					<#assign  Image = "${themeDisplay.getPathThemeCss()}/../assets/img/default/default-news.jpg" /> 
144					<#assign noImage = 1 /> 
145				<#else> 
146					<#assign  Image = Image + "?imagePreview=1" > 
147				</#if> 
148				<#-- Type & Categories --> 
149				<#assign strCategories = ""> 
150				<#assign Type = "" /> 
151				<#assign categoryList = curEntry.getCategories() /> 
152				<#list categoryList as category> 
153					<#assign vocabulary = assetVocabularyService.getVocabulary(category.vocabularyId)> 
154					<#if vocabulary.name = "020 Typologies"> 
155						<#if category.getTitle(locale) != "News-Accueil"> 
156							<#assign Type= category.getTitle(locale) /> 
157						</#if> 
158					</#if> 
159					<#if vocabulary.name = "010 Pouvoirs"> 
160						<#assign strCategories = category.getDescription(locale) /> 
161					</#if> 
162				</#list> 
163 
164				  <div class="card border-0 rounded-0 newsbackground mb-4 "> 
165					<div class="card-body  pb-0" onclick="location.href='${viewURL}';" style="cursor:pointer;"> 
166						<div class="row" style="min-height:20px;"> 
167							<div class="col-6"> 
168								<p class="m-0 card-text"><small class="text-muted">${Type}</small></p> 
169							</div> 
170							<div class="col-6 text-right"> 
171								<p class="m-0 card-text"><small class="text-muted">${dateUtil.getDate(curEntry.getPublishDate(), "dd.MM.yyyy", locale)}</small></p> 
172							</div> 
173						</div> 
174						<div class="row" style="min-height:45px;"> 
175							<div class="col-12"> 
176								<p class="m-0 card-text text-danger">${strCategories}</p> 
177							</div> 
178						</div> 
179						<div class="row" style="min-height:50px;"> 
180							<div class="col-12"> 
181								<h4 class="mt-3" style="hyphens: auto;">${Title}</h4> 
182							</div> 
183						</div> 
184					</div> 
185							<#if noImage==0> 
186								<div class="card-footer m-0 p-0 border-0 newsbackground" style="height:220px;overflow:hidden;"> 
187									<a href="${viewURL}" class=""> 
188										<#if imgJson?? && imgJson.uuid??> 
189										<#attempt> 
190											<#assign imageFileEntry = dlFileEntryLocalService.getFileEntryByUuidAndGroupId(imgJson.uuid?string,imgJson.groupId?number) /> 
191											<#assign imageFileVersion = imageFileEntry.getFileVersion().getFileVersionId()> 
192											<#assign imageFile = dLAppLocalService.getFileVersion(imageFileVersion)> 
193											<img data-fileentryid="${imageFile.fileEntryId}" alt="${imageFile.description}" src="${Image}" class="img-fluid" /> 
194										<#recover> 
195										</#attempt> 
196										 </#if> 
197									</a> 
198							<#else> 
199								<div class="card-footer pb-0 border-0 newsbackground align-top mb-2" style="min-height:200px;cursor:pointer;" onclick="location.href='${viewURL}';"> 
200									<div class="summaryTxt2"> 
201										${curEntry.getSummary(locale)} 
202									</div> 
203							</#if> 
204					</div> 
205						<#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
206								<@getIvsEditIcon/> 
207						</#if> 
208 
209				  </div> 
210 
211			</#if> 
212		</#list> 
213	</div> 
214</div> 
215 
216<#macro getIvsEditIcon > 
217	<#if renderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
218		<#assign redirectURL = renderResponse.createRenderURL() /> 
219 
220		${redirectURL.setParameter("mvcPath", "/add_asset_redirect.jsp")} 
221		${redirectURL.setWindowState("pop_up")} 
222 
223		<#assign editPortletURL = renderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" /> 
224 
225		<#if validator.isNotNull(editPortletURL)> 
226			<div style="position:absolute;bottom:3px;right:3px;background:#f3f3f2ba;padding:5px 10px 5px 10px;border-radius: 3px;color:#343a40"> 
227				<#assign url="javascript:Liferay.Util.openWindow({id:'" + renderResponse.getNamespace() + "editAsset', title: 'Edit', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" /> 
228				<a href="${url}"><i class="icon-pencil"></i></a> 
229			</div> 
230			 
231		</#if> 
232	</#if> 
233</#macro> 
234 
235 
236<#function getStructureValue elementName xmlContent> 
237    <#assign availableLanguagesXPathSelector = saxReaderUtil.createXPath("/*/@available-locales") /> 
238     <#assign available = "" /> 
239    <#if availableLanguagesXPathSelector.selectSingleNode(xmlContent)?? > 
240        <#assign available = availableLanguagesXPathSelector.selectSingleNode(xmlContent) /> 
241    </#if> 
242    <#if available?contains(locale.toString())> 
243        <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + locale + "']" />  
244    <#elseif available?contains("fr_FR")> 
245        <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='fr_FR']" /> 
246    <#else> 
247        <#assign curElementXPath = "dynamic-element[@name='"+elementName+"']/dynamic-content[@language-id='" + entry.getDefaultLanguageId() + "']" /> 
248    </#if> 
249    <#assign xPathSelector = saxReaderUtil.createXPath(curElementXPath) /> 
250    <#if xPathSelector.selectSingleNode(xmlContent)?? > 
251        <#assign structureValue = xPathSelector.selectSingleNode(xmlContent) /> 
252    <#else> 
253        <#assign structureValue = "" /> 
254    </#if> 
255    <#return structureValue/>                    
256</#function>