Errorea gertatu da txantiloia prozesatzerakoan.
The following has evaluated to null or missing:
==> request.getParameter(parametro)  [in template "842907#842945#9755374" at line 10, column 20]

----
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 numForo = request.getParamete...  [in template "842907#842945#9755374" at line 10, column 1]
----
1<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
2 
3<!-- VARIABLES --> 
4<#assign articleId = .vars['reserved-article-id'].data > 
5<#assign portletNamespace = themeDisplay.getPortletDisplay().getId() /> 
6 
7 
8<#assign renderURL = themeDisplay.getURLCurrent()> 
9<#assign parametro = "foro"> 
10<#assign numForo = request.getParameter(parametro)/> 
11<#assign numForo1 ="1"/> 
12<#assign numForo2 ="2"/> 
13<#assign numForo3 ="3"/> 
14 
15 
16 
17<#assign groupId = 880311> 
18 
19<#assign imagenCabecera_ForoI_articleId = "9776888"> 
20<#assign imagenCabecera_ForoII_articleId = "9777586"> 
21<#assign imagenCabecera_ForoIII_articleId = "9777704"> 
22 
23<#if numForo = numForo1> 
24	<#assign articleId = imagenCabecera_ForoI_articleId> 
25<#elseif numForo = numForo2> 
26	<#assign articleId = imagenCabecera_ForoII_articleId> 
27<#else> 
28	<#assign articleId = imagenCabecera_ForoIII_articleId> 
29</#if> 
30 
31<#if !validator.equalsSorted([""], [articleId])> 
32	<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
33	<#assign journalArticle = journalArticleLocalService.getArticle(groupId, articleId) > 
34 
35	<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
36	<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
37	 
38	 
39	<#assign video = rootElementcurrentArticle.valueOf("//dynamic-element[@name='video']/dynamic-content/text()") /> 
40	<#assign imageMobile = rootElementcurrentArticle.valueOf("//dynamic-element[@name='imageMobile']/dynamic-content/text()") /> 
41	<#assign imageTablet = rootElementcurrentArticle.valueOf("//dynamic-element[@name='imageTablet']/dynamic-content/text()") /> 
42	<#assign imageDesktop = rootElementcurrentArticle.valueOf("//dynamic-element[@name='imageDesktop']/dynamic-content/text()") /> 
43	<#assign alt = rootElementcurrentArticle.valueOf("//dynamic-element[@name='alt']/dynamic-content/text()") /> 
44 
45	<#if validator.equalsSorted([""], [video])> 
46		 <picture> 
47            <source srcset="${getFileEntryJson(imageMobile)}" media="(max-width: 480px)">  
48            <source srcset="${getFileEntryJson(imageTablet)}" media="(max-width: 992px)"> 
49            <source srcset="${getFileEntryJson(imageDesktop)}" media="(min-width: 993px)"> 
50            <img class="w-100" src="${getFileEntryJson(imageDesktop)}" alt="${htmlUtil.escape(alt)}"> 
51        </picture> 
52	<#else> 
53		<div class="hidden" id="${portletNamespace}video"> 
54			<video class="lg-video-object lg-html5" controls > 
55				<source src="${video}" type="video/mp4"> 
56				<@liferay.language key="dpt-imagen-cabecera.html5-not-supported" /> 
57			</video> 
58		</div> 
59		<#assign text = languageUtil.get(locale, "dpt-imagen-cabecera.html5-not-supported")> 
60		<#assign titleVideo = rootElementcurrentArticle.valueOf("//dynamic-element[@name='video']/dynamic-content") /> 
61		 
62		<#assign titleVideo = ""> 
63		 
64		 
65		<#if !validator.equalsSorted([""], [titleVideo])> 
66			<#assign titleVideo = "<p>${titleVideo}</p>" > 
67		<#else> 
68			<#assign titleVideo = ""> 
69		</#if> 
70		 
71		<#assign description = saxReaderUtil.createXPath("dynamic-element[@name='videoFieldSet']/dynamic-element[@name='videoFieldSetFieldSet']/dynamic-element[@name='description']/dynamic-content").selectSingleNode(rootElementcurrentArticle).getStringValue()  > 
72		<div id="${portletNamespace}lightGalleryHeader"> 
73		 
74			<div  
75				data-html="#${portletNamespace}video"  
76				data-sub-html="${titleVideo}${description}" 
77				tabindex="0" class="bipo-video-pointer"> 
78				  <a href="#" class="bipo_video" role="button"> 
79					  <span class="bipo_reproductor bipoicon icon-play2 icon-playvideo"> 
80						<span class="sr-only"><@liferay.language key="dpt-imagen-cabecera.play-video" /></span> 
81					  </span> 
82					  <picture> 
83							<source srcset="${getFileEntryJson(imageMobile)}" media="(max-width: 480px)">  
84							<source srcset="${getFileEntryJson(imageTablet)}" media="(max-width: 992px)"> 
85							<source srcset="${getFileEntryJson(imageDesktop)}" media="(min-width: 993px)"> 
86							<img class="w-100" src="${getFileEntryJson(imageDesktop)}" alt="${htmlUtil.escape(alt)}"> 
87					  </picture> 
88				  </a> 
89			</div> 
90		</div> 
91		<script type="text/javascript"> 
92			var $galeriaVideo = $(document).ready(function(){ 
93				$('#${portletNamespace}lightGalleryHeader').lightGallery({ 
94					thumbnail: false, 
95					counter:false, 
96					download: false 
97				}); 
98			}); 
99			$galeriaVideo.on('onAfterAppendSubHtml.lg', function(event){             
100				$('.lg-close span.sr-only').text('<@liferay.language key="close" />'); 
101				$('.lg-toogle-transcription').html('<@liferay.language key="lightgallery.transcription" />');                       
102				$('.lg-video-play span.sr-only').text('<@liferay.language key="play" />'); 
103				$('.lg-fullscreen span.sr-only').text('<@liferay.language key="full-screen" />'); 
104			});  
105		</script> 
106	</#if> 
107</#if> 
108<#-- 
109<#if validator.equalsSorted([""], [video.getData()])> 
110	    <picture> 
111            <source srcset="${imageMobile.getData()}" media="(max-width: 480px)">  
112            <source srcset="${imageTablet.getData()}" media="(max-width: 992px)"> 
113            <source srcset="${imageDesktop.getData()}" media="(min-width: 993px)"> 
114            <img class="w-100" src="${imageDesktop.getData()}" alt="${htmlUtil.escape(alt.getData())}"> 
115        </picture> 
116<#else> 
117	<div class="hidden" id="${portletNamespace}video"> 
118	    <video class="lg-video-object lg-html5" controls > 
119	        <source src="${video.getData()}" type="video/mp4"> 
120            <@liferay.language key="dpt-imagen-cabecera.html5-not-supported" /> 
121	    </video> 
122	</div> 
123	 
124	<#assign text = languageUtil.get(locale, "dpt-imagen-cabecera.html5-not-supported")> 
125	<#if video.getChild('title')??> 
126	    <#assign titleVideo = "<p>video.getChild('title').getData()</p>" > 
127	<#else> 
128	    <#assign titleVideo = ""> 
129	</#if> 
130	<div id="${portletNamespace}lightGalleryHeader"> 
131		<div  
132		    data-html="#${portletNamespace}video"  
133		    data-sub-html="${titleVideo}${video.getChild('description').getData()}" 
134		    tabindex="0" class="bipo-video-pointer"> 
135              <a href="#" class="bipo_video" role="button"> 
136                  <span class="bipo_reproductor bipoicon icon-play2"> 
137                    <span class="sr-only"><@liferay.language key="dpt-imagen-cabecera.play-video" /></span> 
138                  </span> 
139                  <picture> 
140                    <source srcset="${imageMobile.getData()}" media="(max-width: 480px)">  
141                    <source srcset="${imageTablet.getData()}" media="(max-width: 992px)"> 
142                    <source srcset="${imageDesktop.getData()}" media="(min-width: 993px)"> 
143                    <img class="w-100"  src="${imageDesktop.getData()}" alt="${htmlUtil.escape(alt.getData())}"> 
144                  </picture> 
145              </a> 
146		</div> 
147	</div> 
148	<script type="text/javascript"> 
149        var $galeriaVideo = $(document).ready(function(){ 
150    		$('#${portletNamespace}lightGalleryHeader').lightGallery({ 
151    		    thumbnail: false, 
152    		    counter:false, 
153    		    download: false 
154    		}); 
155    	}); 
156        $galeriaVideo.on('onAfterAppendSubHtml.lg', function(event){             
157            $('.lg-close span.sr-only').text('<@liferay.language key="close" />'); 
158            $('.lg-toogle-transcription').html('<@liferay.language key="lightgallery.transcription" />');                       
159            $('.lg-video-play span.sr-only').text('<@liferay.language key="play" />'); 
160            $('.lg-fullscreen span.sr-only').text('<@liferay.language key="full-screen" />'); 
161        });  
162    </script> 
163</#if> 
164 
165--> 
166<#--Obtener nombre fichero para src--> 
167<#function getFileNameEntryJson url > 
168   <#assign urljson = url?eval> 
169   <#assign group_id =urljson.groupId /> 
170   <#assign uuid = urljson.uuid /> 
171   <#assign fichero = urljson.title /> 
172   <#return fichero />  
173</#function> 
174 
175<#function getFileEntryJson url > 
176 
177	<#assign urljson = url?eval> 
178  <#assign group_id =urljson.groupId /> 
179  <#assign uuid = urljson.uuid /> 
180  <#assign fichero = urljson.title /> 
181 
182  <#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
183  <#assign DLFichero= fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id?eval) />  
184   <#return "/documents/"+group_id+"/"+DLFichero.getFolderId()+"/"+fichero />  
185 
186</#function> 
Errorea gertatu da txantiloia prozesatzerakoan.
The following has evaluated to null or missing:
==> request.getParameter(parametro)  [in template "842907#842945#26409272" at line 12, column 20]

