marcoLegal-leyes-detalle-estructura-contenido

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> nombreCategoriaEnlaces  [in template "20097#20123#803978" at line 71, 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: #if nombreCategoriaEnlaces.getSibling...  [in template "20097#20123#803978" at line 71, column 33]
----
1<style> 
2  .buscador-alerta { 
3    display: none; 
4 
5
6 
7  @media (max-width: 768px) { 
8    .buscador-alerta { 
9      display: block; 
10
11
12</style> 
13<div class="mb-4"> 
14 <#assign OrderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"]> 
15<#assign categoriesOrderBy = OrderByComparatorFactoryUtil.create("Folder", ["modifiedDate", false]) >  
16<#assign folderService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFolderLocalService")> 
17	<#assign fileService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")> 
18	<#assign fileEntryMetaDataLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryMetadataLocalService")> 
19	<#assign storageUtil = serviceLocator.findService("com.liferay.dynamic.data.mapping.kernel.StorageEngineManager")> 
20	<#assign fileVersionService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileVersionService")> 
21 
22 
23 
24 
25	<#assign entries = folderService.getDLFolders(0, 50000)> 
26	<div class="d-flex w-100 justify-content-center my-3 my-lg-5"> 
27     <h1 class="color-primario">${Text25wm.getData()}</h1> 
28	</div> 
29	 
30	<div class="container-fluid container-fluid-max-xl"> 
31	<p class="buscador-alerta color-primario"> 
32  El <strong>buscador de documentos</strong> está disponible únicamente en el <strong>modo de escritorio</strong>.<br> 
33  Activa la <strong>vista de escritorio</strong> desde tu <strong>navegador móvil</strong> o accede desde una <strong>computadora</strong> para utilizar esta funcionalidad. 
34</p> 
35 
36	<ul class="navbar-nav"><li class="nav-item"></li><li class="dropdown nav-item"></li><li class="nav-item"></li></ul><div class="navbar-form navbar-form-autofit navbar-overlay navbar-overlay-sm-down bg-secundario  "> 
37	<div class="container-fluid container-fluid-max-xl" style="padding-top:10px;padding-bottom:20px;"><label class="m-0 text-white fw-semibold" style=" 
38    margin-top: 10px!important; 
39    margin-bottom: 10px!important; 
40">Ingrese el texto que quiere buscar en los siguientes documentos</label> 
41     
42    <div class="d-flex" style=" 
43    align-items: center; 
44"> 
45<img class="mr-2" alt="Imagen una Lupa" width="30" height="30" data-fileentryid="39755" src="/documents/20121/39672/search.svg/ecfd2fa8-bcb9-b001-0b95-6cf39fdab99c?t=1632783265529"> 
46<input type="text" class="form-control" placeholder="Buscar en todos los documentos..." onkeyup="filtrarTodasLasTablas(this)"> 
47</div> 
48     
49</div></div> 
50	 
51	<div class="row mt-3 mt-md-5 p-md-5 px-4"> 
52	 
53	 
54<div class="col-12 col-xl-3 bg-white p-3 rounded-title"> 
55			<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical"> 
56				<#list entries as folder> 
57 
58					<#if folder.name == NombreCarpeta.getData()> 
59						<#-- Se obtienen las carpetas contenidas en marco legal --> 
60						<#assign subFolders = folderService.getFolders(folder.getGroupId(), folder.getFolderId(), 0, 50000, categoriesOrderBy)> 
61						<#if subFolders?has_content> 
62						 
63							<#list subFolders as subFolder> 
64								<a class="nav-link color-primario <#if subFolder?index == 0>active </#if>" id="v-pills-tab${subFolder?index}" data-toggle="pill" href="#v-pills${subFolder?index}" role="tab" aria-controls="v-pills${subFolder?index}" aria-selected="true">${subFolder.getName()}</a> 
65							</#list> 
66						</#if> 
67						<#break> 
68					</#if> 
69				</#list> 
70				 
71				<#if nombreCategoriaEnlaces.getSiblings()?has_content> 
72	<#list nombreCategoriaEnlaces.getSiblings() as cur_nombreCategoriaEnlaces> 
73		${cur_nombreCategoriaEnlaces.getData()} 
74	</#list> 
75</#if> 
76			</div> 
77		</div> 
78		 
79		 
80		 
81		 
82		 
83		 
84		<div class="col-12 col-xl-9"> 
85			<div class="tab-content" id="v-pills-tabContent"> 
86				<#list entries as folder> 
87					<#if folder.name == NombreCarpeta.getData()> 
88						<#-- Se obtienen las carpetas contenidas en marco legal --> 
89						<#assign subFolders = folderService.getFolders(folder.getGroupId(), folder.getFolderId(), 0, 50000, categoriesOrderBy)> 
90						<#if (subFolders?has_content)> 
91							<#list subFolders as subFolder> 
92								<#-- Se consulta si las carpetas contenidas en marco legal tienen subcarpetas de no ser asi se puede empezar a pintar los archivos --> 
93								<#assign subSubFolders = folderService.getFolders(subFolder.getGroupId(), subFolder.getFolderId(), 0, 50000, categoriesOrderBy)> 
94								 
95								 
96								 
97								<div class="tab-pane fade row px-3 <#if subFolder?index == 0>show active</#if>" id="v-pills${subFolder?index}" role="tabpanel" aria-labelledby="v-pills${subFolder?index}">	 
98									<#if (subSubFolders?has_content)> 
99										<#list subSubFolders as subSubFolder> 
100											<#-- Se consulta si las carpetas contenidas en las carpetas contenidas en marco legal tienen subcarpetas de no ser asi se puede empezar a pintar los archivos (este caso aplica solo para reglamentos que tiene un sub nivel mas que las otras carpetas)--> 
101											 
102											 
103											<a class="btn rounded-title bg-secundario col-12 my-2 white" data-toggle="collapse" href="#collapse${subSubFolder.getName()?replace(' ', '_')}" role="button" aria-expanded="false" aria-controls="collapse${subSubFolder.getName()?replace(' ', '_')}"> 
104												${subSubFolder.getName()} 
105											</a> 
106											<div class="collapse" id="collapse${subSubFolder.getName()?replace(' ', '_')}"> 
107											 
108											 
109												<#assign subSubSubFolders = folderService.getFolders(subSubFolder.getGroupId(), subSubFolder.getFolderId(), 0, 50000, categoriesOrderBy)> 
110												<#if (subSubSubFolders?has_content) > 
111													<#list subSubSubFolders as subSubSubFolder> 
112														<a class="btn rounded-title bg-secundario col-12 my-2 white" data-toggle="collapse" href="#collapse${subSubSubFolder.getName()?replace(' ', '_')}" role="button" aria-expanded="false" aria-controls="collapse${subSubSubFolder.getName()?replace(' ', '_')}"> 
113															${subSubSubFolder.getName()} 
114														</a> 
115														<div class="collapse" id="collapse${subSubSubFolder.getName()?replace(' ', '_')}"> 
116														 
117														 
118														 
119														 
120														 
121															<div class="col-12 color-primario my-3 mt-md-0"> 
122																${subSubSubFolder.getDescription()} 
123															</div> 
124															<#assign files = fileService.getFileEntries(subSubSubFolder.getGroupId(), subSubSubFolder.getFolderId(), -1, -1)> 
125															<#if files?has_content> 
126																 
127																<table class="tabla-filtro tabla-filtro-responsive" id="tablaDatos"> 
128																	<thead> 
129																		<tr> 
130																			<th class="columna-w30 tabla-filtro__th h-60px padding-8px tabla-filtro--position text-start" onclick="ordenarColumna(this, 'nombre')"> 
131																				<span class="tabla-filtro--ordenar d-none d-md-block">NOMBRE DOCUMENTO 
132																					<img  src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
133																				</span> 
134																				<span class="tabla-filtro--ordenar d-block d-md-none">ORDENAR ALFABÉTICAMENTE 
135																					<img src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
136																				</span> 
137																			</th> 
138																			<th class=" tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">DESCRIPCIÓN</th> 
139																			<#if getterUtil.getBoolean(Boolean28qr.getData())> 
140																				<th class="columna-w30 tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">REFERENCIAS</th> 
141																			</#if> 
142																		</tr> 
143																	</thead> 
144																	<tbody> 
145																		<#list files?reverse as file> 
146																			<#assign  carpeta = folderService.getFolder(file.getFolder().getFolderId()) > 
147																			<tr class="<#if file_index % 2 == 0>bg-lightgray<#else>bg-white</#if>"> 
148																				<td class="padding-8px  text-start" data-label="Nombre"><a target="_blank" href="${themeDisplay.getPortalURL()}/documents/${file.getRepositoryId()}/${file.getFolder().getFolderId()}/${file.getFileName()}/${file.getUuid()}">${file.getFileName()}</td> 
149																				<td class="padding-8px  text-start" data-label="Descripción">${file.getDescription()}</td> 
150																				<#if getterUtil.getBoolean(Boolean28qr.getData())> 
151																					<td class="padding-8px  text-start" data-label="Referencias"> 
152																						<#assign fileVersion = fileVersionService.getFileVersion(file.getLatestFileVersion(true).getFileVersionId())> 
153																						<#assign  ddmStructures = fileVersion.getDDMStructures() > 
154																						<#if ddmStructures?has_content> 
155																							<#list ddmStructures as ddmStructure> 
156																								<#assign  dlFileEntryMetadata = fileEntryMetaDataLocalService.getFileEntryMetadata(ddmStructure.getStructureId(), file.getLatestFileVersion(true).getFileVersionId()) > 
157																								<#assign  datos = storageUtil.getDDMFormValues(dlFileEntryMetadata.getDDMStorageId()) > 
158																								<#if datos?has_content> 
159																									<#list datos.getDDMFormFieldValues()  as dato> 
160																										<#assign  mapeo = dato.getValue().getValues() > 
161																										<#if mapeo?has_content> 
162																											<#list mapeo as propName, propValue> 
163																												${propValue}   
164																											</#list> 
165																										</#if> 
166																									</#list> 
167																								</#if> 
168																							</#list> 
169																						</#if> 
170																					</td> 
171																				</#if> 
172																			</tr> 
173																		</#list> 
174																	<tbody> 
175																</table> 
176															</#if> 
177														 
178														 
179														 
180														 
181														 
182														 
183														</div> 
184													</#list> 
185												 
186												 
187												 
188												 
189												 
190												 
191												 
192												 
193												<#else> 
194													<div class="col-12 color-primario my-3 mt-md-0"> 
195														${subSubFolder.getDescription()} 
196													</div> 
197													<#assign files = fileService.getFileEntries(subSubFolder.getGroupId(), subSubFolder.getFolderId(), -1, -1)> 
198													<#if files?has_content> 
199														 
200															<table class="tabla-filtro tabla-filtro-responsive" id="tablaDatos"> 
201															<thead> 
202																<tr> 
203																	<th class="columna-w30 tabla-filtro__th h-60px" onclick="ordenarColumna(this, 'nombre')"> 
204																		<span class="tabla-filtro--ordenar d-none d-md-block">NOMBRE DOCUMENTO 
205																			<img  src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
206																		</span> 
207																		<span class="tabla-filtro--ordenar d-block d-md-none">ORDENAR ALFABÉTICAMENTE 
208																			<img src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
209																		</span> 
210																	</th> 
211																	<th class=" tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">DESCRIPCIÓN</th> 
212																	<#if getterUtil.getBoolean(Boolean28qr.getData())> 
213																		<th class="columna-w30 tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">REFERENCIAS</th> 
214																	</#if> 
215																</tr> 
216															</thead> 
217															<tbody> 
218																<#list files?reverse as file> 
219																	<#assign  carpeta = folderService.getFolder(file.getFolder().getFolderId()) > 
220																	<tr class="<#if file_index % 2 == 0>bg-lightgray<#else>bg-white</#if>"> 
221																		<td class="padding-8px  text-start" data-label="Nombre"><a target="_blank" href="${themeDisplay.getPortalURL()}/documents/${file.getRepositoryId()}/${file.getFolder().getFolderId()}/${file.getFileName()}/${file.getUuid()}">${file.getFileName()}</a></td> 
222																		<td class="padding-8px  text-start" data-label="Descripción">${file.getDescription()}</td> 
223																		<#if getterUtil.getBoolean(Boolean28qr.getData())> 
224																			<td class="padding-8px  text-start" data-label="Referencias"> 
225																				<#assign fileVersion = fileVersionService.getFileVersion(file.getLatestFileVersion(true).getFileVersionId())> 
226																				<#assign  ddmStructures = fileVersion.getDDMStructures() > 
227																				<#if ddmStructures?has_content> 
228																					<#list ddmStructures as ddmStructure> 
229																						<#assign  dlFileEntryMetadata = fileEntryMetaDataLocalService.getFileEntryMetadata(ddmStructure.getStructureId(), file.getLatestFileVersion(true).getFileVersionId()) > 
230																						<#assign  datos = storageUtil.getDDMFormValues(dlFileEntryMetadata.getDDMStorageId()) > 
231																						<#if datos?has_content> 
232																							<#list datos.getDDMFormFieldValues()  as dato> 
233																								<#assign  mapeo = dato.getValue().getValues() > 
234																								<#if mapeo?has_content> 
235																									<#list mapeo as propName, propValue> 
236																										${propValue}   
237																									</#list> 
238																								</#if> 
239																							</#list> 
240																						</#if> 
241																					</#list> 
242																				</#if> 
243																			</td> 
244																		</#if> 
245 
246																		 
247																	</tr> 
248																</#list> 
249															</tbody> 
250														</table> 
251													</#if> 
252												</#if> 
253											</div> 
254										</#list> 
255									 
256									 
257									 
258									 
259									 
260									 
261									 
262									 
263									 
264								 
265									<#else> 
266											<div class="col-12 color-primario my-3 mt-md-0"> 
267												${subFolder.getDescription()} 
268											</div> 
269											<#assign files = fileService.getFileEntries(subFolder.getGroupId(), subFolder.getFolderId(), -1, -1)> 
270											<#if files?has_content> 
271											 
272												<table class="tabla-filtro tabla-filtro-responsive" id="tablaDatos"> 
273													<thead> 
274														<tr> 
275															<th class="columna-w30 tabla-filtro__th h-60px" onclick="ordenarColumna(this, 'nombre')"> 
276																<span class="tabla-filtro--ordenar d-none d-md-block">NOMBRE DOCUMENTO 
277																	<img src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
278																</span> 
279																<span class="tabla-filtro--ordenar d-block d-md-none">ORDENAR ALFABÉTICAMENTE 
280																	<img src="https://www.supen.fi.cr/documents/20121/39672/ordenar.png/998b0537-66f7-e3fa-e933-6eae8b06e3af?t=1720800423940" alt="Ordenar" class="ordenable-img"> 
281																</span> 
282															</th> 
283															<th class=" tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">DESCRIPCIÓN</th> 
284															<#if getterUtil.getBoolean(Boolean28qr.getData())> 
285																<th class="columna-w30 tabla-filtro__th hide-th padding-8px tabla-filtro--position text-start">REFERENCIAS</th> 
286															</#if> 
287														</tr> 
288													</thead> 
289													<tbody> 
290														<#list files?reverse as file> 
291                                                        <tr class="<#if file_index % 2 == 0>bg-lightgray<#else>bg-white</#if>"> 
292																<#assign  carpeta = folderService.getFolder(file.getFolder().getFolderId()) > 
293																<td class="padding-8px  text-start" data-label="Nombre"><a target="_blank" href="${themeDisplay.getPortalURL()}/documents/${file.getRepositoryId()}/${file.getFolder().getFolderId()}/${file.getFileName()}/${file.getUuid()}">${file.getFileName()}</a></td> 
294																<td class="padding-8px  text-start" data-label="Descripción">${file.getDescription()}</td> 
295																<#if getterUtil.getBoolean(Boolean28qr.getData())> 
296																	<td  class="padding-8px  text-start" data-label="Referencias">									 
297																		<#assign fileVersion = fileVersionService.getFileVersion(file.getLatestFileVersion(true).getFileVersionId())> 
298																		<#assign  ddmStructures = fileVersion.getDDMStructures() > 
299																		<#if ddmStructures?has_content> 
300																			<#list ddmStructures as ddmStructure> 
301																				<#assign  dlFileEntryMetadata = fileEntryMetaDataLocalService.getFileEntryMetadata(ddmStructure.getStructureId(), file.getLatestFileVersion(true).getFileVersionId()) > 
302																				<#assign  datos = storageUtil.getDDMFormValues(dlFileEntryMetadata.getDDMStorageId()) > 
303																				<#if datos?has_content> 
304																					<#list datos.getDDMFormFieldValues()  as dato> 
305																						<#assign  mapeo = dato.getValue().getValues() > 
306																						<#if mapeo?has_content> 
307																							<#list mapeo as propName, propValue> 
308																								${propValue}   
309																							</#list> 
310																						</#if> 
311																					</#list> 
312																				</#if> 
313																			</#list> 
314																		</#if>							 
315																	</td> 
316																</#if> 
317															</tr> 
318														</#list> 
319													</tbody> 
320												</table> 
321											</#if> 
322									</#if> 
323								</div> 
324							</#list> 
325						<#else> 
326						</#if> 
327						<#break> 
328					</#if> 
329				</#list> 
330			</div> 
331		</div> 
332	</div> 
333	 
334<script> 
335if (!window.filtrarTodasLasTablas) { 
336  window.filtrarTodasLasTablas = function (input) { 
337    const filtro = input.value.toLowerCase(); 
338    // alcanzamos TODAS las tablas que ya existan en el DOM 
339    document.querySelectorAll('.tabla-filtro').forEach(tabla => { 
340      tabla.querySelectorAll('tbody tr').forEach(fila => { 
341        const coincide = [...fila.cells].some(celda => 
342          (celda.textContent || celda.innerText).toLowerCase().includes(filtro) 
343        ); 
344        fila.style.display = coincide ? '' : 'none'; 
345      }); 
346    }); 
347  }; 
348
349</script>