Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> _dlFileEntryUtil.getCaptionFromImage(image.siblings[0].data, themeDisplay, locale)  [in template "80017871481819#33260#349920" at line 213, column 52]

----
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 pieFoto = _dlFileEntryUtil.ge...  [in template "80017871481819#33260#349920" at line 213, column 33]
----
1<#--  
2Plantilla: Actividad 
3Nombre en Repositiorio: TPL_FM_ACTIVIDAD 
4 --> 
5 <#-- Estilos para ocultar icono de volver y mostrar siempre el botón de edición --> 
6 <style> 
7	 .visible-interaction{ 
8		display: block !important; 
9
10	.align-items-center > .component-title { 
11		display: none !important; 
12
13</style> 
14 
15<#assign journalArticle = _journalArticleUtil.getJournalArticle(groupId, .vars['reserved-article-id'].data) /> 
16<#assign journalArticleClassName = "com.liferay.portlet.journal.model.JournalArticle" /> 
17<#assign journalArticleClassNameId = _journalArticleUtil.getJournalClassNameId(journalArticleClassName) /> 
18 
19 
20<#--##--> 
21<#--#### Carga de assets relacionados--> 
22<#--##--> 
23<#assign assetEntry = _assetEntryUtil.getAssetEntry(journalArticle.getResourcePrimKey()) /> 
24<#assign relatedItems = _assetEntryUtil.getRelatedJournalArticles(assetEntry) /> 
25 
26<#list relatedItems as relatedArticle> 
27    <#assign structureKey = relatedArticle.getDDMStructureKey() /> 
28		<#if relatedArticle.getDDMStructureKey() == _friendlyURLUtil.getArticleDetailStructureKey() > 
29			<#assign article = relatedArticle /> 
30		</#if> 
31</#list> 
32 
33<#assign supporters = [] /> 
34<#assign activities = [] /> 
35<#list relatedItems as relatedArticle> 
36    <#--## 1 - ACTIVIDAD: Actividades relacionadas (0..*)--> 
37    <#--## 2 - COLABORADOR: Entidad colaboradora (0..*)--> 
38    <#--## 3 - ITINERANCIA: (1..1)--> 
39    <#--## 4 - UBICACION: Está relacionado con ITINERANCIA (1..1)-->     
40		<#if relatedArticle?has_content> 
41			<#if relatedArticle.getDDMStructureKey() =="ITINERANCIA"> 
42				<#assign roaming = relatedArticle />             
43				<#-- ## Si existe ITINERANCIA, es necesario localizar su UBICACION--> 
44				<#-- ## Se recorren todos los AssetLinks para localizarla--> 
45				<#if roaming??> 
46					<#assign roamingEntry = _assetEntryUtil.getAssetEntry(roaming.getResourcePrimKey()) /> 
47					<#assign roamingRelatedItems = _assetEntryUtil.getRelatedJournalArticles(roamingEntry) /> 
48					<#list roamingRelatedItems as roamingRelatedItem> 
49						<#if roamingRelatedItem?? && roamingRelatedItem.getDDMStructureKey() == "UBICACION"> 
50							<#assign location = roamingRelatedItem /> 
51						</#if> 
52					</#list> 
53				</#if> 
54			<#elseif relatedArticle.getDDMStructureKey() =="ACTIVIDAD"> 
55			<#-- ## Se almacena el resultado de la operación de añadir para que no lo pinte en pantalla--> 
56				<#assign activities = activities + [relatedArticle] />          
57			<#elseif relatedArticle.getDDMStructureKey() == "COLABORADOR"> 
58			<#-- ## Se almacena el resultado de la operación de añadir para que no lo pinte en pantalla--> 
59				<#assign supporters = supporters + [relatedArticle] /> 
60			</#if> 
61		</#if> 
62</#list> 
63<#--#################################--> 
64<#--#####--> 
65<#--####### Plantilla--> 
66<#--#####--> 
67<#--#################################--> 
68 
69<#assign node = saxReaderUtil.read(roaming.getContentByLocale("${locale}")) /> 
70 
71<#assign roamingStartDate = node.selectSingleNode("//dynamic-element[@field-reference='startDateTime']/dynamic-content").data /> 
72<#assign roamingEndDate = node.selectSingleNode("//dynamic-element[@field-reference='endDateTime']/dynamic-content").data /> 
73 
74 
75 
76<#assign startDateCalendar = roamingStartDate?date("yyyy-MM-dd hh:mm") /> 
77<#assign endDateCalendar = roamingEndDate?date("yyyy-MM-dd hh:mm") /> 
78 
79<#assign nowCalendar = .now /> 
80 
81<#if startDateCalendar?long gt nowCalendar?long> 
82    <#assign backURL= _friendlyURLUtil.getBackFutureExhibitionURL() /> 
83<#elseif endDateCalendar?long lt nowCalendar?long> 
84    <#assign backURL= _friendlyURLUtil.getBackOldExhibitionURL() /> 
85<#else> 
86    <#assign backURL= _friendlyURLUtil.getBackCurrentExhibitionURL() /> 
87</#if> 
88 
89<#if backURL??> 
90    <span class="volver"> 
91        <a href="${backURL}"> <@liferay.language key="es.colecciones.back" /> </a> 
92    </span> 
93</#if> 
94 
95 
96<div class="activity detail" itemscope itemtype="http://schema.org/Event"> 
97    <h2 itemprop="name"> ${title.data} </h2> 
98    <p class="when"> 
99        <#if roamingStartDate??> 
100            <span itemprop="startDate">${startDateCalendar?string("dd/MM/yyyy")}</span> - 
101        </#if> 
102 
103        <#if roamingEndDate??> 
104            <span itemprop="endDate">${endDateCalendar?string("dd/MM/yyyy")}</span> 
105        </#if> 
106    </p> 
107	 
108	<#if location?? && location?has_content> 
109		<p class="where" itemprop="location" itemscope itemtype="http://schema.org/Place"> 
110			<#assign node = saxReaderUtil.read(location.getContentByLocale("${locale}")) /> 
111			<#assign locationName = node.selectSingleNode("//dynamic-element[@name='title']/dynamic-content").data /> 
112 
113			<#if locationName??> 
114				<span itemprop="name">${locationName}</span> 
115			</#if> 
116		</p> 
117	</#if> 
118	 
119    <div class="info"> 
120        <div class="description" itemprop="description"> 
121            <#if desc.data??> 
122                ${desc.data} 
123            </#if> 
124        </div> 
125        <#if document.data?? || activities?has_content> 
126            <div class="details"> 
127                <#--## Material asociado--> 
128                <#if document.data??> 
129                    <ul> 
130                        <#list document.siblings as doc> 
131							<#if doc.data?? && doc.data != "{}"> 
132								<#assign fileEntry = _dlFileEntryUtil.getDLFileEntryByJSONDataAndGroupId(doc.data, groupId) /> 
133								<#if fileEntry?? && fileEntry?has_content> 
134										<li><a href="${_dlFileEntryUtil.getDownloadURL(fileEntry, themeDisplay)}"><@liferay.language key="read-more" /></a></li> 
135								</#if> 
136							</#if> 
137                        </#list> 
138                    </ul> 
139                </#if> 
140 
141                <#--## Actividades relacionadas--> 
142                <#if activities?has_content> 
143                    <ul class="relatedActivities"> 
144                        <#list activities as activity> 
145                            <#assign node = saxReaderUtil.read(activity.getContentByLocale("${locale}")) /> 
146                            <#assign activityName = node.selectSingleNode("//dynamic-element[@name='title']/dynamic-content").data /> 
147                            <#assign activityUrl = "${_friendlyURLUtil.getExhibitionDetailURL()}/${groupId}/${activity.articleId}" /> 
148         
149                            <li><a href="${activityUrl}">${activityName}</a></li> 
150                        </#list> 
151                    </ul> 
152                </#if> 
153 
154            </div> 
155        </#if> 
156				 
157        <#--## Entidades colaboradoras--> 
158        <#if supporters?has_content> 
159            <div class="supporters"> 
160                <h3><@liferay.language key="ca.supporters" /></h3> 
161                <ul itemscope itemtype="http://schema.org/Organization"> 
162                    <#list supporters as supporter> 
163                        <#assign node = saxReaderUtil.read(supporter.getContentByLocale("${locale}")) /> 
164                        <#assign supporterTitle = node.selectSingleNode("//dynamic-element[@name='title']/dynamic-content").data /> 
165                        <#assign supporterUrl = node.selectSingleNode("//dynamic-element[@name='url_']/dynamic-content").data /> 
166                        <#assign supporterLogo = node.selectSingleNode("//dynamic-element[@name='logo']/dynamic-content").data /> 
167                        <li> 
168                            <span class="name" itemprop="name">${supporterTitle}</span> 
169							<#assign imageFileEntry = _dlFileEntryUtil.getImgFriendlyURL(supporterLogo, groupId) /> 
170                            <a itemprop="url" href="${supporterUrl}"> 
171                                <img itemprop="image" src="${imageFileEntry}" alt="${supporterTitle}" /> 
172                            </a> 
173                        </li> 
174                    </#list> 
175                </ul> 
176            </div> 
177        </#if> 
178    </div> 
179		 
180		<#--##--> 
181    <#--#### Los campos video e imagen, en la estructura, son repetibles.--> 
182    <#--#### Según el diseño acordado, unicamente se muestra un video o una imagen--> 
183    <#--#### por lo que se coge el primero y se ignoran el resto--> 
184    <#--##--> 
185    <div class="media"> 
186        <#if video?? && video.siblings?has_content && video.siblings[0].data != "{}"> 
187            <#--##Tipo de fichero Video--> 
188			<#assign fileEntry = _dlFileEntryUtil.getDLFileEntryByJSONDataAndGroupId(video.siblings[0].data, groupId) /> 
189			<#assign fileVersion = fileEntry.getFileVersion() /> 
190 
191			<#-- Obtener todos los metadatos asociados a ese FileVersion --> 
192			<#assign metadataList = _dlFileEntryUtil.getDLFileEntryMetadataList(fileEntry) /> 
193			<#assign fieldCode = _dlFileEntryUtil.getFieldValueFromMetadata(metadataList, "fileId", localeUtil.fromLanguageId("en_US"))/> 
194            <#--##Brightcove--> 
195            <object id="<portlet:namespace/>_videoplayer" class="BrightcoveExperience"> 
196                <param name="bgcolor" value="#FFFFFF" /> 
197                <param name="width" value="300" /> 
198                <param name="height" value="200" /> 
199                <param name="playerID" value="1822475294001" /> 
200                <param name="playerKey" value="AQ~~,AAABSBm2hKk~,a1nA9hU_N98mfhxT6UofW0oFcpIiQe7F" /> 
201                <param name="isVid" value="true" /> 
202                <param name="isUI" value="true" /> 
203                <param name="dynamicStreaming" value="true" /> 
204                <param name="wmode" value="transparent" /> 
205                <param name="secureConnections" value="true" /> 
206                <param name="secureHTMLConnections" value="true" /> 
207                <param name="@videoPlayer" value="${fieldCode}" /> 
208            </object> 
209        <#else> 
210            <#if image.data?? && image.siblings[0].data != "{}"> 
211				<#assign imageFileEntry = _dlFileEntryUtil.getImgFriendlyURL(image.siblings[0].data, groupId) /> 
212                <img itemprop="image" src="${imageFileEntry}" alt="${title.data}" /> 
213				<#assign pieFoto = _dlFileEntryUtil.getCaptionFromImage(image.siblings[0].data, themeDisplay, locale)/> 
214				<#if pieFoto?? && pieFoto?has_content> 
215					<div class="pie-foto-info"> 
216						${pieFoto} 
217					</div> 
218				</#if> 
219            </#if> 
220        </#if> 
221				 
222				<#--##--> 
223        <#--#### Carrusel de Obras de la exposición--> 
224        <#--#### Las obras se obtienen de los tags del contenidos--> 
225        <#--#### La etiqueta se corresponde con el identificador de la obra--> 
226        <#--##--> 
227        <#assign tags = _assetTagUtil.getJournalTags(assetEntry) /> 
228        <#if tags?has_content> 
229            <h2><@liferay.language key="ca.artworks.exhibition" /></h2> 
230            <div class="suggestion"> 
231                <a class="buttons prev" href="javascript:void(0)">left</a> 
232                <div class="viewport"> 
233                    <ul class="overview"> 
234                        <#list tags as tag> 
235                            <#--## Obra --> 
236							<#assign artwork = _artworkUtil.getArtworkObject(companyId, tag)!artwork /> 
237							<#if artwork?? && artwork?has_content> 
238								<#--## Miniatura--> 
239								<#assign artworkThumbnail = _artworkUtil.getArtworkMiniatureURL(artwork, themeDisplay) /> 
240								<#--## Artistas--> 
241								<#assign artists = _artworkUtil.getRelatedArtists(artwork) /> 
242								<#assign artworkTitle =_artworkUtil.getArtworkTitle(artwork)/> 
243								<li itemscope itemtype="http://schema.org/CreativeWork"> 
244										<a itemprop="url" href="${_friendlyURLUtil.getArtworkDetailURL()}/${artwork.getExternalReferenceCode()}/${artworkTitle}"> 
245											<img itemprop="image" src="${artworkThumbnail}" alt="${artworkTitle}"/> 
246										</a> 
247										<#if artists?has_content> 
248											<#list artists as artist> 
249												<div itemscope itemtype="http://schema.org/Person"> 
250													<p class="artist"> 
251														<a itemprop="url" href="${_friendlyURLUtil.getArtistDetailURL()}/${artist.getExternalReferenceCode()}/"> 
252															<span itemprop="name">${_artistUtil.getArtistName(artist)}</span> 
253														</a> 
254													</p> 
255												</div> 
256											</#list> 
257										</#if> 
258										<p itemprop="name" class="title"> 
259											<#if artworkTitle??> 
260												<#if artworkTitle?length < 50> 
261													${artworkTitle} 
262												<#else> 
263													${artworkTitle?substring(0, 50)} ... 
264												</#if> 
265											</#if> 
266											<span class="date"> 
267												<#if _artworkUtil.getArtworkDate(artwork)?? && _artworkUtil.getArtworkDate(artwork)?has_content> 
268													<span itemprop="dateCreated"> / ${_artworkUtil.getArtworkDate(artwork)}</span> 
269												</#if> 
270											</span> 
271										</p> 
272								</li> 
273							</#if> 
274                        </#list> 
275                    </ul> 
276                </div> 
277                <a class="buttons next" href="javascript:void(0)">right</a> 
278            </div> 
279        </#if> 
280    </div> 
281</div>