detalle dokuteka-generico-fitxa

Errorea gertatu da txantiloia prozesatzerakoan.
Java method "jdk.proxy154.$Proxy928.getDisplayArticle(long, String)" threw an exception when invoked on jdk.proxy154.$Proxy928 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@19855c43"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign articleIrrati = journalArticl...  [in template "20902#20940#7085098" at line 258, column 33]
----
1<#-- VARIABLES --> 
2<#assign inprimatujarduera = "Inprimatu jarduera"> 
3<#assign bajar = "Jaitsi"> 
4<#assign transcripcion = "Transkripzioa"> 
5<#assign completa = "completa"> 
6<#assign irekijarduera = "Ireki jarduera"> 
7<#assign idioma=locale?substring(0,locale?index_of("_")) > 
8 
9<#-- TRADUCCION --> 
10<#if locale=='en_US'> 
11    	<#assign irekijarduera = 'Go to the exercise'> 
12	<#assign inprimatujarduera = 'Print exercise'> 
13	<#assign bajar = "Download"> 
14	<#assign transcripcion = "Transcription"> 
15</#if> 
16<#if locale=='fr_FR'> 
17    	<#assign irekijarduera = "Aller à l'exercice"> 
18	<#assign inprimatujarduera = "Imprimer l’exercice"> 
19	<#assign bajar = "Télécharger"> 
20	<#assign transcripcion = "Transcription"> 
21</#if> 
22<#if locale=='es_ES'> 
23<#assign irekijarduera = 'Abrir tarea'> 
24	<#assign inprimatujarduera = 'Imprimir tarea'> 
25	<#assign bajar = "Bajar"> 
26	<#assign transcripcion = "Transcripción"> 
27</#if> 
28 
29<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> 
30 
31<#-- JAVASCRIPT --> 
32<script type="text/javascript"> 
33	document.addEventListener("DOMContentLoaded", function () { 
34	 
35	if (window.innerWidth <= 768) { 
36 
37        const relacionados = document.getElementById( 
38            "embedded-articlenextevents-portlet" 
39        ); 
40 
41        const column2 = document.getElementById("column-2"); 
42 
43        if (relacionados && column2) { 
44            column2.after(relacionados); 
45        } 
46    } 
47 
48			// --- Botones abrir/cerrar transkripzioa --- 
49			$("#trasnkripzioazabaldu").on("click", function (event) { 
50				$("#trasnkripzioedukia").css("display", "block"); 
51					/*$("#trasnkripzioedukia").show();*/ 
52					$("#trasnkripzioazabaldu").hide(); 
53					/*$("#trasnkripzioaestutu").show();*/ 
54					$("#trasnkripzioaestutu").css("display", "inline"); 
55					 
56					return false; 
57			}); 
58 
59			$("#trasnkripzioaestutu").on("click", function (event) { 
60					$("#trasnkripzioedukia").hide(); 
61					$("#trasnkripzioazabaldu").css("display", "inline"); 
62					/*$("#trasnkripzioazabaldu").show();*/ 
63					$("#trasnkripzioaestutu").hide(); 
64					return false; 
65			}); 
66			 
67			const deskribapenak = document.querySelectorAll(".deskribapena:not(.row)"); 
68			const transkripzioa = document.getElementById("transkripzioa"); 
69 
70			const tieneTabla = [...deskribapenak].some(el => el.querySelector("table")); 
71 
72			if (tieneTabla && transkripzioa) { 
73        transkripzioa.style.paddingTop = "10px"; 
74				transkripzioa.style.paddingLeft = "18px"; 
75			} 
76}); 
77 
78</script> 
79 
80<link rel="stylesheet" href="/o/x61tThemeIkasbilWAR-theme/css/scriptVideo.css"> 
81<style type="text/css"> 
82	.play-video-icon{ 
83			position:absolute; 
84			top:50%; 
85			left:50%; 
86			transform:translate(-50%, -50%); 
87			font-size:3rem; 
88			color:white; 
89			cursor:pointer; 
90			opacity:0.9; 
91			text-shadow:0 0 10px rgba(0,0,0,0.7); 
92			transition:transform 0.2s ease; 
93			z-index: 1; 
94	} 
95 
96	.play-video-icon:hover{transform:translate(-50%, -50%) scale(1.1);} 
97	 
98		.card-video div video {   
99	  width: 100%; 
100    height: 100%; 
101    position: relative; 
102    overflow: hidden; 
103		z-index: 1; 
104	} 
105	 
106	.card-video div video {   
107	  width: 100%; 
108    height: 100%; 
109    position: relative; 
110    overflow: hidden; 
111		z-index: 1; 
112	} 
113 
114	.ikasbil .fitxa #deskribapena {text-align: left !important;word-break: break-word; font-size: 1.25em;} 
115	.ikasbil .fitxa #deskribapena p{font-size:0.75em;} 
116	#deskribapena figcaption {font-size: .9rem;width: 90%;line-height: normal;} 
117	 
118.fullscreen {z-index: 2789034264 !important; position: absolute !important; width: 80% !important; bottom: 3% !important; left: 10% !important; right: 10% !important; } 
119     .fullscreenBtn { 
120        text-indent: 0px; 
121        color: #fabd48; 
122        background-color: none; 
123        
124        padding: 0px; 
125        font-weight: bold; 
126        padding-bottom: 3px; 
127    } 
128    .exitFullScreenBtn{ 
129        text-indent: 0px; 
130        color: #fabd48; 
131        background-color: none; 
132        padding: 0px; 
133        font-weight: bold; 
134        padding-bottom: 3px; 
135    } 
136     
137	.printhide { 
138		display: none; 
139	} 
140	#trasnkripzioedukia { 
141		padding: 1em; 
142		background-color: #e7e7e7; 
143		color: black !important; 
144		display: none; 
145	} 
146	#transkripzioa { 
147		margin-top: 1em; 
148		margin-bottom: 1em; 
149	} 
150	 
151	#caja-video {float: left;} 
152	#caja-video .botonEnlaceDokuteka {font-size: 16px !important;padding:.5rem;} 
153	.preview-img{object-fit:cover;} 
154	.col img {padding-right: 10px;} 
155	 
156	table {width: 100% !important;} 
157	.videoVertical table {width: 65% !important;} 
158	.videoHorizontal table {width: 100% !important;} 
159	 
160	.bideo-enlaces { 
161		position: relative; 
162		z-index: 1; 
163	} 
164	 
165	@media (max-width: 768px){ 
166		.videoVertical table {width: 100% !important;} 
167		.fitxa #deskribapena img{object-fit:contain;} 
168	} 
169</style>			 
170 
171 
172<#assign id = paramUtil.getString(request, "articleId")> 
173<#assign DLAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")> 
174<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
175 
176<#assign getterUtil = staticUtil["com.liferay.portal.kernel.util.GetterUtil"] /> 
177 
178 
179 
180<#if id?has_content> 
181 
182    <#if journalArticleLocalService??> 
183        <!-- VISUALIZAR EN PREVIEW --> 
184				<#assign deskribapena = deskribapena.getData() />  
185				<#assign izenburua = izenburua.getData() /> 
186				<#assign laburpena = laburpena.getData() /> 
187				<#assign irudia = irudia.getData() /> 
188				<#assign idMoodle = id_moodle.getData() /> 
189				<#assign idExternalMoodle = id_external_moodle.getData() /> 
190				<#-- <#assign bideoa = bideoa.getData()!"" /> 
191				<#assign youtubeko_bideoa = youtubeko_bideoa.getData()!"" /> 
192				<#assign transkripzioa = transkripzioa.getData()!"" /> 
193				<#assign audio = audioa.getData()!"" />             
194				<#assign irrati_nobela = irratinobelaren_zenbakia.getData()!"" /> --> 
195				 
196				<!-- VISUALIZAR EN PAGINA DETALLE -->	 
197				<#attempt> 
198						<#assign articleById = journalArticleLocalService.getDisplayArticle(groupId?long, id)> 
199						<#assign document = articleById.getDocumentByLocale(locale)>  
200				<#recover> 
201						<#assign articleById = 0> 
202				</#attempt> 
203				 
204				<#if articleById?has_content && document?has_content>		 
205					<#assign izenburua = document.valueOf("//dynamic-element[@field-reference='izenburua']/dynamic-content/text()") /> 
206					<#assign laburpena = document.valueOf("//dynamic-element[@field-reference='laburpena']/dynamic-content/text()") /> 
207					<#assign deskribapena = document.valueOf("//dynamic-element[@field-reference='deskribapena']/dynamic-content/text()") /> 
208					<#assign irudia = document.valueOf("//dynamic-element[@field-reference='irudia']/dynamic-content/text()") /> 
209					<#assign idMoodle = document.valueOf("//dynamic-element[@field-reference='id_moodle']/dynamic-content/text()") /> 
210					<#assign idExternalMoodle = document.valueOf("//dynamic-element[@field-reference='id_external_moodle']/dynamic-content/text()") /> 
211					<#assign bideoa = document.valueOf("//dynamic-element[@field-reference='bideoa2']/dynamic-content/text()") /> 
212					 
213					<#--Si no encuentra bideoa2 al ser de estructura vieja, coger el campo bideo--> 
214					<#if !bideoa?has_content> 
215							<#assign bideoa = document.valueOf("//dynamic-element[@field-reference='bideoa']/dynamic-content/text()") /> 
216					</#if> 
217					 
218					<#assign bertikal = document.valueOf("//dynamic-element[@field-reference='bertikal']/dynamic-content/text()")!"" >  
219					<#assign youtubeko_bideoa = document.valueOf("//dynamic-element[@field-reference='youtubeko_bideoa']/dynamic-content/text()") /> 
220					<#assign transkripzioa = document.valueOf("//dynamic-element[@field-reference='transkripzioa']/dynamic-content/text()") /> 
221					<#assign audio = document.valueOf("//dynamic-element[@field-reference='audioa']/dynamic-content/text()") />             
222					<#assign irrati_nobela = document.valueOf("//dynamic-element[@field-reference='irratinobelaren_zenbakia']/dynamic-content/text()") />  
223				</#if> 
224				 
225			<#assign videoUrl = "" /> 
226			<#assign posterUrl = "" /> 
227			 
228			<#-- Procesar irudia si tiene contenido --> 
229			<#if irudia?has_content && irudia?contains("uuid")> 
230					<#assign irudiaJson = jsonFactoryUtil.createJSONObject(irudia) /> 
231					<#assign posterEntry = DLAppService.getFileEntryByUuidAndGroupId(irudiaJson.getString("uuid"), irudiaJson.getLong("groupId")) /> 
232					<#assign posterUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" 
233							+ posterEntry.getGroupId() + "/" + posterEntry.getFolderId() + "/" + htmlUtil.escapeURL(posterEntry.getTitle()) + "/" + posterEntry.getUuid() 
234							+ "?t=" + posterEntry.getModifiedDate()?long /> 
235			</#if>  
236 
237			<#-- Procesar bideoa si tiene contenido --> 
238			<#if bideoa?has_content && bideoa?contains("uuid")> 
239					<#assign bideoJson = jsonFactoryUtil.createJSONObject(bideoa) />	 
240					<#assign videoEntry = DLAppService.getFileEntryByUuidAndGroupId(bideoJson.getString("uuid"), bideoJson.getLong("groupId")) /> 
241					<#assign videoUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" 
242							+ videoEntry.getGroupId() + "/" + videoEntry.getFolderId() + "/" + htmlUtil.escapeURL(videoEntry.getTitle()) + "/" + videoEntry.getUuid() 
243							+ "?t=" + videoEntry.getModifiedDate()?long /> 
244			</#if> 
245			 
246			<#-- IF AUDIO TIENE CONTENIDO --> 
247			<#if audio?has_content && audio?contains("uuid")> 
248				<#assign audioJson = jsonFactoryUtil.createJSONObject(audio) /> 
249				<#assign posterEntryA = DLAppService.getFileEntryByUuidAndGroupId(audioJson.getString("uuid"), audioJson.getLong("groupId")) /> 
250				<#assign audioUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" 
251						+ posterEntryA.getGroupId() + "/" + posterEntryA.getFolderId() + "/" + htmlUtil.escapeURL(posterEntryA.getTitle()) + "/" + posterEntryA.getUuid() 
252						+ "?t=" + posterEntryA.getModifiedDate()?long /> 
253			</#if>                   
254 
255        <div class="fitxa separadorIzq">  
256			<#if irrati_nobela !=""> 
257				<div id="numCapi"></div> 
258				<#assign articleIrrati = journalArticleLocalService.getDisplayArticle(getterUtil.getLong(groupId), irrati_nobela) /> 
259				<#assign documentIrrati = saxReaderUtil.read(articleIrrati.getContentByLocale(locale)) > 
260				<#assign zenbakiakIrrati = documentIrrati.valueOf("//dynamic-element[@name='zenbakiak']") /> 
261				<#assign numeros = documentIrrati.selectNodes("//dynamic-element[@name='zenbakiak']") /> 
262				<#assign primero= '0' /> 
263				<#assign ultimo= '0' /> 
264				<#assign anterior= '0' /> 
265				<#assign siguiente= '0' /> 
266				 
267				<#assign atzera= '0' /> 
268				<#assign aurrera= '0' /> 
269				<#assign lehena= '0' /> 
270				<#assign azkeana= '0' /> 
271				<#assign atzekoa= '0' /> 
272				<#assign aurkitua= false /> 
273				<#list numeros as numero> 
274					<#assign zenbakia = numero.valueOf("dynamic-content/text()") /> 
275					<#if primero == '0'> 
276					    <#assign primero= zenbakia /> 
277					</#if> 
278					<#if anterior == '0'> 
279					    <#assign anterior= zenbakia /> 
280					</#if> 
281					<#if id == zenbakia> 
282					   <#assign atzera= anterior /> 
283					   <#assign aurkitua= true /> 
284					</#if> 
285			        <#if aurkitua && anterior == id > 
286					   <#assign aurrera= zenbakia /> 
287					   <#assign aurkitua= true /> 
288					</#if> 
289			    	<#if lehena =='0'> 
290			    	    <#assign lehena= id /> 
291			    	</#if> 
292				    <#assign anterior= zenbakia /> 
293				    
294				    <#assign ultimo= zenbakia /> 
295				</#list> 
296		 
297				<#assign url_docuteka_detalle= "/${idioma}/dokutekako-fitxa?articleId=" /> 
298				<div class="paginacion"> 
299					<div id="paginacionMenuIni"> 
300					 
301					<#if primero!=id> 
302						<a id="orriajalehena" href="${url_docuteka_detalle}${primero}" >&lt; &lt; |</a> 
303					<#else> 
304						<span class="aurreraatzerades">&lt; &lt; |</span> 
305			        </#if> 
306			        <#if atzera !='0' > 
307							<a id="orriajaatzera" href="${url_docuteka_detalle}${atzera}" >&lt; |</a> 
308			        <#else> 
309						<span class="aurreraatzerades">&lt; |</span> 
310			        </#if> 
311			            <a href="/${idioma}/irrati-nobelak-fitxa?articleId=${irrati_nobela}"> Irrati Nobeletako Fitxara joan </a> 
312			        <#if aurrera != '0'> 
313						<a id="orriajaaurrera" href="${url_docuteka_detalle}${aurrera}" >| &gt;</a> 
314			        <#else> 
315						<span class="aurreraatzerades">| &gt;</span> 
316			        </#if> 
317        			<#if ultimo != '0'> 
318        						<a id="orriajaazkena" href="${url_docuteka_detalle}${ultimo}" >| &gt; &gt;</a> 
319        			<#else> 
320        						<span class="aurreraatzerades">| &gt; &gt;</span> 
321        			</#if> 
322					</div> 
323				</div> 
324			</#if> 
325			 
326      <#-- <h2>${izenburua}</h2> --> 
327			<h2>${izenburua!""}</h2> 
328	 
329      <div id="impedukia" class="col-xs-12 col-md-12 col-lg-12">  
330         
331             
332      <h3>${laburpena!""}</h3> 
333             
334				<div id="ataza"> 
335					<#if idMoodle !="" || idExternalMoodle !=""> 
336						<a class="jarduerabtn" href="#"><label>${irekijarduera}</label></a> 
337					</#if> 
338		 
339				</div> 
340								 
341			<!--  
342			DESKRIBAPENA - Disenu barria 2026-02-13  
343			--> 
344			<#assign bideoVertikal = bertikal == "true"> 
345			 
346			<div class="deskribapena <#if bideoVertikal && videoUrl?has_content>videoVertical<#elseif !bideoVertikal && videoUrl?has_content>videoHorizontal</#if>" id="deskribapena"> 
347				<div id="caja-video" <#if bideoVertikal && videoUrl?has_content> class="col-12 col-md-4" <#elseif !bideoVertikal && videoUrl?has_content> class="col-12 col-md-5"</#if> > 
348					<#if videoUrl?has_content> 
349						<div id="bideo" class="card-video"> 
350 
351								<#if !videoUrl?contains(".flv")> 
352											<div class="h-100 video-wrapper position-relative"> 
353												<!-- PREVIEW (imagen + play) --> 
354													<div class="h-100 mb-2 video-preview position-relative w-100"> 
355															<img src="${posterUrl}" class="img-fluid w-100 h-100 preview-img"> 
356															<i class="bi bi-play-circle-fill play-video-icon"></i> 
357													</div> 
358 
359													<!-- VIDEO OCULTO --> 
360													<video  
361															class="nireBideoa d-none w-100 h-100" 
362															controls 
363															preload="auto" 
364 
365															playsinline> 
366															<source src="${videoUrl}" type="video/mp4"> 
367													</video> 
368 
369													<#--<video class="nireBideoa d-none w-100 h-100" src="${videoUrl}" controls preload="auto" playsinline></video>--> 
370										 	</div> 
371									</#if>				 
372 
373							</div> 
374 
375							<!-- DESCARGA VIDEO --> 
376							<#if videoUrl?has_content> 
377								<div class="mt-2 bideo-enlaces"> 
378									<a class="botonEnlaceDokuteka" href="${videoUrl}" target="_blank">${bajar} <i class="fa fa-download"></i></a> 
379								</div> 
380							</#if> 
381 
382							<!-- DESCARGA AUDIO --> 
383							<#if audio?has_content> 
384								<a class="botonEnlaceDokuteka" href="${audioUrl}" target="_blank">${bajar} <i class="fa fa-download"></i> </a> 
385								<div style="clear:both"></div> 
386							</#if> 
387					</#if> 
388				</div> 
389				<!-- DESKRIBAPENA --> 
390				<#if videoUrl?has_content> 
391					<#assign deskribapenaSinImg = deskribapena?replace("<img[^>]*>", "", "r")> 
392					<!--Quitar "Irudia: XX" en videos horizontales a peticion de Eider--> 
393					<#assign deskribapenaSinImg = deskribapenaSinImg?replace( 
394						"<p[^>]*>.*Irudia:.*</p>", 
395						"", 
396						"r" 
397					)> 
398				<#else> 
399					<#assign deskribapenaSinImg = deskribapena> 
400				</#if> 
401				 
402				<div class="col">${deskribapenaSinImg}</div>  
403			</div> 
404 
405				<!-- AUDIO CONTROLS --> 
406				<#if audio?has_content> 
407					<a class="botonEnlaceDokuteka" style="margin-top:10px;margin-left:18px" href="${audioUrl}" target="_blank">${bajar} <i class="fa fa-download"></i> </a> 
408					<div id="audio"> 
409						<div> 
410							<audio controls class="anchoAudio"> 
411								<source src="audio.ogg" type="audio/ogg"> 
412								<source src="${audioUrl}" type="audio/mp3"> 
413							</audio> 
414						</div> 
415					</div> 
416				</#if> 
417				 
418				<#if transkripzioa !=""> 
419					<div id="transkripzioa"> 
420						<a id="trasnkripzioazabaldu" class="botonEnlaceDokuteka" href="#"> ${transcripcion}:[+]</a> 
421						<a id="trasnkripzioaestutu" href="#" class="printhide botonEnlaceDokuteka"> ${transcripcion}:[-]</a> 
422						<!-- VER / OCULTAR TRANSCRIPCION --> 
423						<div id="trasnkripzioedukia"> 
424							${transkripzioa} 
425						</div> 
426					</div> 
427				</#if>	 
428			 
429 
430				<#--<#if videoUrl?has_content> 
431						<div id="bideo"> 
432								<a class="botonEnlaceDokuteka" href="${videoUrl}" target="_blank">${bajar} <i class="fa fa-download"></i></a> 
433								<#if !videoUrl?contains(".flv")> 
434										<div> 
435												<video controls width="95%" <#if posterUrl?has_content>poster="${posterUrl}"</#if>> 
436														<source src="${videoUrl}" type="video/mp4"> 
437														Your browser does not support the video tag. 
438												</video> 
439										</div> 
440								</#if> 
441						</div> 
442				</#if>--> 
443				 
444				<!-- YOUTUBE BIDEOA --> 
445				<#if youtubeko_bideoa !=""> 
446					<div id="bideoyoutubeko"> 
447						${youtubeko_bideoa} 
448					</div> 
449				</#if> 
450			 
451				 
452				</div> 
453		</div> 
454		 
455		<div id="embedded-articlenextevents-portlet"> 
456			<@liferay_portlet["runtime"] portletName="x61pRelaContWAR_WAR_x61pRelaContWARportlet" queryString="idArticulo=${id}&visualizacion=${completa}"/> 
457		</div> 
458 
459    </#if> 
460</#if> 
461<#if bideoa?has_content> 
462	<script src="/o/x61tThemeIkasbilWAR-theme/js/scriptVideo9.js"></script> 
463</#if> 
464 
465<script> 
466document.addEventListener("DOMContentLoaded", () => { 
467	const videos = document.querySelectorAll(".nireBideoa"); 
468 
469  videos.forEach(video => { 
470    video.addEventListener("play", () => { 
471      videos.forEach(other => { 
472        if (other !== video) { 
473          other.pause(); 
474        } 
475      }); 
476    }); 
477  }); 
478	 
479 
480    document.querySelectorAll(".video-wrapper").forEach(wrapper => { 
481 
482        const preview = wrapper.querySelector(".video-preview"); 
483        const playIcon = wrapper.querySelector(".play-video-icon"); 
484        const video = wrapper.querySelector(".nireBideoa"); 
485			 
486 
487        if (!preview || !playIcon || !video) return; 
488 
489        playIcon.addEventListener("click", e => { 
490            e.preventDefault(); 
491            e.stopPropagation();       
492 
493            // Ocultar preview del actual 
494            preview.classList.add("d-none"); 
495 
496            // Mostrar vídeo actual 
497            video.classList.remove("d-none"); 
498 
499            // Reproducir actual 
500            video.currentTime = 0; 
501            video.play(); 
502        }); 
503    }); 
504}); 
505</script> 

detalle2

Dokuteka

B2
2006-06-23

x61pRelaContWAR

20655786

x61pViewCountWAR

1470

anadir a favorito

x61pAnadirFavoritoWAR