S'ha produït un error mentre es processava la plantilla.	
	
		
				
	
			
		The following has evaluated to null or missing:
==> request.getParameter("idBusLine")  [in template "44061202331357#6471594#39064" at line 10, column 38]
----
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 idBusLine = request.getParame...  [in template "44061202331357#6471594#39064" at line 10, column 17]
----
	1<#assign request = renderRequest.getOriginalHttpServletRequest() /> 
				2 
				3<div class="container single-lines"> 
				4    <div class="row"> 
				5 
				6        <div class="col-md-12 col-lg-7"> 
				7            <div class="container info-line-detail"> 
				8                <div class="map-button hidden" id="mapButtonCopy"> 
				9                <#if lineName.getSiblings()?has_content> 
				10                <#assign idBusLine = request.getParameter("idBusLine") /> 
				11 
				12                	<#list lineName.getSiblings() as cur_lineName> 
				13                	    <#if cur_lineName.getData() == idBusLine > 
				14                    	    <a target="_blank" href="${cur_lineName.pdf.getData()}"  
				15                    	    class="btn btn-outline-dark btn-download btn-lg"> 
				16                    	    Descargar PDF 
				17                            </a> 
				18                        </#if> 
				19                	</#list> 
				20                </#if> 
				21 
				22                </div> 
				23            </div> 
				24        </div> 
				25    </div> 
				26</div> 
				27 
				28<script> 
				29 
				30Liferay.on('allPortletsReady',  function (){ 
				31    if( $(".col-mapa").length >0 ){  
				32        $("#mapButtonCopy").appendTo(".col-mapa"); 
				33    } 
				34 
				35}); 
				36 
				37 
				38</script> 
		
                            
                             parades
                            
                        
	
		S'ha produït un error mentre es processava la plantilla.	
	
		
				
	
			
		The following has evaluated to null or missing:
==> request.getParameter("idBusLine")  [in template "44061202331357#6471594#5351416" at line 10, column 22]
----
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 idBusLine = request.getParame...  [in template "44061202331357#6471594#5351416" at line 10, column 1]
----
	1<#-- 
				2Web content templates are used to lay out the fields defined in a web 
				3content structure. 
				4 
				5Please use the left panel to quickly add commonly used variables. 
				6Autocomplete is también available and can be invoked by typing "${". 
				7--> 
				8 
				9<#assign request = renderRequest.getOriginalHttpServletRequest() /> 
				10<#assign idBusLine = request.getParameter("idBusLine") /> 
				11 
				12<#-- DEBUG temporal --> 
				13<p style="display:none;">Debug idBusLine: [${idBusLine}]</p> 
				14<div style="height:20px"> </div> 
				15<#if HTMLisfi.getSiblings()?has_content> 
				16    <#list HTMLisfi.getSiblings() as cur_HTMLisfi> 
				17        <#if cur_HTMLisfi.Linea.getData()?trim == idBusLine?trim> 
				18            <div id="anotaciones"> 
				19                <div class="container"> 
				20                    <div class="row"> 
				21                        <div class="col-md-12"> 
				22                            <i class="fa fa-info-circle"></i> 
				23                            <div class="cuerpoaviso">${cur_HTMLisfi.getData()}</div> 
				24                        </div> 
				25                    </div> 
				26                </div> 
				27            </div> 
				28            <#break>  <#-- 👈 Esto evita que siga procesando más bloques --> 
				29        </#if> 
				30    </#list> 
				31</#if> 
				32<#-- 
				33<#if HTMLisfi.getSiblings()?has_content> 
				34    <#list HTMLisfi.getSiblings() as cur_HTMLisfi> 
				35        <#assign dataLinea = cur_HTMLisfi.Linea.getData()?trim /> 
				36        <p style="color:gray;"> 
				37            Bloque con línea: [${dataLinea}] 
				38            <#if dataLinea == idBusLine?trim> 
				39                ✅ Coincide 
				40            <#else> 
				41                ❌ No coincide 
				42            </#if> 
				43        </p> 
				44    </#list> 
				45</#if> 
				46--> 
				47 
				48<script> 
				49Liferay.on('allPortletsReady', function () { 
				50    const anotaciones = document.querySelector('#anotaciones'); 
				51 
				52    if (!anotaciones) return; 
				53 
				54    anotaciones.style.display = 'none'; // Ocultar inicialmente 
				55 
				56    const insertAnotaciones = () => { 
				57        const targetDiv = document.querySelector('.title-horarios.pb-2 > div'); 
				58        if (targetDiv && !document.querySelector('.title-horarios.pb-2 > #anotaciones')) { 
				59            targetDiv.insertAdjacentElement('afterend', anotaciones); 
				60            anotaciones.style.display = 'block'; 
				61            return true; 
				62        } 
				63        return false; 
				64    }; 
				65 
				66    // Intentar insertar si ya está en el DOM 
				67    if (insertAnotaciones()) return; 
				68 
				69    // Observar por si aparece más tarde 
				70    const observer = new MutationObserver(() => { 
				71        if (insertAnotaciones()) { 
				72            observer.disconnect(); 
				73        } 
				74    }); 
				75 
				76    observer.observe(document.body, { childList: true, subtree: true }); 
				77}); 
				78</script> 
				79 
				80<style> 
				81#anotaciones { 
				82    display: none; 
				83} 
				84#anotaciones .col-md-12 { 
				85    display: flex; 
				86    align-items: center; /* Alineación vertical */ 
				87    gap: 0.5em; /* Espacio entre el icono y el texto */ 
				88		margin-top: 0.5em; 
				89		padding-left: 0; 
				90} 
				91 
				92#anotaciones i { 
				93    font-size: 1.2em; 
				94    color: #db291c; 
				95    margin: 0 0 .5rem 0; 
				96} 
				97 
				98#anotaciones .cuerpoaviso { 
				99    flex: 1; /* Ocupar el resto del espacio */ 
				100} 
				101/* 
				102#anotaciones .container {  
				103    margin-top: 40px;  
				104    margin-bottom: 10px;  
				105    border: 1px solid #db291C; 
				106    border-bottom: 3px solid #db291c; 
				107    padding: 1em 1em 0 1em; 
				108    background-color: #fff8f8;  
				109} 
				110#anotaciones i { 
				111    color: #db291c; 
				112    font-size: 2em; 
				113    margin-right: 0.3em; 
				114    display: inline-block; 
				115    vertical-align: top; 
				116} 
				117#anotaciones .cuerpoaviso { 
				118    display: inline-block; 
				119} 
				120*/ 
				121</style>