Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> _dlFileEntryUtil.getDLFileEntryByJSONDataAndGroupId(doc.data, groupId) [in template "80017871481819#33260#349920" at line 132, column 86]
----
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 fileEntry = _dlFileEntryUtil... [in template "80017871481819#33260#349920" at line 132, column 65]
----
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>