toolbar-header-contenido
Ruta de navegación
marco-legal-leyes-enlaces-encabezado
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>