Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService")  [in template "1369164#1369202#1381193" at line 22, column 47]

----
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 assetCategoryPropertyLocalSer...  [in template "1369164#1369202#1381193" at line 22, column 1]
----
1<#-- SERVICIOS --> 
2<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4 
5<#assign urlEncoder = staticUtil["java.net.URLEncoder"]> 
6 
7<#-- SERVICES --> 
8<#assign 
9    templateFunctionsHelperLocalService = serviceLocator.findService('net.bizkaia.iybiscuc.service.TemplateFunctionsHelperLocalService') 
10    textFormatter = staticUtil['com.liferay.portal.kernel.util.TextFormatter'] 
11/> 
12 
13<!-- SERVICES --> 
14<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
15<#assign  
16    jsonFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]  
17    dlAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
18    dlUtil = staticUtil["com.liferay.document.library.kernel.util.DLUtil"] 
19/>  
20<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
21 
22<#assign assetCategoryPropertyLocalService  = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryPropertyLocalService")> 
23 
24<#-- servicios related asset subhome --> 
25<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
26<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
27<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")> 
28 
29 
30<#-- VARIABLES --> 
31<#assign articleId = .vars['reserved-article-id'].getData() > 
32<#if request?has_content> 
33	<#assign portletNamespace =  themeDisplay.getPortletDisplay().getId() + '_' /> 
34	<#--  <#assign completeCurrentUrl = urlEncoder.encode((request["attributes"]["CURRENT_COMPLETE_URL"])?string?split("?")[0]?string, "UTF-8")>  --> 
35    	<#assign completeCurrentUrl = urlEncoder.encode((themeDisplay.getPortalURL()+themeDisplay.getURLCurrent())?string?split("?")[0]?string, "UTF-8")> 
36<#else> 
37    <#assign portletNamespace = articleId + '_'> 
38    <#assign completeCurrentUrl = themeDisplay.getPortalURL()> 
39</#if> 
40 
41<#assign articleTitle = .vars['reserved-article-title'].getData() > 
42 
43<#assign encodedTitle = urlEncoder.encode(articleTitle, "UTF-8")> 
44 
45<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
46<#assign layout = themeDisplay.getLayout() /> 
47 
48<#assign vocabularyCategories = themeDisplay.getThemeSetting("vocabulary-id") > 
49 
50<#-- obtener subhome enlazada como related assets --> 
51<#assign journalArticleClassName = "com.liferay.journal.model.JournalArticle"> 
52 
53<#assign introSubhomeStructureId = themeDisplay.getThemeSetting("structure-introsubhome-id") > 
54 
55<#assign reportajeArticle = journalArticleLocalService.getArticle(groupId, articleId) > 
56<#assign reportajeEntry = assetEntryLocalService.getEntry(journalArticleClassName, reportajeArticle.getResourcePrimKey()) > 
57 
58<#-- recoger título, entradilla y color del contenido subhome relacionado--> 
59<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(introSubhomeStructureId), reportajeEntry.getEntryId(), "publishDate", "ASC")> 
60<#assign subhomeEntries = assetEntryLocalService.getEntries(assetEntryQuery)> 
61 
62<#assign colorSubhome ="#00e78d"> 
63<#assign tituloSubhome = ""> 
64<#assign entradillaSubhome =""> 
65 
66<#if 1 == subhomeEntries?size> 
67	<#list subhomeEntries as e> 
68		<#assign journalArticleResource = journalArticleResourceLocalService.fetchJournalArticleResource(getterUtil.getLong(e.getClassPK())) > 
69		<#assign renderer = e.getAssetRenderer()> 
70		<#assign subhomeArticle = renderer.getArticle() > 
71		<#assign document = saxReaderUtil.read(subhomeArticle.getContentByLocale(locale)) > 
72		<#assign rootElement = document.getRootElement() > 
73		<#assign tituloSubhome = saxReaderUtil.createXPath("dynamic-element[@name='titulo']/dynamic-content").selectSingleNode(rootElement).getStringValue() > 
74		<#assign entradillaSubhome = saxReaderUtil.createXPath("dynamic-element[@name='entradilla']/dynamic-content").selectSingleNode(rootElement).getStringValue()  > 
75		<#assign colorSubhome = saxReaderUtil.createXPath("dynamic-element[@name='color']/dynamic-content").selectSingleNode(rootElement).getStringValue() > 
76	</#list> 
77</#if> 
78 
79<#-- recoger eventos relacionados--> 
80<#assign eventStructureId = themeDisplay.getThemeSetting("structure-event-id") > 
81<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(eventStructureId), reportajeEntry.getEntryId(), "publishDate", "ASC")> 
82<#assign eventEntries = assetEntryLocalService.getEntries(assetEntryQuery)> 
83 
84<#-- recoger descuentos relacionados--> 
85<#assign descuentoStructureId = themeDisplay.getThemeSetting("structure-descuento-id") > 
86<#assign assetEntryQuery = getAssetEntryQuery(reportajeEntry.getClassNameId(), getterUtil.getLong(descuentoStructureId), reportajeEntry.getEntryId(), "publishDate", "ASC")> 
87<#assign descuentosEntries = assetEntryLocalService.getEntries(assetEntryQuery)> 
88 
89<div class="container-fluid bgcolor p-0" id="turi-contenedor-anclas">    	 
90	<div class="container p-0"> 
91			<div class="row"> 
92				<div class="col-md-10 col-md-offset-1 visible-md visible-lg"> 
93					<nav class="anclas"> 
94						<ul class="nav"> 
95							<#if !validator.equals("", textoPrincipalPrograma.getData())> 
96								<li><a href="#programa"><@liferay.language key="iytu.evento.programa" /></a></li> 
97							</#if> 
98							<#if imagenSlider.getSiblings()?has_content> 
99								<li><a href="#HugeSliderMultimedia"><@liferay.language key="multimedia" /></a></li> 
100							</#if>						 
101							<#if !validator.equals("", textoComoLlegar.getData())> 
102								<li><a href="#llegar"><@liferay.language key="iytu.reportaje.como-llegar" /></a></li> 
103							</#if>		 
104							<#if !validator.equals("", textoDondeComer.getData())> 
105								<li><a href="#comer"><@liferay.language key="iytu.reportaje.donde-comer" /></a></li> 
106							</#if>		 
107							<#if !validator.equals("", textoDondeDormir.getData())> 
108								<li><a href="#dormir"><@liferay.language key="iytu.reportaje.donde-alojarse" /></a></li> 
109							</#if>															 
110							<li><a href="#bloqueDescuentos"><@liferay.language key="downloads" /></a></li>						 
111						</ul> 
112					</nav> 
113				</div> 
114				<div class="col-xs-12 col-sm-12 hidden-md hidden-lg p-0"> 
115					<nav class="anclas"> 
116					<div class="bootstrap-select btn-group"> 
117						<button type="button" class="btn dropdown-toggle btn-default, btn-filtro" data-toggle="dropdown" aria-owns="tab_selector1" aria-expanded="false" id="dropdown_anclas"><@liferay.language key="iytu.reportaje.ir-a" /><span class="bs-caret"><span class="caret"></span></span> 
118                </button> 
119                <div class="dropdown-menu open"> 
120					<ul class="dropdown-menu inner nav" id="tab_selector1" aria-expanded="false"> 
121							<#if !validator.equals("", textoPrincipalPrograma.getData())> 
122								<li><a href="#programa"><@liferay.language key="iytu.evento.programa" /></a></li> 
123							</#if>		 
124							<#if imagenSlider.getSiblings()?has_content> 
125								<li><a href="#HugeSliderMultimedia"><@liferay.language key="multimedia" /></a></li> 
126							</#if>		 
127							<#if !validator.equals("", textoComoLlegar.getData())> 
128								<li><a href="#llegar"><@liferay.language key="iytu.reportaje.como-llegar" /></a></li> 
129							</#if> 
130							<#if !validator.equals("", textoDondeComer.getData())> 
131								<li><a href="#comer"><@liferay.language key="iytu.reportaje.donde-comer" /></a></li> 
132							</#if> 
133							<#if !validator.equals("", textoDondeDormir.getData())> 
134								<li><a href="#dormir"><@liferay.language key="iytu.reportaje.donde-alojarse" /></a></li> 
135							</#if>               
136            				<li><a href="#bloqueDescuentos"><@liferay.language key="downloads" /></a></li>			 
137			            </ul> 
138			        </div> 
139					</nav> 
140				</div> 
141			</div> 
142    </div>	 
143</div> 
144		 
145<div class="container-fluid reportaje evento"> 
146	<div class="container"> 
147		<div class="row">		 
148		 
149			<div class="col-sm-10 col-sm-offset-1 col-md-7 col-md-offset-1"> 
150				<div class="row"> 
151					<div class="col-md-12 reportaje_principal"> 
152						<hr class="cuadrado bgcolor" /> 
153						<div class="textorepo" id="programa"> 
154							<#if !validator.equals("", textoDestacadoPrograma.getData())> 
155								<p class="entradilla">${textoDestacadoPrograma.getData()}</p> 
156							</#if> 
157							<#if !validator.equals("", textoPrincipalPrograma.getData())>	 
158								${textoPrincipalPrograma.getData()} 
159							</#if> 
160							<#if !validator.equals("",imagenPrograma.getData()) > 
161								<p><img src="${imagenPrograma.getData()}" alt=""></p> 
162							</#if> 
163							<#if !validator.equals("", textoBajoImagen.getData())>	 
164								${textoBajoImagen.getData()} 
165							</#if> 
166						</div>						  
167					</div> 
168				</div>	  
169	            <#if imagenSlider.getSiblings()?has_content && !stringUtil.equalsIgnoreCase('', imagenSlider.getSiblings()?first.getData())> 
170					<div class="reportaje_slider"> 
171						<section id="HugeSliderMultimedia" class="huge-slider"> 
172							<div class="container_fluid"> 
173							    <div class="row"> 
174							        <div class="col-xs-12 col-sm-12 col-md-12 slider-container"> 
175							            <ul class="slider"> 
176							            	<#list imagenSlider.getSiblings() as cur_img> 
177								                <li> 
178								                    <div class="imagen_fondo_slider" style="background-image:url('${cur_img.getData()}');"></div> 
179								                </li> 
180								            </#list>			                 
181							            </ul> 
182							        </div> 
183							    </div> 
184							</div> 
185						</section>  
186						<script> 
187						 	$("#HugeSliderMultimedia .slider").lightSlider({ 
188					            item: 1, 
189					            loop: false, 
190					            keyPress: true, 
191					            controls:true, 
192					            pager: false, 
193					            enableDrag: true, 
194					            paginationLabel: ' ', 
195					            prevHtml: '<span class="sr-only"><@liferay.language key="previous" /></span>', 
196                                nextHtml: '<span class="sr-only"><@liferay.language key="next" /></span>',  
197					            responsive : [ 
198
199					                breakpoint:993, 
200					                settings: { 
201					                    pager: true 
202
203
204					             
205
206				        }); 
207						</script> 
208					</div> 
209            	</#if> 
210				<div class="row"> 
211					<div class="col-md-12 reportaje_principal reportaje-separador"> 
212						<#if !validator.equals("", textoComoLlegar.getData())>                        
213				            <div class="textorepo" id="llegar"> 
214				                <h2><@liferay.language key="iytu.reportaje.como-llegar" /></h2> 
215				                ${textoComoLlegar.getData()} 
216 
217				                <#if !validator.equals("",imagenComoLlegar.getData()) > 
218									<p><img src="${imagenComoLlegar.getData()}" alt=""></p> 
219								</#if> 
220				            </div> 
221				        </#if> 
222            <#if !stringUtil.equalsIgnoreCase("", textoDondeComer.getData())> 
223	        	<#if !stringUtil.equalsIgnoreCase("", imagenFondoDondeComer.getData())> 
224				            <div class="textorepo-auxiliar" id="comer"> 
225				            	<div class="textorepo-auxiliar-imagen"> 
226				            		<p><img src="${imagenFondoDondeComer.getData()}" alt=""> 
227				            		<span class="categoria"><@liferay.language key="iytu.reportaje.gastronomia" /></span></p> 
228				            		<h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-comer" /></h2> 
229				            	</div> 
230				            	<div class="textorepo-auxiliar-texto"> 
231				            	${textoDondeComer.getData()} 
232				            	</div> 
233				            </div> 
234	            <#else> 
235		            <div class="textorepo-auxiliar" id="comer"> 
236				            	<div class="textorepo-auxiliar-imagen sin-img"> 
237				            		<p><span class="categoria"><@liferay.language key="iytu.reportaje.gastronomia" /></span></p> 
238							<h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-comer" /></h2> 
239				            	</div> 
240				            	<div class="textorepo-auxiliar-texto"> 
241				            	${textoDondeComer.getData()} 
242				            	</div> 
243				            </div>    
244				        </#if> 
245	        </#if> 
246			<#if !stringUtil.equalsIgnoreCase("", textoDondeDormir.getData())> 
247	        	<#if !stringUtil.equalsIgnoreCase("", imagenFondoDondeDormir.getData())> 
248				            <div class="textorepo-auxiliar" id="dormir"> 
249				            	<div class="textorepo-auxiliar-imagen"> 
250				            		<p><img src="${imagenFondoDondeDormir.getData()}" alt=""> 
251				            		<span class="categoria"><@liferay.language key="iytu.reportaje.alojamiento" /></span></p> 
252				            		<h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-dormir" /></h2> 
253				            	</div> 
254				            	<div class="textorepo-auxiliar-texto"> 
255				            	${textoDondeDormir.getData()} 
256				            	</div> 
257				            </div> 
258                <#else> 
259		            <div class="textorepo-auxiliar" id="dormir"> 
260				            	<div class="textorepo-auxiliar-imagen sin-img"> 
261				            		<p><span class="categoria"><@liferay.language key="iytu.reportaje.alojamiento" /></span></p> 
262							<h2 class="titulo"><@liferay.language key="iytu.reportaje.donde-dormir" /></h2> 
263				            	</div> 
264				            	<div class="textorepo-auxiliar-texto"> 
265				            	${textoDondeDormir.getData()} 
266				            	</div> 
267				            </div> 
268				 </#if> 
269	        </#if>            
270					</div>			 
271				</div>			 
272			</div> 
273 
274			<div class="col-sm-12 col-md-3 col-md-offset-1 reportaje_secundario"> 
275				<div class="reportaje_sidebar"> 
276					<ul class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
277					    <#if !validator.equals("", textoComprarEntradas.getData())> 
278						    <li class="panel panel-default"> 
279						        <div class="panel-heading entradas" role="tab" id="heading1"> 
280						            <h2 class="panel-title"> 
281										<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse1" aria-expanded="false" aria-controls="collapse1" class="collapsed bgcolor entradas"> 
282											<@liferay.language key="iytu.evento.comprar-entradas" /> 
283											<span class="iytuicon icon-entradas"></span> 
284										</a> 
285									</h2> 
286						        </div> 
287						        <div id="collapse1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading1"> 
288						            <div class="panel-body"> 
289						                ${appendTag(textoComprarEntradas.getData())}			                 
290						            </div> 
291						        </div> 
292						    </li> 
293						</#if> 
294						<li class="panel panel-default"> 
295					        <div class="panel-heading compartir" role="tab" id="heading2"> 
296					            <h2 class="panel-title"> 
297								<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse2" aria-expanded="false" aria-controls="collapse2"  class="collapsed compartir">										        
298									<@liferay.language key="iytu.reportaje.compartir" />  
299									<span class="iytuicon icon-share"></span>			    
300								</a> 
301								 </h2> 
302					        </div> 
303					        <div id="collapse2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading2"> 
304					            <div class="panel-body blanco"> 
305					                <ul class="redes-sociales">					   
306				  						<li class="mt-3"> <a href="https://www.facebook.com/sharer/sharer.php?u=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />" class="enlace-redsocial"> <span class="iytuicon circulo icon-facebook" aria-hidden="true"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.facebook" /></span> </a> </li> 
307				  						<li class="mt-3"> <a href="https://twitter.com/intent/tweet?url=${completeCurrentUrl}&text=${encodedTitle}" target="_blank" title="<@liferay.language key='opens-new-window' />" data-size="large" class="enlace-redsocial"><span class="iytuicon circulo icon-twitter" aria-hidden="true"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.twitter" /></span> </a> </li> 
308				  						<li class="mt-3"> <a href="whatsapp://send?text=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />"  class="enlace-redsocial"> <span class="iytuicon icon-whatsaap"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.whatsapp" /></span> </a> </li>			   
309				  						<li class="mt-3"> <a href="mailto:?Subject=${articleTitle}&Body=${articleTitle} ${completeCurrentUrl}" class="enlace-redsocial"> <span class="iytuicon circulo icon-mail"></span> <span class="sr-only"><@liferay.language key="iytu.reportaje.email" /></span> </a> </li> 
310									</ul> 
311					            </div> 
312					            <script> 
313                                    $( document ).ready(function() { 
314                                        if(getCookieValue("pc_publicidad_visitbiscay") === "true" || getCookieValue("pc_publicidad_bizkaia") === "true"){ 
315                                        	$( ".redes-sociales a.enlace-redsocial" ).on( "click", function() { 
316                                        		fbq('track', 'SubmitApplication', {  
317                                        			content_name: 'clicencompartir' 
318                                        		}) 
319                                        	}); 
320
321                                    }); 
322                                </script> 
323					        </div> 
324					    </li> 
325					    <#if !validator.equals("",URLVerMapa.getData())> 
326						   	<li class="panel panel-default"> 
327						        <div class="panel-heading" role="tab" id="heading3"> 
328						            <p class="panel-title"> 
329							        	<a href="${URLVerMapa.getData()}" target="_blank" title="<@liferay.language key="opens-new-window" />">									       
330							            	<@liferay.language key="iytu.evento.ver-mapa" /> <span class="iytuicon icon-ver_mapa"></span> 
331							        	</a> 
332							      	</p> 
333						        </div>					         
334						    </li> 
335					    </#if> 
336					    <#if !validator.equals("",URLWeb.getData())> 
337						   	<li class="panel panel-default"> 
338						        <div class="panel-heading" role="tab" id="heading4"> 
339						            <p class="panel-title"> 
340							        	<a href="${URLWeb.getData()}" target="_blank" title="<@liferay.language key="opens-new-window" />">									       
341							            	<@liferay.language key="iytu.evento.ver-pagina-web" /> <span class="iytuicon icon-ver_web"></span> 
342							        	</a> 
343							      	</p> 
344						        </div>					         
345						    </li> 
346					    </#if> 
347						<#if !validator.equals("",textoInformacionPractica.getData())> 
348							<li class="panel panel-default"> 
349								<div class="panel-heading" role="tab" id="heading5"> 
350									<h2 class="panel-title"> 
351										<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse5" aria-expanded="true" aria-controls="collapse5"> 
352											<@liferay.language key="iytu.reportaje.info-practica" />  
353										<span class="icon-flecha_acordeon"></span></a> 
354									</h2> 
355								</div> 
356								<div id="collapse5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading5"> 
357									<div class="panel-body"> 
358										${appendTag(textoInformacionPractica.getData())} 
359									</div> 
360								</div> 
361							</li> 
362						</#if> 
363					</ul> 
364				</div> 
365			</div> 
366		</div> 
367	</div> 
368	<div id="bloqueDescuentos"> 
369<#-- DESCUENTOS --> 
370	<#if 0 lt descuentosEntries?size>	 
371		<#list descuentosEntries as curEntry>			 
372			<#assign renderer = curEntry.getAssetRenderer() > 
373	    	<#assign className = renderer.getClassName() > 
374			<#assign journalArticle = renderer.getArticle() > 
375			<#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
376	        <#assign rootElement = document.getRootElement() > 
377 
378		<#assign object1 = document.valueOf("//dynamic-element[@name='Documento_1']/dynamic-element[@name='documento1']/dynamic-content/text()") > 
379		<#if !stringUtil.equalsIgnoreCase("", object1) > 
380			<#assign  
381				fileEntryJson = jsonFactoryUtil.createJSONObject(object1) 
382				fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryJson.getString("uuid"),fileEntryJson.getString("groupId")?number)  
383				documento1 = dlUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(true), themeDisplay, "")  
384			/> 
385		</#if> 
386		<#assign object2 = document.valueOf("//dynamic-element[@name='Documento_2']/dynamic-element[@name='documento2']/dynamic-content/text()") > 
387		<#if !stringUtil.equalsIgnoreCase("", object2) > 
388			<#assign  
389				fileEntryJson = jsonFactoryUtil.createJSONObject(object2) 
390				fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryJson.getString("uuid"),fileEntryJson.getString("groupId")?number)  
391				documento2 = dlUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(true), themeDisplay, "")  
392			/> 
393		</#if> 
394		<#assign object3 = document.valueOf("//dynamic-element[@name='Documento_3']/dynamic-element[@name='documento3']/dynamic-content/text()") > 
395		<#if !stringUtil.equalsIgnoreCase("", object3) > 
396			<#assign  
397				fileEntryJson = jsonFactoryUtil.createJSONObject(object3) 
398				fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryJson.getString("uuid"),fileEntryJson.getString("groupId")?number)  
399				documento3 = dlUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(true), themeDisplay, "")  
400			/> 
401		</#if> 
402		<#assign object4 = document.valueOf("//dynamic-element[@name='Documento_4']/dynamic-element[@name='documento4']/dynamic-content/text()") > 
403		<#if !stringUtil.equalsIgnoreCase("", object4) > 
404			<#assign  
405				fileEntryJson = jsonFactoryUtil.createJSONObject(object4) 
406				fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryJson.getString("uuid"),fileEntryJson.getString("groupId")?number)  
407				documento4 = dlUtil.getDownloadURL(fileEntry, fileEntry.getLatestFileVersion(true), themeDisplay, "")  
408			/> 
409		</#if> 
410 
411	        <#assign titulo1 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_1']/dynamic-element[@name='titulo1']").selectSingleNode(rootElement).getStringValue()/> 
412	        <#assign titulo2 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_2']/dynamic-element[@name='titulo2']").selectSingleNode(rootElement).getStringValue()/> 
413	        <#assign titulo3 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_3']/dynamic-element[@name='titulo3']").selectSingleNode(rootElement).getStringValue()/> 
414	        <#assign titulo4 = saxReaderUtil.createXPath("dynamic-element[@name='Documento_4']/dynamic-element[@name='titulo4']").selectSingleNode(rootElement).getStringValue()/> 
415	   <#assign groupIdAsLong  =  getterUtil.getLong(groupId)/> 
416				<div class="container-fluid descuentos">	 
417					<div class="container p-0"> 
418						<div class="row mr-0"> 
419							<div class="col-xs-12 col-xs-offset-0 col-sm-6 col-sm-offset-1 col-md-5 col-md-offset-1 p-0 contenido">											 
420								<p class="categoria"> 
421									<@liferay.language key="iytu.descuentos.descuentos" /> 
422								</p> 
423								<h3><@liferay.language key="iytu.descuentos.dtosBBCard" /></h3>						 
424								<a href="/bilbao-bizkaia-card" class="boton blanco"><@liferay.language key="iytu.descuentos.comprar" /></a>					 
425							</div> 
426							 
427							<div class="col-xs-12 col-md-6 descargas"> 
428								<ul class="row"> 
429								    <!-- ${documento1}---${groupIdAsLong}--> 
430									<#if documento1?? && documento1?length != 0> 
431    									<#--<#assign 
432                                    	    fileEntry = templateFunctionsHelperLocalService.getFileEntry(documento1) 
433                                    	    size = textFormatter.formatStorageSize(fileEntry.size, locale) 
434                                    	/>--> 
435	   									<#assign  
436	   									    fileEntry = getFileEntry(documento1,groupIdAsLong)  
437	   									    size = textFormatter.formatStorageSize(fileEntry.size, locale)  
438	   									/> 
439										<li class="col-xxs-6 col-xs-6"> 
440											<a href="${documento1}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
441												<h4 class="colour">${titulo1}</h4> 
442												<p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p> 
443											</a> 
444										</li>					 
445									</#if> 
446									<#if documento2?? && documento2?length != 0> 
447    									<#--<#assign 
448                                    	    fileEntry = templateFunctionsHelperLocalService.getFileEntry(documento2) 
449                                    	    size = textFormatter.formatStorageSize(fileEntry.size, locale) 
450                                    	/>--> 
451	   									<#assign  
452	   									    fileEntry = getFileEntry(documento2,groupIdAsLong)  
453	   									    size = textFormatter.formatStorageSize(fileEntry.size, locale)  
454	   									/> 
455										<li class="col-xxs-6 col-xs-6"> 
456											<a href="${documento2}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
457												<h4 class="colour">${titulo2}</h4> 
458												<p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download"/></span> ${size}</p> 
459											</a> 
460										</li> 
461									</#if> 
462									<#if documento3?? && documento3?length != 0> 
463										<#--<#assign 
464                                    	    fileEntry = templateFunctionsHelperLocalService.getFileEntry(documento3) 
465                                    	    size = textFormatter.formatStorageSize(fileEntry.size, locale) 
466                                    	/>--> 
467	   									<#assign  
468	   									    fileEntry = getFileEntry(documento3,groupIdAsLong)  
469	   									    size = textFormatter.formatStorageSize(fileEntry.size, locale)  
470	   									/> 
471										<li class="col-xxs-6 col-xs-6"> 
472											<a href="${documento3}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
473												<h4 class="colour">${titulo3}</h4> 
474												<p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p> 
475											</a> 
476										</li> 
477									</#if> 
478									<#if documento4?? && documento4?length != 0> 
479										<#--<#assign 
480                                    	    fileEntry = templateFunctionsHelperLocalService.getFileEntry(documento4) 
481                                    	    size = textFormatter.formatStorageSize(fileEntry.size, locale) 
482                                    	/>--> 
483	   									<#assign  
484	   									    fileEntry = getFileEntry(documento4,groupIdAsLong)  
485	   									    size = textFormatter.formatStorageSize(fileEntry.size, locale)  
486	   									/> 
487										<li class="col-xxs-6 col-xs-6"> 
488											<a href="${documento4}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
489												<h4 class="colour">${titulo4}</h4> 
490												<p class="archivoDescarga"><span class="iytuicon icon-descargar"></span> <span><@liferay.language key="download" /></span> ${size}</p> 
491											</a> 
492										</li> 
493									</#if>		 
494								</ul> 
495							</div> 
496						</div> 
497 
498					</div> 
499				</div>	 
500 
501		</#list> 
502	</#if> 
503	</div> 
504	<span id="lugaresInteres"></span> 
505	<script> 
506	/* $( document ).ready(function() { 
507 
508	    $('#turi-contenedor-anclas a').click(function(e) { 
509	        e.preventDefault(); 
510	        var $target = $(this.hash); 
511	        var destino = this.hash; 
512	        $target = $target.length && $target || $(this.hash); 
513	        if ($target.length) { 
514	            var targetOffset = $target.offset().top; 
515	            var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height(); 
516	            targetOffset = targetOffset - topSpace; 
517	            $('html,body').animate({scrollTop: targetOffset}, 1500); 
518
519 
520	    }); 
521	     
522	    $('body').scrollspy({  		   
523	    	target: '.anclas', 
524	        offset: function() { 
525	        	var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height() + 10; 
526	        	console.log(topSpace);  
527	        	return topSpace; 
528	        }() 
529	    }) 
530	     
531	}); */ 
532	</script> 
533	<script> 
534$( document ).ready(function() { 
535 
536 
537    /** menu responsive convertier a ul **/ 
538	/* 
539	$('#turi-contenedor-anclas .selectpicker').selectpicker({ 
540      maxOptions: 1 
541    }); 
542     
543    $('.anclas .selectpicker').on('change', function () { 
544        //window.location = $(this).val(); 
545        var $target = $(this).val(); 
546        console.log($target + 't'); 
547        var destino = $(this).val(); 
548        console.log(destino + 't'); 
549        $target = $target.length && $target || $(this).val(); 
550        if ($target.length) { 
551            var targetOffset = $target.offset().top; 
552            var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height(); 
553            targetOffset = targetOffset - topSpace; 
554            $('html,body').animate({scrollTop: targetOffset}, 1500); 
555
556	});*/ 
557     
558    /*** animación anclas en menú con fondo color ***/ 
559      
560 
561    $('#turi-contenedor-anclas .visible-md a').click(function(e) { 
562        e.preventDefault(); 
563        var $target = $(this.hash); 
564        var destino = this.hash; 
565        $target = $target.length && $target || $(this.hash); 
566        if ($target.length) { 
567            var targetOffset = $target.offset().top; 
568            var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height(); 
569            targetOffset = targetOffset - topSpace; 
570            $('html,body').animate({scrollTop: targetOffset}, 1500); 
571
572 
573    }); 
574     
575    $('#turi-contenedor-anclas .hidden-md a').click(function(e) { 
576        e.preventDefault(); 
577        var $target = $(this.hash); 
578        var destino = this.hash; 
579        $target = $target.length && $target || $(this.hash); 
580        if ($target.length) { 
581            var targetOffset = $target.offset().top; 
582            var topSpace = $('#heading').height() + $('#turi-contenedor-anclas button').height() + 40; 
583            targetOffset = targetOffset - topSpace; 
584            $('html,body').animate({scrollTop: targetOffset}, 1500); 
585
586 
587    }); 
588 
589    /*** scroll spy para el menú ***/ 
590    $('body').scrollspy({          
591        target: '.anclas', 
592        offset: function() { 
593            var topSpace = $('#heading').height() + $('#turi-contenedor-anclas').height() + 20; 
594            return topSpace; 
595        }() 
596    }) 
597 
598     /****** scroll to fixed de menú de anclas *****/ 
599    if ($(window).width() > 992) { 
600 
601        $('#turi-contenedor-anclas').scrollToFixed({ 
602            marginTop: function() { 
603            var marginTop = $('#heading').height(); 
604             
605             return marginTop; 
606            }, 
607            limit: function() { 
608            var bloque = $('#bloqueDescuentos').offset().top; 
609            var menus = $('#turi-contenedor-anclas').outerHeight(); 
610            var limit =  bloque - menus; 
611            return limit; 
612            }, 
613            removeOffsets: true, 
614            preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
615            preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
616            }); 
617        $('.reportaje_sidebar').scrollToFixed({ 
618            marginTop: 180, 
619            limit: function() { 
620            var limit = $('#bloqueDescuentos').offset().top - $('.reportaje_sidebar').height() - 60; 
621            return limit; 
622            }, 
623            removeOffsets: true, 
624            preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
625            preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
626 
627            }); 
628         
629    }else{ 
630        $('#turi-contenedor-anclas').scrollToFixed({ 
631            marginTop: function() { 
632            var marginTop = $('#heading').height(); 
633             
634             return marginTop; 
635            }, 
636            limit: function() { 
637            var limit = $('#bloqueDescuentos').offset().top - $('#turi-contenedor-anclas').outerHeight(); 
638            console.log(limit); 
639            return limit; 
640            }, 
641            removeOffsets: true, 
642            preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
643            preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
644            }); 
645        $('.reportaje_sidebar').scrollToFixed({ 
646            marginTop: 192, 
647            limit: function() { 
648            var limit = $('#bloqueDescuentos').offset().top - $('.reportaje_sidebar').height() - 135; 
649            return limit; 
650            }, 
651            removeOffsets: true, 
652            preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
653            preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
654 
655        }); 
656
657     
658    $(window).bind('resize',function(){ 
659        clearTimeout(this.timeout); 
660        this.timeout = setTimeout(function () {    
661 
662        var windowWidth = $(window).width(); 
663        if(windowWidth > 992){ 
664			 
665 
666            $('#turi-contenedor-anclas').trigger('detach.ScrollToFixed'); 
667            $('#turi-contenedor-anclas').scrollToFixed({ 
668               marginTop: function() { 
669                var marginTop = $('#heading').height(); 
670                 
671                 return marginTop; 
672                }, 
673                limit: function() { 
674                var limit = $('#bloqueDescuentos').offset().top - $('#turi-contenedor-anclas').outerHeight(); 
675                console.log(limit); 
676                return limit; 
677                }, 
678                removeOffsets: true, 
679                preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
680                preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
681                }); 
682            $('.reportaje_sidebar').trigger('detach.ScrollToFixed'); 
683            $('.reportaje_sidebar').scrollToFixed({ 
684                marginTop: 180, 
685                limit: function() { 
686                var limit = $('#bloqueDescuentos').offset().top - $('.reportaje_sidebar').height() - 135; 
687                return limit; 
688                }, 
689                removeOffsets: true, 
690                preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
691                preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
692 
693            }); 
694 
695              
696 
697             
698 
699        }else{ 
700             
701 
702            $('#turi-contenedor-anclas').trigger('detach.ScrollToFixed'); 
703            $('#turi-contenedor-anclas').scrollToFixed({ 
704                marginTop: function() { 
705                var marginTop = $('#heading').height(); 
706                 
707                 return marginTop; 
708                }, 
709                limit: function() { 
710                var limit = $('#bloqueDescuentos').offset().top - $('#turi-contenedor-anclas').outerHeight(); 
711                console.log(limit); 
712                return limit; 
713                }, 
714                removeOffsets: true, 
715                preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
716                preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
717            }); 
718            $('.reportaje_sidebar').trigger('detach.ScrollToFixed'); 
719            $('.reportaje_sidebar').scrollToFixed({ 
720                marginTop: 192, 
721                limit: function() { 
722                var limit = $('#bloqueDescuentos').offset().top - $('.reportaje_sidebar').height() - 135; 
723                return limit; 
724                }, 
725                removeOffsets: true, 
726                preFixed: function() { $(this).removeClass('scroll-to-fixed-fixed-end'); }, 
727                preAbsolute: function() { $(this).addClass('scroll-to-fixed-fixed-end'); } 
728 
729            }); 
730 
731
732 
733 
734             
735        }, 0); 
736 
737    }); 
738 
739     
740}); 
741</script> 
742 
743<#-- FUNCIONES --> 
744 
745<#function getAssetEntryQuery classNameId structureId linkedAssetEntryId order orderType> 
746    <#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery") > 
747	 
748	<#assign classNameIds = [classNameId] > 
749	${assetEntryQuery.setClassNameIds(classNameIds)} 
750 
751	<#if !validator.equals("", structureId?string) > 
752		<#assign classTypeIds = [structureId] > 
753		${assetEntryQuery.setClassTypeIds(classTypeIds)} 
754		 
755		<#if !validator.equals("", order) > 
756			${assetEntryQuery.setOrderByCol1(order)} 
757			${assetEntryQuery.setOrderByType1(orderType)} 
758		</#if> 
759	</#if> 
760 
761	<#if !validator.equals("0", linkedAssetEntryId?string) > 
762		${assetEntryQuery.setLinkedAssetEntryId(linkedAssetEntryId)} 
763	</#if> 
764 
765	<#return assetEntryQuery > 
766</#function> 
767 
768<#function getFileEntry url groupId> 
769     
770	 
771	<#if url?? && url?length != 0> 
772    	<#assign uuid = url?split("/")?last?split("?")?first> 
773    </#if> 
774    <#assign uuidString = getterUtil.getString(uuid)/> 
775	<#return fileEntryService.fetchDLFileEntryByUuidAndGroupId(uuidString, groupId) /> 
776     
777</#function> 
778 
779<#function replaceSpecialCharacters url> 
780    <#return htmlUtil.escapeHREF(url?replace("|","%7C")) /> 
781</#function> 
782 
783<#function appendTag(element) > 
784  <#if !(element?starts_with("<p>")||element?starts_with("<ul>")||element?starts_with("<ol>")||element?starts_with("<table>"))> 
785    <#assign corrected = "<p>" + element > 
786  <#else> 
787    <#assign corrected = element > 
788  </#if>   
789 
790  <#if !(element?ends_with("</p>")||element?ends_with("</ul>")||element?ends_with("</ol>")||element?ends_with("</table>"))> 
791  <#assign corrected = corrected + "</p>">   
792  </#if>   
793   
794  <#return corrected> 
795</#function>