----
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 numForo = request.getParamete...  [in template "842907#842945#26409272" at line 12, column 1]
----
1<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
2<#assign zero = getterUtil.getInteger("0")> 
3<#assign articleId = .vars['reserved-article-id'].data > 
4<!-- SERVICES --> 
5<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
6 
7<!-- VARIABLES --> 
8<#assign portletNamespace = themeDisplay.getPortletDisplay().getId() /> 
9<#assign renderURL = themeDisplay.getURLCurrent()> 
10 
11<#assign parametro = "foro"> 
12<#assign numForo = request.getParameter(parametro)/> 
13<#assign numForo1 ="1"/> 
14<#assign numForo2 ="2"/> 
15<#assign numForo3 ="3"/> 
16 
17<#assign groupId = 880311> 
18<#assign intro_ForoI_articleId = "26409282"> 
19<#assign intro_ForoII_articleId = "26409344"> 
20<#assign intro_ForoIII_articleId = "26409359"> 
21 
22<#if numForo = numForo1> 
23	<#assign articleId = intro_ForoI_articleId> 
24<#elseif numForo = numForo2> 
25	<#assign articleId = intro_ForoII_articleId> 
26<#else> 
27	<#assign articleId = intro_ForoIII_articleId> 
28</#if> 
29 
30<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
31<#assign journalArticle = journalArticleLocalService.getArticle(groupId,articleId) > 
32 
33<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
34<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
35<#assign titulo = rootElementcurrentArticle.valueOf("//dynamic-element[@name='titulo']/dynamic-content/text()") /> 
36<#assign subtitulo = rootElementcurrentArticle.valueOf("//dynamic-element[@name='subtitulo']/dynamic-content/text()") /> 
37<#assign content = rootElementcurrentArticle.valueOf("//dynamic-element[@name='contenido']/dynamic-content/text()") /> 
38 
39 
40<#--VER SI HAY CAJA ROJA--> 
41<#assign fichas = rootElementcurrentArticle.selectNodes("//dynamic-element[@name='fichasFieldSet']") />	 
42<#assign hayCaja = "0"> 
43<#if fichas?has_content> 
44	<#list fichas as curFicha> 
45		<#assign tituloFicha = saxReaderUtil.createXPath("dynamic-element[@name='fichasFieldSetFieldSet']/dynamic-element[@name='tituloFicha']/dynamic-content").selectSingleNode(curFicha).data > 
46		<#if (validator.isNotNull(tituloFicha) && !validator.equalsSorted([tituloFicha],[""] ))> 
47			<#assign hayCaja = "1"> 
48			<#break> 
49		</#if> 
50	</#list> 
51</#if> 
52 
53 
54<div class="mb-3"> 
55    <div class="container"> 
56		<span class="bipo_ancla_fixed" id="${portletNamespace}tituloCaja"></span> 
57            <div class="row"> 
58				<#if hayCaja ="1"> 
59					<div class="col-sm-12 col-md-8 pr-md-5"> 
60				<#else> 
61					<div class="col-sm-12 col-md-12 pr-md-5"> 
62				</#if>				 
63					    <#if (validator.isNotNull(titulo) && !validator.equalsSorted([titulo],[""] ))> 
64							<h2>${htmlUtil.unescape(titulo)}</h2> 
65						</#if> 
66					    <#if (validator.isNotNull(subtitulo) && !validator.equalsSorted([subtitulo],[""]))> 
67								<h3>${htmlUtil.unescape(subtitulo)}</h3> 
68						</#if>						 
69						<#if (validator.isNotNull(content) && !validator.equalsSorted([content],[""] ))> 
70							<div class="ejemplo_read_more" id="${portletNamespace}leerCapaIntroBizkaia" > 
71								${content} 
72							</div> 
73						</#if> 
74						 
75				</div> 
76			 
77 
78				<#if hayCaja ="1"> 
79					<div class=" col-sm-12 col-md-4 mt-md-5"> 
80						<ul class="row mt-3 flex-column"> 
81					 
82						<!--div class="uib_card_label fullhover"--> 
83						 
84							<#if fichas?has_content> 
85								<#assign cont = 0> 
86								<#list fichas as curFicha> 
87								 
88								<li class="col-12 mb-3"> 
89									<div class="card_border_primary"> 
90										<#assign tituloFicha = saxReaderUtil.createXPath("dynamic-element[@name='fichasFieldSetFieldSet']/dynamic-element[@name='tituloFicha']/dynamic-content").selectSingleNode(curFicha).data > 
91										<#assign subtituloFicha = saxReaderUtil.createXPath("dynamic-element[@name='fichasFieldSetFieldSet']/dynamic-element[@name='subtituloFicha']/dynamic-content").selectSingleNode(curFicha).data > 
92										<#assign contenidoFicha = saxReaderUtil.createXPath("dynamic-element[@name='fichasFieldSetFieldSet']/dynamic-element[@name='contenidoFicha']/dynamic-content").selectSingleNode(curFicha).data > 
93										 
94										<#if ((validator.isNotNull(tituloFicha) && !validator.equalsSorted([""], [tituloFicha])) || (validator.isNotNull(subtituloFicha) && !validator.equalsSorted([""], [subtituloFicha])))> 
95											<div class="card-body"> 
96												<#if (validator.isNotNull(tituloFicha) && !validator.equalsSorted([""], [tituloFicha]))> 
97													<h3 class="bottom-bordered" id="${articleId}_linkContext_${cont}"> 
98														${htmlUtil.unescape(tituloFicha)} 
99													</h3> 
100												</#if> 
101												<#if (validator.isNotNull(subtituloFicha) && !validator.equalsSorted([""], [subtituloFicha]))> 
102													<p id="subtitulo0">${htmlUtil.unescape(subtituloFicha)}</p> 
103												</#if> 
104												<#if (validator.isNotNull(contenidoFicha) && !validator.equalsSorted([""], [contenidoFicha]))> 
105													${htmlUtil.unescape(contenidoFicha)} 
106												</#if> 
107											</div> 
108										</#if> 
109 
110										 
111										<#--ENLACES--> 
112										<@pintarEnlaces curFicha/> 
113										<#--FIN ENLACES--> 
114									</div> 
115								</li>	 
116								<#assign cont = cont + 1> 
117								</#list><#--LISTA FICHAS--> 
118							</#if> 
119						<!--/div--> 
120					 
121						</ul> 
122					</div> 
123				</#if>	 
124				 
125    		</div> 
126    </div> 
127</div> 
128 
129 
130 
131<#macro pintarEnlaces curFicha> 
132	<#--ENLACE--> 
133	 
134	 
135		<div class="card-footer"> 
136		 
137			<ul> 
138			 
139			<#assign enlaceFicha = saxReaderUtil.createXPath("dynamic-element[@name='fichasFieldSetFieldSet']/dynamic-element[@name='enlaceFichaFieldSet']").selectNodes(curFicha) /> 
140 
141			 
142			 
143			<#list enlaceFicha as curEnlace> 
144				<#assign urlEnlace=""/> 
145				<#assign enlaceData = saxReaderUtil.createXPath("dynamic-element[@name='enlaceFicha']/dynamic-content").selectSingleNode(curEnlace).data > 
146				<#if validator.isNotNull(enlaceData) && !validator.equalsSorted([""],[enlaceData])> 
147					<#assign urlEnlace=enlaceData/> 
148					<#assign target_enlace="target='_self'"> 
149					<#assign title_enlace=""> 
150					<#--HAY TITULO DE ENLACES--> 
151					<#assign tituloEnlaceFicha = saxReaderUtil.createXPath("dynamic-element[@name='enlaceFichaFieldSetFieldSet']/dynamic-element[@name='tituloEnlaceFicha']/dynamic-content").selectSingleNode(curEnlace).data > 
152					<#if (validator.isNotNull(tituloEnlaceFicha) && !validator.equalsSorted([tituloEnlaceFicha],[""] ))> 
153						<#assign title_enlace = tituloEnlaceFicha/> 
154					</#if> 
155					<#-- ES ABRIR FUERA --> 
156					<#assign targetEnlaceFicha = saxReaderUtil.createXPath("dynamic-element[@name='enlaceFichaFieldSetFieldSet']/dynamic-element[@name='target']/dynamic-content").selectSingleNode(curEnlace).data > 
157					<#if getterUtil.getBoolean(targetEnlaceFicha)> 
158						<#assign target_enlace="target='_blank'"> 
159						<#if validator.equalsSorted([""],[title_enlace]) > 
160							<#-- VALOR POR DEFECTO --> 
161							<#assign title_enlace = languageUtil.get(locale, 'ccm.opens-new-window')> 
162						</#if> 
163						 
164					</#if> 
165					<#if !validator.equalsSorted([""],[title_enlace]) > 
166						<#assign title_enlace="title='${title_enlace}'"> 
167					</#if> 
168					 
169					<#assign textoEnlace=""/> 
170					<#assign textoEnlaceFicha = saxReaderUtil.createXPath("dynamic-element[@name='enlaceFichaFieldSetFieldSet']/dynamic-element[@name='textoEnlaceFichas']/dynamic-content").selectSingleNode(curEnlace).data > 
171					<#if validator.isNotNull(textoEnlaceFicha) && !(validator.equalsSorted([""],[textoEnlaceFicha])) > 
172						<#assign textoEnlace = textoEnlaceFicha/> 
173					</#if> 
174				</#if>	 
175				<#assign css_enlace =""/> 
176			 
177					<li> 
178 
179			 
180					<a class="bipo_linkflecha_primary" href="${urlEnlace}" ${target_enlace} ${title_enlace}> 
181						${htmlUtil.unescape(textoEnlace)} 
182						<#assign targetEnlaceFicha = saxReaderUtil.createXPath("dynamic-element[@name='enlaceFichaFieldSetFieldSet']/dynamic-element[@name='target']/dynamic-content").selectSingleNode(curEnlace).data > 
183						<#if getterUtil.getBoolean(targetEnlaceFicha)> 
184						<span aria-hidden="true" class="bipoicon icon-enlaceexterno"></span> 
185						<#else> 
186						<span aria-hidden="true" class="bipoicon icon-flecha_derecha"></span> 
187						</#if> 
188					</a> 
189					 
190				 
191					</li> 
192				 
193			</#list> 
194		 
195			</ul> 
196		 
197		</div> 
198	 
199</#macro> 
200 
201<#function replaceSpecialCharacters(url)> 
202    <#return htmlUtil.escapeHREF(url?replace("|","%7C")) /> 
203</#function> 
204 
205 
206<#--Obtener fichero--> 
207<#function getFileEntry url > 
208 
209  <#assign parts = url?split("/")> 
210  <#assign group_id = getterUtil.getLong(parts[4]) > 
211  <#assign parts = parts[7]?split("?") > 
212  <#assign uuid = parts[0] > 
213  <#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
214  <#return fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id) /> 
215   
216</#function> 
Errorea gertatu da txantiloia prozesatzerakoan.
The following has evaluated to null or missing:
==> request.getParameter(parametro)  [in template "842907#842945#26409393" at line 29, column 20]

----
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 numForo = request.getParamete...  [in template "842907#842945#26409393" at line 29, column 1]
----
1<#assign ancla = "">	  
2<#assign tancla = paragraph.title.getData()> 
3<#assign tancla = tancla?replace("á","a") >	 
4<#assign tancla = tancla?replace("é","e") >	 
5<#assign tancla = tancla?replace("í","i") >	 
6<#assign tancla = tancla?replace("ó","o") >	 
7<#assign tancla = tancla?replace("ú","u") >	 
8<#assign tancla = tancla?replace("¿","") >	 
9<#assign tancla = tancla?replace("?","") > 
10<#assign tancla = tancla?lower_case> 
11 
12<#assign titleClass = ""> 
13    <#list tancla?split(" ") as x> 
14        <#if x_index lt 2 && !x?is_last> 
15            <#assign ancla = ancla + x + "-"> 
16        <#elseif x_index lte 2 > 
17            <#assign ancla = ancla + x>	 
18        </#if> 
19    </#list> 
20 
21<!-- SERVICES --> 
22<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
23 
24<!-- VARIABLES --> 
25<#assign articleId = .vars['reserved-article-id'].data > 
26<#assign portletNamespace = themeDisplay.getPortletDisplay().getId() /> 
27<#assign renderURL = themeDisplay.getURLCurrent()> 
28<#assign parametro = "foro"> 
29<#assign numForo = request.getParameter(parametro)/> 
30 
31<#assign numForo1 ="1"/> 
32<#assign numForo2 ="2"/> 
33<#assign numForo3 ="3"/> 
34 
35<#assign groupId = 880311> 
36<#--<#assign parrafosTitulados_ForoI_articleId = "8899645">--> 
37<#assign parrafosTitulados_ForoI_articleId = ""> 
38<#assign parrafosTitulados_ForoII_articleId = "9777745"> 
39<#assign parrafosTitulados_ForoIII_articleId = "9773686"> 
40 
41 
42 
43<#if numForo = numForo1> 
44	<#assign articleId = parrafosTitulados_ForoI_articleId> 
45<#elseif numForo = numForo2> 
46	<#assign articleId = parrafosTitulados_ForoII_articleId> 
47<#else> 
48	<#assign articleId = parrafosTitulados_ForoIII_articleId> 
49</#if> 
50 
51 
52 
53<#if !validator.equalsSorted([""], [articleId])> 
54	<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
55	<#assign journalArticle = journalArticleLocalService.getArticle(groupId, articleId) > 
56 
57	<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
58	<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
59	<#assign header = rootElementcurrentArticle.valueOf("//dynamic-element[@name='headerFieldSet']/dynamic-element[@name='header']/dynamic-content/text()") /> 
60 
61 
62<section class="tab-to-accordion mb-5"> 
63    <div class="container section"> 
64     
65        <#if !validator.equalsSorted([""], [header])>  
66            <div class="row"> 
67                <div class="col-12 col-xs-12"> 
68                   <span class="bipo_ancla_fixed" id='${ancla}'></span> 
69                    <h2>${header}</h2> 
70                </div> 
71            </div> 
72        </#if> 
73         <#assign paragraph = rootElementcurrentArticle.selectNodes("//dynamic-element[@name='paragraphFieldSet']") />	 
74 
75 
76         <div class="row"> 
77 
78            <div id="${portletNamespace}bipo_contenedor_pestanias" > 
79                <div class="col-xxs-12"> 
80                    <div class="row"> 
81                       <#if paragraph?has_content> 
82                            <div class="hidden-xs hidden-sm col-md-4"> 
83                                <div class="${portletNamespace}bipo_diputacion_menu_pestanias tabs_beta_menu"> 
84                             
85                            <ul class="resp-tabs-list ${portletNamespace}bipo_vert1"> 
86                               <#list paragraph as curParagraph> 
87                                   <#assign title = saxReaderUtil.createXPath("dynamic-element[@name='paragraphFieldSetFieldSet']/dynamic-element[@name='title']/dynamic-content").selectSingleNode(curParagraph).data > 
88                                   <#if !validator.equalsSorted([""], [title])> 
89                                       <li role="presentation"> 
90                                          <a href="#${portletNamespace}paragraph-${curParagraph_index}">${title}</a> 
91                                       </li> 
92                                   </#if> 
93                               </#list> 
94                            </ul> 
95                         </div> 
96                   </div> 
97                   <div class="col-xxs-12 col-md-8 resp-tabs-container ${portletNamespace}bipo_vert1 ${portletNamespace}contentPestania "> 
98                      <#list paragraph as curParagraph> 
99                        <#assign title = saxReaderUtil.createXPath("dynamic-element[@name='paragraphFieldSetFieldSet']/dynamic-element[@name='title']/dynamic-content").selectSingleNode(curParagraph).data > 
100                        <#if !validator.equalsSorted([""], [title])> 
101                          <div id="${portletNamespace}paragraph-${curParagraph_index}" class="col-xs-12"> 
102                             <div class="bipo_diputacion_pestania"> 
103                                <#assign description = saxReaderUtil.createXPath("dynamic-element[@name='paragraphFieldSetFieldSet']/dynamic-element[@name='description']/dynamic-content").selectSingleNode(curParagraph).data > 
104                                ${description} 
105                                <#assign documentos= curParagraph.selectNodes("dynamic-element[@name='paragraphFieldSetFieldSet']/dynamic-element[@name='document']") /> 
106												<#if documentos?has_content> 
107													<#assign tamDocumentos = documentos?size/> 
108													<#assign hayDocumentos = "0"/> 
109													<#list documentos  as curDocumento>  
110														<#assign documento = curDocumento.valueOf("dynamic-element[@name='paragraph']/dynamic-content/text()") />	 
111														<#if (validator.isNotNull(documento) && !validator.equalsSorted([documento],[""] ))> 
112															<#assign hayDocumentos = "1"/> 
113														</#if> 
114													</#list> 
115												</#if> 
116												<#if hayDocumentos = "1"> 
117                                <ul> 
118													  <#list documentos  as curDocumento>  
119															<#assign documento = curDocumento.valueOf("dynamic-element[@name='paragraph']/dynamic-content/text()") />	 
120															<#if (validator.isNotNull(documento) && !validator.equalsSorted([documento],[""] ))> 
121																<#assign fileEntry = getFileEntryJson(documento) > 
122																<#assign title = getFileNameEntryJson(documento) > 
123																<#assign enlace = replaceSpecialCharacters(fileEntry)> 
124                                           <li> 
125																	<a href="${enlace}">${title}</a> 
126                                           </li> 
127                                       </#if> 
128                                   </#list> 
129                                </ul> 
130                                </#if> 
131												 
132                             </div> 
133                          </div> 
134                        </#if> 
135                      </#list> 
136                   </div> 
137                   </#if> 
138                </div> 
139             </div> 
140            </div> 
141         </div> 
142    </div> 
143</section> 
144</#if>	 
145<script>    
146$(document).ready(function() { 
147    $('#${portletNamespace}bipo_contenedor_pestanias').easyResponsiveTabs({ 
148        tabidentify: "${portletNamespace}bipo_vert1", 
149        width: "992px", 
150        closed: "accordion", 
151        read_more: false 
152    });       
153    $('.${portletNamespace}bipo_diputacion_menu_pestanias').scrollToFixed({ 
154        marginTop: 140, 
155        limit: function() { 
156            var limite = 0; 
157            limite = $('.${portletNamespace}contentPestania .resp-tab-content-active .bipo_diputacion_pestania').offset().top + $('.${portletNamespace}contentPestania .resp-tab-content-active .bipo_diputacion_pestania').outerHeight(true) - $(this).outerHeight(true); 
158            return limite; 
159        }, 
160        zIndex: 1, 
161        minWidth: 992, 
162        removeOffsets: true 
163    });    
164    var ${portletNamespace}fixBipoMenuPestainaTop = function() { 
165        if ($('.${portletNamespace}bipo_diputacion_menu_pestanias').css('position') == 'absolute'){ 
166          $('.${portletNamespace}bipo_diputacion_menu_pestanias').css('position','static'); 
167
168         
169        var ${portletNamespace}pos5 = $('#${portletNamespace}bipo_contenedor_pestanias').offset(); 
170        var ${portletNamespace}offsetMenu5 = parseInt(${portletNamespace}pos5.top, 10); 
171        $(document).scrollTop( ${portletNamespace}offsetMenu5 - 200 ); 
172    }       
173    $( '#${portletNamespace}bipo_contenedor_pestanias li.resp-tab-item a ' ).on( 'click', function() { 
174        setTimeout(function(){ 
175            $(window).resize(); 
176            ${portletNamespace}fixBipoMenuPestainaTop()},1); 
177    });         
178});    
179</script> 
180 
181<#--Obtener fichero para src--> 
182<#function getFileEntryJson url > 
183   <#assign urljson = url?eval> 
184   <#assign group_id =urljson.groupId /> 
185   <#assign uuid = urljson.uuid /> 
186   <#assign fichero = urljson.title /> 
187   <#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
188   <#assign DLFichero= fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id?eval) />  
189   <#return "/documents/"+group_id+"/"+DLFichero.getFolderId()+"/"+fichero />  
190</#function> 
191 
192<#--Obtener nombre fichero para src--> 
193<#function getFileNameEntryJson url > 
194   <#assign urljson = url?eval> 
195   <#assign group_id =urljson.groupId /> 
196   <#assign uuid = urljson.uuid /> 
197   <#assign fichero = urljson.title /> 
198   <#return fichero />  
199</#function> 
200 
201<#function replaceSpecialCharacters(url)> 
202    <#return htmlUtil.escapeHREF(url?replace("|","%7C")) /> 
203</#function> 
Errorea gertatu da txantiloia prozesatzerakoan.
The following has evaluated to null or missing:
==> request.getParameter(parametro)  [in template "842907#842945#26409330" at line 45, column 20]

----
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 numForo = request.getParamete...  [in template "842907#842945#26409330" at line 45, column 1]
----
1<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
2<#assign ancla = "">	  
3 
4 <#assign tancla = titulo.getData()>	 
5 <#assign tancla = tancla?replace("á","a") >	 
6 <#assign tancla = tancla?replace("é","e") >	 
7 <#assign tancla = tancla?replace("í","i") >	 
8 <#assign tancla = tancla?replace("ó","o") >	 
9 <#assign tancla = tancla?replace("ú","u") >	 
10 <#assign tancla = tancla?replace("¿","") >	 
11 <#assign tancla = tancla?replace("?","") >	 
12 <#assign tancla = tancla?replace("/","") >	 
13 <#assign tancla = tancla?replace("(","") >	 
14 <#assign tancla = tancla?replace(")","") >	 
15 <#assign tancla = tancla?lower_case> 
16  
17<#assign titleClass = ""> 
18<#if icono.getData()?has_content> 
19   
20  <#assign titleClass = icono.getData()> 
21</#if> 
22 <#list tancla?split(" ") as x> 
23	<#if x_index lt 2  && !x?is_last> 
24		<#assign ancla = ancla + x + "-"> 
25	<#elseif x_index lte 2 > 
26		<#assign ancla = ancla + x>	 
27	</#if> 
28 </#list> 
29<#if themeDisplay.getLocale() == "eu_ES"> 
30	<#assign textoTamanio = "tamaina"/> 
31	<#assign textoDescarga = "Fitxategia deskargatzea"/> 
32<#else> 
33	<#assign textoTamanio = "tamaño"/> 
34	<#assign textoDescarga = "Descarga de archivo"/> 
35</#if> 
36 
37 
38<!-- SERVICES --> 
39<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
40<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
41<!-- VARIABLES --> 
42<#assign portletNamespace = themeDisplay.getPortletDisplay().getId() /> 
43<#assign renderURL = themeDisplay.getURLCurrent()> 
44<#assign parametro = "foro"> 
45<#assign numForo = request.getParameter(parametro)/> 
46<#assign numForo1 ="1"/> 
47<#assign numForo2 ="2"/> 
48<#assign numForo3 ="3"/> 
49 
50<#assign groupId = 880311> 
51<#assign archivos_ForoI_articleId = "9777121"> 
52<#assign archivos_ForoII_articleId = "9777835"> 
53<#assign archivos_ForoIII_articleId = "9777944"> 
54 
55<#if numForo = numForo1> 
56	<#assign articleId = archivos_ForoI_articleId> 
57<#elseif numForo = numForo2> 
58	<#assign articleId = archivos_ForoII_articleId> 
59<#else> 
60	<#assign articleId = archivos_ForoIII_articleId> 
61</#if> 
62 
63<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
64<#assign journalArticle = journalArticleLocalService.getArticle(groupId, articleId) > 
65 
66<#assign documentcurrentArticle = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
67<#assign rootElementcurrentArticle = documentcurrentArticle.getRootElement() > 
68<#assign content = rootElementcurrentArticle.valueOf("//dynamic-element[@name='content']/dynamic-content/text()") /> 
69 
70<#if !validator.equalsSorted([""], [articleId])> 
71<div class="container"> 
72     
73     
74        <div class="row"> 
75            <div 
76                class="col-12  col-xs-12  col-sm-12  col-md-12 "> 
77		             
78                   <span class="bipo_ancla_fixed" id='${ancla}'></span> 
79                                                <#assign titulo = rootElementcurrentArticle.valueOf("//dynamic-element[@name='titulo']/dynamic-content/text()") /> 
80						<#if (validator.isNotNull(titulo) && !validator.equalsSorted([titulo],[""] ))> 
81							 <h2>${htmlUtil.unescape(titulo)}</h2> 
82						</#if>		  
83								 
84						<#if subtitulo.getData()?has_content> 
85							<h3 class="mb-4">${htmlUtil.unescape(subtitulo.getData())}</h3> 
86						</#if> 
87						<#if (contenido.getData())??> 
88							<div> 
89								${contenido.getData()} 
90							</div> 
91						</#if> 
92			</div> 
93		 
94		<#assign nombreDocumento = "" /> 
95		<#assign documento = "" /> 
96		<#assign fileEntry = ""/> 
97		<#assign extension =""/> 
98		<#assign size=""/> 
99		<#assign tamanyo ="" />		 
100		<#assign currentArticleDocumentos	 = rootElementcurrentArticle.selectNodes("dynamic-element[@field-reference='documentoFieldSet']") /> 
101		 
102			<#if currentArticleDocumentos?has_content> 
103				<ul class="row w-100"> 
104					<#assign cont = 0> 
105                    <#list currentArticleDocumentos as cur_doc> 
106					    <#assign nombreDocumento= saxReaderUtil.createXPath("dynamic-element[@field-reference='documentoFieldSetFieldSet']/dynamic-element[@name='tituloDocumento']/dynamic-content").selectSingleNode(cur_doc).data > 
107					    <#assign documento = cur_doc.valueOf("dynamic-element[@field-reference='documento']/dynamic-content/text()") />	 
108						<#assign ancho = 3>	 
109						 
110						<li class="col-md-${ancho} mb-3"> 
111							<div class="uib_cards_bg_neutral fullhover d-flex flex-column p-3"> 
112									 
113								<div class="iub_card_round p-3"> 
114									<span aria-hidden="true" class="bipoicon icon-TypePDF uib_size_2 text-dark"></span> 
115								</div> 
116									<#if (nombreDocumento)??> 
117										<h3 id="titulo-documento-${cont}">${htmlUtil.unescape(nombreDocumento)}</h3> 
118									</#if> 
119									<#if documento != ""> 
120									<p class="d-flex align-items-end w-100 h-100 "> 
121										<#assign fileEntry = getFileEntry(documento) > 
122										<#assign extension = fileEntry.extension?upper_case> 
123										<#assign size = textFormatter.formatStorageSize(fileEntry.size, locale)?upper_case> 
124										<#if (size?contains("KB"))> 
125											<#assign tamanyo = size?replace("KB", "<abbr title='Kilobytes' lang='en'>KB</abbr>")> 
126										<#elseif (size?contains("MB"))> 
127											<#assign tamanyo = size?replace("MB", "<abbr title='Megabytes' lang='en'>MB</abbr>")> 
128										</#if> 
129										<#assign enlaceDoc = "/documents/" + fileEntry.groupId + "/" + fileEntry.folderId + "/" + (fileEntry.title?url('UTF-8')) + "/" + fileEntry.uuid> 
130										<a class="btn-descarga-link w-100" href="${enlaceDoc}" rel="noopener noreferrer" target="_blank" title="<@liferay.language key='opens-new-window'/>" id="download-${cont}" aria-labelledby="download-${cont} titulo-documento-${cont}"> 
131											<span>${textoDescarga}</span>  
132											<span aria-hidden="true" class="bipoicon icon-download_new"></span>  
133											<span aria-hidden="true" class="btn-descarga-caracteristicas"> ${extension} |  ${tamanyo} </span>  
134										</a> 
135									</p> 
136									</#if> 
137								 
138								 
139							</div> 
140						</li> 
141						<#assign cont = cont+1> 
142					</#list> 
143				</ul> 
144			</#if> 
145			<#function getFileEntry url > 
146 
147				<#assign urljson = url?eval> 
148				<#assign group_id =urljson.groupId /> 
149				<#assign uuid = urljson.uuid /> 
150 
151				<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
152				<#return fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id?eval) />  
153			</#function> 
154 
155		 
156        </div> 
157</div> 
158</#if>